ref: 510a828256c440c2006ad2c1ed8cece927d4e7a8
parent: feab7e1146f6b5f55fefc8d17a674c4c48dd3ac5
author: Dmitry Kovalev <dkovalev@google.com>
date: Wed Jan 8 10:21:41 EST 2014
Removing direct references to {lst_fb, gld_fb, alt_fb}_idx fields. Change-Id: Ib1d9628d2b538b6dc27b0db1fa7f40f70ff2072f
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -1978,8 +1978,7 @@
/ time_encoded;
if (cpi->b_calculate_psnr) {
- YV12_BUFFER_CONFIG *lst_yv12 =
- &cpi->common.yv12_fb[cpi->common.ref_frame_map[cpi->lst_fb_idx]];
+ YV12_BUFFER_CONFIG *lst_yv12 = get_ref_frame_buffer(cpi, LAST_FRAME);
double samples = 3.0 / 2 * cpi->count *
lst_yv12->y_width * lst_yv12->y_height;
double total_psnr = vp9_mse2psnr(samples, 255.0, cpi->total_sq_error);
@@ -2268,19 +2267,18 @@
int vp9_copy_reference_enc(VP9_PTR ptr, VP9_REFFRAME ref_frame_flag,
YV12_BUFFER_CONFIG *sd) {
VP9_COMP *cpi = (VP9_COMP *)(ptr);
- VP9_COMMON *cm = &cpi->common;
- int ref_fb_idx;
+ YV12_BUFFER_CONFIG *cfg;
if (ref_frame_flag == VP9_LAST_FLAG)
- ref_fb_idx = cm->ref_frame_map[cpi->lst_fb_idx];
+ cfg = get_ref_frame_buffer(cpi, LAST_FRAME);
else if (ref_frame_flag == VP9_GOLD_FLAG)
- ref_fb_idx = cm->ref_frame_map[cpi->gld_fb_idx];
+ cfg = get_ref_frame_buffer(cpi, GOLDEN_FRAME);
else if (ref_frame_flag == VP9_ALT_FLAG)
- ref_fb_idx = cm->ref_frame_map[cpi->alt_fb_idx];
+ cfg = get_ref_frame_buffer(cpi, ALTREF_FRAME);
else
return -1;
- vp8_yv12_copy_frame(&cm->yv12_fb[ref_fb_idx], sd);
+ vp8_yv12_copy_frame(cfg, sd);
return 0;
}
@@ -2634,26 +2632,24 @@
static void scale_references(VP9_COMP *cpi) {
VP9_COMMON *cm = &cpi->common;
- int i;
- int refs[REFS_PER_FRAME] = {cpi->lst_fb_idx, cpi->gld_fb_idx,
- cpi->alt_fb_idx};
+ MV_REFERENCE_FRAME ref_frame;
- for (i = 0; i < 3; i++) {
- YV12_BUFFER_CONFIG *ref = &cm->yv12_fb[cm->ref_frame_map[refs[i]]];
+ for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) {
+ const int idx = cm->ref_frame_map[get_ref_frame_idx(cpi, ref_frame)];
+ YV12_BUFFER_CONFIG *ref = &cm->yv12_fb[idx];
if (ref->y_crop_width != cm->width ||
ref->y_crop_height != cm->height) {
- int new_fb = get_free_fb(cm);
-
+ const int new_fb = get_free_fb(cm);
vp9_realloc_frame_buffer(&cm->yv12_fb[new_fb],
cm->width, cm->height,
cm->subsampling_x, cm->subsampling_y,
VP9BORDERINPIXELS, NULL, NULL, NULL);
scale_and_extend_frame(ref, &cm->yv12_fb[new_fb]);
- cpi->scaled_ref_idx[i] = new_fb;
+ cpi->scaled_ref_idx[ref_frame - 1] = new_fb;
} else {
- cpi->scaled_ref_idx[i] = cm->ref_frame_map[refs[i]];
- cm->fb_idx_ref_cnt[cm->ref_frame_map[refs[i]]]++;
+ cpi->scaled_ref_idx[ref_frame - 1] = idx;
+ cm->fb_idx_ref_cnt[idx]++;
}
}
}
@@ -3397,9 +3393,8 @@
VP9_COMP *cpi = (VP9_COMP *) ptr;
VP9_COMMON *cm = &cpi->common;
struct vpx_usec_timer cmptimer;
- YV12_BUFFER_CONFIG *force_src_buffer = NULL;
- const int refs[] = { cpi->lst_fb_idx, cpi->gld_fb_idx, cpi->alt_fb_idx };
- int i;
+ YV12_BUFFER_CONFIG *force_src_buffer = NULL;
+ MV_REFERENCE_FRAME ref_frame;
// FILE *fp_out = fopen("enc_frame_type.txt", "a");
if (!cpi)
@@ -3624,11 +3619,11 @@
VP9BORDERINPIXELS, NULL, NULL, NULL);
- for (i = 0; i < REFS_PER_FRAME; ++i) {
- const int idx = cm->ref_frame_map[refs[i]];
+ for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) {
+ const int idx = cm->ref_frame_map[get_ref_frame_idx(cpi, ref_frame)];
YV12_BUFFER_CONFIG *const buf = &cm->yv12_fb[idx];
- RefBuffer *const ref_buf = &cm->frame_refs[i];
+ RefBuffer *const ref_buf = &cm->frame_refs[ref_frame - 1];
ref_buf->buf = buf;
ref_buf->idx = idx;
vp9_setup_scale_factors_for_frame(&ref_buf->sf,
--
⑨