shithub: libvpx

Download patch

ref: 4cb688fc9daaf340ac60186d538c4a4dffb7318c
parent: e6509742028631e4a02014cf6fc684eebf39c5d8
author: Jingning Han <[email protected]>
date: Mon Jul 23 10:30:22 EDT 2018

Pass in block size for motion search function

Use parameter block size to control the motion estimation function
in tpl model building.

Change-Id: I4d9ec28aa15d0fb51a94aacd9bd50810add7ce29

--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -5579,7 +5579,7 @@
 uint32_t motion_compensated_prediction(VP9_COMP *cpi, ThreadData *td,
                                        uint8_t *cur_frame_buf,
                                        uint8_t *ref_frame_buf, int stride,
-                                       MV *mv) {
+                                       MV *mv, BLOCK_SIZE bsize) {
   MACROBLOCK *const x = &td->mb;
   MACROBLOCKD *const xd = &x->e_mbd;
   MV_SPEED_FEATURES *const mv_sf = &cpi->sf.mv;
@@ -5609,7 +5609,7 @@
 
   vp9_set_mv_search_range(&x->mv_limits, &best_ref_mv1);
 
-  vp9_full_pixel_search(cpi, x, BLOCK_32X32, &best_ref_mv1_full, step_param,
+  vp9_full_pixel_search(cpi, x, bsize, &best_ref_mv1_full, step_param,
                         search_method, sadpb, cond_cost_list(cpi, cost_list),
                         &best_ref_mv1, mv, 0, 0);
 
@@ -5619,7 +5619,7 @@
   // Ignore mv costing by sending NULL pointer instead of cost array
   bestsme = cpi->find_fractional_mv_step(
       x, mv, &best_ref_mv1, cpi->common.allow_high_precision_mv, x->errorperbit,
-      &cpi->fn_ptr[BLOCK_32X32], 0, mv_sf->subpel_iters_per_step,
+      &cpi->fn_ptr[bsize], 0, mv_sf->subpel_iters_per_step,
       cond_cost_list(cpi, cost_list), NULL, NULL, &distortion, &sse, NULL, 0,
       0);
 
@@ -5903,7 +5903,7 @@
         motion_compensated_prediction(cpi, td,
                                       this_frame->y_buffer + mb_y_offset,
                                       ref_frame[rf_idx]->y_buffer + mb_y_offset,
-                                      this_frame->y_stride, &mv.as_mv);
+                                      this_frame->y_stride, &mv.as_mv, bsize);
 
         // TODO(jingning): Not yet support high bit-depth in the next three
         // steps.