shithub: libvpx

Download patch

ref: 5881601488ef4278d7ca2b06e2ad4d44b3063620
parent: 8121f85473b28183c93fdcef290ed6f74b0b52db
author: Vignesh Venkatasubramanian <vigneshv@google.com>
date: Fri Feb 24 06:40:22 EST 2017

vp9: Rename new_mt to row_mt

new_mt is a very generic name that will get obsolete soon enough.
Since this is exposed as a codec control, renaming it to row_mt to
signify row level paralellism. Also renaming the ETHREAD_BIT_MATCH
codec control to ROW_MT_BIT_EXACT.

Change-Id: Ic7872d78bb3b12fb4cf92ba028ec8e08eb3a9558

--- a/test/vp9_ethread_test.cc
+++ b/test/vp9_ethread_test.cc
@@ -39,8 +39,8 @@
         encoding_mode_(GET_PARAM(1)), set_cpu_used_(GET_PARAM(2)) {
     init_flags_ = VPX_CODEC_USE_PSNR;
 
-    new_mt_mode_ = 1;
-    bit_match_mode_ = 0;
+    row_mt_mode_ = 1;
+    bit_exact_mode_ = 0;
     first_pass_only_ = true;
     firstpass_stats_.buf = NULL;
     firstpass_stats_.sz = 0;
@@ -83,9 +83,9 @@
       encoder->Control(VP9E_SET_FRAME_PARALLEL_DECODING, 0);
 
       if (encoding_mode_ == ::libvpx_test::kTwoPassGood)
-        encoder->Control(VP9E_SET_NEW_MT, new_mt_mode_);
+        encoder->Control(VP9E_SET_ROW_MT, row_mt_mode_);
 
-      encoder->Control(VP9E_ENABLE_THREAD_BIT_MATCH, bit_match_mode_);
+      encoder->Control(VP9E_ENABLE_ROW_MT_BIT_EXACT, bit_exact_mode_);
 
       encoder_initialized_ = true;
     }
@@ -111,8 +111,8 @@
   int tiles_;
   ::libvpx_test::TestMode encoding_mode_;
   int set_cpu_used_;
-  int new_mt_mode_;
-  int bit_match_mode_;
+  int row_mt_mode_;
+  int bit_exact_mode_;
   bool first_pass_only_;
   vpx_fixed_buf_t firstpass_stats_;
 };
@@ -152,16 +152,16 @@
   // stats are compared to check if the stats match.
   uint8_t *stats1 = reinterpret_cast<uint8_t *>(fp_stats->buf);
   uint8_t *stats2 = stats1 + fp_stats->sz / 2;
-  ::libvpx_test::MD5 md5_new_mt_0, md5_new_mt_1;
+  ::libvpx_test::MD5 md5_row_mt_0, md5_row_mt_1;
 
-  md5_new_mt_0.Add(stats1, fp_stats->sz / 2);
-  const char *md5_new_mt_0_str = md5_new_mt_0.Get();
+  md5_row_mt_0.Add(stats1, fp_stats->sz / 2);
+  const char *md5_row_mt_0_str = md5_row_mt_0.Get();
 
-  md5_new_mt_1.Add(stats2, fp_stats->sz / 2);
-  const char *md5_new_mt_1_str = md5_new_mt_1.Get();
+  md5_row_mt_1.Add(stats2, fp_stats->sz / 2);
+  const char *md5_row_mt_1_str = md5_row_mt_1.Get();
 
   // Check md5 match.
-  ASSERT_STREQ(md5_new_mt_0_str, md5_new_mt_1_str)
+  ASSERT_STREQ(md5_row_mt_0_str, md5_row_mt_1_str)
       << "MD5 checksums don't match";
 
   // Reset firstpass_stats_ to 0.
@@ -175,23 +175,23 @@
   first_pass_only_ = true;
   cfg_.rc_target_bitrate = 1000;
 
