]> granicus.if.org Git - libvpx/commitdiff
Experiment: use 12 taps for sharp filter
authorAngie Chiang <angiebird@google.com>
Fri, 5 Feb 2016 19:05:56 +0000 (11:05 -0800)
committerAngie Chiang <angiebird@google.com>
Sat, 6 Feb 2016 01:39:37 +0000 (17:39 -0800)
Set USE_12_SHARP_FILTER to 1 to turn on the experiment
The psnr percentages increase
       derf   stdhd
lowbd  +0.332 +0.318
highbd +0.476 +0.507

Change-Id: I783c0fc764ee8541645e100453c9b2073924e209

vp10/common/filter.c

index 4176e036ada61c34c21359a0e4c7c244741f9913..a3aa3cf6794d7c58b3912c4ccfadb5fb7565cf57 100644 (file)
@@ -12,6 +12,8 @@
 
 #include "vp10/common/filter.h"
 
+#define USE_12_SHARP_FILTER 0
+
 DECLARE_ALIGNED(256, static const InterpKernel,
                 bilinear_filters[SUBPEL_SHIFTS]) = {
   { 0, 0, 0, 128,   0, 0, 0, 0 },
@@ -73,6 +75,29 @@ DECLARE_ALIGNED(256, static const InterpKernel,
 #endif  // CONFIG_EXT_INTERP
 };
 
+#if USE_12_SHARP_FILTER
+DECLARE_ALIGNED(16, static const int16_t,
+                sub_pel_filters_12sharp[16][12]) = {
+  // intfilt 0.8
+  {0,   0,   0,   0,   0, 128,   0,   0,   0,   0,   0, 0},
+  {0,   1,  -1,   3,  -7, 127,   8,  -4,   2,  -1,   0, 0},
+  {0,   1,  -3,   5, -12, 124,  18,  -8,   4,  -2,   1, 0},
+  {-1,   2,  -4,   8, -17, 120,  28, -11,   6,  -3,   1, -1},
+  {-1,   2,  -4,  10, -21, 114,  38, -15,   8,  -4,   2, -1},
+  {-1,   3,  -5,  11, -23, 107,  49, -18,   9,  -5,   2, -1},
+  {-1,   3,  -6,  12, -25,  99,  60, -21,  11,  -6,   3, -1},
+  {-1,   3,  -6,  12, -25,  90,  70, -23,  12,  -6,   3, -1},
+  {-1,   3,  -6,  12, -24,  80,  80, -24,  12,  -6,   3, -1},
+  {-1,   3,  -6,  12, -23,  70,  90, -25,  12,  -6,   3, -1},
+  {-1,   3,  -6,  11, -21,  60,  99, -25,  12,  -6,   3, -1},
+  {-1,   2,  -5,   9, -18,  49, 107, -23,  11,  -5,   3, -1},
+  {-1,   2,  -4,   8, -15,  38, 114, -21,  10,  -4,   2, -1},
+  {-1,   1,  -3,   6, -11,  28, 120, -17,   8,  -4,   2, -1},
+  {0,   1,  -2,   4,  -8,  18, 124, -12,   5,  -3,   1, 0},
+  {0,   0,  -1,   2,  -4,   8, 127,  -7,   3,  -1,   1, 0},
+};
+#endif  // USE_12_SHARP_FILTER
+
 DECLARE_ALIGNED(256, static const InterpKernel,
                 sub_pel_filters_8sharp[SUBPEL_SHIFTS]) = {
 #if CONFIG_EXT_INTERP
@@ -206,7 +231,11 @@ static const InterpFilterParams
 vp10_interp_filter_params_list[SWITCHABLE_FILTERS + 1] = {
   {(const int16_t*)sub_pel_filters_8, SUBPEL_TAPS, SUBPEL_SHIFTS},
   {(const int16_t*)sub_pel_filters_8smooth, SUBPEL_TAPS, SUBPEL_SHIFTS},
+#if USE_12_SHARP_FILTER
+  {(const int16_t*)sub_pel_filters_12sharp, 12, SUBPEL_SHIFTS},
+#else  // USE_12_SHARP_FILTER
   {(const int16_t*)sub_pel_filters_8sharp, SUBPEL_TAPS, SUBPEL_SHIFTS},
+#endif  // USE_12_SHARP_FILTER
 #if CONFIG_EXT_INTERP && SWITCHABLE_FILTERS == 4
   {(const int16_t*)sub_pel_filters_8smooth2, SUBPEL_TAPS, SUBPEL_SHIFTS},
 #endif