diff --git a/vp10/common/blockd.h b/vp10/common/blockd.h
index b6eeee5..90c596e 100644
--- a/vp10/common/blockd.h
+++ b/vp10/common/blockd.h
@@ -400,15 +400,44 @@
   1, 16, 12, 2
 };
 static const int num_ext_tx_set_intra[EXT_TX_SETS_INTRA] = {
-  1, 12, 5
+  1, 7, 5
 };
 
 #if EXT_TX_SIZES == 4
 static INLINE int get_ext_tx_set(TX_SIZE tx_size, BLOCK_SIZE bs,
                                  int is_inter) {
   if (tx_size > TX_32X32 || bs < BLOCK_8X8) return 0;
+#if USE_REDUCED_TXSET_FOR_16X16
+  if (tx_size == TX_32X32)
+    return is_inter ? 3 - USE_MSKTX_FOR_32X32 : 0;
+  return (tx_size == TX_16X16 ? 2 : 1);
+#else
   if (tx_size == TX_32X32)
     return is_inter ? 3 - 2 * USE_MSKTX_FOR_32X32 : 0;
+  return (tx_size == TX_16X16 && !is_inter ? 2 : 1);
+#endif  // USE_REDUCED_TXSET_FOR_16X16
+}
+
+static const int use_intra_ext_tx_for_txsize[EXT_TX_SETS_INTRA][TX_SIZES] = {
+  { 0, 0, 0, 0, },  // unused
+  { 1, 1, 0, 0, },
+  { 0, 0, 1, 0, },
+};
+
+static const int use_inter_ext_tx_for_txsize[EXT_TX_SETS_INTER][TX_SIZES] = {
+  { 0, 0, 0, 0, },  // unused
+  { 1, 1, (!USE_REDUCED_TXSET_FOR_16X16), USE_MSKTX_FOR_32X32, },
+  { 0, 0, USE_REDUCED_TXSET_FOR_16X16, 0, },
+  { 0, 0, 0, (!USE_MSKTX_FOR_32X32), },
+};
+
+#else  // EXT_TX_SIZES == 4
+
+static INLINE int get_ext_tx_set(TX_SIZE tx_size, BLOCK_SIZE bs,
+                                 int is_inter) {
+  (void) is_inter;
+  if (tx_size > TX_32X32 || bs < BLOCK_8X8) return 0;
+  if (tx_size == TX_32X32) return 0;
 #if USE_REDUCED_TXSET_FOR_16X16
   return (tx_size == TX_16X16 ? 2 : 1);
 #else
@@ -424,31 +453,8 @@
 
 static const int use_inter_ext_tx_for_txsize[EXT_TX_SETS_INTER][TX_SIZES] = {
   { 0, 0, 0, 0, },  // unused
-  { 1, 1, 1, USE_MSKTX_FOR_32X32, },
-  { 0, 0, 0, 0, },
-  { 0, 0, 0, (!USE_MSKTX_FOR_32X32), },
-};
-
-#else  // EXT_TX_SIZES == 4
-
-static INLINE int get_ext_tx_set(TX_SIZE tx_size, BLOCK_SIZE bs,
-                                 int is_inter) {
-  (void) is_inter;
-  if (tx_size > TX_32X32 || bs < BLOCK_8X8) return 0;
-  if (tx_size == TX_32X32) return 0;
-  return tx_size == TX_16X16 ? 2 : 1;
-}
-
-static const int use_intra_ext_tx_for_txsize[EXT_TX_SETS_INTRA][TX_SIZES] = {
-  { 0, 0, 0, 0, },  // unused
-  { 1, 1, 0, 0, },
-  { 0, 0, 1, 0, },
-};
-
-static const int use_inter_ext_tx_for_txsize[EXT_TX_SETS_INTER][TX_SIZES] = {
-  { 0, 0, 0, 0, },  // unused
-  { 1, 1, 0, 0, },
-  { 0, 0, 1, 0, },
+  { 1, 1, (!USE_REDUCED_TXSET_FOR_16X16), 0, },
+  { 0, 0, USE_REDUCED_TXSET_FOR_16X16, 0, },
   { 0, 0, 0, 1, },
 };
 #endif  // EXT_TX_SIZES == 4
@@ -456,7 +462,7 @@
 // Transform types used in each intra set
 static const int ext_tx_used_intra[EXT_TX_SETS_INTRA][TX_TYPES] = {
   {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0},
+  {1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
   {1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
 };
 
@@ -715,14 +721,7 @@
 }
 
 static INLINE int is_neighbor_overlappable(const MB_MODE_INFO *mbmi) {
-#if CONFIG_EXT_INTER
-  return (is_inter_block(mbmi) &&
-          !(has_second_ref(mbmi) && get_wedge_bits(mbmi->sb_type) &&
-            mbmi->use_wedge_interinter) &&
-          !(is_interintra_pred(mbmi)));
-#else
   return (is_inter_block(mbmi));
-#endif  // CONFIG_EXT_INTER
 }
 #endif  // CONFIG_OBMC
 
diff --git a/vp10/common/entropymode.c b/vp10/common/entropymode.c
index f1c8e30..e622ebc 100644
--- a/vp10/common/entropymode.c
+++ b/vp10/common/entropymode.c
@@ -976,13 +976,8 @@
     -DCT_DCT, 4,
     6, 8,
     -V_DCT, -H_DCT,
-    10, 16,
-    12, 14,
+    -ADST_ADST, 10,
     -ADST_DCT, -DCT_ADST,
-    -FLIPADST_DCT, -DCT_FLIPADST,
-    18, 20,
-    -ADST_ADST, -FLIPADST_FLIPADST,
-    -ADST_FLIPADST, -FLIPADST_ADST,
   }, {
     -IDTX, 2,
     -DCT_DCT, 4,
@@ -1041,50 +1036,50 @@
     },
   }, {
     {
-      {   8, 176,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {  10,  28,  32, 128, 176, 192, 208, 128, 128, 128, 128, },
-      {  10,  28,  32, 128, 176, 192,  48, 128, 128, 128, 128, },
-      {   9, 160,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {   8,  28,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
-      {   7,  28,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   7,  20,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {  10,  23,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   8,  29,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   3,  20,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
+      {   8, 224,  32, 128, 64, 128, },
+      {  10,  32,  32, 128, 16, 192, },
+      {  10,  32,  32, 128, 16,  64, },
+      {   9, 200,  32, 128, 64, 128, },
+      {   8,   8,  32, 128, 224, 128, },
+      {  10,  32,  32, 128, 16, 192, },
+      {  10,  32,  32, 128, 16,  64, },
+      {  10,  23,  32, 128, 80, 176, },
+      {  10,  23,  32, 128, 80, 176, },
+      {  10,  32,  32, 128, 16,  64, },
     }, {
-      {   2, 176,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {   4,  28,  32, 128, 176, 192, 208, 128, 128, 128, 128, },
-      {   4,  28,  32, 128, 176, 192,  48, 128, 128, 128, 128, },
-      {   8, 160,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {   2,  28,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
-      {   3,  28,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   3,  26,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   9,  24,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   5,  24,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   2,  25,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
+      {   8, 224, 32, 128,  64, 128, },
+      {  10,  32, 32, 128,  16, 192, },
+      {  10,  32, 32, 128,  16,  64, },
+      {   9, 200, 32, 128,  64, 128, },
+      {   8,   8, 32, 128, 224, 128, },
+      {  10,  32, 32, 128,  16, 192, },
+      {  10,  32, 32, 128,  16,  64, },
+      {  10,  23, 32, 128,  80, 176, },
+      {  10,  23, 32, 128,  80, 176, },
+      {  10,  32, 32, 128,  16,  64, },
     }, {
-      {   2, 176,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {   1,  28,  32, 128, 176, 192, 208, 128, 128, 128, 128, },
-      {   1,  28,  32, 128, 176, 192,  48, 128, 128, 128, 128, },
-      {   4, 160,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {   2,  28,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
-      {   2,  28,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   3,  29,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   4,  27,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   2,  34,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   1,  25,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
+      {   8, 224, 32, 128,  64, 128, },
+      {  10,  32, 32, 128,  16, 192, },
+      {  10,  32, 32, 128,  16,  64, },
+      {   9, 200, 32, 128,  64, 128, },
+      {   8,   8, 32, 128, 224, 128, },
+      {  10,  32, 32, 128,  16, 192, },
+      {  10,  32, 32, 128,  16,  64, },
+      {  10,  23, 32, 128,  80, 176, },
+      {  10,  23, 32, 128,  80, 176, },
+      {  10,  32, 32, 128,  16,  64, },
 #if EXT_TX_SIZES == 4
     }, {
-      {   2, 176,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {   1,  12,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   1,  17,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   4,  41,  32, 128, 128, 128, 128, 128, 128, 128, 128, },
-      {   2,  17,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
-      {   2,  14,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   3,  19,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   4,  27,  32, 128, 160, 176,  64, 128, 128, 128, 128, },
-      {   2,  34,  32, 128, 160, 176, 192, 128, 128, 128, 128, },
-      {   1,  15,  32, 128,  96, 128, 128, 128, 160, 192, 128, },
+      {   8, 224, 32, 128,  64, 128, },
+      {  10,  32, 32, 128,  16, 192, },
+      {  10,  32, 32, 128,  16,  64, },
+      {   9, 200, 32, 128,  64, 128, },
+      {   8,   8, 32, 128, 224, 128, },
+      {  10,  32, 32, 128,  16, 192, },
+      {  10,  32, 32, 128,  16,  64, },
+      {  10,  23, 32, 128,  80, 176, },
+      {  10,  23, 32, 128,  80, 176, },
+      {  10,  32, 32, 128,  16,  64, },
 #endif
     },
   }, {
diff --git a/vp10/common/reconinter.c b/vp10/common/reconinter.c
index 2d2563e..e5e2442 100644
--- a/vp10/common/reconinter.c
+++ b/vp10/common/reconinter.c
@@ -1402,6 +1402,19 @@
   }  // each mi in the left column
 }
 
+#if CONFIG_EXT_INTER
+void modify_neighbor_predictor_for_obmc(MB_MODE_INFO *mbmi) {
+  if (is_interintra_pred(mbmi)) {
+    mbmi->ref_frame[1] = NONE;
+  } else if (has_second_ref(mbmi) && get_wedge_bits(mbmi->sb_type) &&
+             mbmi->use_wedge_interinter) {
+    mbmi->use_wedge_interinter = 0;
+    mbmi->ref_frame[1] = NONE;
+  }
+  return;
+}
+#endif  // CONFIG_EXT_INTER
+
 void vp10_build_prediction_by_above_preds(VP10_COMMON *cm,
                                           MACROBLOCKD *xd,
                                           int mi_row, int mi_col,
@@ -1420,6 +1433,9 @@
     MODE_INFO *above_mi = xd->mi[mi_col_offset +
                                  mi_row_offset * xd->mi_stride];
     MB_MODE_INFO *above_mbmi = &above_mi->mbmi;
+#if CONFIG_EXT_INTER
+    MB_MODE_INFO backup_mbmi;
+#endif  // CONFIG_EXT_INTER
 
     mi_step = VPXMIN(xd->n8_w,
                      num_8x8_blocks_wide_lookup[above_mbmi->sb_type]);
@@ -1427,6 +1443,11 @@
     if (!is_neighbor_overlappable(above_mbmi))
       continue;
 
+#if CONFIG_EXT_INTER
+    backup_mbmi = *above_mbmi;
+    modify_neighbor_predictor_for_obmc(above_mbmi);
+#endif  // CONFIG_EXT_INTER
+
     for (j = 0; j < MAX_MB_PLANE; ++j) {
       struct macroblockd_plane *const pd = &xd->plane[j];
       setup_pred_plane(&pd->dst,
@@ -1488,6 +1509,9 @@
                                mi_x, mi_y);
       }
     }
+#if CONFIG_EXT_INTER
+    *above_mbmi = backup_mbmi;
+#endif  // CONFIG_EXT_INTER
   }
   xd->mb_to_left_edge   = -((mi_col * MI_SIZE) * 8);
 }
@@ -1513,6 +1537,9 @@
                                 mi_row_offset * xd->mi_stride];
     MB_MODE_INFO *left_mbmi = &left_mi->mbmi;
     const int is_compound = has_second_ref(left_mbmi);
+#if CONFIG_EXT_INTER
+    MB_MODE_INFO backup_mbmi;
+#endif  // CONFIG_EXT_INTER
 
     mi_step = VPXMIN(xd->n8_h,
                      num_8x8_blocks_high_lookup[left_mbmi->sb_type]);
@@ -1520,6 +1547,11 @@
     if (!is_neighbor_overlappable(left_mbmi))
       continue;
 
+#if CONFIG_EXT_INTER
+    backup_mbmi = *left_mbmi;
+    modify_neighbor_predictor_for_obmc(left_mbmi);
+#endif  // CONFIG_EXT_INTER
+
     for (j = 0; j < MAX_MB_PLANE; ++j) {
       struct macroblockd_plane *const pd = &xd->plane[j];
       setup_pred_plane(&pd->dst,
@@ -1581,6 +1613,9 @@
                                mi_x, mi_y);
       }
     }
+#if CONFIG_EXT_INTER
+    *left_mbmi = backup_mbmi;
+#endif  // CONFIG_EXT_INTER
   }
   xd->mb_to_top_edge    = -((mi_row * MI_SIZE) * 8);
 }
diff --git a/vp10/encoder/encoder.c b/vp10/encoder/encoder.c
index 437b366..21ed965 100644
--- a/vp10/encoder/encoder.c
+++ b/vp10/encoder/encoder.c
@@ -833,14 +833,18 @@
     cm->tile_height = clamp(cpi->oxcf.tile_rows, 1, 32);
     cm->tile_width  <<= MAX_MIB_SIZE_LOG2;
     cm->tile_height <<= MAX_MIB_SIZE_LOG2;
-  } else
-#endif  // CONFIG_EXT_PARTITION
-  {
+  } else {
     cm->tile_width  = clamp(cpi->oxcf.tile_columns, 1, 64);
     cm->tile_height = clamp(cpi->oxcf.tile_rows, 1, 64);
     cm->tile_width  <<= MAX_MIB_SIZE_LOG2 - 1;
     cm->tile_height <<= MAX_MIB_SIZE_LOG2 - 1;
   }
+#else
+  cm->tile_width  = clamp(cpi->oxcf.tile_columns, 1, 64);
+  cm->tile_height = clamp(cpi->oxcf.tile_rows, 1, 64);
+  cm->tile_width  <<= MAX_MIB_SIZE_LOG2;
+  cm->tile_height <<= MAX_MIB_SIZE_LOG2;
+#endif  // CONFIG_EXT_PARTITION
 
   cm->tile_width  = VPXMIN(cm->tile_width, cm->mi_cols);
   cm->tile_height = VPXMIN(cm->tile_height, cm->mi_rows);
diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c
index 0d2dada..f2f8291 100644
--- a/vp10/encoder/rdopt.c
+++ b/vp10/encoder/rdopt.c
@@ -6387,10 +6387,16 @@
           joint_motion_search(cpi, x, bsize, frame_mv,
                               mi_row, mi_col, NULL, single_newmv, &rate_mv, 0);
         } else {
+#if CONFIG_REF_MV
+          vp10_set_mvcost(x, mbmi->ref_frame[0]);
+#endif  // CONFIG_REF_MV
           rate_mv  = vp10_mv_bit_cost(&frame_mv[refs[0]].as_mv,
                                       &x->mbmi_ext->ref_mvs[refs[0]][0].as_mv,
                                       x->nmvjointcost, x->mvcost,
                                       MV_COST_WEIGHT);
+#if CONFIG_REF_MV
+          vp10_set_mvcost(x, mbmi->ref_frame[1]);
+#endif  // CONFIG_REF_MV
           rate_mv += vp10_mv_bit_cost(&frame_mv[refs[1]].as_mv,
                                       &x->mbmi_ext->ref_mvs[refs[1]][0].as_mv,
                                       x->nmvjointcost, x->mvcost,
@@ -6417,9 +6423,15 @@
                             mi_row, mi_col,
                             single_newmv, &rate_mv, 0);
       } else {
+#if CONFIG_REF_MV
+        vp10_set_mvcost(x, mbmi->ref_frame[0]);
+#endif  // CONFIG_REF_MV
         rate_mv  = vp10_mv_bit_cost(&frame_mv[refs[0]].as_mv,
                                    &x->mbmi_ext->ref_mvs[refs[0]][0].as_mv,
                                    x->nmvjointcost, x->mvcost, MV_COST_WEIGHT);
+#if CONFIG_REF_MV
+        vp10_set_mvcost(x, mbmi->ref_frame[1]);
+#endif  // CONFIG_REF_MV
         rate_mv += vp10_mv_bit_cost(&frame_mv[refs[1]].as_mv,
                                    &x->mbmi_ext->ref_mvs[refs[1]][0].as_mv,
                                    x->nmvjointcost, x->mvcost, MV_COST_WEIGHT);
@@ -8433,8 +8445,10 @@
 
           if (!mv_check_bounds(x, &cur_mv.as_mv)) {
             INTERP_FILTER dummy_single_inter_filter[MB_MODE_COUNT]
-                                                   [MAX_REF_FRAMES];
-            int dummy_single_skippable[MB_MODE_COUNT][MAX_REF_FRAMES];
+                                                   [MAX_REF_FRAMES] =
+                                          { { 0 } };
+            int dummy_single_skippable[MB_MODE_COUNT][MAX_REF_FRAMES] =
+                                          { { 0 } };
             int dummy_disable_skip = 0;
 #if CONFIG_EXT_INTER
             int_mv dummy_single_newmvs[2][MAX_REF_FRAMES] =
diff --git a/vp10/encoder/speed_features.c b/vp10/encoder/speed_features.c
index cd1c91a..b3304a7 100644
--- a/vp10/encoder/speed_features.c
+++ b/vp10/encoder/speed_features.c
@@ -551,6 +551,12 @@
   else if (oxcf->mode == GOOD)
     set_good_speed_feature(cpi, cm, sf, oxcf->speed);
 
+#if CONFIG_REF_MV
+  // TODO(geza): Temporarily turn this off for ref-mv to fix tests.
+  //             Investigate/reimplement skip_recode better to enable this.
+  sf->allow_skip_recode = 0;
+#endif  // CONFIG_REF_MV
+
   // sf->partition_search_breakout_dist_thr is set assuming max 64x64
   // blocks. Normalise this if the blocks are bigger.
   if (MAX_SB_SIZE_LOG2 > 6) {
