Move initialization of look ahead queue context

Moved the call to function av1_lookahead_init to
encoder_encode. check_initial_width will now be called
in encoder_encode, instead of av1_receive_raw_frame.

Change-Id: I8dd366e0e4578666f7bb43fbec7e4240076848d4
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index f235c70..6658f4b 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -1896,7 +1896,25 @@
 
     if (img != NULL) {
       YV12_BUFFER_CONFIG sd;
+      int use_highbitdepth, subsampling_x, subsampling_y;
       res = image2yuvconfig(img, &sd);
+      use_highbitdepth = (sd.flags & YV12_FLAG_HIGHBITDEPTH) != 0;
+      subsampling_x = sd.subsampling_x;
+      subsampling_y = sd.subsampling_y;
+
+      if (!cpi->lookahead) {
+        cpi->lookahead = av1_lookahead_init(
+            cpi->oxcf.width, cpi->oxcf.height, subsampling_x, subsampling_y,
+            use_highbitdepth, cpi->oxcf.lag_in_frames,
+            cpi->oxcf.border_in_pixels,
+            (cpi->oxcf.resize_mode || cpi->oxcf.superres_mode));
+      }
+      if (!cpi->lookahead)
+        aom_internal_error(&cpi->common.error, AOM_CODEC_MEM_ERROR,
+                           "Failed to allocate lag buffers");
+
+      av1_check_initial_width(cpi, use_highbitdepth, subsampling_x,
+                              subsampling_y);
 
       // Store the original flags in to the frame buffer. Will extract the
       // key frame flag when we actually encode this frame.
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 37d14a4..4486dca 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -934,22 +934,12 @@
   }
 }
 
-static void alloc_raw_frame_buffers(AV1_COMP *cpi) {
+static void alloc_altref_frame_buffer(AV1_COMP *cpi) {
   AV1_COMMON *cm = &cpi->common;
   const SequenceHeader *const seq_params = &cm->seq_params;
   const AV1EncoderConfig *oxcf = &cpi->oxcf;
   int is_scale = (oxcf->resize_mode || oxcf->superres_mode);
 
-  if (!cpi->lookahead) {
-    cpi->lookahead = av1_lookahead_init(
-        oxcf->width, oxcf->height, seq_params->subsampling_x,
-        seq_params->subsampling_y, seq_params->use_highbitdepth,
-        oxcf->lag_in_frames, oxcf->border_in_pixels, is_scale);
-  }
-  if (!cpi->lookahead)
-    aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR,
-                       "Failed to allocate lag buffers");
-
   // TODO(agrange) Check if ARF is enabled and skip allocation if not.
   // (yunqing)Here use same border as lookahead buffers.
   if (aom_realloc_frame_buffer(
@@ -4107,8 +4097,8 @@
   }
 }
 
-static void check_initial_width(AV1_COMP *cpi, int use_highbitdepth,
-                                int subsampling_x, int subsampling_y) {
+void av1_check_initial_width(AV1_COMP *cpi, int use_highbitdepth,
+                             int subsampling_x, int subsampling_y) {
   AV1_COMMON *const cm = &cpi->common;
   SequenceHeader *const seq_params = &cm->seq_params;
 
@@ -4119,7 +4109,7 @@
     seq_params->subsampling_y = subsampling_y;
     seq_params->use_highbitdepth = use_highbitdepth;
 
-    alloc_raw_frame_buffers(cpi);
+    alloc_altref_frame_buffer(cpi);
     init_ref_frame_bufs(cpi);
     alloc_util_frame_buffers(cpi);
 
@@ -4135,9 +4125,9 @@
 int av1_set_size_literal(AV1_COMP *cpi, int width, int height) {
   AV1_COMMON *cm = &cpi->common;
   const int num_planes = av1_num_planes(cm);
-  check_initial_width(cpi, cm->seq_params.use_highbitdepth,
-                      cm->seq_params.subsampling_x,
-                      cm->seq_params.subsampling_y);
+  av1_check_initial_width(cpi, cm->seq_params.use_highbitdepth,
+                          cm->seq_params.subsampling_x,
+                          cm->seq_params.subsampling_y);
 
   if (width <= 0 || height <= 0) return 1;
 
@@ -6252,8 +6242,6 @@
   const int subsampling_y = sd->subsampling_y;
   const int use_highbitdepth = (sd->flags & YV12_FLAG_HIGHBITDEPTH) != 0;
 
-  check_initial_width(cpi, use_highbitdepth, subsampling_x, subsampling_y);
-
 #if CONFIG_INTERNAL_STATS
   struct aom_usec_timer timer;
   aom_usec_timer_start(&timer);
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 8fd07ce..b07d918 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -1166,6 +1166,9 @@
 
 void av1_change_config(AV1_COMP *cpi, const AV1EncoderConfig *oxcf);
 
+void av1_check_initial_width(AV1_COMP *cpi, int use_highbitdepth,
+                             int subsampling_x, int subsampling_y);
+
 // receive a frames worth of data. caller can assume that a copy of this
 // frame is made and not just a copy of the pointer..
 int av1_receive_raw_frame(AV1_COMP *cpi, aom_enc_frame_flags_t frame_flags,