[alsa-devel] USB-Audio.conf routing and dmix
Alexander E. Patrakov
patrakov at gmail.com
Fri May 15 07:53:51 CEST 2015
15.05.2015 07:07, sylvain.bertrand at gmail.com wrote:
> On Wed, May 13, 2015 at 11:32:15AM +0000, sylvain.bertrand at gmail.com wrote:
>> On Wed, May 13, 2015 at 11:24:32AM +0200, Clemens Ladisch wrote:
>>>>> I linked the surround51 and surround71 pcms with the 'disable-able' dmix
>>>>> section from the default pcm.
>>>
>>> These devices are not supposed to use plug or dmix.
>>
>> Ok. Then, there is no pcm to output 5.1 sound with dmix.
>>
>> Does it mean that the application is in charge to build a alsa-lib pipeline
>> with dmix pcm and surround51 pcm, in order to let other applications output 5.1
>> sound at the same time?
>
> Then what is the "Right"(tm) way to do that?
>
[this is my personal opinion, in no way official]
The right way seems to be to use PulseAudio. Pure ALSA, in its default
configuration, just does not support mixing 5.1 audio, on any card. This
default cannot really be changed, because there are many people who use
5.1 cards for output to stereo headphones only, i.e. who need automatic
downmixing if an app (such as VLC) starts a 5.1 stream. The default
plug/dmix setup provides such downmixing.
Those who actually have a 5.1 system and need to opt out of this
downmixing must actively do it (both with ALSA and with PulseAudio). For
PulseAudio, it is as simple as starting pavucontrol and selecting a 5.1
output profile for the relevant card. For ALSA, a config has to be
created from scratch. On some cards, the config suggested by mpv
developers works:
https://github.com/mpv-player/mpv/wiki/ALSA:-Surround-Sound-and-Upmixing
As an application developer, just tell your users "your default device
needs to support 5.1, see you there", as mpv developers did. This will
be the case either with PulseAudio or with a hacked .asoundrc.
OTOH, I will be happy to review a patch that makes the dmix channel
count configurable on a per-card basis in .asoundrs in a way similar to
the rate. But that's hard - you will have to change all card configs,
and implement some conditional blocks because some cards expose
themselves as several stereo devices, so you want a multi plugin on
several instances of dmix then.
--
Alexander E. Patrakov
More information about the Alsa-devel
mailing list