ref: ace194a059fc240928147a2ae22eea2afacd74e4
parent: 8e528e8e6defd0c56bb6de83f5e50947de4c4464
parent: 8969f7c8922c4e35d8d1267e82f82bf5f2f970b5
author: Jingning Han <[email protected]>
date: Wed Apr 23 08:48:27 EDT 2014
Merge "Chessboard pattern prediction filter type search in non-RD coding"
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -238,6 +238,9 @@
// Mode index conversion form THR_MODES to PREDICTION_MODE for a ref frame.
int mode_idx[MB_MODE_COUNT] = {0};
INTERP_FILTER filter_ref = SWITCHABLE;
+ int bsl = mi_width_log2_lookup[bsize];
+ int pred_filter_search = (((mi_row + mi_col) >> bsl) +
+ cpi->sf.chessboard_index) & 0x01;
x->skip_encode = cpi->sf.skip_encode_frame && x->q_index < QIDX_SKIP_THRESH;
@@ -338,6 +341,7 @@
// motion vector is at sub-pixel accuracy level for luma component, i.e.,
// the last three bits are all zeros.
if ((this_mode == NEWMV || filter_ref == SWITCHABLE) &&
+ pred_filter_search &&
((mbmi->mv[0].as_mv.row & 0x07) != 0 ||
(mbmi->mv[0].as_mv.col & 0x07) != 0)) {
int64_t tmp_rdcost1 = INT64_MAX;
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -268,6 +268,7 @@
sf->use_nonrd_pick_mode = 1;
sf->search_method = FAST_DIAMOND;
sf->allow_skip_recode = 0;
+ sf->chessboard_index = cm->current_video_frame & 0x01;
}
if (speed >= 6) {
--- a/vp9/encoder/vp9_speed_features.h
+++ b/vp9/encoder/vp9_speed_features.h
@@ -274,6 +274,9 @@
// encoding process for RTC.
int partition_check;
+ // Chessboard pattern index
+ int chessboard_index;
+
// Use finer quantizer in every other few frames that run variable block
// partition type search.
int force_frame_boost;