FFmpeg
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"
26 #include "libavutil/attributes.h"
27 
28 static 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 
39 void ff_put_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src,
40  ptrdiff_t stride)
41 {
43 }
44 
45 static 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 
56 static 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 
67 void 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 
79 void 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 
91 void 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 
99  put_h264_qpel16_v_lowpass_lsx(halfH, src + 1, 16, stride);
100  put_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
101 }
102 
103 void 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 
115 static 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 
126 void ff_avg_h264_qpel16_mc02_lsx(uint8_t *dst, const uint8_t *src,
127  ptrdiff_t stride)
128 {
130 }
131 
132 void 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 
141 void 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 
153 void 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 
165 void 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 
174 void 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 
182  put_h264_qpel16_v_lowpass_lsx(halfH, src + 1, 16, stride);
183  avg_pixels16_l2_8_lsx(dst, halfH, halfHV, stride, 16);
184 }
185 
186 void 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 
198 static 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 
209 void ff_avg_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src,
210  ptrdiff_t stride)
211 {
213 }
214 
215 void 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 
224 void 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 
233 void 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 
242 void 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 
251 void 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 
262 void 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 
273 void 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 
284 void 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 
295 void 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 
307 void 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 
319 void 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 
331 void 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 
343 void ff_put_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src,
344  ptrdiff_t stride)
345 {
346  put_h264_qpel8_v_lowpass_lsx(dst, (uint8_t*)src, stride, stride);
347 }
348 
349 void ff_put_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src,
350  ptrdiff_t stride)
351 {
353 }
354 
355 void ff_put_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src,
356  ptrdiff_t stride)
357 {
359 }
360 
361 void 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 
370 void ff_avg_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src,
371  ptrdiff_t stride)
372 {
374 }
375 
376 void 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 
385 void 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 
396 void 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 
408 void 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 
419 void ff_avg_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src,
420  ptrdiff_t stride)
421 {
422  avg_h264_qpel8_v_lowpass_lsx(dst, (uint8_t*)src, stride, stride);
423 }
424 
425 void 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 
437 void ff_avg_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src,
438  ptrdiff_t stride)
439 {
441 }
442 
443 void 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 
455 void 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 
466 void 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 
478 void 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 }
ff_avg_h264_qpel8_mc13_lsx
void ff_avg_h264_qpel8_mc13_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:455
ff_put_h264_qpel8_mc33_lsx
void ff_put_h264_qpel8_mc33_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:251
ff_avg_h264_qpel8_mc31_lsx
void ff_avg_h264_qpel8_mc31_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:408
put_pixels8_l2_8_lsx
void put_pixels8_l2_8_lsx(uint8_t *dst, const uint8_t *src, const uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
ff_put_h264_qpel8_mc03_lsx
void ff_put_h264_qpel8_mc03_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:215
h264qpel_loongarch.h
ff_put_h264_qpel8_mc02_lsx
void ff_put_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:343
avg_h264_qpel16_v_lowpass_lsx
static void avg_h264_qpel16_v_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
Definition: h264qpel_lsx.c:115
ff_put_h264_qpel16_mc22_lsx
void ff_put_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:39
half
static uint8_t half(int a, int b)
Definition: mobiclip.c:539
avg_pixels16_l2_8_lsx
void avg_pixels16_l2_8_lsx(uint8_t *dst, const uint8_t *src, uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
ff_put_h264_qpel8_mc31_lsx
void ff_put_h264_qpel8_mc31_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:273
ff_put_h264_qpel8_mc11_lsx
void ff_put_h264_qpel8_mc11_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:284
put_pixels16_l2_8_lsx
void put_pixels16_l2_8_lsx(uint8_t *dst, const uint8_t *src, uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
avg_pixels8_l2_8_lsx
void avg_pixels8_l2_8_lsx(uint8_t *dst, const uint8_t *src, const uint8_t *half, ptrdiff_t dstStride, ptrdiff_t srcStride)
ff_put_h264_qpel8_mc21_lsx
void ff_put_h264_qpel8_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:307
avg_h264_qpel8_v_lowpass_lsx
void avg_h264_qpel8_v_lowpass_lsx(uint8_t *dst, uint8_t *src, int dstStride, int srcStride)
ff_avg_h264_qpel16_mc21_lsx
void ff_avg_h264_qpel16_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:153
ff_avg_h264_qpel16_mc32_lsx
void ff_avg_h264_qpel16_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:174
avg_h264_qpel16_hv_lowpass_lsx
static void avg_h264_qpel16_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
Definition: h264qpel_lsx.c:198
ff_put_h264_qpel8_mc12_lsx
void ff_put_h264_qpel8_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:331
ff_put_h264_qpel8_mc20_lsx
void ff_put_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:355
ff_avg_h264_qpel8_mc21_lsx
void ff_avg_h264_qpel8_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:396
put_h264_qpel16_v_lowpass_lsx
static void put_h264_qpel16_v_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
Definition: h264qpel_lsx.c:56
ff_put_h264_qpel8_mc23_lsx
void ff_put_h264_qpel8_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:319
ff_put_h264_qpel16_mc21_lsx
void ff_put_h264_qpel16_mc21_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:67
ff_avg_h264_qpel8_mc20_lsx
void ff_avg_h264_qpel8_mc20_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:370
ff_avg_h264_qpel8_mc30_lsx
void ff_avg_h264_qpel8_mc30_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:376
put_h264_qpel16_hv_lowpass_lsx
static void put_h264_qpel16_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
Definition: h264qpel_lsx.c:28
put_h264_qpel8_v_lowpass_lsx
void put_h264_qpel8_v_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
ff_avg_h264_qpel16_mc02_lsx
void ff_avg_h264_qpel16_mc02_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:126
ff_put_h264_qpel8_mc01_lsx
void ff_put_h264_qpel8_mc01_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:224
ff_avg_h264_qpel8_mc10_lsx
void ff_avg_h264_qpel8_mc10_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:361
ff_avg_h264_qpel16_mc23_lsx
void ff_avg_h264_qpel16_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:141
attributes.h
ff_put_h264_qpel16_mc32_lsx
void ff_put_h264_qpel16_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:91
ff_put_h264_qpel8_mc32_lsx
void ff_put_h264_qpel8_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:295
ff_avg_h264_qpel8_mc11_lsx
void ff_avg_h264_qpel8_mc11_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:385
ff_put_h264_qpel16_mc12_lsx
void ff_put_h264_qpel16_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:79
ff_avg_h264_qpel16_mc12_lsx
void ff_avg_h264_qpel16_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:186
ff_avg_h264_qpel8_mc33_lsx
void ff_avg_h264_qpel8_mc33_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:478
avg_h264_qpel8_h_lowpass_lsx
void avg_h264_qpel8_h_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
ff_avg_h264_qpel8_mc23_lsx
void ff_avg_h264_qpel8_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:466
stride
#define stride
Definition: h264pred_template.c:537
ff_put_h264_qpel8_mc30_lsx
void ff_put_h264_qpel8_mc30_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:233
ff_put_h264_qpel16_mc23_lsx
void ff_put_h264_qpel16_mc23_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:103
put_h264_qpel8_hv_lowpass_lsx
void put_h264_qpel8_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
put_h264_qpel8_h_lowpass_lsx
void put_h264_qpel8_h_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
ff_avg_h264_qpel16_mc03_lsx
void ff_avg_h264_qpel16_mc03_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:132
ff_avg_h264_qpel8_mc32_lsx
void ff_avg_h264_qpel8_mc32_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:443
ff_put_h264_qpel8_mc22_lsx
void ff_put_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:349
temp
else temp
Definition: vf_mcdeint.c:263
ff_avg_h264_qpel8_mc22_lsx
void ff_avg_h264_qpel8_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:437
ff_avg_h264_qpel8_mc12_lsx
void ff_avg_h264_qpel8_mc12_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:425
loongson_intrinsics.h
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
ff_avg_h264_qpel16_mc01_lsx
void ff_avg_h264_qpel16_mc01_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:165
avg_h264_qpel8_hv_lowpass_lsx
void avg_h264_qpel8_hv_lowpass_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t dstStride, ptrdiff_t srcStride)
ff_avg_h264_qpel8_mc02_lsx
void ff_avg_h264_qpel8_mc02_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:419
ff_avg_h264_qpel16_mc22_lsx
void ff_avg_h264_qpel16_mc22_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:209
ff_put_h264_qpel8_mc13_lsx
void ff_put_h264_qpel8_mc13_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:262
put_h264_qpel16_h_lowpass_lsx
static void put_h264_qpel16_h_lowpass_lsx(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride)
Definition: h264qpel_lsx.c:45
ff_put_h264_qpel8_mc10_lsx
void ff_put_h264_qpel8_mc10_lsx(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
Definition: h264qpel_lsx.c:242