Clarify indexing in [lr]shift_bdw_ref_frames(). Also clarify some comments. Based on suggestions in: https://aomedia-review.googlesource.com/c/aom/+/74481 BUG=aomedia:2230 Change-Id: I18b7e03b76e0cda76815fc370c4f74ebc8dcf723
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c index 08f3f2b..4a1827d 100644 --- a/av1/encoder/encoder.c +++ b/av1/encoder/encoder.c
@@ -3444,18 +3444,17 @@ // to clear a space to store the closest bwdref static INLINE void rshift_bwd_ref_frames(AV1_COMP *cpi) { // TODO(isbs): shift the scaled indices as well - static const int ordered_bwd[3] = { BWDREF_FRAME - 1, ALTREF2_FRAME - 1, - EXTREF_FRAME - 1 }; + static const int ordered_bwd[3] = { BWDREF_FRAME, ALTREF2_FRAME, + EXTREF_FRAME }; for (int i = 2; i > 0; --i) { // [0] is allocated to the current coded frame, i.e. bwdref - memcpy( - cpi->interp_filter_selected[ordered_bwd[i] + LAST_FRAME], - cpi->interp_filter_selected[ordered_bwd[i - 1] + LAST_FRAME], - sizeof(cpi->interp_filter_selected[ordered_bwd[i - 1] + LAST_FRAME])); + memcpy(cpi->interp_filter_selected[ordered_bwd[i]], + cpi->interp_filter_selected[ordered_bwd[i - 1]], + sizeof(cpi->interp_filter_selected[ordered_bwd[i - 1]])); - cpi->remapped_ref_idx[ordered_bwd[i]] = - cpi->remapped_ref_idx[ordered_bwd[i - 1]]; + cpi->remapped_ref_idx[ordered_bwd[i] - LAST_FRAME] = + cpi->remapped_ref_idx[ordered_bwd[i - 1] - LAST_FRAME]; } } @@ -3465,18 +3464,17 @@ // to update the bwd reference frame for coding the next frame. static INLINE void lshift_bwd_ref_frames(AV1_COMP *cpi) { // TODO(isbs): shift the scaled indices as well - static const int ordered_bwd[3] = { BWDREF_FRAME - 1, ALTREF2_FRAME - 1, - EXTREF_FRAME - 1 }; + static const int ordered_bwd[3] = { BWDREF_FRAME, ALTREF2_FRAME, + EXTREF_FRAME }; for (int i = 0; i < 2; ++i) { // [0] is allocated to the current coded frame, i.e. bwdref - memcpy( - cpi->interp_filter_selected[ordered_bwd[i] + LAST_FRAME], - cpi->interp_filter_selected[ordered_bwd[i + 1] + LAST_FRAME], - sizeof(cpi->interp_filter_selected[ordered_bwd[i + 1] + LAST_FRAME])); + memcpy(cpi->interp_filter_selected[ordered_bwd[i]], + cpi->interp_filter_selected[ordered_bwd[i + 1]], + sizeof(cpi->interp_filter_selected[ordered_bwd[i + 1]])); - cpi->remapped_ref_idx[ordered_bwd[i]] = - cpi->remapped_ref_idx[ordered_bwd[i + 1]]; + cpi->remapped_ref_idx[ordered_bwd[i] - LAST_FRAME] = + cpi->remapped_ref_idx[ordered_bwd[i + 1] - LAST_FRAME]; } } #endif // USE_SYMM_MULTI_LAYER
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h index c7afcb7..cb286eb 100644 --- a/av1/encoder/encoder.h +++ b/av1/encoder/encoder.h
@@ -709,8 +709,8 @@ // Relevant for an inter frame. // - Index '0' corresponds to the values for the currently coded frame. - // - Indices 1 ... REF_FRAMES are used to store values for all the possible - // reference frames. + // - Indices LAST_FRAME ... EXTREF_FRAMES are used to store values for all the + // possible inter reference frames. int interp_filter_selected[REF_FRAMES + 1][SWITCHABLE]; struct aom_codec_pkt_list *output_pkt_list;