winealsa: 6 Channel Audio

Andrew Eikum aeikum at
Mon Oct 24 09:26:48 CDT 2011

On Mon, Oct 24, 2011 at 06:26:18AM -0700, Chris Robinson wrote:
> On Monday, October 24, 2011 8:08:58 AM Andrew Eikum wrote:
> > On Sun, Oct 23, 2011 at 05:57:04PM -0700, Chris Robinson wrote:
> > >                        A configuration option (in
> > > winecfg/control panel) would be needed to set it into a different mode.
> > > Windows has something similar to this for its own audio device
> > > configuration in the control panel.
> > My reaction to this is "urrrrrrrghhhhhhh". I'd much rather tuck it
> > away in a registry entry than put it in winecfg for everyone to mess
> > with. I was surprised to see that option on my Win 7 VM, although the
> > control is actually inactive.
> Personally, I don't think users should be asked to manually edit the registry 
> to enable 4-channel or 5.1 surround sound, to select 48khz playback, or to 
> enable 24- or 32-bit output. They're not uncommon settings, so many people may 
> want to use it, but not common enough to make them default. A control panel 
> applet would also provide a nice place to test the separate channels to make 
> sure they're mapping correctly.

To be frank, what I want to avoid is giving users a ton of options
with which to screw up their audio config, promptly forget about
changing those settings, and then having to sort out their bug reports
("Can you set this to X and that to Y and get yet another log,
please?"). Tucking stuff away in the registry makes it a pain to screw
up their config, which means they'll probably turn to submitting bug
reports with the default config first, which is exactly what I want.

There are other problems with overriding GetMixFormat(). For example,
it should really be a per-device (and therefore per-backend) setting.
Can you imagine the dialog for that?

What I really want, and what I tried to do when making the drivers, is
GetMixFormat() to report the format that most accurately represents
the device. I want the format reported by GetMixFormat() to require as
near to no resampling, no channel remapping, and no bit depth changes
as possible on its path from the application to the hardware. Then
IsFormatSupported() and Initialize() will deal with conversions, if
need be. Unfortunately, it seems very difficult to get this
information out of most of the backends, which is why we have this
"10000 channels" nonsense.

I'm unsure what the best solution to this problem is. I'm open to


More information about the wine-devel mailing list