Add two levels for selective ref frame sp. feature The first level is turned on for speed 1. Change-Id: I3dba0f0250b97a25e174cacc2a46ca7f76572c85
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index ff876b9..4cd2388 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -9962,12 +9962,14 @@ #if CONFIG_FRAME_MARKER if (sf->selective_ref_frame) { - if (mbmi->ref_frame[0] == ALTREF2_FRAME || - mbmi->ref_frame[1] == ALTREF2_FRAME) - if (cm->cur_frame->alt2_frame_offset < cm->frame_offset) continue; - if (mbmi->ref_frame[0] == BWDREF_FRAME || - mbmi->ref_frame[1] == BWDREF_FRAME) - if (cm->cur_frame->bwd_frame_offset < cm->frame_offset) continue; + if (sf->selective_ref_frame == 2) { + if (mbmi->ref_frame[0] == ALTREF2_FRAME || + mbmi->ref_frame[1] == ALTREF2_FRAME) + if (cm->cur_frame->alt2_frame_offset < cm->frame_offset) continue; + if (mbmi->ref_frame[0] == BWDREF_FRAME || + mbmi->ref_frame[1] == BWDREF_FRAME) + if (cm->cur_frame->bwd_frame_offset < cm->frame_offset) continue; + } if (mbmi->ref_frame[0] == LAST3_FRAME || mbmi->ref_frame[1] == LAST3_FRAME) if (cm->cur_frame->lst3_frame_offset <= cm->cur_frame->gld_frame_offset) @@ -10944,7 +10946,6 @@ } } PALETTE_EXIT: - // The inter modes' rate costs are not calculated precisely in some cases. // Therefore, sometimes, NEWMV is chosen instead of NEARESTMV, NEARMV, and // GLOBALMV. Here, checks are added for those cases, and the mode decisions
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c index 8f9f94b..d05ced4 100644 --- a/av1/encoder/speed_features.c +++ b/av1/encoder/speed_features.c
@@ -135,6 +135,7 @@ const int boosted = frame_is_boosted(cpi); if (speed >= 1) { + sf->selective_ref_frame = 1; sf->tx_size_search_init_depth_rect = 1; sf->tx_size_search_init_depth_sqr = 1; } @@ -144,7 +145,7 @@ sf->tx_type_search.fast_intra_tx_type_search = 1; sf->tx_type_search.fast_inter_tx_type_search = 1; - sf->selective_ref_frame = 1; + sf->selective_ref_frame = 2; if ((cpi->twopass.fr_content_type == FC_GRAPHICS_ANIMATION) || av1_internal_image_edge(cpi)) {
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h index e84e8ce..e11635e 100644 --- a/av1/encoder/speed_features.h +++ b/av1/encoder/speed_features.h
@@ -335,6 +335,7 @@ BLOCK_SIZE always_this_block_size; // Drop less likely picked reference frames in the RD search + // Has two levels for now: 1 and 2, where 2 is more aggressive than 1. int selective_ref_frame; // Skip rectangular partition test when partition type none gives better