ref: b12e060b559ef948e154b2ee21e86eb1fc9dcc1d
parent: 9df24b41ca16353acb123acae7c70813cfffafdd
author: Yunqing Wang <yunqingwang@google.com>
date: Sat Jun 29 13:34:51 EDT 2013
Add speed feature to disable splitmv Added a speed feature in speed 1 to disable splitmv for HD (>=720) clips. Test result on stdhd set: 0.3% psnr loss and 0.07% ssim loss. Encoding speedup is 36%. (For reference: The test result on derf set showed 2% psnr loss and 1.6% ssim loss. Encoding speedup is 34%. SPLITMV should be enabled for small resolution videos.) Change-Id: I54f72b94f506c6d404b47c42e71acaa5374d6ee6
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -652,6 +652,15 @@
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 @@
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 @@
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 ||
--- a/vp9/encoder/vp9_onyx_int.h
+++ b/vp9/encoder/vp9_onyx_int.h
@@ -234,6 +234,7 @@
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 {
--
⑨