Enable cb4x4 mode support to ext-tx experiment

This commit enables the cb4x4 mode to support ext-tx experiment. The
coding performance gains are:

       ext-tx   cb4x4    ext-tx + cb4x4
lowres  2.7%     2.6%      4.9%
midres  2.1%     1.2%      3.0%

Change-Id: I6c566b6073527262abcdbb1a0c6bcb8729988f3b
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 3fac8a1..63dfc61 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -573,24 +573,42 @@
 
 static INLINE int get_ext_tx_set(TX_SIZE tx_size, BLOCK_SIZE bs, int is_inter) {
   tx_size = txsize_sqr_map[tx_size];
+#if CONFIG_CB4X4
+  (void)bs;
+  if (tx_size > TX_32X32) return 0;
+#else
   if (tx_size > TX_32X32 || bs < BLOCK_8X8) return 0;
+#endif
   if (tx_size == TX_32X32) return is_inter ? 3 : 0;
   return (tx_size == TX_16X16 ? 2 : 1);
 }
 
 static const int use_intra_ext_tx_for_txsize[EXT_TX_SETS_INTRA]
                                             [EXT_TX_SIZES] = {
+#if CONFIG_CB4X4
+                                              { 1, 1, 1, 1, 1 },  // unused
+                                              { 0, 1, 1, 0, 0 },
+                                              { 0, 0, 0, 1, 0 },
+#else
                                               { 1, 1, 1, 1 },  // unused
                                               { 1, 1, 0, 0 },
                                               { 0, 0, 1, 0 },
+#endif  // CONFIG_CB4X4
                                             };
 
 static const int use_inter_ext_tx_for_txsize[EXT_TX_SETS_INTER]
                                             [EXT_TX_SIZES] = {
+#if CONFIG_CB4X4
+                                              { 1, 1, 1, 1, 1 },  // unused
+                                              { 0, 1, 1, 0, 0 },
+                                              { 0, 0, 0, 1, 0 },
+                                              { 0, 0, 0, 0, 1 },
+#else
                                               { 1, 1, 1, 1 },  // unused
                                               { 1, 1, 0, 0 },
                                               { 0, 0, 1, 0 },
                                               { 0, 0, 0, 1 },
+#endif  // CONFIG_CB4X4
                                             };
 
 // Transform types used in each intra set
@@ -832,15 +850,23 @@
 #endif  // ALLOW_INTRA_EXT_TX
         return mbmi->tx_type;
     }
-    if (is_inter_block(mbmi))
-      // UV Inter only
+
+    if (is_inter_block(mbmi)) {
+// UV Inter only
+#if CONFIG_CB4X4
+      if (tx_size < TX_4X4) return DCT_DCT;
+#endif
       return (mbmi->tx_type == IDTX && txsize_sqr_map[tx_size] >= TX_32X32)
                  ? DCT_DCT
                  : mbmi->tx_type;
+    }
   }
 
 #if CONFIG_CB4X4
-  return DCT_DCT;
+  if (tx_size < TX_4X4)
+    return DCT_DCT;
+  else
+    return intra_mode_to_tx_type_context[mbmi->uv_mode];
 #endif
 
   // Sub8x8-Inter/Intra OR UV-Intra
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index 18f9a3a..95d3448 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1413,13 +1413,19 @@
 static const aom_prob
     default_inter_ext_tx_prob[EXT_TX_SETS_INTER][EXT_TX_SIZES][TX_TYPES - 1] = {
       {
-          // ToDo(yaowu): remove unused entry 0.
+// ToDo(yaowu): remove unused entry 0.
+#if CONFIG_CB4X4
+          { 0 },
+#endif
           { 0 },
           { 0 },
           { 0 },
           { 0 },
       },
       {
+#if CONFIG_CB4X4
+          { 0 },
+#endif
           { 10, 24, 30, 128, 128, 128, 128, 112, 160, 128, 128, 128, 128, 128,
             128 },
           { 10, 24, 30, 128, 128, 128, 128, 112, 160, 128, 128, 128, 128, 128,
@@ -1430,13 +1436,22 @@
             128 },
       },
       {
+#if CONFIG_CB4X4
+          { 0 },
+#endif
           { 10, 30, 128, 112, 160, 128, 128, 128, 128, 128, 128 },
           { 10, 30, 128, 112, 160, 128, 128, 128, 128, 128, 128 },
           { 10, 30, 128, 112, 160, 128, 128, 128, 128, 128, 128 },
           { 10, 30, 128, 112, 160, 128, 128, 128, 128, 128, 128 },
       },
       {
-          { 12 }, { 12 }, { 12 }, { 12 },
+#if CONFIG_CB4X4
+          { 0 },
+#endif
+          { 12 },
+          { 12 },
+          { 12 },
+          { 12 },
       }
     };
 
@@ -1444,7 +1459,12 @@
     default_intra_ext_tx_prob[EXT_TX_SETS_INTRA][EXT_TX_SIZES][INTRA_MODES]
                              [TX_TYPES - 1] = {
                                {
-                                   // ToDo(yaowu): remove unused entry 0.
+// ToDo(yaowu): remove unused entry 0.
+#if CONFIG_CB4X4
+                                   {
+                                       { 0 },
+                                   },
+#endif
                                    {
                                        { 0 },
                                        { 0 },
@@ -1495,6 +1515,11 @@
                                    },
                                },
                                {
+#if CONFIG_CB4X4
+                                   {
+                                       { 0 },
+                                   },
+#endif
                                    {
                                        { 8, 224, 32, 128, 64, 128 },
                                        { 10, 32, 32, 128, 16, 192 },
@@ -1545,6 +1570,11 @@
                                    },
                                },
                                {
+#if CONFIG_CB4X4
+                                   {
+                                       { 0 },
+                                   },
+#endif
                                    {
                                        { 8, 224, 64, 128 },
                                        { 10, 32, 16, 192 },
diff --git a/av1/common/enums.h b/av1/common/enums.h
index 6889935..cf1ca8a 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -232,7 +232,11 @@
 #endif  // CONFIG_DEBLOCKING_ACROSS_TILES
 
 #if CONFIG_EXT_TX
+#if CONFIG_CB4X4
+#define EXT_TX_SIZES 5  // number of sizes that use extended transforms
+#else
 #define EXT_TX_SIZES 4       // number of sizes that use extended transforms
+#endif                       // CONFIG_CB4X4
 #define EXT_TX_SETS_INTER 4  // Sets of transform selections for INTER
 #define EXT_TX_SETS_INTRA 3  // Sets of transform selections for INTRA
 #else