Revert "JNT_COMP: turn off for one_sided_compound" This reverts commit 060e192bfc5e0b8d1e96ff78b206c11e55e005c6. Change-Id: I5700d351a3cbb682ec49a0efb9cca4d0e83f9a3a
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h index f25758a..024ad99 100644 --- a/av1/common/onyxc_int.h +++ b/av1/common/onyxc_int.h
@@ -1385,28 +1385,6 @@ #endif // CONFIG_NEW_MULTISYMBOL } -#if CONFIG_JNT_COMP -static INLINE int has_two_sided_comp_refs(const AV1_COMMON *cm, - const MB_MODE_INFO *mbmi) { - if (!has_second_ref(mbmi)) return 0; - - const int bck_idx = cm->frame_refs[mbmi->ref_frame[0] - LAST_FRAME].idx; - const int fwd_idx = cm->frame_refs[mbmi->ref_frame[1] - LAST_FRAME].idx; - if (bck_idx < 0 || fwd_idx < 0) return 0; - - const int cur_frame_index = cm->cur_frame->cur_frame_offset; - const int bck_frame_index = - cm->buffer_pool->frame_bufs[bck_idx].cur_frame_offset; - const int fwd_frame_index = - cm->buffer_pool->frame_bufs[fwd_idx].cur_frame_offset; - - return ((bck_frame_index > cur_frame_index) && - (fwd_frame_index < cur_frame_index)) || - ((bck_frame_index < cur_frame_index) && - (fwd_frame_index > cur_frame_index)); -} -#endif // CONFIG_JNT_COMP - #ifdef __cplusplus } // extern "C" #endif
diff --git a/av1/common/pred_common.h b/av1/common/pred_common.h index 5d22dac..5002769 100644 --- a/av1/common/pred_common.h +++ b/av1/common/pred_common.h
@@ -115,7 +115,7 @@ if (above_mi) { const MB_MODE_INFO *above_mbmi = &above_mi->mbmi; - if (has_two_sided_comp_refs(cm, above_mbmi)) + if (has_second_ref(above_mbmi)) above_ctx = above_mbmi->compound_idx; else if (above_mbmi->ref_frame[0] == ALTREF_FRAME) above_ctx = 1; @@ -123,7 +123,7 @@ if (left_mi) { const MB_MODE_INFO *left_mbmi = &left_mi->mbmi; - if (has_two_sided_comp_refs(cm, left_mbmi)) + if (has_second_ref(left_mbmi)) left_ctx = left_mbmi->compound_idx; else if (left_mbmi->ref_frame[0] == ALTREF_FRAME) left_ctx = 1;
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c index 471ba13..4479a98 100644 --- a/av1/common/reconinter.c +++ b/av1/common/reconinter.c
@@ -933,11 +933,11 @@ #if CONFIG_JNT_COMP void av1_jnt_comp_weight_assign(const AV1_COMMON *cm, const MB_MODE_INFO *mbmi, - int order_idx, int *fwd_offset, - int *bck_offset) { + int order_idx, int *fwd_offset, int *bck_offset, + int is_compound) { assert(fwd_offset != NULL && bck_offset != NULL); - if (has_two_sided_comp_refs(cm, mbmi)) { + if (is_compound) { int bck_idx = cm->frame_refs[mbmi->ref_frame[0] - LAST_FRAME].idx; int fwd_idx = cm->frame_refs[mbmi->ref_frame[1] - LAST_FRAME].idx; int bck_frame_index = 0, fwd_frame_index = 0; @@ -1298,7 +1298,7 @@ get_conv_params_no_round(ref, ref, plane, tmp_dst, MAX_SB_SIZE); #if CONFIG_JNT_COMP av1_jnt_comp_weight_assign(cm, &mi->mbmi, 0, &conv_params.fwd_offset, - &conv_params.bck_offset); + &conv_params.bck_offset, is_compound); #endif // CONFIG_JNT_COMP #else
diff --git a/av1/common/reconinter.h b/av1/common/reconinter.h index 3e3260a..272e4f6 100644 --- a/av1/common/reconinter.h +++ b/av1/common/reconinter.h
@@ -559,10 +559,11 @@ int ext_dst_stride0[3], uint8_t *ext_dst1[3], int ext_dst_stride1[3]); + #if CONFIG_JNT_COMP void av1_jnt_comp_weight_assign(const AV1_COMMON *cm, const MB_MODE_INFO *mbmi, - int order_idx, int *fwd_offset, - int *bck_offset); + int order_idx, int *fwd_offset, int *bck_offset, + int is_compound); #endif // CONFIG_JNT_COMP #ifdef __cplusplus
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 7752e492..d885269 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -2155,7 +2155,7 @@ is_compound = has_second_ref(mbmi); #if CONFIG_JNT_COMP - if (has_two_sided_comp_refs(cm, mbmi)) { + if (is_compound) { const int comp_index_ctx = get_comp_index_context(cm, xd); #if CONFIG_NEW_MULTISYMBOL mbmi->compound_idx = aom_read_symbol( @@ -2166,8 +2166,6 @@ #endif // CONFIG_NEW_MULTISYMBOL if (xd->counts) ++xd->counts->compound_index[comp_index_ctx][mbmi->compound_idx]; - } else { - mbmi->compound_idx = 1; } #endif // CONFIG_JNT_COMP
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index ada55a6..550afde 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -1499,13 +1499,13 @@ #if CONFIG_JNT_COMP #if CONFIG_NEW_MULTISYMBOL - if (has_two_sided_comp_refs(cm, mbmi)) { + if (has_second_ref(mbmi)) { const int comp_index_ctx = get_comp_index_context(cm, xd); aom_write_symbol(w, mbmi->compound_idx, ec_ctx->compound_index_cdf[comp_index_ctx], 2); } #else - if (has_two_sided_comp_refs(cm, mbmi)) { + if (has_second_ref(mbmi)) { const int comp_index_ctx = get_comp_index_context(cm, xd); aom_write(w, mbmi->compound_idx, ec_ctx->compound_index_probs[comp_index_ctx]);
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index 399fa85..8e6aac2 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c
@@ -660,7 +660,7 @@ #if CONFIG_JNT_COMP #if !CONFIG_NEW_MULTISYMBOL - if (has_two_sided_comp_refs(cm, mbmi)) { + if (has_second_ref(mbmi)) { const int comp_index_ctx = get_comp_index_context(cm, xd); ++td->counts->compound_index[comp_index_ctx][mbmi->compound_idx]; }
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 02408b6..abfa631 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -5990,7 +5990,7 @@ #if CONFIG_JNT_COMP const int order_idx = id != 0; av1_jnt_comp_weight_assign(cm, mbmi, order_idx, &xd->jcp_param.fwd_offset, - &xd->jcp_param.bck_offset); + &xd->jcp_param.bck_offset, 1); #endif // CONFIG_JNT_COMP // Do compound motion search on the current reference frame. @@ -6706,7 +6706,7 @@ #if CONFIG_JNT_COMP av1_jnt_comp_weight_assign(cm, mbmi, 0, &xd->jcp_param.fwd_offset, - &xd->jcp_param.bck_offset); + &xd->jcp_param.bck_offset, 1); #endif // CONFIG_JNT_COMP if (scaled_ref_frame) { @@ -8245,7 +8245,7 @@ #endif // CONFIG_COMPOUND_SINGLEREF #if CONFIG_JNT_COMP - if (has_two_sided_comp_refs(cm, mbmi)) { + if (is_comp_pred) { const int comp_index_ctx = get_comp_index_context(cm, xd); rd_stats->rate += x->comp_idx_cost[comp_index_ctx][mbmi->compound_idx]; } @@ -9975,7 +9975,6 @@ #if CONFIG_JNT_COMP { int cum_rate = rate2; - mbmi->compound_idx = 1; MB_MODE_INFO backup_mbmi = *mbmi; int_mv backup_frame_mv[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME]; @@ -9993,7 +9992,6 @@ for (int comp_idx = 0; comp_idx < 1 + has_second_ref(mbmi); ++comp_idx) { - if (comp_idx == 0 && !has_two_sided_comp_refs(cm, mbmi)) continue; RD_STATS rd_stats, rd_stats_y, rd_stats_uv; av1_init_rd_stats(&rd_stats); av1_init_rd_stats(&rd_stats_y); @@ -10146,8 +10144,6 @@ ref_idx = sidx; if (has_second_ref(mbmi)) ref_idx /= 2; mbmi->compound_idx = sidx % 2; - if (mbmi->compound_idx == 0 && !has_two_sided_comp_refs(cm, mbmi)) - continue; #endif // CONFIG_JNT_COMP av1_invalid_rd_stats(&tmp_rd_stats);