[NORMATIVE] store tile size as tile size - 1

BUG=aomedia:1506

Change-Id: Iaae4c4a48926d27f50cd4e1dd46e1a940555e29a
diff --git a/av1/common/common.h b/av1/common/common.h
index baa8f8d..e8eea7b 100644
--- a/av1/common/common.h
+++ b/av1/common/common.h
@@ -54,6 +54,8 @@
 
 #define AOM_FRAME_MARKER 0x2
 
+#define AV1_MIN_TILE_SIZE_BYTES 1
+
 #ifdef __cplusplus
 }  // extern "C"
 #endif
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 2a66f40..1874126 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -1651,6 +1651,8 @@
     copy_data = tile_buffers[row - offset][col].data;
     copy_size = tile_buffers[row - offset][col].size;
     size = 0;
+  } else {
+    size += AV1_MIN_TILE_SIZE_BYTES;
   }
 
   *data += tile_size_bytes;
@@ -1772,7 +1774,7 @@
       aom_internal_error(error_info, AOM_CODEC_CORRUPT_FRAME,
                          "Truncated packet or corrupt tile length");
 
-    size = mem_get_varsize(*data, tile_size_bytes);
+    size = mem_get_varsize(*data, tile_size_bytes) + AV1_MIN_TILE_SIZE_BYTES;
     *data += tile_size_bytes;
 
     if (size > (size_t)(data_end - *data))
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index c77dc99..d4a5d64 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -3383,6 +3383,7 @@
           mem_put_varsize(dst + wpos, tsb, tile_header);
           wpos += tsb;
 
+          tile_header += AV1_MIN_TILE_SIZE_BYTES;
           memmove(dst + wpos, dst + rpos, tile_header);
           rpos += tile_header;
           wpos += tile_header;
@@ -3407,6 +3408,7 @@
       tile_size = mem_get_le32(dst + rpos);
       rpos += 4;
       mem_put_varsize(dst + wpos, tsb, tile_size);
+      tile_size += AV1_MIN_TILE_SIZE_BYTES;
       wpos += tsb;
     }
 
@@ -3671,7 +3673,7 @@
 
         if (have_tiles) {
           // tile header: size of this tile, or copy offset
-          uint32_t tile_header = tile_size;
+          uint32_t tile_header = tile_size - AV1_MIN_TILE_SIZE_BYTES;
           const int tile_copy_mode =
               ((AOMMAX(cm->tile_width, cm->tile_height) << MI_SIZE_LOG2) <= 256)
                   ? 1
@@ -3824,7 +3826,7 @@
       aom_stop_encode(&mode_bc);
 #endif
       tile_size = mode_bc.pos;
-      assert(tile_size > 0);
+      assert(tile_size >= AV1_MIN_TILE_SIZE_BYTES);
 
 #if CONFIG_TRAILING_BITS
       // similar to add_trailing_bits, but specific to end of last tile
@@ -3854,7 +3856,7 @@
 
       if (!is_last_tile_in_tg) {
         // size of this tile
-        mem_put_le32(buf->data, tile_size);
+        mem_put_le32(buf->data, tile_size - AV1_MIN_TILE_SIZE_BYTES);
       } else {
         // write current tile group size
         const uint32_t obu_payload_size = curr_tg_data_size - obu_header_size;