-  // Test new_mt_mode: 0 vs 1 (threads = 1, tiles_ = 0)
-  bit_match_mode_ = 0;
+  // Test row_mt_mode: 0 vs 1 (threads = 1, tiles_ = 0)
+  bit_exact_mode_ = 0;
   tiles_ = 0;
   cfg_.g_threads = 1;
 
-  new_mt_mode_ = 0;
+  row_mt_mode_ = 0;
   init_flags_ = VPX_CODEC_USE_PSNR;
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 
-  new_mt_mode_ = 1;
+  row_mt_mode_ = 1;
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 
-  // Compare to check if using or not using new-mt generates matching stats.
+  // Compare to check if using or not using row-mt generates matching stats.
   compare_fp_stats(&firstpass_stats_);
 
   // Test multi-threads: single thread vs 4 threads
-  new_mt_mode_ = 1;
+  row_mt_mode_ = 1;
   tiles_ = 2;
 
   cfg_.g_threads = 1;
@@ -204,19 +204,19 @@
   // Compare to check if single-thread and multi-thread stats matches.
   compare_fp_stats(&firstpass_stats_);
 
-  // Test new_mt_mode: 0 vs 1 (threads = 8, tiles_ = 2)
-  bit_match_mode_ = 1;
+  // Test row_mt_mode: 0 vs 1 (threads = 8, tiles_ = 2)
+  bit_exact_mode_ = 1;
   tiles_ = 2;
   cfg_.g_threads = 8;
 
-  new_mt_mode_ = 0;
+  row_mt_mode_ = 0;
   init_flags_ = VPX_CODEC_USE_PSNR;
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 
-  new_mt_mode_ = 1;
+  row_mt_mode_ = 1;
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
 
-  // Compare to check if stats match with new-mt=0/1.
+  // Compare to check if stats match with row-mt=0/1.
   compare_fp_stats_md5(&firstpass_stats_);
 }
 
@@ -231,8 +231,8 @@
         encoding_mode_(GET_PARAM(1)), set_cpu_used_(GET_PARAM(2)) {
     init_flags_ = VPX_CODEC_USE_PSNR;
     md5_.clear();
-    new_mt_mode_ = 1;
-    bit_match_mode_ = 0;
+    row_mt_mode_ = 1;
+    bit_exact_mode_ = 0;
     psnr_ = 0.0;
     nframes_ = 0;
   }
@@ -275,11 +275,11 @@
         encoder->Control(VP8E_SET_ARNR_TYPE, 3);
         encoder->Control(VP9E_SET_FRAME_PARALLEL_DECODING, 0);
 
-        encoder->Control(VP9E_SET_NEW_MT, new_mt_mode_);
-        // While new_mt = 1/0(with/without row-based multi-threading), several
+        encoder->Control(VP9E_SET_ROW_MT, row_mt_mode_);
+        // While row_mt = 1/0(with/without row-based multi-threading), several
         // speed features that would adaptively adjust encoding parameters have
         // to be disabled to guarantee the bit match of the resulted bitstream.
-        encoder->Control(VP9E_ENABLE_THREAD_BIT_MATCH, bit_match_mode_);
+        encoder->Control(VP9E_ENABLE_ROW_MT_BIT_EXACT, bit_exact_mode_);
       } else {
         encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 0);
         encoder->Control(VP9E_SET_AQ_MODE, 3);
@@ -318,8 +318,8 @@
   int threads_;
   ::libvpx_test::TestMode encoding_mode_;
   int set_cpu_used_;
-  int new_mt_mode_;
-  int bit_match_mode_;
+  int row_mt_mode_;
+  int bit_exact_mode_;
   double psnr_;
   unsigned int nframes_;
   std::vector<std::string> md5_;
@@ -331,8 +331,8 @@
 
   // Part 1: Bit exact test for new_mt_mode_ = 0.
   // This part keeps original unit tests done before new-mt code is checked in.
