1 /*
2 * Copyright (C) 2024 Zhao Zhili
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 #ifndef AVCODEC_AARCH64_H26X_DSP_H
22 #define AVCODEC_AARCH64_H26X_DSP_H
23
24 #include <stddef.h>
25 #include <stdint.h>
26
28 ptrdiff_t stride_dst, ptrdiff_t stride_src,
29 const int16_t *sao_offset_val, int sao_left_class,
32 ptrdiff_t stride_dst, ptrdiff_t stride_src,
33 const int16_t *sao_offset_val, int sao_left_class,
36 const int16_t *sao_offset_val,
int eo,
int width,
int height);
38 const int16_t *sao_offset_val,
int eo,
int width,
int height);
39
41 const int16_t *sao_offset_val,
int eo,
int width,
int height);
43 const int16_t *sao_offset_val,
int eo,
int width,
int height);
44
45 #define NEON8_FNPROTO_PARTIAL_6(fn, args, ext) \
46 void ff_hevc_put_hevc_##fn##_h4_8_neon##ext args; \
47 void ff_hevc_put_hevc_##fn##_h6_8_neon##ext args; \
48 void ff_hevc_put_hevc_##fn##_h8_8_neon##ext args; \
49 void ff_hevc_put_hevc_##fn##_h12_8_neon##ext args; \
50 void ff_hevc_put_hevc_##fn##_h16_8_neon##ext args; \
51 void ff_hevc_put_hevc_##fn##_h32_8_neon##ext args;
52
55
58
62
63 #define NEON8_FNPROTO(fn, args, ext) \
64 void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \
65 void ff_hevc_put_hevc_##fn##6_8_neon##ext args; \
66 void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \
67 void ff_hevc_put_hevc_##fn##12_8_neon##ext args; \
68 void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \
69 void ff_hevc_put_hevc_##fn##24_8_neon##ext args; \
70 void ff_hevc_put_hevc_##fn##32_8_neon##ext args; \
71 void ff_hevc_put_hevc_##fn##48_8_neon##ext args; \
72 void ff_hevc_put_hevc_##fn##64_8_neon##ext args
73
74 #define NEON8_FNPROTO_PARTIAL_4(fn, args, ext) \
75 void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \
76 void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \
77 void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \
78 void ff_hevc_put_hevc_##fn##64_8_neon##ext args
79
80 #define NEON8_FNPROTO_PARTIAL_5(fn, args, ext) \
81 void ff_hevc_put_hevc_##fn##4_8_neon##ext args; \
82 void ff_hevc_put_hevc_##fn##8_8_neon##ext args; \
83 void ff_hevc_put_hevc_##fn##16_8_neon##ext args; \
84 void ff_hevc_put_hevc_##fn##32_8_neon##ext args; \
85 void ff_hevc_put_hevc_##fn##64_8_neon##ext args
86
90
94
97 int height,
int denom,
int wx0,
int wx1,
98 int ox0,
int ox1, intptr_t
mx, intptr_t
my,
int width),);
99
103
107
111
115
119
123
126 int height,
int denom,
int wx,
int ox,
128
132
136
140
143 int height,
int denom,
int wx,
int ox,
145
148 int height,
int denom,
int wx,
int ox,
150
154
158
162
166
169 int height,
int denom,
int wx,
int ox,
171
174 int height,
int denom,
int wx,
int ox,
175 intptr_t
mx, intptr_t
my,
int width), _i8mm);
176
180
184
188
192
196
200
204
207 int height,
int denom,
int wx,
int ox,
209
212 int height,
int denom,
int wx,
int ox,
213 intptr_t
mx, intptr_t
my,
int width), _i8mm);
214
217 int height,
int denom,
int wx,
int ox,
219
222 int height,
int denom,
int wx,
int ox,
223 intptr_t
mx, intptr_t
my,
int width), _i8mm);
224
227 int height,
int denom,
int wx,
int ox,
229
232 int height,
int denom,
int wx,
int ox,
233 intptr_t
mx, intptr_t
my,
int width), _i8mm);
234
238
242
246
247 #undef NEON8_FNPROTO_PARTIAL_4
248 #define NEON8_FNPROTO_PARTIAL_4(fn, args, ext) \
249 void ff_vvc_put_##fn##_h4_8_neon##ext args; \
250 void ff_vvc_put_##fn##_h8_8_neon##ext args; \
251 void ff_vvc_put_##fn##_h16_8_neon##ext args; \
252 void ff_vvc_put_##fn##_h32_8_neon##ext args;
253
255 const int8_t *
hf,
const int8_t *
vf,
int width),)
256
259
261 const int8_t *
hf, const int8_t *
vf,
int width),)
262
263 #undef NEON8_FNPROTO_PARTIAL_6
264 #define NEON8_FNPROTO_PARTIAL_6(fn, args, ext) \
265 void ff_vvc_put_##fn##4_8_neon##ext args; \
266 void ff_vvc_put_##fn##8_8_neon##ext args; \
267 void ff_vvc_put_##fn##16_8_neon##ext args; \
268 void ff_vvc_put_##fn##32_8_neon##ext args; \
269 void ff_vvc_put_##fn##64_8_neon##ext args; \
270 void ff_vvc_put_##fn##128_8_neon##ext args
271
274 const int8_t *
hf,
const int8_t *
vf,
int width),);
275
278 const int8_t *
hf,
const int8_t *
vf,
int width),);
279
282 int height,
int denom,
int wx,
int ox,
283 const int8_t *
hf,
const int8_t *
vf,
int width),);
284
287 const int8_t *
hf,
const int8_t *
vf,
int width), _i8mm);
288
291 const int8_t *
hf,
const int8_t *
vf,
int width), _i8mm);
292
295 const int8_t *
hf,
const int8_t *
vf,
int width);
296
299 const int8_t *
hf,
const int8_t *
vf,
int width);
300
303 const int8_t *
hf,
const int8_t *
vf,
int width),);
304
307 const int8_t *
hf,
const int8_t *
vf,
int width), _i8mm);
308
311 const int8_t *
hf,
const int8_t *
vf,
int width),);
312
315 const int8_t *
hf,
const int8_t *
vf,
int width), _i8mm);
316
317 #endif