These two patches make sense to apply individually, but also complement each other as the channel mapping API can be used to check whether the four channel output is actually 2.1 or 4.0. I think the 2.1 patch is safe to apply right now, but I'd like to test the channel map API patch more first. Also, while the channel map API patch is useful as it is, there is at least room for these improvements: 1) In case ALSA supports all the channels PA wants to output to, but only in another order than PA would like it to be, PA should adjust its channel map order accordingly. This is probably easy to do, I just haven't done it. So currently only the other way around is supported, i e, making ALSA adjust to PA's preferred order. 2) ALSA's "paired" mode of channel map is treated as "fixed" mode. 3) In case a device does not support the channel map API at all (no channel maps returned from the query_chmap call), there is no use doing the set_chmap call later. Note: on one device I tested on, a USB headset, the mono channel map was not given by the kernel. As a result, mono output profile was no longer available. This should be fixed in the kernel. David Henningsson (2): alsa: Use alsa-lib's channel mapping API to select the best channel map alsa: Add surround 2.1 profile src/modules/alsa/alsa-sink.c | 6 + src/modules/alsa/alsa-source.c | 6 + src/modules/alsa/alsa-util.c | 142 +++++++++++++++++++++ src/modules/alsa/alsa-util.h | 2 + src/modules/alsa/mixer/profile-sets/default.conf | 7 + .../alsa/mixer/profile-sets/extra-hdmi.conf | 7 + .../profile-sets/force-speaker-and-int-mic.conf | 7 + .../alsa/mixer/profile-sets/force-speaker.conf | 7 + 8 files changed, 184 insertions(+) -- 1.8.3.2