DTS audio pass-through doesn't work

Alexander Motin mav at FreeBSD.org
Sun Dec 6 20:38:38 UTC 2009


Christian Weisgerber wrote:
> Configuration:
> FreeBSD 7.2-STABLE amd64
> snd_hda, S/PDIF, AC3 and DTS-capable amplifier
> dev.pcm.2.play.vchans=0, mixer vol 100 pcm 100
> 
> What works:
> mplayer AC3 and DTS pass-through (-ac hwac3,hwdts) for DVDs etc
> works fine.
> 
> What doesn't:
> Playing DTS audio that masquerades as 44.1kHz PCM data fails, e.g.
> DTS audio CDs or corresponding WAV files.  XMMS and mplayer should
> just output this unchanged over S/PDIF and the amplifier should
> recognize it as DTS and decode it.  Except it doesn't.  It reports
> PCM 44.1 and plays noise.
> 
> When I play the same audio data on OpenBSD, the amplifier recognizes
> it as DTS-encoded and everything works fine.
> 
> There must be an element in the FreeBSD audio systems that performs
> some kind of transform on the audio data, killing the DTS signature.
> Any ideas?

Actually codec need to know what it plays now: PCM data or compressed
stream. Some codecs able to control volume on digital outputs, using
math, and they are able to bypass data untouched when they were told
that it is a compressed stream. Setting volumes to 100% may not be
enough in such case, as that 100% may mean anything, depending on codec.

If you disabled vchans for that output, then sound(4) should not
transform sound in any way. snd_hda(4) also doesn't do it. Codec digital
output node can receive some options, controlling resulting stream,
which I never tried to tune. May be there is some difference with
OpenBSD, I don't know.

-- 
Alexander Motin


More information about the freebsd-multimedia mailing list