From a39d369c254ff6db3689b6f945bb057754510af7 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 13 May 2013 18:17:27 +0200 Subject: [PATCH] audio: fix ALSA 4 channel surround output It turns out that ALSA's 4 channel layout is different from mpv's and ffmpeg's 4.0 layout. Thus trying to do 4 channel output led to incorrect remixing via lib{av,sw}resample. Fix the default layouts for the internal filter chain as well, although I'm not sure if it matters at all. --- audio/chmap.c | 4 +++- audio/out/ao_alsa.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/audio/chmap.c b/audio/chmap.c index fcdb95edb3..77bd998835 100644 --- a/audio/chmap.c +++ b/audio/chmap.c @@ -102,10 +102,12 @@ static const struct mp_chmap default_layouts[MP_NUM_CHANNELS + 1] = { // The channel order was lavc/waveex, but differs from lavc for 5, 6 and 8 // channels. 3 and 7 channels were likely undefined (no ALSA support). +// I'm not sure about the 4 channel case: ALSA uses "quad", while the ffmpeg +// default layout is "4.0". static const char *mplayer_layouts[MP_NUM_CHANNELS + 1] = { [1] = "mono", [2] = "stereo", - [4] = "4.0", + [4] = "quad", [5] = "5.0(alsa)", [6] = "5.1(alsa)", [8] = "7.1(alsa)", diff --git a/audio/out/ao_alsa.c b/audio/out/ao_alsa.c index 93327881e5..d2e8180608 100644 --- a/audio/out/ao_alsa.c +++ b/audio/out/ao_alsa.c @@ -325,7 +325,7 @@ static const char *device_channel_layouts[][2] = { {"rear", "bl-br"}, {"center_lfe", "fc-lfe"}, {"side", "sl-sr"}, - {"surround40", "fl-fr-fc-bc"}, + {"surround40", "fl-fr-bl-br"}, {"surround50", "fl-fr-bl-br-fc"}, {"surround41", "fl-fr-bl-br-lfe"}, {"surround51", "fl-fr-bl-br-fc-lfe"},