aboutsummaryrefslogtreecommitdiffstats
path: root/libswresample
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-20 16:56:51 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-20 16:56:51 +0200
commitc56d4dab039b352961cca298d753b04e2f2fd990 (patch)
tree08b0e22f7d0424269ae6ec1ac16cfd77418d1e79 /libswresample
parent6dfffe92004dfd8c79d18791f28a2b1c7e387845 (diff)
downloadffmpeg-c56d4dab039b352961cca298d753b04e2f2fd990.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>
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 f15cf712c0..5c98e68990 100644
--- a/libswresample/rematrix.c
+++ b/libswresample/rematrix.c
@@ -82,9 +82,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);
@@ -125,6 +122,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);