obu: Fix OBU_FRAME for large-scale-tile case

saved_wb need to be updated and remux_tiles has to handed the
correct data_size.

Change-Id: I482e620b96a7ef878ae0ba676f12781c8f552e7b
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 39b1ad3..e5653f0 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -3692,8 +3692,13 @@
     data += tg_hdr_size;
 
 #if CONFIG_OBU_FRAME
-    total_size += write_frame_header_obu(cpi, saved_wb, data);
+    const uint32_t frame_header_size =
+        write_frame_header_obu(cpi, saved_wb, data);
+#else
+    const uint32_t frame_header_size = 0;
 #endif  // CONFIG_OBU_FRAME
+    data += frame_header_size;
+    total_size += frame_header_size;
 
     int tile_size_bytes = 0;
     int tile_col_size_bytes = 0;
@@ -3781,9 +3786,10 @@
     }
 
     if (have_tiles) {
-      total_size =
-          remux_tiles(cm, data, total_size, *max_tile_size, *max_tile_col_size,
-                      &tile_size_bytes, &tile_col_size_bytes);
+      total_size = remux_tiles(cm, data, total_size - frame_header_size,
+                               *max_tile_size, *max_tile_col_size,
+                               &tile_size_bytes, &tile_col_size_bytes);
+      total_size += frame_header_size;
     }
 
     // In EXT_TILE case, only use 1 tile group. Follow the obu syntax, write
@@ -3799,6 +3805,9 @@
       assert(0);
     }
     total_size += (uint32_t)length_field_size;
+#if CONFIG_OBU_FRAME
+    saved_wb->bit_buffer += length_field_size;
+#endif  // CONFIG_OBU_FRAME
 #else
     mem_put_le32(dst, total_size);
     total_size += PRE_OBU_SIZE_BYTES;