Message ID | 20200801110730.30642-4-jeebjp@gmail.com |
---|---|
State | Accepted |
Commit | f5390a9f86d68ced52a39e00eca70d15d25accc7 |
Headers | show |
Series | 22.2 channel layout support for AAC decoding | expand |
Context | Check | Description |
---|---|---|
andriy/default | pending | |
andriy/make | success | Make finished |
andriy/make_fate | success | Make fate finished |
On Sat, Aug 01, 2020 at 02:07:26PM +0300, Jan Ekström wrote: > Only this sub-set of channels actually follows the bit mask order > in the official 22.2 channel mapping. Additionally, the 5.1 channels > are there for backwards compatibility with the previous system. > > This enables the utilization of 22.2 content until a proper down/up > matrix is added into swresample. > --- > libswresample/rematrix.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) assuming this is true and theres no issue with order it should be ok thx [...]
On Sat, Aug 1, 2020 at 9:52 PM Michael Niedermayer <michael@niedermayer.cc> wrote: > > On Sat, Aug 01, 2020 at 02:07:26PM +0300, Jan Ekström wrote: > > Only this sub-set of channels actually follows the bit mask order > > in the official 22.2 channel mapping. Additionally, the 5.1 channels > > are there for backwards compatibility with the previous system. > > > > This enables the utilization of 22.2 content until a proper down/up > > matrix is added into swresample. > > --- > > libswresample/rematrix.c | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > assuming this is true and theres no issue with order > it should be ok > Thanks for taking a look. Yes, the first 6 channels in 22.2 are mapped the same as 5.1 (back), and the AAC decoder code reorders the coding units accordingly to match specification. This change was then verified using `-channel_layout "5.1"` with ffmpeg.c to just take the first six channels. Jan
diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c index 983355ba36..d0c4a212b3 100644 --- a/libswresample/rematrix.c +++ b/libswresample/rematrix.c @@ -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_5POINT1_BACK; + 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);