Hi

This breaks the following (channels are very wrong afterwards)

-i Nero%20032%20kbps%20CBR-HE.mp4 -t 5 -bitexact -y test513.wav

file shoukld be here: 
https://trac.ffmpeg.org/attachment/ticket/513/Nero%20032%20kbps%20CBR-HE.mp4

thx

On Wed, May 20, 2026 at 08:27:39PM +0300, James Almer via ffmpeg-cvslog wrote:
> This is an automated email from the git hooks/post-receive script.
> 
> Git pushed a commit to branch master
> in repository ffmpeg.
> 
> commit c92c6cbf19f23e9569a67fba64f61923073512cc
> Author:     James Almer <[email protected]>
> AuthorDate: Tue May 19 11:14:59 2026 -0300
> Commit:     James Almer <[email protected]>
> CommitDate: Wed May 20 10:59:01 2026 -0300
> 
>     avcodec/aacenc: fix PCE configs for known native layouts
>     
>     Many of the entries were downright wrong, like mistagging LFE elements as
>     SCE, as well as trying to match the native channel ordering in the PCE
>     by placing CPE elements before SCE ones in some cases (like with FRONT
>     elements), which is not spec compliant and results in unparseable streams.
>     
>     Remove the three layouts that define top channels. It's not clear how they
>     should be signaled in PCE.
>     
>     Signed-off-by: James Almer <[email protected]>
> ---
>  libavcodec/aacenc.c | 193 
> ++++++++++++++++++++++------------------------------
>  1 file changed, 83 insertions(+), 110 deletions(-)
> 
> diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
> index b8df8dc530..7181bffab1 100644
> --- a/libavcodec/aacenc.c
> +++ b/libavcodec/aacenc.c
> @@ -123,34 +123,34 @@ static const AACPCEInfo aac_pce_configs[] = {
>      {
>          .layout = AV_CHANNEL_LAYOUT_SURROUND,
>          .num_ele = { 2, 0, 0, 0 },
> -        .pairing = { { 1, 0 }, },
> +        .pairing = { { 0, 1 }, },
>          .index = { { 0, 0 }, },
> -        .config_map = { 2, TYPE_CPE, TYPE_SCE, },
> -        .reorder_map = { 0, 1, 2 },
> +        .config_map = { 2, TYPE_SCE, TYPE_CPE },
> +        .reorder_map = { 2, 0, 1 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_3POINT1,
>          .num_ele = { 2, 0, 0, 1 },
> -        .pairing = { { 1, 0 }, },
> +        .pairing = { { 0, 1 }, },
>          .index = { { 0, 0 }, { 0 }, { 0 }, { 0 }, },
> -        .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_LFE },
> -        .reorder_map = { 0, 1, 2, 3 },
> +        .config_map = { 3, TYPE_SCE, TYPE_CPE, TYPE_LFE },
> +        .reorder_map = { 2, 0, 1, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_4POINT0,
>          .num_ele = { 2, 0, 1, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 0 }, },
> +        .pairing = { { 0, 1 }, { 0 }, { 0 }, },
>          .index = { { 0, 0 }, { 0 }, { 1 } },
> -        .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_SCE },
> -        .reorder_map = {  0, 1, 2, 3 },
> +        .config_map = { 3, TYPE_SCE, TYPE_CPE, TYPE_SCE },
> +        .reorder_map = { 2, 0, 1, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_4POINT1,
> -        .num_ele = { 2, 1, 1, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 0 }, },
> -        .index = { { 0, 0 }, { 1 }, { 2 }, { 0 } },
> -        .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_SCE },
> -        .reorder_map = { 0, 1, 2, 3, 4 },
> +        .num_ele = { 2, 0, 1, 1 },
> +        .pairing = { { 0, 1 }, { 0 }, { 0 }, },
> +        .index = { { 0, 0 }, { 0 }, { 1 }, { 0 } },
> +        .config_map = { 4, TYPE_SCE, TYPE_CPE, TYPE_SCE, TYPE_LFE },
> +        .reorder_map = { 2, 0, 1, 4, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_2_2,
> @@ -171,157 +171,130 @@ static const AACPCEInfo aac_pce_configs[] = {
>      {
>          .layout = AV_CHANNEL_LAYOUT_5POINT0,
>          .num_ele = { 2, 1, 0, 0 },
> -        .pairing = { { 1, 0 }, { 1 }, },
> +        .pairing = { { 0, 1 }, { 1 }, },
>          .index = { { 0, 0 }, { 1 } },
> -        .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_CPE },
> -        .reorder_map = { 0, 1, 2, 3, 4 },
> +        .config_map = { 3, TYPE_SCE, TYPE_CPE, TYPE_CPE },
> +        .reorder_map = { 2, 0, 1, 3, 4 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_5POINT1,
> -        .num_ele = { 2, 1, 1, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 1 }, },
> -        .index = { { 0, 0 }, { 1 }, { 1 } },
> -        .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5 },
> +        .num_ele = { 2, 1, 0, 1 },
> +        .pairing = { { 0, 1 }, { 1 }, },
> +        .index = { { 0, 0 }, { 1 }, { 0 }, { 0 }, },
> +        .config_map = { 4, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_LFE },
> +        .reorder_map = { 2, 0, 1, 4, 5, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_5POINT0_BACK,
>          .num_ele = { 2, 0, 1, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 1 } },
> +        .pairing = { { 0, 1 }, { 0 }, { 1 } },
>          .index = { { 0, 0 }, { 0 }, { 1 } },
> -        .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_CPE },
> -        .reorder_map = { 0, 1, 2, 3, 4 },
> +        .config_map = { 3, TYPE_SCE, TYPE_CPE, TYPE_CPE },
> +        .reorder_map = { 2, 0, 1, 3, 4 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_5POINT1_BACK,
> -        .num_ele = { 2, 1, 1, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 1 }, },
> -        .index = { { 0, 0 }, { 1 }, { 1 } },
> -        .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5 },
> +        .num_ele = { 2, 0, 1, 1 },
> +        .pairing = { { 0, 1 }, { 0 }, { 1 }, },
> +        .index = { { 0, 0 }, { 0 }, { 1 }, { 0 } },
> +        .config_map = { 4, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_LFE },
> +        .reorder_map = { 2, 0, 1, 4, 5, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_6POINT0,
>          .num_ele = { 2, 1, 1, 0 },
> -        .pairing = { { 1, 0 }, { 1 }, { 0 }, },
> +        .pairing = { { 0, 1 }, { 1 }, { 0 }, },
>          .index = { { 0, 0 }, { 1 }, { 1 } },
> -        .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5 },
> +        .config_map = { 4, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_SCE },
> +        .reorder_map = { 2, 0, 1, 4, 5, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_6POINT0_FRONT,
>          .num_ele = { 2, 1, 0, 0 },
>          .pairing = { { 1, 1 }, { 1 } },
> -        .index = { { 1, 0 }, { 2 }, },
> +        .index = { { 0, 1 }, { 2 }, },
>          .config_map = { 3, TYPE_CPE, TYPE_CPE, TYPE_CPE, },
>          .reorder_map = { 0, 1, 2, 3, 4, 5 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_HEXAGONAL,
>          .num_ele = { 2, 0, 2, 0 },
> -        .pairing = { { 1, 0 },{ 0 },{ 1, 0 }, },
> -        .index = { { 0, 0 },{ 0 },{ 1, 1 } },
> -        .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE, },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5 },
> +        .pairing = { { 0, 1 }, { 0 }, { 1, 0 } },
> +        .index = { { 0, 0 }, { 0 }, { 1, 1 } },
> +        .config_map = { 4, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_SCE },
> +        .reorder_map = { 2, 0, 1, 3, 4, 5 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_6POINT1,
> -        .num_ele = { 2, 1, 2, 0 },
> -        .pairing = { { 1, 0 },{ 0 },{ 1, 0 }, },
> -        .index = { { 0, 0 },{ 1 },{ 1, 2 } },
> -        .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_SCE 
> },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6 },
> +        .num_ele = { 2, 1, 1, 1 },
> +        .pairing = { { 0, 1 },{ 1 },{ 0 }, },
> +        .index = { { 0, 0 },{ 1 },{ 1 },{ 0 } },
> +        .config_map = { 5, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_SCE, TYPE_LFE 
> },
> +        .reorder_map = { 2, 0, 1, 5, 6, 4, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_6POINT1_BACK,
> -        .num_ele = { 2, 1, 2, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 1, 0 }, },
> -        .index = { { 0, 0 }, { 1 }, { 1, 2 } },
> -        .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_SCE 
> },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6 },
> +        .num_ele = { 2, 0, 2, 1 },
> +        .pairing = { { 0, 1 },{ 1, 0 },{ 0 }, },
> +        .index = { { 0, 0 },{ 0 },{ 1, 1 },{ 0 } },
> +        .config_map = { 5, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_SCE, TYPE_LFE 
> },
> +        .reorder_map = { 2, 0, 1, 4, 5, 6, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_6POINT1_FRONT,
> -        .num_ele = { 2, 1, 2, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 1, 0 }, },
> -        .index = { { 0, 0 }, { 1 }, { 1, 2 } },
> -        .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_SCE 
> },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6 },
> +        .num_ele = { 2, 1, 0, 1 },
> +        .pairing = { { 1, 1 },{ 1 } },
> +        .index = { { 0, 1 },{ 2 },{ 0 },{ 0 } },
> +        .config_map = { 4, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_LFE },
> +        .reorder_map = { 0, 1, 3, 4, 5, 6, 2 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_7POINT0,
> -        .num_ele = { 2, 1, 1, 0 },
> -        .pairing = { { 1, 0 }, { 1 }, { 1 }, },
> -        .index = { { 0, 0 }, { 1 }, { 2 }, },
> -        .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_CPE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6 },
> +        .num_ele = { 2, 0, 2, 0 },
> +        .pairing = { { 0, 1 }, { 0 }, { 1, 1 }, },
> +        .index = { { 0, 0 }, { 0 }, { 2, 1 }, },
> +        .config_map = { 4, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_CPE },
> +        .reorder_map = { 2, 0, 1, 3, 4, 5, 6 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_7POINT0_FRONT,
> -        .num_ele = { 2, 1, 1, 0 },
> -        .pairing = { { 1, 0 }, { 1 }, { 1 }, },
> -        .index = { { 0, 0 }, { 1 }, { 2 }, },
> -        .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_CPE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6 },
> +        .num_ele = { 3, 1, 0, 0 },
> +        .pairing = { { 0, 1, 1 }, { 1 }, },
> +        .index = { { 0, 0, 1 }, { 2 }, },
> +        .config_map = { 4, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_CPE },
> +        .reorder_map = { 2, 0, 1, 3, 4, 5, 6 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_7POINT1,
> -        .num_ele = { 2, 1, 2, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 1, 1 }, },
> -        .index = { { 0, 0 }, { 1 }, { 1, 2 }, { 0 } },
> -        .config_map = { 5, TYPE_CPE, TYPE_SCE,  TYPE_SCE, TYPE_CPE, TYPE_CPE 
> },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 },
> +        .num_ele = { 2, 0, 2, 1 },
> +        .pairing = { { 0, 1 }, { 0 }, { 1, 1 }, },
> +        .index = { { 0, 0 }, { 0 }, { 2, 1 }, { 0 } },
> +        .config_map = { 5, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_LFE 
> },
> +        .reorder_map = { 2, 0, 1, 4, 5, 6, 7, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_7POINT1_WIDE,
> -        .num_ele = { 2, 1, 2, 0 },
> -        .pairing = { { 1, 0 }, { 0 },{  1, 1 }, },
> -        .index = { { 0, 0 }, { 1 }, { 1, 2 }, { 0 } },
> -        .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_CPE 
> },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 },
> +        .num_ele = { 3, 1, 0, 1 },
> +        .pairing = { { 0, 1, 1 }, { 1 }, },
> +        .index = { { 0, 0, 1 }, { 2 }, },
> +        .config_map = { 5, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_LFE 
> },
> +        .reorder_map = { 2, 0, 1, 4, 5, 6, 7, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK,
> -        .num_ele = { 2, 1, 2, 0 },
> -        .pairing = { { 1, 0 }, { 0 }, { 1, 1 }, },
> -        .index = { { 0, 0 }, { 1 }, { 1, 2 }, { 0 } },
> -        .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_CPE 
> },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 },
> +        .num_ele = { 3, 0, 1, 1 },
> +        .pairing = { { 0, 1, 1 }, { 0 }, { 1 } },
> +        .index = { { 0, 0, 2 }, { 0 }, { 1 }, { 0 } },
> +        .config_map = { 5, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_LFE 
> },
> +        .reorder_map = { 2, 0, 1, 4, 5, 6, 7, 3 },
>      },
>      {
>          .layout = AV_CHANNEL_LAYOUT_OCTAGONAL,
> -        .num_ele = { 2, 1, 2, 0 },
> -        .pairing = { { 1, 0 }, { 1 }, { 1, 0 }, },
> -        .index = { { 0, 0 }, { 1 }, { 2, 1 } },
> -        .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_SCE 
> },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 },
> -    },
> -    {   /* Meant for order 2/mixed ambisonics */
> -        .layout = { .order = AV_CHANNEL_ORDER_NATIVE, .nb_channels = 9,
> -                    .u.mask = AV_CH_LAYOUT_OCTAGONAL | AV_CH_TOP_CENTER },
> -        .num_ele = { 2, 2, 2, 0 },
> -        .pairing = { { 1, 0 }, { 1, 0 }, { 1, 0 }, },
> -        .index = { { 0, 0 }, { 1, 1 }, { 2, 2 } },
> -        .config_map = { 6, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE, TYPE_CPE, 
> TYPE_SCE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
> -    },
> -    {   /* Meant for order 2/mixed ambisonics */
> -        .layout = { .order = AV_CHANNEL_ORDER_NATIVE, .nb_channels = 10,
> -                    .u.mask = AV_CH_LAYOUT_6POINT0_FRONT | AV_CH_BACK_CENTER 
> |
> -                              AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT | 
> AV_CH_TOP_CENTER },
> -        .num_ele = { 2, 2, 2, 0 },
> -        .pairing = { { 1, 1 }, { 1, 0 }, { 1, 0 }, },
> -        .index = { { 0, 1 }, { 2, 0 }, { 3, 1 } },
> -        .config_map = { 6, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_SCE, TYPE_CPE, 
> TYPE_SCE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
> -    },
> -    {
> -        .layout = AV_CHANNEL_LAYOUT_HEXADECAGONAL,
> -        .num_ele = { 4, 2, 4, 0 },
> -        .pairing = { { 1, 0, 1, 0 }, { 1, 1 }, { 1, 0, 1, 0 }, },
> -        .index = { { 0, 0, 1, 1 }, { 2, 3 }, { 4, 2, 5, 3 } },
> -        .config_map = { 10, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE, 
> TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE },
> -        .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
> 15 },
> +        .num_ele = { 2, 0, 3, 0 },
> +        .pairing = { { 0, 1 }, { 0 }, { 1, 1, 0 }, },
> +        .index = { { 0, 0 }, { 0 }, { 1, 2, 1 }, },
> +        .config_map = { 5, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_SCE 
> },
> +        .reorder_map = { 2, 0, 1, 6, 7, 3, 4, 5 },
>      },
>  };
>  
> 
> _______________________________________________
> ffmpeg-cvslog mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> 

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato

Attachment: signature.asc
Description: PGP signature

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to