Line data Source code
1 : /*
2 : * Copyright (c) 2015 The WebM project authors. All Rights Reserved.
3 : *
4 : * Use of this source code is governed by a BSD-style license
5 : * that can be found in the LICENSE file in the root of the source
6 : * tree. An additional intellectual property rights grant can be found
7 : * in the file PATENTS. All contributing project authors may
8 : * be found in the AUTHORS file in the root of the source tree.
9 : */
10 :
11 : #ifndef VPX_DSP_VPX_FILTER_H_
12 : #define VPX_DSP_VPX_FILTER_H_
13 :
14 : #include "vpx/vpx_integer.h"
15 :
16 : #ifdef __cplusplus
17 : extern "C" {
18 : #endif
19 :
20 : #define FILTER_BITS 7
21 :
22 : #define SUBPEL_BITS 4
23 : #define SUBPEL_MASK ((1 << SUBPEL_BITS) - 1)
24 : #define SUBPEL_SHIFTS (1 << SUBPEL_BITS)
25 : #define SUBPEL_TAPS 8
26 :
27 : typedef int16_t InterpKernel[SUBPEL_TAPS];
28 :
29 0 : static INLINE const InterpKernel *get_filter_base(const int16_t *filter) {
30 : // NOTE: This assumes that the filter table is 256-byte aligned.
31 : // TODO(agrange) Modify to make independent of table alignment.
32 0 : return (const InterpKernel *)(((intptr_t)filter) & ~((intptr_t)0xFF));
33 : }
34 :
35 0 : static INLINE int get_filter_offset(const int16_t *f,
36 : const InterpKernel *base) {
37 0 : return (int)((const InterpKernel *)(intptr_t)f - base);
38 : }
39 :
40 : #ifdef __cplusplus
41 : } // extern "C"
42 : #endif
43 :
44 : #endif // VPX_DSP_VPX_FILTER_H_
|