[FFmpeg-cvslog] mpegvideo: unref old current_picture before allocating a new one

Janne Grunau git at videolan.org
Mon May 20 12:13:10 CEST 2013


ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Sun May 19 14:49:55 2013 +0200| [4b79668154f3cf762a71665aea517bdde57b081c] | committer: Janne Grunau

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4b79668154f3cf762a71665aea517bdde57b081c
---

 libavcodec/mpegvideo.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index b5f1587..b175d32 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;



More information about the ffmpeg-cvslog mailing list