From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 6664D4C891 for ; Sun, 26 Oct 2025 23:15:07 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'XsI0hZveaSmnQw4sVB9wtz0EAdKbTU9lDC2A62+o9XY=', expected b'XfHrg3O64sgze7mpdz+SwhMziZi2MGagrHzbBpolYUw=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1761520463; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=XsI0hZveaSmnQw4sVB9wtz0EAdKbTU9lDC2A62+o9XY=; b=tAyMgIenPlCPe1Z181OqJFcTkNL8HsoKBLwoP3MpnsIxMSIbR6MciNfu1XOf1km942tqx mC4WXzJmAI47XZJllAjIyXsd+FRg/O2rzhW7lJznJNgkKyukjwCqdwUZPiq03LWXRdrQNR7 MtnWGn9zHww486yKDu6De/ycR//v6rlXhfJ5eUQfCwyulnVEydLycqc+logz+XCR8iCQrb0 6IsmpNVNXry0xEbvbLEN1o4evzF1XII1ceCHJ0TzbEou+52ZmilII7V6Q6lTnEVBSXAPFPG kA+4ele8n9gWaHvepki0iTsFHfZ9kG2fzRHwBMo256YwYRYqixVDljjKM8XQ== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 5BFB068F686; Mon, 27 Oct 2025 01:14:23 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1761520440; b=YTCGnH8cEDSBghygjdzpDwwAU+jcnc59X9A2iCkvX+hBYm3eSa0h1RHsFYJ7ZGDMuWC05 1GV4JcMcEcs2GfWzWk+sTg3fZlgoor0gEZRsqlzkE05mKl0hFU+wR+m4DJWGCzsO1WO4M4X JrWtvP+TNrlosudZQ0ydlpxxSTWYuVjAJQcLDmjLtqQyfm0jMjZX5s3vL3dxi5EJV+wsZWR ifntEQLuyC36cOnQ+cbhrnG2haLh1fflZFdWEHwJyFOGIFZPbXKp291K/WNIVfO5hfrLuuB lRawTMEReEa1FwLTiUnP/uAeHcQ0vUruu1B14yTU+Qkoi9c1/0c5L85LQw5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1761520440; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=XiBPPQirIClHjogIJv1IojZSPBV4msY55CIXW8P++lk=; b=ijzczOG8GtdvZEqTzIFHQOQRgqs4MwzYmuuUiWqHN5YVs3nI+d+FMCNNRVBQRixcj5NhY 6s1f1xlYDnW8S+zJAYrBT4ITzVM6Q5llFIwAtbGBRPMxK6Duk1gl16LPwa6nbItENzGOvy9 mTY0T2bZpH85wUfyM4/U2f63Tx9yXTv3RtUDz7LtSUEDFmvZzJKT6M8FVhQRJEL06FsbNCz RUeEa5LOmEasdQIfr1p3wJxupt7oGtdg5cVvOJdBFQFAuYY/quTM9rC1Ocwv1Zg7drJM7sY bs74iiu7BnE0Z6XJArcZXlMvKZHM3/tJOnvz/O0UcJL+w8aVMZHmUcUtvSzA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1761520431; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=XfHrg3O64sgze7mpdz+SwhMziZi2MGagrHzbBpolYUw=; b=d89nIRHaatckWJoLUutHoytlwr98TInGud0V12WJh2+mlnT3x7ngoW3rknW2xVfIWXzKk pPiRVLrgJ5yPa70+lIjjUHhZYM+K5nzufECml15NMBS79Eco0t6FLX4TzTr0227doB07Zjr +1c41EkHkE1LhrYaBYN/gv14jNuTV8I6WHu34dhSpgDvJ0RCRoqCBCbzQ/UHPmy1yT0osmz TNOOPADhxI8VgT7kYBNCzw/49xfoTBe0d6WnnAE6jrvpesdU0LnDoo901hFNZCwota8HyTU dE0OkY/Q2rJjm6SRVHeQO4PH62ODbVldMdcW2Khj/sUpI3u2bb6bwxktXtzA== Received: from 02c22a36bd31 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 35A0F68E70B for ; Mon, 27 Oct 2025 01:13:51 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Oct 2025 23:13:50 -0000 Message-ID: <176152043141.81.5870383970856751696@7d278768979e> Message-ID-Hash: OHUUXK6WE7JYRB5OWG3BRDVNDZGGI2RY X-Message-ID-Hash: OHUUXK6WE7JYRB5OWG3BRDVNDZGGI2RY X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] Schedule semi-private AVCodecParser fields for removal from avcodec.h (PR #20757) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: mkver via ffmpeg-devel Cc: mkver Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20757 opened by mkver URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20757 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20757.patch >>From a6fe151ebef1150fe8145cae1281ba9960272002 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 26 Oct 2025 09:33:25 +0100 Subject: [PATCH 1/5] avcodec: Remove unnecessary parser.h inclusions It only contains declarations for some auxiliary functions for parsing that parsers that only work with complete packets don't need. Signed-off-by: Andreas Rheinhardt --- libavcodec/av1_parser.c | 2 +- libavcodec/cook_parser.c | 2 +- libavcodec/dvaudio_parser.c | 2 +- libavcodec/dvd_nav_parser.c | 4 ++-- libavcodec/vp3_parser.c | 2 +- libavcodec/vp9_parser.c | 5 ++--- libavcodec/xma_parser.c | 2 +- 7 files changed, 9 insertions(+), 10 deletions(-) diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c index ed6e1b61ad..0a07a9647e 100644 --- a/libavcodec/av1_parser.c +++ b/libavcodec/av1_parser.c @@ -24,9 +24,9 @@ #include "libavutil/avassert.h" #include "av1_parse.h" +#include "avcodec.h" #include "cbs.h" #include "cbs_av1.h" -#include "parser.h" typedef struct AV1ParseContext { CodedBitstreamContext *cbc; diff --git a/libavcodec/cook_parser.c b/libavcodec/cook_parser.c index 0d9473845e..404f611cf4 100644 --- a/libavcodec/cook_parser.c +++ b/libavcodec/cook_parser.c @@ -28,7 +28,7 @@ #include #include "libavutil/intreadwrite.h" -#include "parser.h" +#include "avcodec.h" typedef struct CookParseContext { int duration; diff --git a/libavcodec/dvaudio_parser.c b/libavcodec/dvaudio_parser.c index ef6bd45582..e99ffc0517 100644 --- a/libavcodec/dvaudio_parser.c +++ b/libavcodec/dvaudio_parser.c @@ -23,7 +23,7 @@ * Determines the duration for each packet. */ -#include "parser.h" +#include "avcodec.h" #include "dvaudio.h" static int dvaudio_parse(AVCodecParserContext *s1, AVCodecContext *avctx, diff --git a/libavcodec/dvd_nav_parser.c b/libavcodec/dvd_nav_parser.c index 3ea4cd1ef5..3005a10572 100644 --- a/libavcodec/dvd_nav_parser.c +++ b/libavcodec/dvd_nav_parser.c @@ -18,9 +18,9 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + #include "avcodec.h" -#include "get_bits.h" -#include "parser.h" +#include "libavutil/intreadwrite.h" #define PCI_SIZE 980 #define DSI_SIZE 1018 diff --git a/libavcodec/vp3_parser.c b/libavcodec/vp3_parser.c index 1bed43e779..e8bfebdc39 100644 --- a/libavcodec/vp3_parser.c +++ b/libavcodec/vp3_parser.c @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "parser.h" +#include "avcodec.h" static int parse(AVCodecParserContext *s, AVCodecContext *avctx, diff --git a/libavcodec/vp9_parser.c b/libavcodec/vp9_parser.c index ffcb93505f..72df554da5 100644 --- a/libavcodec/vp9_parser.c +++ b/libavcodec/vp9_parser.c @@ -21,9 +21,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavutil/intreadwrite.h" -#include "libavcodec/get_bits.h" -#include "parser.h" +#include "avcodec.h" +#include "get_bits.h" static int parse(AVCodecParserContext *ctx, AVCodecContext *avctx, diff --git a/libavcodec/xma_parser.c b/libavcodec/xma_parser.c index dc8a197c67..26db266a3e 100644 --- a/libavcodec/xma_parser.c +++ b/libavcodec/xma_parser.c @@ -21,7 +21,7 @@ * XMA2 audio parser */ -#include "parser.h" +#include "avcodec.h" typedef struct XMAParserContext{ int skip_packets; -- 2.49.1 >>From 0e799d3f7685f2a12239a27c16c04f6f151dd023 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 26 Oct 2025 13:16:27 +0100 Subject: [PATCH 2/5] avcodec/parsers: Add macro to set list of codec ids The current code relies on AV_CODEC_ID_NONE being zero, so that unused codec ids are set to their proper value. This commit adds a macro to set unset ids to AV_CODEC_ID_NONE. (The actual rationale for this macro is to simplify the transition to making the private fields that are currently public in avcodec.h really private.) Signed-off-by: Andreas Rheinhardt --- libavcodec/aac_parser.c | 3 ++- libavcodec/ac3_parser.c | 3 ++- libavcodec/adx_parser.c | 4 ++-- libavcodec/ahx_parser.c | 3 ++- libavcodec/amr_parser.c | 3 ++- libavcodec/apv_parser.c | 3 ++- libavcodec/av1_parser.c | 3 ++- libavcodec/avs2_parser.c | 3 ++- libavcodec/avs3_parser.c | 3 ++- libavcodec/bmp_parser.c | 3 ++- libavcodec/cavs_parser.c | 3 ++- libavcodec/cook_parser.c | 3 ++- libavcodec/cri_parser.c | 3 ++- libavcodec/dca_parser.c | 3 ++- libavcodec/dirac_parser.c | 3 ++- libavcodec/dnxhd_parser.c | 3 ++- libavcodec/dnxuc_parser.c | 3 ++- libavcodec/dolby_e_parser.c | 3 ++- libavcodec/dpx_parser.c | 3 ++- libavcodec/dvaudio_parser.c | 3 ++- libavcodec/dvbsub_parser.c | 3 ++- libavcodec/dvd_nav_parser.c | 3 ++- libavcodec/dvdsub_parser.c | 3 ++- libavcodec/evc_parser.c | 3 ++- libavcodec/ffv1_parser.c | 3 ++- libavcodec/flac_parser.c | 3 ++- libavcodec/ftr_parser.c | 3 ++- libavcodec/g723_1_parser.c | 3 ++- libavcodec/g729_parser.c | 3 ++- libavcodec/gif_parser.c | 3 ++- libavcodec/gsm_parser.c | 3 ++- libavcodec/h261_parser.c | 3 ++- libavcodec/h263_parser.c | 3 ++- libavcodec/h264_parser.c | 3 ++- libavcodec/hdr_parser.c | 3 ++- libavcodec/hevc/parser.c | 3 ++- libavcodec/ipu_parser.c | 3 ++- libavcodec/jpeg2000_parser.c | 3 ++- libavcodec/jpegxl_parser.c | 3 ++- libavcodec/latm_parser.c | 3 ++- libavcodec/misc4_parser.c | 3 ++- libavcodec/mjpeg_parser.c | 3 ++- libavcodec/mlp_parser.c | 3 ++- libavcodec/mpeg4video_parser.c | 3 ++- libavcodec/mpegaudio_parser.c | 4 +++- libavcodec/mpegvideo_parser.c | 3 ++- libavcodec/opus/parser.c | 3 ++- libavcodec/parser_internal.h | 38 ++++++++++++++++++++++++++++++++++ libavcodec/png_parser.c | 3 ++- libavcodec/pnm_parser.c | 7 ++++--- libavcodec/prores_parser.c | 3 ++- libavcodec/prores_raw_parser.c | 3 ++- libavcodec/qoi_parser.c | 3 ++- libavcodec/rv34_parser.c | 3 ++- libavcodec/sbc_parser.c | 3 ++- libavcodec/sipr_parser.c | 3 ++- libavcodec/tak_parser.c | 3 ++- libavcodec/vc1_parser.c | 3 ++- libavcodec/vorbis_parser.c | 3 ++- libavcodec/vp3_parser.c | 7 +++---- libavcodec/vp8_parser.c | 3 ++- libavcodec/vp9_parser.c | 3 ++- libavcodec/vvc_parser.c | 3 ++- libavcodec/webp_parser.c | 3 ++- libavcodec/xbm_parser.c | 3 ++- libavcodec/xma_parser.c | 3 ++- libavcodec/xwd_parser.c | 3 ++- 67 files changed, 174 insertions(+), 72 deletions(-) create mode 100644 libavcodec/parser_internal.h diff --git a/libavcodec/aac_parser.c b/libavcodec/aac_parser.c index 186fcd887a..ce7d2f58e0 100644 --- a/libavcodec/aac_parser.c +++ b/libavcodec/aac_parser.c @@ -24,6 +24,7 @@ #include "aac_ac3_parser.h" #include "adts_header.h" #include "adts_parser.h" +#include "parser_internal.h" #include "libavutil/intreadwrite.h" static int aac_sync(uint64_t state, int *need_next_header, int *new_frame_start) @@ -52,7 +53,7 @@ static av_cold int aac_parse_init(AVCodecParserContext *s1) const AVCodecParser ff_aac_parser = { - .codec_ids = { AV_CODEC_ID_AAC }, + PARSER_CODEC_LIST(AV_CODEC_ID_AAC), .priv_data_size = sizeof(AACAC3ParseContext), .parser_init = aac_parse_init, .parser_parse = ff_aac_ac3_parse, diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index a8bc3afc74..fe7f0fee61 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -31,6 +31,7 @@ #include "ac3_parser_internal.h" #include "aac_ac3_parser.h" #include "get_bits.h" +#include "parser_internal.h" #define AC3_HEADER_SIZE 7 @@ -478,7 +479,7 @@ static av_cold int ac3_parse_init(AVCodecParserContext *s1) const AVCodecParser ff_ac3_parser = { - .codec_ids = { AV_CODEC_ID_AC3, AV_CODEC_ID_EAC3 }, + PARSER_CODEC_LIST(AV_CODEC_ID_AC3, AV_CODEC_ID_EAC3), .priv_data_size = sizeof(AACAC3ParseContext), .parser_init = ac3_parse_init, .parser_parse = ff_aac_ac3_parse, diff --git a/libavcodec/adx_parser.c b/libavcodec/adx_parser.c index 62b4415bc1..e11cc4a3bf 100644 --- a/libavcodec/adx_parser.c +++ b/libavcodec/adx_parser.c @@ -25,9 +25,9 @@ * Splits packets into individual blocks. */ -#include "libavutil/intreadwrite.h" #include "parser.h" #include "adx.h" +#include "parser_internal.h" typedef struct ADXParseContext { ParseContext pc; @@ -99,7 +99,7 @@ static int adx_parse(AVCodecParserContext *s1, } const AVCodecParser ff_adx_parser = { - .codec_ids = { AV_CODEC_ID_ADPCM_ADX }, + PARSER_CODEC_LIST(AV_CODEC_ID_ADPCM_ADX), .priv_data_size = sizeof(ADXParseContext), .parser_parse = adx_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/ahx_parser.c b/libavcodec/ahx_parser.c index 4be037f666..07eaf697b3 100644 --- a/libavcodec/ahx_parser.c +++ b/libavcodec/ahx_parser.c @@ -25,6 +25,7 @@ #include "libavutil/intreadwrite.h" #include "parser.h" +#include "parser_internal.h" typedef struct AHXParseContext { ParseContext pc; @@ -71,7 +72,7 @@ static int ahx_parse(AVCodecParserContext *s1, } const AVCodecParser ff_ahx_parser = { - .codec_ids = { AV_CODEC_ID_AHX }, + PARSER_CODEC_LIST(AV_CODEC_ID_AHX), .priv_data_size = sizeof(AHXParseContext), .parser_parse = ahx_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/amr_parser.c b/libavcodec/amr_parser.c index 9484d720ee..ce1cd1be35 100644 --- a/libavcodec/amr_parser.c +++ b/libavcodec/amr_parser.c @@ -28,6 +28,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "parser.h" +#include "parser_internal.h" static const uint8_t amrnb_packed_size[16] = { 13, 14, 16, 18, 20, 21, 27, 32, 6, 1, 1, 1, 1, 1, 1, 1 @@ -123,7 +124,7 @@ static int amr_parse(AVCodecParserContext *s1, } const AVCodecParser ff_amr_parser = { - .codec_ids = { AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB }, + PARSER_CODEC_LIST(AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB), .priv_data_size = sizeof(AMRParseContext), .parser_init = amr_parse_init, .parser_parse = amr_parse, diff --git a/libavcodec/apv_parser.c b/libavcodec/apv_parser.c index fdd575339b..ffcaabf2f0 100644 --- a/libavcodec/apv_parser.c +++ b/libavcodec/apv_parser.c @@ -23,6 +23,7 @@ #include "apv.h" #include "cbs.h" #include "cbs_apv.h" +#include "parser_internal.h" typedef struct APVParseContext { CodedBitstreamContext *cbc; @@ -141,7 +142,7 @@ static av_cold void close(AVCodecParserContext *s) } const AVCodecParser ff_apv_parser = { - .codec_ids = { AV_CODEC_ID_APV }, + PARSER_CODEC_LIST(AV_CODEC_ID_APV), .priv_data_size = sizeof(APVParseContext), .parser_init = init, .parser_parse = parse, diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c index 0a07a9647e..ba321d3ba5 100644 --- a/libavcodec/av1_parser.c +++ b/libavcodec/av1_parser.c @@ -27,6 +27,7 @@ #include "avcodec.h" #include "cbs.h" #include "cbs_av1.h" +#include "parser_internal.h" typedef struct AV1ParseContext { CodedBitstreamContext *cbc; @@ -210,7 +211,7 @@ static av_cold void av1_parser_close(AVCodecParserContext *ctx) } const AVCodecParser ff_av1_parser = { - .codec_ids = { AV_CODEC_ID_AV1 }, + PARSER_CODEC_LIST(AV_CODEC_ID_AV1), .priv_data_size = sizeof(AV1ParseContext), .parser_init = av1_parser_init, .parser_close = av1_parser_close, diff --git a/libavcodec/avs2_parser.c b/libavcodec/avs2_parser.c index 0d68ab1d00..b20181213b 100644 --- a/libavcodec/avs2_parser.c +++ b/libavcodec/avs2_parser.c @@ -23,6 +23,7 @@ #include "avs2.h" #include "get_bits.h" #include "parser.h" +#include "parser_internal.h" static int avs2_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size) { @@ -190,7 +191,7 @@ static int avs2_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_avs2_parser = { - .codec_ids = { AV_CODEC_ID_AVS2 }, + PARSER_CODEC_LIST(AV_CODEC_ID_AVS2), .priv_data_size = sizeof(ParseContext), .parser_parse = avs2_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/avs3_parser.c b/libavcodec/avs3_parser.c index 71278c7e2d..4fa1c983c5 100644 --- a/libavcodec/avs3_parser.c +++ b/libavcodec/avs3_parser.c @@ -24,6 +24,7 @@ #include "avs3.h" #include "get_bits.h" #include "parser.h" +#include "parser_internal.h" static int avs3_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size) { @@ -173,7 +174,7 @@ static int avs3_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_avs3_parser = { - .codec_ids = { AV_CODEC_ID_AVS3 }, + PARSER_CODEC_LIST(AV_CODEC_ID_AVS3), .priv_data_size = sizeof(ParseContext), .parser_parse = avs3_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/bmp_parser.c b/libavcodec/bmp_parser.c index 3440794b2c..84cdc9e873 100644 --- a/libavcodec/bmp_parser.c +++ b/libavcodec/bmp_parser.c @@ -28,6 +28,7 @@ #include "libavutil/common.h" #include "parser.h" +#include "parser_internal.h" typedef struct BMPParseContext { ParseContext pc; @@ -106,7 +107,7 @@ flush: } const AVCodecParser ff_bmp_parser = { - .codec_ids = { AV_CODEC_ID_BMP }, + PARSER_CODEC_LIST(AV_CODEC_ID_BMP), .priv_data_size = sizeof(BMPParseContext), .parser_parse = bmp_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/cavs_parser.c b/libavcodec/cavs_parser.c index 4a03effd0f..b71f226c75 100644 --- a/libavcodec/cavs_parser.c +++ b/libavcodec/cavs_parser.c @@ -27,6 +27,7 @@ #include "parser.h" #include "cavs.h" +#include "parser_internal.h" /** @@ -97,7 +98,7 @@ static int cavsvideo_parse(AVCodecParserContext *s, } const AVCodecParser ff_cavsvideo_parser = { - .codec_ids = { AV_CODEC_ID_CAVS }, + PARSER_CODEC_LIST(AV_CODEC_ID_CAVS), .priv_data_size = sizeof(ParseContext), .parser_parse = cavsvideo_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/cook_parser.c b/libavcodec/cook_parser.c index 404f611cf4..f9e3a9db15 100644 --- a/libavcodec/cook_parser.c +++ b/libavcodec/cook_parser.c @@ -29,6 +29,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" +#include "parser_internal.h" typedef struct CookParseContext { int duration; @@ -54,7 +55,7 @@ static int cook_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_cook_parser = { - .codec_ids = { AV_CODEC_ID_COOK }, + PARSER_CODEC_LIST(AV_CODEC_ID_COOK), .priv_data_size = sizeof(CookParseContext), .parser_parse = cook_parse, }; diff --git a/libavcodec/cri_parser.c b/libavcodec/cri_parser.c index 9295f823ce..356f35a00c 100644 --- a/libavcodec/cri_parser.c +++ b/libavcodec/cri_parser.c @@ -28,6 +28,7 @@ #include "libavutil/common.h" #include "parser.h" +#include "parser_internal.h" typedef struct CRIParser { ParseContext pc; @@ -98,7 +99,7 @@ static int cri_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_cri_parser = { - .codec_ids = { AV_CODEC_ID_CRI }, + PARSER_CODEC_LIST(AV_CODEC_ID_CRI), .priv_data_size = sizeof(CRIParser), .parser_parse = cri_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c index eb0ef55d46..b9e9191cbc 100644 --- a/libavcodec/dca_parser.c +++ b/libavcodec/dca_parser.c @@ -29,6 +29,7 @@ #include "dca_syncwords.h" #include "get_bits.h" #include "parser.h" +#include "parser_internal.h" typedef struct DCAParseContext { ParseContext pc; @@ -344,7 +345,7 @@ static int dca_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_dca_parser = { - .codec_ids = { AV_CODEC_ID_DTS }, + PARSER_CODEC_LIST(AV_CODEC_ID_DTS), .priv_data_size = sizeof(DCAParseContext), .parser_init = dca_parse_init, .parser_parse = dca_parse, diff --git a/libavcodec/dirac_parser.c b/libavcodec/dirac_parser.c index 61f8067001..96ab6c7780 100644 --- a/libavcodec/dirac_parser.c +++ b/libavcodec/dirac_parser.c @@ -34,6 +34,7 @@ #include "libavutil/mem.h" #include "avcodec.h" +#include "parser_internal.h" #define DIRAC_PARSE_INFO_PREFIX 0x42424344 @@ -275,7 +276,7 @@ static av_cold void dirac_parse_close(AVCodecParserContext *s) } const AVCodecParser ff_dirac_parser = { - .codec_ids = { AV_CODEC_ID_DIRAC }, + PARSER_CODEC_LIST(AV_CODEC_ID_DIRAC), .priv_data_size = sizeof(DiracParseContext), .parser_parse = dirac_parse, .parser_close = dirac_parse_close, diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c index 631ac83860..09d8dce1e5 100644 --- a/libavcodec/dnxhd_parser.c +++ b/libavcodec/dnxhd_parser.c @@ -26,6 +26,7 @@ #include "parser.h" #include "dnxhddata.h" +#include "parser_internal.h" typedef struct { ParseContext pc; @@ -139,7 +140,7 @@ static int dnxhd_parse(AVCodecParserContext *s, } const AVCodecParser ff_dnxhd_parser = { - .codec_ids = { AV_CODEC_ID_DNXHD }, + PARSER_CODEC_LIST(AV_CODEC_ID_DNXHD), .priv_data_size = sizeof(DNXHDParserContext), .parser_parse = dnxhd_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/dnxuc_parser.c b/libavcodec/dnxuc_parser.c index 34088ac3b1..bfed6b5b6f 100644 --- a/libavcodec/dnxuc_parser.c +++ b/libavcodec/dnxuc_parser.c @@ -25,6 +25,7 @@ */ #include "parser.h" +#include "parser_internal.h" #include "libavutil/bswap.h" typedef struct DNxUcParseContext { @@ -82,7 +83,7 @@ static int dnxuc_parse(AVCodecParserContext *s, } const AVCodecParser ff_dnxuc_parser = { - .codec_ids = { AV_CODEC_ID_DNXUC }, + PARSER_CODEC_LIST(AV_CODEC_ID_DNXUC), .priv_data_size = sizeof(DNxUcParseContext), .parser_parse = dnxuc_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/dolby_e_parser.c b/libavcodec/dolby_e_parser.c index d2566e5446..53bf44d86e 100644 --- a/libavcodec/dolby_e_parser.c +++ b/libavcodec/dolby_e_parser.c @@ -21,6 +21,7 @@ #include "libavutil/channel_layout.h" #include "avcodec.h" #include "dolby_e.h" +#include "parser_internal.h" typedef struct DBEParseContext { DBEContext dectx; @@ -66,7 +67,7 @@ end: } const AVCodecParser ff_dolby_e_parser = { - .codec_ids = { AV_CODEC_ID_DOLBY_E }, + PARSER_CODEC_LIST(AV_CODEC_ID_DOLBY_E), .priv_data_size = sizeof(DBEParseContext), .parser_parse = dolby_e_parse, }; diff --git a/libavcodec/dpx_parser.c b/libavcodec/dpx_parser.c index b74e6c5c68..9ca17bd94d 100644 --- a/libavcodec/dpx_parser.c +++ b/libavcodec/dpx_parser.c @@ -28,6 +28,7 @@ #include "libavutil/common.h" #include "parser.h" +#include "parser_internal.h" typedef struct DPXParseContext { ParseContext pc; @@ -109,7 +110,7 @@ flush: } const AVCodecParser ff_dpx_parser = { - .codec_ids = { AV_CODEC_ID_DPX }, + PARSER_CODEC_LIST(AV_CODEC_ID_DPX), .priv_data_size = sizeof(DPXParseContext), .parser_parse = dpx_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/dvaudio_parser.c b/libavcodec/dvaudio_parser.c index e99ffc0517..1b4253aa83 100644 --- a/libavcodec/dvaudio_parser.c +++ b/libavcodec/dvaudio_parser.c @@ -25,6 +25,7 @@ #include "avcodec.h" #include "dvaudio.h" +#include "parser_internal.h" static int dvaudio_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, @@ -41,6 +42,6 @@ static int dvaudio_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_dvaudio_parser = { - .codec_ids = { AV_CODEC_ID_DVAUDIO }, + PARSER_CODEC_LIST(AV_CODEC_ID_DVAUDIO), .parser_parse = dvaudio_parse, }; diff --git a/libavcodec/dvbsub_parser.c b/libavcodec/dvbsub_parser.c index b2d5446867..68c2b77b39 100644 --- a/libavcodec/dvbsub_parser.c +++ b/libavcodec/dvbsub_parser.c @@ -25,6 +25,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" +#include "parser_internal.h" /* Parser (mostly) copied from dvdsub.c */ @@ -164,7 +165,7 @@ static int dvbsub_parse(AVCodecParserContext *s, } const AVCodecParser ff_dvbsub_parser = { - .codec_ids = { AV_CODEC_ID_DVB_SUBTITLE }, + PARSER_CODEC_LIST(AV_CODEC_ID_DVB_SUBTITLE), .priv_data_size = sizeof(DVBSubParseContext), .parser_parse = dvbsub_parse, }; diff --git a/libavcodec/dvd_nav_parser.c b/libavcodec/dvd_nav_parser.c index 3005a10572..bb8c284ad5 100644 --- a/libavcodec/dvd_nav_parser.c +++ b/libavcodec/dvd_nav_parser.c @@ -20,6 +20,7 @@ */ #include "avcodec.h" +#include "parser_internal.h" #include "libavutil/intreadwrite.h" #define PCI_SIZE 980 @@ -108,7 +109,7 @@ static int dvd_nav_parse(AVCodecParserContext *s, } const AVCodecParser ff_dvd_nav_parser = { - .codec_ids = { AV_CODEC_ID_DVD_NAV }, + PARSER_CODEC_LIST(AV_CODEC_ID_DVD_NAV), .priv_data_size = sizeof(DVDNavParseContext), .parser_init = dvd_nav_parse_init, .parser_parse = dvd_nav_parse, diff --git a/libavcodec/dvdsub_parser.c b/libavcodec/dvdsub_parser.c index 8871b6a383..fd5baf719f 100644 --- a/libavcodec/dvdsub_parser.c +++ b/libavcodec/dvdsub_parser.c @@ -24,6 +24,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/mem.h" #include "avcodec.h" +#include "parser_internal.h" /* parser definition */ typedef struct DVDSubParseContext { @@ -85,7 +86,7 @@ static av_cold void dvdsub_parse_close(AVCodecParserContext *s) } const AVCodecParser ff_dvdsub_parser = { - .codec_ids = { AV_CODEC_ID_DVD_SUBTITLE }, + PARSER_CODEC_LIST(AV_CODEC_ID_DVD_SUBTITLE), .priv_data_size = sizeof(DVDSubParseContext), .parser_parse = dvdsub_parse, .parser_close = dvdsub_parse_close, diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c index ea6675693e..5cd9b5544c 100644 --- a/libavcodec/evc_parser.c +++ b/libavcodec/evc_parser.c @@ -24,6 +24,7 @@ #include "bytestream.h" #include "evc.h" #include "evc_parse.h" +#include "parser_internal.h" #include "libavutil/attributes.h" @@ -372,7 +373,7 @@ static av_cold void evc_parser_close(AVCodecParserContext *s) } const AVCodecParser ff_evc_parser = { - .codec_ids = { AV_CODEC_ID_EVC }, + PARSER_CODEC_LIST(AV_CODEC_ID_EVC), .priv_data_size = sizeof(EVCParserContext), .parser_parse = evc_parse, .parser_close = evc_parser_close, diff --git a/libavcodec/ffv1_parser.c b/libavcodec/ffv1_parser.c index e54854d84f..5f17d6a75b 100644 --- a/libavcodec/ffv1_parser.c +++ b/libavcodec/ffv1_parser.c @@ -18,6 +18,7 @@ #include "avcodec.h" #include "ffv1.h" +#include "parser_internal.h" #include "rangecoder.h" #include "libavutil/attributes.h" @@ -81,7 +82,7 @@ static av_cold void ffv1_close(AVCodecParserContext *s) } const AVCodecParser ff_ffv1_parser = { - .codec_ids = { AV_CODEC_ID_FFV1 }, + PARSER_CODEC_LIST(AV_CODEC_ID_FFV1), .priv_data_size = sizeof(FFV1ParseContext), .parser_parse = parse, .parser_close = ffv1_close, diff --git a/libavcodec/flac_parser.c b/libavcodec/flac_parser.c index c310832617..ed0f4bc336 100644 --- a/libavcodec/flac_parser.c +++ b/libavcodec/flac_parser.c @@ -36,6 +36,7 @@ #include "libavutil/crc.h" #include "libavutil/mem.h" #include "flac_parse.h" +#include "parser_internal.h" /** maximum number of adjacent headers that compare CRCs against each other */ #define FLAC_MAX_SEQUENTIAL_HEADERS 4 @@ -903,7 +904,7 @@ static av_cold void flac_parse_close(AVCodecParserContext *c) } const AVCodecParser ff_flac_parser = { - .codec_ids = { AV_CODEC_ID_FLAC }, + PARSER_CODEC_LIST(AV_CODEC_ID_FLAC), .priv_data_size = sizeof(FLACParseContext), .parser_init = flac_parse_init, .parser_parse = flac_parse, diff --git a/libavcodec/ftr_parser.c b/libavcodec/ftr_parser.c index 656fd289f6..422b775d7c 100644 --- a/libavcodec/ftr_parser.c +++ b/libavcodec/ftr_parser.c @@ -28,6 +28,7 @@ #include "adts_header.h" #include "adts_parser.h" #include "mpeg4audio.h" +#include "parser_internal.h" typedef struct FTRParseContext { ParseContext pc; @@ -97,7 +98,7 @@ static int ftr_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_ftr_parser = { - .codec_ids = { AV_CODEC_ID_FTR }, + PARSER_CODEC_LIST(AV_CODEC_ID_FTR), .priv_data_size = sizeof(FTRParseContext), .parser_parse = ftr_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/g723_1_parser.c b/libavcodec/g723_1_parser.c index 2ed1a8ab19..0deec9fdf8 100644 --- a/libavcodec/g723_1_parser.c +++ b/libavcodec/g723_1_parser.c @@ -23,6 +23,7 @@ #include "parser.h" #include "g723_1.h" +#include "parser_internal.h" typedef struct G723_1ParseContext { ParseContext pc; @@ -53,7 +54,7 @@ static int g723_1_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_g723_1_parser = { - .codec_ids = { AV_CODEC_ID_G723_1 }, + PARSER_CODEC_LIST(AV_CODEC_ID_G723_1), .priv_data_size = sizeof(G723_1ParseContext), .parser_parse = g723_1_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/g729_parser.c b/libavcodec/g729_parser.c index d51a78877d..c107436a42 100644 --- a/libavcodec/g729_parser.c +++ b/libavcodec/g729_parser.c @@ -27,6 +27,7 @@ #include "parser.h" #include "g729.h" +#include "parser_internal.h" typedef struct G729ParseContext { ParseContext pc; @@ -85,7 +86,7 @@ static int g729_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_g729_parser = { - .codec_ids = { AV_CODEC_ID_G729, AV_CODEC_ID_ACELP_KELVIN }, + PARSER_CODEC_LIST(AV_CODEC_ID_G729, AV_CODEC_ID_ACELP_KELVIN), .priv_data_size = sizeof(G729ParseContext), .parser_parse = g729_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/gif_parser.c b/libavcodec/gif_parser.c index f5903585fa..ceb03b0aab 100644 --- a/libavcodec/gif_parser.c +++ b/libavcodec/gif_parser.c @@ -26,6 +26,7 @@ #include "gif.h" #include "parser.h" +#include "parser_internal.h" typedef enum GIFParseStates { GIF_HEADER = 1, @@ -201,7 +202,7 @@ static int gif_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_gif_parser = { - .codec_ids = { AV_CODEC_ID_GIF }, + PARSER_CODEC_LIST(AV_CODEC_ID_GIF), .priv_data_size = sizeof(GIFParseContext), .parser_parse = gif_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/gsm_parser.c b/libavcodec/gsm_parser.c index 3492806052..0162bdcc13 100644 --- a/libavcodec/gsm_parser.c +++ b/libavcodec/gsm_parser.c @@ -28,6 +28,7 @@ #include "libavutil/avassert.h" #include "parser.h" #include "gsm.h" +#include "parser_internal.h" typedef struct GSMParseContext { ParseContext pc; @@ -84,7 +85,7 @@ static int gsm_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_gsm_parser = { - .codec_ids = { AV_CODEC_ID_GSM, AV_CODEC_ID_GSM_MS }, + PARSER_CODEC_LIST(AV_CODEC_ID_GSM, AV_CODEC_ID_GSM_MS), .priv_data_size = sizeof(GSMParseContext), .parser_parse = gsm_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/h261_parser.c b/libavcodec/h261_parser.c index e0b84c509e..7bd912f8bf 100644 --- a/libavcodec/h261_parser.c +++ b/libavcodec/h261_parser.c @@ -26,6 +26,7 @@ */ #include "parser.h" +#include "parser_internal.h" static int h261_find_frame_end(ParseContext *pc, AVCodecContext *avctx, const uint8_t *buf, int buf_size) @@ -87,7 +88,7 @@ static int h261_parse(AVCodecParserContext *s, } const AVCodecParser ff_h261_parser = { - .codec_ids = { AV_CODEC_ID_H261 }, + PARSER_CODEC_LIST(AV_CODEC_ID_H261), .priv_data_size = sizeof(ParseContext), .parser_parse = h261_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/h263_parser.c b/libavcodec/h263_parser.c index f70a791177..2df6182d78 100644 --- a/libavcodec/h263_parser.c +++ b/libavcodec/h263_parser.c @@ -25,6 +25,7 @@ */ #include "parser.h" +#include "parser_internal.h" static int h263_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size) { @@ -88,7 +89,7 @@ static int h263_parse(AVCodecParserContext *s, } const AVCodecParser ff_h263_parser = { - .codec_ids = { AV_CODEC_ID_H263 }, + PARSER_CODEC_LIST(AV_CODEC_ID_H263), .priv_data_size = sizeof(ParseContext), .parser_parse = h263_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index 722cbcb42f..9d3158d183 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -49,6 +49,7 @@ #include "mpegutils.h" #include "parser.h" #include "libavutil/refstruct.h" +#include "parser_internal.h" #include "startcode.h" typedef struct H264ParseContext { @@ -683,7 +684,7 @@ static av_cold int init(AVCodecParserContext *s) } const AVCodecParser ff_h264_parser = { - .codec_ids = { AV_CODEC_ID_H264 }, + PARSER_CODEC_LIST(AV_CODEC_ID_H264), .priv_data_size = sizeof(H264ParseContext), .parser_init = init, .parser_parse = h264_parse, diff --git a/libavcodec/hdr_parser.c b/libavcodec/hdr_parser.c index 915fd38225..af8ffd06ca 100644 --- a/libavcodec/hdr_parser.c +++ b/libavcodec/hdr_parser.c @@ -26,6 +26,7 @@ #include "libavutil/intreadwrite.h" #include "parser.h" +#include "parser_internal.h" typedef struct HDRParseContext { ParseContext pc; @@ -72,7 +73,7 @@ static int hdr_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_hdr_parser = { - .codec_ids = { AV_CODEC_ID_RADIANCE_HDR }, + PARSER_CODEC_LIST(AV_CODEC_ID_RADIANCE_HDR), .priv_data_size = sizeof(HDRParseContext), .parser_parse = hdr_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/hevc/parser.c b/libavcodec/hevc/parser.c index 16b40e2b10..1a6b7987a3 100644 --- a/libavcodec/hevc/parser.c +++ b/libavcodec/hevc/parser.c @@ -25,6 +25,7 @@ #include "golomb.h" #include "hevc.h" +#include "parser_internal.h" #include "parse.h" #include "ps.h" #include "sei.h" @@ -353,7 +354,7 @@ static void hevc_parser_close(AVCodecParserContext *s) } const AVCodecParser ff_hevc_parser = { - .codec_ids = { AV_CODEC_ID_HEVC }, + PARSER_CODEC_LIST(AV_CODEC_ID_HEVC), .priv_data_size = sizeof(HEVCParserContext), .parser_parse = hevc_parse, .parser_close = hevc_parser_close, diff --git a/libavcodec/ipu_parser.c b/libavcodec/ipu_parser.c index 1193a65b1b..d278e8b449 100644 --- a/libavcodec/ipu_parser.c +++ b/libavcodec/ipu_parser.c @@ -25,6 +25,7 @@ */ #include "parser.h" +#include "parser_internal.h" typedef struct IPUParseContext { ParseContext pc; @@ -70,7 +71,7 @@ static int ipu_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_ipu_parser = { - .codec_ids = { AV_CODEC_ID_IPU }, + PARSER_CODEC_LIST(AV_CODEC_ID_IPU), .priv_data_size = sizeof(IPUParseContext), .parser_parse = ipu_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/jpeg2000_parser.c b/libavcodec/jpeg2000_parser.c index e96efc28ed..2ef29582a7 100644 --- a/libavcodec/jpeg2000_parser.c +++ b/libavcodec/jpeg2000_parser.c @@ -25,6 +25,7 @@ */ #include "parser.h" +#include "parser_internal.h" /* Whether frame is jp2 file or codestream */ @@ -212,7 +213,7 @@ static int jpeg2000_parse(AVCodecParserContext *s, } const AVCodecParser ff_jpeg2000_parser = { - .codec_ids = { AV_CODEC_ID_JPEG2000 }, + PARSER_CODEC_LIST(AV_CODEC_ID_JPEG2000), .priv_data_size = sizeof(JPEG2000ParserContext), .parser_parse = jpeg2000_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/jpegxl_parser.c b/libavcodec/jpegxl_parser.c index 3981b0cec0..ca00a86a0b 100644 --- a/libavcodec/jpegxl_parser.c +++ b/libavcodec/jpegxl_parser.c @@ -32,6 +32,7 @@ #include "bytestream.h" #include "codec_id.h" +#include "parser_internal.h" #define UNCHECKED_BITSTREAM_READER 0 #define BITSTREAM_READER_LE #include "get_bits.h" @@ -1546,7 +1547,7 @@ flush: } const AVCodecParser ff_jpegxl_parser = { - .codec_ids = { AV_CODEC_ID_JPEGXL, AV_CODEC_ID_JPEGXL_ANIM }, + PARSER_CODEC_LIST(AV_CODEC_ID_JPEGXL, AV_CODEC_ID_JPEGXL_ANIM), .priv_data_size = sizeof(JXLParseContext), .parser_parse = jpegxl_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/latm_parser.c b/libavcodec/latm_parser.c index 8cc2024c4f..b06103aef8 100644 --- a/libavcodec/latm_parser.c +++ b/libavcodec/latm_parser.c @@ -25,6 +25,7 @@ #include #include "parser.h" +#include "parser_internal.h" #define LATM_HEADER 0x56e000 // 0x2b7 (11 bits) #define LATM_MASK 0xFFE000 // top 11 bits @@ -105,7 +106,7 @@ static int latm_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_aac_latm_parser = { - .codec_ids = { AV_CODEC_ID_AAC_LATM }, + PARSER_CODEC_LIST(AV_CODEC_ID_AAC_LATM), .priv_data_size = sizeof(LATMParseContext), .parser_parse = latm_parse, .parser_close = ff_parse_close diff --git a/libavcodec/misc4_parser.c b/libavcodec/misc4_parser.c index d234dbb629..867e9b0a4c 100644 --- a/libavcodec/misc4_parser.c +++ b/libavcodec/misc4_parser.c @@ -19,6 +19,7 @@ */ #include "parser.h" +#include "parser_internal.h" typedef struct MISC4Context { ParseContext pc; @@ -74,7 +75,7 @@ static int misc4_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_misc4_parser = { - .codec_ids = { AV_CODEC_ID_MISC4 }, + PARSER_CODEC_LIST(AV_CODEC_ID_MISC4), .priv_data_size = sizeof(MISC4Context), .parser_parse = misc4_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/mjpeg_parser.c b/libavcodec/mjpeg_parser.c index 62b923b625..152580b354 100644 --- a/libavcodec/mjpeg_parser.c +++ b/libavcodec/mjpeg_parser.c @@ -27,6 +27,7 @@ */ #include "parser.h" +#include "parser_internal.h" typedef struct MJPEGParserContext{ ParseContext pc; @@ -129,7 +130,7 @@ static int jpeg_parse(AVCodecParserContext *s, const AVCodecParser ff_mjpeg_parser = { - .codec_ids = { AV_CODEC_ID_MJPEG, AV_CODEC_ID_JPEGLS }, + PARSER_CODEC_LIST(AV_CODEC_ID_MJPEG, AV_CODEC_ID_JPEGLS), .priv_data_size = sizeof(MJPEGParserContext), .parser_parse = jpeg_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c index d391390dd5..6ed0fa20a8 100644 --- a/libavcodec/mlp_parser.c +++ b/libavcodec/mlp_parser.c @@ -31,6 +31,7 @@ #include "parser.h" #include "mlp_parse.h" #include "mlp.h" +#include "parser_internal.h" typedef struct MLPParseContext { @@ -205,7 +206,7 @@ lost_sync: } const AVCodecParser ff_mlp_parser = { - .codec_ids = { AV_CODEC_ID_MLP, AV_CODEC_ID_TRUEHD }, + PARSER_CODEC_LIST(AV_CODEC_ID_MLP, AV_CODEC_ID_TRUEHD), .priv_data_size = sizeof(MLPParseContext), .parser_init = mlp_init, .parser_parse = mlp_parse, diff --git a/libavcodec/mpeg4video_parser.c b/libavcodec/mpeg4video_parser.c index a2a22234f2..5a75e250d1 100644 --- a/libavcodec/mpeg4video_parser.c +++ b/libavcodec/mpeg4video_parser.c @@ -27,6 +27,7 @@ #include "mpegvideo.h" #include "mpeg4videodec.h" #include "mpeg4videodefs.h" +#include "parser_internal.h" struct Mp4vParseContext { ParseContext pc; @@ -156,7 +157,7 @@ static int mpeg4video_parse(AVCodecParserContext *s, } const AVCodecParser ff_mpeg4video_parser = { - .codec_ids = { AV_CODEC_ID_MPEG4 }, + PARSER_CODEC_LIST(AV_CODEC_ID_MPEG4), .priv_data_size = sizeof(struct Mp4vParseContext), .parser_init = mpeg4video_parse_init, .parser_parse = mpeg4video_parse, diff --git a/libavcodec/mpegaudio_parser.c b/libavcodec/mpegaudio_parser.c index d54366f10a..865d9298d3 100644 --- a/libavcodec/mpegaudio_parser.c +++ b/libavcodec/mpegaudio_parser.c @@ -22,6 +22,7 @@ #include "parser.h" #include "mpegaudiodecheader.h" +#include "parser_internal.h" #include "libavutil/common.h" #include "libavformat/apetag.h" // for APE tag. #include "libavformat/id3v1.h" // for ID3v1_TAG_SIZE @@ -137,7 +138,8 @@ static int mpegaudio_parse(AVCodecParserContext *s1, const AVCodecParser ff_mpegaudio_parser = { - .codec_ids = { AV_CODEC_ID_MP1, AV_CODEC_ID_MP2, AV_CODEC_ID_MP3, AV_CODEC_ID_MP3ADU }, + PARSER_CODEC_LIST(AV_CODEC_ID_MP1, AV_CODEC_ID_MP2, + AV_CODEC_ID_MP3, AV_CODEC_ID_MP3ADU), .priv_data_size = sizeof(MpegAudioParseContext), .parser_parse = mpegaudio_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/mpegvideo_parser.c b/libavcodec/mpegvideo_parser.c index cf9eaddf80..b80e70a740 100644 --- a/libavcodec/mpegvideo_parser.c +++ b/libavcodec/mpegvideo_parser.c @@ -25,6 +25,7 @@ #include "parser.h" #include "mpeg12.h" #include "mpeg12data.h" +#include "parser_internal.h" #include "startcode.h" struct MpvParseContext { @@ -300,7 +301,7 @@ static av_cold int mpegvideo_parse_init(AVCodecParserContext *s) } const AVCodecParser ff_mpegvideo_parser = { - .codec_ids = { AV_CODEC_ID_MPEG1VIDEO, AV_CODEC_ID_MPEG2VIDEO }, + PARSER_CODEC_LIST(AV_CODEC_ID_MPEG1VIDEO, AV_CODEC_ID_MPEG2VIDEO), .priv_data_size = sizeof(struct MpvParseContext), .parser_init = mpegvideo_parse_init, .parser_parse = mpegvideo_parse, diff --git a/libavcodec/opus/parser.c b/libavcodec/opus/parser.c index 9bf0b31fba..1fe011724c 100644 --- a/libavcodec/opus/parser.c +++ b/libavcodec/opus/parser.c @@ -31,6 +31,7 @@ #include "opus.h" #include "parse.h" #include "parser.h" +#include "parser_internal.h" typedef struct OpusParserContext { ParseContext pc; @@ -214,7 +215,7 @@ fail: } const AVCodecParser ff_opus_parser = { - .codec_ids = { AV_CODEC_ID_OPUS }, + PARSER_CODEC_LIST(AV_CODEC_ID_OPUS), .priv_data_size = sizeof(OpusParserContext), .parser_parse = opus_parse, .parser_close = ff_parse_close diff --git a/libavcodec/parser_internal.h b/libavcodec/parser_internal.h new file mode 100644 index 0000000000..81ccceeedf --- /dev/null +++ b/libavcodec/parser_internal.h @@ -0,0 +1,38 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_PARSER_INTERNAL_H +#define AVCODEC_PARSER_INTERNAL_H + +#include "libavutil/macros.h" +#include "codec_id.h" + +#define EIGTH_ARG(a,b,c,d,e,f,g,h,...) h +#define NO_FAIL +// Expands to nothing if <= 7 args; induces compilation failure if not. +#define CHECK_FOR_TOO_MANY_IDS(...) AV_JOIN(EIGTH_ARG(__VA_ARGS__, NO, NO, NO, NO, NO, NO, NO, NO), _FAIL) + +// For compatibility with MSVC's old, spec-incompliant preprocessor. +#define PASSTHROUGH(...) __VA_ARGS__ +#define FIRST_SEVEN2(a,b,c,d,e,f,g,...) a,b,c,d,e,f,g +#define FIRST_SEVEN(...) PASSTHROUGH(FIRST_SEVEN2(__VA_ARGS__)) +#define TIMES_SEVEN(a) a,a,a,a,a,a,a +#define PARSER_CODEC_LIST(...) CHECK_FOR_TOO_MANY_IDS(__VA_ARGS__) \ + .codec_ids = { FIRST_SEVEN(__VA_ARGS__, TIMES_SEVEN(AV_CODEC_ID_NONE)) } + +#endif /* AVCODEC_PARSER_INTERNAL_H */ diff --git a/libavcodec/png_parser.c b/libavcodec/png_parser.c index 314de1b436..e4af1f2e09 100644 --- a/libavcodec/png_parser.c +++ b/libavcodec/png_parser.c @@ -25,6 +25,7 @@ */ #include "parser.h" +#include "parser_internal.h" #include "png.h" typedef struct PNGParseContext { @@ -111,7 +112,7 @@ flush: } const AVCodecParser ff_png_parser = { - .codec_ids = { AV_CODEC_ID_PNG }, + PARSER_CODEC_LIST(AV_CODEC_ID_PNG), .priv_data_size = sizeof(PNGParseContext), .parser_parse = png_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/pnm_parser.c b/libavcodec/pnm_parser.c index 74f918a94b..65dbaf86f6 100644 --- a/libavcodec/pnm_parser.c +++ b/libavcodec/pnm_parser.c @@ -23,6 +23,7 @@ #include "libavutil/imgutils.h" #include "parser.h" //for ParseContext +#include "parser_internal.h" #include "pnm.h" typedef struct PNMParseContext { @@ -134,9 +135,9 @@ end: } const AVCodecParser ff_pnm_parser = { - .codec_ids = { AV_CODEC_ID_PGM, AV_CODEC_ID_PGMYUV, AV_CODEC_ID_PPM, - AV_CODEC_ID_PBM, AV_CODEC_ID_PAM, AV_CODEC_ID_PFM, - AV_CODEC_ID_PHM }, + PARSER_CODEC_LIST(AV_CODEC_ID_PGM, AV_CODEC_ID_PGMYUV, AV_CODEC_ID_PPM, + AV_CODEC_ID_PBM, AV_CODEC_ID_PAM, AV_CODEC_ID_PFM, + AV_CODEC_ID_PHM), .priv_data_size = sizeof(PNMParseContext), .parser_parse = pnm_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/prores_parser.c b/libavcodec/prores_parser.c index d778f839bd..9b66c3b415 100644 --- a/libavcodec/prores_parser.c +++ b/libavcodec/prores_parser.c @@ -20,6 +20,7 @@ #include "bytestream.h" #include "avcodec.h" +#include "parser_internal.h" static int parse(AVCodecParserContext *s, AVCodecContext *avctx, @@ -123,6 +124,6 @@ static int parse(AVCodecParserContext *s, } const AVCodecParser ff_prores_parser = { - .codec_ids = { AV_CODEC_ID_PRORES }, + PARSER_CODEC_LIST(AV_CODEC_ID_PRORES), .parser_parse = parse, }; diff --git a/libavcodec/prores_raw_parser.c b/libavcodec/prores_raw_parser.c index c67935a820..a3470d8cce 100644 --- a/libavcodec/prores_raw_parser.c +++ b/libavcodec/prores_raw_parser.c @@ -20,6 +20,7 @@ #include "parser.h" #include "bytestream.h" +#include "parser_internal.h" static int prores_raw_parse(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, @@ -81,6 +82,6 @@ static int prores_raw_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_prores_raw_parser = { - .codec_ids = { AV_CODEC_ID_PRORES_RAW }, + PARSER_CODEC_LIST(AV_CODEC_ID_PRORES_RAW), .parser_parse = prores_raw_parse, }; diff --git a/libavcodec/qoi_parser.c b/libavcodec/qoi_parser.c index e5af11e948..1c20d334d0 100644 --- a/libavcodec/qoi_parser.c +++ b/libavcodec/qoi_parser.c @@ -25,6 +25,7 @@ */ #include "parser.h" +#include "parser_internal.h" typedef struct QOIParseContext { ParseContext pc; @@ -70,7 +71,7 @@ static int qoi_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_qoi_parser = { - .codec_ids = { AV_CODEC_ID_QOI }, + PARSER_CODEC_LIST(AV_CODEC_ID_QOI), .priv_data_size = sizeof(QOIParseContext), .parser_parse = qoi_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/rv34_parser.c b/libavcodec/rv34_parser.c index 2997a4db70..3ce1abf60a 100644 --- a/libavcodec/rv34_parser.c +++ b/libavcodec/rv34_parser.c @@ -25,6 +25,7 @@ */ #include "avcodec.h" +#include "parser_internal.h" #include "libavutil/intreadwrite.h" typedef struct RV34ParseContext { @@ -76,7 +77,7 @@ static int rv34_parse(AVCodecParserContext *s, } const AVCodecParser ff_rv34_parser = { - .codec_ids = { AV_CODEC_ID_RV30, AV_CODEC_ID_RV40 }, + PARSER_CODEC_LIST(AV_CODEC_ID_RV30, AV_CODEC_ID_RV40), .priv_data_size = sizeof(RV34ParseContext), .parser_parse = rv34_parse, }; diff --git a/libavcodec/sbc_parser.c b/libavcodec/sbc_parser.c index 2d427cc7cb..9cd225aa7b 100644 --- a/libavcodec/sbc_parser.c +++ b/libavcodec/sbc_parser.c @@ -22,6 +22,7 @@ #include "sbc.h" #include "parser.h" +#include "parser_internal.h" typedef struct SBCParseContext { ParseContext pc; @@ -117,7 +118,7 @@ static int sbc_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_sbc_parser = { - .codec_ids = { AV_CODEC_ID_SBC }, + PARSER_CODEC_LIST(AV_CODEC_ID_SBC), .priv_data_size = sizeof(SBCParseContext), .parser_parse = sbc_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/sipr_parser.c b/libavcodec/sipr_parser.c index e01da3c8a8..89352663a5 100644 --- a/libavcodec/sipr_parser.c +++ b/libavcodec/sipr_parser.c @@ -22,6 +22,7 @@ */ #include "parser.h" +#include "parser_internal.h" typedef struct SiprParserContext{ ParseContext pc; @@ -67,7 +68,7 @@ static int sipr_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_sipr_parser = { - .codec_ids = { AV_CODEC_ID_SIPR }, + PARSER_CODEC_LIST(AV_CODEC_ID_SIPR), .priv_data_size = sizeof(SiprParserContext), .parser_parse = sipr_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/tak_parser.c b/libavcodec/tak_parser.c index 7f5f5314af..47931288b7 100644 --- a/libavcodec/tak_parser.c +++ b/libavcodec/tak_parser.c @@ -27,6 +27,7 @@ #define CACHED_BITSTREAM_READER !ARCH_X86_32 #define BITSTREAM_READER_LE #include "parser.h" +#include "parser_internal.h" #include "tak.h" typedef struct TAKParseContext { @@ -124,7 +125,7 @@ fail: } const AVCodecParser ff_tak_parser = { - .codec_ids = { AV_CODEC_ID_TAK }, + PARSER_CODEC_LIST(AV_CODEC_ID_TAK), .priv_data_size = sizeof(TAKParseContext), .parser_parse = tak_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/vc1_parser.c b/libavcodec/vc1_parser.c index 124a7a771f..7215e84355 100644 --- a/libavcodec/vc1_parser.c +++ b/libavcodec/vc1_parser.c @@ -28,6 +28,7 @@ #include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "parser.h" +#include "parser_internal.h" #include "vc1.h" #include "get_bits.h" #include "vc1dsp.h" @@ -271,7 +272,7 @@ static av_cold int vc1_parse_init(AVCodecParserContext *s) } const AVCodecParser ff_vc1_parser = { - .codec_ids = { AV_CODEC_ID_VC1 }, + PARSER_CODEC_LIST(AV_CODEC_ID_VC1), .priv_data_size = sizeof(VC1ParseContext), .parser_init = vc1_parse_init, .parser_parse = vc1_parse, diff --git a/libavcodec/vorbis_parser.c b/libavcodec/vorbis_parser.c index 25884b6b8a..a3b0a4e5c4 100644 --- a/libavcodec/vorbis_parser.c +++ b/libavcodec/vorbis_parser.c @@ -31,6 +31,7 @@ #include "libavutil/mem.h" #include "get_bits.h" +#include "parser_internal.h" #include "xiph.h" #include "vorbis_parser_internal.h" @@ -336,7 +337,7 @@ static av_cold void vorbis_parser_close(AVCodecParserContext *ctx) } const AVCodecParser ff_vorbis_parser = { - .codec_ids = { AV_CODEC_ID_VORBIS }, + PARSER_CODEC_LIST(AV_CODEC_ID_VORBIS), .priv_data_size = sizeof(VorbisParseContext), .parser_parse = vorbis_parse, .parser_close = vorbis_parser_close, diff --git a/libavcodec/vp3_parser.c b/libavcodec/vp3_parser.c index e8bfebdc39..9be3f70596 100644 --- a/libavcodec/vp3_parser.c +++ b/libavcodec/vp3_parser.c @@ -19,6 +19,7 @@ */ #include "avcodec.h" +#include "parser_internal.h" static int parse(AVCodecParserContext *s, AVCodecContext *avctx, @@ -36,9 +37,7 @@ static int parse(AVCodecParserContext *s, } const AVCodecParser ff_vp3_parser = { - .codec_ids = { - AV_CODEC_ID_THEORA, AV_CODEC_ID_VP3, - AV_CODEC_ID_VP6, AV_CODEC_ID_VP6F, AV_CODEC_ID_VP6A - }, + PARSER_CODEC_LIST(AV_CODEC_ID_THEORA, AV_CODEC_ID_VP3, + AV_CODEC_ID_VP6, AV_CODEC_ID_VP6F, AV_CODEC_ID_VP6A), .parser_parse = parse, }; diff --git a/libavcodec/vp8_parser.c b/libavcodec/vp8_parser.c index 98b752bfb9..14c0c1462b 100644 --- a/libavcodec/vp8_parser.c +++ b/libavcodec/vp8_parser.c @@ -19,6 +19,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" +#include "parser_internal.h" static int parse(AVCodecParserContext *s, AVCodecContext *avctx, @@ -74,6 +75,6 @@ static int parse(AVCodecParserContext *s, } const AVCodecParser ff_vp8_parser = { - .codec_ids = { AV_CODEC_ID_VP8 }, + PARSER_CODEC_LIST(AV_CODEC_ID_VP8), .parser_parse = parse, }; diff --git a/libavcodec/vp9_parser.c b/libavcodec/vp9_parser.c index 72df554da5..7e1a06201a 100644 --- a/libavcodec/vp9_parser.c +++ b/libavcodec/vp9_parser.c @@ -23,6 +23,7 @@ #include "avcodec.h" #include "get_bits.h" +#include "parser_internal.h" static int parse(AVCodecParserContext *ctx, AVCodecContext *avctx, @@ -64,6 +65,6 @@ static int parse(AVCodecParserContext *ctx, } const AVCodecParser ff_vp9_parser = { - .codec_ids = { AV_CODEC_ID_VP9 }, + PARSER_CODEC_LIST(AV_CODEC_ID_VP9), .parser_parse = parse, }; diff --git a/libavcodec/vvc_parser.c b/libavcodec/vvc_parser.c index 0c7362dde4..4453aaa61d 100644 --- a/libavcodec/vvc_parser.c +++ b/libavcodec/vvc_parser.c @@ -24,6 +24,7 @@ #include "cbs.h" #include "cbs_h266.h" #include "parser.h" +#include "parser_internal.h" #define START_CODE 0x000001 ///< start_code_prefix_one_3bytes #define IS_IDR(nut) (nut == VVC_IDR_W_RADL || nut == VVC_IDR_N_LP) @@ -506,7 +507,7 @@ static av_cold void vvc_parser_close(AVCodecParserContext *s) } const AVCodecParser ff_vvc_parser = { - .codec_ids = { AV_CODEC_ID_VVC }, + PARSER_CODEC_LIST(AV_CODEC_ID_VVC), .priv_data_size = sizeof(VVCParserContext), .parser_init = vvc_parser_init, .parser_close = vvc_parser_close, diff --git a/libavcodec/webp_parser.c b/libavcodec/webp_parser.c index bd5f94dac5..e3edc348e4 100644 --- a/libavcodec/webp_parser.c +++ b/libavcodec/webp_parser.c @@ -27,6 +27,7 @@ #include "libavutil/common.h" #include "parser.h" +#include "parser_internal.h" typedef struct WebPParseContext { ParseContext pc; @@ -105,7 +106,7 @@ flush: } const AVCodecParser ff_webp_parser = { - .codec_ids = { AV_CODEC_ID_WEBP }, + PARSER_CODEC_LIST(AV_CODEC_ID_WEBP), .priv_data_size = sizeof(WebPParseContext), .parser_parse = webp_parse, .parser_close = ff_parse_close, diff --git a/libavcodec/xbm_parser.c b/libavcodec/xbm_parser.c index 436aec96ab..c7e7ce9282 100644 --- a/libavcodec/xbm_parser.c +++ b/libavcodec/xbm_parser.c @@ -30,6 +30,7 @@ #include "libavutil/avutil.h" #include "parser.h" +#include "parser_internal.h" typedef struct XBMParseContext { ParseContext pc; @@ -101,7 +102,7 @@ static int xbm_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_xbm_parser = { - .codec_ids = { AV_CODEC_ID_XBM }, + PARSER_CODEC_LIST(AV_CODEC_ID_XBM), .priv_data_size = sizeof(XBMParseContext), .parser_init = xbm_init, .parser_parse = xbm_parse, diff --git a/libavcodec/xma_parser.c b/libavcodec/xma_parser.c index 26db266a3e..eae39fd031 100644 --- a/libavcodec/xma_parser.c +++ b/libavcodec/xma_parser.c @@ -22,6 +22,7 @@ */ #include "avcodec.h" +#include "parser_internal.h" typedef struct XMAParserContext{ int skip_packets; @@ -56,7 +57,7 @@ static int xma_parse(AVCodecParserContext *s1, AVCodecContext *avctx, } const AVCodecParser ff_xma_parser = { - .codec_ids = { AV_CODEC_ID_XMA2 }, + PARSER_CODEC_LIST(AV_CODEC_ID_XMA2), .priv_data_size = sizeof(XMAParserContext), .parser_parse = xma_parse, }; diff --git a/libavcodec/xwd_parser.c b/libavcodec/xwd_parser.c index ab5fe86070..cc554c3c97 100644 --- a/libavcodec/xwd_parser.c +++ b/libavcodec/xwd_parser.c @@ -26,6 +26,7 @@ #include "libavutil/intreadwrite.h" #include "parser.h" +#include "parser_internal.h" #include "xwd.h" typedef struct XWDParseContext { @@ -96,7 +97,7 @@ static int xwd_parse(AVCodecParserContext *s, AVCodecContext *avctx, } const AVCodecParser ff_xwd_parser = { - .codec_ids = { AV_CODEC_ID_XWD }, + PARSER_CODEC_LIST(AV_CODEC_ID_XWD), .priv_data_size = sizeof(XWDParseContext), .parser_parse = xwd_parse, .parser_close = ff_parse_close, -- 2.49.1 >>From 4b109d07f3b2e5d5d6af23111721f55b39228ce4 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 26 Oct 2025 09:42:07 +0100 Subject: [PATCH 3/5] avcodec/avcodec: Schedule moving private fields of AVCodecParser out of avcodec.h AVCodecParser has several fields which are not really meant to be accessed by users, but it has no public-private demarkation line, so these fields are technically public and can therefore not simply be made private like 20f972701806be20a77f808db332d9489343bb78 did for AVCodec.* This commit therefore deprecates these fields and schedules them to become private. All parsers have already been switched to FFCodecParser, which (for now) is a union of AVCodecParser and an unnamed clone of AVCodecParser (new fields can be added at the end of this clone). *: This is also the reason why split has never been removed despite not being set for several years now. Signed-off-by: Andreas Rheinhardt --- configure | 4 +- doc/APIchanges | 5 ++ libavcodec/aac_parser.c | 2 +- libavcodec/ac3_parser.c | 2 +- libavcodec/adx_parser.c | 2 +- libavcodec/ahx_parser.c | 2 +- libavcodec/amr_parser.c | 2 +- libavcodec/apv_parser.c | 2 +- libavcodec/av1_parser.c | 2 +- libavcodec/avcodec.h | 14 +++ libavcodec/avs2_parser.c | 2 +- libavcodec/avs3_parser.c | 2 +- libavcodec/bmp_parser.c | 2 +- libavcodec/cavs_parser.c | 2 +- libavcodec/cook_parser.c | 2 +- libavcodec/cri_parser.c | 2 +- libavcodec/dca_parser.c | 2 +- libavcodec/dirac_parser.c | 2 +- libavcodec/dnxhd_parser.c | 2 +- libavcodec/dnxuc_parser.c | 2 +- libavcodec/dolby_e_parser.c | 2 +- libavcodec/dpx_parser.c | 2 +- libavcodec/dvaudio_parser.c | 2 +- libavcodec/dvbsub_parser.c | 2 +- libavcodec/dvd_nav_parser.c | 2 +- libavcodec/dvdsub_parser.c | 2 +- libavcodec/evc_parser.c | 2 +- libavcodec/ffv1_parser.c | 2 +- libavcodec/flac_parser.c | 2 +- libavcodec/ftr_parser.c | 2 +- libavcodec/g723_1_parser.c | 2 +- libavcodec/g729_parser.c | 2 +- libavcodec/gif_parser.c | 2 +- libavcodec/gsm_parser.c | 2 +- libavcodec/h261_parser.c | 2 +- libavcodec/h263_parser.c | 2 +- libavcodec/h264_parser.c | 2 +- libavcodec/hdr_parser.c | 2 +- libavcodec/hevc/parser.c | 2 +- libavcodec/ipu_parser.c | 2 +- libavcodec/jpeg2000_parser.c | 2 +- libavcodec/jpegxl_parser.c | 2 +- libavcodec/latm_parser.c | 2 +- libavcodec/misc4_parser.c | 2 +- libavcodec/mjpeg_parser.c | 2 +- libavcodec/mlp_parser.c | 2 +- libavcodec/mpeg4video_parser.c | 2 +- libavcodec/mpegaudio_parser.c | 2 +- libavcodec/mpegvideo_parser.c | 2 +- libavcodec/opus/parser.c | 2 +- libavcodec/parser.c | 17 ++-- libavcodec/parser_internal.h | 41 +++++++++ libavcodec/parsers.c | 153 ++++++++++++++++++--------------- libavcodec/png_parser.c | 2 +- libavcodec/pnm_parser.c | 2 +- libavcodec/prores_parser.c | 2 +- libavcodec/prores_raw_parser.c | 2 +- libavcodec/qoi_parser.c | 2 +- libavcodec/rv34_parser.c | 2 +- libavcodec/sbc_parser.c | 2 +- libavcodec/sipr_parser.c | 2 +- libavcodec/tak_parser.c | 2 +- libavcodec/vc1_parser.c | 2 +- libavcodec/version_major.h | 2 + libavcodec/vorbis_parser.c | 2 +- libavcodec/vp3_parser.c | 2 +- libavcodec/vp8_parser.c | 2 +- libavcodec/vp9_parser.c | 2 +- libavcodec/vvc_parser.c | 2 +- libavcodec/webp_parser.c | 2 +- libavcodec/xbm_parser.c | 2 +- libavcodec/xma_parser.c | 2 +- libavcodec/xwd_parser.c | 2 +- 73 files changed, 224 insertions(+), 144 deletions(-) diff --git a/configure b/configure index 764bbb0001..12820e6e79 100755 --- a/configure +++ b/configure @@ -4398,7 +4398,7 @@ CODEC_LIST=" $ENCODER_LIST $DECODER_LIST " -PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c) +PARSER_LIST=$(find_things_extern parser FFCodecParser libavcodec/parsers.c) BSF_LIST=$(find_things_extern bsf FFBitStreamFilter libavcodec/bitstream_filters.c) HWACCEL_LIST=$(find_things_extern hwaccel FFHWAccel libavcodec/hwaccels.h) PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c) @@ -8592,7 +8592,7 @@ print_enabled_components(){ print_enabled_components libavfilter/filter_list.c FFFilter filter_list $FILTER_LIST print_enabled_components libavcodec/codec_list.c FFCodec codec_list $CODEC_LIST -print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST +print_enabled_components libavcodec/parser_list.c FFCodecParser parser_list $PARSER_LIST print_enabled_components libavcodec/bsf_list.c FFBitStreamFilter bitstream_filters $BSF_LIST print_enabled_components libavformat/demuxer_list.c FFInputFormat demuxer_list $DEMUXER_LIST print_enabled_components libavformat/muxer_list.c FFOutputFormat muxer_list $MUXER_LIST diff --git a/doc/APIchanges b/doc/APIchanges index 3ec8e25f03..654f1646a4 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,11 @@ The last version increases of all libraries were on 2025-03-28 API changes, most recent first: +2025-10-xx - xxxxxxxxxx - lavc 62.xx.100 - avcodec.h + AVCodecParser fields priv_data_size, parser_init, parser_parse, + parser_close, split will be removed from the public API + on the next major version bump. + 2025-10-xx - xxxxxxxxxx - lavu 60.14.100 - csp.h Add av_csp_approximate_eotf_gamma(). diff --git a/libavcodec/aac_parser.c b/libavcodec/aac_parser.c index ce7d2f58e0..a58c07cae5 100644 --- a/libavcodec/aac_parser.c +++ b/libavcodec/aac_parser.c @@ -52,7 +52,7 @@ static av_cold int aac_parse_init(AVCodecParserContext *s1) } -const AVCodecParser ff_aac_parser = { +const FFCodecParser ff_aac_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AAC), .priv_data_size = sizeof(AACAC3ParseContext), .parser_init = aac_parse_init, diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index fe7f0fee61..de3f6938eb 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -478,7 +478,7 @@ static av_cold int ac3_parse_init(AVCodecParserContext *s1) } -const AVCodecParser ff_ac3_parser = { +const FFCodecParser ff_ac3_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AC3, AV_CODEC_ID_EAC3), .priv_data_size = sizeof(AACAC3ParseContext), .parser_init = ac3_parse_init, diff --git a/libavcodec/adx_parser.c b/libavcodec/adx_parser.c index e11cc4a3bf..480b915c23 100644 --- a/libavcodec/adx_parser.c +++ b/libavcodec/adx_parser.c @@ -98,7 +98,7 @@ static int adx_parse(AVCodecParserContext *s1, return next; } -const AVCodecParser ff_adx_parser = { +const FFCodecParser ff_adx_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_ADPCM_ADX), .priv_data_size = sizeof(ADXParseContext), .parser_parse = adx_parse, diff --git a/libavcodec/ahx_parser.c b/libavcodec/ahx_parser.c index 07eaf697b3..0e7b9b6e19 100644 --- a/libavcodec/ahx_parser.c +++ b/libavcodec/ahx_parser.c @@ -71,7 +71,7 @@ static int ahx_parse(AVCodecParserContext *s1, return next; } -const AVCodecParser ff_ahx_parser = { +const FFCodecParser ff_ahx_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AHX), .priv_data_size = sizeof(AHXParseContext), .parser_parse = ahx_parse, diff --git a/libavcodec/amr_parser.c b/libavcodec/amr_parser.c index ce1cd1be35..821c04c625 100644 --- a/libavcodec/amr_parser.c +++ b/libavcodec/amr_parser.c @@ -123,7 +123,7 @@ static int amr_parse(AVCodecParserContext *s1, return next; } -const AVCodecParser ff_amr_parser = { +const FFCodecParser ff_amr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB), .priv_data_size = sizeof(AMRParseContext), .parser_init = amr_parse_init, diff --git a/libavcodec/apv_parser.c b/libavcodec/apv_parser.c index ffcaabf2f0..02791bceda 100644 --- a/libavcodec/apv_parser.c +++ b/libavcodec/apv_parser.c @@ -141,7 +141,7 @@ static av_cold void close(AVCodecParserContext *s) ff_cbs_close(&p->cbc); } -const AVCodecParser ff_apv_parser = { +const FFCodecParser ff_apv_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_APV), .priv_data_size = sizeof(APVParseContext), .parser_init = init, diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c index ba321d3ba5..87510dfbb5 100644 --- a/libavcodec/av1_parser.c +++ b/libavcodec/av1_parser.c @@ -210,7 +210,7 @@ static av_cold void av1_parser_close(AVCodecParserContext *ctx) ff_cbs_close(&s->cbc); } -const AVCodecParser ff_av1_parser = { +const FFCodecParser ff_av1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AV1), .priv_data_size = sizeof(AV1ParseContext), .parser_init = av1_parser_init, diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 83a4e56e22..e681b7affe 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2733,16 +2733,30 @@ typedef struct AVCodecParserContext { typedef struct AVCodecParser { int codec_ids[7]; /* several codec IDs are permitted */ +#if FF_API_PARSER_PRIVATE + /***************************************************************** + * All fields below this line are not part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + attribute_deprecated int priv_data_size; + attribute_deprecated int (*parser_init)(AVCodecParserContext *s); /* This callback never returns an error, a negative value means that * the frame start was in a previous packet. */ + attribute_deprecated int (*parser_parse)(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size); + attribute_deprecated void (*parser_close)(AVCodecParserContext *s); + attribute_deprecated int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); +#endif } AVCodecParser; /** diff --git a/libavcodec/avs2_parser.c b/libavcodec/avs2_parser.c index b20181213b..b96faddabb 100644 --- a/libavcodec/avs2_parser.c +++ b/libavcodec/avs2_parser.c @@ -190,7 +190,7 @@ static int avs2_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_avs2_parser = { +const FFCodecParser ff_avs2_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AVS2), .priv_data_size = sizeof(ParseContext), .parser_parse = avs2_parse, diff --git a/libavcodec/avs3_parser.c b/libavcodec/avs3_parser.c index 4fa1c983c5..c7cfe67b20 100644 --- a/libavcodec/avs3_parser.c +++ b/libavcodec/avs3_parser.c @@ -173,7 +173,7 @@ static int avs3_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_avs3_parser = { +const FFCodecParser ff_avs3_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AVS3), .priv_data_size = sizeof(ParseContext), .parser_parse = avs3_parse, diff --git a/libavcodec/bmp_parser.c b/libavcodec/bmp_parser.c index 84cdc9e873..a4bdf6a025 100644 --- a/libavcodec/bmp_parser.c +++ b/libavcodec/bmp_parser.c @@ -106,7 +106,7 @@ flush: return next; } -const AVCodecParser ff_bmp_parser = { +const FFCodecParser ff_bmp_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_BMP), .priv_data_size = sizeof(BMPParseContext), .parser_parse = bmp_parse, diff --git a/libavcodec/cavs_parser.c b/libavcodec/cavs_parser.c index b71f226c75..ea36896f5c 100644 --- a/libavcodec/cavs_parser.c +++ b/libavcodec/cavs_parser.c @@ -97,7 +97,7 @@ static int cavsvideo_parse(AVCodecParserContext *s, return next; } -const AVCodecParser ff_cavsvideo_parser = { +const FFCodecParser ff_cavsvideo_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_CAVS), .priv_data_size = sizeof(ParseContext), .parser_parse = cavsvideo_parse, diff --git a/libavcodec/cook_parser.c b/libavcodec/cook_parser.c index f9e3a9db15..a8d4081235 100644 --- a/libavcodec/cook_parser.c +++ b/libavcodec/cook_parser.c @@ -54,7 +54,7 @@ static int cook_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return buf_size; } -const AVCodecParser ff_cook_parser = { +const FFCodecParser ff_cook_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_COOK), .priv_data_size = sizeof(CookParseContext), .parser_parse = cook_parse, diff --git a/libavcodec/cri_parser.c b/libavcodec/cri_parser.c index 356f35a00c..ecf4145cae 100644 --- a/libavcodec/cri_parser.c +++ b/libavcodec/cri_parser.c @@ -98,7 +98,7 @@ static int cri_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_cri_parser = { +const FFCodecParser ff_cri_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_CRI), .priv_data_size = sizeof(CRIParser), .parser_parse = cri_parse, diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c index b9e9191cbc..61b188a902 100644 --- a/libavcodec/dca_parser.c +++ b/libavcodec/dca_parser.c @@ -344,7 +344,7 @@ static int dca_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_dca_parser = { +const FFCodecParser ff_dca_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DTS), .priv_data_size = sizeof(DCAParseContext), .parser_init = dca_parse_init, diff --git a/libavcodec/dirac_parser.c b/libavcodec/dirac_parser.c index 96ab6c7780..f5ac808d70 100644 --- a/libavcodec/dirac_parser.c +++ b/libavcodec/dirac_parser.c @@ -275,7 +275,7 @@ static av_cold void dirac_parse_close(AVCodecParserContext *s) av_freep(&pc->buffer); } -const AVCodecParser ff_dirac_parser = { +const FFCodecParser ff_dirac_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DIRAC), .priv_data_size = sizeof(DiracParseContext), .parser_parse = dirac_parse, diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c index 09d8dce1e5..a51f05d458 100644 --- a/libavcodec/dnxhd_parser.c +++ b/libavcodec/dnxhd_parser.c @@ -139,7 +139,7 @@ static int dnxhd_parse(AVCodecParserContext *s, return next; } -const AVCodecParser ff_dnxhd_parser = { +const FFCodecParser ff_dnxhd_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DNXHD), .priv_data_size = sizeof(DNXHDParserContext), .parser_parse = dnxhd_parse, diff --git a/libavcodec/dnxuc_parser.c b/libavcodec/dnxuc_parser.c index bfed6b5b6f..6c41e3139d 100644 --- a/libavcodec/dnxuc_parser.c +++ b/libavcodec/dnxuc_parser.c @@ -82,7 +82,7 @@ static int dnxuc_parse(AVCodecParserContext *s, return next; } -const AVCodecParser ff_dnxuc_parser = { +const FFCodecParser ff_dnxuc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DNXUC), .priv_data_size = sizeof(DNxUcParseContext), .parser_parse = dnxuc_parse, diff --git a/libavcodec/dolby_e_parser.c b/libavcodec/dolby_e_parser.c index 53bf44d86e..c685e30ddb 100644 --- a/libavcodec/dolby_e_parser.c +++ b/libavcodec/dolby_e_parser.c @@ -66,7 +66,7 @@ end: return buf_size; } -const AVCodecParser ff_dolby_e_parser = { +const FFCodecParser ff_dolby_e_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DOLBY_E), .priv_data_size = sizeof(DBEParseContext), .parser_parse = dolby_e_parse, diff --git a/libavcodec/dpx_parser.c b/libavcodec/dpx_parser.c index 9ca17bd94d..d87ae38348 100644 --- a/libavcodec/dpx_parser.c +++ b/libavcodec/dpx_parser.c @@ -109,7 +109,7 @@ flush: return next; } -const AVCodecParser ff_dpx_parser = { +const FFCodecParser ff_dpx_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DPX), .priv_data_size = sizeof(DPXParseContext), .parser_parse = dpx_parse, diff --git a/libavcodec/dvaudio_parser.c b/libavcodec/dvaudio_parser.c index 1b4253aa83..7463db35c0 100644 --- a/libavcodec/dvaudio_parser.c +++ b/libavcodec/dvaudio_parser.c @@ -41,7 +41,7 @@ static int dvaudio_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return buf_size; } -const AVCodecParser ff_dvaudio_parser = { +const FFCodecParser ff_dvaudio_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVAUDIO), .parser_parse = dvaudio_parse, }; diff --git a/libavcodec/dvbsub_parser.c b/libavcodec/dvbsub_parser.c index 68c2b77b39..396b4d90f0 100644 --- a/libavcodec/dvbsub_parser.c +++ b/libavcodec/dvbsub_parser.c @@ -164,7 +164,7 @@ static int dvbsub_parse(AVCodecParserContext *s, return buf_size; } -const AVCodecParser ff_dvbsub_parser = { +const FFCodecParser ff_dvbsub_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVB_SUBTITLE), .priv_data_size = sizeof(DVBSubParseContext), .parser_parse = dvbsub_parse, diff --git a/libavcodec/dvd_nav_parser.c b/libavcodec/dvd_nav_parser.c index bb8c284ad5..69e6d828eb 100644 --- a/libavcodec/dvd_nav_parser.c +++ b/libavcodec/dvd_nav_parser.c @@ -108,7 +108,7 @@ static int dvd_nav_parse(AVCodecParserContext *s, return buf_size; } -const AVCodecParser ff_dvd_nav_parser = { +const FFCodecParser ff_dvd_nav_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVD_NAV), .priv_data_size = sizeof(DVDNavParseContext), .parser_init = dvd_nav_parse_init, diff --git a/libavcodec/dvdsub_parser.c b/libavcodec/dvdsub_parser.c index fd5baf719f..cf86b67944 100644 --- a/libavcodec/dvdsub_parser.c +++ b/libavcodec/dvdsub_parser.c @@ -85,7 +85,7 @@ static av_cold void dvdsub_parse_close(AVCodecParserContext *s) av_freep(&pc->packet); } -const AVCodecParser ff_dvdsub_parser = { +const FFCodecParser ff_dvdsub_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVD_SUBTITLE), .priv_data_size = sizeof(DVDSubParseContext), .parser_parse = dvdsub_parse, diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c index 5cd9b5544c..8f858c9be8 100644 --- a/libavcodec/evc_parser.c +++ b/libavcodec/evc_parser.c @@ -372,7 +372,7 @@ static av_cold void evc_parser_close(AVCodecParserContext *s) ff_evc_ps_free(&ctx->ps); } -const AVCodecParser ff_evc_parser = { +const FFCodecParser ff_evc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_EVC), .priv_data_size = sizeof(EVCParserContext), .parser_parse = evc_parse, diff --git a/libavcodec/ffv1_parser.c b/libavcodec/ffv1_parser.c index 5f17d6a75b..f444461647 100644 --- a/libavcodec/ffv1_parser.c +++ b/libavcodec/ffv1_parser.c @@ -81,7 +81,7 @@ static av_cold void ffv1_close(AVCodecParserContext *s) ff_ffv1_close(&p->f); } -const AVCodecParser ff_ffv1_parser = { +const FFCodecParser ff_ffv1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_FFV1), .priv_data_size = sizeof(FFV1ParseContext), .parser_parse = parse, diff --git a/libavcodec/flac_parser.c b/libavcodec/flac_parser.c index ed0f4bc336..340ff68f25 100644 --- a/libavcodec/flac_parser.c +++ b/libavcodec/flac_parser.c @@ -903,7 +903,7 @@ static av_cold void flac_parse_close(AVCodecParserContext *c) av_freep(&fpc->wrap_buf); } -const AVCodecParser ff_flac_parser = { +const FFCodecParser ff_flac_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_FLAC), .priv_data_size = sizeof(FLACParseContext), .parser_init = flac_parse_init, diff --git a/libavcodec/ftr_parser.c b/libavcodec/ftr_parser.c index 422b775d7c..24ef405488 100644 --- a/libavcodec/ftr_parser.c +++ b/libavcodec/ftr_parser.c @@ -97,7 +97,7 @@ static int ftr_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_ftr_parser = { +const FFCodecParser ff_ftr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_FTR), .priv_data_size = sizeof(FTRParseContext), .parser_parse = ftr_parse, diff --git a/libavcodec/g723_1_parser.c b/libavcodec/g723_1_parser.c index 0deec9fdf8..70a83e3e1b 100644 --- a/libavcodec/g723_1_parser.c +++ b/libavcodec/g723_1_parser.c @@ -53,7 +53,7 @@ static int g723_1_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return next; } -const AVCodecParser ff_g723_1_parser = { +const FFCodecParser ff_g723_1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_G723_1), .priv_data_size = sizeof(G723_1ParseContext), .parser_parse = g723_1_parse, diff --git a/libavcodec/g729_parser.c b/libavcodec/g729_parser.c index c107436a42..17b8415584 100644 --- a/libavcodec/g729_parser.c +++ b/libavcodec/g729_parser.c @@ -85,7 +85,7 @@ static int g729_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return next; } -const AVCodecParser ff_g729_parser = { +const FFCodecParser ff_g729_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_G729, AV_CODEC_ID_ACELP_KELVIN), .priv_data_size = sizeof(G729ParseContext), .parser_parse = g729_parse, diff --git a/libavcodec/gif_parser.c b/libavcodec/gif_parser.c index ceb03b0aab..c95e9430fd 100644 --- a/libavcodec/gif_parser.c +++ b/libavcodec/gif_parser.c @@ -201,7 +201,7 @@ static int gif_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_gif_parser = { +const FFCodecParser ff_gif_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_GIF), .priv_data_size = sizeof(GIFParseContext), .parser_parse = gif_parse, diff --git a/libavcodec/gsm_parser.c b/libavcodec/gsm_parser.c index 0162bdcc13..1823ff3188 100644 --- a/libavcodec/gsm_parser.c +++ b/libavcodec/gsm_parser.c @@ -84,7 +84,7 @@ static int gsm_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return next; } -const AVCodecParser ff_gsm_parser = { +const FFCodecParser ff_gsm_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_GSM, AV_CODEC_ID_GSM_MS), .priv_data_size = sizeof(GSMParseContext), .parser_parse = gsm_parse, diff --git a/libavcodec/h261_parser.c b/libavcodec/h261_parser.c index 7bd912f8bf..cedcdfe038 100644 --- a/libavcodec/h261_parser.c +++ b/libavcodec/h261_parser.c @@ -87,7 +87,7 @@ static int h261_parse(AVCodecParserContext *s, return next; } -const AVCodecParser ff_h261_parser = { +const FFCodecParser ff_h261_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_H261), .priv_data_size = sizeof(ParseContext), .parser_parse = h261_parse, diff --git a/libavcodec/h263_parser.c b/libavcodec/h263_parser.c index 2df6182d78..939a839e8e 100644 --- a/libavcodec/h263_parser.c +++ b/libavcodec/h263_parser.c @@ -88,7 +88,7 @@ static int h263_parse(AVCodecParserContext *s, return next; } -const AVCodecParser ff_h263_parser = { +const FFCodecParser ff_h263_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_H263), .priv_data_size = sizeof(ParseContext), .parser_parse = h263_parse, diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index 9d3158d183..baed7a3e34 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -683,7 +683,7 @@ static av_cold int init(AVCodecParserContext *s) return 0; } -const AVCodecParser ff_h264_parser = { +const FFCodecParser ff_h264_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_H264), .priv_data_size = sizeof(H264ParseContext), .parser_init = init, diff --git a/libavcodec/hdr_parser.c b/libavcodec/hdr_parser.c index af8ffd06ca..eb34803c73 100644 --- a/libavcodec/hdr_parser.c +++ b/libavcodec/hdr_parser.c @@ -72,7 +72,7 @@ static int hdr_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_hdr_parser = { +const FFCodecParser ff_hdr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_RADIANCE_HDR), .priv_data_size = sizeof(HDRParseContext), .parser_parse = hdr_parse, diff --git a/libavcodec/hevc/parser.c b/libavcodec/hevc/parser.c index 1a6b7987a3..43f895ad57 100644 --- a/libavcodec/hevc/parser.c +++ b/libavcodec/hevc/parser.c @@ -353,7 +353,7 @@ static void hevc_parser_close(AVCodecParserContext *s) av_freep(&ctx->pc.buffer); } -const AVCodecParser ff_hevc_parser = { +const FFCodecParser ff_hevc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_HEVC), .priv_data_size = sizeof(HEVCParserContext), .parser_parse = hevc_parse, diff --git a/libavcodec/ipu_parser.c b/libavcodec/ipu_parser.c index d278e8b449..d2ff23e7b2 100644 --- a/libavcodec/ipu_parser.c +++ b/libavcodec/ipu_parser.c @@ -70,7 +70,7 @@ static int ipu_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_ipu_parser = { +const FFCodecParser ff_ipu_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_IPU), .priv_data_size = sizeof(IPUParseContext), .parser_parse = ipu_parse, diff --git a/libavcodec/jpeg2000_parser.c b/libavcodec/jpeg2000_parser.c index 2ef29582a7..2e6d91ee59 100644 --- a/libavcodec/jpeg2000_parser.c +++ b/libavcodec/jpeg2000_parser.c @@ -212,7 +212,7 @@ static int jpeg2000_parse(AVCodecParserContext *s, return next; } -const AVCodecParser ff_jpeg2000_parser = { +const FFCodecParser ff_jpeg2000_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_JPEG2000), .priv_data_size = sizeof(JPEG2000ParserContext), .parser_parse = jpeg2000_parse, diff --git a/libavcodec/jpegxl_parser.c b/libavcodec/jpegxl_parser.c index ca00a86a0b..8a6bafdf92 100644 --- a/libavcodec/jpegxl_parser.c +++ b/libavcodec/jpegxl_parser.c @@ -1546,7 +1546,7 @@ flush: return next; } -const AVCodecParser ff_jpegxl_parser = { +const FFCodecParser ff_jpegxl_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_JPEGXL, AV_CODEC_ID_JPEGXL_ANIM), .priv_data_size = sizeof(JXLParseContext), .parser_parse = jpegxl_parse, diff --git a/libavcodec/latm_parser.c b/libavcodec/latm_parser.c index b06103aef8..6cd1eb3379 100644 --- a/libavcodec/latm_parser.c +++ b/libavcodec/latm_parser.c @@ -105,7 +105,7 @@ static int latm_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return next; } -const AVCodecParser ff_aac_latm_parser = { +const FFCodecParser ff_aac_latm_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AAC_LATM), .priv_data_size = sizeof(LATMParseContext), .parser_parse = latm_parse, diff --git a/libavcodec/misc4_parser.c b/libavcodec/misc4_parser.c index 867e9b0a4c..332e79875e 100644 --- a/libavcodec/misc4_parser.c +++ b/libavcodec/misc4_parser.c @@ -74,7 +74,7 @@ static int misc4_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_misc4_parser = { +const FFCodecParser ff_misc4_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MISC4), .priv_data_size = sizeof(MISC4Context), .parser_parse = misc4_parse, diff --git a/libavcodec/mjpeg_parser.c b/libavcodec/mjpeg_parser.c index 152580b354..99ac75771e 100644 --- a/libavcodec/mjpeg_parser.c +++ b/libavcodec/mjpeg_parser.c @@ -129,7 +129,7 @@ static int jpeg_parse(AVCodecParserContext *s, } -const AVCodecParser ff_mjpeg_parser = { +const FFCodecParser ff_mjpeg_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MJPEG, AV_CODEC_ID_JPEGLS), .priv_data_size = sizeof(MJPEGParserContext), .parser_parse = jpeg_parse, diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c index 6ed0fa20a8..20d01db943 100644 --- a/libavcodec/mlp_parser.c +++ b/libavcodec/mlp_parser.c @@ -205,7 +205,7 @@ lost_sync: return 1; } -const AVCodecParser ff_mlp_parser = { +const FFCodecParser ff_mlp_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MLP, AV_CODEC_ID_TRUEHD), .priv_data_size = sizeof(MLPParseContext), .parser_init = mlp_init, diff --git a/libavcodec/mpeg4video_parser.c b/libavcodec/mpeg4video_parser.c index 5a75e250d1..0bb63e1114 100644 --- a/libavcodec/mpeg4video_parser.c +++ b/libavcodec/mpeg4video_parser.c @@ -156,7 +156,7 @@ static int mpeg4video_parse(AVCodecParserContext *s, return next; } -const AVCodecParser ff_mpeg4video_parser = { +const FFCodecParser ff_mpeg4video_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MPEG4), .priv_data_size = sizeof(struct Mp4vParseContext), .parser_init = mpeg4video_parse_init, diff --git a/libavcodec/mpegaudio_parser.c b/libavcodec/mpegaudio_parser.c index 865d9298d3..6363f1f0a8 100644 --- a/libavcodec/mpegaudio_parser.c +++ b/libavcodec/mpegaudio_parser.c @@ -137,7 +137,7 @@ static int mpegaudio_parse(AVCodecParserContext *s1, } -const AVCodecParser ff_mpegaudio_parser = { +const FFCodecParser ff_mpegaudio_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MP1, AV_CODEC_ID_MP2, AV_CODEC_ID_MP3, AV_CODEC_ID_MP3ADU), .priv_data_size = sizeof(MpegAudioParseContext), diff --git a/libavcodec/mpegvideo_parser.c b/libavcodec/mpegvideo_parser.c index b80e70a740..48e0e31159 100644 --- a/libavcodec/mpegvideo_parser.c +++ b/libavcodec/mpegvideo_parser.c @@ -300,7 +300,7 @@ static av_cold int mpegvideo_parse_init(AVCodecParserContext *s) return 0; } -const AVCodecParser ff_mpegvideo_parser = { +const FFCodecParser ff_mpegvideo_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MPEG1VIDEO, AV_CODEC_ID_MPEG2VIDEO), .priv_data_size = sizeof(struct MpvParseContext), .parser_init = mpegvideo_parse_init, diff --git a/libavcodec/opus/parser.c b/libavcodec/opus/parser.c index 1fe011724c..fe6a03c783 100644 --- a/libavcodec/opus/parser.c +++ b/libavcodec/opus/parser.c @@ -214,7 +214,7 @@ fail: return buf_size; } -const AVCodecParser ff_opus_parser = { +const FFCodecParser ff_opus_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_OPUS), .priv_data_size = sizeof(OpusParserContext), .parser_parse = opus_parse, diff --git a/libavcodec/parser.c b/libavcodec/parser.c index af966766ee..701a962a56 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -29,11 +29,13 @@ #include "libavutil/mem.h" #include "parser.h" +#include "parser_internal.h" av_cold AVCodecParserContext *av_parser_init(int codec_id) { AVCodecParserContext *s = NULL; const AVCodecParser *parser; + const FFCodecParser *ffparser; void *i = 0; int ret; @@ -53,17 +55,18 @@ av_cold AVCodecParserContext *av_parser_init(int codec_id) return NULL; found: + ffparser = ffcodecparser(parser); s = av_mallocz(sizeof(AVCodecParserContext)); if (!s) goto err_out; s->parser = parser; - s->priv_data = av_mallocz(parser->priv_data_size); + s->priv_data = av_mallocz(ffparser->priv_data_size); if (!s->priv_data) goto err_out; s->fetch_timestamp=1; s->pict_type = AV_PICTURE_TYPE_I; - if (parser->parser_init) { - ret = parser->parser_init(s); + if (ffparser->parser_init) { + ret = ffparser->parser_init(s); if (ret != 0) goto err_out; } @@ -161,8 +164,8 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, ff_fetch_timestamp(s, 0, 0, 0); } /* WARNING: the returned index can be negative */ - index = s->parser->parser_parse(s, avctx, (const uint8_t **) poutbuf, - poutbuf_size, buf, buf_size); + index = ffcodecparser(s->parser)->parser_parse(s, avctx, (const uint8_t **) poutbuf, + poutbuf_size, buf, buf_size); av_assert0(index > -0x20000000); // The API does not allow returning AVERROR codes #define FILL(name) if(s->name > 0 && avctx->name <= 0) avctx->name = s->name if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { @@ -194,8 +197,8 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, av_cold void av_parser_close(AVCodecParserContext *s) { if (s) { - if (s->parser->parser_close) - s->parser->parser_close(s); + if (ffcodecparser(s->parser)->parser_close) + ffcodecparser(s->parser)->parser_close(s); av_freep(&s->priv_data); av_free(s); } diff --git a/libavcodec/parser_internal.h b/libavcodec/parser_internal.h index 81ccceeedf..69f72d9bf6 100644 --- a/libavcodec/parser_internal.h +++ b/libavcodec/parser_internal.h @@ -19,9 +19,44 @@ #ifndef AVCODEC_PARSER_INTERNAL_H #define AVCODEC_PARSER_INTERNAL_H +#include + #include "libavutil/macros.h" +#include "avcodec.h" #include "codec_id.h" +#if FF_API_PARSER_PRIVATE +typedef union FFCodecParser { + struct { + int codec_ids[7]; /* several codec IDs are permitted */ + int priv_data_size; + int (*parser_init)(AVCodecParserContext *s); + int (*parser_parse)(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size); + void (*parser_close)(AVCodecParserContext *s); + int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); + }; + AVCodecParser p; +#else +typedef struct FFCodecParser { + AVCodecParser p; + unsigned priv_data_size; + int (*parser_init)(AVCodecParserContext *s); + int (*parser_parse)(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size); + void (*parser_close)(AVCodecParserContext *s); +#endif +} FFCodecParser; + +static inline const FFCodecParser *ffcodecparser(const AVCodecParser *parser) +{ + return (const FFCodecParser*)parser; +} + #define EIGTH_ARG(a,b,c,d,e,f,g,h,...) h #define NO_FAIL // Expands to nothing if <= 7 args; induces compilation failure if not. @@ -32,7 +67,13 @@ #define FIRST_SEVEN2(a,b,c,d,e,f,g,...) a,b,c,d,e,f,g #define FIRST_SEVEN(...) PASSTHROUGH(FIRST_SEVEN2(__VA_ARGS__)) #define TIMES_SEVEN(a) a,a,a,a,a,a,a + +#if FF_API_PARSER_PRIVATE #define PARSER_CODEC_LIST(...) CHECK_FOR_TOO_MANY_IDS(__VA_ARGS__) \ .codec_ids = { FIRST_SEVEN(__VA_ARGS__, TIMES_SEVEN(AV_CODEC_ID_NONE)) } +#else +#define PARSER_CODEC_LIST(...) CHECK_FOR_TOO_MANY_IDS(__VA_ARGS__) \ + .p.codec_ids = { FIRST_SEVEN(__VA_ARGS__, TIMES_SEVEN(AV_CODEC_ID_NONE)) } +#endif #endif /* AVCODEC_PARSER_INTERNAL_H */ diff --git a/libavcodec/parsers.c b/libavcodec/parsers.c index 824a1ccd55..ee3f9ab12e 100644 --- a/libavcodec/parsers.c +++ b/libavcodec/parsers.c @@ -19,83 +19,98 @@ #include #include "avcodec.h" +#include "parser_internal.h" -extern const AVCodecParser ff_aac_parser; -extern const AVCodecParser ff_aac_latm_parser; -extern const AVCodecParser ff_ac3_parser; -extern const AVCodecParser ff_adx_parser; -extern const AVCodecParser ff_ahx_parser; -extern const AVCodecParser ff_amr_parser; -extern const AVCodecParser ff_apv_parser; -extern const AVCodecParser ff_av1_parser; -extern const AVCodecParser ff_avs2_parser; -extern const AVCodecParser ff_avs3_parser; -extern const AVCodecParser ff_bmp_parser; -extern const AVCodecParser ff_cavsvideo_parser; -extern const AVCodecParser ff_cook_parser; -extern const AVCodecParser ff_cri_parser; -extern const AVCodecParser ff_dca_parser; -extern const AVCodecParser ff_dirac_parser; -extern const AVCodecParser ff_dnxhd_parser; -extern const AVCodecParser ff_dnxuc_parser; -extern const AVCodecParser ff_dolby_e_parser; -extern const AVCodecParser ff_dpx_parser; -extern const AVCodecParser ff_dvaudio_parser; -extern const AVCodecParser ff_dvbsub_parser; -extern const AVCodecParser ff_dvdsub_parser; -extern const AVCodecParser ff_dvd_nav_parser; -extern const AVCodecParser ff_evc_parser; -extern const AVCodecParser ff_flac_parser; -extern const AVCodecParser ff_ftr_parser; -extern const AVCodecParser ff_ffv1_parser; -extern const AVCodecParser ff_g723_1_parser; -extern const AVCodecParser ff_g729_parser; -extern const AVCodecParser ff_gif_parser; -extern const AVCodecParser ff_gsm_parser; -extern const AVCodecParser ff_h261_parser; -extern const AVCodecParser ff_h263_parser; -extern const AVCodecParser ff_h264_parser; -extern const AVCodecParser ff_hevc_parser; -extern const AVCodecParser ff_hdr_parser; -extern const AVCodecParser ff_ipu_parser; -extern const AVCodecParser ff_jpeg2000_parser; -extern const AVCodecParser ff_jpegxl_parser; -extern const AVCodecParser ff_misc4_parser; -extern const AVCodecParser ff_mjpeg_parser; -extern const AVCodecParser ff_mlp_parser; -extern const AVCodecParser ff_mpeg4video_parser; -extern const AVCodecParser ff_mpegaudio_parser; -extern const AVCodecParser ff_mpegvideo_parser; -extern const AVCodecParser ff_opus_parser; -extern const AVCodecParser ff_prores_parser; -extern const AVCodecParser ff_png_parser; -extern const AVCodecParser ff_pnm_parser; -extern const AVCodecParser ff_prores_raw_parser; -extern const AVCodecParser ff_qoi_parser; -extern const AVCodecParser ff_rv34_parser; -extern const AVCodecParser ff_sbc_parser; -extern const AVCodecParser ff_sipr_parser; -extern const AVCodecParser ff_tak_parser; -extern const AVCodecParser ff_vc1_parser; -extern const AVCodecParser ff_vorbis_parser; -extern const AVCodecParser ff_vp3_parser; -extern const AVCodecParser ff_vp8_parser; -extern const AVCodecParser ff_vp9_parser; -extern const AVCodecParser ff_vvc_parser; -extern const AVCodecParser ff_webp_parser; -extern const AVCodecParser ff_xbm_parser; -extern const AVCodecParser ff_xma_parser; -extern const AVCodecParser ff_xwd_parser; +#if FF_API_PARSER_PRIVATE +#include +#include +#define CHECK_OFFSET(field) static_assert(offsetof(FFCodecParser, field) == offsetof(FFCodecParser, p.field), "Wrong offsets") +CHECK_OFFSET(codec_ids); +CHECK_OFFSET(priv_data_size); +CHECK_OFFSET(parser_init); +CHECK_OFFSET(parser_parse); +CHECK_OFFSET(parser_close); +CHECK_OFFSET(split); +#endif + +extern const FFCodecParser ff_aac_parser; +extern const FFCodecParser ff_aac_latm_parser; +extern const FFCodecParser ff_ac3_parser; +extern const FFCodecParser ff_adx_parser; +extern const FFCodecParser ff_ahx_parser; +extern const FFCodecParser ff_amr_parser; +extern const FFCodecParser ff_apv_parser; +extern const FFCodecParser ff_av1_parser; +extern const FFCodecParser ff_avs2_parser; +extern const FFCodecParser ff_avs3_parser; +extern const FFCodecParser ff_bmp_parser; +extern const FFCodecParser ff_cavsvideo_parser; +extern const FFCodecParser ff_cook_parser; +extern const FFCodecParser ff_cri_parser; +extern const FFCodecParser ff_dca_parser; +extern const FFCodecParser ff_dirac_parser; +extern const FFCodecParser ff_dnxhd_parser; +extern const FFCodecParser ff_dnxuc_parser; +extern const FFCodecParser ff_dolby_e_parser; +extern const FFCodecParser ff_dpx_parser; +extern const FFCodecParser ff_dvaudio_parser; +extern const FFCodecParser ff_dvbsub_parser; +extern const FFCodecParser ff_dvdsub_parser; +extern const FFCodecParser ff_dvd_nav_parser; +extern const FFCodecParser ff_evc_parser; +extern const FFCodecParser ff_flac_parser; +extern const FFCodecParser ff_ftr_parser; +extern const FFCodecParser ff_ffv1_parser; +extern const FFCodecParser ff_g723_1_parser; +extern const FFCodecParser ff_g729_parser; +extern const FFCodecParser ff_gif_parser; +extern const FFCodecParser ff_gsm_parser; +extern const FFCodecParser ff_h261_parser; +extern const FFCodecParser ff_h263_parser; +extern const FFCodecParser ff_h264_parser; +extern const FFCodecParser ff_hevc_parser; +extern const FFCodecParser ff_hdr_parser; +extern const FFCodecParser ff_ipu_parser; +extern const FFCodecParser ff_jpeg2000_parser; +extern const FFCodecParser ff_jpegxl_parser; +extern const FFCodecParser ff_misc4_parser; +extern const FFCodecParser ff_mjpeg_parser; +extern const FFCodecParser ff_mlp_parser; +extern const FFCodecParser ff_mpeg4video_parser; +extern const FFCodecParser ff_mpegaudio_parser; +extern const FFCodecParser ff_mpegvideo_parser; +extern const FFCodecParser ff_opus_parser; +extern const FFCodecParser ff_prores_parser; +extern const FFCodecParser ff_png_parser; +extern const FFCodecParser ff_pnm_parser; +extern const FFCodecParser ff_prores_raw_parser; +extern const FFCodecParser ff_qoi_parser; +extern const FFCodecParser ff_rv34_parser; +extern const FFCodecParser ff_sbc_parser; +extern const FFCodecParser ff_sipr_parser; +extern const FFCodecParser ff_tak_parser; +extern const FFCodecParser ff_vc1_parser; +extern const FFCodecParser ff_vorbis_parser; +extern const FFCodecParser ff_vp3_parser; +extern const FFCodecParser ff_vp8_parser; +extern const FFCodecParser ff_vp9_parser; +extern const FFCodecParser ff_vvc_parser; +extern const FFCodecParser ff_webp_parser; +extern const FFCodecParser ff_xbm_parser; +extern const FFCodecParser ff_xma_parser; +extern const FFCodecParser ff_xwd_parser; #include "libavcodec/parser_list.c" const AVCodecParser *av_parser_iterate(void **opaque) { uintptr_t i = (uintptr_t)*opaque; - const AVCodecParser *p = parser_list[i]; + const FFCodecParser *p = parser_list[i]; - if (p) + if (p) { *opaque = (void*)(i + 1); + return &p->p; + } - return p; + return NULL; } diff --git a/libavcodec/png_parser.c b/libavcodec/png_parser.c index e4af1f2e09..76af53197b 100644 --- a/libavcodec/png_parser.c +++ b/libavcodec/png_parser.c @@ -111,7 +111,7 @@ flush: return next; } -const AVCodecParser ff_png_parser = { +const FFCodecParser ff_png_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_PNG), .priv_data_size = sizeof(PNGParseContext), .parser_parse = png_parse, diff --git a/libavcodec/pnm_parser.c b/libavcodec/pnm_parser.c index 65dbaf86f6..3f106ca1c4 100644 --- a/libavcodec/pnm_parser.c +++ b/libavcodec/pnm_parser.c @@ -134,7 +134,7 @@ end: return next; } -const AVCodecParser ff_pnm_parser = { +const FFCodecParser ff_pnm_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_PGM, AV_CODEC_ID_PGMYUV, AV_CODEC_ID_PPM, AV_CODEC_ID_PBM, AV_CODEC_ID_PAM, AV_CODEC_ID_PFM, AV_CODEC_ID_PHM), diff --git a/libavcodec/prores_parser.c b/libavcodec/prores_parser.c index 9b66c3b415..c2c1729280 100644 --- a/libavcodec/prores_parser.c +++ b/libavcodec/prores_parser.c @@ -123,7 +123,7 @@ static int parse(AVCodecParserContext *s, return buf_size; } -const AVCodecParser ff_prores_parser = { +const FFCodecParser ff_prores_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_PRORES), .parser_parse = parse, }; diff --git a/libavcodec/prores_raw_parser.c b/libavcodec/prores_raw_parser.c index a3470d8cce..d571925841 100644 --- a/libavcodec/prores_raw_parser.c +++ b/libavcodec/prores_raw_parser.c @@ -81,7 +81,7 @@ static int prores_raw_parse(AVCodecParserContext *s, AVCodecContext *avctx, return buf_size; } -const AVCodecParser ff_prores_raw_parser = { +const FFCodecParser ff_prores_raw_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_PRORES_RAW), .parser_parse = prores_raw_parse, }; diff --git a/libavcodec/qoi_parser.c b/libavcodec/qoi_parser.c index 1c20d334d0..04c040c1ab 100644 --- a/libavcodec/qoi_parser.c +++ b/libavcodec/qoi_parser.c @@ -70,7 +70,7 @@ static int qoi_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_qoi_parser = { +const FFCodecParser ff_qoi_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_QOI), .priv_data_size = sizeof(QOIParseContext), .parser_parse = qoi_parse, diff --git a/libavcodec/rv34_parser.c b/libavcodec/rv34_parser.c index 3ce1abf60a..5d91b37d57 100644 --- a/libavcodec/rv34_parser.c +++ b/libavcodec/rv34_parser.c @@ -76,7 +76,7 @@ static int rv34_parse(AVCodecParserContext *s, return buf_size; } -const AVCodecParser ff_rv34_parser = { +const FFCodecParser ff_rv34_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_RV30, AV_CODEC_ID_RV40), .priv_data_size = sizeof(RV34ParseContext), .parser_parse = rv34_parse, diff --git a/libavcodec/sbc_parser.c b/libavcodec/sbc_parser.c index 9cd225aa7b..35e37601bc 100644 --- a/libavcodec/sbc_parser.c +++ b/libavcodec/sbc_parser.c @@ -117,7 +117,7 @@ static int sbc_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_sbc_parser = { +const FFCodecParser ff_sbc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_SBC), .priv_data_size = sizeof(SBCParseContext), .parser_parse = sbc_parse, diff --git a/libavcodec/sipr_parser.c b/libavcodec/sipr_parser.c index 89352663a5..d6e1ae295c 100644 --- a/libavcodec/sipr_parser.c +++ b/libavcodec/sipr_parser.c @@ -67,7 +67,7 @@ static int sipr_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return next; } -const AVCodecParser ff_sipr_parser = { +const FFCodecParser ff_sipr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_SIPR), .priv_data_size = sizeof(SiprParserContext), .parser_parse = sipr_parse, diff --git a/libavcodec/tak_parser.c b/libavcodec/tak_parser.c index 47931288b7..2c5af1019a 100644 --- a/libavcodec/tak_parser.c +++ b/libavcodec/tak_parser.c @@ -124,7 +124,7 @@ fail: return buf_size + consumed; } -const AVCodecParser ff_tak_parser = { +const FFCodecParser ff_tak_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_TAK), .priv_data_size = sizeof(TAKParseContext), .parser_parse = tak_parse, diff --git a/libavcodec/vc1_parser.c b/libavcodec/vc1_parser.c index 7215e84355..ef7878ef51 100644 --- a/libavcodec/vc1_parser.c +++ b/libavcodec/vc1_parser.c @@ -271,7 +271,7 @@ static av_cold int vc1_parse_init(AVCodecParserContext *s) return 0; } -const AVCodecParser ff_vc1_parser = { +const FFCodecParser ff_vc1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VC1), .priv_data_size = sizeof(VC1ParseContext), .parser_init = vc1_parse_init, diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h index 97e4e12065..be95bafca0 100644 --- a/libavcodec/version_major.h +++ b/libavcodec/version_major.h @@ -45,6 +45,8 @@ #define FF_API_NVDEC_OLD_PIX_FMTS (LIBAVCODEC_VERSION_MAJOR < 63) +#define FF_API_PARSER_PRIVATE (LIBAVCODEC_VERSION_MAJOR < 63) + // reminder to remove the OMX encoder on next major bump #define FF_CODEC_OMX (LIBAVCODEC_VERSION_MAJOR < 63) // reminder to remove Sonic Lossy/Lossless encoders on next major bump diff --git a/libavcodec/vorbis_parser.c b/libavcodec/vorbis_parser.c index a3b0a4e5c4..4290dd92ac 100644 --- a/libavcodec/vorbis_parser.c +++ b/libavcodec/vorbis_parser.c @@ -336,7 +336,7 @@ static av_cold void vorbis_parser_close(AVCodecParserContext *ctx) av_vorbis_parse_free(&s->vp); } -const AVCodecParser ff_vorbis_parser = { +const FFCodecParser ff_vorbis_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VORBIS), .priv_data_size = sizeof(VorbisParseContext), .parser_parse = vorbis_parse, diff --git a/libavcodec/vp3_parser.c b/libavcodec/vp3_parser.c index 9be3f70596..e5030c445d 100644 --- a/libavcodec/vp3_parser.c +++ b/libavcodec/vp3_parser.c @@ -36,7 +36,7 @@ static int parse(AVCodecParserContext *s, return buf_size; } -const AVCodecParser ff_vp3_parser = { +const FFCodecParser ff_vp3_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_THEORA, AV_CODEC_ID_VP3, AV_CODEC_ID_VP6, AV_CODEC_ID_VP6F, AV_CODEC_ID_VP6A), .parser_parse = parse, diff --git a/libavcodec/vp8_parser.c b/libavcodec/vp8_parser.c index 14c0c1462b..a6b01722fb 100644 --- a/libavcodec/vp8_parser.c +++ b/libavcodec/vp8_parser.c @@ -74,7 +74,7 @@ static int parse(AVCodecParserContext *s, return buf_size; } -const AVCodecParser ff_vp8_parser = { +const FFCodecParser ff_vp8_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VP8), .parser_parse = parse, }; diff --git a/libavcodec/vp9_parser.c b/libavcodec/vp9_parser.c index 7e1a06201a..007889220b 100644 --- a/libavcodec/vp9_parser.c +++ b/libavcodec/vp9_parser.c @@ -64,7 +64,7 @@ static int parse(AVCodecParserContext *ctx, return size; } -const AVCodecParser ff_vp9_parser = { +const FFCodecParser ff_vp9_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VP9), .parser_parse = parse, }; diff --git a/libavcodec/vvc_parser.c b/libavcodec/vvc_parser.c index 4453aaa61d..f134ab6df6 100644 --- a/libavcodec/vvc_parser.c +++ b/libavcodec/vvc_parser.c @@ -506,7 +506,7 @@ static av_cold void vvc_parser_close(AVCodecParserContext *s) av_freep(&ctx->pc.buffer); } -const AVCodecParser ff_vvc_parser = { +const FFCodecParser ff_vvc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VVC), .priv_data_size = sizeof(VVCParserContext), .parser_init = vvc_parser_init, diff --git a/libavcodec/webp_parser.c b/libavcodec/webp_parser.c index e3edc348e4..155af28f6c 100644 --- a/libavcodec/webp_parser.c +++ b/libavcodec/webp_parser.c @@ -105,7 +105,7 @@ flush: return next; } -const AVCodecParser ff_webp_parser = { +const FFCodecParser ff_webp_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_WEBP), .priv_data_size = sizeof(WebPParseContext), .parser_parse = webp_parse, diff --git a/libavcodec/xbm_parser.c b/libavcodec/xbm_parser.c index c7e7ce9282..936612d30f 100644 --- a/libavcodec/xbm_parser.c +++ b/libavcodec/xbm_parser.c @@ -101,7 +101,7 @@ static int xbm_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_xbm_parser = { +const FFCodecParser ff_xbm_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_XBM), .priv_data_size = sizeof(XBMParseContext), .parser_init = xbm_init, diff --git a/libavcodec/xma_parser.c b/libavcodec/xma_parser.c index eae39fd031..c2eea37833 100644 --- a/libavcodec/xma_parser.c +++ b/libavcodec/xma_parser.c @@ -56,7 +56,7 @@ static int xma_parse(AVCodecParserContext *s1, AVCodecContext *avctx, return buf_size; } -const AVCodecParser ff_xma_parser = { +const FFCodecParser ff_xma_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_XMA2), .priv_data_size = sizeof(XMAParserContext), .parser_parse = xma_parse, diff --git a/libavcodec/xwd_parser.c b/libavcodec/xwd_parser.c index cc554c3c97..1368283b21 100644 --- a/libavcodec/xwd_parser.c +++ b/libavcodec/xwd_parser.c @@ -96,7 +96,7 @@ static int xwd_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -const AVCodecParser ff_xwd_parser = { +const FFCodecParser ff_xwd_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_XWD), .priv_data_size = sizeof(XWDParseContext), .parser_parse = xwd_parse, -- 2.49.1 >>From 0ff910feb0e9414c00991f25469d43568b76b822 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 26 Oct 2025 14:42:59 +0100 Subject: [PATCH 4/5] avcodec/parser_internal: Remove prefix from parser_{init,parse,close} Signed-off-by: Andreas Rheinhardt --- libavcodec/aac_parser.c | 6 +++--- libavcodec/ac3_parser.c | 6 +++--- libavcodec/adx_parser.c | 4 ++-- libavcodec/ahx_parser.c | 4 ++-- libavcodec/amr_parser.c | 6 +++--- libavcodec/apv_parser.c | 6 +++--- libavcodec/av1_parser.c | 6 +++--- libavcodec/avs2_parser.c | 4 ++-- libavcodec/avs3_parser.c | 4 ++-- libavcodec/bmp_parser.c | 4 ++-- libavcodec/cavs_parser.c | 4 ++-- libavcodec/cook_parser.c | 2 +- libavcodec/cri_parser.c | 4 ++-- libavcodec/dca_parser.c | 6 +++--- libavcodec/dirac_parser.c | 4 ++-- libavcodec/dnxhd_parser.c | 4 ++-- libavcodec/dnxuc_parser.c | 4 ++-- libavcodec/dolby_e_parser.c | 2 +- libavcodec/dpx_parser.c | 4 ++-- libavcodec/dvaudio_parser.c | 2 +- libavcodec/dvbsub_parser.c | 2 +- libavcodec/dvd_nav_parser.c | 4 ++-- libavcodec/dvdsub_parser.c | 4 ++-- libavcodec/evc_parser.c | 4 ++-- libavcodec/ffv1_parser.c | 4 ++-- libavcodec/flac_parser.c | 6 +++--- libavcodec/ftr_parser.c | 4 ++-- libavcodec/g723_1_parser.c | 4 ++-- libavcodec/g729_parser.c | 4 ++-- libavcodec/gif_parser.c | 4 ++-- libavcodec/gsm_parser.c | 4 ++-- libavcodec/h261_parser.c | 4 ++-- libavcodec/h263_parser.c | 4 ++-- libavcodec/h264_parser.c | 6 +++--- libavcodec/hdr_parser.c | 4 ++-- libavcodec/hevc/parser.c | 4 ++-- libavcodec/ipu_parser.c | 4 ++-- libavcodec/jpeg2000_parser.c | 4 ++-- libavcodec/jpegxl_parser.c | 4 ++-- libavcodec/latm_parser.c | 4 ++-- libavcodec/misc4_parser.c | 4 ++-- libavcodec/mjpeg_parser.c | 4 ++-- libavcodec/mlp_parser.c | 6 +++--- libavcodec/mpeg4video_parser.c | 6 +++--- libavcodec/mpegaudio_parser.c | 4 ++-- libavcodec/mpegvideo_parser.c | 6 +++--- libavcodec/opus/parser.c | 4 ++-- libavcodec/parser.c | 12 ++++++------ libavcodec/parser_internal.h | 24 ++++++++++++------------ libavcodec/parsers.c | 14 +++++++------- libavcodec/png_parser.c | 4 ++-- libavcodec/pnm_parser.c | 4 ++-- libavcodec/prores_parser.c | 2 +- libavcodec/prores_raw_parser.c | 2 +- libavcodec/qoi_parser.c | 4 ++-- libavcodec/rv34_parser.c | 2 +- libavcodec/sbc_parser.c | 4 ++-- libavcodec/sipr_parser.c | 4 ++-- libavcodec/tak_parser.c | 4 ++-- libavcodec/vc1_parser.c | 6 +++--- libavcodec/vorbis_parser.c | 4 ++-- libavcodec/vp3_parser.c | 2 +- libavcodec/vp8_parser.c | 2 +- libavcodec/vp9_parser.c | 2 +- libavcodec/vvc_parser.c | 6 +++--- libavcodec/webp_parser.c | 4 ++-- libavcodec/xbm_parser.c | 6 +++--- libavcodec/xma_parser.c | 2 +- libavcodec/xwd_parser.c | 4 ++-- 69 files changed, 160 insertions(+), 160 deletions(-) diff --git a/libavcodec/aac_parser.c b/libavcodec/aac_parser.c index a58c07cae5..cad36d8171 100644 --- a/libavcodec/aac_parser.c +++ b/libavcodec/aac_parser.c @@ -55,7 +55,7 @@ static av_cold int aac_parse_init(AVCodecParserContext *s1) const FFCodecParser ff_aac_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AAC), .priv_data_size = sizeof(AACAC3ParseContext), - .parser_init = aac_parse_init, - .parser_parse = ff_aac_ac3_parse, - .parser_close = ff_parse_close, + .init = aac_parse_init, + .parse = ff_aac_ac3_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c index de3f6938eb..232c96d517 100644 --- a/libavcodec/ac3_parser.c +++ b/libavcodec/ac3_parser.c @@ -481,9 +481,9 @@ static av_cold int ac3_parse_init(AVCodecParserContext *s1) const FFCodecParser ff_ac3_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AC3, AV_CODEC_ID_EAC3), .priv_data_size = sizeof(AACAC3ParseContext), - .parser_init = ac3_parse_init, - .parser_parse = ff_aac_ac3_parse, - .parser_close = ff_parse_close, + .init = ac3_parse_init, + .parse = ff_aac_ac3_parse, + .close = ff_parse_close, }; #else diff --git a/libavcodec/adx_parser.c b/libavcodec/adx_parser.c index 480b915c23..c897ba223a 100644 --- a/libavcodec/adx_parser.c +++ b/libavcodec/adx_parser.c @@ -101,6 +101,6 @@ static int adx_parse(AVCodecParserContext *s1, const FFCodecParser ff_adx_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_ADPCM_ADX), .priv_data_size = sizeof(ADXParseContext), - .parser_parse = adx_parse, - .parser_close = ff_parse_close, + .parse = adx_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/ahx_parser.c b/libavcodec/ahx_parser.c index 0e7b9b6e19..2aeaf8b56e 100644 --- a/libavcodec/ahx_parser.c +++ b/libavcodec/ahx_parser.c @@ -74,6 +74,6 @@ static int ahx_parse(AVCodecParserContext *s1, const FFCodecParser ff_ahx_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AHX), .priv_data_size = sizeof(AHXParseContext), - .parser_parse = ahx_parse, - .parser_close = ff_parse_close, + .parse = ahx_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/amr_parser.c b/libavcodec/amr_parser.c index 821c04c625..5ee1829c49 100644 --- a/libavcodec/amr_parser.c +++ b/libavcodec/amr_parser.c @@ -126,7 +126,7 @@ static int amr_parse(AVCodecParserContext *s1, const FFCodecParser ff_amr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AMR_NB, AV_CODEC_ID_AMR_WB), .priv_data_size = sizeof(AMRParseContext), - .parser_init = amr_parse_init, - .parser_parse = amr_parse, - .parser_close = ff_parse_close, + .init = amr_parse_init, + .parse = amr_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/apv_parser.c b/libavcodec/apv_parser.c index 02791bceda..dbecbb5a5e 100644 --- a/libavcodec/apv_parser.c +++ b/libavcodec/apv_parser.c @@ -144,7 +144,7 @@ static av_cold void close(AVCodecParserContext *s) const FFCodecParser ff_apv_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_APV), .priv_data_size = sizeof(APVParseContext), - .parser_init = init, - .parser_parse = parse, - .parser_close = close, + .init = init, + .parse = parse, + .close = close, }; diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c index 87510dfbb5..32135a23cb 100644 --- a/libavcodec/av1_parser.c +++ b/libavcodec/av1_parser.c @@ -213,7 +213,7 @@ static av_cold void av1_parser_close(AVCodecParserContext *ctx) const FFCodecParser ff_av1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AV1), .priv_data_size = sizeof(AV1ParseContext), - .parser_init = av1_parser_init, - .parser_close = av1_parser_close, - .parser_parse = av1_parser_parse, + .init = av1_parser_init, + .close = av1_parser_close, + .parse = av1_parser_parse, }; diff --git a/libavcodec/avs2_parser.c b/libavcodec/avs2_parser.c index b96faddabb..68b6f20c18 100644 --- a/libavcodec/avs2_parser.c +++ b/libavcodec/avs2_parser.c @@ -193,6 +193,6 @@ static int avs2_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_avs2_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AVS2), .priv_data_size = sizeof(ParseContext), - .parser_parse = avs2_parse, - .parser_close = ff_parse_close, + .parse = avs2_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/avs3_parser.c b/libavcodec/avs3_parser.c index c7cfe67b20..825eae0526 100644 --- a/libavcodec/avs3_parser.c +++ b/libavcodec/avs3_parser.c @@ -176,6 +176,6 @@ static int avs3_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_avs3_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AVS3), .priv_data_size = sizeof(ParseContext), - .parser_parse = avs3_parse, - .parser_close = ff_parse_close, + .parse = avs3_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/bmp_parser.c b/libavcodec/bmp_parser.c index a4bdf6a025..5a6e957623 100644 --- a/libavcodec/bmp_parser.c +++ b/libavcodec/bmp_parser.c @@ -109,6 +109,6 @@ flush: const FFCodecParser ff_bmp_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_BMP), .priv_data_size = sizeof(BMPParseContext), - .parser_parse = bmp_parse, - .parser_close = ff_parse_close, + .parse = bmp_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/cavs_parser.c b/libavcodec/cavs_parser.c index ea36896f5c..13fbd009c8 100644 --- a/libavcodec/cavs_parser.c +++ b/libavcodec/cavs_parser.c @@ -100,6 +100,6 @@ static int cavsvideo_parse(AVCodecParserContext *s, const FFCodecParser ff_cavsvideo_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_CAVS), .priv_data_size = sizeof(ParseContext), - .parser_parse = cavsvideo_parse, - .parser_close = ff_parse_close, + .parse = cavsvideo_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/cook_parser.c b/libavcodec/cook_parser.c index a8d4081235..8e8f6db4c6 100644 --- a/libavcodec/cook_parser.c +++ b/libavcodec/cook_parser.c @@ -57,5 +57,5 @@ static int cook_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_cook_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_COOK), .priv_data_size = sizeof(CookParseContext), - .parser_parse = cook_parse, + .parse = cook_parse, }; diff --git a/libavcodec/cri_parser.c b/libavcodec/cri_parser.c index ecf4145cae..cd0c45f415 100644 --- a/libavcodec/cri_parser.c +++ b/libavcodec/cri_parser.c @@ -101,6 +101,6 @@ static int cri_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_cri_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_CRI), .priv_data_size = sizeof(CRIParser), - .parser_parse = cri_parse, - .parser_close = ff_parse_close, + .parse = cri_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/dca_parser.c b/libavcodec/dca_parser.c index 61b188a902..aaf4f42221 100644 --- a/libavcodec/dca_parser.c +++ b/libavcodec/dca_parser.c @@ -347,7 +347,7 @@ static int dca_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_dca_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DTS), .priv_data_size = sizeof(DCAParseContext), - .parser_init = dca_parse_init, - .parser_parse = dca_parse, - .parser_close = ff_parse_close, + .init = dca_parse_init, + .parse = dca_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/dirac_parser.c b/libavcodec/dirac_parser.c index f5ac808d70..d9cf44383a 100644 --- a/libavcodec/dirac_parser.c +++ b/libavcodec/dirac_parser.c @@ -278,6 +278,6 @@ static av_cold void dirac_parse_close(AVCodecParserContext *s) const FFCodecParser ff_dirac_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DIRAC), .priv_data_size = sizeof(DiracParseContext), - .parser_parse = dirac_parse, - .parser_close = dirac_parse_close, + .parse = dirac_parse, + .close = dirac_parse_close, }; diff --git a/libavcodec/dnxhd_parser.c b/libavcodec/dnxhd_parser.c index a51f05d458..3ab08d0974 100644 --- a/libavcodec/dnxhd_parser.c +++ b/libavcodec/dnxhd_parser.c @@ -142,6 +142,6 @@ static int dnxhd_parse(AVCodecParserContext *s, const FFCodecParser ff_dnxhd_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DNXHD), .priv_data_size = sizeof(DNXHDParserContext), - .parser_parse = dnxhd_parse, - .parser_close = ff_parse_close, + .parse = dnxhd_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/dnxuc_parser.c b/libavcodec/dnxuc_parser.c index 6c41e3139d..b14cd519ab 100644 --- a/libavcodec/dnxuc_parser.c +++ b/libavcodec/dnxuc_parser.c @@ -85,6 +85,6 @@ static int dnxuc_parse(AVCodecParserContext *s, const FFCodecParser ff_dnxuc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DNXUC), .priv_data_size = sizeof(DNxUcParseContext), - .parser_parse = dnxuc_parse, - .parser_close = ff_parse_close, + .parse = dnxuc_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/dolby_e_parser.c b/libavcodec/dolby_e_parser.c index c685e30ddb..b7150795c0 100644 --- a/libavcodec/dolby_e_parser.c +++ b/libavcodec/dolby_e_parser.c @@ -69,5 +69,5 @@ end: const FFCodecParser ff_dolby_e_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DOLBY_E), .priv_data_size = sizeof(DBEParseContext), - .parser_parse = dolby_e_parse, + .parse = dolby_e_parse, }; diff --git a/libavcodec/dpx_parser.c b/libavcodec/dpx_parser.c index d87ae38348..2b21d0f7ac 100644 --- a/libavcodec/dpx_parser.c +++ b/libavcodec/dpx_parser.c @@ -112,6 +112,6 @@ flush: const FFCodecParser ff_dpx_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DPX), .priv_data_size = sizeof(DPXParseContext), - .parser_parse = dpx_parse, - .parser_close = ff_parse_close, + .parse = dpx_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/dvaudio_parser.c b/libavcodec/dvaudio_parser.c index 7463db35c0..4edd254a2f 100644 --- a/libavcodec/dvaudio_parser.c +++ b/libavcodec/dvaudio_parser.c @@ -43,5 +43,5 @@ static int dvaudio_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_dvaudio_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVAUDIO), - .parser_parse = dvaudio_parse, + .parse = dvaudio_parse, }; diff --git a/libavcodec/dvbsub_parser.c b/libavcodec/dvbsub_parser.c index 396b4d90f0..4527e4dd75 100644 --- a/libavcodec/dvbsub_parser.c +++ b/libavcodec/dvbsub_parser.c @@ -167,5 +167,5 @@ static int dvbsub_parse(AVCodecParserContext *s, const FFCodecParser ff_dvbsub_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVB_SUBTITLE), .priv_data_size = sizeof(DVBSubParseContext), - .parser_parse = dvbsub_parse, + .parse = dvbsub_parse, }; diff --git a/libavcodec/dvd_nav_parser.c b/libavcodec/dvd_nav_parser.c index 69e6d828eb..ec4aba18fb 100644 --- a/libavcodec/dvd_nav_parser.c +++ b/libavcodec/dvd_nav_parser.c @@ -111,6 +111,6 @@ static int dvd_nav_parse(AVCodecParserContext *s, const FFCodecParser ff_dvd_nav_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVD_NAV), .priv_data_size = sizeof(DVDNavParseContext), - .parser_init = dvd_nav_parse_init, - .parser_parse = dvd_nav_parse, + .init = dvd_nav_parse_init, + .parse = dvd_nav_parse, }; diff --git a/libavcodec/dvdsub_parser.c b/libavcodec/dvdsub_parser.c index cf86b67944..e728c8120d 100644 --- a/libavcodec/dvdsub_parser.c +++ b/libavcodec/dvdsub_parser.c @@ -88,6 +88,6 @@ static av_cold void dvdsub_parse_close(AVCodecParserContext *s) const FFCodecParser ff_dvdsub_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_DVD_SUBTITLE), .priv_data_size = sizeof(DVDSubParseContext), - .parser_parse = dvdsub_parse, - .parser_close = dvdsub_parse_close, + .parse = dvdsub_parse, + .close = dvdsub_parse_close, }; diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c index 8f858c9be8..f08006d005 100644 --- a/libavcodec/evc_parser.c +++ b/libavcodec/evc_parser.c @@ -375,6 +375,6 @@ static av_cold void evc_parser_close(AVCodecParserContext *s) const FFCodecParser ff_evc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_EVC), .priv_data_size = sizeof(EVCParserContext), - .parser_parse = evc_parse, - .parser_close = evc_parser_close, + .parse = evc_parse, + .close = evc_parser_close, }; diff --git a/libavcodec/ffv1_parser.c b/libavcodec/ffv1_parser.c index f444461647..f378970bff 100644 --- a/libavcodec/ffv1_parser.c +++ b/libavcodec/ffv1_parser.c @@ -84,6 +84,6 @@ static av_cold void ffv1_close(AVCodecParserContext *s) const FFCodecParser ff_ffv1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_FFV1), .priv_data_size = sizeof(FFV1ParseContext), - .parser_parse = parse, - .parser_close = ffv1_close, + .parse = parse, + .close = ffv1_close, }; diff --git a/libavcodec/flac_parser.c b/libavcodec/flac_parser.c index 340ff68f25..9a5f5fd03a 100644 --- a/libavcodec/flac_parser.c +++ b/libavcodec/flac_parser.c @@ -906,7 +906,7 @@ static av_cold void flac_parse_close(AVCodecParserContext *c) const FFCodecParser ff_flac_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_FLAC), .priv_data_size = sizeof(FLACParseContext), - .parser_init = flac_parse_init, - .parser_parse = flac_parse, - .parser_close = flac_parse_close, + .init = flac_parse_init, + .parse = flac_parse, + .close = flac_parse_close, }; diff --git a/libavcodec/ftr_parser.c b/libavcodec/ftr_parser.c index 24ef405488..a45edcf457 100644 --- a/libavcodec/ftr_parser.c +++ b/libavcodec/ftr_parser.c @@ -100,6 +100,6 @@ static int ftr_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_ftr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_FTR), .priv_data_size = sizeof(FTRParseContext), - .parser_parse = ftr_parse, - .parser_close = ff_parse_close, + .parse = ftr_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/g723_1_parser.c b/libavcodec/g723_1_parser.c index 70a83e3e1b..e2fba33ca6 100644 --- a/libavcodec/g723_1_parser.c +++ b/libavcodec/g723_1_parser.c @@ -56,6 +56,6 @@ static int g723_1_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_g723_1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_G723_1), .priv_data_size = sizeof(G723_1ParseContext), - .parser_parse = g723_1_parse, - .parser_close = ff_parse_close, + .parse = g723_1_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/g729_parser.c b/libavcodec/g729_parser.c index 17b8415584..5e085aab28 100644 --- a/libavcodec/g729_parser.c +++ b/libavcodec/g729_parser.c @@ -88,6 +88,6 @@ static int g729_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_g729_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_G729, AV_CODEC_ID_ACELP_KELVIN), .priv_data_size = sizeof(G729ParseContext), - .parser_parse = g729_parse, - .parser_close = ff_parse_close, + .parse = g729_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/gif_parser.c b/libavcodec/gif_parser.c index c95e9430fd..7204d71d55 100644 --- a/libavcodec/gif_parser.c +++ b/libavcodec/gif_parser.c @@ -204,6 +204,6 @@ static int gif_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_gif_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_GIF), .priv_data_size = sizeof(GIFParseContext), - .parser_parse = gif_parse, - .parser_close = ff_parse_close, + .parse = gif_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/gsm_parser.c b/libavcodec/gsm_parser.c index 1823ff3188..5d448cc3e2 100644 --- a/libavcodec/gsm_parser.c +++ b/libavcodec/gsm_parser.c @@ -87,6 +87,6 @@ static int gsm_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_gsm_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_GSM, AV_CODEC_ID_GSM_MS), .priv_data_size = sizeof(GSMParseContext), - .parser_parse = gsm_parse, - .parser_close = ff_parse_close, + .parse = gsm_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/h261_parser.c b/libavcodec/h261_parser.c index cedcdfe038..c08cff3344 100644 --- a/libavcodec/h261_parser.c +++ b/libavcodec/h261_parser.c @@ -90,6 +90,6 @@ static int h261_parse(AVCodecParserContext *s, const FFCodecParser ff_h261_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_H261), .priv_data_size = sizeof(ParseContext), - .parser_parse = h261_parse, - .parser_close = ff_parse_close, + .parse = h261_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/h263_parser.c b/libavcodec/h263_parser.c index 939a839e8e..3fc969c331 100644 --- a/libavcodec/h263_parser.c +++ b/libavcodec/h263_parser.c @@ -91,6 +91,6 @@ static int h263_parse(AVCodecParserContext *s, const FFCodecParser ff_h263_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_H263), .priv_data_size = sizeof(ParseContext), - .parser_parse = h263_parse, - .parser_close = ff_parse_close, + .parse = h263_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index baed7a3e34..040739a1d4 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -686,7 +686,7 @@ static av_cold int init(AVCodecParserContext *s) const FFCodecParser ff_h264_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_H264), .priv_data_size = sizeof(H264ParseContext), - .parser_init = init, - .parser_parse = h264_parse, - .parser_close = h264_close, + .init = init, + .parse = h264_parse, + .close = h264_close, }; diff --git a/libavcodec/hdr_parser.c b/libavcodec/hdr_parser.c index eb34803c73..0fdfcb5c5a 100644 --- a/libavcodec/hdr_parser.c +++ b/libavcodec/hdr_parser.c @@ -75,6 +75,6 @@ static int hdr_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_hdr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_RADIANCE_HDR), .priv_data_size = sizeof(HDRParseContext), - .parser_parse = hdr_parse, - .parser_close = ff_parse_close, + .parse = hdr_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/hevc/parser.c b/libavcodec/hevc/parser.c index 43f895ad57..62bcd91172 100644 --- a/libavcodec/hevc/parser.c +++ b/libavcodec/hevc/parser.c @@ -356,6 +356,6 @@ static void hevc_parser_close(AVCodecParserContext *s) const FFCodecParser ff_hevc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_HEVC), .priv_data_size = sizeof(HEVCParserContext), - .parser_parse = hevc_parse, - .parser_close = hevc_parser_close, + .parse = hevc_parse, + .close = hevc_parser_close, }; diff --git a/libavcodec/ipu_parser.c b/libavcodec/ipu_parser.c index d2ff23e7b2..324f0898e9 100644 --- a/libavcodec/ipu_parser.c +++ b/libavcodec/ipu_parser.c @@ -73,6 +73,6 @@ static int ipu_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_ipu_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_IPU), .priv_data_size = sizeof(IPUParseContext), - .parser_parse = ipu_parse, - .parser_close = ff_parse_close, + .parse = ipu_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/jpeg2000_parser.c b/libavcodec/jpeg2000_parser.c index 2e6d91ee59..a5dcc9c9f1 100644 --- a/libavcodec/jpeg2000_parser.c +++ b/libavcodec/jpeg2000_parser.c @@ -215,6 +215,6 @@ static int jpeg2000_parse(AVCodecParserContext *s, const FFCodecParser ff_jpeg2000_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_JPEG2000), .priv_data_size = sizeof(JPEG2000ParserContext), - .parser_parse = jpeg2000_parse, - .parser_close = ff_parse_close, + .parse = jpeg2000_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/jpegxl_parser.c b/libavcodec/jpegxl_parser.c index 8a6bafdf92..a16a2733f9 100644 --- a/libavcodec/jpegxl_parser.c +++ b/libavcodec/jpegxl_parser.c @@ -1549,6 +1549,6 @@ flush: const FFCodecParser ff_jpegxl_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_JPEGXL, AV_CODEC_ID_JPEGXL_ANIM), .priv_data_size = sizeof(JXLParseContext), - .parser_parse = jpegxl_parse, - .parser_close = ff_parse_close, + .parse = jpegxl_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/latm_parser.c b/libavcodec/latm_parser.c index 6cd1eb3379..c77bcbaa22 100644 --- a/libavcodec/latm_parser.c +++ b/libavcodec/latm_parser.c @@ -108,6 +108,6 @@ static int latm_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_aac_latm_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_AAC_LATM), .priv_data_size = sizeof(LATMParseContext), - .parser_parse = latm_parse, - .parser_close = ff_parse_close + .parse = latm_parse, + .close = ff_parse_close }; diff --git a/libavcodec/misc4_parser.c b/libavcodec/misc4_parser.c index 332e79875e..df1bbd07b4 100644 --- a/libavcodec/misc4_parser.c +++ b/libavcodec/misc4_parser.c @@ -77,6 +77,6 @@ static int misc4_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_misc4_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MISC4), .priv_data_size = sizeof(MISC4Context), - .parser_parse = misc4_parse, - .parser_close = ff_parse_close, + .parse = misc4_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/mjpeg_parser.c b/libavcodec/mjpeg_parser.c index 99ac75771e..66f364d8f9 100644 --- a/libavcodec/mjpeg_parser.c +++ b/libavcodec/mjpeg_parser.c @@ -132,6 +132,6 @@ static int jpeg_parse(AVCodecParserContext *s, const FFCodecParser ff_mjpeg_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MJPEG, AV_CODEC_ID_JPEGLS), .priv_data_size = sizeof(MJPEGParserContext), - .parser_parse = jpeg_parse, - .parser_close = ff_parse_close, + .parse = jpeg_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c index 20d01db943..4f348c5d4d 100644 --- a/libavcodec/mlp_parser.c +++ b/libavcodec/mlp_parser.c @@ -208,7 +208,7 @@ lost_sync: const FFCodecParser ff_mlp_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MLP, AV_CODEC_ID_TRUEHD), .priv_data_size = sizeof(MLPParseContext), - .parser_init = mlp_init, - .parser_parse = mlp_parse, - .parser_close = ff_parse_close, + .init = mlp_init, + .parse = mlp_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/mpeg4video_parser.c b/libavcodec/mpeg4video_parser.c index 0bb63e1114..fe6d333fc9 100644 --- a/libavcodec/mpeg4video_parser.c +++ b/libavcodec/mpeg4video_parser.c @@ -159,7 +159,7 @@ static int mpeg4video_parse(AVCodecParserContext *s, const FFCodecParser ff_mpeg4video_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MPEG4), .priv_data_size = sizeof(struct Mp4vParseContext), - .parser_init = mpeg4video_parse_init, - .parser_parse = mpeg4video_parse, - .parser_close = ff_parse_close, + .init = mpeg4video_parse_init, + .parse = mpeg4video_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/mpegaudio_parser.c b/libavcodec/mpegaudio_parser.c index 6363f1f0a8..8c33d36dfe 100644 --- a/libavcodec/mpegaudio_parser.c +++ b/libavcodec/mpegaudio_parser.c @@ -141,6 +141,6 @@ const FFCodecParser ff_mpegaudio_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MP1, AV_CODEC_ID_MP2, AV_CODEC_ID_MP3, AV_CODEC_ID_MP3ADU), .priv_data_size = sizeof(MpegAudioParseContext), - .parser_parse = mpegaudio_parse, - .parser_close = ff_parse_close, + .parse = mpegaudio_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/mpegvideo_parser.c b/libavcodec/mpegvideo_parser.c index 48e0e31159..1afb695d09 100644 --- a/libavcodec/mpegvideo_parser.c +++ b/libavcodec/mpegvideo_parser.c @@ -303,7 +303,7 @@ static av_cold int mpegvideo_parse_init(AVCodecParserContext *s) const FFCodecParser ff_mpegvideo_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_MPEG1VIDEO, AV_CODEC_ID_MPEG2VIDEO), .priv_data_size = sizeof(struct MpvParseContext), - .parser_init = mpegvideo_parse_init, - .parser_parse = mpegvideo_parse, - .parser_close = ff_parse_close, + .init = mpegvideo_parse_init, + .parse = mpegvideo_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/opus/parser.c b/libavcodec/opus/parser.c index fe6a03c783..ae3d66592c 100644 --- a/libavcodec/opus/parser.c +++ b/libavcodec/opus/parser.c @@ -217,6 +217,6 @@ fail: const FFCodecParser ff_opus_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_OPUS), .priv_data_size = sizeof(OpusParserContext), - .parser_parse = opus_parse, - .parser_close = ff_parse_close + .parse = opus_parse, + .close = ff_parse_close }; diff --git a/libavcodec/parser.c b/libavcodec/parser.c index 701a962a56..789bd9d1f1 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -65,8 +65,8 @@ found: goto err_out; s->fetch_timestamp=1; s->pict_type = AV_PICTURE_TYPE_I; - if (ffparser->parser_init) { - ret = ffparser->parser_init(s); + if (ffparser->init) { + ret = ffparser->init(s); if (ret != 0) goto err_out; } @@ -164,8 +164,8 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, ff_fetch_timestamp(s, 0, 0, 0); } /* WARNING: the returned index can be negative */ - index = ffcodecparser(s->parser)->parser_parse(s, avctx, (const uint8_t **) poutbuf, - poutbuf_size, buf, buf_size); + index = ffcodecparser(s->parser)->parse(s, avctx, (const uint8_t **) poutbuf, + poutbuf_size, buf, buf_size); av_assert0(index > -0x20000000); // The API does not allow returning AVERROR codes #define FILL(name) if(s->name > 0 && avctx->name <= 0) avctx->name = s->name if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { @@ -197,8 +197,8 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, av_cold void av_parser_close(AVCodecParserContext *s) { if (s) { - if (ffcodecparser(s->parser)->parser_close) - ffcodecparser(s->parser)->parser_close(s); + if (ffcodecparser(s->parser)->close) + ffcodecparser(s->parser)->close(s); av_freep(&s->priv_data); av_free(s); } diff --git a/libavcodec/parser_internal.h b/libavcodec/parser_internal.h index 69f72d9bf6..cb1995de8b 100644 --- a/libavcodec/parser_internal.h +++ b/libavcodec/parser_internal.h @@ -30,12 +30,12 @@ typedef union FFCodecParser { struct { int codec_ids[7]; /* several codec IDs are permitted */ int priv_data_size; - int (*parser_init)(AVCodecParserContext *s); - int (*parser_parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - void (*parser_close)(AVCodecParserContext *s); + int (*init)(AVCodecParserContext *s); + int (*parse)(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size); + void (*close)(AVCodecParserContext *s); int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); }; AVCodecParser p; @@ -43,12 +43,12 @@ typedef union FFCodecParser { typedef struct FFCodecParser { AVCodecParser p; unsigned priv_data_size; - int (*parser_init)(AVCodecParserContext *s); - int (*parser_parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - void (*parser_close)(AVCodecParserContext *s); + int (*init)(AVCodecParserContext *s); + int (*parse)(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size); + void (*close)(AVCodecParserContext *s); #endif } FFCodecParser; diff --git a/libavcodec/parsers.c b/libavcodec/parsers.c index ee3f9ab12e..c3460a3b86 100644 --- a/libavcodec/parsers.c +++ b/libavcodec/parsers.c @@ -24,13 +24,13 @@ #if FF_API_PARSER_PRIVATE #include #include -#define CHECK_OFFSET(field) static_assert(offsetof(FFCodecParser, field) == offsetof(FFCodecParser, p.field), "Wrong offsets") -CHECK_OFFSET(codec_ids); -CHECK_OFFSET(priv_data_size); -CHECK_OFFSET(parser_init); -CHECK_OFFSET(parser_parse); -CHECK_OFFSET(parser_close); -CHECK_OFFSET(split); +#define CHECK_OFFSET(field, public_prefix) static_assert(offsetof(FFCodecParser, field) == offsetof(FFCodecParser, p.public_prefix ## field), "Wrong offsets") +CHECK_OFFSET(codec_ids,); +CHECK_OFFSET(priv_data_size,); +CHECK_OFFSET(init, parser_); +CHECK_OFFSET(parse, parser_); +CHECK_OFFSET(close, parser_); +CHECK_OFFSET(split,); #endif extern const FFCodecParser ff_aac_parser; diff --git a/libavcodec/png_parser.c b/libavcodec/png_parser.c index 76af53197b..fbeae1103b 100644 --- a/libavcodec/png_parser.c +++ b/libavcodec/png_parser.c @@ -114,6 +114,6 @@ flush: const FFCodecParser ff_png_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_PNG), .priv_data_size = sizeof(PNGParseContext), - .parser_parse = png_parse, - .parser_close = ff_parse_close, + .parse = png_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/pnm_parser.c b/libavcodec/pnm_parser.c index 3f106ca1c4..27030f8512 100644 --- a/libavcodec/pnm_parser.c +++ b/libavcodec/pnm_parser.c @@ -139,6 +139,6 @@ const FFCodecParser ff_pnm_parser = { AV_CODEC_ID_PBM, AV_CODEC_ID_PAM, AV_CODEC_ID_PFM, AV_CODEC_ID_PHM), .priv_data_size = sizeof(PNMParseContext), - .parser_parse = pnm_parse, - .parser_close = ff_parse_close, + .parse = pnm_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/prores_parser.c b/libavcodec/prores_parser.c index c2c1729280..aadf76d793 100644 --- a/libavcodec/prores_parser.c +++ b/libavcodec/prores_parser.c @@ -125,5 +125,5 @@ static int parse(AVCodecParserContext *s, const FFCodecParser ff_prores_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_PRORES), - .parser_parse = parse, + .parse = parse, }; diff --git a/libavcodec/prores_raw_parser.c b/libavcodec/prores_raw_parser.c index d571925841..52650e71a5 100644 --- a/libavcodec/prores_raw_parser.c +++ b/libavcodec/prores_raw_parser.c @@ -83,5 +83,5 @@ static int prores_raw_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_prores_raw_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_PRORES_RAW), - .parser_parse = prores_raw_parse, + .parse = prores_raw_parse, }; diff --git a/libavcodec/qoi_parser.c b/libavcodec/qoi_parser.c index 04c040c1ab..f7bf2a05bb 100644 --- a/libavcodec/qoi_parser.c +++ b/libavcodec/qoi_parser.c @@ -73,6 +73,6 @@ static int qoi_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_qoi_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_QOI), .priv_data_size = sizeof(QOIParseContext), - .parser_parse = qoi_parse, - .parser_close = ff_parse_close, + .parse = qoi_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/rv34_parser.c b/libavcodec/rv34_parser.c index 5d91b37d57..c3aa8357df 100644 --- a/libavcodec/rv34_parser.c +++ b/libavcodec/rv34_parser.c @@ -79,5 +79,5 @@ static int rv34_parse(AVCodecParserContext *s, const FFCodecParser ff_rv34_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_RV30, AV_CODEC_ID_RV40), .priv_data_size = sizeof(RV34ParseContext), - .parser_parse = rv34_parse, + .parse = rv34_parse, }; diff --git a/libavcodec/sbc_parser.c b/libavcodec/sbc_parser.c index 35e37601bc..58150885e2 100644 --- a/libavcodec/sbc_parser.c +++ b/libavcodec/sbc_parser.c @@ -120,6 +120,6 @@ static int sbc_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_sbc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_SBC), .priv_data_size = sizeof(SBCParseContext), - .parser_parse = sbc_parse, - .parser_close = ff_parse_close, + .parse = sbc_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/sipr_parser.c b/libavcodec/sipr_parser.c index d6e1ae295c..82a37c690b 100644 --- a/libavcodec/sipr_parser.c +++ b/libavcodec/sipr_parser.c @@ -70,6 +70,6 @@ static int sipr_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_sipr_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_SIPR), .priv_data_size = sizeof(SiprParserContext), - .parser_parse = sipr_parse, - .parser_close = ff_parse_close, + .parse = sipr_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/tak_parser.c b/libavcodec/tak_parser.c index 2c5af1019a..060a90fac1 100644 --- a/libavcodec/tak_parser.c +++ b/libavcodec/tak_parser.c @@ -127,6 +127,6 @@ fail: const FFCodecParser ff_tak_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_TAK), .priv_data_size = sizeof(TAKParseContext), - .parser_parse = tak_parse, - .parser_close = ff_parse_close, + .parse = tak_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/vc1_parser.c b/libavcodec/vc1_parser.c index ef7878ef51..4e7d3de165 100644 --- a/libavcodec/vc1_parser.c +++ b/libavcodec/vc1_parser.c @@ -274,7 +274,7 @@ static av_cold int vc1_parse_init(AVCodecParserContext *s) const FFCodecParser ff_vc1_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VC1), .priv_data_size = sizeof(VC1ParseContext), - .parser_init = vc1_parse_init, - .parser_parse = vc1_parse, - .parser_close = ff_parse_close, + .init = vc1_parse_init, + .parse = vc1_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/vorbis_parser.c b/libavcodec/vorbis_parser.c index 4290dd92ac..88b81fcb53 100644 --- a/libavcodec/vorbis_parser.c +++ b/libavcodec/vorbis_parser.c @@ -339,7 +339,7 @@ static av_cold void vorbis_parser_close(AVCodecParserContext *ctx) const FFCodecParser ff_vorbis_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VORBIS), .priv_data_size = sizeof(VorbisParseContext), - .parser_parse = vorbis_parse, - .parser_close = vorbis_parser_close, + .parse = vorbis_parse, + .close = vorbis_parser_close, }; #endif /* CONFIG_VORBIS_PARSER */ diff --git a/libavcodec/vp3_parser.c b/libavcodec/vp3_parser.c index e5030c445d..1cd12b9e58 100644 --- a/libavcodec/vp3_parser.c +++ b/libavcodec/vp3_parser.c @@ -39,5 +39,5 @@ static int parse(AVCodecParserContext *s, const FFCodecParser ff_vp3_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_THEORA, AV_CODEC_ID_VP3, AV_CODEC_ID_VP6, AV_CODEC_ID_VP6F, AV_CODEC_ID_VP6A), - .parser_parse = parse, + .parse = parse, }; diff --git a/libavcodec/vp8_parser.c b/libavcodec/vp8_parser.c index a6b01722fb..f99a414f53 100644 --- a/libavcodec/vp8_parser.c +++ b/libavcodec/vp8_parser.c @@ -76,5 +76,5 @@ static int parse(AVCodecParserContext *s, const FFCodecParser ff_vp8_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VP8), - .parser_parse = parse, + .parse = parse, }; diff --git a/libavcodec/vp9_parser.c b/libavcodec/vp9_parser.c index 007889220b..4caa730f4f 100644 --- a/libavcodec/vp9_parser.c +++ b/libavcodec/vp9_parser.c @@ -66,5 +66,5 @@ static int parse(AVCodecParserContext *ctx, const FFCodecParser ff_vp9_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VP9), - .parser_parse = parse, + .parse = parse, }; diff --git a/libavcodec/vvc_parser.c b/libavcodec/vvc_parser.c index f134ab6df6..6a96dc086b 100644 --- a/libavcodec/vvc_parser.c +++ b/libavcodec/vvc_parser.c @@ -509,7 +509,7 @@ static av_cold void vvc_parser_close(AVCodecParserContext *s) const FFCodecParser ff_vvc_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_VVC), .priv_data_size = sizeof(VVCParserContext), - .parser_init = vvc_parser_init, - .parser_close = vvc_parser_close, - .parser_parse = vvc_parser_parse, + .init = vvc_parser_init, + .close = vvc_parser_close, + .parse = vvc_parser_parse, }; diff --git a/libavcodec/webp_parser.c b/libavcodec/webp_parser.c index 155af28f6c..86c9bad8d9 100644 --- a/libavcodec/webp_parser.c +++ b/libavcodec/webp_parser.c @@ -108,6 +108,6 @@ flush: const FFCodecParser ff_webp_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_WEBP), .priv_data_size = sizeof(WebPParseContext), - .parser_parse = webp_parse, - .parser_close = ff_parse_close, + .parse = webp_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/xbm_parser.c b/libavcodec/xbm_parser.c index 936612d30f..50e4480809 100644 --- a/libavcodec/xbm_parser.c +++ b/libavcodec/xbm_parser.c @@ -104,7 +104,7 @@ static int xbm_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_xbm_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_XBM), .priv_data_size = sizeof(XBMParseContext), - .parser_init = xbm_init, - .parser_parse = xbm_parse, - .parser_close = ff_parse_close, + .init = xbm_init, + .parse = xbm_parse, + .close = ff_parse_close, }; diff --git a/libavcodec/xma_parser.c b/libavcodec/xma_parser.c index c2eea37833..5768b603da 100644 --- a/libavcodec/xma_parser.c +++ b/libavcodec/xma_parser.c @@ -59,5 +59,5 @@ static int xma_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const FFCodecParser ff_xma_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_XMA2), .priv_data_size = sizeof(XMAParserContext), - .parser_parse = xma_parse, + .parse = xma_parse, }; diff --git a/libavcodec/xwd_parser.c b/libavcodec/xwd_parser.c index 1368283b21..5d7b2f10bd 100644 --- a/libavcodec/xwd_parser.c +++ b/libavcodec/xwd_parser.c @@ -99,6 +99,6 @@ static int xwd_parse(AVCodecParserContext *s, AVCodecContext *avctx, const FFCodecParser ff_xwd_parser = { PARSER_CODEC_LIST(AV_CODEC_ID_XWD), .priv_data_size = sizeof(XWDParseContext), - .parser_parse = xwd_parse, - .parser_close = ff_parse_close, + .parse = xwd_parse, + .close = ff_parse_close, }; -- 2.49.1 >>From 469a79bde5d561effc889deacd23a98be36ed512 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 26 Oct 2025 17:40:02 +0100 Subject: [PATCH 5/5] avcodec/avcodec: Schedule parser API to use enum AVCodecID for codec ids Signed-off-by: Andreas Rheinhardt --- doc/APIchanges | 4 ++++ libavcodec/avcodec.h | 8 ++++++++ libavcodec/parser.c | 4 ++++ libavcodec/parser_internal.h | 4 ++++ libavcodec/version_major.h | 1 + 5 files changed, 21 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index 654f1646a4..8f94a72d41 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,10 @@ The last version increases of all libraries were on 2025-03-28 API changes, most recent first: +2025-10-xx - xxxxxxxxxx - lavc 62.xx.100 - avcodec.h + Schedule AVCodecParser and av_parser_init() to use enum AVCodecID + for codec ids on the next major version bump. + 2025-10-xx - xxxxxxxxxx - lavc 62.xx.100 - avcodec.h AVCodecParser fields priv_data_size, parser_init, parser_parse, parser_close, split will be removed from the public API diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index e681b7affe..9481888792 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2732,7 +2732,11 @@ typedef struct AVCodecParserContext { } AVCodecParserContext; typedef struct AVCodecParser { +#if FF_API_PARSER_CODECID int codec_ids[7]; /* several codec IDs are permitted */ +#else + enum AVCodecID codec_ids[7]; /* several codec IDs are permitted */ +#endif #if FF_API_PARSER_PRIVATE /***************************************************************** * All fields below this line are not part of the public API. They @@ -2770,7 +2774,11 @@ typedef struct AVCodecParser { */ const AVCodecParser *av_parser_iterate(void **opaque); +#if FF_API_PARSER_CODECID AVCodecParserContext *av_parser_init(int codec_id); +#else +AVCodecParserContext *av_parser_init(enum AVCodecID codec_id); +#endif /** * Parse a packet. diff --git a/libavcodec/parser.c b/libavcodec/parser.c index 789bd9d1f1..12fdc3bb58 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -31,7 +31,11 @@ #include "parser.h" #include "parser_internal.h" +#if FF_API_PARSER_CODECID av_cold AVCodecParserContext *av_parser_init(int codec_id) +#else +av_cold AVCodecParserContext *av_parser_init(enum AVCodecID codec_id) +#endif { AVCodecParserContext *s = NULL; const AVCodecParser *parser; diff --git a/libavcodec/parser_internal.h b/libavcodec/parser_internal.h index cb1995de8b..e366b5576a 100644 --- a/libavcodec/parser_internal.h +++ b/libavcodec/parser_internal.h @@ -28,7 +28,11 @@ #if FF_API_PARSER_PRIVATE typedef union FFCodecParser { struct { +#if FF_API_PARSER_CODECID int codec_ids[7]; /* several codec IDs are permitted */ +#else + enum AVCodecID codec_ids[7]; /* several codec IDs are permitted */ +#endif int priv_data_size; int (*init)(AVCodecParserContext *s); int (*parse)(AVCodecParserContext *s, diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h index be95bafca0..5eed53e038 100644 --- a/libavcodec/version_major.h +++ b/libavcodec/version_major.h @@ -46,6 +46,7 @@ #define FF_API_NVDEC_OLD_PIX_FMTS (LIBAVCODEC_VERSION_MAJOR < 63) #define FF_API_PARSER_PRIVATE (LIBAVCODEC_VERSION_MAJOR < 63) +#define FF_API_PARSER_CODECID (LIBAVCODEC_VERSION_MAJOR < 63) // reminder to remove the OMX encoder on next major bump #define FF_CODEC_OMX (LIBAVCODEC_VERSION_MAJOR < 63) -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org