]> granicus.if.org Git - libvpx/commitdiff
Fix filter type mismatch warning on Visual Studio
authorYi Luo <luoyi@google.com>
Wed, 28 Sep 2016 00:12:44 +0000 (17:12 -0700)
committerYi Luo <luoyi@google.com>
Mon, 3 Oct 2016 23:24:25 +0000 (16:24 -0700)
- Move filter look-up functions to corresponding optimization modules.

BUG=webm:1296

Change-Id: I87f399609052db2dbc7e5a590afb08b82e3fa89f

av1/av1_common.mk
av1/common/filter.c
av1/common/filter.h
av1/common/x86/av1_convolve_filters_ssse3.c
av1/common/x86/av1_convolve_ssse3.c
av1/common/x86/av1_highbd_convolve_filters_sse4.c
av1/common/x86/av1_highbd_convolve_sse4.c
av1/common/x86/convolve_filter_ssse3.h [new file with mode: 0644]
av1/common/x86/highbd_convolve_filter_sse4.h [new file with mode: 0644]

index 26ef9c5f9a4b423c7acaca6603088a6f69711eee..b7710c8d2716229d14cd49aeb1a54b8b56fe39ca 100644 (file)
@@ -72,9 +72,11 @@ AV1_COMMON_SRCS-yes += common/av1_fwd_txfm2d.c
 AV1_COMMON_SRCS-yes += common/av1_fwd_txfm2d_cfg.h
 AV1_COMMON_SRCS-yes += common/av1_inv_txfm2d.c
 AV1_COMMON_SRCS-yes += common/av1_inv_txfm2d_cfg.h
+AV1_COMMON_SRCS-$(HAVE_SSSE3) += common/x86/convolve_filter_ssse3.h
 AV1_COMMON_SRCS-$(HAVE_SSSE3) += common/x86/av1_convolve_ssse3.c
 AV1_COMMON_SRCS-$(HAVE_SSSE3) += common/x86/av1_convolve_filters_ssse3.c
 ifeq ($(CONFIG_AOM_HIGHBITDEPTH),yes)
+AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/highbd_convolve_filter_sse4.h
 AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/av1_highbd_convolve_sse4.c
 AV1_COMMON_SRCS-$(HAVE_SSE4_1) += common/x86/av1_highbd_convolve_filters_sse4.c
 endif
index 544e3da7ee4a4d14102f2ed8ce88eedaba7a309d..a91ceaf61d95c9f6d8c3e78b1f26289bcee8d10c 100644 (file)
@@ -26,8 +26,8 @@ DECLARE_ALIGNED(256, static const InterpKernel,
 };
 
 #if USE_TEMPORALFILTER_12TAP
