]> granicus.if.org Git - libvpx/commitdiff
Added a speed feature
authorYaowu Xu <yaowu@google.com>
Wed, 22 Jan 2014 22:57:03 +0000 (14:57 -0800)
committerYaowu Xu <yaowu@google.com>
Sat, 25 Jan 2014 00:40:36 +0000 (16:40 -0800)
That force the stop of subpel search possibly at full/half/quater pel
stages

Change-Id: Ie50c500417bd78e1a53e6620bd4c2b85f63d9c67

vp9/encoder/vp9_onyx_if.c
vp9/encoder/vp9_onyx_int.h
vp9/encoder/vp9_rdopt.c

index 38189edca8223380ae4bdd7a66bec37915748fac..a0de23be6e40f0b56a1141fa4665e3716b54094b 100644 (file)
@@ -839,6 +839,7 @@ static void set_rt_speed_feature(VP9_COMMON *cm,
   if (speed >= 5) {
     int i;
     sf->disable_split_mask = DISABLE_ALL_SPLIT;
+    sf->subpel_force_stop = 1;
     for (i = 0; i < TX_SIZES; i++) {
       sf->intra_y_mode_mask[i] = INTRA_DC_H_V;
       sf->intra_uv_mode_mask[i] = INTRA_DC_ONLY;
@@ -867,6 +868,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
   sf->recode_loop = 1;
   sf->subpel_search_method = SUBPEL_TREE;
   sf->subpel_iters_per_step = 2;
+  sf->subpel_force_stop = 0;
   sf->optimize_coefficients = !cpi->oxcf.lossless;
   sf->reduce_first_step_size = 0;
   sf->auto_mv_step_size = 0;
index 5838c76d95456ec69a162580cd7b12e7a961b7c6..8c6d85c16ccb1f0033911f54ea1bf68338d81c79 100644 (file)
@@ -256,6 +256,9 @@ typedef struct {
   // Maximum number of steps in logarithmic subpel search before giving up.
   int subpel_iters_per_step;
 
+  // Control when to stop subpel search
+  int subpel_force_stop;
+
   // Thresh_mult is used to set a threshold for the rd score. A higher value
   // means that we will accept the best mode so far more often. This number
   // is used in combination with the current block size, and thresh_freq_fact
index b7ea34679d2759dc3e40995545ace7aaf76cd9e0..975e58b64fb1d96de8b41267f144fc36eca140f7 100644 (file)
@@ -1840,7 +1840,8 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x,
                                          &bsi->ref_mv->as_mv,
                                          cm->allow_high_precision_mv,
                                          x->errorperbit, v_fn_ptr,
-                                         0, cpi->sf.subpel_iters_per_step,
+                                         cpi->sf.subpel_force_stop,
+                                         cpi->sf.subpel_iters_per_step,
                                          x->nmvjointcost, x->mvcost,
                                          &distortion,
                                          &x->pred_sse[mbmi->ref_frame[0]]);
@@ -2451,7 +2452,8 @@ static void single_motion_search(VP9_COMP *cpi, MACROBLOCK *x,
                                  cm->allow_high_precision_mv,
                                  x->errorperbit,
                                  &cpi->fn_ptr[bsize],
-                                 0, cpi->sf.subpel_iters_per_step,
+                                 cpi->sf.subpel_force_stop,
+                                 cpi->sf.subpel_iters_per_step,
                                  x->nmvjointcost, x->mvcost,
                                  &dis, &x->pred_sse[ref]);
   }