Superblock size choice in EXT_TILE

In current AV1 code base, the default value for superblock_size is
AOM_SUPERBLOCK_SIZE_DYNAMIC, which doesn't suit the needs of the
large-scale coding. While large_scale_tile = 1, we only allow
AOM_SUPERBLOCK_SIZE_64X64 and AOM_SUPERBLOCK_SIZE_128X128 for
superblock_size. If superblock_size = AOM_SUPERBLOCK_SIZE_DYNAMIC,
hard set it to AOM_SUPERBLOCK_SIZE_64X64, that is the default
value in large-scale tile coding.

Change-Id: Ia0c6aca3f0badc2ed2bb325f0f99979b7c8c6882
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 0fcc41b..ba56980 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -345,11 +345,16 @@
   RANGE_CHECK_HI(extra_cfg, single_tile_decoding, 1);
 
   if (cfg->large_scale_tile) {
-// TODO(any): Waring. If CONFIG_EXT_TILE is true, tile_columns really
+// TODO(any): Warning. If CONFIG_EXT_TILE is true, tile_columns really
 // means tile_width, and tile_rows really means tile_hight. The interface
 // should be sanitized.
 #if CONFIG_EXT_PARTITION
-    if (extra_cfg->superblock_size != AOM_SUPERBLOCK_SIZE_64X64) {
+    // While cfg->large_scale_tile = 1, only allow AOM_SUPERBLOCK_SIZE_64X64 and
+    // AOM_SUPERBLOCK_SIZE_128X128 for superblock_size. If superblock_size =
+    // AOM_SUPERBLOCK_SIZE_DYNAMIC(default), hard set it to
+    // AOM_SUPERBLOCK_SIZE_64X64(default value in large_scale_tile) in
+    // set_encoder_config().
+    if (extra_cfg->superblock_size == AOM_SUPERBLOCK_SIZE_128X128) {
       if (extra_cfg->tile_columns != 0)
         RANGE_CHECK(extra_cfg, tile_columns, 1, 32);
       if (extra_cfg->tile_rows != 0) RANGE_CHECK(extra_cfg, tile_rows, 1, 32);
@@ -726,8 +731,13 @@
       (oxcf->large_scale_tile) ? extra_cfg->single_tile_decoding : 0;
   if (oxcf->large_scale_tile) {
 #if CONFIG_EXT_PARTITION
+    // superblock_size can only be AOM_SUPERBLOCK_SIZE_64X64 or
+    // AOM_SUPERBLOCK_SIZE_128X128 while oxcf->large_scale_tile = 1;
+    if (extra_cfg->superblock_size != AOM_SUPERBLOCK_SIZE_64X64 &&
+        extra_cfg->superblock_size != AOM_SUPERBLOCK_SIZE_128X128)
+      oxcf->superblock_size = AOM_SUPERBLOCK_SIZE_64X64;
     const unsigned int max =
-        extra_cfg->superblock_size == AOM_SUPERBLOCK_SIZE_64X64 ? 64 : 32;
+        oxcf->superblock_size == AOM_SUPERBLOCK_SIZE_64X64 ? 64 : 32;
 #else
     const unsigned int max = 64;
 #endif  // CONFIG_EXT_PARTITION
diff --git a/test/tile_independence_test.cc b/test/tile_independence_test.cc
index 8b36261..18b6e90 100644
--- a/test/tile_independence_test.cc
+++ b/test/tile_independence_test.cc
@@ -31,7 +31,7 @@
     init_flags_ = AOM_CODEC_USE_PSNR;
     aom_codec_dec_cfg_t cfg = aom_codec_dec_cfg_t();
     cfg.w = 704;
-    cfg.h = 144;
+    cfg.h = 576;
     cfg.threads = 1;
     cfg.allow_lowbitdepth = 1;
     fw_dec_ = codec_->CreateDecoder(cfg, 0);