FFmpeg
Loading...
Searching...
No Matches
h264qpel_lsx.c
Go to the documentation of this file.
1/*
2 * Loongson LSX optimized h264qpel
3 *
4 * Copyright (c) 2023 Loongson Technology Corporation Limited
5 * Contributed by Hecai Yuan <yuanhecai@loongson.cn>
6 *
7 * This file is part of FFmpeg.
8 *
9 * FFmpeg is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
13 *
14 * FFmpeg is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
18 *
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with FFmpeg; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23
24#include "h264qpel_loongarch.h"
27
28static void put_h264_qpel16_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src,
29 ptrdiff_t dstStride, ptrdiff_t srcStride)
30{
31 put_h264_qpel8_hv_lowpass_lsx(dst, src, dstStride, srcStride);
32 put_h264_qpel8_hv_lowpass_lsx(dst + 8, src + 8, dstStride, srcStride);
33 src += srcStride << 3;
34 dst += dstStride << 3;
35 put_h264_qpel8_hv_lowpass_lsx(dst, src, dstStride, srcStride);
36 put_h264_qpel8_hv_lowpass_lsx(dst + 8, src + 8, dstStride, srcStride);
37}
38
39void ff_put_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src,
40 ptrdiff_t stride)
41{
43}
44
45static void put_h264_qpel16_h_lowpass_lsx(uint8_t *dst, const uint8_t *src,
46 int dstStride, int srcStride)
47{
48 put_h264_qpel8_h_lowpass_lsx(dst, src, dstStride, srcStride);
49 put_h264_qpel8_h_lowpass_lsx(dst+8, src+8, dstStride, srcStride);
50 src += srcStride << 3;
51 dst += dstStride << 3;
52 put_h264_qpel8_h_lowpass_lsx(dst, src, dstStride, srcStride);
53 put_h264_qpel8_h_lowpass_lsx(dst+8, src+8, dstStride, srcStride);
54}
55
56static void put_h264_qpel16_v_lowpass_lsx(uint8_t *dst, const uint8_t *src,
57 int dstStride, int srcStride)
58{
59 put_h264_qpel8_v_lowpass_lsx(dst, (uint8_t*)src, dstStride, srcStride);
60 put_h264_qpel8_v_lowpass_lsx(dst+8, (uint8_t*)src+8, dstStride, srcStride);
61 src += 8*srcStride;
62 dst += 8*dstStride;
63 put_h264_qpel8_v_lowpass_lsx(dst, (uint8_t*)src, dstStride, srcStride);
64 put_h264_qpel8_v_lowpass_lsx(dst+8, (uint8_t*)src+8, dstStride, srcStride);
65}
66
67void ff_put_h264_qpel16_mc21_lsx(uint8_t *dst, const uint8_t *src,
68 ptrdiff_t stride)
69{
70 uint8_t temp[512];
71 uint8_t *const halfH = temp;
72 uint8_t *const halfHV = temp + 256;
73
76 put_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
77}
78
79void ff_put_h264_qpel16_mc12_lsx(uint8_t *dst, const uint8_t *src,
80 ptrdiff_t stride)
81{
82 uint8_t temp[512];
83 uint8_t *const halfHV = temp;
84 uint8_t *const halfH = temp + 256;
85
88 put_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
89}
90
91void ff_put_h264_qpel16_mc32_lsx(uint8_t *dst, const uint8_t *src,
92 ptrdiff_t stride)
93{
94 uint8_t temp[512];
95 uint8_t *const halfHV = temp;
96 uint8_t *const halfH = temp + 256;
97
100 put_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
101}
102
103void ff_put_h264_qpel16_mc23_lsx(uint8_t *dst, const uint8_t *src,
104 ptrdiff_t stride)
105{
106 uint8_t temp[512];
107 uint8_t *const halfH = temp;
108 uint8_t *const halfHV = temp + 256;
109
112 put_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
113}
114
115static void avg_h264_qpel16_v_lowpass_lsx(uint8_t *dst, const uint8_t *src,
116 int dstStride, int srcStride)
117{
118 avg_h264_qpel8_v_lowpass_lsx(dst, (uint8_t*)src, dstStride, srcStride);
119 avg_h264_qpel8_v_lowpass_lsx(dst+8, (uint8_t*)src+8, dstStride, srcStride);
120 src += 8*srcStride;
121 dst += 8*dstStride;
122 avg_h264_qpel8_v_lowpass_lsx(dst, (uint8_t*)src, dstStride, srcStride);
123 avg_h264_qpel8_v_lowpass_lsx(dst+8, (uint8_t*)src+8, dstStride, srcStride);
124}
125
126void ff_avg_h264_qpel16_mc02_lsx(uint8_t *dst, const uint8_t *src,
127 ptrdiff_t stride)
128{
130}
131
132void ff_avg_h264_qpel16_mc03_lsx(uint8_t *dst, const uint8_t *src,
133 ptrdiff_t stride)
134{
135 uint8_t half[256];
136
139}
140
141void ff_avg_h264_qpel16_mc23_lsx(uint8_t *dst, const uint8_t *src,
142 ptrdiff_t stride)
143{
144 uint8_t temp[512];
145 uint8_t *const halfH = temp;
146 uint8_t *const halfHV = temp + 256;
147
150 avg_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
151}
152
153void ff_avg_h264_qpel16_mc21_lsx(uint8_t *dst, const uint8_t *src,
154 ptrdiff_t stride)
155{
156 uint8_t temp[512];
157 uint8_t *const halfH = temp;
158 uint8_t *const halfHV = temp + 256;
159
162 avg_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
163}
164
165void ff_avg_h264_qpel16_mc01_lsx(uint8_t *dst, const uint8_t *src,
166 ptrdiff_t stride)
167{
168 uint8_t half[256];
169
172}
173
174void ff_avg_h264_qpel16_mc32_lsx(uint8_t *dst, const uint8_t *src,
175 ptrdiff_t stride)
176{
177 uint8_t temp[512];
178 uint8_t *const halfHV = temp;
179 uint8_t *const halfH = temp + 256;
180
183 avg_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
184}
185
186void ff_avg_h264_qpel16_mc12_lsx(uint8_t *dst, const uint8_t *src,
187 ptrdiff_t stride)
188{
189 uint8_t temp[512];
190 uint8_t *const halfHV = temp;
191 uint8_t *const halfH = temp + 256;
192
195 avg_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
196}
197
198static void avg_h264_qpel16_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src,
199 ptrdiff_t dstStride, ptrdiff_t srcStride)
200{
201 avg_h264_qpel8_hv_lowpass_lsx(dst, src, dstStride, srcStride);
202 avg_h264_qpel8_hv_lowpass_lsx(dst + 8, src + 8, dstStride, srcStride);
203 src += srcStride << 3;
204 dst += dstStride << 3;
205 avg_h264_qpel8_hv_lowpass_lsx(dst, src, dstStride, srcStride);
206 avg_h264_qpel8_hv_lowpass_lsx(dst + 8, src + 8, dstStride, srcStride);
207}
208
209void ff_avg_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src,
210 ptrdiff_t stride)
211{
213}
214
215void ff_put_h264_qpel8_mc03_lsx(uint8_t *dst, const uint8_t *src,
216 ptrdiff_t stride)
217{
218 uint8_t half[64];
219
222}
223
224void ff_put_h264_qpel8_mc01_lsx(uint8_t *dst, const uint8_t *src,
225 ptrdiff_t stride)
226{
227 uint8_t half[64];
228
231}
232
233void ff_put_h264_qpel8_mc30_lsx(uint8_t *dst, const uint8_t *src,
234 ptrdiff_t stride)
235{
236 uint8_t half[64];
237
240}
241
242void ff_put_h264_qpel8_mc10_lsx(uint8_t *dst, const uint8_t *src,
243 ptrdiff_t stride)
244{
245 uint8_t half[64];
246
249}
250
251void ff_put_h264_qpel8_mc33_lsx(uint8_t *dst, const uint8_t *src,
252 ptrdiff_t stride)
253{
254 uint8_t halfH[64];
255 uint8_t halfV[64];
256
258 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src + 1, 8, stride);
259 put_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
260}
261
262void ff_put_h264_qpel8_mc13_lsx(uint8_t *dst, const uint8_t *src,
263 ptrdiff_t stride)
264{
265 uint8_t halfH[64];
266 uint8_t halfV[64];
267
269 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src, 8, stride);
270 put_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
271}
272
273void ff_put_h264_qpel8_mc31_lsx(uint8_t *dst, const uint8_t *src,
274 ptrdiff_t stride)
275{
276 uint8_t halfH[64];
277 uint8_t halfV[64];
278
280 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src + 1, 8, stride);
281 put_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
282}
283
284void ff_put_h264_qpel8_mc11_lsx(uint8_t *dst, const uint8_t *src,
285 ptrdiff_t stride)
286{
287 uint8_t halfH[64];
288 uint8_t halfV[64];
289
291 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src, 8, stride);
292 put_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
293}
294
295void ff_put_h264_qpel8_mc32_lsx(uint8_t *dst, const uint8_t *src,
296 ptrdiff_t stride)
297{
298 uint8_t temp[128];
299 uint8_t *const halfHV = temp;
300 uint8_t *const halfH = temp + 64;
301
303 put_h264_qpel8_v_lowpass_lsx(halfH, (uint8_t*)src + 1, 8, stride);
304 put_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
305}
306
307void ff_put_h264_qpel8_mc21_lsx(uint8_t *dst, const uint8_t *src,
308 ptrdiff_t stride)
309{
310 uint8_t temp[128];
311 uint8_t *const halfH = temp;
312 uint8_t *const halfHV = temp + 64;
313
316 put_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
317}
318
319void ff_put_h264_qpel8_mc23_lsx(uint8_t *dst, const uint8_t *src,
320 ptrdiff_t stride)
321{
322 uint8_t temp[128];
323 uint8_t *const halfH = temp;
324 uint8_t *const halfHV = temp + 64;
325
328 put_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
329}
330
331void ff_put_h264_qpel8_mc12_lsx(uint8_t *dst, const uint8_t *src,
332 ptrdiff_t stride)
333{
334 uint8_t temp[128];
335 uint8_t *const halfHV = temp;
336 uint8_t *const halfH = temp + 64;
337
339 put_h264_qpel8_v_lowpass_lsx(halfH, (uint8_t*)src, 8, stride);
340 put_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
341}
342
343void ff_put_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src,
344 ptrdiff_t stride)
345{
347}
348
349void ff_put_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src,
350 ptrdiff_t stride)
351{
353}
354
355void ff_put_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src,
356 ptrdiff_t stride)
357{
359}
360
361void ff_avg_h264_qpel8_mc10_lsx(uint8_t *dst, const uint8_t *src,
362 ptrdiff_t stride)
363{
364 uint8_t half[64];
365
368}
369
370void ff_avg_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src,
371 ptrdiff_t stride)
372{
374}
375
376void ff_avg_h264_qpel8_mc30_lsx(uint8_t *dst, const uint8_t *src,
377 ptrdiff_t stride)
378{
379 uint8_t half[64];
380
383}
384
385void ff_avg_h264_qpel8_mc11_lsx(uint8_t *dst, const uint8_t *src,
386 ptrdiff_t stride)
387{
388 uint8_t halfH[64];
389 uint8_t halfV[64];
390
392 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src, 8, stride);
393 avg_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
394}
395
396void ff_avg_h264_qpel8_mc21_lsx(uint8_t *dst, const uint8_t *src,
397 ptrdiff_t stride)
398{
399 uint8_t temp[128];
400 uint8_t *const halfH = temp;
401 uint8_t *const halfHV = temp + 64;
402
405 avg_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
406}
407
408void ff_avg_h264_qpel8_mc31_lsx(uint8_t *dst, const uint8_t *src,
409 ptrdiff_t stride)
410{
411 uint8_t halfH[64];
412 uint8_t halfV[64];
413
415 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src + 1, 8, stride);
416 avg_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
417}
418
419void ff_avg_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src,
420 ptrdiff_t stride)
421{
423}
424
425void ff_avg_h264_qpel8_mc12_lsx(uint8_t *dst, const uint8_t *src,
426 ptrdiff_t stride)
427{
428 uint8_t temp[128];
429 uint8_t *const halfHV = temp;
430 uint8_t *const halfH = temp + 64;
431
433 put_h264_qpel8_v_lowpass_lsx(halfH, (uint8_t*)src, 8, stride);
434 avg_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
435}
436
437void ff_avg_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src,
438 ptrdiff_t stride)
439{
441}
442
443void ff_avg_h264_qpel8_mc32_lsx(uint8_t *dst, const uint8_t *src,
444 ptrdiff_t stride)
445{
446 uint8_t temp[128];
447 uint8_t *const halfHV = temp;
448 uint8_t *const halfH = temp + 64;
449
451 put_h264_qpel8_v_lowpass_lsx(halfH, (uint8_t*)src + 1, 8, stride);
452 avg_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
453}
454
455void ff_avg_h264_qpel8_mc13_lsx(uint8_t *dst, const uint8_t *src,
456 ptrdiff_t stride)
457{
458 uint8_t halfH[64];
459 uint8_t halfV[64];
460
462 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src, 8, stride);
463 avg_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
464}
465
466void ff_avg_h264_qpel8_mc23_lsx(uint8_t *dst, const uint8_t *src,
467 ptrdiff_t stride)
468{
469 uint8_t temp[128];
470 uint8_t *const halfH = temp;
471 uint8_t *const halfHV = temp + 64;
472
475 avg_pixels8_l2_8_lsx(dst, halfH, halfHV, stride, 8);
476}
477
478void ff_avg_h264_qpel8_mc33_lsx(uint8_t *dst, const uint8_t *src,
479 ptrdiff_t stride)
480{
481 uint8_t halfH[64];
482 uint8_t halfV[64];
483
485 put_h264_qpel8_v_lowpass_lsx(halfV, (uint8_t*)src + 1, 8, stride);
486 avg_pixels8_l2_8_lsx(dst, halfH, halfV, stride, 8);
487}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
void put_pixels16_l2_8_lsx(uint8_t *dst, const uint8_t *src, uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
void avg_pixels8_l2_8_lsx(uint8_t *dst, const uint8_t *src, const uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
void put_h264_qpel8_v_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
void put_h264_qpel8_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
void avg_h264_qpel8_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
void put_h264_qpel8_h_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
void avg_h264_qpel8_h_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void avg_h264_qpel8_v_lowpass_lsx(uint8_t *dst, uint8_t *src, int dstStride, int srcStride)
void avg_pixels16_l2_8_lsx(uint8_t *dst, const uint8_t *src, uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
void put_pixels8_l2_8_lsx(uint8_t *dst, const uint8_t *src, const uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
void ff_put_h264_qpel8_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc30_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc11_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel16_v_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_put_h264_qpel16_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel16_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
void ff_put_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc10_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc11_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc13_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc10_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc02_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc31_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc13_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void put_h264_qpel16_h_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel16_mc01_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc33_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc31_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel16_mc03_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc30_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_avg_h264_qpel8_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc03_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel16_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
void ff_put_h264_qpel8_mc01_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static void avg_h264_qpel16_v_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
void ff_avg_h264_qpel16_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel16_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void ff_put_h264_qpel8_mc33_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Macro definitions for various function/variable attributes.
static uint8_t half(int a, int b)
Definition mobiclip.c:540
#define stride
#define src
Definition vp8dsp.c:248
else temp
Definition vf_mcdeint.c:275