[alsa-devel] [PATCH 0/4] Intel HDMI audio fixes

Wu Fengguang fengguang.wu at intel.com
Thu Feb 12 05:41:11 CET 2009


On Thu, Feb 12, 2009 at 01:02:41AM +0200, Takashi Iwai wrote:
> At Wed, 11 Feb 2009 14:54:48 -0800,
> Shane W wrote:
> > 
> > On Wed, Feb 11, 2009 at 11:42:00PM +0100, Takashi Iwai wrote:
> > > At Wed, 11 Feb 2009 14:32:41 -0800,
> > > Shane W wrote:
> > > > missing.  The order in the wav is:
> > > > front left
> > > > centre
> > > > front right
> > > > rear left
> > > > rear right
> > > > sub buz
> > > 
> > > The order assumed here doesn't match with ALSA mapping.
> > > In ALSA,
> > >   front left
> > >   front right
> > >   rear left
> > >   rear right
> > >   center
> > >   LFE
> > 
> > Sorry I meant the spoken order, I've no idea what the
> > channel mapping of a 6 channel wav is.
> > 
> > > Better to test with speaker-test program whether the mapping is
> > > correct.
> > 
> > Ah didn't know about this program.  Ok results with:
> > speaker-test -D hw:0,3 -s n
> > where n ranged from 0 to 6
> > 
> > -s 1 speaker-test says front left actual is front left
> > likewise with -s 2 for front right
> > -s 3 speaker-test says should be rear left actual is lfe
> > that is the sound came from lfe
> > -s 4 speaker-test says rear right actual is centre
> > -s 5 speaker-test says centre actual was rear left
> > and -s 6 speaker-test says lfe actual is rear right
> 
> Thanks.  Also make sure that you pass -c 6 option.

If I understand it right, the ALSA channel sequence is defined in
speaker-test as:

        static const char        *channel_name[MAX_CHANNELS] = {
          /*  0 */ N_("Front Left"),
          /*  1 */ N_("Front Right"),
          /*  2 */ N_("Rear Left"),
          /*  3 */ N_("Rear Right"),
          /*  4 */ N_("Center"),       /* wav file is "Front Center.wav" */
          /*  5 */ N_("LFE"),          /* wav file is "Rear Center.wav" */
          /*  6 */ N_("Side Left"),
          /*  7 */ N_("Side Right"),

Whereas the HDMI channel mapping selected for 6-channel playback is

        { .ca_index = 0x0b,  .speakers = {   0,    0,  RR,  RL,  FC,  LFE,  FR,  FL } },

Here the two mappings disagree on channels other than Front Left/Right.

In theory the channel mapping should be adjusted via AC_VERB_SET_HDMI_CHAN_SLOT.
However I found that verb takes no effect for G35/G45. So I'm afraid
there's no trivial ways we can adjust the channel mapping.

Thanks,
Fengguang


More information about the Alsa-devel mailing list