diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c index 624d5c9fc..07de29bad 100644 --- a/vp9/vp9_cx_iface.c +++ b/vp9/vp9_cx_iface.c @@ -486,7 +486,13 @@ static vpx_codec_err_t set_encoder_config( 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; diff --git a/vpxenc.c b/vpxenc.c index f24b1805b..50e7c7fc7 100644 --- a/vpxenc.c +++ b/vpxenc.c @@ -380,7 +380,8 @@ static const arg_def_t cpu_used_vp9 = ARG_DEF( 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(