-DECLARE_ALIGNED(16, static const int16_t,
-                sub_pel_filters_temporalfilter_12[SUBPEL_SHIFTS][12]) = {
+DECLARE_ALIGNED(16, const int16_t,
+                av1_sub_pel_filters_temporalfilter_12[SUBPEL_SHIFTS][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 },
@@ -77,8 +77,8 @@ DECLARE_ALIGNED(256, static const InterpKernel,
 };
 #endif  // CONFIG_EXT_INTRA
 
-DECLARE_ALIGNED(256, static const int16_t,
-                sub_pel_filters_10sharp[SUBPEL_SHIFTS][10]) = {
+DECLARE_ALIGNED(256, const int16_t,
+                av1_sub_pel_filters_10sharp[SUBPEL_SHIFTS][10]) = {
   // intfilt 0.77
   { 0, 0, 0, 0, 128, 0, 0, 0, 0, 0 },
   { 0, -1, 3, -6, 127, 8, -4, 2, -1, 0 },
@@ -124,8 +124,8 @@ DECLARE_ALIGNED(256, static const InterpKernel,
   { 0, 2, -12, 37, 94, 14, -9, 2 }, { 0, 2, -11, 31, 95, 19, -10, 2 },
 };
 
-DECLARE_ALIGNED(16, static const int16_t,
-                sub_pel_filters_12sharp[SUBPEL_SHIFTS][12]) = {
+DECLARE_ALIGNED(16, const int16_t,
+                av1_sub_pel_filters_12sharp[SUBPEL_SHIFTS][12]) = {
   // intfilt 0.85
   { 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0 },
   { 0, 1, -2, 3, -7, 127, 8, -4, 2, -1, 1, 0 },
@@ -200,9 +200,9 @@ static const InterpFilterParams
     av1_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 },
-      { (const int16_t *)sub_pel_filters_10sharp, 10, SUBPEL_SHIFTS },
+      { (const int16_t *)av1_sub_pel_filters_10sharp, 10, SUBPEL_SHIFTS },
       { (const int16_t *)sub_pel_filters_8smooth2, SUBPEL_TAPS, SUBPEL_SHIFTS },
-      { (const int16_t *)sub_pel_filters_12sharp, 12, SUBPEL_SHIFTS },
+      { (const int16_t *)av1_sub_pel_filters_12sharp, 12, SUBPEL_SHIFTS },
       { (const int16_t *)bilinear_filters, SUBPEL_TAPS, SUBPEL_SHIFTS }
     };
 #else
@@ -217,7 +217,7 @@ static const InterpFilterParams
 
 #if USE_TEMPORALFILTER_12TAP
 static const InterpFilterParams av1_interp_temporalfilter_12tap = {
-  (const int16_t *)sub_pel_filters_temporalfilter_12, 12, SUBPEL_SHIFTS
+  (const int16_t *)av1_sub_pel_filters_temporalfilter_12, 12, SUBPEL_SHIFTS
 };
 #endif  // USE_TEMPORALFILTER_12TAP
 
@@ -238,65 +238,3 @@ const int16_t *av1_get_interp_filter_kernel(const InterpFilter interp_filter) {
   return (const int16_t *)av1_interp_filter_params_list[interp_filter]
       .filter_ptr;
 }
-
-SubpelFilterCoeffs av1_get_subpel_filter_signal_dir(const InterpFilterParams p,
-                                                    int index) {
-#if CONFIG_EXT_INTERP && HAVE_SSSE3
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_12sharp) {
-    return &sub_pel_filters_12sharp_signal_dir[index][0];
-  }
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_10sharp) {
-    return &sub_pel_filters_10sharp_signal_dir[index][0];
-  }
-#endif
-#if USE_TEMPORALFILTER_12TAP && HAVE_SSSE3
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_temporalfilter_12) {
-    return &sub_pel_filters_temporalfilter_12_signal_dir[index][0];
-  }
-#endif
-  (void)p;
-  (void)index;
-  return NULL;
-}
-
-SubpelFilterCoeffs av1_get_subpel_filter_ver_signal_dir(
-    const InterpFilterParams p, int index) {
-#if CONFIG_EXT_INTERP && HAVE_SSSE3
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_12sharp) {
-    return &sub_pel_filters_12sharp_ver_signal_dir[index][0];
-  }
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_10sharp) {
-    return &sub_pel_filters_10sharp_ver_signal_dir[index][0];
-  }
-#endif
-#if USE_TEMPORALFILTER_12TAP && HAVE_SSSE3
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_temporalfilter_12) {
-    return &sub_pel_filters_temporalfilter_12_ver_signal_dir[index][0];
-  }
-#endif
-  (void)p;
-  (void)index;
-  return NULL;
-}
-
-#if CONFIG_AOM_HIGHBITDEPTH
-HbdSubpelFilterCoeffs av1_hbd_get_subpel_filter_ver_signal_dir(
-    const InterpFilterParams p, int index) {
-#if CONFIG_EXT_INTERP && HAVE_SSE4_1
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_12sharp) {
-    return &sub_pel_filters_12sharp_highbd_ver_signal_dir[index][0];
-  }
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_10sharp) {
-    return &sub_pel_filters_10sharp_highbd_ver_signal_dir[index][0];
-  }
-#endif
-#if USE_TEMPORALFILTER_12TAP && HAVE_SSE4_1
-  if (p.filter_ptr == (const int16_t *)sub_pel_filters_temporalfilter_12) {
-    return &sub_pel_filters_temporalfilter_12_highbd_ver_signal_dir[index][0];
-  }
-#endif
-  (void)p;
-  (void)index;
-  return NULL;
-}
-#endif
index b83a0b221cfa3e2767fb921d91680f56964e1518..098e38d85c8c6e096ac09a90df03550ef615f51c 100644 (file)
@@ -92,24 +92,15 @@ static INLINE int av1_is_interpolating_filter(
 }
 
 #if USE_TEMPORALFILTER_12TAP
