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