@@ -696,20 +696,21 @@ int avcodec_configure_side_data(AVCodecContext *avctx,
if (!sd) {
av_frame_side_data_free(
- &avctx->frame_side_data, &avctx->nb_frame_side_data);
+ &avctx->encoder_side_data, &avctx->nb_encoder_side_data);
return 0;
}
- if (nb_sd > 0 && nb_sd == avctx->nb_frame_side_data &&
- sd == (const AVFrameSideData **)avctx->frame_side_data)
+ if (nb_sd > 0 && nb_sd == avctx->nb_encoder_side_data &&
+ sd == (const AVFrameSideData **)avctx->encoder_side_data)
return AVERROR(EINVAL);
for (int i = 0; i < nb_sd; i++) {
int ret = av_frame_side_data_clone(
- &avctx->frame_side_data, &avctx->nb_frame_side_data, sd[i], flags);
+ &avctx->encoder_side_data, &avctx->nb_encoder_side_data, sd[i],
+ flags);
if (ret < 0) {
av_frame_side_data_free(
- &avctx->frame_side_data, &avctx->nb_frame_side_data);
+ &avctx->encoder_side_data, &avctx->nb_encoder_side_data);
return ret;
}
}
@@ -2064,12 +2064,16 @@ typedef struct AVCodecContext {
unsigned nb_side_data_prefer_packet;
/**
- * Set containing static side data, such as HDR10 CLL / MDCV structures.
- * - encoding: set by user
+ * Array containing static side data, such as HDR10 CLL / MDCV structures.
+ * Side data entries should be allocated by usage of helpers defined in
+ * libavutil/frame.h.
+ *
+ * - encoding: may be set by user before calling avcodec_open2() for
+ * encoder configuration.
* - decoding: unused
*/
- AVFrameSideData **frame_side_data;
- int nb_frame_side_data;
+ AVFrameSideData **encoder_side_data;
+ int nb_encoder_side_data;
} AVCodecContext;
/**
@@ -181,12 +181,13 @@ static void handle_side_data(AVCodecContext *avctx,
{
const AVFrameSideData *cll_sd =
av_frame_side_data_get(
- (const AVFrameSideData **)avctx->frame_side_data,
- avctx->nb_frame_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
+ (const AVFrameSideData **)avctx->encoder_side_data,
+ avctx->nb_encoder_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
const AVFrameSideData *mdcv_sd =
av_frame_side_data_get(
- (const AVFrameSideData **)avctx->frame_side_data,
- avctx->nb_frame_side_data, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
+ (const AVFrameSideData **)avctx->encoder_side_data,
+ avctx->nb_encoder_side_data,
+ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
if (cll_sd) {
const AVContentLightMetadata *cll =
@@ -907,12 +907,13 @@ static void handle_side_data(AVCodecContext *avctx, x264_param_t *params)
#if CONFIG_LIBX264_HDR10
const AVFrameSideData *cll_sd =
av_frame_side_data_get(
- (const AVFrameSideData **)avctx->frame_side_data,
- avctx->nb_frame_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
+ (const AVFrameSideData **)avctx->encoder_side_data,
+ avctx->nb_encoder_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
const AVFrameSideData *mdcv_sd =
av_frame_side_data_get(
- (const AVFrameSideData **)avctx->frame_side_data,
- avctx->nb_frame_side_data, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
+ (const AVFrameSideData **)avctx->encoder_side_data,
+ avctx->nb_encoder_side_data,
+ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
if (cll_sd) {
const AVContentLightMetadata *cll =
@@ -231,12 +231,13 @@ static int handle_side_data(AVCodecContext *avctx, const x265_api *api,
{
const AVFrameSideData *cll_sd =
av_frame_side_data_get(
- (const AVFrameSideData **)avctx->frame_side_data,
- avctx->nb_frame_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
+ (const AVFrameSideData **)avctx->encoder_side_data,
+ avctx->nb_encoder_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
const AVFrameSideData *mdcv_sd =
av_frame_side_data_get(
- (const AVFrameSideData **)avctx->frame_side_data,
- avctx->nb_frame_side_data, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
+ (const AVFrameSideData **)avctx->encoder_side_data,
+ avctx->nb_encoder_side_data,
+ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
if (cll_sd) {
const AVContentLightMetadata *cll =
@@ -177,7 +177,7 @@ void avcodec_free_context(AVCodecContext **pavctx)
av_freep(&avctx->rc_override);
av_channel_layout_uninit(&avctx->ch_layout);
av_frame_side_data_free(
- &avctx->frame_side_data, &avctx->nb_frame_side_data);
+ &avctx->encoder_side_data, &avctx->nb_encoder_side_data);
av_freep(pavctx);
}