-extern const int8_t sub_pel_filters_temporalfilter_12_signal_dir[15][2][16];
-extern const int8_t sub_pel_filters_temporalfilter_12_ver_signal_dir[15][6][16];
-#if CONFIG_AOM_HIGHBITDEPTH
-extern const int16_t sub_pel_filters_temporalfilter_12_highbd_ver_signal_dir[15]
-                                                                            [6]
-                                                                            [8];
-#endif
+DECLARE_ALIGNED(16, extern const int16_t,
+                av1_sub_pel_filters_temporalfilter_12[SUBPEL_SHIFTS][12]);
 #endif
 
 #if CONFIG_EXT_INTERP
-extern const int8_t sub_pel_filters_12sharp_signal_dir[15][2][16];
-extern const int8_t sub_pel_filters_10sharp_signal_dir[15][2][16];
-extern const int8_t sub_pel_filters_12sharp_ver_signal_dir[15][6][16];
-extern const int8_t sub_pel_filters_10sharp_ver_signal_dir[15][6][16];
-#if CONFIG_AOM_HIGHBITDEPTH
-extern const int16_t sub_pel_filters_12sharp_highbd_ver_signal_dir[15][6][8];
-extern const int16_t sub_pel_filters_10sharp_highbd_ver_signal_dir[15][6][8];
-#endif
+DECLARE_ALIGNED(256, extern const int16_t,
+                av1_sub_pel_filters_10sharp[SUBPEL_SHIFTS][10]);
+DECLARE_ALIGNED(16, extern const int16_t,
+                av1_sub_pel_filters_12sharp[SUBPEL_SHIFTS][12]);
 #endif
 
 typedef const int8_t (*SubpelFilterCoeffs)[16];
