[FFmpeg-devel] [PATCH] WIP: fix-heaac-probe (PR #20239)
ngaullier
code at ffmpeg.org
Thu Aug 14 15:33:30 EEST 2025
PR #20239 opened by ngaullier
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20239
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20239.patch
(Sent it yesterday on ML but forgot to rebase... Switch to forgejo now since it seems preferred).
History:
v4-forgejo: rebased
v4 (Michael): first patch splitted: now 3 patches, code is unchanged.
v3 (James): complete overhaul of the commit message of the first
patch, code is unchanged. Second patch is fully unchanged ("should be ok").
v2 (Baptiste): keep setting the profile in the parser even if it is not
always reliable, just allow it to be overriden by the decoder.
From e75fc89b2a69375ad8d47e384fdaa63dfb579e3e Mon Sep 17 00:00:00 2001
From: Nicolas Gaullier <nicolas.gaullier at cji.paris>
Date: Tue, 12 Aug 2025 12:09:02 +0200
Subject: [PATCH 1/3] avcodec/aac_ac3_parser: remove unused USAC/ADTS code
ff_adts_header_parse() parse the object_type from a 2 bits field.
See also 696ea1c2236842572df88d573e24a39be3f19c98.
Partially reverts 64bb91fd3b5a00a8849531c7e8dd207f2a626096.
Signed-off-by: Nicolas Gaullier <nicolas.gaullier at cji.paris>
---
libavcodec/aac_ac3_parser.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c
index e10ce13a3b..ced640dd28 100644
--- a/libavcodec/aac_ac3_parser.c
+++ b/libavcodec/aac_ac3_parser.c
@@ -155,7 +155,8 @@ get_next:
return i;
avctx->profile = hdr.object_type - 1;
- s1->key_frame = (avctx->profile == AV_PROFILE_AAC_USAC) ? get_bits1(&gb) : 1;
+ /* ADTS does not support USAC */
+ s1->key_frame = 1;
bit_rate = hdr.bit_rate;
#endif
}
--
2.49.1
From 49c89a1771634fd68d8530d62495f835c505a1f0 Mon Sep 17 00:00:00 2001
From: Nicolas Gaullier <nicolas.gaullier at cji.paris>
Date: Tue, 12 Aug 2025 12:13:21 +0200
Subject: [PATCH 2/3] avcodec/aac_ac3_parser: simplify
Use ff_adts_header_parse_buf() wrapper to simplify as GetBitContext is
no longer needed (it was introduced for USAC).
Partially reverts 64bb91fd3b5a00a8849531c7e8dd207f2a626096.
Signed-off-by: Nicolas Gaullier <nicolas.gaullier at cji.paris>
---
libavcodec/aac_ac3_parser.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c
index ced640dd28..b49ce0277c 100644
--- a/libavcodec/aac_ac3_parser.c
+++ b/libavcodec/aac_ac3_parser.c
@@ -147,11 +147,9 @@ get_next:
} else {
#if CONFIG_AAC_PARSER
AACADTSHeaderInfo hdr;
- GetBitContext gb;
- init_get_bits8(&gb, buf, buf_size);
if (buf_size < AV_AAC_ADTS_HEADER_SIZE ||
- ff_adts_header_parse(&gb, &hdr) < 0)
+ ff_adts_header_parse_buf(buf, &hdr) < 0)
return i;
avctx->profile = hdr.object_type - 1;
--
2.49.1
From b90a2c7e020c46d95045ed9d895b51de4213e458 Mon Sep 17 00:00:00 2001
From: Nicolas Gaullier <nicolas.gaullier at cji.paris>
Date: Mon, 7 Jul 2025 14:50:10 +0200
Subject: [PATCH 3/3] avcodec/aac_ac3_parser: do not override the profile set
by the decoder
Parsing the ADTS header is not enough to detect HE-AAC v1/v2.
Regression since 64bb91fd3b5a00a8849531c7e8dd207f2a626096.
Fixes #11600
Signed-off-by: Nicolas Gaullier <nicolas.gaullier at cji.paris>
---
libavcodec/aac_ac3_parser.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c
index b49ce0277c..51c801214c 100644
--- a/libavcodec/aac_ac3_parser.c
+++ b/libavcodec/aac_ac3_parser.c
@@ -152,7 +152,8 @@ get_next:
ff_adts_header_parse_buf(buf, &hdr) < 0)
return i;
- avctx->profile = hdr.object_type - 1;
+ if (avctx->profile == AV_PROFILE_UNKNOWN)
+ avctx->profile = hdr.object_type - 1;
/* ADTS does not support USAC */
s1->key_frame = 1;
bit_rate = hdr.bit_rate;
--
2.49.1
More information about the ffmpeg-devel
mailing list