Spent tonight continuing to debug the 950q under MythTV. I temporarily disabled the au8522’s power management, and the MythTV channel scanner started to see the channels, but it was otherwise behaving quite erratically. MythTV seemed to be trying to do a scan of both the ATSC side and the analog side at the same time, even though both were in the same device group. Also, the “scan for channels” button was disabled in analog mode, which I couldn’t understand why. I assumed my device was announcing its capabilities improperly to MythTV, until I realized that the same behavior was occuring with the older HVR-950 and the PCTV 800i as well. Then I found the following ticket:
Doh! I had upgraded my Ubuntu system to Karmic so I would be confident I had a relatively recent MythTV build. However, it turns up the snapshot they took has known issues with the channel scanner, and they actually disabled it entirely (except I seem to have found a way around it accidentally).
Moving on, I switched to a SchedulesDirect verison of the analog channels definitions, and was up and running with my 800i. This allowed me to then switch it out for the 950q, and I now reproduce what users are complaining about – when you try to “Watch TV”, the GUI pauses for 30 seconds, and returns. Adding some debug code to the driver revealed that MythTV always asks for YU12 format, and then falls back to YUYV format. If neither are supported, MythTV fails in a rather obscure manner, giving the user no indication what went wrong.
To confirm this was the issue, I hacked the au0828 driver to *claim* to be in YUYV mode instead of UYVY, and like magic, MythTV started to show a picture (although with the chroma and luma inverted as would be expected).
Now, the 950Q only supports UYVY. While this is a fairly popular pixel format, most devices that support it *also* support YUYV, which is why I suspect nobody else is hitting this issue. To my knowledge, the au8522 doesn’t support any other formats, but since I have never seen the datasheet, I cannot know for sure. I did use the Windows GraphEdit tool and UYVY was the only format the Windows driver claims to support.
So the good news is I seem to know what the problem is, and I believe MythTV can be extended to also support UYVY format. Since it uses libswscale borrrowed from ffmpeg, which already supports the format, I think in the end we are looking at a fairly straightforward 30 line patch to MythTV.
The bad news is that the 950q isn’t going to work with today’s existing binary packages that come with your distro, meaning users will either have to build from svn (after my patch goes in), or they will have to wait for your distro to adopt a version that includes the fix.