From 86d2a9b978980f8507f7fbfa1f71a32720659f07 Mon Sep 17 00:00:00 2001 From: Jingning Han <jingning@google.com> Date: Fri, 22 Nov 2013 10:56:41 -0800 Subject: [PATCH] Separate setup_scale_factor/extend_frame_borders This commit takes out vp9_extend_frame_borders from vp9_setup_scale_factors. The refactoring is for the preparation of the use of lazy border extension at decoder. This makes it necessary to handle border extension separately at encoder/decoder. The use of vp9_extend_frame_borders will be removed, when lazy border extension is ready. Change-Id: Ia3baba3d179d5f11eee1634f19b3b319d2a59186 --- vp9/common/vp9_reconinter.c | 3 --- vp9/decoder/vp9_decodeframe.c | 8 +++++++- vp9/encoder/vp9_onyx_if.c | 6 +++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index 3add81b99e..c8eb9571e0 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -218,9 +218,6 @@ void vp9_setup_scale_factors(VP9_COMMON *cm, int i) { vp9_setup_scale_factors_for_frame(sf, sfc, fb->y_crop_width, fb->y_crop_height, cm->width, cm->height); - - if (vp9_is_scaled(sfc)) - vp9_extend_frame_borders(fb, cm->subsampling_x, cm->subsampling_y); } } diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index dbcae7614c..ad3054a1fb 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -11,6 +11,8 @@ #include <assert.h> #include "./vp9_rtcd.h" +#include "./vpx_scale_rtcd.h" + #include "vpx_mem/vpx_mem.h" #include "vpx_scale/vpx_scale.h" @@ -1154,8 +1156,12 @@ static size_t read_uncompressed_header(VP9D_COMP *pbi, cm->allow_high_precision_mv = vp9_rb_read_bit(rb); cm->mcomp_filter_type = read_interp_filter_type(rb); - for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) + for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) { vp9_setup_scale_factors(cm, i); + if (vp9_is_scaled(&cm->active_ref_scale_comm[i])) + vp9_extend_frame_borders(&cm->yv12_fb[cm->active_ref_idx[i]], + cm->subsampling_x, cm->subsampling_y); + } } } diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index b7874d5152..bbc308829b 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -3968,8 +3968,12 @@ 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) + for (i = 0; i < ALLOWED_REFS_PER_FRAME; ++i) { vp9_setup_scale_factors(cm, i); + if (vp9_is_scaled(&cm->active_ref_scale_comm[i])) + vp9_extend_frame_borders(&cm->yv12_fb[cm->active_ref_idx[i]], + cm->subsampling_x, cm->subsampling_y); + } vp9_setup_interp_filters(&cpi->mb.e_mbd, DEFAULT_INTERP_FILTER, cm); -- GitLab