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
This commit is contained in:
James Zern 2016-02-26 16:53:10 -08:00
parent 9ef41cf577
commit 8062e10162
4 changed files with 4 additions and 61 deletions

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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.