summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2017-07-29 11:34:57 -0700
committerJames Zern <jzern@google.com>2017-07-29 11:36:58 -0700
commitc9266b85476aadf078238b7bde3c36bf7953e11c (patch)
tree0729103671a2ce9f93dbcca23e539f6f371ffd20 /vp9
parent5d0bef4763b7e87451b4176771d344d4172960df (diff)
downloadlibvpx-c9266b85476aadf078238b7bde3c36bf7953e11c.tar
libvpx-c9266b85476aadf078238b7bde3c36bf7953e11c.tar.gz
libvpx-c9266b85476aadf078238b7bde3c36bf7953e11c.tar.bz2
libvpx-c9266b85476aadf078238b7bde3c36bf7953e11c.zip
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
Diffstat (limited to 'vp9')
-rw-r--r--vp9/encoder/vp9_encodeframe.c12
-rw-r--r--vp9/encoder/vp9_speed_features.c22
-rw-r--r--vp9/encoder/vp9_speed_features.h4
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;