From: Vignesh Venkatasubramanian Date: Fri, 24 Feb 2017 19:40:22 +0000 (-0800) Subject: vp9: Rename new_mt to row_mt X-Git-Tag: v1.7.0~672 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5881601488ef4278d7ca2b06e2ad4d44b3063620;p=libvpx 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 --- diff --git a/test/vp9_ethread_test.cc b/test/vp9_ethread_test.cc index 208d77d67..92545965a 100644 --- a/test/vp9_ethread_test.cc +++ b/test/vp9_ethread_test.cc @@ -39,8 +39,8 @@ class VPxFirstPassEncoderThreadTest 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 @@ class VPxFirstPassEncoderThreadTest 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 @@ class VPxFirstPassEncoderThreadTest 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 @@ static void compare_fp_stats_md5(vpx_fixed_buf_t *fp_stats) { // stats are compared to check if the stats match. uint8_t *stats1 = reinterpret_cast(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 @@ TEST_P(VPxFirstPassEncoderThreadTest, FirstPassStatsTest) { 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 @@ TEST_P(VPxFirstPassEncoderThreadTest, FirstPassStatsTest) { // 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 @@ class VPxEncoderThreadTest 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 @@ class VPxEncoderThreadTest 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 @@ class VPxEncoderThreadTest 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 md5_; @@ -331,8 +331,8 @@ TEST_P(VPxEncoderThreadTest, EncoderResultTest) { // 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 @@ TEST_P(VPxEncoderThreadTest, EncoderResultTest) { 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 @@ TEST_P(VPxEncoderThreadTest, EncoderResultTest) { 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 @@ TEST_P(VPxEncoderThreadTest, EncoderResultTest) { 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; diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index e09f94b89..982dbd943 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -4341,7 +4341,7 @@ static void encode_frame_internal(VP9_COMP *cpi) { } #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 diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index 5d64b0a10..21771a029 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -1575,7 +1575,7 @@ void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) { 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_apply_encoding_flags(VP9_COMP *cpi, vpx_enc_frame_flags_t flags) { } } -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; } diff --git a/vp9/encoder/vp9_encoder.h b/vp9/encoder/vp9_encoder.h index 2797ff769..2d411329f 100644 --- a/vp9/encoder/vp9_encoder.h +++ b/vp9/encoder/vp9_encoder.h @@ -267,8 +267,8 @@ typedef struct VP9EncoderConfig { 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 @@ typedef struct VP9_COMP { 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 @@ VP9_LEVEL vp9_get_level(const Vp9LevelSpec *const level_spec); 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)) diff --git a/vp9/encoder/vp9_firstpass.c b/vp9/encoder/vp9_firstpass.c index 280e3d6a6..3234b1abf 100644 --- a/vp9/encoder/vp9_firstpass.c +++ b/vp9/encoder/vp9_firstpass.c @@ -979,12 +979,12 @@ void vp9_first_pass_encode_tile_mb_row(VP9_COMP *cpi, ThreadData *td, 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 @@ void vp9_first_pass_encode_tile_mb_row(VP9_COMP *cpi, ThreadData *td, 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 @@ void vp9_first_pass_encode_tile_mb_row(VP9_COMP *cpi, ThreadData *td, 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 @@ void vp9_first_pass_encode_tile_mb_row(VP9_COMP *cpi, ThreadData *td, 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 @@ void vp9_first_pass_encode_tile_mb_row(VP9_COMP *cpi, ThreadData *td, 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 @@ void vp9_first_pass(VP9_COMP *cpi, const struct lookahead_entry *source) { 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 @@ void vp9_first_pass(VP9_COMP *cpi, const struct lookahead_entry *source) { { 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 @@ void vp9_first_pass(VP9_COMP *cpi, const struct lookahead_entry *source) { } 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)); } diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 1b82b29d4..e03ffc118 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -3576,7 +3576,7 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, TileDataEnc *tile_data, 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; diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index e4146cdc4..6a1d8885c 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -591,7 +591,7 @@ void vp9_set_speed_features_framesize_dependent(VP9_COMP *cpi) { // 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 @@ void vp9_set_speed_features_framesize_independent(VP9_COMP *cpi) { // 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; diff --git a/vp9/encoder/vp9_temporal_filter.c b/vp9/encoder/vp9_temporal_filter.c index fdaa4814c..e02c34224 100644 --- a/vp9/encoder/vp9_temporal_filter.c +++ b/vp9/encoder/vp9_temporal_filter.c @@ -766,7 +766,7 @@ void vp9_temporal_filter(VP9_COMP *cpi, int distance) { 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); diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c index cc946dfd6..2f41a8d82 100644 --- a/vp9/vp9_cx_iface.c +++ b/vp9/vp9_cx_iface.c @@ -51,8 +51,8 @@ struct vp9_extracfg { 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 @@ static struct vp9_extracfg default_extra_cfg = { 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 @@ static vpx_codec_err_t validate_config(vpx_codec_alg_priv_t *ctx, "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 @@ static vpx_codec_err_t set_encoder_config( 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 @@ static vpx_codec_err_t ctrl_set_target_level(vpx_codec_alg_priv_t *ctx, 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 @@ static vpx_codec_err_t ctrl_set_svc(vpx_codec_alg_priv_t *ctx, va_list args) { 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 @@ static vpx_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { { 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 }, diff --git a/vpx/vp8cx.h b/vpx/vp8cx.h index 923734c61..1c60c4ad1 100644 --- a/vpx/vp8cx.h +++ b/vpx/vp8cx.h @@ -553,16 +553,16 @@ enum vp8e_enc_control_id { * * 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_RENDER_SIZE, int *) 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 diff --git a/vpxenc.c b/vpxenc.c index abb3baebd..6c887dfeb 100644 --- a/vpxenc.c +++ b/vpxenc.c @@ -471,8 +471,9 @@ static const arg_def_t target_level = ARG_DEF( "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 @@ static const arg_def_t *vp9_args[] = { &cpu_used_vp9, &min_gf_interval, &max_gf_interval, &target_level, - &new_mt, + &row_mt, #if CONFIG_VP9_HIGHBITDEPTH &bitdeptharg, &inbitdeptharg, @@ -532,7 +533,7 @@ static const int vp9_arg_ctrl_map[] = { VP8E_SET_CPUUSED, VP9E_SET_MIN_GF_INTERVAL, VP9E_SET_MAX_GF_INTERVAL, VP9E_SET_TARGET_LEVEL, - VP9E_SET_NEW_MT, + VP9E_SET_ROW_MT, 0 }; #endif