Upstream version 5.34.92.0
[platform/framework/web/crosswalk.git] / src / third_party / libvpx / source / config / linux / arm-neon-cpu-detect / vp9_rtcd.h
1 #ifndef VP9_RTCD_H_
2 #define VP9_RTCD_H_
3
4 #ifdef RTCD_C
5 #define RTCD_EXTERN
6 #else
7 #define RTCD_EXTERN extern
8 #endif
9
10 /*
11  * VP9
12  */
13
14 #include "vpx/vpx_integer.h"
15 #include "vp9/common/vp9_enums.h"
16
17 struct macroblockd;
18
19 /* Encoder forward decls */
20 struct macroblock;
21 struct vp9_variance_vtable;
22
23 #define DEC_MVCOSTS int *mvjcost, int *mvcost[2]
24 struct mv;
25 union int_mv;
26 struct yv12_buffer_config;
27
28 void vp9_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
29 #define vp9_d207_predictor_4x4 vp9_d207_predictor_4x4_c
30
31 void vp9_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
32 #define vp9_d45_predictor_4x4 vp9_d45_predictor_4x4_c
33
34 void vp9_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
35 #define vp9_d63_predictor_4x4 vp9_d63_predictor_4x4_c
36
37 void vp9_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
38 #define vp9_h_predictor_4x4 vp9_h_predictor_4x4_c
39
40 void vp9_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
41 #define vp9_d117_predictor_4x4 vp9_d117_predictor_4x4_c
42
43 void vp9_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
44 #define vp9_d135_predictor_4x4 vp9_d135_predictor_4x4_c
45
46 void vp9_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
47 #define vp9_d153_predictor_4x4 vp9_d153_predictor_4x4_c
48
49 void vp9_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
50 #define vp9_v_predictor_4x4 vp9_v_predictor_4x4_c
51
52 void vp9_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
53 #define vp9_tm_predictor_4x4 vp9_tm_predictor_4x4_c
54
55 void vp9_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
56 #define vp9_dc_predictor_4x4 vp9_dc_predictor_4x4_c
57
58 void vp9_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
59 #define vp9_dc_top_predictor_4x4 vp9_dc_top_predictor_4x4_c
60
61 void vp9_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
62 #define vp9_dc_left_predictor_4x4 vp9_dc_left_predictor_4x4_c
63
64 void vp9_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
65 #define vp9_dc_128_predictor_4x4 vp9_dc_128_predictor_4x4_c
66
67 void vp9_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
68 #define vp9_d207_predictor_8x8 vp9_d207_predictor_8x8_c
69
70 void vp9_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
71 #define vp9_d45_predictor_8x8 vp9_d45_predictor_8x8_c
72
73 void vp9_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
74 #define vp9_d63_predictor_8x8 vp9_d63_predictor_8x8_c
75
76 void vp9_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
77 #define vp9_h_predictor_8x8 vp9_h_predictor_8x8_c
78
79 void vp9_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
80 #define vp9_d117_predictor_8x8 vp9_d117_predictor_8x8_c
81
82 void vp9_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
83 #define vp9_d135_predictor_8x8 vp9_d135_predictor_8x8_c
84
85 void vp9_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
86 #define vp9_d153_predictor_8x8 vp9_d153_predictor_8x8_c
87
88 void vp9_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
89 #define vp9_v_predictor_8x8 vp9_v_predictor_8x8_c
90
91 void vp9_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
92 #define vp9_tm_predictor_8x8 vp9_tm_predictor_8x8_c
93
94 void vp9_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
95 #define vp9_dc_predictor_8x8 vp9_dc_predictor_8x8_c
96
97 void vp9_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
98 #define vp9_dc_top_predictor_8x8 vp9_dc_top_predictor_8x8_c
99
100 void vp9_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
101 #define vp9_dc_left_predictor_8x8 vp9_dc_left_predictor_8x8_c
102
103 void vp9_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
104 #define vp9_dc_128_predictor_8x8 vp9_dc_128_predictor_8x8_c
105
106 void vp9_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
107 #define vp9_d207_predictor_16x16 vp9_d207_predictor_16x16_c
108
109 void vp9_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
110 #define vp9_d45_predictor_16x16 vp9_d45_predictor_16x16_c
111
112 void vp9_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
113 #define vp9_d63_predictor_16x16 vp9_d63_predictor_16x16_c
114
115 void vp9_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
116 #define vp9_h_predictor_16x16 vp9_h_predictor_16x16_c
117
118 void vp9_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
119 #define vp9_d117_predictor_16x16 vp9_d117_predictor_16x16_c
120
121 void vp9_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
122 #define vp9_d135_predictor_16x16 vp9_d135_predictor_16x16_c
123
124 void vp9_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
125 #define vp9_d153_predictor_16x16 vp9_d153_predictor_16x16_c
126
127 void vp9_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
128 #define vp9_v_predictor_16x16 vp9_v_predictor_16x16_c
129
130 void vp9_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
131 #define vp9_tm_predictor_16x16 vp9_tm_predictor_16x16_c
132
133 void vp9_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
134 #define vp9_dc_predictor_16x16 vp9_dc_predictor_16x16_c
135
136 void vp9_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
137 #define vp9_dc_top_predictor_16x16 vp9_dc_top_predictor_16x16_c
138
139 void vp9_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
140 #define vp9_dc_left_predictor_16x16 vp9_dc_left_predictor_16x16_c
141
142 void vp9_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
143 #define vp9_dc_128_predictor_16x16 vp9_dc_128_predictor_16x16_c
144
145 void vp9_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
146 #define vp9_d207_predictor_32x32 vp9_d207_predictor_32x32_c
147
148 void vp9_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
149 #define vp9_d45_predictor_32x32 vp9_d45_predictor_32x32_c
150
151 void vp9_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
152 #define vp9_d63_predictor_32x32 vp9_d63_predictor_32x32_c
153
154 void vp9_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
155 #define vp9_h_predictor_32x32 vp9_h_predictor_32x32_c
156
157 void vp9_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
158 #define vp9_d117_predictor_32x32 vp9_d117_predictor_32x32_c
159
160 void vp9_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
161 #define vp9_d135_predictor_32x32 vp9_d135_predictor_32x32_c
162
163 void vp9_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
164 #define vp9_d153_predictor_32x32 vp9_d153_predictor_32x32_c
165
166 void vp9_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
167 #define vp9_v_predictor_32x32 vp9_v_predictor_32x32_c
168
169 void vp9_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
170 #define vp9_tm_predictor_32x32 vp9_tm_predictor_32x32_c
171
172 void vp9_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
173 #define vp9_dc_predictor_32x32 vp9_dc_predictor_32x32_c
174
175 void vp9_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
176 #define vp9_dc_top_predictor_32x32 vp9_dc_top_predictor_32x32_c
177
178 void vp9_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
179 #define vp9_dc_left_predictor_32x32 vp9_dc_left_predictor_32x32_c
180
181 void vp9_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
182 #define vp9_dc_128_predictor_32x32 vp9_dc_128_predictor_32x32_c
183
184 void vp9_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
185 void vp9_lpf_vertical_16_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
186 RTCD_EXTERN void (*vp9_lpf_vertical_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
187
188 void vp9_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
189 void vp9_lpf_vertical_16_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
190 RTCD_EXTERN void (*vp9_lpf_vertical_16_dual)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
191
192 void vp9_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
193 void vp9_lpf_vertical_8_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
194 RTCD_EXTERN void (*vp9_lpf_vertical_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
195
196 void vp9_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
197 void vp9_lpf_vertical_8_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
198 RTCD_EXTERN void (*vp9_lpf_vertical_8_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
199
200 void vp9_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
201 void vp9_lpf_vertical_4_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
202 RTCD_EXTERN void (*vp9_lpf_vertical_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
203
204 void vp9_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
205 void vp9_lpf_vertical_4_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
206 RTCD_EXTERN void (*vp9_lpf_vertical_4_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
207
208 void vp9_lpf_horizontal_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
209 void vp9_lpf_horizontal_16_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
210 RTCD_EXTERN void (*vp9_lpf_horizontal_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
211
212 void vp9_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
213 void vp9_lpf_horizontal_8_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
214 RTCD_EXTERN void (*vp9_lpf_horizontal_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
215
216 void vp9_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
217 void vp9_lpf_horizontal_8_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
218 RTCD_EXTERN void (*vp9_lpf_horizontal_8_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
219
220 void vp9_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
221 void vp9_lpf_horizontal_4_neon(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
222 RTCD_EXTERN void (*vp9_lpf_horizontal_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
223
224 void vp9_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
225 void vp9_lpf_horizontal_4_dual_neon(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
226 RTCD_EXTERN void (*vp9_lpf_horizontal_4_dual)(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
227
228 void vp9_blend_mb_inner_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
229 #define vp9_blend_mb_inner vp9_blend_mb_inner_c
230
231 void vp9_blend_mb_outer_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
232 #define vp9_blend_mb_outer vp9_blend_mb_outer_c
233
234 void vp9_blend_b_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
235 #define vp9_blend_b vp9_blend_b_c
236
237 void vp9_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
238 void vp9_convolve_copy_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
239 RTCD_EXTERN void (*vp9_convolve_copy)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
240
241 void vp9_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
242 void vp9_convolve_avg_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
243 RTCD_EXTERN void (*vp9_convolve_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
244
245 void vp9_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
246 void vp9_convolve8_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
247 RTCD_EXTERN void (*vp9_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
248
249 void vp9_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
250 void vp9_convolve8_horiz_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
251 RTCD_EXTERN void (*vp9_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
252
253 void vp9_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
254 void vp9_convolve8_vert_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
255 RTCD_EXTERN void (*vp9_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
256
257 void vp9_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
258 void vp9_convolve8_avg_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
259 RTCD_EXTERN void (*vp9_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
260
261 void vp9_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
262 void vp9_convolve8_avg_horiz_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
263 RTCD_EXTERN void (*vp9_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
264
265 void vp9_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
266 void vp9_convolve8_avg_vert_neon(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
267 RTCD_EXTERN void (*vp9_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
268
269 void vp9_idct4x4_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
270 void vp9_idct4x4_1_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
271 RTCD_EXTERN void (*vp9_idct4x4_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
272
273 void vp9_idct4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
274 void vp9_idct4x4_16_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
275 RTCD_EXTERN void (*vp9_idct4x4_16_add)(const int16_t *input, uint8_t *dest, int dest_stride);
276
277 void vp9_idct8x8_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
278 void vp9_idct8x8_1_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
279 RTCD_EXTERN void (*vp9_idct8x8_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
280
281 void vp9_idct8x8_64_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
282 void vp9_idct8x8_64_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
283 RTCD_EXTERN void (*vp9_idct8x8_64_add)(const int16_t *input, uint8_t *dest, int dest_stride);
284
285 void vp9_idct8x8_10_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
286 void vp9_idct8x8_10_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
287 RTCD_EXTERN void (*vp9_idct8x8_10_add)(const int16_t *input, uint8_t *dest, int dest_stride);
288
289 void vp9_idct16x16_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
290 void vp9_idct16x16_1_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
291 RTCD_EXTERN void (*vp9_idct16x16_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
292
293 void vp9_idct16x16_256_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
294 void vp9_idct16x16_256_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
295 RTCD_EXTERN void (*vp9_idct16x16_256_add)(const int16_t *input, uint8_t *dest, int dest_stride);
296
297 void vp9_idct16x16_10_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
298 void vp9_idct16x16_10_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
299 RTCD_EXTERN void (*vp9_idct16x16_10_add)(const int16_t *input, uint8_t *dest, int dest_stride);
300
301 void vp9_idct32x32_1024_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
302 void vp9_idct32x32_1024_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
303 RTCD_EXTERN void (*vp9_idct32x32_1024_add)(const int16_t *input, uint8_t *dest, int dest_stride);
304
305 void vp9_idct32x32_34_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
306 void vp9_idct32x32_1024_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
307 RTCD_EXTERN void (*vp9_idct32x32_34_add)(const int16_t *input, uint8_t *dest, int dest_stride);
308
309 void vp9_idct32x32_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
310 void vp9_idct32x32_1_add_neon(const int16_t *input, uint8_t *dest, int dest_stride);
311 RTCD_EXTERN void (*vp9_idct32x32_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
312
313 void vp9_iht4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
314 void vp9_iht4x4_16_add_neon(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
315 RTCD_EXTERN void (*vp9_iht4x4_16_add)(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
316
317 void vp9_iht8x8_64_add_c(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
318 void vp9_iht8x8_64_add_neon(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
319 RTCD_EXTERN void (*vp9_iht8x8_64_add)(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
320
321 void vp9_iht16x16_256_add_c(const int16_t *input, uint8_t *output, int pitch, int tx_type);
322 #define vp9_iht16x16_256_add vp9_iht16x16_256_add_c
323
324 void vp9_iwht4x4_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
325 #define vp9_iwht4x4_1_add vp9_iwht4x4_1_add_c
326
327 void vp9_iwht4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
328 #define vp9_iwht4x4_16_add vp9_iwht4x4_16_add_c
329
330 void vp9_rtcd(void);
331 #include "vpx_config.h"
332
333 #ifdef RTCD_C
334 #include "vpx_ports/arm.h"
335 static void setup_rtcd_internal(void)
336 {
337     int flags = arm_cpu_caps();
338
339     (void)flags;
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393     vp9_lpf_vertical_16 = vp9_lpf_vertical_16_c;
394     if (flags & HAS_NEON) vp9_lpf_vertical_16 = vp9_lpf_vertical_16_neon;
395
396     vp9_lpf_vertical_16_dual = vp9_lpf_vertical_16_dual_c;
397     if (flags & HAS_NEON) vp9_lpf_vertical_16_dual = vp9_lpf_vertical_16_dual_neon;
398
399     vp9_lpf_vertical_8 = vp9_lpf_vertical_8_c;
400     if (flags & HAS_NEON) vp9_lpf_vertical_8 = vp9_lpf_vertical_8_neon;
401
402     vp9_lpf_vertical_8_dual = vp9_lpf_vertical_8_dual_c;
403     if (flags & HAS_NEON) vp9_lpf_vertical_8_dual = vp9_lpf_vertical_8_dual_neon;
404
405     vp9_lpf_vertical_4 = vp9_lpf_vertical_4_c;
406     if (flags & HAS_NEON) vp9_lpf_vertical_4 = vp9_lpf_vertical_4_neon;
407
408     vp9_lpf_vertical_4_dual = vp9_lpf_vertical_4_dual_c;
409     if (flags & HAS_NEON) vp9_lpf_vertical_4_dual = vp9_lpf_vertical_4_dual_neon;
410
411     vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_c;
412     if (flags & HAS_NEON) vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_neon;
413
414     vp9_lpf_horizontal_8 = vp9_lpf_horizontal_8_c;
415     if (flags & HAS_NEON) vp9_lpf_horizontal_8 = vp9_lpf_horizontal_8_neon;
416
417     vp9_lpf_horizontal_8_dual = vp9_lpf_horizontal_8_dual_c;
418     if (flags & HAS_NEON) vp9_lpf_horizontal_8_dual = vp9_lpf_horizontal_8_dual_neon;
419
420     vp9_lpf_horizontal_4 = vp9_lpf_horizontal_4_c;
421     if (flags & HAS_NEON) vp9_lpf_horizontal_4 = vp9_lpf_horizontal_4_neon;
422
423     vp9_lpf_horizontal_4_dual = vp9_lpf_horizontal_4_dual_c;
424     if (flags & HAS_NEON) vp9_lpf_horizontal_4_dual = vp9_lpf_horizontal_4_dual_neon;
425
426
427
428
429     vp9_convolve_copy = vp9_convolve_copy_c;
430     if (flags & HAS_NEON) vp9_convolve_copy = vp9_convolve_copy_neon;
431
432     vp9_convolve_avg = vp9_convolve_avg_c;
433     if (flags & HAS_NEON) vp9_convolve_avg = vp9_convolve_avg_neon;
434
435     vp9_convolve8 = vp9_convolve8_c;
436     if (flags & HAS_NEON) vp9_convolve8 = vp9_convolve8_neon;
437
438     vp9_convolve8_horiz = vp9_convolve8_horiz_c;
439     if (flags & HAS_NEON) vp9_convolve8_horiz = vp9_convolve8_horiz_neon;
440
441     vp9_convolve8_vert = vp9_convolve8_vert_c;
442     if (flags & HAS_NEON) vp9_convolve8_vert = vp9_convolve8_vert_neon;
443
444     vp9_convolve8_avg = vp9_convolve8_avg_c;
445     if (flags & HAS_NEON) vp9_convolve8_avg = vp9_convolve8_avg_neon;
446
447     vp9_convolve8_avg_horiz = vp9_convolve8_avg_horiz_c;
448     if (flags & HAS_NEON) vp9_convolve8_avg_horiz = vp9_convolve8_avg_horiz_neon;
449
450     vp9_convolve8_avg_vert = vp9_convolve8_avg_vert_c;
451     if (flags & HAS_NEON) vp9_convolve8_avg_vert = vp9_convolve8_avg_vert_neon;
452
453     vp9_idct4x4_1_add = vp9_idct4x4_1_add_c;
454     if (flags & HAS_NEON) vp9_idct4x4_1_add = vp9_idct4x4_1_add_neon;
455
456     vp9_idct4x4_16_add = vp9_idct4x4_16_add_c;
457     if (flags & HAS_NEON) vp9_idct4x4_16_add = vp9_idct4x4_16_add_neon;
458
459     vp9_idct8x8_1_add = vp9_idct8x8_1_add_c;
460     if (flags & HAS_NEON) vp9_idct8x8_1_add = vp9_idct8x8_1_add_neon;
461
462     vp9_idct8x8_64_add = vp9_idct8x8_64_add_c;
463     if (flags & HAS_NEON) vp9_idct8x8_64_add = vp9_idct8x8_64_add_neon;
464
465     vp9_idct8x8_10_add = vp9_idct8x8_10_add_c;
466     if (flags & HAS_NEON) vp9_idct8x8_10_add = vp9_idct8x8_10_add_neon;
467
468     vp9_idct16x16_1_add = vp9_idct16x16_1_add_c;
469     if (flags & HAS_NEON) vp9_idct16x16_1_add = vp9_idct16x16_1_add_neon;
470
471     vp9_idct16x16_256_add = vp9_idct16x16_256_add_c;
472     if (flags & HAS_NEON) vp9_idct16x16_256_add = vp9_idct16x16_256_add_neon;
473
474     vp9_idct16x16_10_add = vp9_idct16x16_10_add_c;
475     if (flags & HAS_NEON) vp9_idct16x16_10_add = vp9_idct16x16_10_add_neon;
476
477     vp9_idct32x32_1024_add = vp9_idct32x32_1024_add_c;
478     if (flags & HAS_NEON) vp9_idct32x32_1024_add = vp9_idct32x32_1024_add_neon;
479
480     vp9_idct32x32_34_add = vp9_idct32x32_34_add_c;
481     if (flags & HAS_NEON) vp9_idct32x32_34_add = vp9_idct32x32_1024_add_neon;
482
483     vp9_idct32x32_1_add = vp9_idct32x32_1_add_c;
484     if (flags & HAS_NEON) vp9_idct32x32_1_add = vp9_idct32x32_1_add_neon;
485
486     vp9_iht4x4_16_add = vp9_iht4x4_16_add_c;
487     if (flags & HAS_NEON) vp9_iht4x4_16_add = vp9_iht4x4_16_add_neon;
488
489     vp9_iht8x8_64_add = vp9_iht8x8_64_add_c;
490     if (flags & HAS_NEON) vp9_iht8x8_64_add = vp9_iht8x8_64_add_neon;
491 }
492 #endif
493 #endif