From 8062e1016216b074a889b0aa997c8f16c0d23b4c Mon Sep 17 00:00:00 2001 From: James Zern Date: Fri, 26 Feb 2016 16:53:10 -0800 Subject: Revert "vp9-svc: Fix speed issue with source downscaling for spatial layers." This reverts commit f51f0998e1ca99cd7497ded3642bb27445b1b215. This causes datarate tests to fail. Some are due to the new default keyframe distance, another causes an assert even forcing 9999: [ RUN ] VP9/DatarateOnePassCbrSvc.OnePassCbrSvc3SpatialLayers/0 test_libvpx: vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c:853: scaledconvolve2d: Assertion `y_step_q4 <= 32' failed. Change-Id: I4ee4fea97f47e4f1a23b82a62e6afc6280961e38 --- vp9/encoder/vp9_encoder.c | 39 ++++---------------------------------- vp9/encoder/vp9_encoder.h | 5 ----- vp9/encoder/vp9_svc_layercontext.c | 19 ------------------- vp9/encoder/vp9_svc_layercontext.h | 2 -- 4 files changed, 4 insertions(+), 61 deletions(-) (limited to 'vp9/encoder') diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index a32b782df..f8f681aec 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -410,9 +410,6 @@ static void dealloc_compressor_data(VP9_COMP *cpi) { memset(&cpi->svc.scaled_frames[0], 0, MAX_LAG_BUFFERS * sizeof(cpi->svc.scaled_frames[0])); - vpx_free_frame_buffer(&cpi->svc.scaled_temp); - memset(&cpi->svc.scaled_temp, 0, sizeof(cpi->svc.scaled_temp)); - vpx_free_frame_buffer(&cpi->svc.empty_frame.img); memset(&cpi->svc.empty_frame, 0, sizeof(cpi->svc.empty_frame)); @@ -3360,20 +3357,11 @@ static void encode_without_recode_loop(VP9_COMP *cpi, vpx_clear_system_state(); set_frame_size(cpi); + cpi->Source = vp9_scale_if_required(cm, + cpi->un_scaled_source, + &cpi->scaled_source, + (cpi->oxcf.pass == 0)); - if (is_one_pass_cbr_svc(cpi) && - cpi->un_scaled_source->y_width == cm->width << 2 && - cpi->un_scaled_source->y_height == cm->height << 2) { - cpi->Source = vp9_svc_twostage_scale(cm, - cpi->un_scaled_source, - &cpi->scaled_source, - &cpi->svc.scaled_temp); - } else { - cpi->Source = vp9_scale_if_required(cm, - cpi->un_scaled_source, - &cpi->scaled_source, - (cpi->oxcf.pass == 0)); - } // Avoid scaling last_source unless its needed. // Last source is needed if vp9_avg_source_sad() is used, or if // partition_search_type == SOURCE_VAR_BASED_PARTITION, or if noise @@ -3794,25 +3782,6 @@ static void set_ext_overrides(VP9_COMP *cpi) { } } -YV12_BUFFER_CONFIG *vp9_svc_twostage_scale(VP9_COMMON *cm, - YV12_BUFFER_CONFIG *unscaled, - YV12_BUFFER_CONFIG *scaled, - YV12_BUFFER_CONFIG *scaled_temp) { - if (cm->mi_cols * MI_SIZE != unscaled->y_width || - cm->mi_rows * MI_SIZE != unscaled->y_height) { -#if CONFIG_VP9_HIGHBITDEPTH - scale_and_extend_frame(unscaled, scaled_temp, (int)cm->bit_depth); - scale_and_extend_frame(scaled_temp, scaled, (int)cm->bit_depth); -#else - vp9_scale_and_extend_frame(unscaled, scaled_temp); - vp9_scale_and_extend_frame(scaled_temp, scaled); -#endif // CONFIG_VP9_HIGHBITDEPTH - return scaled; - } else { - return unscaled; - } -} - YV12_BUFFER_CONFIG *vp9_scale_if_required(VP9_COMMON *cm, YV12_BUFFER_CONFIG *unscaled, YV12_BUFFER_CONFIG *scaled, diff --git a/vp9/encoder/vp9_encoder.h b/vp9/encoder/vp9_encoder.h index 2def941ef..c486ac258 100644 --- a/vp9/encoder/vp9_encoder.h +++ b/vp9/encoder/vp9_encoder.h @@ -623,11 +623,6 @@ void vp9_update_reference_frames(VP9_COMP *cpi); void vp9_set_high_precision_mv(VP9_COMP *cpi, int allow_high_precision_mv); -YV12_BUFFER_CONFIG *vp9_svc_twostage_scale(VP9_COMMON *cm, - YV12_BUFFER_CONFIG *unscaled, - YV12_BUFFER_CONFIG *scaled, - YV12_BUFFER_CONFIG *scaled_temp); - YV12_BUFFER_CONFIG *vp9_scale_if_required(VP9_COMMON *cm, YV12_BUFFER_CONFIG *unscaled, YV12_BUFFER_CONFIG *scaled, diff --git a/vp9/encoder/vp9_svc_layercontext.c b/vp9/encoder/vp9_svc_layercontext.c index 2c8bc4613..1d561545c 100644 --- a/vp9/encoder/vp9_svc_layercontext.c +++ b/vp9/encoder/vp9_svc_layercontext.c @@ -43,25 +43,6 @@ void vp9_init_layer_context(VP9_COMP *const cpi) { cpi->svc.ext_alt_fb_idx[sl] = 2; } - // For 1 pass cbr: allocate scaled_frame that may be used for 2 stage - // downsampling. - if (cpi->oxcf.pass == 0 && cpi->oxcf.rc_mode == VPX_CBR) { - if (vpx_realloc_frame_buffer(&cpi->svc.scaled_temp, - cpi->common.width >> 1, - cpi->common.height >> 1, - cpi->common.subsampling_x, - cpi->common.subsampling_y, -#if CONFIG_VP9_HIGHBITDEPTH - cpi->common.use_highbitdepth, -#endif - VP9_ENC_BORDER_IN_PIXELS, - cpi->common.byte_alignment, - NULL, NULL, NULL)) - vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR, - "Failed to allocate scaled_frame for svc "); - } - - if (cpi->oxcf.error_resilient_mode == 0 && cpi->oxcf.pass == 2) { if (vpx_realloc_frame_buffer(&cpi->svc.empty_frame.img, SMALL_FRAME_WIDTH, SMALL_FRAME_HEIGHT, diff --git a/vp9/encoder/vp9_svc_layercontext.h b/vp9/encoder/vp9_svc_layercontext.h index f1b85565d..4e186401f 100644 --- a/vp9/encoder/vp9_svc_layercontext.h +++ b/vp9/encoder/vp9_svc_layercontext.h @@ -70,8 +70,6 @@ typedef struct { // Store scaled source frames to be used for temporal filter to generate // a alt ref frame. YV12_BUFFER_CONFIG scaled_frames[MAX_LAG_BUFFERS]; - // Temp buffer used for 2-stage down-sampling, for real-time mode. - YV12_BUFFER_CONFIG scaled_temp; // Layer context used for rate control in one pass temporal CBR mode or // two pass spatial mode. -- cgit v1.2.3