Combine mi and mip into a single mi

In AV1_COMMON, mi/mip and prev_mi/prev_mip always point to the same
struct. This commit merges them to a single variable.

Change-Id: I82eacb0a70ec30a029a755206c0885eb5472fd78
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index af3123a..a1dd155 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1100,8 +1100,7 @@
   cm->fc->initialized = 1;
   av1_setup_frame_contexts(cm);
 
-  // prev_mip will only be allocated in encoder.
-  if (frame_is_intra_only(cm) && cm->prev_mip)
-    memset(cm->prev_mip, 0,
-           cm->mi_stride * cm->mi_rows * sizeof(*cm->prev_mip));
+  // prev_mi will only be allocated in encoder.
+  if (frame_is_intra_only(cm) && cm->prev_mi)
+    memset(cm->prev_mi, 0, cm->mi_stride * cm->mi_rows * sizeof(*cm->prev_mi));
 }
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index e6c30c6..9578110 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -421,20 +421,18 @@
   /* We allocate a MB_MODE_INFO struct for each macroblock, together with
      an extra row on top and column on the left to simplify prediction. */
   int mi_alloc_size;
-  MB_MODE_INFO *mip; /* Base of allocated array */
   MB_MODE_INFO *mi;  /* Corresponds to upper left visible macroblock */
 
   // TODO(agrange): Move prev_mi into encoder structure.
-  // prev_mip and prev_mi will only be allocated in encoder.
-  MB_MODE_INFO *prev_mip; /* MB_MODE_INFO array 'mip' from last decoded frame */
-  MB_MODE_INFO *prev_mi;  /* 'mi' from last frame (points into prev_mip) */
+  // prev_mi will only be allocated in encoder.
+  MB_MODE_INFO *prev_mi;  /* 'mi' from last frame */
 
   // Separate mi functions between encoder and decoder.
   int (*alloc_mi)(struct AV1Common *cm, int mi_size);
   void (*free_mi)(struct AV1Common *cm);
   void (*setup_mi)(struct AV1Common *cm);
 
-  // Grid of pointers to 8x8 MB_MODE_INFO structs.  Any 8x8 not in the visible
+  // Grid of pointers to 4x4 MB_MODE_INFO structs. Any 4x4 not in the visible
   // area will be NULL.
   MB_MODE_INFO **mi_grid_base;
   MB_MODE_INFO **mi_grid_visible;
