X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libswresample%2Frematrix.c;h=94b3de88f6f727f18c1fcdd0a5c896b76a2c4c0f;hb=3a370868dc33061a20d1fd99274e65167d7a78ac;hp=6b5feaa07b69e408cd99b2ba0613786656bc4c54;hpb=4069096dd535ee99175c2a29c1a1f59c3fc110c1;p=ffmpeg diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c index 6b5feaa07b6..94b3de88f6f 100644 --- a/libswresample/rematrix.c +++ b/libswresample/rematrix.c @@ -88,7 +88,7 @@ static int even(int64_t layout){ return 0; } -static int clean_layout(void *s, int64_t layout){ +static int64_t clean_layout(void *s, int64_t layout){ if(layout && layout != AV_CH_FRONT_CENTER && !(layout&(layout-1))) { char buf[128]; av_get_channel_layout_string(buf, sizeof(buf), -1, layout); @@ -141,6 +141,16 @@ av_cold int swr_build_matrix(uint64_t in_ch_layout_param, uint64_t out_ch_layout ) in_ch_layout = AV_CH_LAYOUT_STEREO; + if (in_ch_layout == AV_CH_LAYOUT_22POINT2 && + out_ch_layout != AV_CH_LAYOUT_22POINT2) { + in_ch_layout = (AV_CH_LAYOUT_7POINT1_WIDE_BACK|AV_CH_BACK_CENTER); + av_get_channel_layout_string(buf, sizeof(buf), -1, in_ch_layout); + av_log(log_context, AV_LOG_WARNING, + "Full-on remixing from 22.2 has not yet been implemented! " + "Processing the input as '%s'\n", + buf); + } + if(!sane_layout(in_ch_layout)){ av_get_channel_layout_string(buf, sizeof(buf), -1, in_ch_layout_param); av_log(log_context, AV_LOG_ERROR, "Input channel layout '%s' is not supported\n", buf);