diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index 96207af32a3b09287202c29f7391e03a8e23f2c6..03d8ea3027f8b95a5bd663ff48efc3200bbff706 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -652,6 +652,15 @@ static void set_rd_speed_thresholds(VP9_COMP *cpi, int mode, int speed) { sf->thresh_mult[THR_COMP_NEWGA ] = INT_MAX; sf->thresh_mult[THR_COMP_SPLITGA ] = INT_MAX; } + + if (sf->disable_splitmv == 1) { + sf->thresh_mult[THR_SPLITMV ] = INT_MAX; + sf->thresh_mult[THR_SPLITG ] = INT_MAX; + sf->thresh_mult[THR_SPLITA ] = INT_MAX; + + sf->thresh_mult[THR_COMP_SPLITLA ] = INT_MAX; + sf->thresh_mult[THR_COMP_SPLITGA ] = INT_MAX; + } } void vp9_set_speed_features(VP9_COMP *cpi) { @@ -706,6 +715,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) { sf->greater_than_block_size = BLOCK_SIZE_SB8X8; sf->adjust_partitioning_from_last_frame = 0; sf->last_partitioning_redo_frequency = 4; + sf->disable_splitmv = 0; #if CONFIG_MULTIPLE_ARF // Switch segmentation off. @@ -737,6 +747,9 @@ void vp9_set_speed_features(VP9_COMP *cpi) { sf->use_largest_txform = !(cpi->common.frame_type == KEY_FRAME || cpi->common.intra_only || cpi->common.show_frame == 0); + + sf->disable_splitmv = + (MIN(cpi->common.width, cpi->common.height) >= 720)? 1 : 0; } if (speed == 2) { sf->use_largest_txform = !(cpi->common.frame_type == KEY_FRAME || diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h index 8dd088d3db211fcc8e9f777b7da3689ce68c9a13..153abbbe0412b4c1219130199a974f4691eb0099 100644 --- a/vp9/encoder/vp9_onyx_int.h +++ b/vp9/encoder/vp9_onyx_int.h @@ -234,6 +234,7 @@ typedef struct { BLOCK_SIZE_TYPE less_than_block_size; int adjust_partitioning_from_last_frame; int last_partitioning_redo_frequency; + int disable_splitmv; } SPEED_FEATURES; enum BlockSize {