On Tue, Oct 27, 2009 at 07:11:25AM +0800, David Härdeman wrote: > On Tue, Oct 20, 2009 at 03:43:53PM -0700, Shane W wrote: > > On Tue, Oct 20, 2009 at 09:26:00AM +0800, Wu Fengguang wrote: > > > HDMI codec/sink seem to take some time to response to the output > > > enable and new infoframe, so there are some delay. I've moved the HDMI > > > output enable command to module load time, this helps. The infoframe > > > is in theory created in run time based on the format of _each_ new > > > audio stream, so infoframe transmission has to be started/stopped > > > for each track.. > > > > I know this has come up before but can't we not start/stop > > the infoframe if the sample format on the new track is the > > same as the old. I mean playing an album, you're gonna get > > 44100, 2ch s16le 95% of the time so that would atleast > > cause the problem to appear much less. > > Tried it, still had the second-track-produces-silence bug on my receiver > so I couldn't test it properly. > > I however did manage to create a different patch which fixed my receiver > bug (yay!)...by sending "refer-to-stream-header" audio infoframes from > pcm close to pcm open...something like this quick hack: This is an important clue, thank you! :) The patch is not quite logical. Hopefully the sticky infoframe patch can help in the same way. Attached is the broken up patches, hope that helps your debugging. The last 4 patches in the series are inspired by your comments. Thanks, Fengguang > > --- linux-2.6.32-rc5/sound/pci/hda/patch_intelhdmi.c 2009-10-16 02:41:50.000000000 +0200 > +++ ../linux-2.6.32-rc5/sound/pci/hda/patch_intelhdmi.c 2009-10-26 23:39:54.000000000 +0100 > @@ -552,8 +552,16 @@ > struct snd_pcm_substream *substream) > { > struct intel_hdmi_spec *spec = codec->spec; > + struct hdmi_audio_infoframe ai = { > + .type = 0x84, > + .ver = 0x01, > + .len = 0x0a, > + .CC02_CT47 = 0x00, > + }; > > hdmi_stop_infoframe_trans(codec); > + hdmi_fill_audio_infoframe(codec, &ai); > + hdmi_start_infoframe_trans(codec); > > return snd_hda_multi_out_dig_close(codec, &spec->multiout); > } > @@ -571,6 +579,7 @@ > > hdmi_set_channel_count(codec, substream->runtime->channels); > > + hdmi_stop_infoframe_trans(codec); > hdmi_setup_audio_infoframe(codec, substream); > > return 0; > > > Not sure how/if something like that could be turned into an acceptable > patch though... > > -- > David Härdeman
Attachment:
intel-hdmi-2009-10-27.tgz
Description: GNU Unix tar archive
_______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel