On 24.03.2011 16:18, pl bossart wrote: >> It seems that 384k sample rates aren't supported directly in alsa, I did >> some patching to no avail yet. >> >> In any case if the channel count can be specified with passthrough the >> following should work. >> >> paplay --raw --channels=2 --rate=192000 --passthrough File.dts.spdif192khz ( >> this works). >> >> paplay --raw --channels=4 --rate=192000 --passthrough File.dts.spdif384khz ( >> this fails). >> >> To passthrough dolby true-hd it looks like it'll be necessary for more than >> two channels to work. > > There was a thread on dts-hd in alsa-devel at some point. Anssi > (cc:ed) contributed some patches for HDMI and provided the information > below on ffmpeg configurations. > You may want to try at the alsa level before trying with pulseaudio to > make sure your setup is correct. I tend to believe you have to go for > 8ch @ 192kHz to make this work based on my limited understanding of > HBR. Indeed for HBR you need to always specify 8 channels and use rate to control the final rate (i.e. you either use "normal" 2 channel passthrough or HBR 8 channel passthrough). For example to passthrough the abovementioned 384 kHz stream you need to use 8 channels and rate of 96000. However, I think 384kHz DTS bitstream is generally *not* supported by A/V receivers, so you probably want to use 768kHz (8 channels, 192kHz). (note: I haven't tested whether HBR works with pulseaudio or not) > The DTS-HD part is not merged yet (patch is in ffmpeg-devel@), but the > TrueHD and E-AC-3 support is already there in ffmpeg trunk. > > The ffmpeg commandline to use is: > ffmpeg -i input.file -f spdif output.spdif > > For DTS-HD files, to get full passthrough (i.e. not only core), a > -dtshd_rate parameter is needed, which sets the output IEC958 rate. > ffmpeg -i input.file -f spdif -dtshd_rate 192000 output.spdif > ffmpeg -i input.file -f spdif -dtshd_rate 768000 output.spdif > 192000Hz is enough for streams that have a bitrate below 6.144Mbps, which > means all DTS-HD High Resolution Audio files and even many of the DTS-HD > Master Audio (the latter are lossless VBR). > > To play the spdif files back, I use > aplay -D hdmi:CARD=$CARDNAME,DEV=$DEVICENUM,AES0=0x06 -c $CHANCOUNT -r > $RATE file.spdif > > - replacing $CARDNAME with the card name > - replacing $DEVICENUM with 0..3 depending on card and hdmi port (for > non-zero DEVICENUM you'll need a patch from alsa git: > http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=e6d5dcf1f625984605d362338d71162de45a6c60 > ) > - set $CHANCOUNT and $RATE as per below > - rate 192000 and channels 2 for IEC958 rate 192 kHz (for e.g. 48 kHz > E-AC-3, and DTS-HD when the IEC958 rate was set to 192000 in ffmpeg) > - rate 192000 and channels 8 for IEC958 rate 768 kHz (for most TrueHD > files, and for DTS-HD when the rate was set to 768000) > - note that having the 0x02 bit (non-pcm) set in AES0 is mandatory when > $CHANCOUNT is larger than 2, as ALSA uses it to determine whether to use > HBR or not. The additional 0x04 (non-copyright) I use above is not > mandatory, but is the alsa default so I kept it. -- Anssi Hannula