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]
