PR #24641 opened by Romain Beauxis (toots)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24641
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24641.patch

This PR fixes a gap where output samples are not properly zeroed with some 
signal stereo but carry a single SCE per frame.

See attached sample for reference.

```fate-samples
aac/aac-sce-in-stereo.mp4
```



>From 6242bd002d3c7d504e12f7c98f3047b57d925035 Mon Sep 17 00:00:00 2001
From: Romain Beauxis <[email protected]>
Date: Tue, 22 Sep 2026 19:01:31 -0500
Subject: [PATCH] avcodec/aac: zero the output of a missing channel element

---
 libavcodec/aac/aacdec.c          |   3 +
 tests/fate/aac.mak               |   9 +-
 tests/ref/fate/aac-sce-in-stereo | 221 +++++++++++++++++++++++++++++++
 3 files changed, 231 insertions(+), 2 deletions(-)
 create mode 100644 tests/ref/fate/aac-sce-in-stereo

diff --git a/libavcodec/aac/aacdec.c b/libavcodec/aac/aacdec.c
index 202c7aa30c..fdebe139c3 100644
--- a/libavcodec/aac/aacdec.c
+++ b/libavcodec/aac/aacdec.c
@@ -2181,6 +2181,9 @@ static void spectral_to_sample(AACDecContext *ac, int 
samples)
                 che->present = 0;
             } else if (che) {
                 av_log(ac->avctx, AV_LOG_VERBOSE, "ChannelElement %d.%d 
missing \n", type, i);
+                memset(che->ch[0].output, 0, samples * 
sizeof(*che->ch[0].output));
+                if (type == TYPE_CPE)
+                    memset(che->ch[1].output, 0, samples * 
sizeof(*che->ch[1].output));
             }
         }
     }
diff --git a/tests/fate/aac.mak b/tests/fate/aac.mak
index e89b4274a9..e81ca933ae 100644
--- a/tests/fate/aac.mak
+++ b/tests/fate/aac.mak
@@ -347,13 +347,18 @@ FATE_AAC_ALL = $(FATE_AAC-yes) $(FATE_AAC_LATM-yes) 
$(FATE_AAC_FIXED-yes)
 $(FATE_AAC_ALL): CMP  = oneoff
 $(FATE_AAC_ALL): FUZZ = 2
 
+FATE_AAC_FRAMECRC += fate-aac-sce-in-stereo
+fate-aac-sce-in-stereo: CMD = framecrc -i 
$(TARGET_SAMPLES)/aac/aac-sce-in-stereo.mp4 -vn -af aresample
+
+FATE_AAC_FRAMECRC-$(call FRAMECRC, MOV, AAC, ARESAMPLE_FILTER) += 
$(FATE_AAC_FRAMECRC)
+
 FATE_AAC_ENCODE-$(call TRANSCODE, AAC, MP4 MOV, WAV_MUXER WAV_DEMUXER 
PCM_S16LE_DECODER ARESAMPLE_FILTER) += $(FATE_AAC_ENCODE)
 FATE_AAC_ENCODE_FFPROBE-$(call TRANSCODE, AAC, ADTS AAC, WAV_DEMUXER 
PCM_S16LE_DECODER ARESAMPLE_FILTER) += $(FATE_AAC_ENCODE_FFPROBE)
 
 FATE_AAC_BSF-$(call FRAMECRC, AAC MATROSKA, AAC, AAC_PARSER AAC_ADTSTOASC_BSF 
MATROSKA_MUXER) += fate-aac-autobsf-adtstoasc
 
-FATE_SAMPLES_FFMPEG += $(FATE_AAC_ALL) $(FATE_AAC_ENCODE-yes) 
$(FATE_AAC_BSF-yes)
+FATE_SAMPLES_FFMPEG += $(FATE_AAC_ALL) $(FATE_AAC_FRAMECRC-yes) 
$(FATE_AAC_ENCODE-yes) $(FATE_AAC_BSF-yes)
 FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_AAC_ENCODE_FFPROBE-yes)
 
