summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
Diffstat (limited to 'vp9')
-rw-r--r--vp9/encoder/vp9_encodeframe.c8
-rw-r--r--vp9/encoder/vp9_onyx_if.c11
-rw-r--r--vp9/encoder/vp9_onyx_int.h3
3 files changed, 14 insertions, 8 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c
index d93261d5c..ed9e27cf8 100644
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -3456,11 +3456,9 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
const int mi_height = num_8x8_blocks_high_lookup[bsize];
x->skip_recode = !x->select_txfm_size && mbmi->sb_type >= BLOCK_8X8 &&
- (cpi->oxcf.aq_mode != COMPLEXITY_AQ &&
- cpi->oxcf.aq_mode != CYCLIC_REFRESH_AQ) &&
- !cpi->sf.use_nonrd_pick_mode &&
- !cpi->sf.use_uv_intra_rd_estimate &&
- !cpi->sf.skip_encode_sb;
+ cpi->oxcf.aq_mode != COMPLEXITY_AQ &&
+ cpi->oxcf.aq_mode != CYCLIC_REFRESH_AQ &&
+ cpi->sf.allow_skip_recode;
x->skip_optimize = ctx->is_coded;
ctx->is_coded = 1;
diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c
index c4774042a..070cc24e7 100644
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -587,6 +587,7 @@ static void set_good_speed_feature(VP9_COMMON *cm,
int i;
sf->adaptive_rd_thresh = 1;
sf->recode_loop = ((speed < 1) ? ALLOW_RECODE : ALLOW_RECODE_KFMAXBW);
+ sf->allow_skip_recode = 1;
if (speed == 1) {
sf->use_square_partition_only = !frame_is_intra_only(cm);
sf->less_rectangular_check = 1;
@@ -598,7 +599,6 @@ static void set_good_speed_feature(VP9_COMMON *cm,
DISABLE_ALL_SPLIT : DISABLE_ALL_INTER_SPLIT;
else
sf->disable_split_mask = DISABLE_COMPOUND_SPLIT;
-
sf->use_rd_breakout = 1;
sf->adaptive_motion_search = 1;
sf->adaptive_pred_interp_filter = 1;
@@ -630,7 +630,6 @@ static void set_good_speed_feature(VP9_COMMON *cm,
sf->adaptive_pred_interp_filter = 2;
sf->reference_masking = 1;
sf->auto_mv_step_size = 1;
-
sf->disable_filter_search_var_thresh = 50;
sf->comp_inter_joint_search_thresh = BLOCK_SIZES;
@@ -676,9 +675,9 @@ static void set_good_speed_feature(VP9_COMMON *cm,
sf->use_lastframe_partitioning = LAST_FRAME_PARTITION_ALL;
sf->adjust_partitioning_from_last_frame = 1;
sf->last_partitioning_redo_frequency = 3;
-
sf->use_uv_intra_rd_estimate = 1;
sf->skip_encode_sb = 1;
+ sf->allow_skip_recode = 0;
sf->use_lp32x32fdct = 1;
sf->subpel_iters_per_step = 1;
sf->use_fast_coef_updates = 2;
@@ -716,6 +715,7 @@ static void set_good_speed_feature(VP9_COMMON *cm,
sf->use_uv_intra_rd_estimate = 1;
sf->skip_encode_sb = 1;
+ sf->allow_skip_recode = 0;
sf->use_lp32x32fdct = 1;
sf->subpel_iters_per_step = 1;
sf->use_fast_coef_updates = 2;
@@ -754,6 +754,7 @@ static void set_good_speed_feature(VP9_COMMON *cm,
sf->use_fast_coef_costing = 1;
sf->adaptive_rd_thresh = 4;
sf->mode_skip_start = 6;
+ sf->allow_skip_recode = 1;
}
}
@@ -846,6 +847,7 @@ static void set_rt_speed_feature(VP9_COMMON *cm,
sf->adaptive_rd_thresh = 4;
sf->mode_skip_start = 6;
sf->encode_breakout_thresh = 400;
+ sf->allow_skip_recode = 0;
}
if (speed >= 4) {
sf->optimize_coefficients = 0;
@@ -876,6 +878,7 @@ static void set_rt_speed_feature(VP9_COMMON *cm,
sf->disable_inter_mode_mask[BLOCK_64X32] = ~(1 << INTER_OFFSET(NEARESTMV));
sf->disable_inter_mode_mask[BLOCK_64X64] = ~(1 << INTER_OFFSET(NEARESTMV));
sf->max_intra_bsize = BLOCK_32X32;
+ sf->allow_skip_recode = 1;
}
if (speed >= 6) {
sf->max_partition_size = BLOCK_32X32;
@@ -885,6 +888,7 @@ static void set_rt_speed_feature(VP9_COMMON *cm,
sf->partition_search_type = REFERENCE_PARTITION;
sf->use_nonrd_pick_mode = 1;
sf->search_method = FAST_DIAMOND;
+ sf->allow_skip_recode = 0;
}
if (speed >= 7) {
sf->partition_search_type = VAR_BASED_FIXED_PARTITION;
@@ -951,6 +955,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
sf->use_rd_breakout = 0;
sf->skip_encode_sb = 0;
sf->use_uv_intra_rd_estimate = 0;
+ sf->allow_skip_recode = 0;
sf->lpf_pick = LPF_PICK_FROM_FULL_IMAGE;
sf->use_fast_coef_updates = 0;
sf->use_fast_coef_costing = 0;
diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h
index 657ecf2a7..a2f878aa3 100644
--- a/vp9/encoder/vp9_onyx_int.h
+++ b/vp9/encoder/vp9_onyx_int.h
@@ -284,6 +284,9 @@ typedef struct {
// blocks and the q is less than a threshold.
int skip_encode_sb;
int skip_encode_frame;
+ // Speed feature to allow or disallow skipping of recode at block
+ // level within a frame.
+ int allow_skip_recode;
// This variable allows us to reuse the last frames partition choices
// (64x64 v 32x32 etc) for this frame. It can be set to only use the last