Index: source/libvpx/vp9/common/vp9_filter.c |
=================================================================== |
--- source/libvpx/vp9/common/vp9_filter.c (revision 232232) |
+++ source/libvpx/vp9/common/vp9_filter.c (working copy) |
@@ -8,12 +8,14 @@ |
* be found in the AUTHORS file in the root of the source tree. |
*/ |
+#include <assert.h> |
+ |
#include "vpx_ports/mem.h" |
#include "vp9/common/vp9_filter.h" |
-DECLARE_ALIGNED(256, const int16_t, |
- vp9_bilinear_filters[SUBPEL_SHIFTS][SUBPEL_TAPS]) = { |
+DECLARE_ALIGNED(256, const subpel_kernel, |
+ vp9_bilinear_filters[SUBPEL_SHIFTS]) = { |
{ 0, 0, 0, 128, 0, 0, 0, 0 }, |
{ 0, 0, 0, 120, 8, 0, 0, 0 }, |
{ 0, 0, 0, 112, 16, 0, 0, 0 }, |
@@ -33,8 +35,8 @@ |
}; |
// Lagrangian interpolation filter |
-DECLARE_ALIGNED(256, const int16_t, |
- vp9_sub_pel_filters_8[SUBPEL_SHIFTS][SUBPEL_TAPS]) = { |
+DECLARE_ALIGNED(256, const subpel_kernel, |
+ vp9_sub_pel_filters_8[SUBPEL_SHIFTS]) = { |
{ 0, 0, 0, 128, 0, 0, 0, 0}, |
{ 0, 1, -5, 126, 8, -3, 1, 0}, |
{ -1, 3, -10, 122, 18, -6, 2, 0}, |
@@ -54,8 +56,8 @@ |
}; |
// DCT based filter |
-DECLARE_ALIGNED(256, const int16_t, |
- vp9_sub_pel_filters_8s[SUBPEL_SHIFTS][SUBPEL_TAPS]) = { |
+DECLARE_ALIGNED(256, const subpel_kernel, |
+ vp9_sub_pel_filters_8s[SUBPEL_SHIFTS]) = { |
{0, 0, 0, 128, 0, 0, 0, 0}, |
{-1, 3, -7, 127, 8, -3, 1, 0}, |
{-2, 5, -13, 125, 17, -6, 3, -1}, |
@@ -75,8 +77,8 @@ |
}; |
// freqmultiplier = 0.5 |
-DECLARE_ALIGNED(256, const int16_t, |
- vp9_sub_pel_filters_8lp[SUBPEL_SHIFTS][SUBPEL_TAPS]) = { |
+DECLARE_ALIGNED(256, const subpel_kernel, |
+ vp9_sub_pel_filters_8lp[SUBPEL_SHIFTS]) = { |
{ 0, 0, 0, 128, 0, 0, 0, 0}, |
{-3, -1, 32, 64, 38, 1, -3, 0}, |
{-2, -2, 29, 63, 41, 2, -3, 0}, |
@@ -94,3 +96,20 @@ |
{ 0, -3, 2, 41, 63, 29, -2, -2}, |
{ 0, -3, 1, 38, 64, 32, -1, -3} |
}; |
+ |
+const subpel_kernel *vp9_get_filter_kernel(INTERPOLATION_TYPE type) { |
+ switch (type) { |
+ case EIGHTTAP: |
+ return vp9_sub_pel_filters_8; |
+ case EIGHTTAP_SMOOTH: |
+ return vp9_sub_pel_filters_8lp; |
+ case EIGHTTAP_SHARP: |
+ return vp9_sub_pel_filters_8s; |
+ case BILINEAR: |
+ return vp9_bilinear_filters; |
+ default: |
+ assert(!"Invalid interpolation type."); |
+ return NULL; |
+ } |
+} |
+ |