diff options
author | Anton Khirnov <anton@khirnov.net> | 2015-02-12 12:26:58 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2015-02-21 09:34:17 +0100 |
commit | 1dbfaa34e615606cb3f1a3ecabb117e354459edc (patch) | |
tree | a21c964e218adfd36976b9401af8004d65748e8e | |
parent | 532c96a2158c04f265d750d54f2f103b8d9fe0ef (diff) | |
download | ffmpeg-1dbfaa34e615606cb3f1a3ecabb117e354459edc.tar.gz |
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@khirnov.net>
-rw-r--r-- | libavcodec/h264_slice.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 1ee7a3dfff..e47a4484e6 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; |