index 7a40b9c5766dc96f7ddf4eaaca858de59205b5d5..d6aca3d960f98c89e34123571409639f81805e91 100644 (file)
@@ -12,7 +12,7 @@
 
 #if CONFIG_EXT_INTERP
 DECLARE_ALIGNED(16, const int8_t,
-                sub_pel_filters_10sharp_signal_dir[15][2][16]) = {
+                av1_sub_pel_filters_10sharp_signal_dir[15][2][16]) = {
   {
       { 0, 0, -1, 3, -6, 127, 8, -4, 2, -1, 0, 0, 0, 0, 0, 0 },
       { 0, 0, 0, 0, -1, 3, -6, 127, 8, -4, 2, -1, 0, 0, 0, 0 },
@@ -77,7 +77,7 @@ DECLARE_ALIGNED(16, const int8_t,
 #endif
 #if CONFIG_EXT_INTERP
 DECLARE_ALIGNED(16, const int8_t,
-                sub_pel_filters_10sharp_ver_signal_dir[15][6][16]) = {
+                av1_sub_pel_filters_10sharp_ver_signal_dir[15][6][16]) = {
   {
       { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
       { -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3 },
@@ -228,7 +228,7 @@ DECLARE_ALIGNED(16, const int8_t,
 #endif
 #if CONFIG_EXT_INTERP
 DECLARE_ALIGNED(16, const int8_t,
-                sub_pel_filters_12sharp_signal_dir[15][2][16]) = {
+                av1_sub_pel_filters_12sharp_signal_dir[15][2][16]) = {
   {
       { 0, 1, -2, 3, -7, 127, 8, -4, 2, -1, 1, 0, 0, 0, 0, 0 },
       { 0, 0, 0, 1, -2, 3, -7, 127, 8, -4, 2, -1, 1, 0, 0, 0 },
@@ -293,7 +293,7 @@ DECLARE_ALIGNED(16, const int8_t,
 #endif
 #if CONFIG_EXT_INTERP
 DECLARE_ALIGNED(16, const int8_t,
-                sub_pel_filters_12sharp_ver_signal_dir[15][6][16]) = {
+                av1_sub_pel_filters_12sharp_ver_signal_dir[15][6][16]) = {
   {
       { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 },
       { -2, 3, -2, 3, -2, 3, -2, 3, -2, 3, -2, 3, -2, 3, -2, 3 },
@@ -444,7 +444,7 @@ DECLARE_ALIGNED(16, const int8_t,
 #endif
 #if USE_TEMPORALFILTER_12TAP
 DECLARE_ALIGNED(16, const int8_t,
-                sub_pel_filters_temporalfilter_12_signal_dir[15][2][16]) = {
+                av1_sub_pel_filters_temporalfilter_12_signal_dir[15][2][16]) = {
   {
       { 0, 1, -1, 3, -7, 127, 8, -4, 2, -1, 0, 0, 0, 0, 0, 0 },
       { 0, 0, 0, 1, -1, 3, -7, 127, 8, -4, 2, -1, 0, 0, 0, 0 },
@@ -509,7 +509,8 @@ DECLARE_ALIGNED(16, const int8_t,
 #endif
 #if USE_TEMPORALFILTER_12TAP
 DECLARE_ALIGNED(16, const int8_t,
-                sub_pel_filters_temporalfilter_12_ver_signal_dir[15][6][16]) = {
+                av1_sub_pel_filters_temporalfilter_12_ver_signal_dir[15][6]
+                                                                    [16]) = {
   {
       { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 },
       { -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3 },
index df219f78cd7beb8061733552c2409be5f554fbf8..31681ee45b87a69a44b95d1cdf672d3b7aabd620 100644 (file)
 #include <tmmintrin.h>
 
 #include "./av1_rtcd.h"
-#include "av1/common/filter.h"
+#include "av1/common/x86/convolve_filter_ssse3.h"
 
 #define WIDTH_BOUND (16)
 #define HEIGHT_BOUND (16)
 
+static SubpelFilterCoeffs get_subpel_filter_signal_dir(
+    const InterpFilterParams p, int index) {
+#if CONFIG_EXT_INTERP
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_12sharp) {
+    return &av1_sub_pel_filters_12sharp_signal_dir[index][0];
+  }
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_10sharp) {
+    return &av1_sub_pel_filters_10sharp_signal_dir[index][0];
+  }
+#endif
+#if USE_TEMPORALFILTER_12TAP
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_temporalfilter_12) {
+    return &av1_sub_pel_filters_temporalfilter_12_signal_dir[index][0];
+  }
+#endif
+  (void)p;
+  (void)index;
+  return NULL;
+}
+
+static SubpelFilterCoeffs get_subpel_filter_ver_signal_dir(
+    const InterpFilterParams p, int index) {
+#if CONFIG_EXT_INTERP
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_12sharp) {
+    return &av1_sub_pel_filters_12sharp_ver_signal_dir[index][0];
+  }
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_10sharp) {
+    return &av1_sub_pel_filters_10sharp_ver_signal_dir[index][0];
+  }
+#endif
+#if USE_TEMPORALFILTER_12TAP
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_temporalfilter_12) {
+    return &av1_sub_pel_filters_temporalfilter_12_ver_signal_dir[index][0];
+  }
+#endif
+  (void)p;
+  (void)index;
+  return NULL;
+}
+
 static INLINE void transpose_4x8(const __m128i *in, __m128i *out) {
   __m128i t0, t1;
 
@@ -636,9 +676,8 @@ void av1_convolve_horiz_ssse3(const uint8_t *src, int src_stride, uint8_t *dst,
     return;
   }
 
-  hCoeffs = av1_get_subpel_filter_signal_dir(filter_params, subpel_x_q4 - 1);
-  vCoeffs =
-      av1_get_subpel_filter_ver_signal_dir(filter_params, subpel_x_q4 - 1);
+  hCoeffs = get_subpel_filter_signal_dir(filter_params, subpel_x_q4 - 1);
+  vCoeffs = get_subpel_filter_ver_signal_dir(filter_params, subpel_x_q4 - 1);
 
   if (!hCoeffs || !vCoeffs) {
     av1_convolve_horiz_c(src, src_stride, dst, dst_stride, w, h, filter_params,
@@ -845,8 +884,7 @@ void av1_convolve_vert_ssse3(const uint8_t *src, int src_stride, uint8_t *dst,
     return;
   }
 
-  vCoeffs =
-      av1_get_subpel_filter_ver_signal_dir(filter_params, subpel_y_q4 - 1);
+  vCoeffs = get_subpel_filter_ver_signal_dir(filter_params, subpel_y_q4 - 1);
 
   if (!vCoeffs) {
     av1_convolve_vert_c(src, src_stride, dst, dst_stride, w, h, filter_params,
index d7129c6bb51771a5cdcd02fbf016337467f7603b..60d9ab3c349458817de6aab4a280891ca39946cc 100644 (file)
@@ -13,7 +13,7 @@
 #if CONFIG_AOM_HIGHBITDEPTH
 #if CONFIG_EXT_INTERP
 DECLARE_ALIGNED(16, const int16_t,
-                sub_pel_filters_10sharp_highbd_ver_signal_dir[15][6][8]) = {
+                av1_sub_pel_filters_10sharp_highbd_ver_signal_dir[15][6][8]) = {
   {
       { 0, 0, 0, 0, 0, 0, 0, 0 },
       { -1, 3, -1, 3, -1, 3, -1, 3 },
@@ -140,7 +140,7 @@ DECLARE_ALIGNED(16, const int16_t,
 #if CONFIG_AOM_HIGHBITDEPTH
 #if CONFIG_EXT_INTERP
 DECLARE_ALIGNED(16, const int16_t,
-                sub_pel_filters_12sharp_highbd_ver_signal_dir[15][6][8]) = {
+                av1_sub_pel_filters_12sharp_highbd_ver_signal_dir[15][6][8]) = {
   {
       { 0, 1, 0, 1, 0, 1, 0, 1 },
       { -2, 3, -2, 3, -2, 3, -2, 3 },
@@ -266,9 +266,9 @@ DECLARE_ALIGNED(16, const int16_t,
 #endif
 #if CONFIG_AOM_HIGHBITDEPTH
 #if USE_TEMPORALFILTER_12TAP
-DECLARE_ALIGNED(16, const int16_t,
-                sub_pel_filters_temporalfilter_12_highbd_ver_signal_dir[15][6]
-                                                                       [8]) = {
+DECLARE_ALIGNED(
+    16, const int16_t,
+    av1_sub_pel_filters_temporalfilter_12_highbd_ver_signal_dir[15][6][8]) = {
   {
       { 0, 1, 0, 1, 0, 1, 0, 1 },
       { -1, 3, -1, 3, -1, 3, -1, 3 },
index 89d3aef51a860ab2aceb92724a64ed91894df112..5c177f56dd4335efa1e288c379fd6340c6507861 100644 (file)
 #include <smmintrin.h>
 
 #include "./av1_rtcd.h"
-#include "av1/common/filter.h"
+#include "av1/common/x86/highbd_convolve_filter_sse4.h"
 
 typedef void (*TransposeSave)(const int width, int pixelsNum, uint32_t *src,
                               int src_stride, uint16_t *dst, int dst_stride,
                               int bd);
 
+static HbdSubpelFilterCoeffs hbd_get_subpel_filter_ver_signal_dir(
+    const InterpFilterParams p, int index) {
+#if CONFIG_EXT_INTERP
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_12sharp) {
+    return &av1_sub_pel_filters_12sharp_highbd_ver_signal_dir[index][0];
+  }
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_10sharp) {
+    return &av1_sub_pel_filters_10sharp_highbd_ver_signal_dir[index][0];
+  }
+#endif
+#if USE_TEMPORALFILTER_12TAP
+  if (p.filter_ptr == (const int16_t *)av1_sub_pel_filters_temporalfilter_12) {
+    return &av1_sub_pel_filters_temporalfilter_12_highbd_ver_signal_dir[index]
+                                                                       [0];
+  }
+#endif
+  (void)p;
+  (void)index;
+  return NULL;
+}
+
 // pixelsNum 0: write all 4 pixels
 //           1/2/3: residual pixels 1/2/3
 static void writePixel(__m128i *u, int width, int pixelsNum, uint16_t *dst,
@@ -235,7 +256,7 @@ void av1_highbd_convolve_horiz_sse4_1(const uint16_t *src, int src_stride,
   }
 
   vCoeffs =
-      av1_hbd_get_subpel_filter_ver_signal_dir(filter_params, subpel_x_q4 - 1);
+      hbd_get_subpel_filter_ver_signal_dir(filter_params, subpel_x_q4 - 1);
   if (!vCoeffs) {
     av1_highbd_convolve_horiz_c(src, src_stride, dst, dst_stride, w, h,
                                 filter_params, subpel_x_q4, x_step_q4, avg, bd);
@@ -439,7 +460,7 @@ void av1_highbd_convolve_vert_sse4_1(const uint16_t *src, int src_stride,
   }
 
   vCoeffs =
-      av1_hbd_get_subpel_filter_ver_signal_dir(filter_params, subpel_y_q4 - 1);
+      hbd_get_subpel_filter_ver_signal_dir(filter_params, subpel_y_q4 - 1);
   if (!vCoeffs) {
     av1_highbd_convolve_vert_c(src, src_stride, dst, dst_stride, w, h,
                                filter_params, subpel_y_q4, y_step_q4, avg, bd);
diff --git a/av1/common/x86/convolve_filter_ssse3.h b/av1/common/x86/convolve_filter_ssse3.h
new file mode 100644 (file)
index 0000000..5dbcc4f
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2016, Alliance for Open Media. All rights reserved
+ *
+ * This source code is subject to the terms of the BSD 2 Clause License and
+ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
+ * was not distributed with this source code in the LICENSE file, you can
+ * obtain it at www.aomedia.org/license/software. If the Alliance for Open
+ * Media Patent License 1.0 was not distributed with this source code in the
+ * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
+ */
+
+#ifndef AV1_COMMON_X86_CONVOLVE_FILTER_SSSE3_H_
+#define AV1_COMMON_X86_CONVOLVE_FILTER_SSSE3_H_
+
+#include "./aom_config.h"
+#include "av1/common/filter.h"
+
+#if USE_TEMPORALFILTER_12TAP
+DECLARE_ALIGNED(16, extern const int8_t,
+                av1_sub_pel_filters_temporalfilter_12_signal_dir[15][2][16]);
+DECLARE_ALIGNED(16, extern const int8_t,
+                av1_sub_pel_filters_temporalfilter_12_ver_signal_dir[15][6]
+                                                                    [16]);
+#endif
+
+#if CONFIG_EXT_INTERP
+DECLARE_ALIGNED(16, extern const int8_t,
+                av1_sub_pel_filters_12sharp_signal_dir[15][2][16]);
+DECLARE_ALIGNED(16, extern const int8_t,
+                av1_sub_pel_filters_10sharp_signal_dir[15][2][16]);
+DECLARE_ALIGNED(16, extern const int8_t,
+                av1_sub_pel_filters_12sharp_ver_signal_dir[15][6][16]);
+DECLARE_ALIGNED(16, extern const int8_t,
+                av1_sub_pel_filters_10sharp_ver_signal_dir[15][6][16]);
+#endif
+
+#endif  // AV1_COMMON_X86_CONVOLVE_FILTER_SSSE3_H_
diff --git a/av1/common/x86/highbd_convolve_filter_sse4.h b/av1/common/x86/highbd_convolve_filter_sse4.h
new file mode 100644 (file)
index 0000000..3a3fda8
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2016, Alliance for Open Media. All rights reserved
+ *
+ * This source code is subject to the terms of the BSD 2 Clause License and
+ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
+ * was not distributed with this source code in the LICENSE file, you can
+ * obtain it at www.aomedia.org/license/software. If the Alliance for Open
+ * Media Patent License 1.0 was not distributed with this source code in the
+ * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
+ */
+
+#ifndef AV1_COMMON_X86_HIGHBD_CONVOLVE_FILTER_SSE4_H_
+#define AV1_COMMON_X86_HIGHBD_CONVOLVE_FILTER_SSE4_H_
+
+#include "./aom_config.h"
+#include "av1/common/filter.h"
+
+#if USE_TEMPORALFILTER_12TAP
+DECLARE_ALIGNED(16, extern const int16_t,
+                av1_sub_pel_filters_temporalfilter_12_highbd_ver_signal_dir[15]
+                                                                           [6]
+                                                                           [8]);
+#endif
+
+#if CONFIG_EXT_INTERP
+DECLARE_ALIGNED(16, extern const int16_t,
+                av1_sub_pel_filters_12sharp_highbd_ver_signal_dir[15][6][8]);
+DECLARE_ALIGNED(16, extern const int16_t,
+                av1_sub_pel_filters_10sharp_highbd_ver_signal_dir[15][6][8]);
+#endif
+
+#endif  // AV1_COMMON_X86_HIGHBD_CONVOLVE_FILTER_SSE4_H_