aboutsummaryrefslogtreecommitdiffstats
path: root/libswresample
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-20 16:56:51 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2013-08-20 18:47:27 +0200
commit739e236aed8f39fefe2126a5f7aab01c340bdbc4 (patch)
treef21af78c1c2f62808300d7314eddacfcf35ee7e2 /libswresample
parent3f3993ac0aef49b0b27f52d889d5a3d09ad1b0b4 (diff)
downloadffmpeg-739e236aed8f39fefe2126a5f7aab01c340bdbc4.tar.gz
swr/rematrix: Fix handling of AV_CH_LAYOUT_STEREO_DOWNMIX output
Fixes Ticket2859 Note, testcases related to the downmix channels are welcome. (id like to make sure this is working correctly now, as obviously it didnt work before ...) Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit c56d4dab039b352961cca298d753b04e2f2fd990)
Diffstat (limited to 'libswresample')
-rw-r--r--libswresample/rematrix.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c
index c53129b41b..c126565145 100644
--- a/libswresample/rematrix.c
+++ b/libswresample/rematrix.c
@@ -103,9 +103,6 @@ static int even(int64_t layout){
}
static int clean_layout(SwrContext *s, int64_t layout){
- if((layout & AV_CH_LAYOUT_STEREO_DOWNMIX) == AV_CH_LAYOUT_STEREO_DOWNMIX)
- return AV_CH_LAYOUT_STEREO;
-
if(layout && layout != AV_CH_FRONT_CENTER && !(layout&(layout-1))) {
char buf[128];
av_get_channel_layout_string(buf, sizeof(buf), -1, layout);
@@ -145,6 +142,11 @@ av_cold static int auto_matrix(SwrContext *s)
in_ch_layout = clean_layout(s, s->in_ch_layout);
out_ch_layout = clean_layout(s, s->out_ch_layout);
+ if( out_ch_layout == AV_CH_LAYOUT_STEREO_DOWNMIX
+ && (in_ch_layout & AV_CH_LAYOUT_STEREO_DOWNMIX) == 0
+ )
+ out_ch_layout = AV_CH_LAYOUT_STEREO;
+
if(!sane_layout(in_ch_layout)){
av_get_channel_layout_string(buf, sizeof(buf), -1, s->in_ch_layout);
av_log(s, AV_LOG_ERROR, "Input channel layout '%s' is not supported\n", buf);