-  new_mt_mode_ = 0;
-  bit_match_mode_ = 0;
+  row_mt_mode_ = 0;
+  bit_exact_mode_ = 0;
 
   // Encode using single thread.
   cfg_.g_threads = 1;
@@ -351,8 +351,8 @@
   ASSERT_EQ(single_thr_md5, multi_thr_md5);
 
   // Part 2: new_mt_mode_ = 0 vs new_mt_mode_ = 1 single thread bit exact test.
-  new_mt_mode_ = 1;
-  bit_match_mode_ = 0;
+  row_mt_mode_ = 1;
+  bit_exact_mode_ = 0;
 
   // Encode using single thread
   cfg_.g_threads = 1;
@@ -364,8 +364,8 @@
   ASSERT_EQ(single_thr_md5, new_mt_single_thr_md5);
 
   // Part 3: Bit exact test with new-mt on
-  new_mt_mode_ = 1;
-  bit_match_mode_ = 1;
+  row_mt_mode_ = 1;
+  bit_exact_mode_ = 1;
   new_mt_single_thr_md5.clear();
 
   // Encode using single thread.
@@ -385,8 +385,8 @@
   ASSERT_EQ(new_mt_single_thr_md5, new_mt_multi_thr_md5);
 
   // Part 4: PSNR test with bit_match_mode_ = 0
-  new_mt_mode_ = 1;
-  bit_match_mode_ = 0;
+  row_mt_mode_ = 1;
+  bit_exact_mode_ = 0;
 
   // Encode using single thread.
   cfg_.g_threads = 1;
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -4341,7 +4341,7 @@
     }
 #endif
 
-    if (!cpi->new_mt) {
+    if (!cpi->row_mt) {
       cpi->row_mt_sync_read_ptr = vp9_row_mt_sync_read_dummy;
       cpi->row_mt_sync_write_ptr = vp9_row_mt_sync_write_dummy;
       // If allowed, encoding tiles in parallel with one thread handling one
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -1575,7 +1575,7 @@
   highbd_set_var_fns(cpi);
 #endif
 
-  vp9_set_new_mt(cpi);
+  vp9_set_row_mt(cpi);
 }
 
 #ifndef M_LOG2_E
@@ -5223,16 +5223,16 @@
   }
 }
 
-void vp9_set_new_mt(VP9_COMP *cpi) {
+void vp9_set_row_mt(VP9_COMP *cpi) {
   // Enable row based multi-threading for supported modes of encoding
-  cpi->new_mt = 0;
+  cpi->row_mt = 0;
   if (((cpi->oxcf.mode == GOOD || cpi->oxcf.mode == BEST) &&
        cpi->oxcf.speed < 5 && cpi->oxcf.pass == 1) &&
-      cpi->oxcf.new_mt && !cpi->use_svc)
-    cpi->new_mt = 1;
+      cpi->oxcf.row_mt && !cpi->use_svc)
+    cpi->row_mt = 1;
 
   if (cpi->oxcf.mode == GOOD && cpi->oxcf.speed < 5 &&
-      (cpi->oxcf.pass == 0 || cpi->oxcf.pass == 2) && cpi->oxcf.new_mt &&
+      (cpi->oxcf.pass == 0 || cpi->oxcf.pass == 2) && cpi->oxcf.row_mt &&
       !cpi->use_svc)
-    cpi->new_mt = 1;
+    cpi->row_mt = 1;
 }
--- a/vp9/encoder/vp9_encoder.h
+++ b/vp9/encoder/vp9_encoder.h
@@ -267,8 +267,8 @@
   int render_height;
   VP9E_TEMPORAL_LAYERING_MODE temporal_layering_mode;
 
