h264: only ref cur_pic in update_thread_context if it is initialized
authorAnton Khirnov <anton@khirnov.net>
Thu, 12 Feb 2015 11:26:58 +0000 (12:26 +0100)
committerAnton Khirnov <anton@khirnov.net>
Sat, 21 Feb 2015 08:40:43 +0000 (09:40 +0100)
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@khirnov.net>
(cherry picked from commit 1dbfaa34e615606cb3f1a3ecabb117e354459edc)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Conflicts:
libavcodec/h264_slice.c

libavcodec/h264.c

index 7e62881..3c07477 100644 (file)
@@ -1776,8 +1776,11 @@ static int decode_update_thread_context(AVCodecContext *dst,
 
     h->cur_pic_ptr = REBASE_PICTURE(h1->cur_pic_ptr, h, h1);
     unref_picture(h, &h->cur_pic);
-    if ((ret = ref_picture(h, &h->cur_pic, &h1->cur_pic)) < 0)
-        return ret;
+    if (h1->cur_pic.f.buf[0]) {
+        ret = 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;