shithub: libvpx

Download patch

ref: e9ba43543522f0fd2822627b2cb384119d1d17f2
parent: 0257168c77791b804568ceaba429ac6f40bc55c7
parent: bb071af390bc60c0d540dac441c7f519404b81cf
author: Yunqing Wang <yunqingwang@google.com>
date: Tue Oct 23 18:29:46 EDT 2018

Merge "Use 8-tap interp filter in temporal filtering"

--- a/vp9/encoder/vp9_mcomp.c
+++ b/vp9/encoder/vp9_mcomp.c
@@ -763,11 +763,14 @@
 
   // TODO(yunqing): need to add 4-tap filter optimization to speed up the
   // encoder.
-  const InterpKernel *kernel = (use_accurate_subpel_search > 0)
-                                   ? ((use_accurate_subpel_search == USE_4_TAPS)
-                                          ? vp9_filter_kernels[FOURTAP]
-                                          : vp9_filter_kernels[EIGHTTAP])
-                                   : vp9_filter_kernels[BILINEAR];
+  const InterpKernel *kernel =
+      (use_accurate_subpel_search > 0)
+          ? ((use_accurate_subpel_search == USE_4_TAPS)
+                 ? vp9_filter_kernels[FOURTAP]
+                 : ((use_accurate_subpel_search == USE_8_TAPS)
+                        ? vp9_filter_kernels[EIGHTTAP]
+                        : vp9_filter_kernels[EIGHTTAP_SHARP]))
+          : vp9_filter_kernels[BILINEAR];
 
   vp9_set_subpel_mv_search_range(&subpel_mv_limits, &x->mv_limits, ref_mv);
   minc = subpel_mv_limits.col_min;
--- a/vp9/encoder/vp9_speed_features.h
+++ b/vp9/encoder/vp9_speed_features.h
@@ -247,6 +247,7 @@
   USE_2_TAPS = 0,
   USE_4_TAPS,
   USE_8_TAPS,
+  USE_8_TAPS_SHARP,
 } SUBPEL_SEARCH_TYPE;
 
 typedef struct SPEED_FEATURES {
--- a/vp9/encoder/vp9_temporal_filter.c
+++ b/vp9/encoder/vp9_temporal_filter.c
@@ -428,8 +428,8 @@
   bestsme = cpi->find_fractional_mv_step(
       x, ref_mv, &best_ref_mv1, cpi->common.allow_high_precision_mv,
       x->errorperbit, &cpi->fn_ptr[BLOCK_16X16], 0, mv_sf->subpel_search_level,
-      cond_cost_list(cpi, cost_list), NULL, NULL, &distortion, &sse, NULL, 0, 0,
-      USE_2_TAPS);
+      cond_cost_list(cpi, cost_list), NULL, NULL, &distortion, &sse, NULL, 16,
+      16, USE_8_TAPS_SHARP);
 
   // Restore input state
   x->plane[0].src = src;