Use get_ref_frame_map_idx() wherever possible.
BUG=aomedia:2230
Change-Id: I024bf168d73d46f40d365f2898b3c1af29b98e90
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index ab41354..e77e30c 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2222,19 +2222,19 @@
// shifted and become the new virtual indexes for LAST2_FRAME and
// LAST3_FRAME.
refresh_mask |=
- (cpi->refresh_last_frame << cpi->remapped_ref_idx[LAST3_FRAME - 1]);
+ (cpi->refresh_last_frame << get_ref_frame_map_idx(cpi, LAST3_FRAME));
+
#if USE_SYMM_MULTI_LAYER
- refresh_mask |= (cpi->new_bwdref_update_rule == 1)
- ? (cpi->refresh_bwd_ref_frame
- << cpi->remapped_ref_idx[EXTREF_FRAME - 1])
- : (cpi->refresh_bwd_ref_frame
- << cpi->remapped_ref_idx[BWDREF_FRAME - 1]);
+ const int bwd_ref_frame =
+ (cpi->new_bwdref_update_rule == 1) ? EXTREF_FRAME : BWDREF_FRAME;
#else
- refresh_mask |=
- (cpi->refresh_bwd_ref_frame << cpi->remapped_ref_idx[BWDREF_FRAME - 1]);
+ const int bwd_ref_frame = BWDREF_FRAME;
#endif
refresh_mask |=
- (cpi->refresh_alt2_ref_frame << cpi->remapped_ref_idx[ALTREF2_FRAME - 1]);
+ (cpi->refresh_bwd_ref_frame << get_ref_frame_map_idx(cpi, bwd_ref_frame));
+
+ refresh_mask |= (cpi->refresh_alt2_ref_frame
+ << get_ref_frame_map_idx(cpi, ALTREF2_FRAME));
if (av1_preserve_existing_gf(cpi)) {
// We have decided to preserve the previously existing golden frame as our
@@ -2252,13 +2252,13 @@
return refresh_mask;
} else {
return refresh_mask | (cpi->refresh_golden_frame
- << cpi->remapped_ref_idx[ALTREF_FRAME - 1]);
+ << get_ref_frame_map_idx(cpi, ALTREF_FRAME));
}
} else {
- const int arf_idx = cpi->remapped_ref_idx[ALTREF_FRAME - 1];
+ const int arf_idx = get_ref_frame_map_idx(cpi, ALTREF_FRAME);
return refresh_mask |
(cpi->refresh_golden_frame
- << cpi->remapped_ref_idx[GOLDEN_FRAME - 1]) |
+ << get_ref_frame_map_idx(cpi, GOLDEN_FRAME)) |
(cpi->refresh_alt_ref_frame << arf_idx);
}
}
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 43218b4..08f3f2b 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -3249,8 +3249,8 @@
cpi->rc.is_src_frame_alt_ref = 1;
cpi->existing_fb_idx_to_show =
(next_frame_update_type == OVERLAY_UPDATE)
- ? cpi->remapped_ref_idx[ALTREF_FRAME - 1]
- : cpi->remapped_ref_idx[bwdref_to_show - 1];
+ ? get_ref_frame_map_idx(cpi, ALTREF_FRAME)
+ : get_ref_frame_map_idx(cpi, bwdref_to_show);
#if USE_SYMM_MULTI_LAYER
if (cpi->new_bwdref_update_rule == 0)
#endif
@@ -3541,13 +3541,13 @@
if (!cpi->preserve_arf_as_gld) {
assign_frame_buffer(
pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]],
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, ALTREF_FRAME)],
cm->new_fb_idx);
}
- tmp = cpi->remapped_ref_idx[ALTREF_FRAME - 1];
+ tmp = get_ref_frame_map_idx(cpi, ALTREF_FRAME);
cpi->remapped_ref_idx[ALTREF_FRAME - 1] =
- cpi->remapped_ref_idx[GOLDEN_FRAME - 1];
+ get_ref_frame_map_idx(cpi, GOLDEN_FRAME);
cpi->remapped_ref_idx[GOLDEN_FRAME - 1] = tmp;
// TODO(zoeliu): Do we need to copy cpi->interp_filter_selected[0] over to
@@ -3566,11 +3566,11 @@
// Deal with the special case for showing existing internal ALTREF_FRAME
// Refresh the LAST_FRAME with the ALTREF_FRAME and retire the LAST3_FRAME
// by updating the virtual indices.
- const int last3_remapped_idx = cpi->remapped_ref_idx[LAST3_FRAME - 1];
+ const int last3_remapped_idx = get_ref_frame_map_idx(cpi, LAST3_FRAME);
shift_last_ref_frames(cpi);
cpi->remapped_ref_idx[LAST_FRAME - 1] =
- cpi->remapped_ref_idx[bwdref_to_show - 1];
+ get_ref_frame_map_idx(cpi, bwdref_to_show);
memcpy(cpi->interp_filter_selected[LAST_FRAME],
cpi->interp_filter_selected[bwdref_to_show],
@@ -3590,7 +3590,7 @@
} else { /* For non key/golden frames */
// === ALTREF_FRAME ===
if (cpi->refresh_alt_ref_frame) {
- int arf_idx = cpi->remapped_ref_idx[ALTREF_FRAME - 1];
+ int arf_idx = get_ref_frame_map_idx(cpi, ALTREF_FRAME);
assign_frame_buffer(pool->frame_bufs, &cm->ref_frame_map[arf_idx],
cm->new_fb_idx);
@@ -3603,7 +3603,7 @@
if (cpi->refresh_golden_frame) {
assign_frame_buffer(
pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)],
cm->new_fb_idx);
memcpy(cpi->interp_filter_selected[GOLDEN_FRAME],
@@ -3619,7 +3619,7 @@
// BWDREF -> ALTREF2 -> EXTREF
// and assign the newly coded frame to BWDREF so that it always
// keeps the nearest future frame
- int tmp = cpi->remapped_ref_idx[EXTREF_FRAME - 1];
+ int tmp = get_ref_frame_map_idx(cpi, EXTREF_FRAME);
assign_frame_buffer(pool->frame_bufs, &cm->ref_frame_map[tmp],
cm->new_fb_idx);
@@ -3629,7 +3629,7 @@
#endif // USE_SYMM_MULTI_LAYER
assign_frame_buffer(
pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]],
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, BWDREF_FRAME)],
cm->new_fb_idx);
#if USE_SYMM_MULTI_LAYER
}
@@ -3643,7 +3643,7 @@
if (cpi->refresh_alt2_ref_frame) {
assign_frame_buffer(
pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]],
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, ALTREF2_FRAME)],
cm->new_fb_idx);
memcpy(cpi->interp_filter_selected[ALTREF2_FRAME],
@@ -3685,10 +3685,10 @@
// remapped_ref_idx[2], remapped_ref_idx[0], remapped_ref_idx[1]
assign_frame_buffer(
pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[LAST3_FRAME - 1]],
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, LAST3_FRAME)],
cm->new_fb_idx);
- int last3_remapped_idx = cpi->remapped_ref_idx[LAST3_FRAME - 1];
+ int last3_remapped_idx = get_ref_frame_map_idx(cpi, LAST3_FRAME);
shift_last_ref_frames(cpi);
cpi->remapped_ref_idx[LAST_FRAME - 1] = last3_remapped_idx;
@@ -3714,11 +3714,11 @@
// virtual index reshuffling for BWDREF, the encoder always
// specifies a LAST_BIPRED right before BWDREF and completes the
// reshuffling job accordingly.
- last3_remapped_idx = cpi->remapped_ref_idx[LAST3_FRAME - 1];
+ last3_remapped_idx = get_ref_frame_map_idx(cpi, LAST3_FRAME);
shift_last_ref_frames(cpi);
cpi->remapped_ref_idx[LAST_FRAME - 1] =
- cpi->remapped_ref_idx[BWDREF_FRAME - 1];
+ get_ref_frame_map_idx(cpi, BWDREF_FRAME);
cpi->remapped_ref_idx[BWDREF_FRAME - 1] = last3_remapped_idx;
memcpy(cpi->interp_filter_selected[LAST_FRAME],
@@ -4733,54 +4733,54 @@
map[cpi->remapped_ref_idx[1]] == map[cpi->remapped_ref_idx[0]];
const int last3_is_last =
map[cpi->remapped_ref_idx[2]] == map[cpi->remapped_ref_idx[0]];
- const int gld_is_last = map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]] ==
+ const int gld_is_last = map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)] ==
map[cpi->remapped_ref_idx[0]];
- const int bwd_is_last = map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]] ==
+ const int bwd_is_last = map[get_ref_frame_map_idx(cpi, BWDREF_FRAME)] ==
map[cpi->remapped_ref_idx[0]];
- const int alt2_is_last = map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]] ==
+ const int alt2_is_last = map[get_ref_frame_map_idx(cpi, ALTREF2_FRAME)] ==
map[cpi->remapped_ref_idx[0]];
- const int alt_is_last = map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]] ==
+ const int alt_is_last = map[get_ref_frame_map_idx(cpi, ALTREF_FRAME)] ==
map[cpi->remapped_ref_idx[0]];
// No.2 Priority: ALTREF_FRAME
const int last2_is_alt = map[cpi->remapped_ref_idx[1]] ==
- map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]];
+ map[get_ref_frame_map_idx(cpi, ALTREF_FRAME)];
const int last3_is_alt = map[cpi->remapped_ref_idx[2]] ==
- map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]];
- const int gld_is_alt = map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]] ==
- map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]];
- const int bwd_is_alt = map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]] ==
- map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]];
- const int alt2_is_alt = map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]] ==
- map[cpi->remapped_ref_idx[ALTREF_FRAME - 1]];
+ map[get_ref_frame_map_idx(cpi, ALTREF_FRAME)];
+ const int gld_is_alt = map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)] ==
+ map[get_ref_frame_map_idx(cpi, ALTREF_FRAME)];
+ const int bwd_is_alt = map[get_ref_frame_map_idx(cpi, BWDREF_FRAME)] ==
+ map[get_ref_frame_map_idx(cpi, ALTREF_FRAME)];
+ const int alt2_is_alt = map[get_ref_frame_map_idx(cpi, ALTREF2_FRAME)] ==
+ map[get_ref_frame_map_idx(cpi, ALTREF_FRAME)];
// No.3 Priority: LAST2_FRAME
const int last3_is_last2 =
map[cpi->remapped_ref_idx[2]] == map[cpi->remapped_ref_idx[1]];
- const int gld_is_last2 = map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]] ==
+ const int gld_is_last2 = map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)] ==
map[cpi->remapped_ref_idx[1]];
- const int bwd_is_last2 = map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]] ==
+ const int bwd_is_last2 = map[get_ref_frame_map_idx(cpi, BWDREF_FRAME)] ==
map[cpi->remapped_ref_idx[1]];
- const int alt2_is_last2 = map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]] ==
+ const int alt2_is_last2 = map[get_ref_frame_map_idx(cpi, ALTREF2_FRAME)] ==
map[cpi->remapped_ref_idx[1]];
// No.4 Priority: LAST3_FRAME
- const int gld_is_last3 = map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]] ==
+ const int gld_is_last3 = map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)] ==
map[cpi->remapped_ref_idx[2]];
- const int bwd_is_last3 = map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]] ==
+ const int bwd_is_last3 = map[get_ref_frame_map_idx(cpi, BWDREF_FRAME)] ==
map[cpi->remapped_ref_idx[2]];
- const int alt2_is_last3 = map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]] ==
+ const int alt2_is_last3 = map[get_ref_frame_map_idx(cpi, ALTREF2_FRAME)] ==
map[cpi->remapped_ref_idx[2]];
// No.5 Priority: GOLDEN_FRAME
- const int bwd_is_gld = map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]] ==
- map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]];
- const int alt2_is_gld = map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]] ==
- map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]];
+ const int bwd_is_gld = map[get_ref_frame_map_idx(cpi, BWDREF_FRAME)] ==
+ map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)];
+ const int alt2_is_gld = map[get_ref_frame_map_idx(cpi, ALTREF2_FRAME)] ==
+ map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)];
// No.6 Priority: BWDREF_FRAME
- const int alt2_is_bwd = map[cpi->remapped_ref_idx[ALTREF2_FRAME - 1]] ==
- map[cpi->remapped_ref_idx[BWDREF_FRAME - 1]];
+ const int alt2_is_bwd = map[get_ref_frame_map_idx(cpi, ALTREF2_FRAME)] ==
+ map[get_ref_frame_map_idx(cpi, BWDREF_FRAME)];
// No.7 Priority: ALTREF2_FRAME
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 8b35cae..c7afcb7 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -927,7 +927,9 @@
static INLINE int get_ref_frame_map_idx(const AV1_COMP *cpi,
MV_REFERENCE_FRAME ref_frame) {
- return (ref_frame >= 1) ? cpi->remapped_ref_idx[ref_frame - 1] : INVALID_IDX;
+ return (ref_frame >= LAST_FRAME)
+ ? cpi->remapped_ref_idx[ref_frame - LAST_FRAME]
+ : INVALID_IDX;
}
static INLINE int get_ref_frame_buf_idx(const AV1_COMP *cpi,
diff --git a/av1/encoder/firstpass.c b/av1/encoder/firstpass.c
index ca2761e..cd6b5e3 100644
--- a/av1/encoder/firstpass.c
+++ b/av1/encoder/firstpass.c
@@ -1062,8 +1062,8 @@
if (gld_yv12 != NULL) {
assign_frame_buffer(
pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
- cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]]);
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)],
+ cm->ref_frame_map[get_ref_frame_map_idx(cpi, LAST_FRAME)]);
}
twopass->sr_update_lag = 1;
} else {
@@ -1073,18 +1073,19 @@
aom_extend_frame_borders(new_yv12, num_planes);
// The frame we just compressed now becomes the last frame.
- assign_frame_buffer(pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]],
- cm->new_fb_idx);
+ assign_frame_buffer(
+ pool->frame_bufs,
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, LAST_FRAME)],
+ cm->new_fb_idx);
// Special case for the first frame. Copy into the GF buffer as a second
// reference.
if (cm->current_video_frame == 0 &&
- cpi->remapped_ref_idx[GOLDEN_FRAME - 1] != INVALID_IDX) {
+ get_ref_frame_map_idx(cpi, GOLDEN_FRAME) != INVALID_IDX) {
assign_frame_buffer(
pool->frame_bufs,
- &cm->ref_frame_map[cpi->remapped_ref_idx[GOLDEN_FRAME - 1]],
- cm->ref_frame_map[cpi->remapped_ref_idx[LAST_FRAME - 1]]);
+ &cm->ref_frame_map[get_ref_frame_map_idx(cpi, GOLDEN_FRAME)],
+ cm->ref_frame_map[get_ref_frame_map_idx(cpi, LAST_FRAME)]);
}
// Use this to see what the first pass reconstruction looks like.