From e0b0ca8111225eaf931c4f723d694ac3b928754f Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sun, 26 Oct 2025 09:42:07 +0100 Subject: [PATCH] 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. Reviewed-by: James Almer Signed-off-by: Andreas Rheinhardt --- configure | 4 +- doc/APIchanges | 4 + 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.h | 4 +- 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 +- 74 files changed, 225 insertions(+), 146 deletions(-) diff --git a/configure b/configure index 17f72b735e..1c8aec3045 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) @@ -8595,7 +8595,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 7de9072a47..293b5c4883 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-11-01 - xxxxxxxxxx - lavc 62.18.100 - avcodec.h + Deprecate AVCodecParser fields priv_data_size, parser_init, + parser_parse, parser_close, and split with no replacement. + 2025-10-30 - xxxxxxxxxx - lavc 62.17.100 - packet.h Add av_packet_side_data_from_frame() and av_packet_side_data_to_frame(). 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..4027ae3316 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 libavcodec 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 95efe28b0a..6f11fbfe19 100644 --- a/libavcodec/prores_raw_parser.c +++ b/libavcodec/prores_raw_parser.c @@ -97,7 +97,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 f5bc8d7126..af59ef99b3 100644 --- a/libavcodec/vc1_parser.c +++ b/libavcodec/vc1_parser.c @@ -272,7 +272,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.h b/libavcodec/version.h index d6e0724326..65bc52fb24 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,8 +29,8 @@ #include "version_major.h" -#define LIBAVCODEC_VERSION_MINOR 17 -#define LIBAVCODEC_VERSION_MICRO 101 +#define LIBAVCODEC_VERSION_MINOR 18 +#define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ 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,