* [FFmpeg-devel] [PATCH] avcodec: Add av_cold to flush,init,close functions missing it (PR #20509)
@ 2025-09-12 20:40 mkver via ffmpeg-devel
0 siblings, 0 replies; only message in thread
From: mkver via ffmpeg-devel @ 2025-09-12 20:40 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: mkver
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-09-12 20:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-12 20:40 [FFmpeg-devel] [PATCH] avcodec: Add av_cold to flush,init,close functions missing it (PR #20509) mkver via ffmpeg-devel
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