Fix a mismatch in multi-threaded decoder

The decoder result didn't match while using t=1 or using t=2.
This patch fixed the bug.

Change-Id: I8028d14c6dc5761d7033453affc6ceb0b3e81c89
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 412ddd0..72a5590 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -2453,6 +2453,8 @@
     TileDataDec *const tile_data =
         pbi->tile_data + tile_row * cm->tile_cols + tile_col;
 
+    td->xd = pbi->mb;
+    td->xd.corrupted = 0;
     td->bit_reader = &tile_data->bit_reader;
     av1_zero(td->dqcoeff);
     av1_tile_init(&td->xd.tile, cm, tile_row, tile_col);
@@ -2590,8 +2592,7 @@
     AVxWorker *const worker = &pbi->tile_workers[worker_idx];
     DecWorkerData *const thread_data = pbi->thread_data + worker_idx;
     winterface->sync(worker);
-    thread_data->td->xd = pbi->mb;
-    thread_data->td->xd.corrupted = 0;
+
     worker->hook = tile_worker_hook;
     worker->data1 = thread_data;
     worker->data2 = pbi;
@@ -2605,6 +2606,7 @@
     const int base = tile_count_tg / num_workers;
     const int remain = tile_count_tg % num_workers;
     int tile_start = startTile;
+    int corrupted = 0;
 
     for (worker_idx = 0; worker_idx < num_workers; ++worker_idx) {
       // compute number of tiles assign to each worker
@@ -2628,8 +2630,10 @@
 
     for (; worker_idx > 0; --worker_idx) {
       AVxWorker *const worker = &pbi->tile_workers[worker_idx - 1];
-      aom_merge_corrupted_flag(&pbi->mb.corrupted, !winterface->sync(worker));
+      aom_merge_corrupted_flag(&corrupted, !winterface->sync(worker));
     }
+
+    pbi->mb.corrupted = corrupted;
   }
 
   if (pbi->mb.corrupted)