output/pulse: use pa_channel_map_init_extend() instead of _auto()

Unlike pa_channel_map_init_auto(), pa_channel_map_init_extend() does
not fail if there is no valid mapping for the given channel count, but
instead maps additional "AUX" channels.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/493
This commit is contained in:
Max Kellermann 2019-03-16 14:03:10 +01:00
parent 1aa7cdd602
commit 0bb71f1f20
2 changed files with 4 additions and 2 deletions

2
NEWS
View File

@ -7,6 +7,8 @@ ver 0.21.6 (not yet released)
- cdio_paranoia: fix build failure due to missing #include
* decoder
- opus: fix replay gain when there are no other tags
* output
- pulse: work around error with unusual channel count
* playlist
- flac: fix use-after-free bug
* support abstract sockets on Linux

View File

@ -581,8 +581,8 @@ PulseOutput::SetupStream(const pa_sample_spec &ss)
/* WAVE-EX is been adopted as the speaker map for most media files */
pa_channel_map chan_map;
pa_channel_map_init_auto(&chan_map, ss.channels,
PA_CHANNEL_MAP_WAVEEX);
pa_channel_map_init_extend(&chan_map, ss.channels,
PA_CHANNEL_MAP_WAVEEX);
stream = pa_stream_new(context, name, &ss, &chan_map);
if (stream == nullptr)
throw MakePulseError(context,