Speed up jnt_comp search

(1). If 1/2 of model_rd of compound modes are larger than rd of
jnt_comp, choose jnt_comp and stop searching.

(2). In motion_mode_rd, if it's jnt_comp mode, do not search
interintra.

(3). If motion vector is GLOBAL_GLOBALMV, do not search jnt_comp mode.

STATS_CHANGE
Performance: 0.02% worse (because GLOBAL_GLOBALMV is skipped),
on Google test 30 frames lowres

Speed up: not significant, within 3%.

Change-Id: I937c8b89425bc2b9ae3c734346edc29e38599336
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index f33ba84..3bfb624 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -6971,8 +6971,8 @@
   RD_STATS best_rd_stats, best_rd_stats_y, best_rd_stats_uv;
   MB_MODE_INFO base_mbmi, best_mbmi;
   uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
-  int interintra_allowed =
-      cm->seq_params.enable_interintra_compound && is_interintra_allowed(mbmi);
+  int interintra_allowed = cm->seq_params.enable_interintra_compound &&
+                           is_interintra_allowed(mbmi) && mbmi->compound_idx;
   int pts0[SAMPLES_ARRAY_SIZE], pts_inref0[SAMPLES_ARRAY_SIZE];
   int total_samples;
 
@@ -7534,7 +7534,8 @@
   int64_t early_terminate = 0;
 
   int comp_idx;
-  const int search_jnt_comp = is_comp_pred & cm->seq_params.enable_jnt_comp;
+  const int search_jnt_comp = is_comp_pred & cm->seq_params.enable_jnt_comp &
+                              (mbmi->mode != GLOBAL_GLOBALMV);
   // If !search_jnt_comp, we need to force mbmi->compound_idx = 1.
   for (comp_idx = !search_jnt_comp; comp_idx < 2; ++comp_idx) {
     compmode_interinter_cost = 0;
@@ -7863,6 +7864,13 @@
       model_rd_for_sb(cpi, bsize, x, xd, 0, num_planes - 1, &tmp_rate,
                       &tmp_dist, &skip_txfm_sb, &skip_sse_sb);
       rd = RDCOST(x->rdmult, rs + tmp_rate, tmp_dist);
+
+      // if 1/2 model rd is larger than best_rd in jnt_comp mode,
+      // use jnt_comp mode, save additional search
+      if ((rd >> 1) > best_rd) {
+        restore_dst_buf(xd, orig_dst, num_planes);
+        continue;
+      }
     }
 
     if (!is_comp_pred)