summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-05-13 18:17:27 +0200
committerwm4 <wm4@nowhere>2013-05-13 18:27:09 +0200
commita39d369c254ff6db3689b6f945bb057754510af7 (patch)
tree28ceeeedc45a35295ba6093e9e574cb562bb0b61
parent636e1edd9e3bbfb2085ed5b3014b4a9e1fab3274 (diff)
downloadmpv-a39d369c254ff6db3689b6f945bb057754510af7.tar.bz2
mpv-a39d369c254ff6db3689b6f945bb057754510af7.tar.xz
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.
-rw-r--r--audio/chmap.c4
-rw-r--r--audio/out/ao_alsa.c2
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"},