row_mt_worker_hook: return early if corrupted is 1
In row_mt_worker_hook(), if the first while loop exits because
td->xd.corrupted is 1, it should not go on to the second while loop.
Instead, it should set frame_row_mt_info->row_mt_exit to 1, call
pthread_cond_broadcast(pbi->row_mt_cond_), and return early.
BUG=b/114646745
Change-Id: Ie43484332350b40176cf1ef87d79f61f78f8f3a8
(cherry picked from commit 82e0ef6d013aa7bf8a733338e4e52b6b31280d65)
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 31f14b5..81cd879 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -3513,6 +3513,19 @@
}
}
+ if (td->xd.corrupted) {
+ thread_data->error_info.setjmp = 0;
+#if CONFIG_MULTITHREAD
+ pthread_mutex_lock(pbi->row_mt_mutex_);
+#endif
+ frame_row_mt_info->row_mt_exit = 1;
+#if CONFIG_MULTITHREAD
+ pthread_cond_broadcast(pbi->row_mt_cond_);
+ pthread_mutex_unlock(pbi->row_mt_mutex_);
+#endif
+ return 0;
+ }
+
set_decode_func_pointers(td, 0x2);
while (1) {