On Fri, Jun 10, 2011 at 03:36:48PM +0000, Christian Weisgerber wrote:
> Jacob Meuser <jake...@sdf.org> wrote:
> 
> > > Strangely, AC3/DTS pass-through does *not* work.
> > 
> > there's this comment in cmpci.c:
> > 
> >      /* disable ac3 and 24 and 32 bit s/pdif modes */
> > 
> > and then the relevant register bits are cleared.  feel free to play
> > with making it work ;)
> 
> I would, but there shouldn't be anything required to make it work.
> The point of AC3/DTS pass-through mode is that it sends what looks
> like 16-bit stereo audio at the S/PDIF level.  It's only the receiver
> that, on seeing a signature bit pattern, re-interprets the data and
> decodes it according to AC3 or DTS.
> 

audio is not only about data transfers, it's also a clock source. AC3
data could be sent on the wire, but to make audio work at least the
clock must be properly handled.

So, I don't even understand how AC3 would work at all. I mean, a lot
of programs (ie all using sio_onmove(3)) expect that one second of
s16le at 48kHz be exactly 192000 bytes of data. If AC3 is used, that
wouldn't be true anymore (AC3 is 320kbit/s iirc) and audio would be
broken. And this can't be fixed without adding AC3 specific code.

AFAICS, pass-through would be better outside the audio subsystem,
after all AC3/DTS and friends is to transmit opaque data from one
computer to another without processing it. While audio interfaces are
to play and/or capture analog signals to process them.

> We don't use any "AC3 mode" for azalia(4) either and pass-through
> works there.
> 

I bet it only works in few special cases, probably because the clock
is not involved

-- Alexandre

Reply via email to