From 4b79668154f3cf762a71665aea517bdde57b081c Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Sun, 19 May 2013 14:49:55 +0200 Subject: [PATCH] mpegvideo: unref old current_picture before allocating a new one Allows decoding with only three frame buffers with frame reference counting. Fixes VAAPI based decoding in vlc which uses only three frame buffers for the mpegvideo-based codecs. --- libavcodec/mpegvideo.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index b5f1587178..b175d32ff1 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -1495,6 +1495,8 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) } } + ff_mpeg_unref_picture(s, &s->current_picture); + if (!s->encoding) { ff_release_unused_pictures(s, 1); @@ -1542,7 +1544,6 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) // s->current_picture_ptr->quality = s->new_picture_ptr->quality; s->current_picture_ptr->f.key_frame = s->pict_type == AV_PICTURE_TYPE_I; - ff_mpeg_unref_picture(s, &s->current_picture); if ((ret = ff_mpeg_ref_picture(s, &s->current_picture, s->current_picture_ptr)) < 0) return ret; -- 2.11.0