diff --git a/av1/decoder/decoder.c b/av1/decoder/decoder.c
index a0bbe19..51578ba 100644
--- a/av1/decoder/decoder.c
+++ b/av1/decoder/decoder.c
@@ -46,15 +46,14 @@
 }
 
 static void dec_setup_mi(AV1_COMMON *cm) {
-  cm->mi = cm->mip;
   cm->mi_grid_visible = cm->mi_grid_base;
   memset(cm->mi_grid_base, 0,
          cm->mi_stride * cm->mi_rows * sizeof(*cm->mi_grid_base));
 }
 
 static int dec_alloc_mi(AV1_COMMON *cm, int mi_size) {
-  cm->mip = aom_calloc(mi_size, sizeof(*cm->mip));
-  if (!cm->mip) return 1;
+  cm->mi = aom_calloc(mi_size, sizeof(*cm->mi));
+  if (!cm->mi) return 1;
   cm->mi_alloc_size = mi_size;
   cm->mi_grid_base =
       (MB_MODE_INFO **)aom_calloc(mi_size, sizeof(MB_MODE_INFO *));
@@ -63,8 +62,8 @@
 }
 
 static void dec_free_mi(AV1_COMMON *cm) {
-  aom_free(cm->mip);
-  cm->mip = NULL;
+  aom_free(cm->mi);
+  cm->mi = NULL;
   aom_free(cm->mi_grid_base);
   cm->mi_grid_base = NULL;
   cm->mi_alloc_size = 0;
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 65c7ed7..5550dc6 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4572,10 +4572,6 @@
   memcpy(cm->cur_frame->ref_deltas, cm->lf.ref_deltas, REF_FRAMES);
   memcpy(cm->cur_frame->mode_deltas, cm->lf.mode_deltas, MAX_MODE_LF_DELTAS);
 
-  // Special case: set prev_mi to NULL when the previous mode info
-  // context cannot be used.
-  cm->prev_mi = cm->allow_ref_frame_mvs ? cm->prev_mip : NULL;
-
   x->txb_split_count = 0;
 #if CONFIG_SPEED_STATS
   x->tx_search_count = 0;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 4ec05ee..633a24d 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -380,14 +380,12 @@
 static void enc_setup_mi(AV1_COMMON *cm) {
   int i;
   int mi_rows_sb_aligned = calc_mi_size(cm->mi_rows);
-  cm->mi = cm->mip;
-  memset(cm->mip, 0, cm->mi_stride * mi_rows_sb_aligned * sizeof(*cm->mip));
-  cm->prev_mi = cm->prev_mip;
+  memset(cm->mi, 0, cm->mi_stride * mi_rows_sb_aligned * sizeof(*cm->mi));
   // Clear top border row
-  memset(cm->prev_mip, 0, sizeof(*cm->prev_mip) * cm->mi_stride);
+  memset(cm->prev_mi, 0, sizeof(*cm->prev_mi) * cm->mi_stride);
   // Clear left border column
   for (i = 0; i < mi_rows_sb_aligned; ++i)
-    memset(&cm->prev_mip[i * cm->mi_stride], 0, sizeof(*cm->prev_mip));
+    memset(&cm->prev_mi[i * cm->mi_stride], 0, sizeof(*cm->prev_mi));
   cm->mi_grid_visible = cm->mi_grid_base;
   cm->prev_mi_grid_visible = cm->prev_mi_grid_base;
 
@@ -396,10 +394,10 @@
 }
 
 static int enc_alloc_mi(AV1_COMMON *cm, int mi_size) {
-  cm->mip = aom_calloc(mi_size, sizeof(*cm->mip));
-  if (!cm->mip) return 1;
-  cm->prev_mip = aom_calloc(mi_size, sizeof(*cm->prev_mip));
-  if (!cm->prev_mip) return 1;
+  cm->mi = aom_calloc(mi_size, sizeof(*cm->mi));
+  if (!cm->mi) return 1;
+  cm->prev_mi = aom_calloc(mi_size, sizeof(*cm->prev_mi));
+  if (!cm->prev_mi) return 1;
   cm->mi_alloc_size = mi_size;
 
   cm->mi_grid_base =
@@ -413,10 +411,10 @@
 }
 
 static void enc_free_mi(AV1_COMMON *cm) {
-  aom_free(cm->mip);
-  cm->mip = NULL;
-  aom_free(cm->prev_mip);
-  cm->prev_mip = NULL;
+  aom_free(cm->mi);
+  cm->mi = NULL;
+  aom_free(cm->prev_mi);
+  cm->prev_mi = NULL;
   aom_free(cm->mi_grid_base);
   cm->mi_grid_base = NULL;
   aom_free(cm->prev_mi_grid_base);
@@ -425,16 +423,13 @@
 }
 
 static void swap_mi_and_prev_mi(AV1_COMMON *cm) {
-  // Current mip will be the prev_mip for the next frame.
+  // Current mi will be the prev_mi for the next frame.
   MB_MODE_INFO **temp_base = cm->prev_mi_grid_base;
-  MB_MODE_INFO *temp = cm->prev_mip;
-  cm->prev_mip = cm->mip;
-  cm->mip = temp;
+  MB_MODE_INFO *temp = cm->prev_mi;
+  cm->prev_mi = cm->mi;
+  cm->mi = temp;
 
   // Update the upper left visible macroblock ptrs.
-  cm->mi = cm->mip;
-  cm->prev_mi = cm->prev_mip;
-
   cm->prev_mi_grid_base = cm->mi_grid_base;
   cm->mi_grid_base = temp_base;
   cm->mi_grid_visible = cm->mi_grid_base;