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