blob: d7d2d16abb1cbcc0f778fa946df9e751935bcec7 [file] [log] [blame]
Matthieu Delahaye60498fe2014-02-18 13:21:06 -06001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef RSD_CPU_CONVOLVE_NEON_H
18#define RSD_CPU_CONVOLVE_NEON_H
19
20#include <stdint.h>
21
22extern "C" {
23#if defined(ARCH_ARM_HAVE_VFP)
24void vp9_convolve_copy_neon(const uint8_t *src, ptrdiff_t src_stride,
25 uint8_t *dst, ptrdiff_t dst_stride,
26 const int16_t *filter_x, int x_step_q4,
27 const int16_t *filter_y, int y_step_q4,
28 int w, int h);
29
30void vp9_convolve_avg_neon(const uint8_t *src, ptrdiff_t src_stride,
31 uint8_t *dst, ptrdiff_t dst_stride,
32 const int16_t *filter_x, int x_step_q4,
33 const int16_t *filter_y, int y_step_q4,
34 int w, int h);
35
36void vp9_convolve8_vert_neon(const uint8_t *src, ptrdiff_t src_stride,
37 uint8_t *dst, ptrdiff_t dst_stride,
38 const int16_t *filter_x, int x_step_q4,
39 const int16_t *filter_y, int y_step_q4,
40 int w, int h);
41
42void vp9_convolve8_avg_vert_neon(const uint8_t *src, ptrdiff_t src_stride,
43 uint8_t *dst, ptrdiff_t dst_stride,
44 const int16_t *filter_x, int x_step_q4,
45 const int16_t *filter_y, int y_step_q4,
46 int w, int h);
47
48void vp9_convolve8_horiz_neon(const uint8_t *src, ptrdiff_t src_stride,
49 uint8_t *dst, ptrdiff_t dst_stride,
50 const int16_t *filter_x, int x_step_q4,
51 const int16_t *filter_y, int y_step_q4,
52 int w, int h);
53
54void vp9_convolve8_avg_horiz_neon(const uint8_t *src, ptrdiff_t src_stride,
55 uint8_t *dst, ptrdiff_t dst_stride,
56 const int16_t *filter_x, int x_step_q4,
57 const int16_t *filter_y, int y_step_q4,
58 int w, int h);
59void vp9_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride,
60 uint8_t *dst, ptrdiff_t dst_stride,
61 const int16_t *filter_x, int x_step_q4,
62 const int16_t *filter_y, int y_step_q4,
63 int w, int h);
64
65void vp9_convolve8_avg_neon(const uint8_t *src, ptrdiff_t src_stride,
66 uint8_t *dst, ptrdiff_t dst_stride,
67 const int16_t *filter_x, int x_step_q4,
68 const int16_t *filter_y, int y_step_q4,
69 int w, int h);
70
71#else
72void vp9_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride,
73 uint8_t *dst, ptrdiff_t dst_stride,
74 const int16_t *filter_x, int x_step_q4,
75 const int16_t *filter_y, int y_step_q4,
76 int w, int h);
77
78void vp9_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride,
79 uint8_t *dst, ptrdiff_t dst_stride,
80 const int16_t *filter_x, int x_step_q4,
81 const int16_t *filter_y, int y_step_q4,
82 int w, int h);
83
84void vp9_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride,
85 uint8_t *dst, ptrdiff_t dst_stride,
86 const int16_t *filter_x, int x_step_q4,
87 const int16_t *filter_y, int y_step_q4,
88 int w, int h);
89
90void vp9_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride,
91 uint8_t *dst, ptrdiff_t dst_stride,
92 const int16_t *filter_x, int x_step_q4,
93 const int16_t *filter_y, int y_step_q4,
94 int w, int h);
95
96void vp9_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
97 uint8_t *dst, ptrdiff_t dst_stride,
98 const int16_t *filter_x, int x_step_q4,
99 const int16_t *filter_y, int y_step_q4,
100 int w, int h);
101
102void vp9_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride,
103 uint8_t *dst, ptrdiff_t dst_stride,
104 const int16_t *filter_x, int x_step_q4,
105 const int16_t *filter_y, int y_step_q4,
106 int w, int h);
107
108void vp9_convolve8_c(const uint8_t *src, ptrdiff_t src_stride,
109 uint8_t *dst, ptrdiff_t dst_stride,
110 const int16_t *filter_x, int x_step_q4,
111 const int16_t *filter_y, int y_step_q4,
112 int w, int h);
113
114void vp9_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride,
115 uint8_t *dst, ptrdiff_t dst_stride,
116 const int16_t *filter_x, int x_step_q4,
117 const int16_t *filter_y, int y_step_q4,
118 int w, int h);
119#endif
120}
121#endif