Reduce tpl_model stats storage

No need to gather stats for the largest gf_group size.
It is enough to gather stats for only MAX_LAG_BUFFERS
stats.

BUG=-aomedia:2379

Change-Id: I1b31d75a9c3f2588f77ef0d82712e81886158460
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index bdb9984..856d22f 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -157,7 +157,7 @@
   SS_CFG_TOTAL = 2
 } UENUM1BYTE(SS_CFG_OFFSET);
 
-#define MAX_LENGTH_TPL_FRAME_STATS MAX_STATIC_GF_GROUP_LENGTH + 3
+#define MAX_LENGTH_TPL_FRAME_STATS MAX_LAG_BUFFERS
 
 typedef struct TplDepStats {
   int64_t intra_cost;
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index deb2de4..d5302cc 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -570,7 +570,9 @@
   ++*tpl_group_frames;
 
   // Initialize frames in the GF group
-  for (frame_idx = 1; frame_idx <= gf_group->size; ++frame_idx) {
+  for (frame_idx = 1;
+       frame_idx <= AOMMIN(gf_group->size, MAX_LENGTH_TPL_FRAME_STATS - 1);
+       ++frame_idx) {
     if (frame_idx == 1) {
       gf_picture[frame_idx].frame = frame_input->source;
       frame_disp_idx = gf_group->frame_disp_idx[frame_idx];
@@ -598,38 +600,40 @@
     ++*tpl_group_frames;
   }
 
-  ++frame_disp_idx;
-  int extend_frame_count = 0;
-  const int gld_idx_next_gop = gf_group->size;
-  const int lst_idx_next_gop =
-      gf_picture[gld_idx_next_gop].ref_frame[REF_IDX(LAST_FRAME)];
-  const int lst2_idx_next_gop =
-      gf_picture[gld_idx_next_gop].ref_frame[REF_IDX(LAST2_FRAME)];
-  const int lst3_idx_next_gop =
-      gf_picture[gld_idx_next_gop].ref_frame[REF_IDX(LAST3_FRAME)];
-
-  // Extend two frames outside the current gf group.
-  for (; frame_idx < MAX_LENGTH_TPL_FRAME_STATS && extend_frame_count < 2;
-       ++frame_idx) {
-    struct lookahead_entry *buf =
-        av1_lookahead_peek(cpi->lookahead, frame_disp_idx - 1);
-
-    if (buf == NULL) break;
-
-    init_ref_frame_array(&gf_picture[frame_idx]);
-
-    gf_picture[frame_idx].frame = &buf->img;
-    gf_picture[frame_idx].base_qindex = pframe_qindex;
-    gf_picture[frame_idx].disp_frame = frame_disp_idx;
-
-    gf_picture[frame_idx].ref_frame[REF_IDX(GOLDEN_FRAME)] = gld_idx_next_gop;
-    gf_picture[frame_idx].ref_frame[REF_IDX(LAST_FRAME)] = lst_idx_next_gop;
-    gf_picture[frame_idx].ref_frame[REF_IDX(LAST2_FRAME)] = lst2_idx_next_gop;
-    gf_picture[frame_idx].ref_frame[REF_IDX(LAST3_FRAME)] = lst3_idx_next_gop;
-
-    ++*tpl_group_frames;
-    ++extend_frame_count;
+  if (frame_idx < MAX_LENGTH_TPL_FRAME_STATS) {
     ++frame_disp_idx;
+    int extend_frame_count = 0;
+    const int gld_idx_next_gop = gf_group->size;
+    const int lst_idx_next_gop =
+        gf_picture[gld_idx_next_gop].ref_frame[REF_IDX(LAST_FRAME)];
+    const int lst2_idx_next_gop =
+        gf_picture[gld_idx_next_gop].ref_frame[REF_IDX(LAST2_FRAME)];
+    const int lst3_idx_next_gop =
+        gf_picture[gld_idx_next_gop].ref_frame[REF_IDX(LAST3_FRAME)];
+
+    // Extend two frames outside the current gf group.
+    for (; frame_idx < MAX_LENGTH_TPL_FRAME_STATS && extend_frame_count < 2;
+         ++frame_idx) {
+      struct lookahead_entry *buf =
+          av1_lookahead_peek(cpi->lookahead, frame_disp_idx - 1);
+
+      if (buf == NULL) break;
+
+      init_ref_frame_array(&gf_picture[frame_idx]);
+
+      gf_picture[frame_idx].frame = &buf->img;
+      gf_picture[frame_idx].base_qindex = pframe_qindex;
+      gf_picture[frame_idx].disp_frame = frame_disp_idx;
+
+      gf_picture[frame_idx].ref_frame[REF_IDX(GOLDEN_FRAME)] = gld_idx_next_gop;
+      gf_picture[frame_idx].ref_frame[REF_IDX(LAST_FRAME)] = lst_idx_next_gop;
+      gf_picture[frame_idx].ref_frame[REF_IDX(LAST2_FRAME)] = lst2_idx_next_gop;
+      gf_picture[frame_idx].ref_frame[REF_IDX(LAST3_FRAME)] = lst3_idx_next_gop;
+
+      ++*tpl_group_frames;
+      ++extend_frame_count;
+      ++frame_disp_idx;
+    }
   }
 
   /*