summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_alsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out/ao_alsa.c')
-rw-r--r--audio/out/ao_alsa.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/audio/out/ao_alsa.c b/audio/out/ao_alsa.c
index 93cea1f30b..3958bf8107 100644
--- a/audio/out/ao_alsa.c
+++ b/audio/out/ao_alsa.c
@@ -598,6 +598,10 @@ static int init(struct ao *ao)
for (int c = 0; c < dev_chmap.num; c++)
alsa_chmap->pos[c] = find_alsa_channel(dev_chmap.speaker[c]);
+ // mpv and ALSA use different conventions for mono
+ if (dev_chmap.num == 1 && dev_chmap.speaker[0] == MP_SP(FC))
+ alsa_chmap->pos[0] = SND_CHMAP_MONO;
+
char tmp[128];
if (snd_pcm_chmap_print(alsa_chmap, sizeof(tmp), tmp) > 0)
MP_VERBOSE(ao, "trying to set ALSA channel map: %s\n", tmp);
@@ -635,6 +639,7 @@ static int init(struct ao *ao)
MP_WARN(ao, "Got unknown channel map from ALSA.\n");
}
+ // mpv and ALSA use different conventions for mono
if (ao->channels.num == 1)
ao->channels.speaker[0] = MP_SP(FC);