From beff5b6aa4e8d33bc25d5ae84f743c9fd9656d20 Mon Sep 17 00:00:00 2001
From: Yaowu Xu <yaowu@google.com>
Date: Mon, 18 Aug 2014 09:27:50 -0700
Subject: [PATCH] Revert "Removing duplicated code from init_config()."

This reverts commit 5509b7fd8fe6ad3555831b8d49077182daf92758


Observed a big drop in compression quality and speed for speed 1 for a 360p test clip, revert this now for investigation.

Change-Id: If69dc8d77a225b34dc7907a9472e1a7a0a22762d
---
 vp9/encoder/vp9_encoder.c | 22 ++++++++++++++++------
 vp9/encoder/vp9_encoder.h |  2 ++
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index 518a2e3625..8aff6e40ff 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -451,7 +451,7 @@ static void alloc_util_frame_buffers(VP9_COMP *cpi) {
                        "Failed to allocate scaled last source buffer");
 }
 
-static void alloc_compressor_data(VP9_COMP *cpi) {
+void vp9_alloc_compressor_data(VP9_COMP *cpi) {
   VP9_COMMON *cm = &cpi->common;
 
   vp9_alloc_context_buffers(cm, cm->width, cm->height);
@@ -463,7 +463,7 @@ static void alloc_compressor_data(VP9_COMP *cpi) {
     CHECK_MEM_ERROR(cm, cpi->tok, vpx_calloc(tokens, sizeof(*cpi->tok)));
   }
 
-  vp9_setup_pc_tree(cm, cpi);
+  vp9_setup_pc_tree(&cpi->common, cpi);
 }
 
 static void update_frame_size(VP9_COMP *cpi) {
@@ -519,17 +519,18 @@ static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) {
 
   cpi->oxcf = *oxcf;
   cpi->framerate = oxcf->init_framerate;
-  cpi->static_mb_pct = 0;
-  cpi->ref_frame_flags = 0;
 
   cm->profile = oxcf->profile;
   cm->bit_depth = oxcf->bit_depth;
   cm->color_space = UNKNOWN;
+
   cm->width = oxcf->width;
   cm->height = oxcf->height;
-  alloc_compressor_data(cpi);
+  vp9_alloc_compressor_data(cpi);
 
+  // Spatial scalability.
   cpi->svc.number_spatial_layers = oxcf->ss_number_layers;
+  // Temporal scalability.
   cpi->svc.number_temporal_layers = oxcf->ts_number_layers;
 
   if ((cpi->svc.number_temporal_layers > 1 &&
@@ -539,14 +540,23 @@ static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) {
     vp9_init_layer_context(cpi);
   }
 
+  // change includes all joint functionality
   vp9_change_config(cpi, oxcf);
+
+  cpi->static_mb_pct = 0;
+  cpi->ref_frame_flags = 0;
+
+  init_buffer_indices(cpi);
+
+  set_tile_limits(cpi);
 }
 
 void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) {
   VP9_COMMON *const cm = &cpi->common;
   RATE_CONTROL *const rc = &cpi->rc;
 
-  cm->profile = oxcf->profile;
+  if (cm->profile != oxcf->profile)
+    cm->profile = oxcf->profile;
   cm->bit_depth = oxcf->bit_depth;
 
   if (cm->profile <= PROFILE_1)
diff --git a/vp9/encoder/vp9_encoder.h b/vp9/encoder/vp9_encoder.h
index aca0eaa85c..33e9adbaea 100644
--- a/vp9/encoder/vp9_encoder.h
+++ b/vp9/encoder/vp9_encoder.h
@@ -514,6 +514,8 @@ static INLINE int get_token_alloc(int mb_rows, int mb_cols) {
 
 int vp9_get_y_sse(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b);
 
+void vp9_alloc_compressor_data(VP9_COMP *cpi);
+
 void vp9_scale_references(VP9_COMP *cpi);
 
 void vp9_update_reference_frames(VP9_COMP *cpi);
-- 
GitLab