diff options
-rw-r--r-- | audio/out/ao_alsa.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/audio/out/ao_alsa.c b/audio/out/ao_alsa.c index de41954bd9..8706c0d30b 100644 --- a/audio/out/ao_alsa.c +++ b/audio/out/ao_alsa.c @@ -488,10 +488,14 @@ static int set_chmap(struct ao *ao, struct mp_chmap *dev_chmap, int num_channels } else if (chmap.num != num_channels) { MP_WARN(ao, "ALSA channel map conflicts with channel count!\n"); } else { - MP_VERBOSE(ao, "using the ALSA channel map.\n"); - if (mp_chmap_equals(&chmap, &ao->channels)) + if (mp_chmap_equals(&chmap, &ao->channels)) { MP_VERBOSE(ao, "which is what we requested.\n"); - ao->channels = chmap; + } else if (!mp_chmap_is_valid(dev_chmap)) { + MP_VERBOSE(ao, "ignoring the ALSA channel map.\n"); + } else { + MP_VERBOSE(ao, "using the ALSA channel map.\n"); + ao->channels = chmap; + } } free(alsa_chmap); |