[alsa-devel] IEC61937 passthrough with BYT/CHT HdmiLpeAudio

Takashi Iwai tiwai at suse.de
Wed Aug 16 17:52:55 CEST 2017


On Wed, 16 Aug 2017 17:15:09 +0200,
Pierre-Louis Bossart wrote:
> 
> Hi Takashi,
> 
> While I was looking at IEC61937, I ran a quick test on my BYT and CHT
> boxes, and as I suspected IEC61937 works fine since your modifications
> to add s16_le support. I can get AC3 to my HDMI receiver without
> problems just by using the hw:0,<1,2,3> device, depending on which
> port is used.
> 
> e.g. aplay  -Dhw:0,2 -c2 -r48000 -fs16le ac3_surround_test.spdif
> 
> To make things more usable for applications, and maybe support
> receivers who actually care about the AES0 non-audio bit or reduce the
> initial lock time, it'd be nice to support the traditional command
> line, e.g.
> 
> aplay -D'hdmi:CARD=0,DEV=<0,1,2>,AES0=0x6' -c2 -r48000 -fs16_le
> ac3_surround_test.spdif
> 
> However we seem to have a mix of alsa-lib configuration issues and
> maybe a miss at the driver level

Yeah, alsa-lib config is still not updated to follow the recent
changes in kernel side.  It needs multiple HDMI entries.


> I added the missing devices in HdmiLpeAudio.conf with the patch below,
> which helps select the right output, but somehow the AES0 non-audio
> bit doesn't seem to be set.
> 
> [plb at ZOTAC PASSTHROUGH]$ amixer -Dhw:0 cget numid=12
> numid=12,iface=PCM,name='IEC958 Playback Default',device=2
>   ; type=IEC958,access=rw------,values=1
>   : values=[AES0=0x00 AES1=0x00 AES2=0x00 AES3=0x00]
> [plb at ZOTAC PASSTHROUGH]$ aplay -D'hdmi:CARD=0,DEV=2,AES0=0x6' -c2
> -r48000 -fs16_le ac3_surround_test.spdif
> Playing raw data 'ac3_surround_test.spdif' : Signed 16 bit Little
> Endian, Rate 48000 Hz, Stereo
> ^CAborted by signal Interrupt...
> [plb at ZOTAC PASSTHROUGH]$ amixer -Dhw:0 cget
> numid=12numid=12,iface=PCM,name='IEC958 Playback Default',device=2
>   ; type=IEC958,access=rw------,values=1
>   : values=[AES0=0x00 AES1=0x00 AES2=0x00 AES3=0x00]

Did you check the value during the playback?
Since you set "preserve" in HDMI config, the old value gets restored
at closing the PCM.


thanks,

Takashi


> Could it be that we are missing the 'index' which is used in the
> HDaudio case to access the 'IEC958 Playback Default' controls?
> 
> Thanks
> 
> -Pierre
> 
> diff HdmiLpeAudio.conf /usr/share/alsa/cards/HdmiLpeAudio.conf
> 59,135d58
> <                 device 0
> <                 lock true
> <                 preserve true
> <                 value [ $AES0 $AES1 $AES2 $AES3 ]
> <             }
> <         ]
> <     }
> < }
> <
> < HdmiLpeAudio.pcm.hdmi.1 {
> <     @args [ CARD AES0 AES1 AES2 AES3 ]
> <     @args.CARD {
> <         type string
> <     }
> <     @args.AES0 {
> <         type integer
> <     }
> <     @args.AES1 {
> <         type integer
> <     }
> <     @args.AES2 {
> <         type integer
> <     }
> <     @args.AES3 {
> <         type integer
> <     }
> <     type hooks
> <     slave.pcm {
> <         type hw
> <         card $CARD
> <         device 1
> <     }
> <     hooks.0 {
> <         type ctl_elems
> <         hook_args [
> <             {
> <                 interface PCM
> <                 name "IEC958 Playback Default"
> <                 device 1
> <                 lock true
> <                 preserve true
> <                 value [ $AES0 $AES1 $AES2 $AES3 ]
> <             }
> <         ]
> <     }
> < }
> <
> < HdmiLpeAudio.pcm.hdmi.2 {
> <     @args [ CARD AES0 AES1 AES2 AES3 ]
> <     @args.CARD {
> <         type string
> <     }
> <     @args.AES0 {
> <         type integer
> <     }
> <     @args.AES1 {
> <         type integer
> <     }
> <     @args.AES2 {
> <         type integer
> <     }
> <     @args.AES3 {
> <         type integer
> <     }
> <     type hooks
> <     slave.pcm {
> <         type hw
> <         card $CARD
> <         device 2
> <     }
> <     hooks.0 {
> <         type ctl_elems
> <         hook_args [
> <             {
> <                 interface PCM
> <                 name "IEC958 Playback Default"
> <                 device 2
> 


More information about the Alsa-devel mailing list