shithub: libvpx

Download patch

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;
--