From 5c5582242db56aad21ad70ce4f13dc37255f87f3 Mon Sep 17 00:00:00 2001 From: Dmitry Kovalev Date: Tue, 14 May 2013 17:10:17 -0700 Subject: [PATCH] Moving the same code to new function vp9_setup_scale_factors. Change-Id: I2408ad22717784a40e23701ccb9d978265440e4f --- vp9/common/vp9_reconinter.c | 15 +++++++++++++++ vp9/common/vp9_reconinter.h | 2 ++ vp9/decoder/vp9_decodframe.c | 16 +++------------- vp9/encoder/vp9_onyx_if.c | 12 ++---------- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index e521a69..e7303f1 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -492,3 +492,18 @@ void vp9_build_inter4x4_predictors_mbuv(MACROBLOCKD *xd, vp9_build_inter_predictors_sbuv(xd, mb_row, mb_col, BLOCK_SIZE_MB16X16); } + +// TODO(dkovalev: find better place for this function) +void vp9_setup_scale_factors(VP9_COMMON *cm, int i) { + const int ref = cm->active_ref_idx[i]; + struct scale_factors *const sf = &cm->active_ref_scale[i]; + if (ref >= NUM_YV12_BUFFERS) { + memset(sf, 0, sizeof(*sf)); + } else { + YV12_BUFFER_CONFIG *const fb = &cm->yv12_fb[ref]; + vp9_setup_scale_factors_for_frame(sf, + fb->y_crop_width, fb->y_crop_height, + cm->width, cm->height); + } +} + diff --git a/vp9/common/vp9_reconinter.h b/vp9/common/vp9_reconinter.h index 885e1de..8f76195 100644 --- a/vp9/common/vp9_reconinter.h +++ b/vp9/common/vp9_reconinter.h @@ -122,4 +122,6 @@ static void set_scale_factors(MACROBLOCKD *xd, xd->scale_factor_uv[1] = xd->scale_factor[1]; } +void vp9_setup_scale_factors(VP9_COMMON *cm, int i); + #endif // VP9_COMMON_VP9_RECONINTER_H_ diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 6a79c6c..2e233c3 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -1021,23 +1021,13 @@ int vp9_decode_frame(VP9D_COMP *pbi, const uint8_t **p_data_end) { // Select active reference frames and calculate scaling factors for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) { const int ref = vp9_read_literal(&header_bc, NUM_REF_FRAMES_LG2); - const int mapped_ref = pc->ref_frame_map[ref]; - YV12_BUFFER_CONFIG *const fb = &pc->yv12_fb[mapped_ref]; - struct scale_factors *const sf = &pc->active_ref_scale[i]; - - pc->active_ref_idx[i] = mapped_ref; - if (mapped_ref >= NUM_YV12_BUFFERS) - memset(sf, 0, sizeof(*sf)); - else - vp9_setup_scale_factors_for_frame(sf, - fb->y_crop_width, fb->y_crop_height, - pc->width, pc->height); + pc->active_ref_idx[i] = pc->ref_frame_map[ref]; + vp9_setup_scale_factors(pc, i); } // Read the sign bias for each reference frame buffer. - for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) { + for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) pc->ref_frame_sign_bias[i + 1] = vp9_read_bit(&header_bc); - } xd->allow_high_precision_mv = vp9_read_bit(&header_bc); pc->mcomp_filter_type = read_mcomp_filter_type(&header_bc); diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index d78373f..464b649 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -3860,16 +3860,8 @@ int vp9_get_compressed_data(VP9_PTR ptr, unsigned int *frame_flags, VP9BORDERINPIXELS); // Calculate scaling factors for each of the 3 available references - for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) { - if (cm->active_ref_idx[i] >= NUM_YV12_BUFFERS) { - memset(&cm->active_ref_scale[i], 0, sizeof(cm->active_ref_scale[i])); - } else { - YV12_BUFFER_CONFIG *fb = &cm->yv12_fb[cm->active_ref_idx[i]]; - vp9_setup_scale_factors_for_frame(&cm->active_ref_scale[i], - fb->y_crop_width, fb->y_crop_height, - cm->width, cm->height); - } - } + for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) + vp9_setup_scale_factors(cm, i); vp9_setup_interp_filters(&cpi->mb.e_mbd, DEFAULT_INTERP_FILTER, cm); -- 2.7.4