shithub: dav1d

Download patch

ref: 014b0a06d1d6f3791f70805df09e5c544e7e3d02
parent: 2366b77ad49d66f684e4660777b9b032dd679aad
author: Janne Grunau <janne-vlc@jannau.net>
date: Mon Nov 5 16:28:30 EST 2018

submit_frame: frame threading cleanup on decoding errors

--- a/src/decode.c
+++ b/src/decode.c
@@ -2795,8 +2795,10 @@
 
     dav1d_thread_picture_unref(&f->cur);
     dav1d_cdf_thread_unref(&f->in_cdf);
-    if (f->frame_hdr.refresh_context)
-            dav1d_cdf_thread_unref(&f->out_cdf);
+    if (f->frame_hdr.refresh_context) {
+        dav1d_cdf_thread_signal(&f->out_cdf);
+        dav1d_cdf_thread_unref(&f->out_cdf);
+    }
     dav1d_ref_dec(&f->cur_segmap_ref);
     dav1d_ref_dec(&f->prev_segmap_ref);
     dav1d_ref_dec(&f->mvs_ref);
@@ -3100,6 +3102,12 @@
 
     for (int i = 0; i < f->n_tile_data; i++)
         dav1d_data_unref(&f->tile[i].data);
+    f->n_tile_data = 0;
+
+    if (c->n_fc > 1) {
+        pthread_cond_signal(&f->frame_thread.td.cond);
+        pthread_mutex_unlock(&f->frame_thread.td.lock);
+    }
 
     return res;
 }