|
@@ -82,9 +82,6 @@ static int even(int64_t layout){
|
|
}
|
|
}
|
|
|
|
|
|
static int clean_layout(SwrContext *s, 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))) {
|
|
if(layout && layout != AV_CH_FRONT_CENTER && !(layout&(layout-1))) {
|
|
char buf[128];
|
|
char buf[128];
|
|
av_get_channel_layout_string(buf, sizeof(buf), -1, layout);
|
|
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);
|
|
in_ch_layout = clean_layout(s, s->in_ch_layout);
|
|
out_ch_layout = clean_layout(s, s->out_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)){
|
|
if(!sane_layout(in_ch_layout)){
|
|
av_get_channel_layout_string(buf, sizeof(buf), -1, s->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);
|
|
av_log(s, AV_LOG_ERROR, "Input channel layout '%s' is not supported\n", buf);
|