Modify error_info access from MACROBLOCK

This CL modifies error_info access from MACROBLOCK structure
to AV1_COMMON, as it does not need to be in thread specific
memory.

Change-Id: I70bed551bccf031e21295d1f1ddbcc723aafa409
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 01f43f9..b1b01bc 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2817,10 +2817,9 @@
 
 // New function based on HLS R18
 static AOM_INLINE void write_uncompressed_header_obu(
-    AV1_COMP *cpi, MACROBLOCK *const x, struct aom_write_bit_buffer *saved_wb,
+    AV1_COMP *cpi, MACROBLOCKD *const xd, struct aom_write_bit_buffer *saved_wb,
     struct aom_write_bit_buffer *wb) {
   AV1_COMMON *const cm = &cpi->common;
-  MACROBLOCKD *const xd = &x->e_mbd;
   const SequenceHeader *const seq_params = cm->seq_params;
   const CommonQuantParams *quant_params = &cm->quant_params;
   CurrentFrame *const current_frame = &cm->current_frame;
@@ -2901,7 +2900,7 @@
 
     if (cm->superres_upscaled_width > seq_params->max_frame_width ||
         cm->superres_upscaled_height > seq_params->max_frame_height) {
-      aom_internal_error(x->error_info, AOM_CODEC_UNSUP_BITSTREAM,
+      aom_internal_error(cm->error, AOM_CODEC_UNSUP_BITSTREAM,
                          "Frame dimensions are larger than the maximum values");
     }
 
@@ -2940,7 +2939,7 @@
                 seq_params->decoder_model_info.buffer_removal_time_length);
             cm->buffer_removal_times[op_num]++;
             if (cm->buffer_removal_times[op_num] == 0) {
-              aom_internal_error(x->error_info, AOM_CODEC_UNSUP_BITSTREAM,
+              aom_internal_error(cm->error, AOM_CODEC_UNSUP_BITSTREAM,
                                  "buffer_removal_time overflowed");
             }
           }
@@ -3027,7 +3026,7 @@
               1;
           if (delta_frame_id_minus_1 < 0 ||
               delta_frame_id_minus_1 >= (1 << diff_len)) {
-            aom_internal_error(x->error_info, AOM_CODEC_ERROR,
+            aom_internal_error(cm->error, AOM_CODEC_ERROR,
                                "Invalid delta_frame_id_minus_1");
           }
           aom_wb_write_literal(wb, delta_frame_id_minus_1, diff_len);
@@ -3402,12 +3401,12 @@
   return size;
 }
 
-static uint32_t write_frame_header_obu(AV1_COMP *cpi, MACROBLOCK *const x,
+static uint32_t write_frame_header_obu(AV1_COMP *cpi, MACROBLOCKD *const xd,
                                        struct aom_write_bit_buffer *saved_wb,
                                        uint8_t *const dst,
                                        int append_trailing_bits) {
   struct aom_write_bit_buffer wb = { dst, 0 };
-  write_uncompressed_header_obu(cpi, x, saved_wb, &wb);
+  write_uncompressed_header_obu(cpi, xd, saved_wb, &wb);
   if (append_trailing_bits) add_trailing_bits(&wb);
   return aom_wb_bytes_written(&wb);
 }
@@ -3453,7 +3452,7 @@
   *data += lst_obu->tg_hdr_size;
 
   const uint32_t frame_header_size =
-      write_frame_header_obu(cpi, &cpi->td.mb, saved_wb, *data, 0);
+      write_frame_header_obu(cpi, &cpi->td.mb.e_mbd, saved_wb, *data, 0);
   *data += frame_header_size;
   lst_obu->frame_header_size = frame_header_size;
   // (yunqing) This test ensures the correctness of large scale tile coding.
@@ -3547,7 +3546,6 @@
       // even for the last one, unless no tiling is used at all.
       *total_size += data_offset;
       cpi->td.mb.e_mbd.tile_ctx = &this_tile->tctx;
-      cpi->td.mb.error_info = cm->error;
       mode_bc.allow_update_cdf = !tiles->large_scale;
       mode_bc.allow_update_cdf =
           mode_bc.allow_update_cdf && !cm->features.disable_cdf_update;
@@ -3631,7 +3629,7 @@
 }
 
 // Writes obu, tile group and uncompressed headers to bitstream.
-void av1_write_obu_tg_tile_headers(AV1_COMP *const cpi, MACROBLOCK *const x,
+void av1_write_obu_tg_tile_headers(AV1_COMP *const cpi, MACROBLOCKD *const xd,
                                    PackBSParams *const pack_bs_params,
                                    const int tile_idx) {
   AV1_COMMON *const cm = &cpi->common;
@@ -3651,7 +3649,7 @@
 
   if (cpi->num_tg == 1)
     *curr_tg_hdr_size += write_frame_header_obu(
-        cpi, x, pack_bs_params->saved_wb,
+        cpi, xd, pack_bs_params->saved_wb,
         pack_bs_params->tile_data_curr + *curr_tg_hdr_size, 0);
   *curr_tg_hdr_size += write_tile_group_header(
       pack_bs_params->tile_data_curr + *curr_tg_hdr_size, tile_idx,
@@ -3778,7 +3776,7 @@
     unsigned int *max_tile_size, uint32_t *const obu_header_size,
     uint8_t **tile_data_start) {
   AV1_COMMON *const cm = &cpi->common;
-  MACROBLOCK *const x = &cpi->td.mb;
+  MACROBLOCKD *const xd = &cpi->td.mb.e_mbd;
   const CommonTileParams *const tiles = &cm->tiles;
   const int tile_cols = tiles->cols;
   const int tile_rows = tiles->rows;
@@ -3807,8 +3805,7 @@
       if (tile_count == tg_size || tile_idx == (tile_cols * tile_rows - 1))
         is_last_tile_in_tg = 1;
 
-      cpi->td.mb.e_mbd.tile_ctx = &this_tile->tctx;
-      cpi->td.mb.error_info = cm->error;
+      xd->tile_ctx = &this_tile->tctx;
 
       // PackBSParams stores all parameters required to pack tile and header
       // info.
@@ -3826,7 +3823,7 @@
       pack_bs_params.total_size = total_size;
 
       if (new_tg)
-        av1_write_obu_tg_tile_headers(cpi, x, &pack_bs_params, tile_idx);
+        av1_write_obu_tg_tile_headers(cpi, xd, &pack_bs_params, tile_idx);
 
       av1_pack_tile_info(cpi, &cpi->td, &pack_bs_params);
 
@@ -4077,7 +4074,7 @@
     obu_header_size =
         av1_write_obu_header(level_params, &cpi->frame_header_count,
                              OBU_FRAME_HEADER, obu_extension_header, data);
-    obu_payload_size = write_frame_header_obu(cpi, &cpi->td.mb, &saved_wb,
+    obu_payload_size = write_frame_header_obu(cpi, &cpi->td.mb.e_mbd, &saved_wb,
                                               data + obu_header_size, 1);
 
     length_field = av1_obu_memmove(obu_header_size, obu_payload_size, data);
diff --git a/av1/encoder/bitstream.h b/av1/encoder/bitstream.h
index da321d2..dfbe7bf 100644
--- a/av1/encoder/bitstream.h
+++ b/av1/encoder/bitstream.h
@@ -20,7 +20,6 @@
 #include "av1/common/blockd.h"
 #include "av1/common/enums.h"
 #include "av1/encoder/level.h"
-#include "av1/encoder/block.h"
 #include "aom_dsp/bitwriter.h"
 
 struct aom_write_bit_buffer;
@@ -123,7 +122,7 @@
                                         struct ThreadData const *td);
 
 void av1_write_obu_tg_tile_headers(struct AV1_COMP *const cpi,
-                                   MACROBLOCK *const x,
+                                   MACROBLOCKD *const xd,
                                    PackBSParams *const pack_bs_params,
                                    const int tile_idx);
 #ifdef __cplusplus
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 58add99..fd32458 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -917,8 +917,6 @@
   CompoundTypeRdBuffers comp_rd_buffer;
   //! Buffer to store convolution during averaging process in compound mode.
   CONV_BUF_TYPE *tmp_conv_dst;
-  //! Pointer to error_info.
-  struct aom_internal_error_info *error_info;
 
   /*! \brief Temporary buffer to hold prediction.
    *
diff --git a/av1/encoder/ethread.c b/av1/encoder/ethread.c
index 075ec67..a9e158e 100644
--- a/av1/encoder/ethread.c
+++ b/av1/encoder/ethread.c
@@ -1853,7 +1853,7 @@
                                      struct aom_write_bit_buffer *saved_wb,
                                      PackBSParams *const pack_bs_params_arr,
                                      uint8_t obu_extn_header) {
-  MACROBLOCK *const x = &cpi->td.mb;
+  MACROBLOCKD *const xd = &cpi->td.mb.e_mbd;
   AV1_COMMON *const cm = &cpi->common;
   const CommonTileParams *const tiles = &cm->tiles;
   const int num_tiles = tiles->cols * tiles->rows;
@@ -1869,10 +1869,6 @@
   int tg_idx = 0;
   int tile_count_in_tg = 0;
   int new_tg = 1;
-  // TODO(Cherma): As header preparation is moved out of multithreading scope,
-  // error_info need not be in thread specific memory. Modify error_info access
-  // from MACROBLOCK structure to AV1_COMMON in av1_write_obu_tg_tile_headers().
-  x->error_info = cm->error;
 
   // Populate pack bitstream params of all tiles.
   for (tile_idx = 0; tile_idx < num_tiles; tile_idx++) {
@@ -1928,7 +1924,7 @@
 
     // Write obu, tile group and frame header at first tile in the tile
     // group.
-    av1_write_obu_tg_tile_headers(cpi, x, pack_bs_params, tile_idx);
+    av1_write_obu_tg_tile_headers(cpi, xd, pack_bs_params, tile_idx);
     tile_dst += tg_buf_size[tg_idx];
 
     // Exclude headers from tile group buffer size.