From: mkver via ffmpeg-devel <ffmpeg-devel@ffmpeg.org> To: ffmpeg-devel@ffmpeg.org Cc: mkver <code@ffmpeg.org> Subject: [FFmpeg-devel] [PATCH] avcodec: Add av_cold to flush,init,close functions missing it (PR #20509) Date: Fri, 12 Sep 2025 20:40:07 -0000 Message-ID: <175770960838.25.4888418327511204814@463a07221176> (raw) PR #20509 opened by mkver URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20509 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20509.patch >From 343b38b29fe048358237807660224d8074b664df Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Date: Fri, 5 Sep 2025 01:09:49 +0200 Subject: [PATCH 1/2] avcodec: Add av_cold to flush,init,close functions missing it Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/acelp_filters.c | 2 +- libavcodec/acelp_vectors.c | 2 +- libavcodec/adpcm.c | 4 +++- libavcodec/adxdec.c | 3 ++- libavcodec/agm.c | 3 ++- libavcodec/apedec.c | 3 ++- libavcodec/apv_decode.c | 3 ++- libavcodec/arbc.c | 3 ++- libavcodec/argo.c | 3 ++- libavcodec/ass.c | 2 +- libavcodec/ass_split.c | 4 ++-- libavcodec/atrac9dec.c | 2 +- libavcodec/audio_frame_queue.c | 2 +- libavcodec/av1_parser.c | 3 ++- libavcodec/av1dec.c | 3 ++- libavcodec/avdct.c | 7 ++++--- libavcodec/bink.c | 2 +- libavcodec/binkaudio.c | 3 ++- libavcodec/cavsdec.c | 3 ++- libavcodec/cbs_av1.c | 5 +++-- libavcodec/cbs_bsf.c | 6 ++++-- libavcodec/cbs_h2645.c | 12 ++++++------ libavcodec/cbs_vp9.c | 2 +- libavcodec/ccaption_dec.c | 3 ++- libavcodec/cdgraphics.c | 4 +++- libavcodec/cdtoons.c | 2 +- libavcodec/celp_filters.c | 3 ++- libavcodec/cngdec.c | 2 +- libavcodec/dirac_parser.c | 5 +++-- libavcodec/dovi_rpu.c | 3 ++- libavcodec/dpcm.c | 4 +++- libavcodec/dvdsubdec.c | 2 +- libavcodec/evc_parser.c | 4 +++- libavcodec/executor.c | 6 +++--- libavcodec/ffv1_parser.c | 4 +++- libavcodec/flac_parser.c | 2 +- libavcodec/ftr.c | 4 +++- libavcodec/gif.c | 3 ++- libavcodec/gsmdec.c | 3 ++- libavcodec/h264_parser.c | 3 ++- libavcodec/h264dec.c | 3 ++- libavcodec/hevc/hevcdec.c | 2 +- libavcodec/imm4.c | 3 ++- libavcodec/imm5.c | 3 ++- libavcodec/imx.c | 5 +++-- libavcodec/j2kenc.c | 3 ++- libavcodec/lossless_videodsp.c | 3 ++- libavcodec/midivid.c | 3 ++- libavcodec/mjpegdec.c | 7 +++---- libavcodec/mlpdec.c | 3 ++- libavcodec/mobiclip.c | 3 ++- libavcodec/movtextenc.c | 3 ++- libavcodec/mpc7.c | 3 ++- libavcodec/mpegvideo_parser.c | 2 +- libavcodec/msrle.c | 3 ++- libavcodec/msrleenc.c | 4 +++- libavcodec/mv30.c | 3 ++- libavcodec/osq.c | 3 ++- libavcodec/parser.c | 7 ++++--- libavcodec/pdvdec.c | 4 +++- libavcodec/qpeg.c | 5 ++++- libavcodec/qtrle.c | 4 +++- libavcodec/ralf.c | 2 +- libavcodec/rtjpeg.c | 4 +++- libavcodec/rv60dec.c | 4 +++- libavcodec/samidec.c | 3 ++- libavcodec/srtenc.c | 2 +- libavcodec/svq1dec.c | 3 ++- libavcodec/textdec.c | 3 ++- libavcodec/v4l2_m2m.c | 6 +++--- libavcodec/vc1dec.c | 2 +- libavcodec/vorbis_parser.c | 2 +- libavcodec/vp3.c | 3 ++- libavcodec/vp9.c | 3 ++- libavcodec/vvc/thread.c | 4 ++-- libavcodec/wavpack.c | 2 +- libavcodec/webvttenc.c | 2 +- libavcodec/wmalosslessdec.c | 2 +- libavcodec/wmaprodec.c | 7 ++++--- libavcodec/xbm_parser.c | 7 +++++-- libavcodec/zerocodec.c | 3 ++- 81 files changed, 176 insertions(+), 106 deletions(-) diff --git a/libavcodec/acelp_filters.c b/libavcodec/acelp_filters.c index db4908f31c..99e8994851 100644 --- a/libavcodec/acelp_filters.c +++ b/libavcodec/acelp_filters.c @@ -147,7 +147,7 @@ void ff_tilt_compensation(float *mem, float tilt, float *samples, int size) *mem = new_tilt_mem; } -void ff_acelp_filter_init(ACELPFContext *c) +av_cold void ff_acelp_filter_init(ACELPFContext *c) { c->acelp_interpolatef = ff_acelp_interpolatef; c->acelp_apply_order_2_transfer_function = ff_acelp_apply_order_2_transfer_function; diff --git a/libavcodec/acelp_vectors.c b/libavcodec/acelp_vectors.c index f47da40008..99d573bda2 100644 --- a/libavcodec/acelp_vectors.c +++ b/libavcodec/acelp_vectors.c @@ -255,7 +255,7 @@ void ff_clear_fixed_vector(float *out, const AMRFixed *in, int size) } } -void ff_acelp_vectors_init(ACELPVContext *c) +av_cold void ff_acelp_vectors_init(ACELPVContext *c) { c->weighted_vector_sumf = ff_weighted_vector_sumf; diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c index 4c15be6207..26323507e3 100644 --- a/libavcodec/adpcm.c +++ b/libavcodec/adpcm.c @@ -46,6 +46,8 @@ #include "codec_internal.h" #include "decode.h" +#include "libavutil/attributes.h" + /** * @file * ADPCM decoders @@ -2540,7 +2542,7 @@ static int adpcm_decode_frame(AVCodecContext *avctx, AVFrame *frame, return bytestream2_tell(&gb); } -static void adpcm_flush(AVCodecContext *avctx) +static av_cold void adpcm_flush(AVCodecContext *avctx) { ADPCMDecodeContext *c = avctx->priv_data; diff --git a/libavcodec/adxdec.c b/libavcodec/adxdec.c index 21be6fea97..49c2e25182 100644 --- a/libavcodec/adxdec.c +++ b/libavcodec/adxdec.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/intreadwrite.h" #include "avcodec.h" #include "adx.h" @@ -246,7 +247,7 @@ static int adx_decode_frame(AVCodecContext *avctx, AVFrame *frame, return buf - avpkt->data; } -static void adx_decode_flush(AVCodecContext *avctx) +static av_cold void adx_decode_flush(AVCodecContext *avctx) { ADXContext *c = avctx->priv_data; memset(c->prev, 0, sizeof(c->prev)); diff --git a/libavcodec/agm.c b/libavcodec/agm.c index fdf896d61a..c13b4d963e 100644 --- a/libavcodec/agm.c +++ b/libavcodec/agm.c @@ -24,6 +24,7 @@ #define BITSTREAM_READER_LE +#include "libavutil/attributes.h" #include "libavutil/mem.h" #include "libavutil/mem_internal.h" @@ -1245,7 +1246,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { AGMContext *s = avctx->priv_data; diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index 6634650355..58f5355b58 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -22,6 +22,7 @@ #include <inttypes.h> +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/channel_layout.h" #include "libavutil/crc.h" @@ -1729,7 +1730,7 @@ static int ape_decode_frame(AVCodecContext *avctx, AVFrame *frame, return !s->samples ? avpkt->size : 0; } -static void ape_flush(AVCodecContext *avctx) +static av_cold void ape_flush(AVCodecContext *avctx) { APEContext *s = avctx->priv_data; s->samples= 0; diff --git a/libavcodec/apv_decode.c b/libavcodec/apv_decode.c index 27aaf7aac7..dbe354a793 100644 --- a/libavcodec/apv_decode.c +++ b/libavcodec/apv_decode.c @@ -18,6 +18,7 @@ #include <stdatomic.h> +#include "libavutil/attributes.h" #include "libavutil/mastering_display_metadata.h" #include "libavutil/mem_internal.h" #include "libavutil/pixdesc.h" @@ -156,7 +157,7 @@ static av_cold int apv_decode_init(AVCodecContext *avctx) return 0; } -static void apv_decode_flush(AVCodecContext *avctx) +static av_cold void apv_decode_flush(AVCodecContext *avctx) { APVDecodeContext *apv = avctx->priv_data; diff --git a/libavcodec/arbc.c b/libavcodec/arbc.c index 46b0275e9a..537af4d455 100644 --- a/libavcodec/arbc.c +++ b/libavcodec/arbc.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" @@ -192,7 +193,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { ARBCContext *s = avctx->priv_data; diff --git a/libavcodec/argo.c b/libavcodec/argo.c index 589feed410..b2e9f3bb18 100644 --- a/libavcodec/argo.c +++ b/libavcodec/argo.c @@ -21,6 +21,7 @@ #include <string.h> +#include "libavutil/attributes.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" @@ -717,7 +718,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { ArgoContext *s = avctx->priv_data; diff --git a/libavcodec/ass.c b/libavcodec/ass.c index 35861139ef..6ae591d840 100644 --- a/libavcodec/ass.c +++ b/libavcodec/ass.c @@ -163,7 +163,7 @@ int ff_ass_add_rect(AVSubtitle *sub, const char *dialog, return ff_ass_add_rect2(sub, dialog, readorder, layer, style, speaker, NULL); } -void ff_ass_decoder_flush(AVCodecContext *avctx) +av_cold void ff_ass_decoder_flush(AVCodecContext *avctx) { FFASSDecoderContext *s = avctx->priv_data; if (!(avctx->flags2 & AV_CODEC_FLAG2_RO_FLUSH_NOOP)) diff --git a/libavcodec/ass_split.c b/libavcodec/ass_split.c index 9376265d7a..3f8f5e7cae 100644 --- a/libavcodec/ass_split.c +++ b/libavcodec/ass_split.c @@ -379,7 +379,7 @@ static int ass_split(ASSSplitContext *ctx, const char *buf) return buf ? 0 : AVERROR_INVALIDDATA; } -ASSSplitContext *ff_ass_split(const char *buf) +av_cold ASSSplitContext *ff_ass_split(const char *buf) { ASSSplitContext *ctx = av_mallocz(sizeof(*ctx)); if (!ctx) @@ -467,7 +467,7 @@ ASSDialog *ff_ass_split_dialog(ASSSplitContext *ctx, const char *buf) return dialog; } -void ff_ass_split_free(ASSSplitContext *ctx) +av_cold void ff_ass_split_free(ASSSplitContext *ctx) { if (ctx) { int i; diff --git a/libavcodec/atrac9dec.c b/libavcodec/atrac9dec.c index 9114d645d0..0748d671f1 100644 --- a/libavcodec/atrac9dec.c +++ b/libavcodec/atrac9dec.c @@ -820,7 +820,7 @@ static int atrac9_decode_frame(AVCodecContext *avctx, AVFrame *frame, return avctx->block_align; } -static void atrac9_decode_flush(AVCodecContext *avctx) +static av_cold void atrac9_decode_flush(AVCodecContext *avctx) { ATRAC9Context *s = avctx->priv_data; diff --git a/libavcodec/audio_frame_queue.c b/libavcodec/audio_frame_queue.c index 10b5d21392..1ca5f70304 100644 --- a/libavcodec/audio_frame_queue.c +++ b/libavcodec/audio_frame_queue.c @@ -33,7 +33,7 @@ av_cold void ff_af_queue_init(AVCodecContext *avctx, AudioFrameQueue *afq) afq->frame_count = 0; } -void ff_af_queue_close(AudioFrameQueue *afq) +av_cold void ff_af_queue_close(AudioFrameQueue *afq) { if(afq->frame_count) av_log(afq->avctx, AV_LOG_WARNING, "%d frames left in the queue on closing\n", afq->frame_count); diff --git a/libavcodec/av1_parser.c b/libavcodec/av1_parser.c index 1792e813f4..ed6e1b61ad 100644 --- a/libavcodec/av1_parser.c +++ b/libavcodec/av1_parser.c @@ -20,6 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "av1_parse.h" @@ -200,7 +201,7 @@ static av_cold int av1_parser_init(AVCodecParserContext *ctx) return 0; } -static void av1_parser_close(AVCodecParserContext *ctx) +static av_cold void av1_parser_close(AVCodecParserContext *ctx) { AV1ParseContext *s = ctx->priv_data; diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index be595484d1..3d4363cfaa 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -20,6 +20,7 @@ #include "config_components.h" +#include "libavutil/attributes.h" #include "libavutil/hdr_dynamic_metadata.h" #include "libavutil/film_grain_params.h" #include "libavutil/mastering_display_metadata.h" @@ -1535,7 +1536,7 @@ static int av1_receive_frame(AVCodecContext *avctx, AVFrame *frame) return ret; } -static void av1_decode_flush(AVCodecContext *avctx) +static av_cold void av1_decode_flush(AVCodecContext *avctx) { AV1DecContext *s = avctx->priv_data; AV1RawMetadataITUTT35 itut_t35; diff --git a/libavcodec/avdct.c b/libavcodec/avdct.c index 5322b181bc..f7941a457c 100644 --- a/libavcodec/avdct.c +++ b/libavcodec/avdct.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/mem.h" #include "avcodec.h" #include "idctdsp.h" @@ -68,12 +69,12 @@ static const AVClass avdct_class = { .version = LIBAVUTIL_VERSION_INT, }; -const AVClass *avcodec_dct_get_class(void) +av_cold const AVClass *avcodec_dct_get_class(void) { return &avdct_class; } -AVDCT *avcodec_dct_alloc(void) +av_cold AVDCT *avcodec_dct_alloc(void) { AVDCT *dsp = av_mallocz(sizeof(AVDCT)); @@ -86,7 +87,7 @@ AVDCT *avcodec_dct_alloc(void) return dsp; } -int avcodec_dct_init(AVDCT *dsp) +av_cold int avcodec_dct_init(AVDCT *dsp) { AVCodecContext *avctx = avcodec_alloc_context3(NULL); diff --git a/libavcodec/bink.c b/libavcodec/bink.c index 04fd90aa11..ef8e974589 100644 --- a/libavcodec/bink.c +++ b/libavcodec/bink.c @@ -1411,7 +1411,7 @@ static av_cold int decode_end(AVCodecContext *avctx) return 0; } -static void flush(AVCodecContext *avctx) +static av_cold void flush(AVCodecContext *avctx) { BinkContext * const c = avctx->priv_data; diff --git a/libavcodec/binkaudio.c b/libavcodec/binkaudio.c index 265f93a822..ee75256ecd 100644 --- a/libavcodec/binkaudio.c +++ b/libavcodec/binkaudio.c @@ -30,6 +30,7 @@ #include "config_components.h" +#include "libavutil/attributes.h" #include "libavutil/channel_layout.h" #include "libavutil/intfloat.h" #include "libavutil/mem_internal.h" @@ -358,7 +359,7 @@ fail: return ret; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { BinkAudioContext *const s = avctx->priv_data; diff --git a/libavcodec/cavsdec.c b/libavcodec/cavsdec.c index e076cfc47f..fffe0657f9 100644 --- a/libavcodec/cavsdec.c +++ b/libavcodec/cavsdec.c @@ -25,6 +25,7 @@ * @author Stefan Gehrer <stefan.gehrer@gmx.de> */ +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/emms.h" #include "libavutil/mem.h" @@ -1230,7 +1231,7 @@ static int decode_seq_header(AVSContext *h) return 0; } -static void cavs_flush(AVCodecContext * avctx) +static av_cold void cavs_flush(AVCodecContext * avctx) { AVSContext *h = avctx->priv_data; h->got_keyframe = 0; diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c index 4edb6ecd50..f0021eff61 100644 --- a/libavcodec/cbs_av1.c +++ b/libavcodec/cbs_av1.c @@ -16,6 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/opt.h" #include "libavutil/pixfmt.h" @@ -1265,7 +1266,7 @@ static int cbs_av1_assemble_fragment(CodedBitstreamContext *ctx, #endif } -static void cbs_av1_flush(CodedBitstreamContext *ctx) +static av_cold void cbs_av1_flush(CodedBitstreamContext *ctx) { CodedBitstreamAV1Context *priv = ctx->priv_data; @@ -1279,7 +1280,7 @@ static void cbs_av1_flush(CodedBitstreamContext *ctx) priv->tile_num = 0; } -static void cbs_av1_close(CodedBitstreamContext *ctx) +static av_cold void cbs_av1_close(CodedBitstreamContext *ctx) { CodedBitstreamAV1Context *priv = ctx->priv_data; diff --git a/libavcodec/cbs_bsf.c b/libavcodec/cbs_bsf.c index b25285483b..f342e5489e 100644 --- a/libavcodec/cbs_bsf.c +++ b/libavcodec/cbs_bsf.c @@ -20,6 +20,8 @@ #include "bsf_internal.h" #include "cbs_bsf.h" +#include "libavutil/attributes.h" + static int cbs_bsf_update_side_data(AVBSFContext *bsf, AVPacket *pkt) { CBSBSFContext *ctx = bsf->priv_data; @@ -107,7 +109,7 @@ fail: return err; } -int ff_cbs_bsf_generic_init(AVBSFContext *bsf, const CBSBSFType *type) +av_cold int ff_cbs_bsf_generic_init(AVBSFContext *bsf, const CBSBSFType *type) { CBSBSFContext *ctx = bsf->priv_data; CodedBitstreamFragment *frag = &ctx->fragment; @@ -152,7 +154,7 @@ fail: return err; } -void ff_cbs_bsf_generic_close(AVBSFContext *bsf) +av_cold void ff_cbs_bsf_generic_close(AVBSFContext *bsf) { CBSBSFContext *ctx = bsf->priv_data; diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index fa70a8fb7b..75784b03a9 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -1905,7 +1905,7 @@ static int cbs_h2645_assemble_fragment(CodedBitstreamContext *ctx, return 0; } -static void cbs_h264_flush(CodedBitstreamContext *ctx) +static av_cold void cbs_h264_flush(CodedBitstreamContext *ctx) { CodedBitstreamH264Context *h264 = ctx->priv_data; @@ -1919,7 +1919,7 @@ static void cbs_h264_flush(CodedBitstreamContext *ctx) h264->last_slice_nal_unit_type = 0; } -static void cbs_h264_close(CodedBitstreamContext *ctx) +static av_cold void cbs_h264_close(CodedBitstreamContext *ctx) { CodedBitstreamH264Context *h264 = ctx->priv_data; int i; @@ -1932,7 +1932,7 @@ static void cbs_h264_close(CodedBitstreamContext *ctx) av_refstruct_unref(&h264->pps[i]); } -static void cbs_h265_flush(CodedBitstreamContext *ctx) +static av_cold void cbs_h265_flush(CodedBitstreamContext *ctx) { CodedBitstreamH265Context *h265 = ctx->priv_data; @@ -1948,7 +1948,7 @@ static void cbs_h265_flush(CodedBitstreamContext *ctx) h265->active_pps = NULL; } -static void cbs_h265_close(CodedBitstreamContext *ctx) +static av_cold void cbs_h265_close(CodedBitstreamContext *ctx) { CodedBitstreamH265Context *h265 = ctx->priv_data; int i; @@ -1963,7 +1963,7 @@ static void cbs_h265_close(CodedBitstreamContext *ctx) av_refstruct_unref(&h265->pps[i]); } -static void cbs_h266_flush(CodedBitstreamContext *ctx) +static av_cold void cbs_h266_flush(CodedBitstreamContext *ctx) { CodedBitstreamH266Context *h266 = ctx->priv_data; @@ -1976,7 +1976,7 @@ static void cbs_h266_flush(CodedBitstreamContext *ctx) av_refstruct_unref(&h266->ph_ref); } -static void cbs_h266_close(CodedBitstreamContext *ctx) +static av_cold void cbs_h266_close(CodedBitstreamContext *ctx) { CodedBitstreamH266Context *h266 = ctx->priv_data; diff --git a/libavcodec/cbs_vp9.c b/libavcodec/cbs_vp9.c index ff99fe32fb..9a97b0532c 100644 --- a/libavcodec/cbs_vp9.c +++ b/libavcodec/cbs_vp9.c @@ -587,7 +587,7 @@ static int cbs_vp9_assemble_fragment(CodedBitstreamContext *ctx, return 0; } -static void cbs_vp9_flush(CodedBitstreamContext *ctx) +static av_cold void cbs_vp9_flush(CodedBitstreamContext *ctx) { CodedBitstreamVP9Context *vp9 = ctx->priv_data; diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c index 6f4d4fca41..9b6c766d87 100644 --- a/libavcodec/ccaption_dec.c +++ b/libavcodec/ccaption_dec.c @@ -23,6 +23,7 @@ #include "avcodec.h" #include "ass.h" #include "codec_internal.h" +#include "libavutil/attributes.h" #include "libavutil/opt.h" #define SCREEN_ROWS 15 @@ -309,7 +310,7 @@ static av_cold int close_decoder(AVCodecContext *avctx) return 0; } -static void flush_decoder(AVCodecContext *avctx) +static av_cold void flush_decoder(AVCodecContext *avctx) { CCaptionSubContext *ctx = avctx->priv_data; ctx->screen[0].row_used = 0; diff --git a/libavcodec/cdgraphics.c b/libavcodec/cdgraphics.c index 518c75081b..1b5a37875b 100644 --- a/libavcodec/cdgraphics.c +++ b/libavcodec/cdgraphics.c @@ -24,6 +24,8 @@ #include "codec_internal.h" #include "decode.h" +#include "libavutil/attributes.h" + /** * @file * @brief CD Graphics Video Decoder @@ -367,7 +369,7 @@ static int cdg_decode_frame(AVCodecContext *avctx, AVFrame *frame, return avpkt->size; } -static void cdg_decode_flush(AVCodecContext *avctx) +static av_cold void cdg_decode_flush(AVCodecContext *avctx) { CDGraphicsContext *cc = avctx->priv_data; diff --git a/libavcodec/cdtoons.c b/libavcodec/cdtoons.c index adc6cf3f44..f96c89115b 100644 --- a/libavcodec/cdtoons.c +++ b/libavcodec/cdtoons.c @@ -420,7 +420,7 @@ static av_cold int cdtoons_decode_init(AVCodecContext *avctx) return 0; } -static void cdtoons_flush(AVCodecContext *avctx) +static av_cold void cdtoons_flush(AVCodecContext *avctx) { CDToonsContext *c = avctx->priv_data; diff --git a/libavcodec/celp_filters.c b/libavcodec/celp_filters.c index 4f627e0092..d3381e3ee7 100644 --- a/libavcodec/celp_filters.c +++ b/libavcodec/celp_filters.c @@ -25,6 +25,7 @@ #include "config.h" #include "celp_filters.h" +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/common.h" @@ -210,7 +211,7 @@ void ff_celp_lp_zero_synthesis_filterf(float *out, const float *filter_coeffs, } } -void ff_celp_filter_init(CELPFContext *c) +void av_cold ff_celp_filter_init(CELPFContext *c) { c->celp_lp_synthesis_filterf = ff_celp_lp_synthesis_filterf; c->celp_lp_zero_synthesis_filterf = ff_celp_lp_zero_synthesis_filterf; diff --git a/libavcodec/cngdec.c b/libavcodec/cngdec.c index dfcc685e7e..e65f0f084e 100644 --- a/libavcodec/cngdec.c +++ b/libavcodec/cngdec.c @@ -97,7 +97,7 @@ static void make_lpc_coefs(float *lpc, const float *refl, int order) memcpy(lpc, cur, sizeof(*lpc) * order); } -static void cng_decode_flush(AVCodecContext *avctx) +static av_cold void cng_decode_flush(AVCodecContext *avctx) { CNGContext *p = avctx->priv_data; p->inited = 0; diff --git a/libavcodec/dirac_parser.c b/libavcodec/dirac_parser.c index 912f594243..61f8067001 100644 --- a/libavcodec/dirac_parser.c +++ b/libavcodec/dirac_parser.c @@ -29,10 +29,11 @@ #include <string.h> +#include "libavutil/attributes.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem.h" -#include "parser.h" +#include "avcodec.h" #define DIRAC_PARSE_INFO_PREFIX 0x42424344 @@ -265,7 +266,7 @@ static int dirac_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -static void dirac_parse_close(AVCodecParserContext *s) +static av_cold void dirac_parse_close(AVCodecParserContext *s) { DiracParseContext *pc = s->priv_data; diff --git a/libavcodec/dovi_rpu.c b/libavcodec/dovi_rpu.c index 04e48d2b95..f19c1922f1 100644 --- a/libavcodec/dovi_rpu.c +++ b/libavcodec/dovi_rpu.c @@ -21,6 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/mem.h" #include "dovi_rpu.h" @@ -39,7 +40,7 @@ void ff_dovi_ctx_unref(DOVIContext *s) }; } -void ff_dovi_ctx_flush(DOVIContext *s) +av_cold void ff_dovi_ctx_flush(DOVIContext *s) { av_refstruct_unref(&s->dm); for (int i = 0; i < FF_ARRAY_ELEMS(s->vdr); i++) diff --git a/libavcodec/dpcm.c b/libavcodec/dpcm.c index eff6587404..edeb1aae72 100644 --- a/libavcodec/dpcm.c +++ b/libavcodec/dpcm.c @@ -43,6 +43,8 @@ #include "decode.h" #include "mathops.h" +#include "libavutil/attributes.h" + typedef struct DPCMContext { int16_t array[256]; int sample[2]; ///< previous sample (for SOL_DPCM and WADY_DPCM) @@ -457,7 +459,7 @@ static int dpcm_decode_frame(AVCodecContext *avctx, AVFrame *frame, return avpkt->size; } -static void dpcm_flush(AVCodecContext *avctx) +static av_cold void dpcm_flush(AVCodecContext *avctx) { DPCMContext *s = avctx->priv_data; diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c index 78658f7d2f..c4fbcffc41 100644 --- a/libavcodec/dvdsubdec.c +++ b/libavcodec/dvdsubdec.c @@ -686,7 +686,7 @@ static av_cold int dvdsub_init(AVCodecContext *avctx) return 1; } -static void dvdsub_flush(AVCodecContext *avctx) +static av_cold void dvdsub_flush(AVCodecContext *avctx) { DVDSubContext *ctx = avctx->priv_data; ctx->buf_size = 0; diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c index 8590ebcdaf..ea6675693e 100644 --- a/libavcodec/evc_parser.c +++ b/libavcodec/evc_parser.c @@ -25,6 +25,8 @@ #include "evc.h" #include "evc_parse.h" +#include "libavutil/attributes.h" + typedef struct EVCParserContext { EVCParamSets ps; EVCParserPoc poc; @@ -362,7 +364,7 @@ static int evc_parse(AVCodecParserContext *s, AVCodecContext *avctx, return next; } -static void evc_parser_close(AVCodecParserContext *s) +static av_cold void evc_parser_close(AVCodecParserContext *s) { EVCParserContext *ctx = s->priv_data; diff --git a/libavcodec/executor.c b/libavcodec/executor.c index 7a86e894f8..3bf60bedb3 100644 --- a/libavcodec/executor.c +++ b/libavcodec/executor.c @@ -129,7 +129,7 @@ static void *executor_worker_task(void *data) } #endif -static void executor_free(FFExecutor *e, const int has_lock, const int has_cond) +static av_cold void executor_free(FFExecutor *e, const int has_lock, const int has_cond) { if (e->thread_count) { //signal die @@ -153,7 +153,7 @@ static void executor_free(FFExecutor *e, const int has_lock, const int has_cond) av_free(e); } -FFExecutor* ff_executor_alloc(const FFTaskCallbacks *cb, int thread_count) +av_cold FFExecutor* ff_executor_alloc(const FFTaskCallbacks *cb, int thread_count) { FFExecutor *e; int has_lock = 0, has_cond = 0; @@ -199,7 +199,7 @@ free_executor: return NULL; } -void ff_executor_free(FFExecutor **executor) +av_cold void ff_executor_free(FFExecutor **executor) { int thread_count; diff --git a/libavcodec/ffv1_parser.c b/libavcodec/ffv1_parser.c index bf61e88a2e..e54854d84f 100644 --- a/libavcodec/ffv1_parser.c +++ b/libavcodec/ffv1_parser.c @@ -20,6 +20,8 @@ #include "ffv1.h" #include "rangecoder.h" +#include "libavutil/attributes.h" + typedef struct FFV1ParseContext { FFV1Context f; int got_first; @@ -70,7 +72,7 @@ static int parse(AVCodecParserContext *s, return buf_size; } -static void ffv1_close(AVCodecParserContext *s) +static av_cold void ffv1_close(AVCodecParserContext *s) { FFV1ParseContext *p = s->priv_data; diff --git a/libavcodec/flac_parser.c b/libavcodec/flac_parser.c index d9c47801f8..c310832617 100644 --- a/libavcodec/flac_parser.c +++ b/libavcodec/flac_parser.c @@ -887,7 +887,7 @@ static av_cold int flac_parse_init(AVCodecParserContext *c) return 0; } -static void flac_parse_close(AVCodecParserContext *c) +static av_cold void flac_parse_close(AVCodecParserContext *c) { FLACParseContext *fpc = c->priv_data; FLACHeaderMarker *curr = fpc->headers, *temp; diff --git a/libavcodec/ftr.c b/libavcodec/ftr.c index 06241fdca3..31aef538f9 100644 --- a/libavcodec/ftr.c +++ b/libavcodec/ftr.c @@ -22,6 +22,8 @@ #include "get_bits.h" #include "decode.h" +#include "libavutil/attributes.h" + typedef struct FTRContext { AVCodecContext *aac_avctx[64]; // wrapper context for AAC int nb_context; @@ -173,7 +175,7 @@ static int ftr_decode_frame(AVCodecContext *avctx, AVFrame *frame, return get_bits_count(&gb) >> 3; } -static void ftr_flush(AVCodecContext *avctx) +static av_cold void ftr_flush(AVCodecContext *avctx) { FTRContext *s = avctx->priv_data; diff --git a/libavcodec/gif.c b/libavcodec/gif.c index 04f5341ea7..c11cad8d38 100644 --- a/libavcodec/gif.c +++ b/libavcodec/gif.c @@ -30,6 +30,7 @@ * @see http://www.w3.org/Graphics/GIF/spec-gif89a.txt */ +#include "libavutil/attributes.h" #include "libavutil/imgutils_internal.h" #include "libavutil/mem.h" #include "libavutil/opt.h" @@ -518,7 +519,7 @@ static int gif_encode_frame(AVCodecContext *avctx, AVPacket *pkt, return 0; } -static int gif_encode_close(AVCodecContext *avctx) +static av_cold int gif_encode_close(AVCodecContext *avctx) { GIFContext *s = avctx->priv_data; diff --git a/libavcodec/gsmdec.c b/libavcodec/gsmdec.c index 14e2364345..b20cdb7544 100644 --- a/libavcodec/gsmdec.c +++ b/libavcodec/gsmdec.c @@ -26,6 +26,7 @@ #include "config_components.h" +#include "libavutil/attributes.h" #include "libavutil/channel_layout.h" #include "avcodec.h" #include "codec_internal.h" @@ -106,7 +107,7 @@ static int gsm_decode_frame(AVCodecContext *avctx, AVFrame *frame, return avctx->block_align; } -static void gsm_flush(AVCodecContext *avctx) +static av_cold void gsm_flush(AVCodecContext *avctx) { GSMContext *s = avctx->priv_data; memset(s, 0, sizeof(*s)); diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index 006f4059e8..722cbcb42f 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -29,6 +29,7 @@ #include <stdint.h> +#include "libavutil/attributes.h" #include "libavutil/avutil.h" #include "libavutil/error.h" #include "libavutil/log.h" @@ -660,7 +661,7 @@ static int h264_parse(AVCodecParserContext *s, return next; } -static void h264_close(AVCodecParserContext *s) +static av_cold void h264_close(AVCodecParserContext *s) { H264ParseContext *p = s->priv_data; ParseContext *pc = &p->pc; diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index b1cf0f81b3..ab31832308 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -29,6 +29,7 @@ #include "config_components.h" +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/emms.h" #include "libavutil/imgutils.h" @@ -474,7 +475,7 @@ void ff_h264_flush_change(H264Context *h) h->mmco_reset = 1; } -static void h264_decode_flush(AVCodecContext *avctx) +static av_cold void h264_decode_flush(AVCodecContext *avctx) { H264Context *h = avctx->priv_data; int i; diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index d3e5e58cfc..ba12d84474 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -4187,7 +4187,7 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx) return 0; } -static void hevc_decode_flush(AVCodecContext *avctx) +static av_cold void hevc_decode_flush(AVCodecContext *avctx) { HEVCContext *s = avctx->priv_data; ff_hevc_flush_dpb(s); diff --git a/libavcodec/imm4.c b/libavcodec/imm4.c index 573b614833..d945a440f2 100644 --- a/libavcodec/imm4.c +++ b/libavcodec/imm4.c @@ -23,6 +23,7 @@ #include <stddef.h> #include <string.h> +#include "libavutil/attributes.h" #include "libavutil/mem.h" #include "libavutil/mem_internal.h" #include "libavutil/thread.h" @@ -518,7 +519,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { IMM4Context *s = avctx->priv_data; diff --git a/libavcodec/imm5.c b/libavcodec/imm5.c index 4b9f3f6b75..7bb77b5e7a 100644 --- a/libavcodec/imm5.c +++ b/libavcodec/imm5.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/attributes_internal.h" #include "libavutil/intreadwrite.h" @@ -155,7 +156,7 @@ static int imm5_decode_frame(AVCodecContext *avctx, AVFrame *frame, return avpkt->size; } -static void imm5_flush(AVCodecContext *avctx) +static av_cold void imm5_flush(AVCodecContext *avctx) { IMM5Context *ctx = avctx->priv_data; diff --git a/libavcodec/imx.c b/libavcodec/imx.c index 9f7f2aa829..0f4327ddf7 100644 --- a/libavcodec/imx.c +++ b/libavcodec/imx.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/common.h" #include "avcodec.h" #include "bytestream.h" @@ -158,7 +159,7 @@ static int imx_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return avpkt->size; } -static void imx_decode_flush(AVCodecContext *avctx) +static av_cold void imx_decode_flush(AVCodecContext *avctx) { SimbiosisIMXContext *imx = avctx->priv_data; @@ -168,7 +169,7 @@ static void imx_decode_flush(AVCodecContext *avctx) memset(imx->history, 0, sizeof(imx->history)); } -static int imx_decode_close(AVCodecContext *avctx) +static av_cold int imx_decode_close(AVCodecContext *avctx) { SimbiosisIMXContext *imx = avctx->priv_data; diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 847358dc7b..7bec5bbe36 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -71,6 +71,7 @@ #include "bytestream.h" #include "jpeg2000.h" #include "version.h" +#include "libavutil/attributes.h" #include "libavutil/common.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" @@ -580,7 +581,7 @@ static void init_quantization(Jpeg2000EncoderContext *s) } } -static void init_luts(void) +static av_cold void init_luts(void) { int i, a, mask = ~((1<<NMSEDEC_FRACBITS)-1); diff --git a/libavcodec/lossless_videodsp.c b/libavcodec/lossless_videodsp.c index 876decb1e6..229494bb50 100644 --- a/libavcodec/lossless_videodsp.c +++ b/libavcodec/lossless_videodsp.c @@ -21,6 +21,7 @@ #include "config.h" #include "lossless_videodsp.h" #include "libavcodec/mathops.h" +#include "libavutil/attributes.h" // 0x7f7f7f7f or 0x7f7f7f7f7f7f7f7f or whatever, depending on the cpu's native arithmetic size #define pb_7f (~0UL / 255 * 0x7f) @@ -110,7 +111,7 @@ static void add_gradient_pred_c(uint8_t *src, const ptrdiff_t stride, const ptrd } } -void ff_llviddsp_init(LLVidDSPContext *c) +av_cold void ff_llviddsp_init(LLVidDSPContext *c) { c->add_bytes = add_bytes_c; c->add_median_pred = add_median_pred_c; diff --git a/libavcodec/midivid.c b/libavcodec/midivid.c index 70730231b5..a4f90c2cfe 100644 --- a/libavcodec/midivid.c +++ b/libavcodec/midivid.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/imgutils.h" #include "libavutil/internal.h" #include "libavutil/mem.h" @@ -257,7 +258,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { MidiVidContext *s = avctx->priv_data; diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 3dde759fea..7c262cfb03 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -32,7 +32,7 @@ #include "config_components.h" -#include "libavutil/display.h" +#include "libavutil/attributes.h" #include "libavutil/emms.h" #include "libavutil/imgutils.h" #include "libavutil/avassert.h" @@ -43,6 +43,7 @@ #include "codec_internal.h" #include "copy_block.h" #include "decode.h" +#include "exif.h" #include "hwaccel_internal.h" #include "hwconfig.h" #include "idctdsp.h" @@ -53,8 +54,6 @@ #include "jpeglsdec.h" #include "profiles.h" #include "put_bits.h" -#include "exif_internal.h" -#include "bytestream.h" static int init_default_huffman_tables(MJpegDecodeContext *s) @@ -2924,7 +2923,7 @@ av_cold int ff_mjpeg_decode_end(AVCodecContext *avctx) return 0; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { MJpegDecodeContext *s = avctx->priv_data; s->got_picture = 0; diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index e85dac36a7..688cf51d6c 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -29,6 +29,7 @@ #include <stdint.h> #include "avcodec.h" +#include "libavutil/attributes.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/channel_layout.h" @@ -1413,7 +1414,7 @@ error: return AVERROR_INVALIDDATA; } -static void mlp_decode_flush(AVCodecContext *avctx) +static av_cold void mlp_decode_flush(AVCodecContext *avctx) { MLPDecodeContext *m = avctx->priv_data; diff --git a/libavcodec/mobiclip.c b/libavcodec/mobiclip.c index 133a835ad1..8e8fe44800 100644 --- a/libavcodec/mobiclip.c +++ b/libavcodec/mobiclip.c @@ -23,6 +23,7 @@ #include <inttypes.h> +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/mem.h" #include "libavutil/thread.h" @@ -1315,7 +1316,7 @@ static int mobiclip_decode(AVCodecContext *avctx, AVFrame *rframe, return 0; } -static void mobiclip_flush(AVCodecContext *avctx) +static av_cold void mobiclip_flush(AVCodecContext *avctx) { MobiClipContext *s = avctx->priv_data; diff --git a/libavcodec/movtextenc.c b/libavcodec/movtextenc.c index b78dadfc07..a5f0325595 100644 --- a/libavcodec/movtextenc.c +++ b/libavcodec/movtextenc.c @@ -21,6 +21,7 @@ #include <stdarg.h> #include "avcodec.h" +#include "libavutil/attributes.h" #include "libavutil/opt.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem.h" @@ -162,7 +163,7 @@ static const Box box_types[] = { const static size_t box_count = FF_ARRAY_ELEMS(box_types); -static int mov_text_encode_close(AVCodecContext *avctx) +static av_cold int mov_text_encode_close(AVCodecContext *avctx) { MovTextContext *s = avctx->priv_data; diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c index 83cef60914..98ef1732cf 100644 --- a/libavcodec/mpc7.c +++ b/libavcodec/mpc7.c @@ -25,6 +25,7 @@ * divided into 32 subbands. */ +#include "libavutil/attributes.h" #include "libavutil/channel_layout.h" #include "libavutil/internal.h" #include "libavutil/lfg.h" @@ -296,7 +297,7 @@ static int mpc7_decode_frame(AVCodecContext *avctx, AVFrame *frame, return avpkt->size; } -static void mpc7_decode_flush(AVCodecContext *avctx) +static av_cold void mpc7_decode_flush(AVCodecContext *avctx) { MPCContext *c = avctx->priv_data; diff --git a/libavcodec/mpegvideo_parser.c b/libavcodec/mpegvideo_parser.c index 663399a919..cf9eaddf80 100644 --- a/libavcodec/mpegvideo_parser.c +++ b/libavcodec/mpegvideo_parser.c @@ -293,7 +293,7 @@ static int mpegvideo_parse(AVCodecParserContext *s, return next; } -static int mpegvideo_parse_init(AVCodecParserContext *s) +static av_cold int mpegvideo_parse_init(AVCodecParserContext *s) { s->pict_type = AV_PICTURE_TYPE_NONE; // first frame might be partial return 0; diff --git a/libavcodec/msrle.c b/libavcodec/msrle.c index 288f0d768a..24db12bc4b 100644 --- a/libavcodec/msrle.c +++ b/libavcodec/msrle.c @@ -34,6 +34,7 @@ #include "codec_internal.h" #include "decode.h" #include "msrledec.h" +#include "libavutil/attributes.h" #include "libavutil/imgutils.h" typedef struct MsrleContext { @@ -138,7 +139,7 @@ static int msrle_decode_frame(AVCodecContext *avctx, AVFrame *rframe, return buf_size; } -static void msrle_decode_flush(AVCodecContext *avctx) +static av_cold void msrle_decode_flush(AVCodecContext *avctx) { MsrleContext *s = avctx->priv_data; diff --git a/libavcodec/msrleenc.c b/libavcodec/msrleenc.c index 654da42c0a..d4775a8d3d 100644 --- a/libavcodec/msrleenc.c +++ b/libavcodec/msrleenc.c @@ -30,6 +30,8 @@ #include "codec_internal.h" #include "encode.h" +#include "libavutil/attributes.h" + typedef struct MSRLEContext { int curframe; AVFrame *last_frame; @@ -276,7 +278,7 @@ static int msrle_encode_frame(AVCodecContext *avctx, AVPacket *pkt, return av_frame_replace(s->last_frame, pict); } -static int msrle_encode_close(AVCodecContext *avctx) +static av_cold int msrle_encode_close(AVCodecContext *avctx) { MSRLEContext *s = avctx->priv_data; av_frame_free(&s->last_frame); diff --git a/libavcodec/mv30.c b/libavcodec/mv30.c index 124a37e23f..2ca74496a7 100644 --- a/libavcodec/mv30.c +++ b/libavcodec/mv30.c @@ -23,6 +23,7 @@ #include <stddef.h> #include <string.h> +#include "libavutil/attributes.h" #include "libavutil/mem.h" #include "libavutil/thread.h" @@ -682,7 +683,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return 0; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { MV30Context *s = avctx->priv_data; diff --git a/libavcodec/osq.c b/libavcodec/osq.c index 76090aa8d0..f88b639fe0 100644 --- a/libavcodec/osq.c +++ b/libavcodec/osq.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem.h" @@ -62,7 +63,7 @@ typedef struct OSQContext { int pkt_offset; } OSQContext; -static void osq_flush(AVCodecContext *avctx) +static av_cold void osq_flush(AVCodecContext *avctx) { OSQContext *s = avctx->priv_data; diff --git a/libavcodec/parser.c b/libavcodec/parser.c index 426cc314fb..af966766ee 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -24,12 +24,13 @@ #include <stdint.h> #include <string.h> +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/mem.h" #include "parser.h" -AVCodecParserContext *av_parser_init(int codec_id) +av_cold AVCodecParserContext *av_parser_init(int codec_id) { AVCodecParserContext *s = NULL; const AVCodecParser *parser; @@ -190,7 +191,7 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, return index; } -void av_parser_close(AVCodecParserContext *s) +av_cold void av_parser_close(AVCodecParserContext *s) { if (s) { if (s->parser->parser_close) @@ -287,7 +288,7 @@ int ff_combine_frame(ParseContext *pc, int next, return 0; } -void ff_parse_close(AVCodecParserContext *s) +av_cold void ff_parse_close(AVCodecParserContext *s) { ParseContext *pc = s->priv_data; diff --git a/libavcodec/pdvdec.c b/libavcodec/pdvdec.c index e2c03e7e0d..fffc95a530 100644 --- a/libavcodec/pdvdec.c +++ b/libavcodec/pdvdec.c @@ -25,6 +25,8 @@ #include "decode.h" #include "zlib_wrapper.h" +#include "libavutil/attributes.h" + #include <zlib.h> typedef struct PDVContext { @@ -117,7 +119,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, return avpkt->size; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { PDVContext *s = avctx->priv_data; diff --git a/libavcodec/qpeg.c b/libavcodec/qpeg.c index 08bff5c81b..41b083bc14 100644 --- a/libavcodec/qpeg.c +++ b/libavcodec/qpeg.c @@ -29,6 +29,8 @@ #include "codec_internal.h" #include "decode.h" +#include "libavutil/attributes.h" + typedef struct QpegContext{ AVCodecContext *avctx; AVFrame *ref; @@ -314,7 +316,8 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *p, return avpkt->size; } -static void decode_flush(AVCodecContext *avctx){ +static av_cold void decode_flush(AVCodecContext *avctx) +{ QpegContext * const a = avctx->priv_data; int i, pal_size; const uint8_t *pal_src; diff --git a/libavcodec/qtrle.c b/libavcodec/qtrle.c index be105bdfb6..1c2fbc357e 100644 --- a/libavcodec/qtrle.c +++ b/libavcodec/qtrle.c @@ -38,6 +38,8 @@ #include "bytestream.h" #include "codec_internal.h" +#include "libavutil/attributes.h" + typedef struct QtrleContext { AVCodecContext *avctx; AVFrame *frame; @@ -561,7 +563,7 @@ done: return avpkt->size; } -static void qtrle_decode_flush(AVCodecContext *avctx) +static av_cold void qtrle_decode_flush(AVCodecContext *avctx) { QtrleContext *s = avctx->priv_data; diff --git a/libavcodec/ralf.c b/libavcodec/ralf.c index 036c3a931c..98e869db1f 100644 --- a/libavcodec/ralf.c +++ b/libavcodec/ralf.c @@ -503,7 +503,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, return avpkt->size; } -static void decode_flush(AVCodecContext *avctx) +static av_cold void decode_flush(AVCodecContext *avctx) { RALFContext *ctx = avctx->priv_data; diff --git a/libavcodec/rtjpeg.c b/libavcodec/rtjpeg.c index 734e3875da..839eea20b5 100644 --- a/libavcodec/rtjpeg.c +++ b/libavcodec/rtjpeg.c @@ -18,6 +18,8 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include "libavutil/attributes.h" #include "libavutil/common.h" #include "get_bits.h" #include "rtjpeg.h" @@ -167,7 +169,7 @@ void ff_rtjpeg_decode_init(RTJpegContext *c, int width, int height, c->h = height; } -void ff_rtjpeg_init(RTJpegContext *c, struct AVCodecContext *avctx) +av_cold void ff_rtjpeg_init(RTJpegContext *c, struct AVCodecContext *avctx) { int i; diff --git a/libavcodec/rv60dec.c b/libavcodec/rv60dec.c index 208fbc68f7..33728e33a0 100644 --- a/libavcodec/rv60dec.c +++ b/libavcodec/rv60dec.c @@ -33,6 +33,8 @@ #include "unary.h" #include "videodsp.h" +#include "libavutil/attributes.h" + static const int8_t frame_types[4] = {AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, AV_PICTURE_TYPE_NONE}; enum CUType { @@ -2396,7 +2398,7 @@ static int rv60_decode_frame(AVCodecContext *avctx, AVFrame * frame, return avpkt->size; } -static void rv60_flush(AVCodecContext *avctx) +static av_cold void rv60_flush(AVCodecContext *avctx) { RV60Context *s = avctx->priv_data; diff --git a/libavcodec/samidec.c b/libavcodec/samidec.c index 6576ce93fe..d8a7624bc3 100644 --- a/libavcodec/samidec.c +++ b/libavcodec/samidec.c @@ -25,6 +25,7 @@ */ #include "ass.h" +#include "libavutil/attributes.h" #include "libavutil/avstring.h" #include "libavutil/bprint.h" #include "libavutil/mem.h" @@ -174,7 +175,7 @@ static av_cold int sami_close(AVCodecContext *avctx) return 0; } -static void sami_flush(AVCodecContext *avctx) +static av_cold void sami_flush(AVCodecContext *avctx) { SAMIContext *sami = avctx->priv_data; if (!(avctx->flags2 & AV_CODEC_FLAG2_RO_FLUSH_NOOP)) diff --git a/libavcodec/srtenc.c b/libavcodec/srtenc.c index de05a09254..7fd6bfee05 100644 --- a/libavcodec/srtenc.c +++ b/libavcodec/srtenc.c @@ -275,7 +275,7 @@ static int text_encode_frame(AVCodecContext *avctx, return encode_frame(avctx, buf, bufsize, sub, &text_callbacks); } -static int srt_encode_close(AVCodecContext *avctx) +static av_cold int srt_encode_close(AVCodecContext *avctx) { SRTContext *s = avctx->priv_data; ff_ass_split_free(s->ass_ctx); diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index 57cac8ee7b..5505b896a2 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -32,6 +32,7 @@ * http://www.pcisys.net/~melanson/codecs/ */ +#include "libavutil/attributes.h" #include "libavutil/crc.h" #include "libavutil/mem.h" #include "libavutil/thread.h" @@ -846,7 +847,7 @@ static av_cold int svq1_decode_end(AVCodecContext *avctx) return 0; } -static void svq1_flush(AVCodecContext *avctx) +static av_cold void svq1_flush(AVCodecContext *avctx) { SVQ1Context *s = avctx->priv_data; diff --git a/libavcodec/textdec.c b/libavcodec/textdec.c index 10a052e99b..e38cba3afe 100644 --- a/libavcodec/textdec.c +++ b/libavcodec/textdec.c @@ -28,6 +28,7 @@ #include "avcodec.h" #include "ass.h" #include "codec_internal.h" +#include "libavutil/attributes.h" #include "libavutil/bprint.h" #include "libavutil/opt.h" @@ -65,7 +66,7 @@ static int text_decode_frame(AVCodecContext *avctx, AVSubtitle *sub, return avpkt->size; } -static void text_flush(AVCodecContext *avctx) +static av_cold void text_flush(AVCodecContext *avctx) { TextContext *text = avctx->priv_data; if (!(avctx->flags2 & AV_CODEC_FLAG2_RO_FLUSH_NOOP)) diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c index 8f633e2aeb..07c7500000 100644 --- a/libavcodec/v4l2_m2m.c +++ b/libavcodec/v4l2_m2m.c @@ -134,7 +134,7 @@ done: return ret; } -static int v4l2_configure_contexts(V4L2m2mContext *s) +static av_cold int v4l2_configure_contexts(V4L2m2mContext *s) { void *log_ctx = s->avctx; int ret; @@ -261,7 +261,7 @@ static void v4l2_m2m_destroy_context(AVRefStructOpaque unused, void *context) av_packet_unref(&s->buf_pkt); } -int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv) +av_cold int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv) { V4L2m2mContext *s = priv->context; int ret; @@ -287,7 +287,7 @@ int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv) return 0; } -int ff_v4l2_m2m_codec_init(V4L2m2mPriv *priv) +av_cold int ff_v4l2_m2m_codec_init(V4L2m2mPriv *priv) { int ret = AVERROR(EINVAL); struct dirent *entry; diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index de6d9ef7a9..55225baec9 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -336,7 +336,7 @@ static int vc1_decode_sprites(VC1Context *v, GetBitContext* gb) return 0; } -static void vc1_sprite_flush(AVCodecContext *avctx) +static av_cold void vc1_sprite_flush(AVCodecContext *avctx) { VC1Context *v = avctx->priv_data; MpegEncContext *s = &v->s; diff --git a/libavcodec/vorbis_parser.c b/libavcodec/vorbis_parser.c index c6969f139f..25884b6b8a 100644 --- a/libavcodec/vorbis_parser.c +++ b/libavcodec/vorbis_parser.c @@ -329,7 +329,7 @@ end: return buf_size; } -static void vorbis_parser_close(AVCodecParserContext *ctx) +static av_cold void vorbis_parser_close(AVCodecParserContext *ctx) { VorbisParseContext *s = ctx->priv_data; av_vorbis_parse_free(&s->vp); diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 8f18cdf4c6..59ad41bb85 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -35,6 +35,7 @@ #include <stddef.h> #include <string.h> +#include "libavutil/attributes.h" #include "libavutil/emms.h" #include "libavutil/imgutils.h" #include "libavutil/mem.h" @@ -349,7 +350,7 @@ static av_cold void free_tables(AVCodecContext *avctx) av_freep(&s->motion_val[1]); } -static void vp3_decode_flush(AVCodecContext *avctx) +static av_cold void vp3_decode_flush(AVCodecContext *avctx) { Vp3DecodeContext *s = avctx->priv_data; diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index d0d0238c2c..715d3b7563 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -41,6 +41,7 @@ #include "vp9data.h" #include "vp9dec.h" #include "vpx_rac.h" +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" @@ -1822,7 +1823,7 @@ fail: return ret; } -static void vp9_decode_flush(AVCodecContext *avctx) +static av_cold void vp9_decode_flush(AVCodecContext *avctx) { VP9Context *s = avctx->priv_data; int i; diff --git a/libavcodec/vvc/thread.c b/libavcodec/vvc/thread.c index 2138341b0f..164ad83430 100644 --- a/libavcodec/vvc/thread.c +++ b/libavcodec/vvc/thread.c @@ -684,7 +684,7 @@ static int task_run(FFTask *_t, void *local_context, void *user_data) return 0; } -FFExecutor* ff_vvc_executor_alloc(VVCContext *s, const int thread_count) +av_cold FFExecutor* ff_vvc_executor_alloc(VVCContext *s, const int thread_count) { FFTaskCallbacks callbacks = { s, @@ -695,7 +695,7 @@ FFExecutor* ff_vvc_executor_alloc(VVCContext *s, const int thread_count) return ff_executor_alloc(&callbacks, thread_count); } -void ff_vvc_executor_free(FFExecutor **e) +av_cold void ff_vvc_executor_free(FFExecutor **e) { ff_executor_free(e); } diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c index 9c74967f74..341315373f 100644 --- a/libavcodec/wavpack.c +++ b/libavcodec/wavpack.c @@ -1611,7 +1611,7 @@ static int wavpack_decode_block(AVCodecContext *avctx, AVFrame *frame, int block return 0; } -static void wavpack_decode_flush(AVCodecContext *avctx) +static av_cold void wavpack_decode_flush(AVCodecContext *avctx) { WavpackContext *s = avctx->priv_data; diff --git a/libavcodec/webvttenc.c b/libavcodec/webvttenc.c index 3b66b4f2dd..d5d3ddd17c 100644 --- a/libavcodec/webvttenc.c +++ b/libavcodec/webvttenc.c @@ -187,7 +187,7 @@ static int webvtt_encode_frame(AVCodecContext *avctx, return s->buffer.len; } -static int webvtt_encode_close(AVCodecContext *avctx) +static av_cold int webvtt_encode_close(AVCodecContext *avctx) { WebVTTContext *s = avctx->priv_data; ff_ass_split_free(s->ass_ctx); diff --git a/libavcodec/wmalosslessdec.c b/libavcodec/wmalosslessdec.c index f36212e19b..243388a65b 100644 --- a/libavcodec/wmalosslessdec.c +++ b/libavcodec/wmalosslessdec.c @@ -1302,7 +1302,7 @@ static int decode_packet(AVCodecContext *avctx, AVFrame *rframe, return (s->packet_loss) ? AVERROR_INVALIDDATA : get_bits_count(gb) >> 3; } -static void flush(AVCodecContext *avctx) +static av_cold void flush(AVCodecContext *avctx) { WmallDecodeCtx *s = avctx->priv_data; s->packet_loss = 1; diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index d87ed0433e..b15bf31ccc 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -88,6 +88,7 @@ #include <inttypes.h> +#include "libavutil/attributes.h" #include "libavutil/audio_fifo.h" #include "libavutil/mem.h" #include "libavutil/tx.h" @@ -2040,7 +2041,7 @@ static av_cold int xma_decode_end(AVCodecContext *avctx) return 0; } -static void flush(WMAProDecodeCtx *s) +static av_cold void flush(WMAProDecodeCtx *s) { int i; /** reset output buffer as a part of it is used during the windowing of a @@ -2058,14 +2059,14 @@ static void flush(WMAProDecodeCtx *s) *@brief Clear decoder buffers (for seeking). *@param avctx codec context */ -static void wmapro_flush(AVCodecContext *avctx) +static av_cold void wmapro_flush(AVCodecContext *avctx) { WMAProDecodeCtx *s = avctx->priv_data; flush(s); } -static void xma_flush(AVCodecContext *avctx) +static av_cold void xma_flush(AVCodecContext *avctx) { XMADecodeCtx *s = avctx->priv_data; int i; diff --git a/libavcodec/xbm_parser.c b/libavcodec/xbm_parser.c index 28aae49ee3..436aec96ab 100644 --- a/libavcodec/xbm_parser.c +++ b/libavcodec/xbm_parser.c @@ -24,7 +24,10 @@ * XBM parser */ -#include "libavutil/common.h" +#include <stdint.h> + +#include "libavutil/attributes.h" +#include "libavutil/avutil.h" #include "parser.h" @@ -41,7 +44,7 @@ typedef struct XBMParseContext { #define END ((';' << 8) | ('\n' << 0)) -static int xbm_init(AVCodecParserContext *s) +static av_cold int xbm_init(AVCodecParserContext *s) { XBMParseContext *bpc = s->priv_data; diff --git a/libavcodec/zerocodec.c b/libavcodec/zerocodec.c index 48f78d1d86..a19ca62836 100644 --- a/libavcodec/zerocodec.c +++ b/libavcodec/zerocodec.c @@ -22,6 +22,7 @@ #include "codec_internal.h" #include "decode.h" #include "zlib_wrapper.h" +#include "libavutil/attributes.h" #include "libavutil/common.h" typedef struct ZeroCodecContext { @@ -126,7 +127,7 @@ static av_cold int zerocodec_decode_init(AVCodecContext *avctx) return ff_inflate_init(&zc->zstream, avctx); } -static void zerocodec_decode_flush(AVCodecContext *avctx) +static av_cold void zerocodec_decode_flush(AVCodecContext *avctx) { ZeroCodecContext *zc = avctx->priv_data; -- 2.49.1 >From e5f8ee82fb59d96d312ee9090a0bac3d30ae6704 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Date: Fri, 5 Sep 2025 12:55:14 +0200 Subject: [PATCH 2/2] avcodec/dvdsubdec: Don't return value != 0 on init success Currently, any nonnegative return value from an init function is just treated as success and otherwise ignored; while it is not explicitly forbidden to return something else than 0 (there is no documentation whatsoever), the assumption is that they return zero on success. So change dvdsubdec.c accordingly. Also change dvdsub_parse_extradata() to return zero on success. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/dvdsubdec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c index c4fbcffc41..9f9845bf8e 100644 --- a/libavcodec/dvdsubdec.c +++ b/libavcodec/dvdsubdec.c @@ -624,10 +624,10 @@ static int dvdsub_parse_extradata(AVCodecContext *avctx) { DVDSubContext *ctx = (DVDSubContext*) avctx->priv_data; char *dataorig, *data; - int ret = 1; + int ret; if (!avctx->extradata || !avctx->extradata_size) - return 1; + return 0; dataorig = data = av_malloc(avctx->extradata_size+1); if (!data) @@ -656,6 +656,7 @@ static int dvdsub_parse_extradata(AVCodecContext *avctx) data += strspn(data, "\n\r"); } + ret = 0; fail: av_free(dataorig); return ret; @@ -683,7 +684,7 @@ static av_cold int dvdsub_init(AVCodecContext *avctx) av_log(avctx, AV_LOG_DEBUG, "\n"); } - return 1; + return 0; } static av_cold void dvdsub_flush(AVCodecContext *avctx) -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
reply other threads:[~2025-09-12 20:40 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=175770960838.25.4888418327511204814@463a07221176 \ --to=ffmpeg-devel@ffmpeg.org \ --cc=code@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git