Discussion:
DTS audio pass-through doesn't work
(too old to reply)
Christian Weisgerber
2009-12-06 15:33:13 UTC
Permalink
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?
--
Christian "naddy" Weisgerber ***@mips.inka.de
Alexander Motin
2009-12-06 20:38:33 UTC
Permalink
Post by Christian Weisgerber
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
mplayer AC3 and DTS pass-through (-ac hwac3,hwdts) for DVDs etc
works fine.
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
Loading...