-fate-aac: $(FATE_AAC_ALL) $(FATE_AAC_ENCODE-yes) 
$(FATE_AAC_ENCODE_FFPROBE-yes) $(FATE_AAC_BSF-yes)
+fate-aac: $(FATE_AAC_ALL) $(FATE_AAC_FRAMECRC-yes) $(FATE_AAC_ENCODE-yes) 
$(FATE_AAC_ENCODE_FFPROBE-yes) $(FATE_AAC_BSF-yes)
 fate-aac-latm: $(FATE_AAC_LATM-yes)
diff --git a/tests/ref/fate/aac-sce-in-stereo b/tests/ref/fate/aac-sce-in-stereo
new file mode 100644
index 0000000000..85e8e8130b
--- /dev/null
+++ b/tests/ref/fate/aac-sce-in-stereo
@@ -0,0 +1,221 @@
+#tb 0: 1/44100
+#media_type 0: audio
+#codec_id 0: pcm_s16le
+#sample_rate 0: 44100
+#channel_layout_name 0: stereo
+0,          0,          0,     1024,     4096, 0xf8baf1a7
+0,       1024,       1024,     1024,     4096, 0x9989ec09
+0,       2048,       2048,     1024,     4096, 0xff82027c
+0,       3072,       3072,     1024,     4096, 0x8d130596
+0,       4096,       4096,     1024,     4096, 0x38c0f384
+0,       5120,       5120,     1024,     4096, 0x1898fb00
+0,       6144,       6144,     1024,     4096, 0x15e1f495
+0,       7168,       7168,     1024,     4096, 0xab530d45
+0,       8192,       8192,     1024,     4096, 0x9cd90f79
+0,       9216,       9216,     1024,     4096, 0xd6c0f54a
+0,      10240,      10240,     1024,     4096, 0x93e8ec75
+0,      11264,      11264,     1024,     4096, 0x0ef1055e
+0,      12288,      12288,     1024,     4096, 0x184702e1
+0,      13312,      13312,     1024,     4096, 0x638c0337
+0,      14336,      14336,     1024,     4096, 0x732aea99
+0,      15360,      15360,     1024,     4096, 0x7fac0201
+0,      16384,      16384,     1024,     4096, 0x202f029c
+0,      17408,      17408,     1024,     4096, 0xdd360382
+0,      18432,      18432,     1024,     4096, 0x9781fa63
+0,      19456,      19456,     1024,     4096, 0x1e88f5e2
+0,      20480,      20480,     1024,     4096, 0xd384fe58
+0,      21504,      21504,     1024,     4096, 0xab4bff0b
+0,      22528,      22528,     1024,     4096, 0x37c1018c
+0,      23552,      23552,     1024,     4096, 0xb788009a
+0,      24576,      24576,     1024,     4096, 0x35d2e770
+0,      25600,      25600,     1024,     4096, 0x2a28064c
+0,      26624,      26624,     1024,     4096, 0xa2700680
+0,      27648,      27648,     1024,     4096, 0xc7161577
+0,      28672,      28672,     1024,     4096, 0x67edfa88
+0,      29696,      29696,     1024,     4096, 0xa04af9f8
+0,      30720,      30720,     1024,     4096, 0x43e606af
+0,      31744,      31744,     1024,     4096, 0x81e40486
+0,      32768,      32768,     1024,     4096, 0xd2c7f14d
+0,      33792,      33792,     1024,     4096, 0x031ff64e
+0,      34816,      34816,     1024,     4096, 0x5de90767
+0,      35840,      35840,     1024,     4096, 0xd8bc116d
+0,      36864,      36864,     1024,     4096, 0xa0690739
+0,      37888,      37888,     1024,     4096, 0xf938eec2
+0,      38912,      38912,     1024,     4096, 0x49f4e8fd
+0,      39936,      39936,     1024,     4096, 0x2739049f
+0,      40960,      40960,     1024,     4096, 0x3e820433
+0,      41984,      41984,     1024,     4096, 0xf25f008e
+0,      43008,      43008,     1024,     4096, 0x1078edf1
+0,      44032,      44032,     1024,     4096, 0x4a4ff26b
+0,      45056,      45056,     1024,     4096, 0x66720b72
+0,      46080,      46080,     1024,     4096, 0x21d60046
+0,      47104,      47104,     1024,     4096, 0xa26dedf3
+0,      48128,      48128,     1024,     4096, 0x8958f65a
+0,      49152,      49152,     1024,     4096, 0x2953fe73
+0,      50176,      50176,     1024,     4096, 0x0ac8fb4c
+0,      51200,      51200,     1024,     4096, 0x163f0345
+0,      52224,      52224,     1024,     4096, 0x4757f3eb
+0,      53248,      53248,     1024,     4096, 0x886ae6ec
+0,      54272,      54272,     1024,     4096, 0x1f490044
+0,      55296,      55296,     1024,     4096, 0xbcec0bec
+0,      56320,      56320,     1024,     4096, 0x7a67f045
+0,      57344,      57344,     1024,     4096, 0x0218ef68
+0,      58368,      58368,     1024,     4096, 0xcab4f302
+0,      59392,      59392,     1024,     4096, 0xd72e002b
+0,      60416,      60416,     1024,     4096, 0x1b36048d
+0,      61440,      61440,     1024,     4096, 0x7654f6f9
+0,      62464,      62464,     1024,     4096, 0xeba7f40f
+0,      63488,      63488,     1024,     4096, 0xb922f81b
+0,      64512,      64512,     1024,     4096, 0x7ec003e0
+0,      65536,      65536,     1024,     4096, 0x3eeaf03a
+0,      66560,      66560,     1024,     4096, 0x0c08f778
+0,      67584,      67584,     1024,     4096, 0x428beb04
+0,      68608,      68608,     1024,     4096, 0xb88304c6
+0,      69632,      69632,     1024,     4096, 0xef050e01
+0,      70656,      70656,     1024,     4096, 0xefc1f703
+0,      71680,      71680,     1024,     4096, 0x88b4f3b8
+0,      72704,      72704,     1024,     4096, 0xa04c0239
+0,      73728,      73728,     1024,     4096, 0x3ccd037b
+0,      74752,      74752,     1024,     4096, 0x836a0a54
+0,      75776,      75776,     1024,     4096, 0x73d4eb1e
+0,      76800,      76800,     1024,     4096, 0x3932fc0e
+0,      77824,      77824,     1024,     4096, 0x6c2ffdbf
+0,      78848,      78848,     1024,     4096, 0x40910064
+0,      79872,      79872,     1024,     4096, 0x491af9ae
+0,      80896,      80896,     1024,     4096, 0x73a2f8d2
+0,      81920,      81920,     1024,     4096, 0x7af7ed65
+0,      82944,      82944,     1024,     4096, 0x89310889
+0,      83968,      83968,     1024,     4096, 0xbecbff9e
+0,      84992,      84992,     1024,     4096, 0xe9b0f429
+0,      86016,      86016,     1024,     4096, 0x3febf5f9
+0,      87040,      87040,     1024,     4096, 0x841dffe7
+0,      88064,      88064,     1024,     4096, 0x343200c9
+0,      89088,      89088,     1024,     4096, 0xcf4afef5
+0,      90112,      90112,     1024,     4096, 0x7432fbc1
+0,      91136,      91136,     1024,     4096, 0xb76afdb2
+0,      92160,      92160,     1024,     4096, 0x06b90368
+0,      93184,      93184,     1024,     4096, 0x6d220df3
+0,      94208,      94208,     1024,     4096, 0x6118f9b3
+0,      95232,      95232,     1024,     4096, 0x4746f463
+0,      96256,      96256,     1024,     4096, 0xbb8af37a
+0,      97280,      97280,     1024,     4096, 0x10be063a
+0,      98304,      98304,     1024,     4096, 0x525b0d7b
+0,      99328,      99328,     1024,     4096, 0x9b43f598
+0,     100352,     100352,     1024,     4096, 0x6bc6f3c6
+0,     101376,     101376,     1024,     4096, 0x7c21f794
+0,     102400,     102400,     1024,     4096, 0xc3260d1a
+0,     103424,     103424,     1024,     4096, 0x3792ff3b
+0,     104448,     104448,     1024,     4096, 0xcb0ef508
+0,     105472,     105472,     1024,     4096, 0x28ecfa05
+0,     106496,     106496,     1024,     4096, 0xa0d61691
+0,     107520,     107520,     1024,     4096, 0x0c06028d
+0,     108544,     108544,     1024,     4096, 0xaab6f2a3
+0,     109568,     109568,     1024,     4096, 0xccfff3aa
+0,     110592,     110592,     1024,     4096, 0x2552fdae
+0,     111616,     111616,     1024,     4096, 0x042f06cf
+0,     112640,     112640,     1024,     4096, 0x8d21fd17
+0,     113664,     113664,     1024,     4096, 0xb8b0efcc
+0,     114688,     114688,     1024,     4096, 0x4c4df15b
+0,     115712,     115712,     1024,     4096, 0x4ac400fb
+0,     116736,     116736,     1024,     4096, 0x56dd0f01
+0,     117760,     117760,     1024,     4096, 0x6fa3f3c2
+0,     118784,     118784,     1024,     4096, 0x6872eee8
+0,     119808,     119808,     1024,     4096, 0x932df369
+0,     120832,     120832,     1024,     4096, 0x4582022c
+0,     121856,     121856,     1024,     4096, 0x44180dbf
+0,     122880,     122880,     1024,     4096, 0x8838ede9
+0,     123904,     123904,     1024,     4096, 0xff38f345
+0,     124928,     124928,     1024,     4096, 0xe2c6f6bb
+0,     125952,     125952,     1024,     4096, 0x32b90151
+0,     126976,     126976,     1024,     4096, 0xf4960115
+0,     128000,     128000,     1024,     4096, 0x3e76f636
+0,     129024,     129024,     1024,     4096, 0x1b5cf915
+0,     130048,     130048,     1024,     4096, 0x56de02dc
+0,     131072,     131072,     1024,     4096, 0x6db1084e
+0,     132096,     132096,     1024,     4096, 0xd2250206
+0,     133120,     133120,     1024,     4096, 0x7f74f00f
+0,     134144,     134144,     1024,     4096, 0xe875fafd
+0,     135168,     135168,     1024,     4096, 0x068f0e6b
+0,     136192,     136192,     1024,     4096, 0xa85bfa69
+0,     137216,     137216,     1024,     4096, 0xbe57ecff
+0,     138240,     138240,     1024,     4096, 0x130e0110
+0,     139264,     139264,     1024,     4096, 0x8b05015b
+0,     140288,     140288,     1024,     4096, 0x1c9900d8
+0,     141312,     141312,     1024,     4096, 0xf7c8fb07
+0,     142336,     142336,     1024,     4096, 0x86fbee03
+0,     143360,     143360,     1024,     4096, 0x91f4000a
+0,     144384,     144384,     1024,     4096, 0x639501f8
+0,     145408,     145408,     1024,     4096, 0xac601057
+0,     146432,     146432,     1024,     4096, 0x4300f10b
+0,     147456,     147456,     1024,     4096, 0x818cf105
+0,     148480,     148480,     1024,     4096, 0x88b80a4d
+0,     149504,     149504,     1024,     4096, 0xad1d0b8b
+0,     150528,     150528,     1024,     4096, 0x192c024b
+0,     151552,     151552,     1024,     4096, 0x083df10d
+0,     152576,     152576,     1024,     4096, 0x6239f080
+0,     153600,     153600,     1024,     4096, 0x2708001c
+0,     154624,     154624,     1024,     4096, 0x4ebdff9c
+0,     155648,     155648,     1024,     4096, 0x9688f4e6
+0,     156672,     156672,     1024,     4096, 0x0598e9fb
+0,     157696,     157696,     1024,     4096, 0x16b302d9
+0,     158720,     158720,     1024,     4096, 0x0a28fe08
+0,     159744,     159744,     1024,     4096, 0x49ec07ad
+0,     160768,     160768,     1024,     4096, 0x0618f1f9
+0,     161792,     161792,     1024,     4096, 0x5f27f51d
+0,     162816,     162816,     1024,     4096, 0x78640c10
+0,     163840,     163840,     1024,     4096, 0x4714fb3f
+0,     164864,     164864,     1024,     4096, 0x170df858
+0,     165888,     165888,     1024,     4096, 0xb3d8f4d5
+0,     166912,     166912,     1024,     4096, 0x478ef520
+0,     167936,     167936,     1024,     4096, 0x431dfcfc
+0,     168960,     168960,     1024,     4096, 0x83080596
+0,     169984,     169984,     1024,     4096, 0x3daaf481
+0,     171008,     171008,     1024,     4096, 0x49b3f40e
+0,     172032,     172032,     1024,     4096, 0x408afb50
+0,     173056,     173056,     1024,     4096, 0xb992fb5b
+0,     174080,     174080,     1024,     4096, 0xafbf0aba
+0,     175104,     175104,     1024,     4096, 0xf16de364
+0,     176128,     176128,     1024,     4096, 0x7962fdee
+0,     177152,     177152,     1024,     4096, 0x6362fca9
+0,     178176,     178176,     1024,     4096, 0xe907048d
+0,     179200,     179200,     1024,     4096, 0x7bd8f123
+0,     180224,     180224,     1024,     4096, 0xfafaf088
+0,     181248,     181248,     1024,     4096, 0xc404efcb
+0,     182272,     182272,     1024,     4096, 0x73100494
+0,     183296,     183296,     1024,     4096, 0x1105f5b8
+0,     184320,     184320,     1024,     4096, 0x02d4fd0d
+0,     185344,     185344,     1024,     4096, 0x2af8ea5c
+0,     186368,     186368,     1024,     4096, 0xb6b0014e
+0,     187392,     187392,     1024,     4096, 0xbe310b03
+0,     188416,     188416,     1024,     4096, 0x7695f832
+0,     189440,     189440,     1024,     4096, 0x066903c0
+0,     190464,     190464,     1024,     4096, 0xda0fe97f
+0,     191488,     191488,     1024,     4096, 0xda550be2
+0,     192512,     192512,     1024,     4096, 0xc7a50253
+0,     193536,     193536,     1024,     4096, 0x1716f71a
+0,     194560,     194560,     1024,     4096, 0x290bf2a9
+0,     195584,     195584,     1024,     4096, 0xfe6602d7
+0,     196608,     196608,     1024,     4096, 0x5dbf0512
+0,     197632,     197632,     1024,     4096, 0xb8ccff59
+0,     198656,     198656,     1024,     4096, 0x44bdf95b
+0,     199680,     199680,     1024,     4096, 0x8509e7fa
+0,     200704,     200704,     1024,     4096, 0x02da0344
+0,     201728,     201728,     1024,     4096, 0xb4150a3a
+0,     202752,     202752,     1024,     4096, 0xb411f9fe
+0,     203776,     203776,     1024,     4096, 0x5c8af156
+0,     204800,     204800,     1024,     4096, 0x48beeffa
+0,     205824,     205824,     1024,     4096, 0x453f004a
+0,     206848,     206848,     1024,     4096, 0xcfe6005d
+0,     207872,     207872,     1024,     4096, 0x6919f06c
+0,     208896,     208896,     1024,     4096, 0x6d4bf0f5
+0,     209920,     209920,     1024,     4096, 0x28ac01f8
+0,     210944,     210944,     1024,     4096, 0x53d1074b
+0,     211968,     211968,     1024,     4096, 0x1d860783
+0,     212992,     212992,     1024,     4096, 0x881ef279
+0,     214016,     214016,     1024,     4096, 0xd1d7f7c3
+0,     215040,     215040,     1024,     4096, 0x12030b53
+0,     216064,     216064,     1024,     4096, 0x459b0e46
+0,     217088,     217088,     1024,     4096, 0xf53cf2ca
+0,     218112,     218112,     1024,     4096, 0x8ad7fa2c
+0,     219136,     219136,     1024,     4096, 0x33cbf723
+0,     220160,     220160,      340,     1360, 0x3184633d
-- 
2.52.0

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

Reply via email to