From c9266b85476aadf078238b7bde3c36bf7953e11c Mon Sep 17 00:00:00 2001 From: James Zern Date: Sat, 29 Jul 2017 11:34:57 -0700 Subject: [PATCH] Revert "vp9: Speed feature to adapt partition based on source_sad." This reverts commit 064fc570ff8399536563e3846500fd99b273b034. This causes an assertion failure in vp9_mcomp.c when running gtest_filter=VP9/MotionVectorTestLarge.OverallTest/41: `mv->col >= -((1 << (11 + 1 + 2)) - 1) && mv->col < ((1 << (11 + 1 + 2)) - 1)' Change-Id: I449e777bf18b661cb3f1d82253610c55c51687f6 --- vp9/encoder/vp9_encodeframe.c | 12 +++++------- vp9/encoder/vp9_speed_features.c | 22 +++++++++------------- vp9/encoder/vp9_speed_features.h | 4 ---- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 0f486ad4f..b927bac02 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -981,8 +981,8 @@ static void chroma_check(VP9_COMP *cpi, MACROBLOCK *x, int bsize, } } -static uint64_t avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift, - int sb_offset) { +static void avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift, + int sb_offset) { unsigned int tmp_sse; uint64_t tmp_sad; unsigned int tmp_variance; @@ -994,7 +994,7 @@ static uint64_t avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift, uint64_t avg_source_sad_threshold = 10000; uint64_t avg_source_sad_threshold2 = 12000; #if CONFIG_VP9_HIGHBITDEPTH - if (cpi->common.use_highbitdepth) return 0; + if (cpi->common.use_highbitdepth) return; #endif src_y += shift; last_src_y += shift; @@ -1026,7 +1026,7 @@ static uint64_t avg_source_sad(VP9_COMP *cpi, MACROBLOCK *x, int shift, cpi->content_state_sb_fd[sb_offset] = 0; } } - return tmp_sad; + return; } // This function chooses partitioning based on the variance between source and @@ -4168,9 +4168,7 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, ThreadData *td, if (cpi->compute_source_sad_onepass && cpi->sf.use_source_sad) { int shift = cpi->Source->y_stride * (mi_row << 3) + (mi_col << 3); int sb_offset2 = ((cm->mi_cols + 7) >> 3) * (mi_row >> 3) + (mi_col >> 3); - int64_t source_sad = avg_source_sad(cpi, x, shift, sb_offset2); - if (sf->adapt_partition_source_sad && source_sad > 40000) - partition_search_type = REFERENCE_PARTITION; + avg_source_sad(cpi, x, shift, sb_offset2); } // Set the partition type of the 64X64 block diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index 6488dfd53..d91142845 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -364,7 +364,6 @@ static void set_rt_speed_feature_framesize_independent( sf->copy_partition_flag = 0; sf->use_source_sad = 0; sf->use_simple_block_yrd = 0; - sf->adapt_partition_source_sad = 0; if (speed >= 1) { sf->allow_txfm_domain_distortion = 1; @@ -528,17 +527,6 @@ static void set_rt_speed_feature_framesize_independent( sf->mv.search_method = NSTEP; sf->mv.reduce_first_step_size = 1; sf->skip_encode_sb = 0; - if (!cpi->external_resize) sf->use_source_sad = 1; - if (sf->use_source_sad) { - if (cm->width * cm->height <= 640 * 360) - sf->adapt_partition_source_sad = 1; - if (cpi->content_state_sb_fd == NULL && - (!cpi->use_svc || - cpi->svc.spatial_layer_id == cpi->svc.number_spatial_layers - 1)) { - cpi->content_state_sb_fd = (uint8_t *)vpx_calloc( - (cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1), sizeof(uint8_t)); - } - } if (cpi->oxcf.rc_mode == VPX_CBR && content != VP9E_CONTENT_SCREEN) { // Enable short circuit for low temporal variance. sf->short_circuit_low_temp_var = 1; @@ -551,7 +539,6 @@ static void set_rt_speed_feature_framesize_independent( } if (speed >= 7) { - sf->adapt_partition_source_sad = 0; sf->adaptive_rd_thresh = 3; sf->mv.search_method = FAST_DIAMOND; sf->mv.fullpel_search_step_param = 10; @@ -565,6 +552,15 @@ static void set_rt_speed_feature_framesize_independent( if (cpi->svc.non_reference_frame) sf->mv.subpel_search_method = SUBPEL_TREE_PRUNED_EVENMORE; } + if (!cpi->external_resize) sf->use_source_sad = 1; + if (sf->use_source_sad) { + if (cpi->content_state_sb_fd == NULL && + (!cpi->use_svc || + cpi->svc.spatial_layer_id == cpi->svc.number_spatial_layers - 1)) { + cpi->content_state_sb_fd = (uint8_t *)vpx_calloc( + (cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1), sizeof(uint8_t)); + } + } // Enable partition copy. For SVC only enabled for top spatial resolution // layer. cpi->max_copied_frame = 0; diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h index 11e3154a0..ee485a35f 100644 --- a/vp9/encoder/vp9_speed_features.h +++ b/vp9/encoder/vp9_speed_features.h @@ -490,10 +490,6 @@ typedef struct SPEED_FEATURES { int use_source_sad; int use_simple_block_yrd; - - // If source sad of superblock is high, will switch from VARIANCE_PARTITION to - // REFERENCE_PARTITION (which selects partition based on the nonrd-pickmode). - int adapt_partition_source_sad; } SPEED_FEATURES; struct VP9_COMP; -- 2.40.0