shithub: libvpx

Download patch

ref: a21fc45b1383ec168cc6aaed7b174212e94c7768
parent: c8fc6ed14a3acbbf2a816dedf3d75a1747f8a69f
parent: dc5f7712f234af8b7e1123610f2569bf54c65684
author: Yunqing Wang <[email protected]>
date: Wed Mar 23 11:52:35 EDT 2016

Merge "Prevent encoder crash caused by row tile dependencies"

--- a/vp9/vp9_cx_iface.c
+++ b/vp9/vp9_cx_iface.c
@@ -486,7 +486,13 @@
   oxcf->content = extra_cfg->content;
 
   oxcf->tile_columns = extra_cfg->tile_columns;
-  oxcf->tile_rows    = extra_cfg->tile_rows;
+
+  // The dependencies between row tiles cause error in multi-threaded encoding.
+  // For now, it is forced to be 0 in this case.
+  if (oxcf->max_threads > 1 && oxcf->tile_columns > 0)
+    oxcf->tile_rows  = 0;
+  else
+    oxcf->tile_rows  = extra_cfg->tile_rows;
 
   oxcf->error_resilient_mode         = cfg->g_error_resilient;
   oxcf->frame_parallel_decoding_mode = extra_cfg->frame_parallel_decoding_mode;
--- a/vpxenc.c
+++ b/vpxenc.c
@@ -380,7 +380,8 @@
 static const arg_def_t tile_cols = ARG_DEF(
     NULL, "tile-columns", 1, "Number of tile columns to use, log2");
 static const arg_def_t tile_rows = ARG_DEF(
-    NULL, "tile-rows", 1, "Number of tile rows to use, log2");
+    NULL, "tile-rows", 1,
+    "Number of tile rows to use, log2 (set to 0 while threads > 1)");
 static const arg_def_t lossless = ARG_DEF(
     NULL, "lossless", 1, "Lossless mode (0: false (default), 1: true)");
 static const arg_def_t frame_parallel_decoding = ARG_DEF(