From: James Almer <jamrial@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCH 4/4] avcodec/utils: move ff_add_cpb_side_data() to encoder code
Date: Tue, 5 Sep 2023 14:43:36 -0300
Message-ID: <20230905174336.3585-4-jamrial@gmail.com> (raw)
In-Reply-To: <20230905174336.3585-1-jamrial@gmail.com>
It's only used by encoders, so move it to prevent wrong usage.
Signed-off-by: James Almer <jamrial@gmail.com>
---
libavcodec/encode.c | 31 +++++++++++++++++++++++++++++++
libavcodec/encode.h | 5 +++++
libavcodec/internal.h | 5 -----
libavcodec/libaomenc.c | 2 +-
libavcodec/libopenh264enc.c | 2 +-
libavcodec/libsvtav1.c | 2 +-
libavcodec/libvpxenc.c | 2 +-
libavcodec/libx264.c | 2 +-
libavcodec/libx265.c | 2 +-
libavcodec/mpegvideo_enc.c | 2 +-
libavcodec/nvenc.c | 2 +-
libavcodec/qsvenc.c | 2 +-
libavcodec/utils.c | 31 -------------------------------
13 files changed, 45 insertions(+), 45 deletions(-)
diff --git a/libavcodec/encode.c b/libavcodec/encode.c
index b92593770c..7cd3213b73 100644
--- a/libavcodec/encode.c
+++ b/libavcodec/encode.c
@@ -865,3 +865,34 @@ AVCodecInternal *ff_encode_internal_alloc(void)
{
return av_mallocz(sizeof(EncodeContext));
}
+
+AVCPBProperties *ff_encode_add_cpb_side_data(AVCodecContext *avctx)
+{
+ AVPacketSideData *tmp;
+ AVCPBProperties *props;
+ size_t size;
+ int i;
+
+ for (i = 0; i < avctx->nb_coded_side_data; i++)
+ if (avctx->coded_side_data[i].type == AV_PKT_DATA_CPB_PROPERTIES)
+ return (AVCPBProperties *)avctx->coded_side_data[i].data;
+
+ props = av_cpb_properties_alloc(&size);
+ if (!props)
+ return NULL;
+
+ tmp = av_realloc_array(avctx->coded_side_data, avctx->nb_coded_side_data + 1, sizeof(*tmp));
+ if (!tmp) {
+ av_freep(&props);
+ return NULL;
+ }
+
+ avctx->coded_side_data = tmp;
+ avctx->nb_coded_side_data++;
+
+ avctx->coded_side_data[avctx->nb_coded_side_data - 1].type = AV_PKT_DATA_CPB_PROPERTIES;
+ avctx->coded_side_data[avctx->nb_coded_side_data - 1].data = (uint8_t*)props;
+ avctx->coded_side_data[avctx->nb_coded_side_data - 1].size = size;
+
+ return props;
+}
diff --git a/libavcodec/encode.h b/libavcodec/encode.h
index dfaab7c976..e019cd7702 100644
--- a/libavcodec/encode.h
+++ b/libavcodec/encode.h
@@ -73,6 +73,11 @@ int ff_encode_reordered_opaque(AVCodecContext *avctx,
int ff_encode_encode_cb(AVCodecContext *avctx, AVPacket *avpkt,
AVFrame *frame, int *got_packet);
+/**
+ * Add a CPB properties side data to an encoding context.
+ */
+AVCPBProperties *ff_encode_add_cpb_side_data(AVCodecContext *avctx);
+
/**
* Rescale from sample rate to AVCodecContext.time_base.
*/
diff --git a/libavcodec/internal.h b/libavcodec/internal.h
index a67cf713ca..83e0bc3fb2 100644
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
@@ -180,11 +180,6 @@ int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx);
int avpriv_codec_get_cap_skip_frame_fill_param(const AVCodec *codec);
-/**
- * Add a CPB properties side data to an encoding context.
- */
-AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx);
-
/**
* Check AVFrame for S12M timecode side data and allocate and fill TC SEI message with timecode info
*
diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index f29cb0784a..53a1159b75 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -1018,7 +1018,7 @@ static av_cold int aom_init(AVCodecContext *avctx,
if (codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH)
ctx->rawimg.bit_depth = enccfg.g_bit_depth;
- cpb_props = ff_add_cpb_side_data(avctx);
+ cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index 5b59af6f94..433accba22 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -353,7 +353,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
memcpy(avctx->extradata, fbi.sLayerInfo[0].pBsBuf, size);
}
- props = ff_add_cpb_side_data(avctx);
+ props = ff_encode_add_cpb_side_data(avctx);
if (!props)
return AVERROR(ENOMEM);
props->max_bitrate = param.iMaxBitrate;
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index f2b73361d8..a8b3b62b96 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -325,7 +325,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
FFMAX(avctx->bit_rate, avctx->rc_max_rate) / 1000LL;
if (avctx->bit_rate || avctx->rc_max_rate || avctx->rc_buffer_size) {
- AVCPBProperties *cpb_props = ff_add_cpb_side_data(avctx);
+ AVCPBProperties *cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
index 7a545527a9..0f6f4e785c 100644
--- a/libavcodec/libvpxenc.c
+++ b/libavcodec/libvpxenc.c
@@ -1273,7 +1273,7 @@ static av_cold int vpx_init(AVCodecContext *avctx,
ctx->rawimg.bit_depth = enccfg.g_bit_depth;
#endif
- cpb_props = ff_add_cpb_side_data(avctx);
+ cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index ce849d6c9a..131d1c7fc9 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -1231,7 +1231,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
avctx->extradata_size = p - avctx->extradata;
}
- cpb_props = ff_add_cpb_side_data(avctx);
+ cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
cpb_props->buffer_size = x4->params.rc.i_vbv_buffer_size * 1000;
diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c
index 873b3021ee..447e6da25f 100644
--- a/libavcodec/libx265.c
+++ b/libavcodec/libx265.c
@@ -395,7 +395,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
ctx->params->rc.vbvBufferSize = avctx->rc_buffer_size / 1000;
ctx->params->rc.vbvMaxBitrate = avctx->rc_max_rate / 1000;
- cpb_props = ff_add_cpb_side_data(avctx);
+ cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
cpb_props->buffer_size = ctx->params->rc.vbvBufferSize * 1000;
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 69e3152c82..5bf4b06a11 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -973,7 +973,7 @@ av_cold int ff_mpv_encode_init(AVCodecContext *avctx)
}
}
- cpb_props = ff_add_cpb_side_data(avctx);
+ cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
cpb_props->max_bitrate = avctx->rc_max_rate;
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
index 1e83ea9734..4249ff7188 100644
--- a/libavcodec/nvenc.c
+++ b/libavcodec/nvenc.c
@@ -1666,7 +1666,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
if (ctx->encode_config.rcParams.averageBitRate > 0)
avctx->bit_rate = ctx->encode_config.rcParams.averageBitRate;
- cpb_props = ff_add_cpb_side_data(avctx);
+ cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
cpb_props->max_bitrate = ctx->encode_config.rcParams.maxBitRate;
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index b3b7475b0f..ac7364f61f 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -1504,7 +1504,7 @@ static int qsv_retrieve_enc_params(AVCodecContext *avctx, QSVEncContext *q)
}
memset(avctx->extradata + avctx->extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
- cpb_props = ff_add_cpb_side_data(avctx);
+ cpb_props = ff_encode_add_cpb_side_data(avctx);
if (!cpb_props)
return AVERROR(ENOMEM);
cpb_props->max_bitrate = avctx->rc_max_rate;
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index bd4131db62..d54e050848 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1018,37 +1018,6 @@ AVCPBProperties *av_cpb_properties_alloc(size_t *size)
return props;
}
-AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx)
-{
- AVPacketSideData *tmp;
- AVCPBProperties *props;
- size_t size;
- int i;
-
- for (i = 0; i < avctx->nb_coded_side_data; i++)
- if (avctx->coded_side_data[i].type == AV_PKT_DATA_CPB_PROPERTIES)
- return (AVCPBProperties *)avctx->coded_side_data[i].data;
-
- props = av_cpb_properties_alloc(&size);
- if (!props)
- return NULL;
-
- tmp = av_realloc_array(avctx->coded_side_data, avctx->nb_coded_side_data + 1, sizeof(*tmp));
- if (!tmp) {
- av_freep(&props);
- return NULL;
- }
-
- avctx->coded_side_data = tmp;
- avctx->nb_coded_side_data++;
-
- avctx->coded_side_data[avctx->nb_coded_side_data - 1].type = AV_PKT_DATA_CPB_PROPERTIES;
- avctx->coded_side_data[avctx->nb_coded_side_data - 1].data = (uint8_t*)props;
- avctx->coded_side_data[avctx->nb_coded_side_data - 1].size = size;
-
- return props;
-}
-
static unsigned bcd2uint(uint8_t bcd)
{
unsigned low = bcd & 0xf;
--
2.42.0
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2023-09-05 17:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-05 17:43 [FFmpeg-devel] [PATCH 1/4] Revert "avcodec/mpeg12dec: Do not alter avctx->rc_buffer_size" James Almer
2023-09-05 17:43 ` [FFmpeg-devel] [PATCH 2/4] avformat/demux: propagate the internal decoder's bitrate properties James Almer
2023-09-05 17:43 ` [FFmpeg-devel] [PATCH 3/4] avcodec/mpeg12dec: stop propagating AVCPBProperties side data James Almer
2023-09-05 17:43 ` James Almer [this message]
2023-09-06 12:13 ` [FFmpeg-devel] [PATCH 1/4] Revert "avcodec/mpeg12dec: Do not alter avctx->rc_buffer_size" James Almer
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=20230905174336.3585-4-jamrial@gmail.com \
--to=jamrial@gmail.com \
--cc=ffmpeg-devel@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