[alsa-devel] IEC61937 passthrough with BYT/CHT HdmiLpeAudio
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Wed Aug 16 17:15:09 CEST 2017
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
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]
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