ref: 03b3fcecac41566aadb99281cff3444d903820b8
parent: d4d7589428a3764428afdb3658d5fdb15168a0ab
author: Attila Nagy <attilanagy@google.com>
date: Tue Jul 31 10:04:45 EDT 2012
Fix potential encoder dead-lock after picture resize The sync interval for the multithreaded encoder was considered as not changing during the encoding. This is not true if picture size is changed. The encoder could dead-lock because the main thread and the other threads were using different sync interval. Change-Id: I75232bbdbc6c02d77f830d870fd8b4e96697c64e
--- a/vp8/encoder/ethreading.c
+++ b/vp8/encoder/ethreading.c
@@ -59,8 +59,6 @@
MB_ROW_COMP *mbri = (MB_ROW_COMP *)(((ENCODETHREAD_DATA *)p_data)->ptr2);
ENTROPY_CONTEXT_PLANES mb_row_left_context;
- const int nsync = cpi->mt_sync_range;
-
while (1)
{
if (cpi->b_multi_threaded == 0)
@@ -68,6 +66,7 @@
if (sem_wait(&cpi->h_event_start_encoding[ithread]) == 0)
{
+ const int nsync = cpi->mt_sync_range;
VP8_COMMON *cm = &cpi->common;
int mb_row;
MACROBLOCK *x = &mbri->mb;
--
⑨