mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 12:09:55 +00:00
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: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
de3e0ab35f
commit
84bf1cbef9
@ -2792,13 +2792,6 @@ typedef struct AVCodecContext {
|
||||
int64_t pts_correction_last_pts; /// PTS 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.
|
||||
* - decoding: set by user
|
||||
|
@ -1862,7 +1862,6 @@ static int add_metadata_from_side_data(AVCodecContext *avctx, AVFrame *frame)
|
||||
const uint8_t *side_metadata;
|
||||
const uint8_t *end;
|
||||
|
||||
av_dict_free(&avctx->metadata);
|
||||
side_metadata = av_packet_get_side_data(avctx->pkt,
|
||||
AV_PKT_DATA_STRINGS_METADATA, &size);
|
||||
if (!side_metadata)
|
||||
@ -1877,7 +1876,6 @@ static int add_metadata_from_side_data(AVCodecContext *avctx, AVFrame *frame)
|
||||
side_metadata = val + strlen(val) + 1;
|
||||
}
|
||||
end:
|
||||
avctx->metadata = av_frame_get_metadata(frame);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2298,7 +2296,6 @@ av_cold int avcodec_close(AVCodecContext *avctx)
|
||||
av_buffer_pool_uninit(&pool->pools[i]);
|
||||
av_freep(&avctx->internal->pool);
|
||||
av_freep(&avctx->internal);
|
||||
av_dict_free(&avctx->metadata);
|
||||
}
|
||||
|
||||
if (avctx->priv_data && avctx->codec && avctx->codec->priv_class)
|
||||
|
Loading…
Reference in New Issue
Block a user