[pulseaudio-discuss] [PATCH v2] alsa: Add support for sound cards with 4-channel input.

David Henningsson david.henningsson at canonical.com
Fri May 11 15:50:50 PDT 2012

2012-05-08 20:42, Tanu Kaskinen skrev:
> On Tue, 2012-05-08 at 18:53 -0700, David Henningsson wrote:
>> 2012-05-08 08:17, Tanu Kaskinen skrev:
>>> On Tue, 2012-05-08 at 06:02 -0700, David Henningsson wrote:
>>>> 2012-05-07 20:06, Arun Raghavan skrev:
>>>>> The separate mics may eventually be useful for beamforming and
>>>>> associated processing. Would your approach require changes to alsa-lib
>>>>> again if we wanted to do that? If yes, it might be better to let
>>>>> PulseAudio take care of this.
>>>> The attached patch (untested!) would just add the possibility to do a
>>>> four-to-two channel mixdown when you open front:%f (for the cards
>>>> explicitly selected in the patch), so for four-channel beamforming you
>>>> could still open hw:%f in four channel mode.
>>> That would still require special profiles in Pulseaudio...
>> Once we get there, yes. But I don't see that coming in the foreseeable
>> future, or do you?
> iO4 users probably want full four-channel access. But I don't want to
> block 2.0 for this - let's provide at least reduced functionality.
>>> So, we have three options on the table:
>>> 1) Have a generic 4-channel input mapping in default.conf.
>>>      - Provides access to all four channels on all known and most unknown
>>> devices.
>>>      - Causes some unnecessary delay in startup on most systems.
>>>      - May expose bugs in the remapping code.
>>>      - Patch exists.
>>> 2) Have udev-triggered device-specific mappings.
>>>      - Provides access to all four channels on the devices for which a
>>> udev-rule is written.
>>>      - Requires patching for each individual device.
>>>      - Depending on the configuration file content, may expose bugs in the
>>> remapping code.
>>>      - No patches exist. I know how to make them
>>> 3) Downmix to stereo in alsa.
>>>      - Provides access only to downmixed audio.
>>>      - Requires patching for each individual device.
>>>      - No worries about remapping bugs.
>>>      - An untested patch exists for one device. I don't know how to make
>>> these patches.
>> That is very simple: just add one row per device, where the lookup key
>> is what you get out of /proc/asound/cards (the name right after "]: "
>> and before " - ").
>>> The downmixing option doesn't sound very nice with iO4. Owners of that
>>> device probably want to access all channels individually. I don't really
>>> see much benefit in option 3 over option 2.
>> I'd like to try to keep hardware specific stuff on the ALSA side of
>> things as much as possible. It just feels better that way - both because
>> it would potentially help other sound servers and programs using ALSA
>> directly, and because I want to avoid cluttering PulseAudio.
> That makes a lot of sense. Currently audio hardware adaptation work has
> to be done both in ALSA and PulseAudio. I can't see any good reason for
> why it should be so. The only problem is that I'll need to become an
> alsa-lib developer now... but that's probably a good thing.
> Do you think that we should aim to get rid of the current custom
> profile-set configuration files too? If we decide that there should be
> no hardware-specific stuff in PulseAudio, I think that would be logical.

Never answered this one: I'd say, yes, if we can remove the current 
custom profile-set configuration files in exchange for doing the same 
thing in alsa-lib, that would be a good thing in general. But I don't 
know if it's feasible everywhere, and I don't see it as a high priority 
currently. But before adding new custom profiles, we should first 
consider tweaking alsa-lib instead.

David Henningsson, Canonical Ltd.

More information about the pulseaudio-discuss mailing list