aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2019-03-18 17:25:58 -0300
committerJames Almer <jamrial@gmail.com>2019-03-20 21:20:20 -0300
commit884ecede17017bb5b56f547e66f13a505636f6de (patch)
treedb7fa35c3595c3aaaca744e759ef1eb72ceb5304
parent3d5762380d7d16fda58d3b347ea9a57c4fb18ec2 (diff)
downloadffmpeg-884ecede17017bb5b56f547e66f13a505636f6de.tar.gz
avcodec/hevcdec: decode at most one slice reporting being the first in the picture
Fixes deadlocks when decoding packets containing more than one of the aforementioned slices when using frame threads. Tested-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com> (cherry picked from commit 70c8c8a818f39bc262565ec29fae2baffb3e1660)
-rw-r--r--libavcodec/hevcdec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index db0bebfa49..776bb8f51c 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -2799,6 +2799,10 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal)
return ret;
if (s->sh.first_slice_in_pic_flag) {
+ if (s->ref) {
+ av_log(s->avctx, AV_LOG_ERROR, "Two slices reporting being the first in the same frame.\n");
+ goto fail;
+ }
if (s->max_ra == INT_MAX) {
if (s->nal_unit_type == HEVC_NAL_CRA_NUT || IS_BLA(s)) {
s->max_ra = s->poc;