At Sun, 26 Jul 2009 10:32:10 -0700, Shane W wrote: > > On Sun, Jul 26, 2009 at 10:52:01AM +0200, Takashi Iwai wrote: > > > It's a known issue that Intel HDMI audio loses the first > > > half second or so of audio when opening the device. Using > > > the dmix interface, I've been able to get around that by > > > writing a quick app to hold the device open so the HDMI > > > stays live. However, with the recent asound.conf posted > > > here which uses the route plugin to fix the multichannel > > > order, I can't do that as dmix isn't in the picture. I'd > > > rather not use dmix anyway since it can bugger with the > > > sample rate so I am wondering if there's another way to get > > > around this. > > > > It's possible to combine with dmix. > > You set up dmix with 8 channels, put route plugin over it. > > This has a few problems. > > It doesn't seem to handle varying sample rates. IE if I > play a 96khz stream at 6 channels, sound is terrible. This is rather a problem of Nvidia HDMI codec driver... > Also, > streaming DTS or AC3 no longer works since the streams are > being upmixed to 6ch. This has to be sent anyway exclusively without dmix, so you'll need another PCM definition. > I did some digging in the drivers to try and find the > source of this problem. Note that I am really not familiar > with this stuff. It appears to be here: > hda_codec.c > void snd_hda_codec_setup_stream(...) > ... > snd_hda_codec_write(codec, nid, 0, > AC_VERB_SET_CHANNEL_STREAMID, > > Introducing a delay after this point fixes the issue but > it's around a full second so that's obviously not a > solution. Could we not cache the current format and only do > this when the format changes rather than on every device > open? The format itself is kept. But the stream tag and channel assignment are assigned dynamically at each open. Thus, this call has to be reset at each open, at least. > For testing, I tried doing this though and disabling > the set_streamid, 0 call in snd_codec_cleanup() but it > still missed those first samples. Is there somewhere else I > need to be looking? Does it happen without dmix, too? The reset part can be a bit more optimized. But, this is really a sensitive part, which can easily break the I/O status without knowing... Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel