avcodec/vp9: mark frame as finished on decode_tiles() failure
authorMichael Niedermayer <michael@niedermayer.cc>
Thu, 14 Dec 2017 01:02:55 +0000 (02:02 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Thu, 14 Dec 2017 23:08:56 +0000 (00:08 +0100)
Fixes deadlock with framethreads
Fixes: Netflix_Aerial_1080p_60fps_8bit_420.y4m.vp9.noaltref.webm.ivf.s69372_r01-05_b6-.ivf
Fixes: Netflix_Aerial_1080p_60fps_10bit_420.y4m.vp9.noaltref.webm.ivf.s149104_r01-05_b6-.ivf
Fixes: ducks_take_off_444_720p50.y4m.vp9.webm.ivf.s107375_r01-05_b6-.ivf

Reported-by: James Zern <jzern@google.com>
Reviewed-by: James Zern <jzern@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/vp9.c

index 6241f01..0fac638 100644 (file)
@@ -1644,8 +1644,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
 #endif
         {
             ret = decode_tiles(avctx, data, size);
-            if (ret < 0)
+            if (ret < 0) {
+                ff_thread_report_progress(&s->s.frames[CUR_FRAME].tf, INT_MAX, 0);
                 return ret;
+            }
         }
 
         // Sum all counts fields into td[0].counts for tile threading