[FFmpeg-devel] [PATCH 1/3] avcodec/decode: fetch packets from the pkt_props FIFO on every frame returned
James Almer
jamrial at gmail.com
Mon Jun 21 16:17:15 EEST 2021
On 6/18/2021 7:02 PM, James Almer wrote:
> Fixes memleaks on decoders that don't call ff_decode_frame_props().
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavcodec/decode.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
> index 75bc7ad98e..44f0b11546 100644
> --- a/libavcodec/decode.c
> +++ b/libavcodec/decode.c
> @@ -533,6 +533,10 @@ static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
> if (ret == AVERROR_EOF)
> avci->draining_done = 1;
>
> + if (IS_EMPTY(avci->last_pkt_props) && av_fifo_size(avci->pkt_props) >= sizeof(*avci->last_pkt_props))
> + av_fifo_generic_read(avci->pkt_props,
> + avci->last_pkt_props, sizeof(*avci->last_pkt_props), NULL);
> +
> if (!ret) {
> frame->best_effort_timestamp = guess_correct_pts(avctx,
> frame->pts,
> @@ -1490,10 +1494,6 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
> { AV_PKT_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE },
> };
>
> - if (IS_EMPTY(pkt) && av_fifo_size(avctx->internal->pkt_props) >= sizeof(*pkt))
> - av_fifo_generic_read(avctx->internal->pkt_props,
> - pkt, sizeof(*pkt), NULL);
> -
> frame->pts = pkt->pts;
> frame->pkt_pos = pkt->pos;
> frame->pkt_duration = pkt->duration;
Will apply set.
More information about the ffmpeg-devel
mailing list