[MPlayer-dev-eng] SB Live/emu10k1 driver capabilities

Stephen Davies steve at daviesfam.org
Thu Nov 22 17:10:41 CET 2001


Hi,

I've been looking at the CVS emu10k1 driver for the SB Live
cards.  Amongst a load of "neat stuff", there's at least two ways to play
multi-channel audio through it:

1) Using the emu-dspmgr tool you can arrange audio routes such that writes
to /dev/dsp come to the front speakers (only), writes to /dev/dsp1 go to
the rear only.  Using the dsp on the card a centre and a subwoofer output
could be derived from the other 4 channels if that's wanted.

To use this approach mplayer would need to open both /dev/dsp and
/dev/dsp1, mix any LFE channel into all the 4 channels, and mix any centre
channel equally to the left and right.

Probably channel synchronization will be a problem, though.

This might also work with two separate sound cards, though I guess
syncronization will be even more of a problem then!


The other way is simpler and better imho:

b) Simply call SNDCTL_DSP_CHANNELS to request 6 channels, and write the
whole lot at once.  On the card these can be mapped straight out to the 6
outputs using emu-dspmgr [actually, that's the default setup for the
provided emu-script].

It would also be possible to setup the card to merge the 6 into fewer
channels in pretty flexible ways (eg - no subwoofer - mix lfe into the
other channels, etc).  This can be done by configuring the card and is
transparent to the app writing to /dev/dsp.

Is it an easy change to do the ac3 decoding and pass all the channels
discretely?  It looks like "skip the downmixing" in libac3, perhaps some
tweaks in the libao2 drivers to deal with >2 channels?

I'll have a look on the weekend, but you never know - maybe I can tempt
one of the core developers to implement this in the meantime ;-)

Regards,
Steve





More information about the MPlayer-dev-eng mailing list