[FFmpeg-cvslog] h264: only ref cur_pic in update_thread_context if it is initialized

Anton Khirnov git at videolan.org
Sat Feb 28 19:14:55 CET 2015


ffmpeg | branch: release/2.4 | Anton Khirnov <anton at khirnov.net> | Thu Feb 12 12:26:58 2015 +0100| [1dbfaa34e615606cb3f1a3ecabb117e354459edc] | committer: Anton Khirnov

h264: only ref cur_pic in update_thread_context if it is initialized

It may be empty if the previous thread's decode call did not contain a
valid frame.

(cherry picked from commit 0dea4c77ccf5956561bb8991311b3d834bb5fa40)
Signed-off-by: Anton Khirnov <anton at khirnov.net>

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

 libavcodec/h264_slice.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 1ee7a3d..e47a448 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -589,8 +589,11 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
 
     h->cur_pic_ptr = REBASE_PICTURE(h1->cur_pic_ptr, h, h1);
     ff_h264_unref_picture(h, &h->cur_pic);
-    if ((ret = ff_h264_ref_picture(h, &h->cur_pic, &h1->cur_pic)) < 0)
-        return ret;
+    if (h1->cur_pic.f.buf[0]) {
+        ret = ff_h264_ref_picture(h, &h->cur_pic, &h1->cur_pic);
+        if (ret < 0)
+            return ret;
+    }
 
     h->workaround_bugs = h1->workaround_bugs;
     h->low_delay       = h1->low_delay;



More information about the ffmpeg-cvslog mailing list