-  int new_mt;
-  unsigned int ethread_bit_match;
+  int row_mt;
+  unsigned int row_mt_bit_exact;
 } VP9EncoderConfig;
 
 static INLINE int is_lossless_requested(const VP9EncoderConfig *cfg) {
@@ -691,7 +691,7 @@
   void (*row_mt_sync_read_ptr)(VP9RowMTSync *const, int, int);
   void (*row_mt_sync_write_ptr)(VP9RowMTSync *const, int, int, const int);
   ARNRFilterData arnr_filter_data;
-  int new_mt;
+  int row_mt;
 
   // Previous Partition Info
   BLOCK_SIZE *prev_partition;
@@ -909,7 +909,7 @@
 
 void vp9_new_framerate(VP9_COMP *cpi, double framerate);
 
-void vp9_set_new_mt(VP9_COMP *cpi);
+void vp9_set_row_mt(VP9_COMP *cpi);
 
 #define LAYER_IDS_TO_IDX(sl, tl, num_tl) ((sl) * (num_tl) + (tl))
 
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -979,12 +979,12 @@
     if (log_intra < 10.0) {
       mb_intra_factor = 1.0 + ((10.0 - log_intra) * 0.05);
       fp_acc_data->intra_factor += mb_intra_factor;
-      if (cpi->oxcf.ethread_bit_match)
+      if (cpi->oxcf.row_mt_bit_exact)
         cpi->twopass.fp_mb_float_stats[mb_index].frame_mb_intra_factor =
             mb_intra_factor;
     } else {
       fp_acc_data->intra_factor += 1.0;
-      if (cpi->oxcf.ethread_bit_match)
+      if (cpi->oxcf.row_mt_bit_exact)
         cpi->twopass.fp_mb_float_stats[mb_index].frame_mb_intra_factor = 1.0;
     }
 
@@ -999,12 +999,12 @@
     if ((level_sample < DARK_THRESH) && (log_intra < 9.0)) {
       mb_brightness_factor = 1.0 + (0.01 * (DARK_THRESH - level_sample));
       fp_acc_data->brightness_factor += mb_brightness_factor;
-      if (cpi->oxcf.ethread_bit_match)
+      if (cpi->oxcf.row_mt_bit_exact)
         cpi->twopass.fp_mb_float_stats[mb_index].frame_mb_brightness_factor =
             mb_brightness_factor;
     } else {
       fp_acc_data->brightness_factor += 1.0;
-      if (cpi->oxcf.ethread_bit_match)
+      if (cpi->oxcf.row_mt_bit_exact)
         cpi->twopass.fp_mb_float_stats[mb_index].frame_mb_brightness_factor =
             1.0;
     }
@@ -1166,7 +1166,7 @@
         if (((this_error - intrapenalty) * 9 <= motion_error * 10) &&
             (this_error < (2 * intrapenalty))) {
           fp_acc_data->neutral_count += 1.0;
-          if (cpi->oxcf.ethread_bit_match)
+          if (cpi->oxcf.row_mt_bit_exact)
             cpi->twopass.fp_mb_float_stats[mb_index].frame_mb_neutral_count =
                 1.0;
           // Also track cases where the intra is not much worse than the inter
@@ -1176,7 +1176,7 @@
           mb_neutral_count =
               (double)motion_error / DOUBLE_DIVIDE_CHECK((double)this_error);
           fp_acc_data->neutral_count += mb_neutral_count;
-          if (cpi->oxcf.ethread_bit_match)
+          if (cpi->oxcf.row_mt_bit_exact)
             cpi->twopass.fp_mb_float_stats[mb_index].frame_mb_neutral_count =
                 mb_neutral_count;
         }
@@ -1297,7 +1297,7 @@
     recon_uvoffset += uv_mb_height;
 
     // Accumulate row level stats to the corresponding tile stats
-    if (cpi->new_mt && mb_col == (tile.mi_col_end >> 1) - 1)
+    if (cpi->row_mt && mb_col == (tile.mi_col_end >> 1) - 1)
       accumulate_fp_mb_row_stat(tile_data, fp_acc_data);
 
     (*(cpi->row_mt_sync_write_ptr))(&tile_data->row_mt_sync, mb_row, c,
@@ -1424,7 +1424,7 @@
 
   cm->log2_tile_rows = 0;
 
-  if (cpi->oxcf.ethread_bit_match && cpi->twopass.fp_mb_float_stats == NULL)
+  if (cpi->oxcf.row_mt_bit_exact && cpi->twopass.fp_mb_float_stats == NULL)
     CHECK_MEM_ERROR(
         cm, cpi->twopass.fp_mb_float_stats,
         vpx_calloc(cm->MBs * sizeof(*cpi->twopass.fp_mb_float_stats), 1));
@@ -1432,7 +1432,7 @@
   {
     FIRSTPASS_STATS fps;
     TileDataEnc *first_tile_col;
-    if (!cpi->new_mt) {
+    if (!cpi->row_mt) {
       cm->log2_tile_cols = 0;
       cpi->row_mt_sync_read_ptr = vp9_row_mt_sync_read_dummy;
       cpi->row_mt_sync_write_ptr = vp9_row_mt_sync_write_dummy;
@@ -1441,13 +1441,13 @@
     } else {
       cpi->row_mt_sync_read_ptr = vp9_row_mt_sync_read;
       cpi->row_mt_sync_write_ptr = vp9_row_mt_sync_write;
-      if (cpi->oxcf.ethread_bit_match) {
+      if (cpi->oxcf.row_mt_bit_exact) {
         cm->log2_tile_cols = 0;
         vp9_zero_array(cpi->twopass.fp_mb_float_stats, cm->MBs);
       }
       vp9_encode_fp_row_mt(cpi);
       first_tile_col = &cpi->tile_data[0];
-      if (cpi->oxcf.ethread_bit_match)
+      if (cpi->oxcf.row_mt_bit_exact)
         accumulate_floating_point_stats(cpi, first_tile_col);
       first_pass_stat_calc(cpi, &fps, &(first_tile_col->fp_data));
     }
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -3576,7 +3576,7 @@
   if (best_mode_index < 0 || best_rd >= best_rd_so_far) {
     // If adaptive interp filter is enabled, then the current leaf node of 8x8
     // data is needed for sub8x8. Hence preserve the context.
-    if (cpi->new_mt && bsize == BLOCK_8X8) ctx->mic = *xd->mi[0];
+    if (cpi->row_mt && bsize == BLOCK_8X8) ctx->mic = *xd->mi[0];
     rd_cost->rate = INT_MAX;
     rd_cost->rdcost = INT64_MAX;
     return;
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -591,7 +591,7 @@
   // With row based multi-threading, the following speed features
   // have to be disabled to guarantee that bitstreams encoded with single thread
   // and multiple threads match
-  if (cpi->oxcf.ethread_bit_match) {
+  if (cpi->oxcf.row_mt_bit_exact) {
     sf->adaptive_rd_thresh = 0;
     sf->allow_exhaustive_searches = 0;
     sf->adaptive_pred_interp_filter = 0;
@@ -762,7 +762,7 @@
   // With row based multi-threading, the following speed features
   // have to be disabled to guarantee that bitstreams encoded with single thread
   // and multiple threads match
-  if (cpi->oxcf.ethread_bit_match) {
+  if (cpi->oxcf.row_mt_bit_exact) {
     sf->adaptive_rd_thresh = 0;
     sf->allow_exhaustive_searches = 0;
     sf->adaptive_pred_interp_filter = 0;
--- a/vp9/encoder/vp9_temporal_filter.c
+++ b/vp9/encoder/vp9_temporal_filter.c
@@ -766,7 +766,7 @@
   set_error_per_bit(&cpi->td.mb, rdmult);
   vp9_initialize_me_consts(cpi, &cpi->td.mb, ARNR_FILT_QINDEX);
 
-  if (!cpi->new_mt)
+  if (!cpi->row_mt)
     temporal_filter_iterate_c(cpi);
   else
     vp9_temporal_filter_row_mt(cpi);
--- a/vp9/vp9_cx_iface.c
+++ b/vp9/vp9_cx_iface.c
@@ -51,8 +51,8 @@
   vpx_color_range_t color_range;
   int render_width;
   int render_height;
-  unsigned int new_mt;
-  unsigned int ethread_bit_match;
+  unsigned int row_mt;
+  unsigned int row_mt_bit_exact;
 };
 
 static struct vp9_extracfg default_extra_cfg = {
@@ -84,8 +84,8 @@
   0,                     // color range
   0,                     // render width
   0,                     // render height
-  1,                     // new_mt
-  0,                     // ethread_bit_match
+  1,                     // row_mt
+  0,                     // row_mt_bit_exact
 };
 
 struct vpx_codec_alg_priv {
@@ -249,8 +249,8 @@
         "kf_min_dist not supported in auto mode, use 0 "
         "or kf_max_dist instead.");
 
-  RANGE_CHECK(extra_cfg, new_mt, 0, 1);
-  RANGE_CHECK(extra_cfg, ethread_bit_match, 0, 1);
+  RANGE_CHECK(extra_cfg, row_mt, 0, 1);
+  RANGE_CHECK(extra_cfg, row_mt_bit_exact, 0, 1);
   RANGE_CHECK(extra_cfg, enable_auto_alt_ref, 0, 2);
   RANGE_CHECK(extra_cfg, cpu_used, -8, 8);
   RANGE_CHECK_HI(extra_cfg, noise_sensitivity, 6);
@@ -560,8 +560,8 @@
 
   oxcf->target_level = extra_cfg->target_level;
 
-  oxcf->new_mt = extra_cfg->new_mt;
-  oxcf->ethread_bit_match = extra_cfg->ethread_bit_match;
+  oxcf->row_mt = extra_cfg->row_mt;
+  oxcf->row_mt_bit_exact = extra_cfg->row_mt_bit_exact;
 
   for (sl = 0; sl < oxcf->ss_number_layers; ++sl) {
 #if CONFIG_SPATIAL_SVC
@@ -851,17 +851,17 @@
   return update_extra_cfg(ctx, &extra_cfg);
 }
 
-static vpx_codec_err_t ctrl_set_new_mt(vpx_codec_alg_priv_t *ctx,
+static vpx_codec_err_t ctrl_set_row_mt(vpx_codec_alg_priv_t *ctx,
                                        va_list args) {
   struct vp9_extracfg extra_cfg = ctx->extra_cfg;
-  extra_cfg.new_mt = CAST(VP9E_SET_NEW_MT, args);
+  extra_cfg.row_mt = CAST(VP9E_SET_ROW_MT, args);
   return update_extra_cfg(ctx, &extra_cfg);
 }
 
-static vpx_codec_err_t ctrl_set_ethread_bit_match(vpx_codec_alg_priv_t *ctx,
-                                                  va_list args) {
+static vpx_codec_err_t ctrl_enable_row_mt_bit_exact(vpx_codec_alg_priv_t *ctx,
+                                                    va_list args) {
   struct vp9_extracfg extra_cfg = ctx->extra_cfg;
-  extra_cfg.ethread_bit_match = CAST(VP9E_ENABLE_THREAD_BIT_MATCH, args);
+  extra_cfg.row_mt_bit_exact = CAST(VP9E_ENABLE_ROW_MT_BIT_EXACT, args);
   return update_extra_cfg(ctx, &extra_cfg);
 }
 
@@ -1460,7 +1460,7 @@
     return VPX_CODEC_INVALID_PARAM;
   }
 
-  vp9_set_new_mt(ctx->cpi);
+  vp9_set_row_mt(ctx->cpi);
 
   return VPX_CODEC_OK;
 }
@@ -1620,8 +1620,8 @@
   { VP9E_SET_SVC_REF_FRAME_CONFIG, ctrl_set_svc_ref_frame_config },
   { VP9E_SET_RENDER_SIZE, ctrl_set_render_size },
   { VP9E_SET_TARGET_LEVEL, ctrl_set_target_level },
-  { VP9E_SET_NEW_MT, ctrl_set_new_mt },
-  { VP9E_ENABLE_THREAD_BIT_MATCH, ctrl_set_ethread_bit_match },
+  { VP9E_SET_ROW_MT, ctrl_set_row_mt },
+  { VP9E_ENABLE_ROW_MT_BIT_EXACT, ctrl_enable_row_mt_bit_exact },
 
   // Getters
   { VP8E_GET_LAST_QUANTIZER, ctrl_get_quantizer },
--- a/vpx/vp8cx.h
+++ b/vpx/vp8cx.h
@@ -553,16 +553,16 @@
   *
   * Supported in codecs: VP9
   */
-  VP9E_SET_NEW_MT,
+  VP9E_SET_ROW_MT,
 
-  /*!\brief Codec control function to enable the bit match result in multi-
-   * threaded encoder unit tests.
+  /*!\brief Codec control function to enable bit-exact bitstream when row level
+   * multi-threading is enabled.
    *
    * 0 : off, 1 : on
    *
    * Supported in codecs: VP9
    */
-  VP9E_ENABLE_THREAD_BIT_MATCH,
+  VP9E_ENABLE_ROW_MT_BIT_EXACT,
 
   /*!\brief Codec control function to get bitstream level.
    *
@@ -855,11 +855,11 @@
 VPX_CTRL_USE_TYPE(VP9E_SET_TARGET_LEVEL, unsigned int)
 #define VPX_CTRL_VP9E_SET_TARGET_LEVEL
 
-VPX_CTRL_USE_TYPE(VP9E_SET_NEW_MT, unsigned int)
-#define VPX_CTRL_VP9E_SET_NEW_MT
+VPX_CTRL_USE_TYPE(VP9E_SET_ROW_MT, unsigned int)
+#define VPX_CTRL_VP9E_SET_ROW_MT
 
-VPX_CTRL_USE_TYPE(VP9E_ENABLE_THREAD_BIT_MATCH, unsigned int)
-#define VPX_CTRL_VP9E_ENABLE_THREAD_BIT_MATCH
+VPX_CTRL_USE_TYPE(VP9E_ENABLE_ROW_MT_BIT_EXACT, unsigned int)
+#define VPX_CTRL_VP9E_ENABLE_ROW_MT_BIT_EXACT
 
 VPX_CTRL_USE_TYPE(VP9E_GET_LEVEL, int *)
 #define VPX_CTRL_VP9E_GET_LEVEL
--- a/vpxenc.c
+++ b/vpxenc.c
@@ -471,8 +471,9 @@
     "Target level (255: off (default); 0: only keep level stats; 10: level 1.0;"
     " 11: level 1.1; ... 62: level 6.2)");
 
-static const arg_def_t new_mt =
-    ARG_DEF(NULL, "new-mt", 1, "Enable row based multi-threading in VP9");
+static const arg_def_t row_mt =
+    ARG_DEF(NULL, "row-mt", 1,
+            "Enable row based non-deterministic multi-threading in VP9");
 #endif
 
 #if CONFIG_VP9_ENCODER
@@ -501,7 +502,7 @@
                                        &min_gf_interval,
                                        &max_gf_interval,
                                        &target_level,
-                                       &new_mt,
+                                       &row_mt,
 #if CONFIG_VP9_HIGHBITDEPTH
                                        &bitdeptharg,
                                        &inbitdeptharg,
@@ -532,7 +533,7 @@
                                         VP9E_SET_MIN_GF_INTERVAL,
                                         VP9E_SET_MAX_GF_INTERVAL,
                                         VP9E_SET_TARGET_LEVEL,
-                                        VP9E_SET_NEW_MT,
+                                        VP9E_SET_ROW_MT,
                                         0 };
 #endif