Remove all_zero_mvs_flag from the rate-distortion loop
This flag has been removed from bit-stream definition to improve
the context parsing latency. Remove the corresponding controls
from the rate-distortion optimization process. No coding stats
will be changed.
Change-Id: Ice1c5473635471494ad21e2068d7e3a19ff7121e
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index ec4d908..52e71a3 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -762,10 +762,6 @@
} else {
++counts->newmv_mode[mode_ctx][1];
- if (mode_context & (1 << ALL_ZERO_FLAG_OFFSET)) {
- return;
- }
-
mode_ctx = (mode_context >> GLOBALMV_OFFSET) & GLOBALMV_CTX_MASK;
if (mode == GLOBALMV) {
++counts->zeromv_mode[mode_ctx][0];
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 1968b37..4ac3aa5 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5723,7 +5723,6 @@
int mode_cost = 0;
int16_t mode_ctx = mode_context & NEWMV_CTX_MASK;
- int16_t is_all_zero_mv = mode_context & (1 << ALL_ZERO_FLAG_OFFSET);
assert(is_inter_mode(mode));
@@ -5734,8 +5733,6 @@
mode_cost = x->newmv_mode_cost[mode_ctx][1];
mode_ctx = (mode_context >> GLOBALMV_OFFSET) & GLOBALMV_CTX_MASK;
- if (is_all_zero_mv) return mode_cost;
-
if (mode == GLOBALMV) {
mode_cost += x->zeromv_mode_cost[mode_ctx][0];
return mode_cost;
@@ -9462,19 +9459,6 @@
mbmi_ext->ref_mv_stack[ref_frame],
mbmi_ext->compound_mode_context, candidates, mi_row,
mi_col, NULL, NULL, mbmi_ext->mode_context);
- if (mbmi_ext->ref_mv_count[ref_frame] < 2) {
- MV_REFERENCE_FRAME rf[2];
- av1_set_ref_frame(rf, ref_frame);
- if (mbmi_ext->ref_mvs[rf[0]][0].as_int !=
- frame_mv[GLOBALMV][rf[0]].as_int ||
- mbmi_ext->ref_mvs[rf[0]][1].as_int !=
- frame_mv[GLOBALMV][rf[0]].as_int ||
- mbmi_ext->ref_mvs[rf[1]][0].as_int !=
- frame_mv[GLOBALMV][rf[1]].as_int ||
- mbmi_ext->ref_mvs[rf[1]][1].as_int !=
- frame_mv[GLOBALMV][rf[1]].as_int)
- mbmi_ext->mode_context[ref_frame] &= ~(1 << ALL_ZERO_FLAG_OFFSET);
- }
}
av1_count_overlappable_neighbors(cm, xd, mi_row, mi_col);
@@ -10815,32 +10799,6 @@
best_mbmode.ref_mv_idx = 0;
}
- if (best_mbmode.ref_frame[0] > INTRA_FRAME &&
- best_mbmode.ref_frame[1] <= INTRA_FRAME
-#if CONFIG_EXT_SKIP
- && !best_mbmode.skip_mode
-#endif // CONFIG_EXT_SKIP
- ) {
- int8_t ref_frame_type = av1_ref_frame_type(best_mbmode.ref_frame);
- int16_t mode_ctx = mbmi_ext->mode_context[ref_frame_type];
- if (mode_ctx & (1 << ALL_ZERO_FLAG_OFFSET)) {
- int_mv zeromv;
- const MV_REFERENCE_FRAME ref = best_mbmode.ref_frame[0];
- zeromv.as_int = gm_get_motion_vector(&cm->global_motion[ref],
- cm->allow_high_precision_mv, bsize,
- mi_col, mi_row
-#if CONFIG_AMVR
- ,
- cm->cur_frame_force_integer_mv
-#endif
- )
- .as_int;
- if (best_mbmode.mv[0].as_int == zeromv.as_int) {
- best_mbmode.mode = GLOBALMV;
- }
- }
- }
-
if (best_mode_index < 0 || best_rd >= best_rd_so_far) {
rd_cost->rate = INT_MAX;
rd_cost->rdcost = INT64_MAX;