I have done some additional research on my own. All of my videos play fine on mplayer, so I am confident that it is something with the audio code and my card.
And noticed this in the output (emphisis mine):
mplayer -ao alsa:device=iec958 -ac hwac3 idch_AviaSurroundTest-AC3.avi -msglevel all=6
Trying preferred audio driver 'alsa', options 'device=iec958'
alsa-init: requested format: 48000 Hz, 2 channels, 108
alsa-init: using ALSA 1.0.23
alsa-spdif-init: playing AC3, 2 channels
alsa-init: using device iec958
alsa-init: pcm opened in blocking mode
[AO_ALSA] Format ac3be is not supported by hardware, trying default.
alsa-init: got buffersize=65536
alsa-init: got period size 1024
alsa: 48000 Hz/2 channels/4 bpf/65536 bytes buffer/Signed 16 bit Little Endian
AO: [alsa] 48000Hz 2ch ac3le (2 bytes per sample)
Playing the same video in mythtv gives this:
It appears that perhaps mythtv is calculating much too small a buffer size? I read through this thread (http://www.gossamer-threads.com/list...v/users/464964), and it appears that a similar issue existed on another device. To put it in JYA's own words:
2011-03-05 21:31:44.738 AO: Original codec was AC3, signed 16 bit, 48 kHz, 6 channels
2011-03-05 21:31:44.738 AO: enc(0), passthru(1), canAC3(1), canDTS(1), canLPCM(0), configured_channels(6), 6 channels supported(1)
2011-03-05 21:31:44.738 AO: Opening audio device 'iec958:CARD=Live,DEV=0' ch 2(6) sr 48000 sf signed 16 bit reenc 0
2011-03-05 21:31:44.740 ALSA: SetParameters(format=2, channels=2, rate=48000, buffer_time=200000, period_time=50000)
2011-03-05 21:31:44.740 ALSA: Buffer time = 200000 us
2011-03-05 21:31:44.740 ALSA: Period time = 50000 us
2011-03-05 21:31:44.740 ALSA: Buffer size = 9600 | Period size = 2400
2011-03-05 21:31:44.740 AO: Audio fragment size: 4800
2011-03-05 21:31:44.741 AO: Audio Stretch Factor: 1
2011-03-05 21:31:44.741 AO: Ending Reconfigure()
Now if I can only figure out how to force an alsa buffer size on mythtv.
We asked for a 200ms length buffer, yet ALSA gives us 110ms.
To get 200ms of audio, we need:
48000 * 2 (channels) * 2 (bytes per channel) * .2 = 38400 bytes = 37kB.
So a 64kB buffer should be plenty.
I had made some assumptions on how ALSA worked, seems it's not the
case for everyone.. bugger..