webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
row.h
Go to the documentation of this file.
1 /*
2  * Copyright 2011 The LibYuv Project Authors. All rights reserved.
3  *
4  * Use of this source code is governed by a BSD-style license
5  * that can be found in the LICENSE file in the root of the source
6  * tree. An additional intellectual property rights grant can be found
7  * in the file PATENTS. All contributing project authors may
8  * be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef INCLUDE_LIBYUV_ROW_H_
12 #define INCLUDE_LIBYUV_ROW_H_
13 
14 #include <stdlib.h> // For malloc.
15 
16 #include "libyuv/basic_types.h"
17 
18 #ifdef __cplusplus
19 namespace libyuv {
20 extern "C" {
21 #endif
22 
23 #define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a) - 1)))
24 
25 #define align_buffer_64(var, size) \
26  uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \
27  uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */
28 
29 #define free_aligned_buffer_64(var) \
30  free(var##_mem); \
31  var = 0
32 
33 #if defined(__pnacl__) || defined(__CLR_VER) || \
34  (defined(__i386__) && !defined(__SSE2__))
35 #define LIBYUV_DISABLE_X86
36 #endif
37 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505
38 #if defined(__has_feature)
39 #if __has_feature(memory_sanitizer)
40 #define LIBYUV_DISABLE_X86
41 #endif
42 #endif
43 // True if compiling for SSSE3 as a requirement.
44 #if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3))
45 #define LIBYUV_SSSE3_ONLY
46 #endif
47 
48 #if defined(__native_client__)
49 #define LIBYUV_DISABLE_NEON
50 #endif
51 // clang >= 3.5.0 required for Arm64.
52 #if defined(__clang__) && defined(__aarch64__) && !defined(LIBYUV_DISABLE_NEON)
53 #if (__clang_major__ < 3) || (__clang_major__ == 3 && (__clang_minor__ < 5))
54 #define LIBYUV_DISABLE_NEON
55 #endif // clang >= 3.5
56 #endif // __clang__
57 
58 // GCC >= 4.7.0 required for AVX2.
59 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
60 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
61 #define GCC_HAS_AVX2 1
62 #endif // GNUC >= 4.7
63 #endif // __GNUC__
64 
65 // clang >= 3.4.0 required for AVX2.
66 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
67 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4))
68 #define CLANG_HAS_AVX2 1
69 #endif // clang >= 3.4
70 #endif // __clang__
71 
72 // Visual C 2012 required for AVX2.
73 #if defined(_M_IX86) && !defined(__clang__) && \
74  defined(_MSC_VER) && _MSC_VER >= 1700
75 #define VISUALC_HAS_AVX2 1
76 #endif // VisualStudio >= 2012
77 
78 // The following are available on all x86 platforms:
79 #if !defined(LIBYUV_DISABLE_X86) && \
80  (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__))
81 // Conversions:
82 #define HAS_ABGRTOUVROW_SSSE3
83 #define HAS_ABGRTOYROW_SSSE3
84 #define HAS_ARGB1555TOARGBROW_SSE2
85 #define HAS_ARGB4444TOARGBROW_SSE2
86 #define HAS_ARGBEXTRACTALPHAROW_SSE2
87 #define HAS_ARGBSETROW_X86
88 #define HAS_ARGBSHUFFLEROW_SSE2
89 #define HAS_ARGBSHUFFLEROW_SSSE3
90 #define HAS_ARGBTOARGB1555ROW_SSE2
91 #define HAS_ARGBTOARGB4444ROW_SSE2
92 #define HAS_ARGBTORAWROW_SSSE3
93 #define HAS_ARGBTORGB24ROW_SSSE3
94 #define HAS_ARGBTORGB565DITHERROW_SSE2
95 #define HAS_ARGBTORGB565ROW_SSE2
96 #define HAS_ARGBTOUV444ROW_SSSE3
97 #define HAS_ARGBTOUVJROW_SSSE3
98 #define HAS_ARGBTOUVROW_SSSE3
99 #define HAS_ARGBTOYJROW_SSSE3
100 #define HAS_ARGBTOYROW_SSSE3
101 #define HAS_BGRATOUVROW_SSSE3
102 #define HAS_BGRATOYROW_SSSE3
103 #define HAS_COPYROW_ERMS
104 #define HAS_COPYROW_SSE2
105 #define HAS_H422TOARGBROW_SSSE3
106 #define HAS_HALFFLOATROW_SSE2
107 #define HAS_I400TOARGBROW_SSE2
108 #define HAS_I422TOARGB1555ROW_SSSE3
109 #define HAS_I422TOARGB4444ROW_SSSE3
110 #define HAS_I422TOARGBROW_SSSE3
111 #define HAS_I422TORGB24ROW_SSSE3
112 #define HAS_I422TORGB565ROW_SSSE3
113 #define HAS_I422TORGBAROW_SSSE3
114 #define HAS_I422TOUYVYROW_SSE2
115 #define HAS_I422TOYUY2ROW_SSE2
116 #define HAS_I444TOARGBROW_SSSE3
117 #define HAS_J400TOARGBROW_SSE2
118 #define HAS_J422TOARGBROW_SSSE3
119 #define HAS_MERGEUVROW_SSE2
120 #define HAS_MIRRORROW_SSSE3
121 #define HAS_MIRRORUVROW_SSSE3
122 #define HAS_NV12TOARGBROW_SSSE3
123 #define HAS_NV12TORGB565ROW_SSSE3
124 #define HAS_NV21TOARGBROW_SSSE3
125 #define HAS_RAWTOARGBROW_SSSE3
126 #define HAS_RAWTORGB24ROW_SSSE3
127 #define HAS_RAWTOYROW_SSSE3
128 #define HAS_RGB24TOARGBROW_SSSE3
129 #define HAS_RGB24TOYROW_SSSE3
130 #define HAS_RGB565TOARGBROW_SSE2
131 #define HAS_RGBATOUVROW_SSSE3
132 #define HAS_RGBATOYROW_SSSE3
133 #define HAS_SETROW_ERMS
134 #define HAS_SETROW_X86
135 #define HAS_SPLITUVROW_SSE2
136 #define HAS_UYVYTOARGBROW_SSSE3
137 #define HAS_UYVYTOUV422ROW_SSE2
138 #define HAS_UYVYTOUVROW_SSE2
139 #define HAS_UYVYTOYROW_SSE2
140 #define HAS_YUY2TOARGBROW_SSSE3
141 #define HAS_YUY2TOUV422ROW_SSE2
142 #define HAS_YUY2TOUVROW_SSE2
143 #define HAS_YUY2TOYROW_SSE2
144 
145 // Effects:
146 #define HAS_ARGBADDROW_SSE2
147 #define HAS_ARGBAFFINEROW_SSE2
148 #define HAS_ARGBATTENUATEROW_SSSE3
149 #define HAS_ARGBBLENDROW_SSSE3
150 #define HAS_ARGBCOLORMATRIXROW_SSSE3
151 #define HAS_ARGBCOLORTABLEROW_X86
152 #define HAS_ARGBCOPYALPHAROW_SSE2
153 #define HAS_ARGBCOPYYTOALPHAROW_SSE2
154 #define HAS_ARGBGRAYROW_SSSE3
155 #define HAS_ARGBLUMACOLORTABLEROW_SSSE3
156 #define HAS_ARGBMIRRORROW_SSE2
157 #define HAS_ARGBMULTIPLYROW_SSE2
158 #define HAS_ARGBPOLYNOMIALROW_SSE2
159 #define HAS_ARGBQUANTIZEROW_SSE2
160 #define HAS_ARGBSEPIAROW_SSSE3
161 #define HAS_ARGBSHADEROW_SSE2
162 #define HAS_ARGBSUBTRACTROW_SSE2
163 #define HAS_ARGBUNATTENUATEROW_SSE2
164 #define HAS_BLENDPLANEROW_SSSE3
165 #define HAS_COMPUTECUMULATIVESUMROW_SSE2
166 #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
167 #define HAS_INTERPOLATEROW_SSSE3
168 #define HAS_RGBCOLORTABLEROW_X86
169 #define HAS_SOBELROW_SSE2
170 #define HAS_SOBELTOPLANEROW_SSE2
171 #define HAS_SOBELXROW_SSE2
172 #define HAS_SOBELXYROW_SSE2
173 #define HAS_SOBELYROW_SSE2
174 
175 // The following functions fail on gcc/clang 32 bit with fpic and framepointer.
176 // caveat: clangcl uses row_win.cc which works.
177 #if defined(NDEBUG) || !(defined(_DEBUG) && defined(__i386__)) || \
178  !defined(__i386__) || defined(_MSC_VER)
179 // TODO(fbarchard): fix build error on android_full_debug=1
180 // https://code.google.com/p/libyuv/issues/detail?id=517
181 #define HAS_I422ALPHATOARGBROW_SSSE3
182 #endif
183 #endif
184 
185 // The following are available on all x86 platforms, but
186 // require VS2012, clang 3.4 or gcc 4.7.
187 // The code supports NaCL but requires a new compiler and validator.
188 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \
189  defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2))
190 #define HAS_ARGBCOPYALPHAROW_AVX2
191 #define HAS_ARGBCOPYYTOALPHAROW_AVX2
192 #define HAS_ARGBEXTRACTALPHAROW_AVX2
193 #define HAS_ARGBMIRRORROW_AVX2
194 #define HAS_ARGBPOLYNOMIALROW_AVX2
195 #define HAS_ARGBSHUFFLEROW_AVX2
196 #define HAS_ARGBTORGB565DITHERROW_AVX2
197 #define HAS_ARGBTOUVJROW_AVX2
198 #define HAS_ARGBTOUVROW_AVX2
199 #define HAS_ARGBTOYJROW_AVX2
200 #define HAS_ARGBTOYROW_AVX2
201 #define HAS_COPYROW_AVX
202 #define HAS_H422TOARGBROW_AVX2
203 #define HAS_HALFFLOATROW_AVX2
204 // #define HAS_HALFFLOATROW_F16C // Enable to test halffloat cast
205 #define HAS_I400TOARGBROW_AVX2
206 #define HAS_I422TOARGB1555ROW_AVX2
207 #define HAS_I422TOARGB4444ROW_AVX2
208 #define HAS_I422TOARGBROW_AVX2
209 #define HAS_I422TORGB24ROW_AVX2
210 #define HAS_I422TORGB565ROW_AVX2
211 #define HAS_I422TORGBAROW_AVX2
212 #define HAS_I444TOARGBROW_AVX2
213 #define HAS_INTERPOLATEROW_AVX2
214 #define HAS_J422TOARGBROW_AVX2
215 #define HAS_MERGEUVROW_AVX2
216 #define HAS_MIRRORROW_AVX2
217 #define HAS_NV12TOARGBROW_AVX2
218 #define HAS_NV12TORGB565ROW_AVX2
219 #define HAS_NV21TOARGBROW_AVX2
220 #define HAS_SPLITUVROW_AVX2
221 #define HAS_UYVYTOARGBROW_AVX2
222 #define HAS_UYVYTOUV422ROW_AVX2
223 #define HAS_UYVYTOUVROW_AVX2
224 #define HAS_UYVYTOYROW_AVX2
225 #define HAS_YUY2TOARGBROW_AVX2
226 #define HAS_YUY2TOUV422ROW_AVX2
227 #define HAS_YUY2TOUVROW_AVX2
228 #define HAS_YUY2TOYROW_AVX2
229 
230 // Effects:
231 #define HAS_ARGBADDROW_AVX2
232 #define HAS_ARGBATTENUATEROW_AVX2
233 #define HAS_ARGBMULTIPLYROW_AVX2
234 #define HAS_ARGBSUBTRACTROW_AVX2
235 #define HAS_ARGBUNATTENUATEROW_AVX2
236 #define HAS_BLENDPLANEROW_AVX2
237 
238 #if !(defined(_DEBUG) && defined(__i386__))
239 // TODO(fbarchard): fix build error on android_full_debug=1
240 // https://code.google.com/p/libyuv/issues/detail?id=517
241 #define HAS_I422ALPHATOARGBROW_AVX2
242 #endif
243 #endif
244 
245 // The following are available for AVX2 Visual C and clangcl 32 bit:
246 // TODO(fbarchard): Port to gcc.
247 #if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && \
248  (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2))
249 #define HAS_ARGB1555TOARGBROW_AVX2
250 #define HAS_ARGB4444TOARGBROW_AVX2
251 #define HAS_ARGBTOARGB1555ROW_AVX2
252 #define HAS_ARGBTOARGB4444ROW_AVX2
253 #define HAS_ARGBTORGB565ROW_AVX2
254 #define HAS_J400TOARGBROW_AVX2
255 #define HAS_RGB565TOARGBROW_AVX2
256 #endif
257 
258 // The following are also available on x64 Visual C.
259 #if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_X64) && \
260  (!defined(__clang__) || defined(__SSSE3__))
261 #define HAS_I422ALPHATOARGBROW_SSSE3
262 #define HAS_I422TOARGBROW_SSSE3
263 #endif
264 
265 // The following are available on Neon platforms:
266 #if !defined(LIBYUV_DISABLE_NEON) && \
267  (defined(__aarch64__) || defined(__ARM_NEON__) || defined(LIBYUV_NEON))
268 #define HAS_ABGRTOUVROW_NEON
269 #define HAS_ABGRTOYROW_NEON
270 #define HAS_ARGB1555TOARGBROW_NEON
271 #define HAS_ARGB1555TOUVROW_NEON
272 #define HAS_ARGB1555TOYROW_NEON
273 #define HAS_ARGB4444TOARGBROW_NEON
274 #define HAS_ARGB4444TOUVROW_NEON
275 #define HAS_ARGB4444TOYROW_NEON
276 #define HAS_ARGBEXTRACTALPHAROW_NEON
277 #define HAS_ARGBSETROW_NEON
278 #define HAS_ARGBTOARGB1555ROW_NEON
279 #define HAS_ARGBTOARGB4444ROW_NEON
280 #define HAS_ARGBTORAWROW_NEON
281 #define HAS_ARGBTORGB24ROW_NEON
282 #define HAS_ARGBTORGB565DITHERROW_NEON
283 #define HAS_ARGBTORGB565ROW_NEON
284 #define HAS_ARGBTOUV444ROW_NEON
285 #define HAS_ARGBTOUVJROW_NEON
286 #define HAS_ARGBTOUVROW_NEON
287 #define HAS_ARGBTOYJROW_NEON
288 #define HAS_ARGBTOYROW_NEON
289 #define HAS_BGRATOUVROW_NEON
290 #define HAS_BGRATOYROW_NEON
291 #define HAS_COPYROW_NEON
292 #define HAS_I400TOARGBROW_NEON
293 #define HAS_I422ALPHATOARGBROW_NEON
294 #define HAS_I422TOARGB1555ROW_NEON
295 #define HAS_I422TOARGB4444ROW_NEON
296 #define HAS_I422TOARGBROW_NEON
297 #define HAS_I422TORGB24ROW_NEON
298 #define HAS_I422TORGB565ROW_NEON
299 #define HAS_I422TORGBAROW_NEON
300 #define HAS_I422TOUYVYROW_NEON
301 #define HAS_I422TOYUY2ROW_NEON
302 #define HAS_I444TOARGBROW_NEON
303 #define HAS_J400TOARGBROW_NEON
304 #define HAS_MERGEUVROW_NEON
305 #define HAS_MIRRORROW_NEON
306 #define HAS_MIRRORUVROW_NEON
307 #define HAS_NV12TOARGBROW_NEON
308 #define HAS_NV12TORGB565ROW_NEON
309 #define HAS_NV21TOARGBROW_NEON
310 #define HAS_RAWTOARGBROW_NEON
311 #define HAS_RAWTORGB24ROW_NEON
312 #define HAS_RAWTOUVROW_NEON
313 #define HAS_RAWTOYROW_NEON
314 #define HAS_RGB24TOARGBROW_NEON
315 #define HAS_RGB24TOUVROW_NEON
316 #define HAS_RGB24TOYROW_NEON
317 #define HAS_RGB565TOARGBROW_NEON
318 #define HAS_RGB565TOUVROW_NEON
319 #define HAS_RGB565TOYROW_NEON
320 #define HAS_RGBATOUVROW_NEON
321 #define HAS_RGBATOYROW_NEON
322 #define HAS_SETROW_NEON
323 #define HAS_SPLITUVROW_NEON
324 #define HAS_UYVYTOARGBROW_NEON
325 #define HAS_UYVYTOUV422ROW_NEON
326 #define HAS_UYVYTOUVROW_NEON
327 #define HAS_UYVYTOYROW_NEON
328 #define HAS_YUY2TOARGBROW_NEON
329 #define HAS_YUY2TOUV422ROW_NEON
330 #define HAS_YUY2TOUVROW_NEON
331 #define HAS_YUY2TOYROW_NEON
332 
333 // TODO(fbarchard): Port to 32 bit.
334 #if defined(__aarch64__)
335 #define HAS_HALFFLOATROW_NEON
336 #endif
337 
338 // Effects:
339 #define HAS_ARGBADDROW_NEON
340 #define HAS_ARGBATTENUATEROW_NEON
341 #define HAS_ARGBBLENDROW_NEON
342 #define HAS_ARGBCOLORMATRIXROW_NEON
343 #define HAS_ARGBGRAYROW_NEON
344 #define HAS_ARGBMIRRORROW_NEON
345 #define HAS_ARGBMULTIPLYROW_NEON
346 #define HAS_ARGBQUANTIZEROW_NEON
347 #define HAS_ARGBSEPIAROW_NEON
348 #define HAS_ARGBSHADEROW_NEON
349 #define HAS_ARGBSHUFFLEROW_NEON
350 #define HAS_ARGBSUBTRACTROW_NEON
351 #define HAS_INTERPOLATEROW_NEON
352 #define HAS_SOBELROW_NEON
353 #define HAS_SOBELTOPLANEROW_NEON
354 #define HAS_SOBELXROW_NEON
355 #define HAS_SOBELXYROW_NEON
356 #define HAS_SOBELYROW_NEON
357 #endif
358 
359 // The following are available on Mips platforms:
360 #if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \
361  (_MIPS_SIM == _MIPS_SIM_ABI32) && (__mips_isa_rev < 6)
362 #define HAS_COPYROW_MIPS
363 #if defined(__mips_dsp) && (__mips_dsp_rev >= 2)
364 #define HAS_I422TOARGBROW_DSPR2
365 #define HAS_INTERPOLATEROW_DSPR2
366 #define HAS_MIRRORROW_DSPR2
367 #define HAS_MIRRORUVROW_DSPR2
368 #define HAS_SPLITUVROW_DSPR2
369 #endif
370 #endif
371 
372 #if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa)
373 #define HAS_ARGBMIRRORROW_MSA
374 #define HAS_I422TOUYVYROW_MSA
375 #define HAS_I422TOYUY2ROW_MSA
376 #define HAS_MIRRORROW_MSA
377 #define HAS_UYVYTOUVROW_MSA
378 #define HAS_UYVYTOYROW_MSA
379 #define HAS_YUY2TOUV422ROW_MSA
380 #define HAS_YUY2TOUVROW_MSA
381 #define HAS_YUY2TOYROW_MSA
382 #define HAS_ARGB4444TOARGBROW_MSA
383 #define HAS_ARGBTOYROW_MSA
384 #define HAS_ARGBTOUVROW_MSA
385 
386 #endif
387 
388 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__)
389 #if defined(VISUALC_HAS_AVX2)
390 #define SIMD_ALIGNED(var) __declspec(align(32)) var
391 #else
392 #define SIMD_ALIGNED(var) __declspec(align(16)) var
393 #endif
394 typedef __declspec(align(16)) int16 vec16[8];
395 typedef __declspec(align(16)) int32 vec32[4];
396 typedef __declspec(align(16)) int8 vec8[16];
397 typedef __declspec(align(16)) uint16 uvec16[8];
398 typedef __declspec(align(16)) uint32 uvec32[4];
399 typedef __declspec(align(16)) uint8 uvec8[16];
400 typedef __declspec(align(32)) int16 lvec16[16];
401 typedef __declspec(align(32)) int32 lvec32[8];
402 typedef __declspec(align(32)) int8 lvec8[32];
403 typedef __declspec(align(32)) uint16 ulvec16[16];
404 typedef __declspec(align(32)) uint32 ulvec32[8];
405 typedef __declspec(align(32)) uint8 ulvec8[32];
406 #elif !defined(__pnacl__) && (defined(__GNUC__) || defined(__clang__))
407 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const.
408 #if defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)
409 #define SIMD_ALIGNED(var) var __attribute__((aligned(32)))
410 #else
411 #define SIMD_ALIGNED(var) var __attribute__((aligned(16)))
412 #endif
413 typedef int16 __attribute__((vector_size(16))) vec16;
414 typedef int32 __attribute__((vector_size(16))) vec32;
415 typedef int8 __attribute__((vector_size(16))) vec8;
416 typedef uint16 __attribute__((vector_size(16))) uvec16;
417 typedef uint32 __attribute__((vector_size(16))) uvec32;
418 typedef uint8 __attribute__((vector_size(16))) uvec8;
419 typedef int16 __attribute__((vector_size(32))) lvec16;
420 typedef int32 __attribute__((vector_size(32))) lvec32;
421 typedef int8 __attribute__((vector_size(32))) lvec8;
422 typedef uint16 __attribute__((vector_size(32))) ulvec16;
423 typedef uint32 __attribute__((vector_size(32))) ulvec32;
424 typedef uint8 __attribute__((vector_size(32))) ulvec8;
425 #else
426 #define SIMD_ALIGNED(var) var
427 typedef int16 vec16[8];
428 typedef int32 vec32[4];
429 typedef int8 vec8[16];
430 typedef uint16 uvec16[8];
431 typedef uint32 uvec32[4];
432 typedef uint8 uvec8[16];
433 typedef int16 lvec16[16];
434 typedef int32 lvec32[8];
435 typedef int8 lvec8[32];
436 typedef uint16 ulvec16[16];
437 typedef uint32 ulvec32[8];
438 typedef uint8 ulvec8[32];
439 #endif
440 
441 #if defined(__aarch64__)
442 // This struct is for Arm64 color conversion.
443 struct YuvConstants {
444  uvec16 kUVToRB;
445  uvec16 kUVToRB2;
446  uvec16 kUVToG;
447  uvec16 kUVToG2;
448  vec16 kUVBiasBGR;
449  vec32 kYToRgb;
450 };
451 #elif defined(__arm__)
452 // This struct is for ArmV7 color conversion.
453 struct YuvConstants {
454  uvec8 kUVToRB;
455  uvec8 kUVToG;
456  vec16 kUVBiasBGR;
457  vec32 kYToRgb;
458 };
459 #else
460 // This struct is for Intel color conversion.
461 struct YuvConstants {
462  int8 kUVToB[32];
463  int8 kUVToG[32];
464  int8 kUVToR[32];
465  int16 kUVBiasB[16];
466  int16 kUVBiasG[16];
467  int16 kUVBiasR[16];
468  int16 kYToRgb[16];
469 };
470 
471 // Offsets into YuvConstants structure
472 #define KUVTOB 0
473 #define KUVTOG 32
474 #define KUVTOR 64
475 #define KUVBIASB 96
476 #define KUVBIASG 128
477 #define KUVBIASR 160
478 #define KYTORGB 192
479 #endif
480 
481 // Conversion matrix for YUV to RGB
482 extern const struct YuvConstants SIMD_ALIGNED(kYuvI601Constants); // BT.601
483 extern const struct YuvConstants SIMD_ALIGNED(kYuvJPEGConstants); // JPeg
484 extern const struct YuvConstants SIMD_ALIGNED(kYuvH709Constants); // BT.709
485 
486 // Conversion matrix for YVU to BGR
487 extern const struct YuvConstants SIMD_ALIGNED(kYvuI601Constants); // BT.601
488 extern const struct YuvConstants SIMD_ALIGNED(kYvuJPEGConstants); // JPeg
489 extern const struct YuvConstants SIMD_ALIGNED(kYvuH709Constants); // BT.709
490 
491 #if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__)
492 #define OMITFP
493 #else
494 #define OMITFP __attribute__((optimize("omit-frame-pointer")))
495 #endif
496 
497 // NaCL macros for GCC x86 and x64.
498 #if defined(__native_client__)
499 #define LABELALIGN ".p2align 5\n"
500 #else
501 #define LABELALIGN
502 #endif
503 #if defined(__native_client__) && defined(__x86_64__)
504 // r14 is used for MEMOP macros.
505 #define NACL_R14 "r14",
506 #define BUNDLELOCK ".bundle_lock\n"
507 #define BUNDLEUNLOCK ".bundle_unlock\n"
508 #define MEMACCESS(base) "%%nacl:(%%r15,%q" #base ")"
509 #define MEMACCESS2(offset, base) "%%nacl:" #offset "(%%r15,%q" #base ")"
510 #define MEMLEA(offset, base) #offset "(%q" #base ")"
511 #define MEMLEA3(offset, index, scale) \
512  #offset "(,%q" #index "," #scale ")"
513 #define MEMLEA4(offset, base, index, scale) \
514  #offset "(%q" #base ",%q" #index "," #scale ")"
515 #define MEMMOVESTRING(s, d) "%%nacl:(%q" #s "),%%nacl:(%q" #d "), %%r15"
516 #define MEMSTORESTRING(reg, d) "%%" #reg ",%%nacl:(%q" #d "), %%r15"
517 #define MEMOPREG(opcode, offset, base, index, scale, reg) \
518  BUNDLELOCK \
519  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
520  #opcode " (%%r15,%%r14),%%" #reg "\n" \
521  BUNDLEUNLOCK
522 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \
523  BUNDLELOCK \
524  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
525  #opcode " %%" #reg ",(%%r15,%%r14)\n" \
526  BUNDLEUNLOCK
527 #define MEMOPARG(opcode, offset, base, index, scale, arg) \
528  BUNDLELOCK \
529  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
530  #opcode " (%%r15,%%r14),%" #arg "\n" \
531  BUNDLEUNLOCK
532 #define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \
533  BUNDLELOCK \
534  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
535  #opcode " (%%r15,%%r14),%%" #reg1 ",%%" #reg2 "\n" \
536  BUNDLEUNLOCK
537 #define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \
538  BUNDLELOCK \
539  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
540  #op " $" #sel ",%%" #reg ",(%%r15,%%r14)\n" \
541  BUNDLEUNLOCK
542 #else // defined(__native_client__) && defined(__x86_64__)
543 #define NACL_R14
544 #define BUNDLEALIGN
545 #define MEMACCESS(base) "(%" #base ")"
546 #define MEMACCESS2(offset, base) #offset "(%" #base ")"
547 #define MEMLEA(offset, base) #offset "(%" #base ")"
548 #define MEMLEA3(offset, index, scale) \
549  #offset "(,%" #index "," #scale ")"
550 #define MEMLEA4(offset, base, index, scale) \
551  #offset "(%" #base ",%" #index "," #scale ")"
552 #define MEMMOVESTRING(s, d)
553 #define MEMSTORESTRING(reg, d)
554 #define MEMOPREG(opcode, offset, base, index, scale, reg) \
555  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n"
556 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \
557  #opcode " %%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n"
558 #define MEMOPARG(opcode, offset, base, index, scale, arg) \
559  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n"
560 #define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \
561  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg1 ",%%" \
562  #reg2 "\n"
563 #define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \
564  #op " $" #sel ",%%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n"
565 #endif // defined(__native_client__) && defined(__x86_64__)
566 
567 #if defined(__arm__) || defined(__aarch64__)
568 #undef MEMACCESS
569 #if defined(__native_client__)
570 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n"
571 #else
572 #define MEMACCESS(base)
573 #endif
574 #endif
575 
576 void I444ToARGBRow_NEON(const uint8* src_y,
577  const uint8* src_u,
578  const uint8* src_v,
579  uint8* dst_argb,
580  const struct YuvConstants* yuvconstants,
581  int width);
582 void I422ToARGBRow_NEON(const uint8* src_y,
583  const uint8* src_u,
584  const uint8* src_v,
585  uint8* dst_argb,
586  const struct YuvConstants* yuvconstants,
587  int width);
588 void I422AlphaToARGBRow_NEON(const uint8* y_buf,
589  const uint8* u_buf,
590  const uint8* v_buf,
591  const uint8* a_buf,
592  uint8* dst_argb,
593  const struct YuvConstants* yuvconstants,
594  int width);
595 void I422ToARGBRow_NEON(const uint8* src_y,
596  const uint8* src_u,
597  const uint8* src_v,
598  uint8* dst_argb,
599  const struct YuvConstants* yuvconstants,
600  int width);
601 void I422ToRGBARow_NEON(const uint8* src_y,
602  const uint8* src_u,
603  const uint8* src_v,
604  uint8* dst_rgba,
605  const struct YuvConstants* yuvconstants,
606  int width);
607 void I422ToRGB24Row_NEON(const uint8* src_y,
608  const uint8* src_u,
609  const uint8* src_v,
610  uint8* dst_rgb24,
611  const struct YuvConstants* yuvconstants,
612  int width);
613 void I422ToRGB565Row_NEON(const uint8* src_y,
614  const uint8* src_u,
615  const uint8* src_v,
616  uint8* dst_rgb565,
617  const struct YuvConstants* yuvconstants,
618  int width);
620  const uint8* src_u,
621  const uint8* src_v,
622  uint8* dst_argb1555,
623  const struct YuvConstants* yuvconstants,
624  int width);
626  const uint8* src_u,
627  const uint8* src_v,
628  uint8* dst_argb4444,
629  const struct YuvConstants* yuvconstants,
630  int width);
631 void NV12ToARGBRow_NEON(const uint8* src_y,
632  const uint8* src_uv,
633  uint8* dst_argb,
634  const struct YuvConstants* yuvconstants,
635  int width);
636 void NV12ToRGB565Row_NEON(const uint8* src_y,
637  const uint8* src_uv,
638  uint8* dst_rgb565,
639  const struct YuvConstants* yuvconstants,
640  int width);
641 void NV21ToARGBRow_NEON(const uint8* src_y,
642  const uint8* src_vu,
643  uint8* dst_argb,
644  const struct YuvConstants* yuvconstants,
645  int width);
646 void YUY2ToARGBRow_NEON(const uint8* src_yuy2,
647  uint8* dst_argb,
648  const struct YuvConstants* yuvconstants,
649  int width);
650 void UYVYToARGBRow_NEON(const uint8* src_uyvy,
651  uint8* dst_argb,
652  const struct YuvConstants* yuvconstants,
653  int width);
654 
655 void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width);
656 void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width);
657 void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
658 void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int width);
659 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width);
660 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
661 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width);
662 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width);
663 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width);
664 void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width);
665 void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int width);
666 void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width);
667 void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width);
668 void ARGBToYRow_MSA(const uint8* src_argb, uint8* dst_y, int width);
669 void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
670  int width);
671 void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
672  uint8* dst_u, uint8* dst_v, int width);
673 void ARGBToUVRow_MSA(const uint8* src_argb, int src_stride_argb,
674  uint8* dst_u, uint8* dst_v, int width);
675 void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
676  uint8* dst_u, uint8* dst_v, int width);
677 void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
678  uint8* dst_u, uint8* dst_v, int width);
679 void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
680  uint8* dst_u, uint8* dst_v, int width);
681 void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
682  uint8* dst_u, uint8* dst_v, int width);
683 void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
684  uint8* dst_u, uint8* dst_v, int width);
685 void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
686  uint8* dst_u, uint8* dst_v, int width);
687 void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
688  uint8* dst_u, uint8* dst_v, int width);
689 void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
690  uint8* dst_u, uint8* dst_v, int width);
691 void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
692  uint8* dst_u, uint8* dst_v, int width);
693 void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width);
694 void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width);
695 void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width);
696 void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int width);
697 void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int width);
698 void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width);
699 void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width);
700 void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width);
701 void ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int width);
702 void ARGBToYJRow_C(const uint8* src_argb, uint8* dst_y, int width);
703 void BGRAToYRow_C(const uint8* src_bgra, uint8* dst_y, int width);
704 void ABGRToYRow_C(const uint8* src_abgr, uint8* dst_y, int width);
705 void RGBAToYRow_C(const uint8* src_rgba, uint8* dst_y, int width);
706 void RGB24ToYRow_C(const uint8* src_rgb24, uint8* dst_y, int width);
707 void RAWToYRow_C(const uint8* src_raw, uint8* dst_y, int width);
708 void RGB565ToYRow_C(const uint8* src_rgb565, uint8* dst_y, int width);
709 void ARGB1555ToYRow_C(const uint8* src_argb1555, uint8* dst_y, int width);
710 void ARGB4444ToYRow_C(const uint8* src_argb4444, uint8* dst_y, int width);
711 void ARGBToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
712 void ARGBToYJRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
713 void BGRAToYRow_Any_SSSE3(const uint8* src_bgra, uint8* dst_y, int width);
714 void ABGRToYRow_Any_SSSE3(const uint8* src_abgr, uint8* dst_y, int width);
715 void RGBAToYRow_Any_SSSE3(const uint8* src_rgba, uint8* dst_y, int width);
716 void RGB24ToYRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width);
717 void RAWToYRow_Any_SSSE3(const uint8* src_raw, uint8* dst_y, int width);
718 void ARGBToYRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int width);
719 void ARGBToYJRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int width);
720 void BGRAToYRow_Any_NEON(const uint8* src_bgra, uint8* dst_y, int width);
721 void ABGRToYRow_Any_NEON(const uint8* src_abgr, uint8* dst_y, int width);
722 void RGBAToYRow_Any_NEON(const uint8* src_rgba, uint8* dst_y, int width);
723 void RGB24ToYRow_Any_NEON(const uint8* src_rgb24, uint8* dst_y, int width);
724 void RAWToYRow_Any_NEON(const uint8* src_raw, uint8* dst_y, int width);
725 void RGB565ToYRow_Any_NEON(const uint8* src_rgb565, uint8* dst_y, int width);
726 void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, uint8* dst_y,
727  int width);
728 void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, uint8* dst_y,
729  int width);
730 void ARGBToYRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width);
731 
732 void ARGBToUVRow_AVX2(const uint8* src_argb, int src_stride_argb,
733  uint8* dst_u, uint8* dst_v, int width);
734 void ARGBToUVJRow_AVX2(const uint8* src_argb, int src_stride_argb,
735  uint8* dst_u, uint8* dst_v, int width);
736 void ARGBToUVRow_SSSE3(const uint8* src_argb, int src_stride_argb,
737  uint8* dst_u, uint8* dst_v, int width);
738 void ARGBToUVJRow_SSSE3(const uint8* src_argb, int src_stride_argb,
739  uint8* dst_u, uint8* dst_v, int width);
740 void BGRAToUVRow_SSSE3(const uint8* src_bgra, int src_stride_bgra,
741  uint8* dst_u, uint8* dst_v, int width);
742 void ABGRToUVRow_SSSE3(const uint8* src_abgr, int src_stride_abgr,
743  uint8* dst_u, uint8* dst_v, int width);
744 void RGBAToUVRow_SSSE3(const uint8* src_rgba, int src_stride_rgba,
745  uint8* dst_u, uint8* dst_v, int width);
746 void ARGBToUVRow_Any_AVX2(const uint8* src_argb, int src_stride_argb,
747  uint8* dst_u, uint8* dst_v, int width);
748 void ARGBToUVJRow_Any_AVX2(const uint8* src_argb, int src_stride_argb,
749  uint8* dst_u, uint8* dst_v, int width);
750 void ARGBToUVRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb,
751  uint8* dst_u, uint8* dst_v, int width);
752 void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb,
753  uint8* dst_u, uint8* dst_v, int width);
754 void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, int src_stride_bgra,
755  uint8* dst_u, uint8* dst_v, int width);
756 void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, int src_stride_abgr,
757  uint8* dst_u, uint8* dst_v, int width);
758 void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, int src_stride_rgba,
759  uint8* dst_u, uint8* dst_v, int width);
760 void ARGBToUV444Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
761  int width);
762 void ARGBToUVRow_Any_NEON(const uint8* src_argb, int src_stride_argb,
763  uint8* dst_u, uint8* dst_v, int width);
764 void ARGBToUVRow_Any_MSA(const uint8* src_argb, int src_stride_argb,
765  uint8* dst_u, uint8* dst_v, int width);
766 void ARGBToUVJRow_Any_NEON(const uint8* src_argb, int src_stride_argb,
767  uint8* dst_u, uint8* dst_v, int width);
768 void BGRAToUVRow_Any_NEON(const uint8* src_bgra, int src_stride_bgra,
769  uint8* dst_u, uint8* dst_v, int width);
770 void ABGRToUVRow_Any_NEON(const uint8* src_abgr, int src_stride_abgr,
771  uint8* dst_u, uint8* dst_v, int width);
772 void RGBAToUVRow_Any_NEON(const uint8* src_rgba, int src_stride_rgba,
773  uint8* dst_u, uint8* dst_v, int width);
774 void RGB24ToUVRow_Any_NEON(const uint8* src_rgb24, int src_stride_rgb24,
775  uint8* dst_u, uint8* dst_v, int width);
776 void RAWToUVRow_Any_NEON(const uint8* src_raw, int src_stride_raw,
777  uint8* dst_u, uint8* dst_v, int width);
778 void RGB565ToUVRow_Any_NEON(const uint8* src_rgb565, int src_stride_rgb565,
779  uint8* dst_u, uint8* dst_v, int width);
780 void ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555,
781  int src_stride_argb1555,
782  uint8* dst_u, uint8* dst_v, int width);
783 void ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444,
784  int src_stride_argb4444,
785  uint8* dst_u, uint8* dst_v, int width);
786 void ARGBToUVRow_C(const uint8* src_argb, int src_stride_argb,
787  uint8* dst_u, uint8* dst_v, int width);
788 void ARGBToUVJRow_C(const uint8* src_argb, int src_stride_argb,
789  uint8* dst_u, uint8* dst_v, int width);
790 void BGRAToUVRow_C(const uint8* src_bgra, int src_stride_bgra,
791  uint8* dst_u, uint8* dst_v, int width);
792 void ABGRToUVRow_C(const uint8* src_abgr, int src_stride_abgr,
793  uint8* dst_u, uint8* dst_v, int width);
794 void RGBAToUVRow_C(const uint8* src_rgba, int src_stride_rgba,
795  uint8* dst_u, uint8* dst_v, int width);
796 void RGB24ToUVRow_C(const uint8* src_rgb24, int src_stride_rgb24,
797  uint8* dst_u, uint8* dst_v, int width);
798 void RAWToUVRow_C(const uint8* src_raw, int src_stride_raw,
799  uint8* dst_u, uint8* dst_v, int width);
800 void RGB565ToUVRow_C(const uint8* src_rgb565, int src_stride_rgb565,
801  uint8* dst_u, uint8* dst_v, int width);
802 void ARGB1555ToUVRow_C(const uint8* src_argb1555, int src_stride_argb1555,
803  uint8* dst_u, uint8* dst_v, int width);
804 void ARGB4444ToUVRow_C(const uint8* src_argb4444, int src_stride_argb4444,
805  uint8* dst_u, uint8* dst_v, int width);
806 
807 void ARGBToUV444Row_SSSE3(const uint8* src_argb,
808  uint8* dst_u, uint8* dst_v, int width);
809 void ARGBToUV444Row_Any_SSSE3(const uint8* src_argb,
810  uint8* dst_u, uint8* dst_v, int width);
811 
812 void ARGBToUV444Row_C(const uint8* src_argb,
813  uint8* dst_u, uint8* dst_v, int width);
814 
815 void MirrorRow_AVX2(const uint8* src, uint8* dst, int width);
816 void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width);
817 void MirrorRow_NEON(const uint8* src, uint8* dst, int width);
818 void MirrorRow_DSPR2(const uint8* src, uint8* dst, int width);
819 void MirrorRow_MSA(const uint8* src, uint8* dst, int width);
820 void MirrorRow_C(const uint8* src, uint8* dst, int width);
821 void MirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width);
822 void MirrorRow_Any_SSSE3(const uint8* src, uint8* dst, int width);
823 void MirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width);
824 void MirrorRow_Any_NEON(const uint8* src, uint8* dst, int width);
825 void MirrorRow_Any_MSA(const uint8* src, uint8* dst, int width);
826 
827 void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
828  int width);
829 void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
830  int width);
831 void MirrorUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
832  int width);
833 void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width);
834 
835 void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width);
836 void ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width);
837 void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width);
838 void ARGBMirrorRow_MSA(const uint8* src, uint8* dst, int width);
839 void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width);
840 void ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width);
841 void ARGBMirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width);
842 void ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width);
843 void ARGBMirrorRow_Any_MSA(const uint8* src, uint8* dst, int width);
844 
845 void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width);
846 void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
847  int width);
848 void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
849  int width);
850 void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
851  int width);
852 void SplitUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
853  int width);
854 void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
855  int width);
856 void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
857  int width);
858 void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
859  int width);
860 void SplitUVRow_Any_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
861  int width);
862 
863 void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
864  int width);
865 void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
866  int width);
867 void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
868  int width);
869 void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
870  int width);
871 void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
872  int width);
873 void MergeUVRow_Any_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
874  int width);
875 void MergeUVRow_Any_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
876  int width);
877 
878 void CopyRow_SSE2(const uint8* src, uint8* dst, int count);
879 void CopyRow_AVX(const uint8* src, uint8* dst, int count);
880 void CopyRow_ERMS(const uint8* src, uint8* dst, int count);
881 void CopyRow_NEON(const uint8* src, uint8* dst, int count);
882 void CopyRow_MIPS(const uint8* src, uint8* dst, int count);
883 void CopyRow_C(const uint8* src, uint8* dst, int count);
884 void CopyRow_Any_SSE2(const uint8* src, uint8* dst, int count);
885 void CopyRow_Any_AVX(const uint8* src, uint8* dst, int count);
886 void CopyRow_Any_NEON(const uint8* src, uint8* dst, int count);
887 
888 void CopyRow_16_C(const uint16* src, uint16* dst, int count);
889 
890 void ARGBCopyAlphaRow_C(const uint8* src_argb, uint8* dst_argb, int width);
891 void ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
892 void ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
893 void ARGBCopyAlphaRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
894  int width);
895 void ARGBCopyAlphaRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
896  int width);
897 
898 void ARGBExtractAlphaRow_C(const uint8* src_argb, uint8* dst_a, int width);
899 void ARGBExtractAlphaRow_SSE2(const uint8* src_argb, uint8* dst_a, int width);
900 void ARGBExtractAlphaRow_AVX2(const uint8* src_argb, uint8* dst_a, int width);
901 void ARGBExtractAlphaRow_NEON(const uint8* src_argb, uint8* dst_a, int width);
902 void ARGBExtractAlphaRow_Any_SSE2(const uint8* src_argb, uint8* dst_a,
903  int width);
904 void ARGBExtractAlphaRow_Any_AVX2(const uint8* src_argb, uint8* dst_a,
905  int width);
906 void ARGBExtractAlphaRow_Any_NEON(const uint8* src_argb, uint8* dst_a,
907  int width);
908 
909 void ARGBCopyYToAlphaRow_C(const uint8* src_y, uint8* dst_argb, int width);
910 void ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
911 void ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
912 void ARGBCopyYToAlphaRow_Any_SSE2(const uint8* src_y, uint8* dst_argb,
913  int width);
914 void ARGBCopyYToAlphaRow_Any_AVX2(const uint8* src_y, uint8* dst_argb,
915  int width);
916 
917 void SetRow_C(uint8* dst, uint8 v8, int count);
918 void SetRow_X86(uint8* dst, uint8 v8, int count);
919 void SetRow_ERMS(uint8* dst, uint8 v8, int count);
920 void SetRow_NEON(uint8* dst, uint8 v8, int count);
921 void SetRow_Any_X86(uint8* dst, uint8 v8, int count);
922 void SetRow_Any_NEON(uint8* dst, uint8 v8, int count);
923 
924 void ARGBSetRow_C(uint8* dst_argb, uint32 v32, int count);
925 void ARGBSetRow_X86(uint8* dst_argb, uint32 v32, int count);
926 void ARGBSetRow_NEON(uint8* dst_argb, uint32 v32, int count);
927 void ARGBSetRow_Any_NEON(uint8* dst_argb, uint32 v32, int count);
928 
929 // ARGBShufflers for BGRAToARGB etc.
930 void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb,
931  const uint8* shuffler, int width);
932 void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb,
933  const uint8* shuffler, int width);
934 void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
935  const uint8* shuffler, int width);
936 void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
937  const uint8* shuffler, int width);
938 void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
939  const uint8* shuffler, int width);
940 void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
941  const uint8* shuffler, int width);
942 void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb,
943  const uint8* shuffler, int width);
944 void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
945  const uint8* shuffler, int width);
946 void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb,
947  const uint8* shuffler, int width);
948 
949 void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int width);
950 void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int width);
951 void RAWToRGB24Row_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width);
952 void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int width);
953 void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb,
954  int width);
955 void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb,
956  int width);
957 void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb, int width);
958 void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb,
959  int width);
960 void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb,
961  int width);
962 
963 void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int width);
964 void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int width);
965 void RAWToRGB24Row_NEON(const uint8* src_raw, uint8* dst_rgb24, int width);
966 void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int width);
967 void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
968  int width);
969 void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
970  int width);
971 void ARGB4444ToARGBRow_MSA(const uint8* src_argb4444, uint8* dst_argb,
972  int width);
973 void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int width);
974 void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int width);
975 void RAWToRGB24Row_C(const uint8* src_raw, uint8* dst_rgb24, int width);
976 void RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int width);
977 void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width);
978 void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width);
979 void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb,
980  int width);
981 void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int width);
982 void RAWToRGB24Row_Any_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width);
983 
984 void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, uint8* dst_argb,
985  int width);
986 void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, uint8* dst_argb,
987  int width);
988 void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, uint8* dst_argb,
989  int width);
990 void RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565, uint8* dst_argb,
991  int width);
992 void ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555, uint8* dst_argb,
993  int width);
994 void ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444, uint8* dst_argb,
995  int width);
996 
997 void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb,
998  int width);
999 void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int width);
1000 void RAWToRGB24Row_Any_NEON(const uint8* src_raw, uint8* dst_rgb24, int width);
1001 void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, uint8* dst_argb,
1002  int width);
1003 void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, uint8* dst_argb,
1004  int width);
1005 void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb,
1006  int width);
1007 void ARGB4444ToARGBRow_Any_MSA(const uint8* src_argb4444, uint8* dst_argb,
1008  int width);
1009 
1010 void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
1011 void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
1012 void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
1013 void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
1014 void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
1015 
1016 void ARGBToRGB565DitherRow_C(const uint8* src_argb, uint8* dst_rgb,
1017  const uint32 dither4, int width);
1018 void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, uint8* dst_rgb,
1019  const uint32 dither4, int width);
1020 void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, uint8* dst_rgb,
1021  const uint32 dither4, int width);
1022 
1023 void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
1024 void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
1025 void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
1026 
1027 void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1028 void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1029 void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1030 void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1031 void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1032 void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, uint8* dst_rgb,
1033  const uint32 dither4, int width);
1034 
1035 void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int width);
1036 void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
1037 void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int width);
1038 void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
1039 void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
1040 void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
1041 
1042 void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
1043 void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
1044 void J400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width);
1045 void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width);
1046 void J400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width);
1047 void J400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width);
1048 void J400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width);
1049 
1050 void I444ToARGBRow_C(const uint8* src_y,
1051  const uint8* src_u,
1052  const uint8* src_v,
1053  uint8* dst_argb,
1054  const struct YuvConstants* yuvconstants,
1055  int width);
1056 void I422ToARGBRow_C(const uint8* src_y,
1057  const uint8* src_u,
1058  const uint8* src_v,
1059  uint8* dst_argb,
1060  const struct YuvConstants* yuvconstants,
1061  int width);
1062 void I422ToARGBRow_C(const uint8* src_y,
1063  const uint8* src_u,
1064  const uint8* src_v,
1065  uint8* dst_argb,
1066  const struct YuvConstants* yuvconstants,
1067  int width);
1068 void I422AlphaToARGBRow_C(const uint8* y_buf,
1069  const uint8* u_buf,
1070  const uint8* v_buf,
1071  const uint8* a_buf,
1072  uint8* dst_argb,
1073  const struct YuvConstants* yuvconstants,
1074  int width);
1075 void NV12ToARGBRow_C(const uint8* src_y,
1076  const uint8* src_uv,
1077  uint8* dst_argb,
1078  const struct YuvConstants* yuvconstants,
1079  int width);
1080 void NV12ToRGB565Row_C(const uint8* src_y,
1081  const uint8* src_uv,
1082  uint8* dst_argb,
1083  const struct YuvConstants* yuvconstants,
1084  int width);
1085 void NV21ToARGBRow_C(const uint8* src_y,
1086  const uint8* src_uv,
1087  uint8* dst_argb,
1088  const struct YuvConstants* yuvconstants,
1089  int width);
1090 void YUY2ToARGBRow_C(const uint8* src_yuy2,
1091  uint8* dst_argb,
1092  const struct YuvConstants* yuvconstants,
1093  int width);
1094 void UYVYToARGBRow_C(const uint8* src_uyvy,
1095  uint8* dst_argb,
1096  const struct YuvConstants* yuvconstants,
1097  int width);
1098 void I422ToRGBARow_C(const uint8* src_y,
1099  const uint8* src_u,
1100  const uint8* src_v,
1101  uint8* dst_rgba,
1102  const struct YuvConstants* yuvconstants,
1103  int width);
1104 void I422ToRGB24Row_C(const uint8* src_y,
1105  const uint8* src_u,
1106  const uint8* src_v,
1107  uint8* dst_rgb24,
1108  const struct YuvConstants* yuvconstants,
1109  int width);
1110 void I422ToARGB4444Row_C(const uint8* src_y,
1111  const uint8* src_u,
1112  const uint8* src_v,
1113  uint8* dst_argb4444,
1114  const struct YuvConstants* yuvconstants,
1115  int width);
1116 void I422ToARGB1555Row_C(const uint8* src_y,
1117  const uint8* src_u,
1118  const uint8* src_v,
1119  uint8* dst_argb4444,
1120  const struct YuvConstants* yuvconstants,
1121  int width);
1122 void I422ToRGB565Row_C(const uint8* src_y,
1123  const uint8* src_u,
1124  const uint8* src_v,
1125  uint8* dst_rgb565,
1126  const struct YuvConstants* yuvconstants,
1127  int width);
1128 void I422ToARGBRow_AVX2(const uint8* src_y,
1129  const uint8* src_u,
1130  const uint8* src_v,
1131  uint8* dst_argb,
1132  const struct YuvConstants* yuvconstants,
1133  int width);
1134 void I422ToARGBRow_AVX2(const uint8* src_y,
1135  const uint8* src_u,
1136  const uint8* src_v,
1137  uint8* dst_argb,
1138  const struct YuvConstants* yuvconstants,
1139  int width);
1140 void I422ToRGBARow_AVX2(const uint8* src_y,
1141  const uint8* src_u,
1142  const uint8* src_v,
1143  uint8* dst_argb,
1144  const struct YuvConstants* yuvconstants,
1145  int width);
1146 void I444ToARGBRow_SSSE3(const uint8* src_y,
1147  const uint8* src_u,
1148  const uint8* src_v,
1149  uint8* dst_argb,
1150  const struct YuvConstants* yuvconstants,
1151  int width);
1152 void I444ToARGBRow_AVX2(const uint8* src_y,
1153  const uint8* src_u,
1154  const uint8* src_v,
1155  uint8* dst_argb,
1156  const struct YuvConstants* yuvconstants,
1157  int width);
1158 void I444ToARGBRow_SSSE3(const uint8* src_y,
1159  const uint8* src_u,
1160  const uint8* src_v,
1161  uint8* dst_argb,
1162  const struct YuvConstants* yuvconstants,
1163  int width);
1164 void I444ToARGBRow_AVX2(const uint8* src_y,
1165  const uint8* src_u,
1166  const uint8* src_v,
1167  uint8* dst_argb,
1168  const struct YuvConstants* yuvconstants,
1169  int width);
1170 void I422ToARGBRow_SSSE3(const uint8* src_y,
1171  const uint8* src_u,
1172  const uint8* src_v,
1173  uint8* dst_argb,
1174  const struct YuvConstants* yuvconstants,
1175  int width);
1176 void I422AlphaToARGBRow_SSSE3(const uint8* y_buf,
1177  const uint8* u_buf,
1178  const uint8* v_buf,
1179  const uint8* a_buf,
1180  uint8* dst_argb,
1181  const struct YuvConstants* yuvconstants,
1182  int width);
1183 void I422AlphaToARGBRow_AVX2(const uint8* y_buf,
1184  const uint8* u_buf,
1185  const uint8* v_buf,
1186  const uint8* a_buf,
1187  uint8* dst_argb,
1188  const struct YuvConstants* yuvconstants,
1189  int width);
1190 void I422ToARGBRow_SSSE3(const uint8* src_y,
1191  const uint8* src_u,
1192  const uint8* src_v,
1193  uint8* dst_argb,
1194  const struct YuvConstants* yuvconstants,
1195  int width);
1196 void NV12ToARGBRow_SSSE3(const uint8* src_y,
1197  const uint8* src_uv,
1198  uint8* dst_argb,
1199  const struct YuvConstants* yuvconstants,
1200  int width);
1201 void NV12ToARGBRow_AVX2(const uint8* src_y,
1202  const uint8* src_uv,
1203  uint8* dst_argb,
1204  const struct YuvConstants* yuvconstants,
1205  int width);
1206 void NV12ToRGB565Row_SSSE3(const uint8* src_y,
1207  const uint8* src_uv,
1208  uint8* dst_argb,
1209  const struct YuvConstants* yuvconstants,
1210  int width);
1211 void NV12ToRGB565Row_AVX2(const uint8* src_y,
1212  const uint8* src_uv,
1213  uint8* dst_argb,
1214  const struct YuvConstants* yuvconstants,
1215  int width);
1216 void NV21ToARGBRow_SSSE3(const uint8* src_y,
1217  const uint8* src_uv,
1218  uint8* dst_argb,
1219  const struct YuvConstants* yuvconstants,
1220  int width);
1221 void NV21ToARGBRow_AVX2(const uint8* src_y,
1222  const uint8* src_uv,
1223  uint8* dst_argb,
1224  const struct YuvConstants* yuvconstants,
1225  int width);
1226 void YUY2ToARGBRow_SSSE3(const uint8* src_yuy2,
1227  uint8* dst_argb,
1228  const struct YuvConstants* yuvconstants,
1229  int width);
1230 void UYVYToARGBRow_SSSE3(const uint8* src_uyvy,
1231  uint8* dst_argb,
1232  const struct YuvConstants* yuvconstants,
1233  int width);
1234 void YUY2ToARGBRow_AVX2(const uint8* src_yuy2,
1235  uint8* dst_argb,
1236  const struct YuvConstants* yuvconstants,
1237  int width);
1238 void UYVYToARGBRow_AVX2(const uint8* src_uyvy,
1239  uint8* dst_argb,
1240  const struct YuvConstants* yuvconstants,
1241  int width);
1242 void I422ToRGBARow_SSSE3(const uint8* src_y,
1243  const uint8* src_u,
1244  const uint8* src_v,
1245  uint8* dst_rgba,
1246  const struct YuvConstants* yuvconstants,
1247  int width);
1248 void I422ToARGB4444Row_SSSE3(const uint8* src_y,
1249  const uint8* src_u,
1250  const uint8* src_v,
1251  uint8* dst_argb,
1252  const struct YuvConstants* yuvconstants,
1253  int width);
1254 void I422ToARGB4444Row_AVX2(const uint8* src_y,
1255  const uint8* src_u,
1256  const uint8* src_v,
1257  uint8* dst_argb,
1258  const struct YuvConstants* yuvconstants,
1259  int width);
1260 void I422ToARGB1555Row_SSSE3(const uint8* src_y,
1261  const uint8* src_u,
1262  const uint8* src_v,
1263  uint8* dst_argb,
1264  const struct YuvConstants* yuvconstants,
1265  int width);
1266 void I422ToARGB1555Row_AVX2(const uint8* src_y,
1267  const uint8* src_u,
1268  const uint8* src_v,
1269  uint8* dst_argb,
1270  const struct YuvConstants* yuvconstants,
1271  int width);
1272 void I422ToRGB565Row_SSSE3(const uint8* src_y,
1273  const uint8* src_u,
1274  const uint8* src_v,
1275  uint8* dst_argb,
1276  const struct YuvConstants* yuvconstants,
1277  int width);
1278 void I422ToRGB565Row_AVX2(const uint8* src_y,
1279  const uint8* src_u,
1280  const uint8* src_v,
1281  uint8* dst_argb,
1282  const struct YuvConstants* yuvconstants,
1283  int width);
1284 void I422ToRGB24Row_SSSE3(const uint8* src_y,
1285  const uint8* src_u,
1286  const uint8* src_v,
1287  uint8* dst_rgb24,
1288  const struct YuvConstants* yuvconstants,
1289  int width);
1290 void I422ToRGB24Row_AVX2(const uint8* src_y,
1291  const uint8* src_u,
1292  const uint8* src_v,
1293  uint8* dst_rgb24,
1294  const struct YuvConstants* yuvconstants,
1295  int width);
1296 void I422ToARGBRow_Any_AVX2(const uint8* src_y,
1297  const uint8* src_u,
1298  const uint8* src_v,
1299  uint8* dst_argb,
1300  const struct YuvConstants* yuvconstants,
1301  int width);
1302 void I422ToRGBARow_Any_AVX2(const uint8* src_y,
1303  const uint8* src_u,
1304  const uint8* src_v,
1305  uint8* dst_argb,
1306  const struct YuvConstants* yuvconstants,
1307  int width);
1308 void I444ToARGBRow_Any_SSSE3(const uint8* src_y,
1309  const uint8* src_u,
1310  const uint8* src_v,
1311  uint8* dst_argb,
1312  const struct YuvConstants* yuvconstants,
1313  int width);
1314 void I444ToARGBRow_Any_AVX2(const uint8* src_y,
1315  const uint8* src_u,
1316  const uint8* src_v,
1317  uint8* dst_argb,
1318  const struct YuvConstants* yuvconstants,
1319  int width);
1320 void I422ToARGBRow_Any_SSSE3(const uint8* src_y,
1321  const uint8* src_u,
1322  const uint8* src_v,
1323  uint8* dst_argb,
1324  const struct YuvConstants* yuvconstants,
1325  int width);
1326 void I422AlphaToARGBRow_Any_SSSE3(const uint8* y_buf,
1327  const uint8* u_buf,
1328  const uint8* v_buf,
1329  const uint8* a_buf,
1330  uint8* dst_argb,
1331  const struct YuvConstants* yuvconstants,
1332  int width);
1333 void I422AlphaToARGBRow_Any_AVX2(const uint8* y_buf,
1334  const uint8* u_buf,
1335  const uint8* v_buf,
1336  const uint8* a_buf,
1337  uint8* dst_argb,
1338  const struct YuvConstants* yuvconstants,
1339  int width);
1340 void NV12ToARGBRow_Any_SSSE3(const uint8* src_y,
1341  const uint8* src_uv,
1342  uint8* dst_argb,
1343  const struct YuvConstants* yuvconstants,
1344  int width);
1345 void NV12ToARGBRow_Any_AVX2(const uint8* src_y,
1346  const uint8* src_uv,
1347  uint8* dst_argb,
1348  const struct YuvConstants* yuvconstants,
1349  int width);
1350 void NV21ToARGBRow_Any_SSSE3(const uint8* src_y,
1351  const uint8* src_vu,
1352  uint8* dst_argb,
1353  const struct YuvConstants* yuvconstants,
1354  int width);
1355 void NV21ToARGBRow_Any_AVX2(const uint8* src_y,
1356  const uint8* src_vu,
1357  uint8* dst_argb,
1358  const struct YuvConstants* yuvconstants,
1359  int width);
1361  const uint8* src_uv,
1362  uint8* dst_argb,
1363  const struct YuvConstants* yuvconstants,
1364  int width);
1366  const uint8* src_uv,
1367  uint8* dst_argb,
1368  const struct YuvConstants* yuvconstants,
1369  int width);
1370 void YUY2ToARGBRow_Any_SSSE3(const uint8* src_yuy2,
1371  uint8* dst_argb,
1372  const struct YuvConstants* yuvconstants,
1373  int width);
1374 void UYVYToARGBRow_Any_SSSE3(const uint8* src_uyvy,
1375  uint8* dst_argb,
1376  const struct YuvConstants* yuvconstants,
1377  int width);
1378 void YUY2ToARGBRow_Any_AVX2(const uint8* src_yuy2,
1379  uint8* dst_argb,
1380  const struct YuvConstants* yuvconstants,
1381  int width);
1382 void UYVYToARGBRow_Any_AVX2(const uint8* src_uyvy,
1383  uint8* dst_argb,
1384  const struct YuvConstants* yuvconstants,
1385  int width);
1386 void I422ToRGBARow_Any_SSSE3(const uint8* src_y,
1387  const uint8* src_u,
1388  const uint8* src_v,
1389  uint8* dst_rgba,
1390  const struct YuvConstants* yuvconstants,
1391  int width);
1393  const uint8* src_u,
1394  const uint8* src_v,
1395  uint8* dst_rgba,
1396  const struct YuvConstants* yuvconstants,
1397  int width);
1399  const uint8* src_u,
1400  const uint8* src_v,
1401  uint8* dst_rgba,
1402  const struct YuvConstants* yuvconstants,
1403  int width);
1405  const uint8* src_u,
1406  const uint8* src_v,
1407  uint8* dst_rgba,
1408  const struct YuvConstants* yuvconstants,
1409  int width);
1411  const uint8* src_u,
1412  const uint8* src_v,
1413  uint8* dst_rgba,
1414  const struct YuvConstants* yuvconstants,
1415  int width);
1417  const uint8* src_u,
1418  const uint8* src_v,
1419  uint8* dst_rgba,
1420  const struct YuvConstants* yuvconstants,
1421  int width);
1423  const uint8* src_u,
1424  const uint8* src_v,
1425  uint8* dst_rgba,
1426  const struct YuvConstants* yuvconstants,
1427  int width);
1429  const uint8* src_u,
1430  const uint8* src_v,
1431  uint8* dst_argb,
1432  const struct YuvConstants* yuvconstants,
1433  int width);
1434 void I422ToRGB24Row_Any_AVX2(const uint8* src_y,
1435  const uint8* src_u,
1436  const uint8* src_v,
1437  uint8* dst_argb,
1438  const struct YuvConstants* yuvconstants,
1439  int width);
1440 
1441 void I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width);
1442 void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
1443 void I400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
1444 void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width);
1445 void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width);
1446 void I400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width);
1447 void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width);
1448 
1449 // ARGB preattenuated alpha blend.
1450 void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1,
1451  uint8* dst_argb, int width);
1452 void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1,
1453  uint8* dst_argb, int width);
1454 void ARGBBlendRow_C(const uint8* src_argb, const uint8* src_argb1,
1455  uint8* dst_argb, int width);
1456 
1457 // Unattenuated planar alpha blend.
1458 void BlendPlaneRow_SSSE3(const uint8* src0, const uint8* src1,
1459  const uint8* alpha, uint8* dst, int width);
1460 void BlendPlaneRow_Any_SSSE3(const uint8* src0, const uint8* src1,
1461  const uint8* alpha, uint8* dst, int width);
1462 void BlendPlaneRow_AVX2(const uint8* src0, const uint8* src1,
1463  const uint8* alpha, uint8* dst, int width);
1464 void BlendPlaneRow_Any_AVX2(const uint8* src0, const uint8* src1,
1465  const uint8* alpha, uint8* dst, int width);
1466 void BlendPlaneRow_C(const uint8* src0, const uint8* src1,
1467  const uint8* alpha, uint8* dst, int width);
1468 
1469 // ARGB multiply images. Same API as Blend, but these require
1470 // pointer and width alignment for SSE2.
1471 void ARGBMultiplyRow_C(const uint8* src_argb, const uint8* src_argb1,
1472  uint8* dst_argb, int width);
1473 void ARGBMultiplyRow_SSE2(const uint8* src_argb, const uint8* src_argb1,
1474  uint8* dst_argb, int width);
1475 void ARGBMultiplyRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1,
1476  uint8* dst_argb, int width);
1477 void ARGBMultiplyRow_AVX2(const uint8* src_argb, const uint8* src_argb1,
1478  uint8* dst_argb, int width);
1479 void ARGBMultiplyRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1,
1480  uint8* dst_argb, int width);
1481 void ARGBMultiplyRow_NEON(const uint8* src_argb, const uint8* src_argb1,
1482  uint8* dst_argb, int width);
1483 void ARGBMultiplyRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
1484  uint8* dst_argb, int width);
1485 
1486 // ARGB add images.
1487 void ARGBAddRow_C(const uint8* src_argb, const uint8* src_argb1,
1488  uint8* dst_argb, int width);
1489 void ARGBAddRow_SSE2(const uint8* src_argb, const uint8* src_argb1,
1490  uint8* dst_argb, int width);
1491 void ARGBAddRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1,
1492  uint8* dst_argb, int width);
1493 void ARGBAddRow_AVX2(const uint8* src_argb, const uint8* src_argb1,
1494  uint8* dst_argb, int width);
1495 void ARGBAddRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1,
1496  uint8* dst_argb, int width);
1497 void ARGBAddRow_NEON(const uint8* src_argb, const uint8* src_argb1,
1498  uint8* dst_argb, int width);
1499 void ARGBAddRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
1500  uint8* dst_argb, int width);
1501 
1502 // ARGB subtract images. Same API as Blend, but these require
1503 // pointer and width alignment for SSE2.
1504 void ARGBSubtractRow_C(const uint8* src_argb, const uint8* src_argb1,
1505  uint8* dst_argb, int width);
1506 void ARGBSubtractRow_SSE2(const uint8* src_argb, const uint8* src_argb1,
1507  uint8* dst_argb, int width);
1508 void ARGBSubtractRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1,
1509  uint8* dst_argb, int width);
1510 void ARGBSubtractRow_AVX2(const uint8* src_argb, const uint8* src_argb1,
1511  uint8* dst_argb, int width);
1512 void ARGBSubtractRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1,
1513  uint8* dst_argb, int width);
1514 void ARGBSubtractRow_NEON(const uint8* src_argb, const uint8* src_argb1,
1515  uint8* dst_argb, int width);
1516 void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
1517  uint8* dst_argb, int width);
1518 
1519 void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
1520 void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
1521 void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
1522 void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
1523  int width);
1524 void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
1525  int width);
1526 
1527 void ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
1528  const uint32 dither4, int width);
1529 void ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
1530  const uint32 dither4, int width);
1531 
1532 void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
1533 void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
1534  int width);
1535 void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
1536  int width);
1537 
1538 void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1539 void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1540 void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
1541 void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
1542  int width);
1543 void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
1544  int width);
1545 void ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
1546  const uint32 dither4, int width);
1547 
1548 void I444ToARGBRow_Any_NEON(const uint8* src_y,
1549  const uint8* src_u,
1550  const uint8* src_v,
1551  uint8* dst_argb,
1552  const struct YuvConstants* yuvconstants,
1553  int width);
1554 void I422ToARGBRow_Any_NEON(const uint8* src_y,
1555  const uint8* src_u,
1556  const uint8* src_v,
1557  uint8* dst_argb,
1558  const struct YuvConstants* yuvconstants,
1559  int width);
1561  const uint8* src_u,
1562  const uint8* src_v,
1563  const uint8* src_a,
1564  uint8* dst_argb,
1565  const struct YuvConstants* yuvconstants,
1566  int width);
1567 void I422ToRGBARow_Any_NEON(const uint8* src_y,
1568  const uint8* src_u,
1569  const uint8* src_v,
1570  uint8* dst_argb,
1571  const struct YuvConstants* yuvconstants,
1572  int width);
1573 void I422ToRGB24Row_Any_NEON(const uint8* src_y,
1574  const uint8* src_u,
1575  const uint8* src_v,
1576  uint8* dst_argb,
1577  const struct YuvConstants* yuvconstants,
1578  int width);
1580  const uint8* src_u,
1581  const uint8* src_v,
1582  uint8* dst_argb,
1583  const struct YuvConstants* yuvconstants,
1584  int width);
1586  const uint8* src_u,
1587  const uint8* src_v,
1588  uint8* dst_argb,
1589  const struct YuvConstants* yuvconstants,
1590  int width);
1592  const uint8* src_u,
1593  const uint8* src_v,
1594  uint8* dst_argb,
1595  const struct YuvConstants* yuvconstants,
1596  int width);
1597 void NV12ToARGBRow_Any_NEON(const uint8* src_y,
1598  const uint8* src_uv,
1599  uint8* dst_argb,
1600  const struct YuvConstants* yuvconstants,
1601  int width);
1602 void NV21ToARGBRow_Any_NEON(const uint8* src_y,
1603  const uint8* src_vu,
1604  uint8* dst_argb,
1605  const struct YuvConstants* yuvconstants,
1606  int width);
1608  const uint8* src_uv,
1609  uint8* dst_argb,
1610  const struct YuvConstants* yuvconstants,
1611  int width);
1612 void YUY2ToARGBRow_Any_NEON(const uint8* src_yuy2,
1613  uint8* dst_argb,
1614  const struct YuvConstants* yuvconstants,
1615  int width);
1616 void UYVYToARGBRow_Any_NEON(const uint8* src_uyvy,
1617  uint8* dst_argb,
1618  const struct YuvConstants* yuvconstants,
1619  int width);
1620 void I422ToARGBRow_DSPR2(const uint8* src_y,
1621  const uint8* src_u,
1622  const uint8* src_v,
1623  uint8* dst_argb,
1624  const struct YuvConstants* yuvconstants,
1625  int width);
1626 void I422ToARGBRow_DSPR2(const uint8* src_y,
1627  const uint8* src_u,
1628  const uint8* src_v,
1629  uint8* dst_argb,
1630  const struct YuvConstants* yuvconstants,
1631  int width);
1632 
1633 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
1634 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
1635  uint8* dst_u, uint8* dst_v, int width);
1636 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
1637  uint8* dst_u, uint8* dst_v, int width);
1638 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
1639 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
1640  uint8* dst_u, uint8* dst_v, int width);
1641 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
1642  uint8* dst_u, uint8* dst_v, int width);
1643 void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
1644 void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
1645  uint8* dst_u, uint8* dst_v, int width);
1646 void YUY2ToUV422Row_NEON(const uint8* src_yuy2,
1647  uint8* dst_u, uint8* dst_v, int width);
1648 void YUY2ToYRow_MSA(const uint8* src_yuy2, uint8* dst_y, int width);
1649 void YUY2ToUVRow_MSA(const uint8* src_yuy2, int stride_yuy2,
1650  uint8* dst_u, uint8* dst_v, int width);
1651 void YUY2ToUV422Row_MSA(const uint8* src_yuy2,
1652  uint8* dst_u, uint8* dst_v, int width);
1653 void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int width);
1654 void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2,
1655  uint8* dst_u, uint8* dst_v, int width);
1656 void YUY2ToUV422Row_C(const uint8* src_yuy2,
1657  uint8* dst_u, uint8* dst_v, int width);
1658 void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
1659 void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, int stride_yuy2,
1660  uint8* dst_u, uint8* dst_v, int width);
1661 void YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2,
1662  uint8* dst_u, uint8* dst_v, int width);
1663 void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
1664 void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2,
1665  uint8* dst_u, uint8* dst_v, int width);
1666 void YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2,
1667  uint8* dst_u, uint8* dst_v, int width);
1668 void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
1669 void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2,
1670  uint8* dst_u, uint8* dst_v, int width);
1671 void YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2,
1672  uint8* dst_u, uint8* dst_v, int width);
1673 void YUY2ToYRow_Any_MSA(const uint8* src_yuy2, uint8* dst_y, int width);
1674 void YUY2ToUVRow_Any_MSA(const uint8* src_yuy2, int stride_yuy2,
1675  uint8* dst_u, uint8* dst_v, int width);
1676 void YUY2ToUV422Row_Any_MSA(const uint8* src_yuy2,
1677  uint8* dst_u, uint8* dst_v, int width);
1678 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
1679 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
1680  uint8* dst_u, uint8* dst_v, int width);
1681 void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
1682  uint8* dst_u, uint8* dst_v, int width);
1683 void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
1684 void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
1685  uint8* dst_u, uint8* dst_v, int width);
1686 void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
1687  uint8* dst_u, uint8* dst_v, int width);
1688 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
1689 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
1690  uint8* dst_u, uint8* dst_v, int width);
1691 void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
1692  uint8* dst_u, uint8* dst_v, int width);
1693 void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
1694 void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
1695  uint8* dst_u, uint8* dst_v, int width);
1696 void UYVYToUV422Row_NEON(const uint8* src_uyvy,
1697  uint8* dst_u, uint8* dst_v, int width);
1698 void UYVYToYRow_MSA(const uint8* src_uyvy, uint8* dst_y, int width);
1699 void UYVYToUVRow_MSA(const uint8* src_uyvy, int stride_uyvy,
1700  uint8* dst_u, uint8* dst_v, int width);
1701 void UYVYToUV422Row_MSA(const uint8* src_uyvy,
1702  uint8* dst_u, uint8* dst_v, int width);
1703 
1704 void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int width);
1705 void UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy,
1706  uint8* dst_u, uint8* dst_v, int width);
1707 void UYVYToUV422Row_C(const uint8* src_uyvy,
1708  uint8* dst_u, uint8* dst_v, int width);
1709 void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
1710 void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, int stride_uyvy,
1711  uint8* dst_u, uint8* dst_v, int width);
1712 void UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy,
1713  uint8* dst_u, uint8* dst_v, int width);
1714 void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
1715 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy,
1716  uint8* dst_u, uint8* dst_v, int width);
1717 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy,
1718  uint8* dst_u, uint8* dst_v, int width);
1719 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
1720 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy,
1721  uint8* dst_u, uint8* dst_v, int width);
1722 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy,
1723  uint8* dst_u, uint8* dst_v, int width);
1724 void UYVYToYRow_Any_MSA(const uint8* src_uyvy, uint8* dst_y, int width);
1725 void UYVYToUVRow_Any_MSA(const uint8* src_uyvy, int stride_uyvy,
1726  uint8* dst_u, uint8* dst_v, int width);
1727 void UYVYToUV422Row_Any_MSA(const uint8* src_uyvy,
1728  uint8* dst_u, uint8* dst_v, int width);
1729 
1730 void I422ToYUY2Row_C(const uint8* src_y,
1731  const uint8* src_u,
1732  const uint8* src_v,
1733  uint8* dst_yuy2, int width);
1734 void I422ToUYVYRow_C(const uint8* src_y,
1735  const uint8* src_u,
1736  const uint8* src_v,
1737  uint8* dst_uyvy, int width);
1738 void I422ToYUY2Row_SSE2(const uint8* src_y,
1739  const uint8* src_u,
1740  const uint8* src_v,
1741  uint8* dst_yuy2, int width);
1742 void I422ToUYVYRow_SSE2(const uint8* src_y,
1743  const uint8* src_u,
1744  const uint8* src_v,
1745  uint8* dst_uyvy, int width);
1746 void I422ToYUY2Row_Any_SSE2(const uint8* src_y,
1747  const uint8* src_u,
1748  const uint8* src_v,
1749  uint8* dst_yuy2, int width);
1750 void I422ToUYVYRow_Any_SSE2(const uint8* src_y,
1751  const uint8* src_u,
1752  const uint8* src_v,
1753  uint8* dst_uyvy, int width);
1754 void I422ToYUY2Row_NEON(const uint8* src_y,
1755  const uint8* src_u,
1756  const uint8* src_v,
1757  uint8* dst_yuy2, int width);
1758 void I422ToUYVYRow_NEON(const uint8* src_y,
1759  const uint8* src_u,
1760  const uint8* src_v,
1761  uint8* dst_uyvy, int width);
1762 void I422ToYUY2Row_Any_NEON(const uint8* src_y,
1763  const uint8* src_u,
1764  const uint8* src_v,
1765  uint8* dst_yuy2, int width);
1766 void I422ToUYVYRow_Any_NEON(const uint8* src_y,
1767  const uint8* src_u,
1768  const uint8* src_v,
1769  uint8* dst_uyvy, int width);
1770 void I422ToYUY2Row_MSA(const uint8* src_y,
1771  const uint8* src_u,
1772  const uint8* src_v,
1773  uint8* dst_yuy2, int width);
1774 void I422ToUYVYRow_MSA(const uint8* src_y,
1775  const uint8* src_u,
1776  const uint8* src_v,
1777  uint8* dst_uyvy, int width);
1778 void I422ToYUY2Row_Any_MSA(const uint8* src_y,
1779  const uint8* src_u,
1780  const uint8* src_v,
1781  uint8* dst_yuy2, int width);
1782 void I422ToUYVYRow_Any_MSA(const uint8* src_y,
1783  const uint8* src_u,
1784  const uint8* src_v,
1785  uint8* dst_uyvy, int width);
1786 
1787 // Effects related row functions.
1788 void ARGBAttenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width);
1789 void ARGBAttenuateRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width);
1790 void ARGBAttenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
1791 void ARGBAttenuateRow_NEON(const uint8* src_argb, uint8* dst_argb, int width);
1792 void ARGBAttenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
1793  int width);
1794 void ARGBAttenuateRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb,
1795  int width);
1796 void ARGBAttenuateRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
1797  int width);
1798 void ARGBAttenuateRow_Any_NEON(const uint8* src_argb, uint8* dst_argb,
1799  int width);
1800 
1801 // Inverse table for unattenuate, shared by C and SSE2.
1802 extern const uint32 fixed_invtbl8[256];
1803 void ARGBUnattenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width);
1804 void ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
1805 void ARGBUnattenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
1806 void ARGBUnattenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
1807  int width);
1808 void ARGBUnattenuateRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
1809  int width);
1810 
1811 void ARGBGrayRow_C(const uint8* src_argb, uint8* dst_argb, int width);
1812 void ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width);
1813 void ARGBGrayRow_NEON(const uint8* src_argb, uint8* dst_argb, int width);
1814 
1815 void ARGBSepiaRow_C(uint8* dst_argb, int width);
1816 void ARGBSepiaRow_SSSE3(uint8* dst_argb, int width);
1817 void ARGBSepiaRow_NEON(uint8* dst_argb, int width);
1818 
1819 void ARGBColorMatrixRow_C(const uint8* src_argb, uint8* dst_argb,
1820  const int8* matrix_argb, int width);
1821 void ARGBColorMatrixRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
1822  const int8* matrix_argb, int width);
1823 void ARGBColorMatrixRow_NEON(const uint8* src_argb, uint8* dst_argb,
1824  const int8* matrix_argb, int width);
1825 
1826 void ARGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width);
1827 void ARGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width);
1828 
1829 void RGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width);
1830 void RGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width);
1831 
1832 void ARGBQuantizeRow_C(uint8* dst_argb, int scale, int interval_size,
1833  int interval_offset, int width);
1834 void ARGBQuantizeRow_SSE2(uint8* dst_argb, int scale, int interval_size,
1835  int interval_offset, int width);
1836 void ARGBQuantizeRow_NEON(uint8* dst_argb, int scale, int interval_size,
1837  int interval_offset, int width);
1838 
1839 void ARGBShadeRow_C(const uint8* src_argb, uint8* dst_argb, int width,
1840  uint32 value);
1841 void ARGBShadeRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width,
1842  uint32 value);
1843 void ARGBShadeRow_NEON(const uint8* src_argb, uint8* dst_argb, int width,
1844  uint32 value);
1845 
1846 // Used for blur.
1847 void CumulativeSumToAverageRow_SSE2(const int32* topleft, const int32* botleft,
1848  int width, int area, uint8* dst, int count);
1849 void ComputeCumulativeSumRow_SSE2(const uint8* row, int32* cumsum,
1850  const int32* previous_cumsum, int width);
1851 
1852 void CumulativeSumToAverageRow_C(const int32* topleft, const int32* botleft,
1853  int width, int area, uint8* dst, int count);
1854 void ComputeCumulativeSumRow_C(const uint8* row, int32* cumsum,
1855  const int32* previous_cumsum, int width);
1856 
1857 LIBYUV_API
1858 void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride,
1859  uint8* dst_argb, const float* uv_dudv, int width);
1860 LIBYUV_API
1861 void ARGBAffineRow_SSE2(const uint8* src_argb, int src_argb_stride,
1862  uint8* dst_argb, const float* uv_dudv, int width);
1863 
1864 // Used for I420Scale, ARGBScale, and ARGBInterpolate.
1865 void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr,
1866  ptrdiff_t src_stride_ptr,
1867  int width, int source_y_fraction);
1868 void InterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr,
1869  ptrdiff_t src_stride_ptr, int width,
1870  int source_y_fraction);
1871 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr,
1872  ptrdiff_t src_stride_ptr, int width,
1873  int source_y_fraction);
1874 void InterpolateRow_NEON(uint8* dst_ptr, const uint8* src_ptr,
1875  ptrdiff_t src_stride_ptr, int width,
1876  int source_y_fraction);
1877 void InterpolateRow_DSPR2(uint8* dst_ptr, const uint8* src_ptr,
1878  ptrdiff_t src_stride_ptr, int width,
1879  int source_y_fraction);
1880 void InterpolateRow_Any_NEON(uint8* dst_ptr, const uint8* src_ptr,
1881  ptrdiff_t src_stride_ptr, int width,
1882  int source_y_fraction);
1883 void InterpolateRow_Any_SSSE3(uint8* dst_ptr, const uint8* src_ptr,
1884  ptrdiff_t src_stride_ptr, int width,
1885  int source_y_fraction);
1886 void InterpolateRow_Any_AVX2(uint8* dst_ptr, const uint8* src_ptr,
1887  ptrdiff_t src_stride_ptr, int width,
1888  int source_y_fraction);
1889 void InterpolateRow_Any_DSPR2(uint8* dst_ptr, const uint8* src_ptr,
1890  ptrdiff_t src_stride_ptr, int width,
1891  int source_y_fraction);
1892 
1893 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr,
1894  ptrdiff_t src_stride_ptr,
1895  int width, int source_y_fraction);
1896 
1897 // Sobel images.
1898 void SobelXRow_C(const uint8* src_y0, const uint8* src_y1, const uint8* src_y2,
1899  uint8* dst_sobelx, int width);
1900 void SobelXRow_SSE2(const uint8* src_y0, const uint8* src_y1,
1901  const uint8* src_y2, uint8* dst_sobelx, int width);
1902 void SobelXRow_NEON(const uint8* src_y0, const uint8* src_y1,
1903  const uint8* src_y2, uint8* dst_sobelx, int width);
1904 void SobelYRow_C(const uint8* src_y0, const uint8* src_y1,
1905  uint8* dst_sobely, int width);
1906 void SobelYRow_SSE2(const uint8* src_y0, const uint8* src_y1,
1907  uint8* dst_sobely, int width);
1908 void SobelYRow_NEON(const uint8* src_y0, const uint8* src_y1,
1909  uint8* dst_sobely, int width);
1910 void SobelRow_C(const uint8* src_sobelx, const uint8* src_sobely,
1911  uint8* dst_argb, int width);
1912 void SobelRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely,
1913  uint8* dst_argb, int width);
1914 void SobelRow_NEON(const uint8* src_sobelx, const uint8* src_sobely,
1915  uint8* dst_argb, int width);
1916 void SobelToPlaneRow_C(const uint8* src_sobelx, const uint8* src_sobely,
1917  uint8* dst_y, int width);
1918 void SobelToPlaneRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely,
1919  uint8* dst_y, int width);
1920 void SobelToPlaneRow_NEON(const uint8* src_sobelx, const uint8* src_sobely,
1921  uint8* dst_y, int width);
1922 void SobelXYRow_C(const uint8* src_sobelx, const uint8* src_sobely,
1923  uint8* dst_argb, int width);
1924 void SobelXYRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely,
1925  uint8* dst_argb, int width);
1926 void SobelXYRow_NEON(const uint8* src_sobelx, const uint8* src_sobely,
1927  uint8* dst_argb, int width);
1928 void SobelRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely,
1929  uint8* dst_argb, int width);
1930 void SobelRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely,
1931  uint8* dst_argb, int width);
1932 void SobelToPlaneRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely,
1933  uint8* dst_y, int width);
1934 void SobelToPlaneRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely,
1935  uint8* dst_y, int width);
1936 void SobelXYRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely,
1937  uint8* dst_argb, int width);
1938 void SobelXYRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely,
1939  uint8* dst_argb, int width);
1940 
1941 void ARGBPolynomialRow_C(const uint8* src_argb,
1942  uint8* dst_argb, const float* poly,
1943  int width);
1944 void ARGBPolynomialRow_SSE2(const uint8* src_argb,
1945  uint8* dst_argb, const float* poly,
1946  int width);
1947 void ARGBPolynomialRow_AVX2(const uint8* src_argb,
1948  uint8* dst_argb, const float* poly,
1949  int width);
1950 
1951 // Scale and convert to half float.
1952 void HalfFloatRow_C(const uint16* src, uint16* dst, float scale, int width);
1953 void HalfFloatRow_SSE2(const uint16* src, uint16* dst, float scale, int width);
1954 void HalfFloatRow_Any_SSE2(const uint16* src, uint16* dst, float scale,
1955  int width);
1956 void HalfFloatRow_AVX2(const uint16* src, uint16* dst, float scale, int width);
1957 void HalfFloatRow_Any_AVX2(const uint16* src, uint16* dst, float scale,
1958  int width);
1959 void HalfFloatRow_F16C(const uint16* src, uint16* dst, float scale, int width);
1960 void HalfFloatRow_Any_F16C(const uint16* src, uint16* dst, float scale,
1961  int width);
1962 void HalfFloatRow_NEON(const uint16* src, uint16* dst, float scale, int width);
1963 void HalfFloatRow_Any_NEON(const uint16* src, uint16* dst, float scale,
1964  int width);
1965 
1966 void ARGBLumaColorTableRow_C(const uint8* src_argb, uint8* dst_argb, int width,
1967  const uint8* luma, uint32 lumacoeff);
1968 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
1969  int width,
1970  const uint8* luma, uint32 lumacoeff);
1971 
1972 #ifdef __cplusplus
1973 } // extern "C"
1974 } // namespace libyuv
1975 #endif
1976 
1977 #endif // INCLUDE_LIBYUV_ROW_H_
void ARGB1555ToYRow_Any_NEON(const uint8 *src_argb1555, uint8 *dst_y, int width)
void ARGB4444ToUVRow_NEON(const uint8 *src_argb4444, int src_stride_argb4444, uint8 *dst_u, uint8 *dst_v, int width)
void MergeUVRow_SSE2(const uint8 *src_u, const uint8 *src_v, uint8 *dst_uv, int width)
void RGBAToUVRow_SSSE3(const uint8 *src_rgba, int src_stride_rgba, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBShuffleRow_NEON(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
void ARGBToYRow_Any_MSA(const uint8 *src_argb, uint8 *dst_y, int width)
void ARGB4444ToARGBRow_Any_NEON(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void SobelYRow_NEON(const uint8 *src_y0, const uint8 *src_y1, uint8 *dst_sobely, int width)
void ARGBCopyAlphaRow_Any_SSE2(const uint8 *src_argb, uint8 *dst_argb, int width)
void MergeUVRow_Any_NEON(const uint8 *src_u, const uint8 *src_v, uint8 *dst_uv, int width)
void ARGBToYRow_Any_SSSE3(const uint8 *src_argb, uint8 *dst_y, int width)
void I400ToARGBRow_SSE2(const uint8 *src_y, uint8 *dst_argb, int width)
void ARGBPolynomialRow_SSE2(const uint8 *src_argb, uint8 *dst_argb, const float *poly, int width)
void RGBAToUVRow_Any_SSSE3(const uint8 *src_rgba, int src_stride_rgba, uint8 *dst_u, uint8 *dst_v, int width)
void UYVYToUV422Row_Any_SSE2(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToUVJRow_SSSE3(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void J400ToARGBRow_Any_SSE2(const uint8 *src_y, uint8 *dst_argb, int width)
void NV12ToARGBRow_NEON(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
GLint GLsizei count
Definition: gl2.h:421
void CopyRow_Any_AVX(const uint8 *src, uint8 *dst, int count)
void MirrorRow_Any_NEON(const uint8 *src, uint8 *dst, int width)
void SobelXYRow_NEON(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void ARGB4444ToARGBRow_MSA(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void I422AlphaToARGBRow_Any_SSSE3(const uint8 *y_buf, const uint8 *u_buf, const uint8 *v_buf, const uint8 *a_buf, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBShuffleRow_Any_SSSE3(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
void RAWToARGBRow_SSSE3(const uint8 *src_raw, uint8 *dst_argb, int width)
void ARGB1555ToUVRow_Any_NEON(const uint8 *src_argb1555, int src_stride_argb1555, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBMirrorRow_C(const uint8 *src, uint8 *dst, int width)
Definition: row_common.cc:1697
void ARGBToRGBARow_C(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBExtractAlphaRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_a, int width)
void I422AlphaToARGBRow_SSSE3(const uint8 *y_buf, const uint8 *u_buf, const uint8 *v_buf, const uint8 *a_buf, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I444ToARGBRow_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1285
void ARGBToUVRow_AVX2(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToYJRow_SSSE3(const uint8 *src_argb, uint8 *dst_y, int width)
void YUY2ToYRow_Any_NEON(const uint8 *src_yuy2, uint8 *dst_y, int width)
void I444ToARGBRow_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB1555ToUVRow_C(const uint8 *src_argb1555, int src_stride_argb1555, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:528
void SetRow_C(uint8 *dst, uint8 v8, int count)
Definition: row_common.cc:1751
void RGB24ToYRow_Any_NEON(const uint8 *src_rgb24, uint8 *dst_y, int width)
void I422ToARGB1555Row_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void NV12ToRGB565Row_AVX2(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RAWToYRow_Any_NEON(const uint8 *src_raw, uint8 *dst_y, int width)
void J400ToARGBRow_SSE2(const uint8 *src_y, uint8 *dst_argb, int width)
void ARGBCopyYToAlphaRow_Any_SSE2(const uint8 *src_y, uint8 *dst_argb, int width)
void HalfFloatRow_C(const uint16 *src, uint16 *dst, float scale, int width)
Definition: row_common.cc:2269
void ARGBToUV444Row_SSSE3(const uint8 *src_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBMultiplyRow_NEON(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void I422ToUYVYRow_Any_SSE2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_uyvy, int width)
void ARGBMirrorRow_NEON(const uint8 *src, uint8 *dst, int width)
void ARGBSepiaRow_C(uint8 *dst_argb, int width)
Definition: row_common.cc:651
void SplitUVRow_AVX2(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToRGB24Row_Any_SSSE3(const uint8 *src_argb, uint8 *dst_rgb, int width)
void I422ToRGB565Row_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgb565, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1460
void InterpolateRow_Any_NEON(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void YUY2ToUVRow_Any_AVX2(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToUVRow_Any_NEON(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void RAWToARGBRow_NEON(const uint8 *src_raw, uint8 *dst_argb, int width)
void I422ToUYVYRow_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_uyvy, int width)
void ARGB1555ToARGBRow_AVX2(const uint8 *src_argb1555, uint8 *dst_argb, int width)
void I444ToARGBRow_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB4444ToUVRow_C(const uint8 *src_argb4444, int src_stride_argb4444, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:576
void ARGBToUV444Row_Any_SSSE3(const uint8 *src_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBAddRow_NEON(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void UYVYToUV422Row_NEON(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void BGRAToYRow_Any_SSSE3(const uint8 *src_bgra, uint8 *dst_y, int width)
void HalfFloatRow_Any_AVX2(const uint16 *src, uint16 *dst, float scale, int width)
void I422ToARGB1555Row_Any_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
uint8_t * dst_v
Definition: peerconnection_jni.cc:2274
void InterpolateRow_Any_SSSE3(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void ARGBAddRow_Any_NEON(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
int8 lvec8[32]
Definition: row.h:435
void MergeUVRow_AVX2(const uint8 *src_u, const uint8 *src_v, uint8 *dst_uv, int width)
void UYVYToUVRow_Any_NEON(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void I422ToRGBARow_Any_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
void NV12ToRGB565Row_Any_AVX2(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void UYVYToYRow_Any_NEON(const uint8 *src_uyvy, uint8 *dst_y, int width)
void NV12ToARGBRow_AVX2(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToRGB565Row_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void J400ToARGBRow_C(const uint8 *src_y, uint8 *dst_argb, int width)
Definition: row_common.cc:921
void YUY2ToYRow_Any_SSE2(const uint8 *src_yuy2, uint8 *dst_y, int width)
void I422ToARGBRow_Any_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToYUY2Row_SSE2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_yuy2, int width)
void ABGRToUVRow_Any_SSSE3(const uint8 *src_abgr, int src_stride_abgr, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBCopyYToAlphaRow_Any_AVX2(const uint8 *src_y, uint8 *dst_argb, int width)
int16 lvec16[16]
Definition: row.h:433
void ARGBCopyAlphaRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_argb, int width)
void MergeUVRow_NEON(const uint8 *src_u, const uint8 *src_v, uint8 *dst_uv, int width)
void UYVYToYRow_Any_MSA(const uint8 *src_uyvy, uint8 *dst_y, int width)
void ARGB1555ToYRow_C(const uint8 *src_argb1555, uint8 *dst_y, int width)
Definition: row_common.cc:451
void ARGBToUVRow_NEON(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToRGB565DitherRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_rgb, const uint32 dither4, int width)
void ARGBColorTableRow_X86(uint8 *dst_argb, const uint8 *table_argb, int width)
void ARGB1555ToYRow_NEON(const uint8 *src_argb1555, uint8 *dst_y, int width)
void NV12ToRGB565Row_Any_NEON(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void SetRow_ERMS(uint8 *dst, uint8 v8, int count)
void ARGBToYRow_AVX2(const uint8 *src_argb, uint8 *dst_y, int width)
void I422ToYUY2Row_MSA(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_yuy2, int width)
void ARGBToUVJRow_C(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBMirrorRow_Any_AVX2(const uint8 *src, uint8 *dst, int width)
void UYVYToYRow_MSA(const uint8 *src_uyvy, uint8 *dst_y, int width)
void ARGBToRGB565Row_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBMirrorRow_Any_SSE2(const uint8 *src, uint8 *dst, int width)
void YUY2ToARGBRow_AVX2(const uint8 *src_yuy2, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void YUY2ToYRow_MSA(const uint8 *src_yuy2, uint8 *dst_y, int width)
void ARGBExtractAlphaRow_AVX2(const uint8 *src_argb, uint8 *dst_a, int width)
void I422ToRGB24Row_Any_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I400ToARGBRow_C(const uint8 *src_y, uint8 *dst_argb, int width)
Definition: row_common.cc:1652
void ARGBShuffleRow_SSSE3(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
void SplitUVRow_Any_SSE2(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void YUY2ToUV422Row_Any_SSE2(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void RGB24ToARGBRow_Any_NEON(const uint8 *src_rgb24, uint8 *dst_argb, int width)
void ARGB1555ToARGBRow_Any_NEON(const uint8 *src_argb1555, uint8 *dst_argb, int width)
void SplitUVRow_SSE2(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToYJRow_NEON(const uint8 *src_argb, uint8 *dst_y, int width)
void RGBAToUVRow_C(const uint8 *src_rgba, int src_stride_rgba, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToYJRow_AVX2(const uint8 *src_argb, uint8 *dst_y, int width)
void I422ToARGBRow_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB4444ToARGBRow_C(const uint8 *src_argb, uint8 *dst_argb, int width)
Definition: row_common.cc:149
void I422ToYUY2Row_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_yuy2, int width)
Definition: row_common.cc:2172
EGLSurface EGLint EGLint EGLint width
Definition: eglext.h:950
void ARGBMultiplyRow_Any_AVX2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void I444ToARGBRow_Any_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RAWToRGB24Row_Any_SSSE3(const uint8 *src_raw, uint8 *dst_rgb24, int width)
void RGB24ToYRow_NEON(const uint8 *src_rgb24, uint8 *dst_y, int width)
void I422ToARGBRow_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1305
void RAWToYRow_SSSE3(const uint8 *src_raw, uint8 *dst_y, int width)
void I422ToRGBARow_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB4444ToARGBRow_SSE2(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void SobelToPlaneRow_SSE2(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_y, int width)
void ARGBExtractAlphaRow_SSE2(const uint8 *src_argb, uint8 *dst_a, int width)
void ARGBToRGB565DitherRow_SSE2(const uint8 *src_argb, uint8 *dst_rgb, const uint32 dither4, int width)
void SplitUVRow_Any_AVX2(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToYJRow_C(const uint8 *src_argb, uint8 *dst_y, int width)
void ARGBExtractAlphaRow_C(const uint8 *src_argb, uint8 *dst_a, int width)
Definition: row_common.cc:2327
void YUY2ToUV422Row_SSE2(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void UYVYToARGBRow_Any_SSSE3(const uint8 *src_uyvy, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToRGBARow_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1626
void ARGBToYRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_y, int width)
void I422ToRGB565Row_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgb565, const struct YuvConstants *yuvconstants, int width)
void J400ToARGBRow_AVX2(const uint8 *src_y, uint8 *dst_argb, int width)
#define SIMD_ALIGNED(var)
Definition: row.h:426
void ARGBToUVRow_SSSE3(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void I400ToARGBRow_NEON(const uint8 *src_y, uint8 *dst_argb, int width)
void ARGBColorTableRow_C(uint8 *dst_argb, const uint8 *table_argb, int width)
Definition: row_common.cc:696
void NV12ToARGBRow_Any_NEON(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RGB565ToARGBRow_SSE2(const uint8 *src_rgb565, uint8 *dst_argb, int width)
void ARGB4444ToYRow_C(const uint8 *src_argb4444, uint8 *dst_y, int width)
Definition: row_common.cc:466
void ARGBAttenuateRow_Any_NEON(const uint8 *src_argb, uint8 *dst_argb, int width)
void ARGBToRGB565Row_Any_SSE2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBAttenuateRow_NEON(const uint8 *src_argb, uint8 *dst_argb, int width)
void InterpolateRow_C(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
Definition: row_common.cc:2091
void I422ToARGB1555Row_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void SobelRow_SSE2(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void ARGBToRGB565DitherRow_NEON(const uint8 *src_argb, uint8 *dst_rgb, const uint32 dither4, int width)
void ARGBToARGB4444Row_AVX2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBShadeRow_NEON(const uint8 *src_argb, uint8 *dst_argb, int width, uint32 value)
void YUY2ToUVRow_AVX2(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
typedef(object or DOMString) AlgorithmIdentifier
void CopyRow_Any_SSE2(const uint8 *src, uint8 *dst, int count)
void ARGBSubtractRow_NEON(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void ARGBQuantizeRow_NEON(uint8 *dst_argb, int scale, int interval_size, int interval_offset, int width)
void I422ToARGB4444Row_Any_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
uint8_t * dst_y
Definition: peerconnection_jni.cc:2270
void ARGBUnattenuateRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_argb, int width)
void ARGBToYRow_C(const uint8 *src_argb, uint8 *dst_y, int width)
signed char int8
Definition: basic_types.h:63
void YUY2ToARGBRow_Any_SSSE3(const uint8 *src_yuy2, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB4444ToUVRow_Any_NEON(const uint8 *src_argb4444, int src_stride_argb4444, uint8 *dst_u, uint8 *dst_v, int width)
void SobelRow_C(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
Definition: row_common.cc:880
unsigned char uint8
Definition: basic_types.h:62
void SobelRow_Any_NEON(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void ARGBToRAWRow_Any_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void HalfFloatRow_Any_F16C(const uint16 *src, uint16 *dst, float scale, int width)
void SobelXYRow_C(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
Definition: row_common.cc:906
void RAWToYRow_Any_SSSE3(const uint8 *src_raw, uint8 *dst_y, int width)
void I422ToRGB24Row_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgb24, const struct YuvConstants *yuvconstants, int width)
void ARGBSubtractRow_C(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
Definition: row_common.cc:820
void ARGBExtractAlphaRow_Any_NEON(const uint8 *src_argb, uint8 *dst_a, int width)
void CumulativeSumToAverageRow_C(const int32 *topleft, const int32 *botleft, int width, int area, uint8 *dst, int count)
Definition: row_common.cc:2037
void MirrorRow_DSPR2(const uint8 *src, uint8 *dst, int width)
void I422ToARGBRow_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RGBColorTableRow_X86(uint8 *dst_argb, const uint8 *table_argb, int width)
void UYVYToUVRow_SSE2(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBAttenuateRow_SSSE3(const uint8 *src_argb, uint8 *dst_argb, int width)
void BGRAToUVRow_Any_NEON(const uint8 *src_bgra, int src_stride_bgra, uint8 *dst_u, uint8 *dst_v, int width)
void UYVYToYRow_NEON(const uint8 *src_uyvy, uint8 *dst_y, int width)
void ARGBToRGB565DitherRow_Any_NEON(const uint8 *src_argb, uint8 *dst_rgb, const uint32 dither4, int width)
void ARGBToRAWRow_SSSE3(const uint8 *src_argb, uint8 *dst_rgb, int width)
void YUY2ToUVRow_Any_SSE2(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void I422ToARGB4444Row_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB4444ToARGBRow_AVX2(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void MergeUVRow_C(const uint8 *src_u, const uint8 *src_v, uint8 *dst_uv, int width)
Definition: row_common.cc:1727
uint8 ulvec8[32]
Definition: row.h:438
void UYVYToARGBRow_Any_AVX2(const uint8 *src_uyvy, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBToARGB1555Row_Any_AVX2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void I444ToARGBRow_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void UYVYToARGBRow_NEON(const uint8 *src_uyvy, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void MirrorRow_AVX2(const uint8 *src, uint8 *dst, int width)
void UYVYToUV422Row_Any_MSA(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void RGB565ToARGBRow_NEON(const uint8 *src_rgb565, uint8 *dst_argb, int width)
void CopyRow_NEON(const uint8 *src, uint8 *dst, int count)
void ABGRToYRow_NEON(const uint8 *src_abgr, uint8 *dst_y, int width)
void UYVYToARGBRow_C(const uint8 *src_uyvy, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1604
void ARGBToUVJRow_AVX2(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToUV444Row_Any_NEON(const uint8 *src_argb, uint8 *dst_u, uint8 *dst_v, int width)
void InterpolateRow_SSSE3(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void SobelXYRow_SSE2(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void MirrorRow_Any_SSE2(const uint8 *src, uint8 *dst, int width)
void HalfFloatRow_Any_SSE2(const uint16 *src, uint16 *dst, float scale, int width)
void ARGBToARGB1555Row_SSE2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBSetRow_C(uint8 *dst_argb, uint32 v32, int count)
Definition: row_common.cc:1755
void ARGBSubtractRow_AVX2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void SplitUVRow_Any_NEON(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void ARGB1555ToARGBRow_Any_SSE2(const uint8 *src_argb1555, uint8 *dst_argb, int width)
void MirrorUVRow_C(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:1681
int16 vec16[8]
Definition: row.h:427
void I422ToRGB565Row_Any_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
void I400ToARGBRow_Any_NEON(const uint8 *src_y, uint8 *dst_argb, int width)
void MirrorRow_SSSE3(const uint8 *src, uint8 *dst, int width)
void ARGB1555ToUVRow_NEON(const uint8 *src_argb1555, int src_stride_argb1555, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToRGB24Row_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void MirrorUVRow_DSPR2(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void InterpolateRow_DSPR2(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void YUY2ToYRow_Any_MSA(const uint8 *src_yuy2, uint8 *dst_y, int width)
void ABGRToUVRow_NEON(const uint8 *src_abgr, int src_stride_abgr, uint8 *dst_u, uint8 *dst_v, int width)
void BlendPlaneRow_Any_AVX2(const uint8 *src0, const uint8 *src1, const uint8 *alpha, uint8 *dst, int width)
void ARGBAttenuateRow_C(const uint8 *src_argb, uint8 *dst_argb, int width)
Definition: row_common.cc:1922
void ARGBToRGB24Row_C(const uint8 *src_argb, uint8 *dst_rgb, int width)
Definition: row_common.cc:166
void ARGBShadeRow_SSE2(const uint8 *src_argb, uint8 *dst_argb, int width, uint32 value)
void ARGB4444ToARGBRow_Any_AVX2(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void ARGBSetRow_X86(uint8 *dst_argb, uint32 v32, int count)
void UYVYToUVRow_Any_SSE2(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void I422ToARGB4444Row_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToRGBARow_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
void ARGBPolynomialRow_AVX2(const uint8 *src_argb, uint8 *dst_argb, const float *poly, int width)
void ARGBAttenuateRow_AVX2(const uint8 *src_argb, uint8 *dst_argb, int width)
void RAWToRGB24Row_SSSE3(const uint8 *src_raw, uint8 *dst_rgb24, int width)
void SobelYRow_C(const uint8 *src_y0, const uint8 *src_y1, uint8 *dst_sobely, int width)
Definition: row_common.cc:862
GLenum GLenum dst
Definition: gl2ext.h:304
void InterpolateRow_Any_DSPR2(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void ARGBToRGB24Row_SSSE3(const uint8 *src_argb, uint8 *dst_rgb, int width)
void I422ToARGB1555Row_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb1555, const struct YuvConstants *yuvconstants, int width)
void RGBAToYRow_Any_SSSE3(const uint8 *src_rgba, uint8 *dst_y, int width)
void UYVYToYRow_Any_AVX2(const uint8 *src_uyvy, uint8 *dst_y, int width)
void HalfFloatRow_F16C(const uint16 *src, uint16 *dst, float scale, int width)
void ARGB1555ToARGBRow_SSE2(const uint8 *src_argb1555, uint8 *dst_argb, int width)
void ABGRToUVRow_SSSE3(const uint8 *src_abgr, int src_stride_abgr, uint8 *dst_u, uint8 *dst_v, int width)
void HalfFloatRow_NEON(const uint16 *src, uint16 *dst, float scale, int width)
void InterpolateRow_16_C(uint16 *dst_ptr, const uint16 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
Definition: row_common.cc:2121
void BlendPlaneRow_SSSE3(const uint8 *src0, const uint8 *src1, const uint8 *alpha, uint8 *dst, int width)
void ARGBToARGB1555Row_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void NV12ToARGBRow_Any_SSSE3(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void YUY2ToYRow_NEON(const uint8 *src_yuy2, uint8 *dst_y, int width)
void UYVYToUV422Row_SSE2(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void I422ToRGB565Row_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void UYVYToUV422Row_AVX2(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBQuantizeRow_C(uint8 *dst_argb, int scale, int interval_size, int interval_offset, int width)
Definition: row_common.cc:725
void RGB565ToUVRow_Any_NEON(const uint8 *src_rgb565, int src_stride_rgb565, uint8 *dst_u, uint8 *dst_v, int width)
void I444ToARGBRow_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void NV21ToARGBRow_SSSE3(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBToUVJRow_Any_SSSE3(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
uint16 ulvec16[16]
Definition: row.h:436
void RGB565ToARGBRow_Any_SSE2(const uint8 *src_rgb565, uint8 *dst_argb, int width)
void ARGBCopyAlphaRow_AVX2(const uint8 *src_argb, uint8 *dst_argb, int width)
void BlendPlaneRow_AVX2(const uint8 *src0, const uint8 *src1, const uint8 *alpha, uint8 *dst, int width)
void NV21ToARGBRow_Any_AVX2(const uint8 *src_y, const uint8 *src_vu, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB4444ToARGBRow_Any_SSE2(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void I422ToRGBARow_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
void YUY2ToUV422Row_AVX2(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void I422ToARGB1555Row_Any_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
void BGRAToUVRow_SSSE3(const uint8 *src_bgra, int src_stride_bgra, uint8 *dst_u, uint8 *dst_v, int width)
void SobelToPlaneRow_Any_SSE2(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_y, int width)
const uint32 fixed_invtbl8[256]
Definition: row_common.cc:1965
void RGB24ToUVRow_C(const uint8 *src_rgb24, int src_stride_rgb24, uint8 *dst_u, uint8 *dst_v, int width)
void UYVYToUVRow_AVX2(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBMirrorRow_AVX2(const uint8 *src, uint8 *dst, int width)
void UYVYToARGBRow_AVX2(const uint8 *src_uyvy, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void UYVYToYRow_AVX2(const uint8 *src_uyvy, uint8 *dst_y, int width)
void ARGBToARGB1555Row_AVX2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBExtractAlphaRow_Any_SSE2(const uint8 *src_argb, uint8 *dst_a, int width)
void ARGBSetRow_NEON(uint8 *dst_argb, uint32 v32, int count)
void YUY2ToUV422Row_Any_AVX2(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
uint8_t * src_u
Definition: peerconnection_jni.cc:2263
void I422ToUYVYRow_MSA(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_uyvy, int width)
void ARGBToARGB1555Row_C(const uint8 *src_argb, uint8 *dst_rgb, int width)
Definition: row_common.cc:250
void BGRAToYRow_C(const uint8 *src_bgra, uint8 *dst_y, int width)
void ABGRToUVRow_Any_NEON(const uint8 *src_abgr, int src_stride_abgr, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToARGB4444Row_Any_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void I422ToARGB4444Row_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb4444, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1382
void I400ToARGBRow_AVX2(const uint8 *src_y, uint8 *dst_argb, int width)
void ARGBAddRow_C(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
Definition: row_common.cc:795
void YUY2ToARGBRow_NEON(const uint8 *src_yuy2, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void SobelXRow_NEON(const uint8 *src_y0, const uint8 *src_y1, const uint8 *src_y2, uint8 *dst_sobelx, int width)
void ARGBAttenuateRow_Any_SSSE3(const uint8 *src_argb, uint8 *dst_argb, int width)
void CopyRow_MIPS(const uint8 *src, uint8 *dst, int count)
void CopyRow_SSE2(const uint8 *src, uint8 *dst, int count)
void ARGBColorMatrixRow_NEON(const uint8 *src_argb, uint8 *dst_argb, const int8 *matrix_argb, int width)
void BGRAToUVRow_NEON(const uint8 *src_bgra, int src_stride_bgra, uint8 *dst_u, uint8 *dst_v, int width)
void RGB24ToUVRow_NEON(const uint8 *src_rgb24, int src_stride_rgb24, uint8 *dst_u, uint8 *dst_v, int width)
EGLAttrib * value
Definition: eglext.h:120
void I422ToARGB4444Row_Any_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
void I422ToRGB565Row_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RGBAToUVRow_Any_NEON(const uint8 *src_rgba, int src_stride_rgba, uint8 *dst_u, uint8 *dst_v, int width)
void I422ToYUY2Row_Any_SSE2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_yuy2, int width)
void ARGBToRAWRow_C(const uint8 *src_argb, uint8 *dst_rgb, int width)
Definition: row_common.cc:180
void BlendPlaneRow_C(const uint8 *src0, const uint8 *src1, const uint8 *alpha, uint8 *dst, int width)
Definition: row_common.cc:1901
void ComputeCumulativeSumRow_SSE2(const uint8 *row, int32 *cumsum, const int32 *previous_cumsum, int width)
void UYVYToYRow_SSE2(const uint8 *src_uyvy, uint8 *dst_y, int width)
void ARGBToYJRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_y, int width)
void ARGBBlendRow_SSSE3(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void ARGBAttenuateRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_argb, int width)
void HalfFloatRow_Any_NEON(const uint16 *src, uint16 *dst, float scale, int width)
void ARGB4444ToARGBRow_NEON(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void YUY2ToYRow_AVX2(const uint8 *src_yuy2, uint8 *dst_y, int width)
void ARGBBlendRow_C(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
Definition: row_common.cc:1852
void I444ToARGBRow_Any_SSSE3(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void SobelXRow_C(const uint8 *src_y0, const uint8 *src_y1, const uint8 *src_y2, uint8 *dst_sobelx, int width)
Definition: row_common.cc:844
void I422ToYUY2Row_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_yuy2, int width)
void YUY2ToARGBRow_Any_AVX2(const uint8 *src_yuy2, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void YUY2ToUV422Row_Any_NEON(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void YUY2ToYRow_SSE2(const uint8 *src_yuy2, uint8 *dst_y, int width)
void ARGB4444ToYRow_NEON(const uint8 *src_argb4444, uint8 *dst_y, int width)
void InterpolateRow_Any_AVX2(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void NV12ToRGB565Row_Any_SSSE3(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void MirrorUVRow_NEON(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void NV12ToARGBRow_Any_AVX2(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBGrayRow_SSSE3(const uint8 *src_argb, uint8 *dst_argb, int width)
void UYVYToUVRow_MSA(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToRGB565Row_SSE2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void BGRAToYRow_Any_NEON(const uint8 *src_bgra, uint8 *dst_y, int width)
void ARGBToRGB565Row_Any_AVX2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void UYVYToUVRow_C(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:1806
void RGBAToYRow_SSSE3(const uint8 *src_rgba, uint8 *dst_y, int width)
void UYVYToUV422Row_MSA(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToARGB4444Row_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBToUVRow_Any_AVX2(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToRGB565Row_Any_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void NV12ToRGB565Row_SSSE3(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void SetRow_Any_NEON(uint8 *dst, uint8 v8, int count)
void ARGBMultiplyRow_SSE2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void ARGBSubtractRow_Any_SSE2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void UYVYToUVRow_Any_MSA(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void CopyRow_16_C(const uint16 *src, uint16 *dst, int count)
Definition: row_common.cc:1747
void SobelXYRow_Any_NEON(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void ARGBToUVJRow_Any_AVX2(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGB1555ToARGBRow_NEON(const uint8 *src_argb1555, uint8 *dst_argb, int width)
void SetRow_Any_X86(uint8 *dst, uint8 v8, int count)
uint8_t * src_y
Definition: peerconnection_jni.cc:2261
void BlendPlaneRow_Any_SSSE3(const uint8 *src0, const uint8 *src1, const uint8 *alpha, uint8 *dst, int width)
short int16
Definition: basic_types.h:61
void YUY2ToARGBRow_Any_NEON(const uint8 *src_yuy2, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBToUV444Row_NEON(const uint8 *src_argb, uint8 *dst_u, uint8 *dst_v, int width)
void RAWToARGBRow_C(const uint8 *src_raw, uint8 *dst_argb, int width)
Definition: row_common.cc:88
void SetRow_X86(uint8 *dst, uint8 v8, int count)
void ARGBToUVJRow_Any_NEON(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void RAWToYRow_C(const uint8 *src_raw, uint8 *dst_y, int width)
void ARGBToARGB4444Row_Any_AVX2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void SobelRow_Any_SSE2(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void ARGBLumaColorTableRow_C(const uint8 *src_argb, uint8 *dst_argb, int width, const uint8 *luma, uint32 lumacoeff)
Definition: row_common.cc:2278
void ARGBUnattenuateRow_C(const uint8 *src_argb, uint8 *dst_argb, int width)
Definition: row_common.cc:2000
void ARGBUnattenuateRow_Any_SSE2(const uint8 *src_argb, uint8 *dst_argb, int width)
void ARGBMultiplyRow_Any_SSE2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void RGB24ToARGBRow_Any_SSSE3(const uint8 *src_rgb24, uint8 *dst_argb, int width)
void ARGBUnattenuateRow_SSE2(const uint8 *src_argb, uint8 *dst_argb, int width)
void ARGBToYRow_MSA(const uint8 *src_argb, uint8 *dst_y, int width)
void RAWToUVRow_Any_NEON(const uint8 *src_raw, int src_stride_raw, uint8 *dst_u, uint8 *dst_v, int width)
uint8 uvec8[16]
Definition: row.h:432
void I422ToRGB565Row_Any_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgba, const struct YuvConstants *yuvconstants, int width)
void I422AlphaToARGBRow_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, const uint8 *src_a, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
LIBYUV_API void ARGBAffineRow_C(const uint8 *src_argb, int src_argb_stride, uint8 *dst_argb, const float *uv_dudv, int width)
Definition: row_common.cc:2054
void ARGBMultiplyRow_AVX2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void ARGBCopyAlphaRow_SSE2(const uint8 *src_argb, uint8 *dst_argb, int width)
void ARGBToUVRow_Any_SSSE3(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBShuffleRow_Any_NEON(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
void YUY2ToUVRow_C(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:1764
void ARGBToARGB1555Row_Any_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBPolynomialRow_C(const uint8 *src_argb, uint8 *dst_argb, const float *poly, int width)
Definition: row_common.cc:2219
int aint __attribute__((__aligned__(16)))
Definition: gcc-loops.cpp:73
void ARGBMirrorRow_Any_NEON(const uint8 *src, uint8 *dst, int width)
void ARGBCopyYToAlphaRow_C(const uint8 *src_y, uint8 *dst_argb, int width)
Definition: row_common.cc:2340
void RGB24ToYRow_SSSE3(const uint8 *src_rgb24, uint8 *dst_y, int width)
void RAWToRGB24Row_Any_NEON(const uint8 *src_raw, uint8 *dst_rgb24, int width)
void ABGRToYRow_Any_NEON(const uint8 *src_abgr, uint8 *dst_y, int width)
void SobelYRow_SSE2(const uint8 *src_y0, const uint8 *src_y1, uint8 *dst_sobely, int width)
void RAWToARGBRow_Any_SSSE3(const uint8 *src_raw, uint8 *dst_argb, int width)
void YUY2ToYRow_C(const uint8 *src_yuy2, uint8 *dst_y, int width)
Definition: row_common.cc:1792
void ARGBAddRow_SSE2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
GLfloat GLfloat GLfloat alpha
Definition: gl2.h:388
void BGRAToYRow_NEON(const uint8 *src_bgra, uint8 *dst_y, int width)
void ARGBColorMatrixRow_C(const uint8 *src_argb, uint8 *dst_argb, const int8 *matrix_argb, int width)
Definition: row_common.cc:670
void I422ToARGBRow_Any_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBMirrorRow_Any_MSA(const uint8 *src, uint8 *dst, int width)
void UYVYToUV422Row_Any_AVX2(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBSetRow_Any_NEON(uint8 *dst_argb, uint32 v32, int count)
void ARGBExtractAlphaRow_NEON(const uint8 *src_argb, uint8 *dst_a, int width)
void I422ToARGB4444Row_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RGB565ToYRow_Any_NEON(const uint8 *src_rgb565, uint8 *dst_y, int width)
void ARGBSubtractRow_Any_NEON(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void HalfFloatRow_SSE2(const uint16 *src, uint16 *dst, float scale, int width)
void RGB24ToARGBRow_C(const uint8 *src_rgb24, uint8 *dst_argb, int width)
Definition: row_common.cc:73
void ARGBToUVRow_Any_MSA(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBCopyYToAlphaRow_SSE2(const uint8 *src_y, uint8 *dst_argb, int width)
void MergeUVRow_Any_SSE2(const uint8 *src_u, const uint8 *src_v, uint8 *dst_uv, int width)
void YUY2ToUV422Row_MSA(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void I400ToARGBRow_Any_AVX2(const uint8 *src_y, uint8 *dst_argb, int width)
void NV21ToARGBRow_AVX2(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB1555ToARGBRow_C(const uint8 *src_argb, uint8 *dst_argb, int width)
Definition: row_common.cc:132
void SplitUVRow_Any_DSPR2(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBSepiaRow_NEON(uint8 *dst_argb, int width)
void I422ToARGB1555Row_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb4444, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1421
void UYVYToUVRow_NEON(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void ARGB1555ToARGBRow_Any_AVX2(const uint8 *src_argb1555, uint8 *dst_argb, int width)
void ARGBToARGB4444Row_C(const uint8 *src_argb, uint8 *dst_rgb, int width)
Definition: row_common.cc:277
void I422ToARGBRow_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
GLenum src
Definition: gl2ext.h:304
int8 vec8[16]
Definition: row.h:429
void CopyRow_AVX(const uint8 *src, uint8 *dst, int count)
void ARGBColorMatrixRow_SSSE3(const uint8 *src_argb, uint8 *dst_argb, const int8 *matrix_argb, int width)
void RGBAToYRow_Any_NEON(const uint8 *src_rgba, uint8 *dst_y, int width)
void ARGBToRGB565DitherRow_Any_SSE2(const uint8 *src_argb, uint8 *dst_rgb, const uint32 dither4, int width)
void ARGBToRGB565Row_C(const uint8 *src_argb, uint8 *dst_rgb, int width)
Definition: row_common.cc:194
void RGBAToUVRow_NEON(const uint8 *src_rgba, int src_stride_rgba, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToRGB565DitherRow_AVX2(const uint8 *src_argb, uint8 *dst_rgb, const uint32 dither4, int width)
void MirrorRow_MSA(const uint8 *src, uint8 *dst, int width)
void I422AlphaToARGBRow_Any_AVX2(const uint8 *y_buf, const uint8 *u_buf, const uint8 *v_buf, const uint8 *a_buf, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: basictypes_test.cc:14
void ABGRToYRow_Any_SSSE3(const uint8 *src_abgr, uint8 *dst_y, int width)
void I422ToRGB24Row_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgb24, const struct YuvConstants *yuvconstants, int width)
void ARGBToUVJRow_NEON(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBShuffleRow_SSE2(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
void ARGBToYRow_Any_NEON(const uint8 *src_argb, uint8 *dst_y, int width)
void UYVYToYRow_C(const uint8 *src_uyvy, uint8 *dst_y, int width)
Definition: row_common.cc:1834
void MirrorRow_Any_AVX2(const uint8 *src, uint8 *dst, int width)
void ARGBShuffleRow_Any_SSE2(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
std::integral_constant< std::ptrdiff_t, V > ptrdiff_t
Definition: Brigand.h:449
#define LIBYUV_API
Definition: basic_types.h:102
void MirrorRow_C(const uint8 *src, uint8 *dst, int width)
Definition: row_common.cc:1668
void RAWToRGB24Row_NEON(const uint8 *src_raw, uint8 *dst_rgb24, int width)
void RGBAToYRow_C(const uint8 *src_rgba, uint8 *dst_y, int width)
void RGB565ToYRow_C(const uint8 *src_rgb565, uint8 *dst_y, int width)
Definition: row_common.cc:436
void UYVYToUV422Row_C(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:1820
void J400ToARGBRow_Any_AVX2(const uint8 *src_y, uint8 *dst_argb, int width)
void ARGBAddRow_Any_SSE2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void ARGBMultiplyRow_C(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
Definition: row_common.cc:769
void SobelToPlaneRow_C(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_y, int width)
Definition: row_common.cc:895
unsigned short uint16
Definition: basic_types.h:60
void NV12ToARGBRow_C(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1498
void ARGBToYJRow_Any_SSSE3(const uint8 *src_argb, uint8 *dst_y, int width)
void I422ToARGBRow_DSPR2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToRGB24Row_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgb24, const struct YuvConstants *yuvconstants, int width)
void ARGBShuffleRow_C(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
Definition: row_common.cc:2149
void SplitUVRow_NEON(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void UYVYToARGBRow_SSSE3(const uint8 *src_uyvy, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBAttenuateRow_Any_SSE2(const uint8 *src_argb, uint8 *dst_argb, int width)
void RGBColorTableRow_C(uint8 *dst_argb, const uint8 *table_argb, int width)
Definition: row_common.cc:712
void BGRAToUVRow_C(const uint8 *src_bgra, int src_stride_bgra, uint8 *dst_u, uint8 *dst_v, int width)
void RAWToARGBRow_Any_NEON(const uint8 *src_raw, uint8 *dst_argb, int width)
void NV12ToRGB565Row_C(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1546
void ARGBCopyAlphaRow_C(const uint8 *src_argb, uint8 *dst_argb, int width)
Definition: row_common.cc:2314
void MergeUVRow_Any_AVX2(const uint8 *src_u, const uint8 *src_v, uint8 *dst_uv, int width)
void SobelXYRow_Any_SSE2(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void ARGBToARGB4444Row_Any_SSE2(const uint8 *src_argb, uint8 *dst_rgb, int width)
uint8_t * dst_u
Definition: peerconnection_jni.cc:2272
void SetRow_NEON(uint8 *dst, uint8 v8, int count)
void ARGBToRGB24Row_Any_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void NV21ToARGBRow_Any_NEON(const uint8 *src_y, const uint8 *src_vu, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToRGBARow_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
uint32 uvec32[4]
Definition: row.h:431
void I422ToYUY2Row_Any_MSA(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_yuy2, int width)
void UYVYToUVRow_Any_AVX2(const uint8 *src_uyvy, int stride_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void I422ToRGB24Row_Any_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToUYVYRow_Any_MSA(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_uyvy, int width)
void RAWToRGB24Row_C(const uint8 *src_raw, uint8 *dst_rgb24, int width)
Definition: row_common.cc:103
void ARGBGrayRow_C(const uint8 *src_argb, uint8 *dst_argb, int width)
Definition: row_common.cc:639
void RGB24ToYRow_Any_SSSE3(const uint8 *src_rgb24, uint8 *dst_y, int width)
void ARGBToYRow_NEON(const uint8 *src_argb, uint8 *dst_y, int width)
void YUY2ToUV422Row_Any_MSA(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToRAWRow_NEON(const uint8 *src_argb, uint8 *dst_rgb, int width)
void SplitUVRow_DSPR2(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void NV21ToARGBRow_NEON(const uint8 *src_y, const uint8 *src_vu, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422AlphaToARGBRow_NEON(const uint8 *y_buf, const uint8 *u_buf, const uint8 *v_buf, const uint8 *a_buf, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBMirrorRow_MSA(const uint8 *src, uint8 *dst, int width)
void ARGBUnattenuateRow_AVX2(const uint8 *src_argb, uint8 *dst_argb, int width)
void I422ToARGBRow_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGB4444ToYRow_Any_NEON(const uint8 *src_argb4444, uint8 *dst_y, int width)
void ARGBToYJRow_Any_NEON(const uint8 *src_argb, uint8 *dst_y, int width)
void BGRAToYRow_SSSE3(const uint8 *src_bgra, uint8 *dst_y, int width)
void YUY2ToARGBRow_SSSE3(const uint8 *src_yuy2, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RGB565ToUVRow_C(const uint8 *src_rgb565, int src_stride_rgb565, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:481
void CumulativeSumToAverageRow_SSE2(const int32 *topleft, const int32 *botleft, int width, int area, uint8 *dst, int count)
void RGB565ToYRow_NEON(const uint8 *src_rgb565, uint8 *dst_y, int width)
void ARGBQuantizeRow_SSE2(uint8 *dst_argb, int scale, int interval_size, int interval_offset, int width)
void ARGBToRAWRow_Any_SSSE3(const uint8 *src_argb, uint8 *dst_rgb, int width)
void MirrorUVRow_SSSE3(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
void CopyRow_ERMS(const uint8 *src, uint8 *dst, int count)
Definition: row.h:461
void ABGRToUVRow_C(const uint8 *src_abgr, int src_stride_abgr, uint8 *dst_u, uint8 *dst_v, int width)
void SobelRow_NEON(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_argb, int width)
void ARGBLumaColorTableRow_SSSE3(const uint8 *src_argb, uint8 *dst_argb, int width, const uint8 *luma, uint32 lumacoeff)
void I422AlphaToARGBRow_C(const uint8 *y_buf, const uint8 *u_buf, const uint8 *v_buf, const uint8 *a_buf, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1331
uint32_t uint32
Definition: angle_config.h:28
void RAWToYRow_NEON(const uint8 *src_raw, uint8 *dst_y, int width)
void RGB565ToARGBRow_Any_NEON(const uint8 *src_rgb565, uint8 *dst_argb, int width)
void ARGBToRGB565DitherRow_C(const uint8 *src_argb, uint8 *dst_rgb, const uint32 dither4, int width)
Definition: row_common.cc:224
void SobelToPlaneRow_Any_NEON(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_y, int width)
void I422ToUYVYRow_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_uyvy, int width)
Definition: row_common.cc:2195
void J400ToARGBRow_Any_NEON(const uint8 *src_y, uint8 *dst_argb, int width)
void RGB24ToUVRow_Any_NEON(const uint8 *src_rgb24, int src_stride_rgb24, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBBlendRow_NEON(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void I422ToARGB1555Row_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBShuffleRow_AVX2(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
void RGB24ToARGBRow_NEON(const uint8 *src_rgb24, uint8 *dst_argb, int width)
void RAWToUVRow_NEON(const uint8 *src_raw, int src_stride_raw, uint8 *dst_u, uint8 *dst_v, int width)
void YUY2ToUVRow_Any_NEON(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void I400ToARGBRow_Any_SSE2(const uint8 *src_y, uint8 *dst_argb, int width)
void ABGRToYRow_C(const uint8 *src_abgr, uint8 *dst_y, int width)
void YUY2ToYRow_Any_AVX2(const uint8 *src_yuy2, uint8 *dst_y, int width)
void MirrorRow_Any_SSSE3(const uint8 *src, uint8 *dst, int width)
uint8_t * src_v
Definition: peerconnection_jni.cc:2265
void ABGRToYRow_SSSE3(const uint8 *src_abgr, uint8 *dst_y, int width)
void RGB565ToUVRow_NEON(const uint8 *src_rgb565, int src_stride_rgb565, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToUVRow_MSA(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void InterpolateRow_AVX2(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void RAWToUVRow_C(const uint8 *src_raw, int src_stride_raw, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBToUVRow_C(const uint8 *src_argb, int src_stride_argb, uint8 *dst_u, uint8 *dst_v, int width)
void RGBAToYRow_NEON(const uint8 *src_rgba, uint8 *dst_y, int width)
void MirrorRow_NEON(const uint8 *src, uint8 *dst, int width)
void InterpolateRow_NEON(uint8 *dst_ptr, const uint8 *src_ptr, ptrdiff_t src_stride_ptr, int width, int source_y_fraction)
void MirrorRow_Any_MSA(const uint8 *src, uint8 *dst, int width)
uint16 uvec16[8]
Definition: row.h:430
void YUY2ToARGBRow_C(const uint8 *src_yuy2, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1582
void ARGBSubtractRow_Any_AVX2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void YUY2ToUVRow_MSA(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void YUY2ToUV422Row_C(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:1778
const GUID __declspec(selectany) SID_AccessibleComparable
void YUY2ToUVRow_Any_MSA(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBShuffleRow_Any_AVX2(const uint8 *src_argb, uint8 *dst_argb, const uint8 *shuffler, int width)
void NV21ToARGBRow_Any_SSSE3(const uint8 *src_y, const uint8 *src_vu, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void CopyRow_Any_NEON(const uint8 *src, uint8 *dst, int count)
void UYVYToARGBRow_Any_NEON(const uint8 *src_uyvy, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBMirrorRow_SSE2(const uint8 *src, uint8 *dst, int width)
void ARGBToARGB1555Row_Any_SSE2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBAddRow_AVX2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
LIBYUV_API void ARGBAffineRow_SSE2(const uint8 *src_argb, int src_argb_stride, uint8 *dst_argb, const float *uv_dudv, int width)
void I422ToRGBARow_Any_AVX2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RGB24ToARGBRow_SSSE3(const uint8 *src_rgb24, uint8 *dst_argb, int width)
void SobelToPlaneRow_NEON(const uint8 *src_sobelx, const uint8 *src_sobely, uint8 *dst_y, int width)
void I422ToYUY2Row_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_yuy2, int width)
void ARGBToARGB4444Row_SSE2(const uint8 *src_argb, uint8 *dst_rgb, int width)
uint32 ulvec32[8]
Definition: row.h:437
void CopyRow_C(const uint8 *src, uint8 *dst, int count)
Definition: row_common.cc:1743
void SobelXRow_SSE2(const uint8 *src_y0, const uint8 *src_y1, const uint8 *src_y2, uint8 *dst_sobelx, int width)
void RGB24ToYRow_C(const uint8 *src_rgb24, uint8 *dst_y, int width)
void J400ToARGBRow_NEON(const uint8 *src_y, uint8 *dst_argb, int width)
void YUY2ToUVRow_NEON(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBSepiaRow_SSSE3(uint8 *dst_argb, int width)
void YUY2ToUV422Row_NEON(const uint8 *src_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void BGRAToUVRow_Any_SSSE3(const uint8 *src_bgra, int src_stride_bgra, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBGrayRow_NEON(const uint8 *src_argb, uint8 *dst_argb, int width)
void I422ToRGB24Row_Any_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void I422ToUYVYRow_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_uyvy, int width)
void UYVYToUV422Row_Any_NEON(const uint8 *src_uyvy, uint8 *dst_u, uint8 *dst_v, int width)
void YUY2ToUVRow_SSE2(const uint8 *src_yuy2, int stride_yuy2, uint8 *dst_u, uint8 *dst_v, int width)
void ARGBSubtractRow_SSE2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void ARGBCopyYToAlphaRow_AVX2(const uint8 *src_y, uint8 *dst_argb, int width)
void ComputeCumulativeSumRow_C(const uint8 *row, int32 *cumsum, const int32 *previous_cumsum, int width)
Definition: row_common.cc:2021
void RGB565ToARGBRow_Any_AVX2(const uint8 *src_rgb565, uint8 *dst_argb, int width)
void SplitUVRow_C(const uint8 *src_uv, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:1712
void I422ToUYVYRow_SSE2(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_uyvy, int width)
void NV21ToARGBRow_C(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1522
void I422ToRGB24Row_C(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_rgb24, const struct YuvConstants *yuvconstants, int width)
Definition: row_common.cc:1359
int32_t int32
Definition: angle_config.h:27
void ARGBMultiplyRow_Any_NEON(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
int32 lvec32[8]
Definition: row.h:434
void ARGBAddRow_Any_AVX2(const uint8 *src_argb, const uint8 *src_argb1, uint8 *dst_argb, int width)
void UYVYToYRow_Any_SSE2(const uint8 *src_uyvy, uint8 *dst_y, int width)
void I422AlphaToARGBRow_AVX2(const uint8 *y_buf, const uint8 *u_buf, const uint8 *v_buf, const uint8 *a_buf, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void ARGBToRGB565Row_AVX2(const uint8 *src_argb, uint8 *dst_rgb, int width)
void ARGBToUV444Row_C(const uint8 *src_argb, uint8 *dst_u, uint8 *dst_v, int width)
Definition: row_common.cc:624
int32 vec32[4]
Definition: row.h:428
void ARGBToYRow_SSSE3(const uint8 *src_argb, uint8 *dst_y, int width)
void ARGB4444ToARGBRow_Any_MSA(const uint8 *src_argb4444, uint8 *dst_argb, int width)
void I422ToARGB4444Row_NEON(const uint8 *src_y, const uint8 *src_u, const uint8 *src_v, uint8 *dst_argb4444, const struct YuvConstants *yuvconstants, int width)
void ARGBShadeRow_C(const uint8 *src_argb, uint8 *dst_argb, int width, uint32 value)
Definition: row_common.cc:742
void HalfFloatRow_AVX2(const uint16 *src, uint16 *dst, float scale, int width)
void NV12ToARGBRow_SSSE3(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_argb, const struct YuvConstants *yuvconstants, int width)
void RGB565ToARGBRow_AVX2(const uint8 *src_rgb565, uint8 *dst_argb, int width)
void RGB565ToARGBRow_C(const uint8 *src_rgb, uint8 *dst_argb, int width)
Definition: row_common.cc:117
void NV12ToRGB565Row_NEON(const uint8 *src_y, const uint8 *src_uv, uint8 *dst_rgb565, const struct YuvConstants *yuvconstants, int width)