Commit 84bf1cbe authored by Hendrik Leppkes's avatar Hendrik Leppkes Committed by Michael Niedermayer

avcodec: remove AVCodecContext->metadata

This field was only ever set and freed from avcodec, and not otherwise
used. However, because frames are refcounted now, avcodec cannot make any
assumptions about the lifetime of the frame metadata, which can result in
double-frees or leaked memory.
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent de3e0ab3
...@@ -2792,13 +2792,6 @@ typedef struct AVCodecContext { ...@@ -2792,13 +2792,6 @@ typedef struct AVCodecContext {
int64_t pts_correction_last_pts; /// PTS of the last frame int64_t pts_correction_last_pts; /// PTS of the last frame
int64_t pts_correction_last_dts; /// DTS of the last frame int64_t pts_correction_last_dts; /// DTS of the last frame
/**
* Current frame metadata.
* - decoding: maintained and used by libavcodec, not intended to be used by user apps
* - encoding: unused
*/
AVDictionary *metadata;
/** /**
* Character encoding of the input subtitles file. * Character encoding of the input subtitles file.
* - decoding: set by user * - decoding: set by user
......
...@@ -1862,7 +1862,6 @@ static int add_metadata_from_side_data(AVCodecContext *avctx, AVFrame *frame) ...@@ -1862,7 +1862,6 @@ static int add_metadata_from_side_data(AVCodecContext *avctx, AVFrame *frame)
const uint8_t *side_metadata; const uint8_t *side_metadata;
const uint8_t *end; const uint8_t *end;
av_dict_free(&avctx->metadata);
side_metadata = av_packet_get_side_data(avctx->pkt, side_metadata = av_packet_get_side_data(avctx->pkt,
AV_PKT_DATA_STRINGS_METADATA, &size); AV_PKT_DATA_STRINGS_METADATA, &size);
if (!side_metadata) if (!side_metadata)
...@@ -1877,7 +1876,6 @@ static int add_metadata_from_side_data(AVCodecContext *avctx, AVFrame *frame) ...@@ -1877,7 +1876,6 @@ static int add_metadata_from_side_data(AVCodecContext *avctx, AVFrame *frame)
side_metadata = val + strlen(val) + 1; side_metadata = val + strlen(val) + 1;
} }
end: end:
avctx->metadata = av_frame_get_metadata(frame);
return ret; return ret;
} }
...@@ -2298,7 +2296,6 @@ av_cold int avcodec_close(AVCodecContext *avctx) ...@@ -2298,7 +2296,6 @@ av_cold int avcodec_close(AVCodecContext *avctx)
av_buffer_pool_uninit(&pool->pools[i]); av_buffer_pool_uninit(&pool->pools[i]);
av_freep(&avctx->internal->pool); av_freep(&avctx->internal->pool);
av_freep(&avctx->internal); av_freep(&avctx->internal);
av_dict_free(&avctx->metadata);
} }
if (avctx->priv_data && avctx->codec && avctx->codec->priv_class) if (avctx->priv_data && avctx->codec && avctx->codec->priv_class)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment