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
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) {