| 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;
|
| + }
|
| +}
|
| +
|
|
|