ref: 8d0e7ac29a831cddb45c69ab737b54b8586c5553
parent: 8099220e6c5e2cc8c857f85e1429d857c87a6f2a
author: Marco <[email protected]>
date: Fri Dec 1 05:30:45 EST 2017
vp9-svc: Set num_inter_modes in non-rd pickmode. Set num_inter_modes based on ref_mode_set_svc, which is smaller set than ref_mode_set (which may use alt-ref). No change in behavior. Change-Id: I31169bb09028db230552c6fca0a86959d1ade692
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1176,7 +1176,9 @@
{ ALTREF_FRAME, ZEROMV }, { ALTREF_FRAME, NEARESTMV },
{ ALTREF_FRAME, NEARMV }, { ALTREF_FRAME, NEWMV }
};
-static const REF_MODE ref_mode_set_svc[RT_INTER_MODES] = {
+
+#define RT_INTER_MODES_SVC 8
+static const REF_MODE ref_mode_set_svc[RT_INTER_MODES_SVC] = {
{ LAST_FRAME, ZEROMV }, { LAST_FRAME, NEARESTMV },
{ LAST_FRAME, NEARMV }, { GOLDEN_FRAME, ZEROMV },
{ GOLDEN_FRAME, NEARESTMV }, { GOLDEN_FRAME, NEARMV },
@@ -1495,6 +1497,7 @@
INTERP_FILTER filter_gf_svc = EIGHTTAP;
MV_REFERENCE_FRAME best_second_ref_frame = NONE;
int comp_modes = 0;
+ int num_inter_modes = (cpi->use_svc) ? RT_INTER_MODES_SVC : RT_INTER_MODES;
init_ref_frame_cost(cm, xd, ref_frame_cost);
@@ -1644,7 +1647,7 @@
if (cpi->use_svc || cpi->oxcf.speed <= 7 || bsize < BLOCK_32X32)
x->sb_use_mv_part = 0;
- for (idx = 0; idx < RT_INTER_MODES + comp_modes; ++idx) {
+ for (idx = 0; idx < num_inter_modes + comp_modes; ++idx) {
int rate_mv = 0;
int mode_rd_thresh;
int mode_index;
@@ -1660,7 +1663,7 @@
PREDICTION_MODE this_mode;
second_ref_frame = NONE;
- if (idx < RT_INTER_MODES) {
+ if (idx < num_inter_modes) {
this_mode = ref_mode_set[idx].pred_mode;
ref_frame = ref_mode_set[idx].ref_frame;
@@ -1672,7 +1675,7 @@
// Add (0,0) compound modes.
this_mode = ZEROMV;
ref_frame = LAST_FRAME;
- if (idx == RT_INTER_MODES + comp_modes - 1) ref_frame = GOLDEN_FRAME;
+ if (idx == num_inter_modes + comp_modes - 1) ref_frame = GOLDEN_FRAME;
second_ref_frame = ALTREF_FRAME;
comp_pred = 1;
}