diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c
index 96207af32a3b09287202c29f7391e03a8e23f2c6..03d8ea3027f8b95a5bd663ff48efc3200bbff706 100644
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -652,6 +652,15 @@ static void set_rd_speed_thresholds(VP9_COMP *cpi, int mode, int speed) {
     sf->thresh_mult[THR_COMP_NEWGA    ] = INT_MAX;
     sf->thresh_mult[THR_COMP_SPLITGA  ] = INT_MAX;
   }
+
+  if (sf->disable_splitmv == 1) {
+    sf->thresh_mult[THR_SPLITMV  ] = INT_MAX;
+    sf->thresh_mult[THR_SPLITG   ] = INT_MAX;
+    sf->thresh_mult[THR_SPLITA   ] = INT_MAX;
+
+    sf->thresh_mult[THR_COMP_SPLITLA  ] = INT_MAX;
+    sf->thresh_mult[THR_COMP_SPLITGA  ] = INT_MAX;
+  }
 }
 
 void vp9_set_speed_features(VP9_COMP *cpi) {
@@ -706,6 +715,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
   sf->greater_than_block_size = BLOCK_SIZE_SB8X8;
   sf->adjust_partitioning_from_last_frame = 0;
   sf->last_partitioning_redo_frequency = 4;
+  sf->disable_splitmv = 0;
 
 #if CONFIG_MULTIPLE_ARF
   // Switch segmentation off.
@@ -737,6 +747,9 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
         sf->use_largest_txform        = !(cpi->common.frame_type == KEY_FRAME ||
                                           cpi->common.intra_only ||
                                           cpi->common.show_frame == 0);
+
+        sf->disable_splitmv =
+            (MIN(cpi->common.width, cpi->common.height) >= 720)? 1 : 0;
       }
       if (speed == 2) {
         sf->use_largest_txform        = !(cpi->common.frame_type == KEY_FRAME ||
diff --git a/vp9/encoder/vp9_onyx_int.h b/vp9/encoder/vp9_onyx_int.h
index 8dd088d3db211fcc8e9f777b7da3689ce68c9a13..153abbbe0412b4c1219130199a974f4691eb0099 100644
--- a/vp9/encoder/vp9_onyx_int.h
+++ b/vp9/encoder/vp9_onyx_int.h
@@ -234,6 +234,7 @@ typedef struct {
   BLOCK_SIZE_TYPE less_than_block_size;
   int adjust_partitioning_from_last_frame;
   int last_partitioning_redo_frequency;
+  int disable_splitmv;
 } SPEED_FEATURES;
 
 enum BlockSize {