OLD | NEW |
(Empty) | |
| 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_ // NOLINT |
| 12 #define INCLUDE_LIBYUV_ROW_H_ |
| 13 |
| 14 #include <stdlib.h> // For malloc. |
| 15 |
| 16 #include "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 #ifdef __cplusplus |
| 26 #define align_buffer_64(var, size) \ |
| 27 uint8* var##_mem = reinterpret_cast<uint8*>(malloc((size) + 63)); \ |
| 28 uint8* var = reinterpret_cast<uint8*> \ |
| 29 ((reinterpret_cast<intptr_t>(var##_mem) + 63) & ~63) |
| 30 #else |
| 31 #define align_buffer_64(var, size) \ |
| 32 uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \ |
| 33 uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ |
| 34 #endif |
| 35 |
| 36 #define free_aligned_buffer_64(var) \ |
| 37 free(var##_mem); \ |
| 38 var = 0 |
| 39 |
| 40 #if defined(__pnacl__) || defined(__CLR_VER) || defined(COVERAGE_ENABLED) || \ |
| 41 defined(TARGET_IPHONE_SIMULATOR) |
| 42 #define LIBYUV_DISABLE_X86 |
| 43 #endif |
| 44 // True if compiling for SSSE3 as a requirement. |
| 45 #if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3)) |
| 46 #define LIBYUV_SSSE3_ONLY |
| 47 #endif |
| 48 |
| 49 // Enable for NaCL pepper 33 for bundle and AVX2 support. |
| 50 // #define NEW_BINUTILS |
| 51 |
| 52 // The following are available on all x86 platforms: |
| 53 #if !defined(LIBYUV_DISABLE_X86) && \ |
| 54 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) |
| 55 // Effects: |
| 56 #define HAS_ARGBADDROW_SSE2 |
| 57 #define HAS_ARGBAFFINEROW_SSE2 |
| 58 #define HAS_ARGBATTENUATEROW_SSSE3 |
| 59 #define HAS_ARGBBLENDROW_SSSE3 |
| 60 #define HAS_ARGBCOLORMATRIXROW_SSSE3 |
| 61 #define HAS_ARGBCOLORTABLEROW_X86 |
| 62 #define HAS_ARGBCOPYALPHAROW_SSE2 |
| 63 #define HAS_ARGBCOPYYTOALPHAROW_SSE2 |
| 64 #define HAS_ARGBGRAYROW_SSSE3 |
| 65 #define HAS_ARGBLUMACOLORTABLEROW_SSSE3 |
| 66 #define HAS_ARGBMIRRORROW_SSSE3 |
| 67 #define HAS_ARGBMULTIPLYROW_SSE2 |
| 68 #define HAS_ARGBPOLYNOMIALROW_SSE2 |
| 69 #define HAS_ARGBQUANTIZEROW_SSE2 |
| 70 #define HAS_ARGBSEPIAROW_SSSE3 |
| 71 #define HAS_ARGBSHADEROW_SSE2 |
| 72 #define HAS_ARGBSUBTRACTROW_SSE2 |
| 73 #define HAS_ARGBTOUVROW_SSSE3 |
| 74 #define HAS_ARGBUNATTENUATEROW_SSE2 |
| 75 #define HAS_COMPUTECUMULATIVESUMROW_SSE2 |
| 76 #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2 |
| 77 #define HAS_INTERPOLATEROW_SSE2 |
| 78 #define HAS_INTERPOLATEROW_SSSE3 |
| 79 #define HAS_RGBCOLORTABLEROW_X86 |
| 80 #define HAS_SOBELROW_SSE2 |
| 81 #define HAS_SOBELTOPLANEROW_SSE2 |
| 82 #define HAS_SOBELXROW_SSE2 |
| 83 #define HAS_SOBELXYROW_SSE2 |
| 84 #define HAS_SOBELYROW_SSE2 |
| 85 |
| 86 // Conversions: |
| 87 #define HAS_ABGRTOUVROW_SSSE3 |
| 88 #define HAS_ABGRTOYROW_SSSE3 |
| 89 #define HAS_ARGB1555TOARGBROW_SSE2 |
| 90 #define HAS_ARGB4444TOARGBROW_SSE2 |
| 91 #define HAS_ARGBSHUFFLEROW_SSE2 |
| 92 #define HAS_ARGBSHUFFLEROW_SSSE3 |
| 93 #define HAS_ARGBTOARGB1555ROW_SSE2 |
| 94 #define HAS_ARGBTOARGB4444ROW_SSE2 |
| 95 #define HAS_ARGBTOBAYERGGROW_SSE2 |
| 96 #define HAS_ARGBTOBAYERROW_SSSE3 |
| 97 #define HAS_ARGBTORAWROW_SSSE3 |
| 98 #define HAS_ARGBTORGB24ROW_SSSE3 |
| 99 #define HAS_ARGBTORGB565ROW_SSE2 |
| 100 #define HAS_ARGBTOUV422ROW_SSSE3 |
| 101 #define HAS_ARGBTOUV444ROW_SSSE3 |
| 102 #define HAS_ARGBTOUVJROW_SSSE3 |
| 103 #define HAS_ARGBTOYJROW_SSSE3 |
| 104 #define HAS_ARGBTOYROW_SSSE3 |
| 105 #define HAS_BGRATOUVROW_SSSE3 |
| 106 #define HAS_BGRATOYROW_SSSE3 |
| 107 #define HAS_COPYROW_ERMS |
| 108 #define HAS_COPYROW_SSE2 |
| 109 #define HAS_COPYROW_X86 |
| 110 #define HAS_HALFROW_SSE2 |
| 111 #define HAS_I400TOARGBROW_SSE2 |
| 112 #define HAS_I411TOARGBROW_SSSE3 |
| 113 #define HAS_I422TOARGB1555ROW_SSSE3 |
| 114 #define HAS_I422TOABGRROW_SSSE3 |
| 115 #define HAS_I422TOARGB1555ROW_SSSE3 |
| 116 #define HAS_I422TOARGB4444ROW_SSSE3 |
| 117 #define HAS_I422TOARGBROW_SSSE3 |
| 118 #define HAS_I422TOBGRAROW_SSSE3 |
| 119 #define HAS_I422TORAWROW_SSSE3 |
| 120 #define HAS_I422TORGB24ROW_SSSE3 |
| 121 #define HAS_I422TORGB565ROW_SSSE3 |
| 122 #define HAS_I422TORGBAROW_SSSE3 |
| 123 #define HAS_I422TOUYVYROW_SSE2 |
| 124 #define HAS_I422TOYUY2ROW_SSE2 |
| 125 #define HAS_I444TOARGBROW_SSSE3 |
| 126 #define HAS_MERGEUVROW_SSE2 |
| 127 #define HAS_MIRRORROW_SSE2 |
| 128 #define HAS_MIRRORROW_SSSE3 |
| 129 #define HAS_MIRRORROW_UV_SSSE3 |
| 130 #define HAS_MIRRORUVROW_SSSE3 |
| 131 #define HAS_NV12TOARGBROW_SSSE3 |
| 132 #define HAS_NV12TORGB565ROW_SSSE3 |
| 133 #define HAS_NV21TOARGBROW_SSSE3 |
| 134 #define HAS_NV21TORGB565ROW_SSSE3 |
| 135 #define HAS_RAWTOARGBROW_SSSE3 |
| 136 #define HAS_RAWTOYROW_SSSE3 |
| 137 #define HAS_RGB24TOARGBROW_SSSE3 |
| 138 #define HAS_RGB24TOYROW_SSSE3 |
| 139 #define HAS_RGB565TOARGBROW_SSE2 |
| 140 #define HAS_RGBATOUVROW_SSSE3 |
| 141 #define HAS_RGBATOYROW_SSSE3 |
| 142 #define HAS_SETROW_X86 |
| 143 #define HAS_SPLITUVROW_SSE2 |
| 144 #define HAS_UYVYTOARGBROW_SSSE3 |
| 145 #define HAS_UYVYTOUV422ROW_SSE2 |
| 146 #define HAS_UYVYTOUVROW_SSE2 |
| 147 #define HAS_UYVYTOYROW_SSE2 |
| 148 #define HAS_YTOARGBROW_SSE2 |
| 149 #define HAS_YUY2TOARGBROW_SSSE3 |
| 150 #define HAS_YUY2TOUV422ROW_SSE2 |
| 151 #define HAS_YUY2TOUVROW_SSE2 |
| 152 #define HAS_YUY2TOYROW_SSE2 |
| 153 #endif |
| 154 |
| 155 // GCC >= 4.7.0 required for AVX2. |
| 156 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) |
| 157 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) |
| 158 #define GCC_HAS_AVX2 1 |
| 159 #endif // GNUC >= 4.7 |
| 160 #endif // __GNUC__ |
| 161 |
| 162 // clang >= 3.4.0 required for AVX2. |
| 163 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) |
| 164 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4)) |
| 165 #define CLANG_HAS_AVX2 1 |
| 166 #endif // clang >= 3.4 |
| 167 #endif // __clang__ |
| 168 |
| 169 // Visual C 2012 required for AVX2. |
| 170 #if defined(_M_IX86) && defined(_MSC_VER) && _MSC_VER >= 1700 |
| 171 #define VISUALC_HAS_AVX2 1 |
| 172 #endif // VisualStudio >= 2012 |
| 173 |
| 174 // The following are available on all x86 platforms, but |
| 175 // require VS2012, clang 3.4 or gcc 4.7. |
| 176 // The code supports NaCL but requires a new compiler and validator. |
| 177 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \ |
| 178 defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) |
| 179 // Effects: |
| 180 #define HAS_ARGBPOLYNOMIALROW_AVX2 |
| 181 #define HAS_ARGBSHUFFLEROW_AVX2 |
| 182 #define HAS_ARGBCOPYALPHAROW_AVX2 |
| 183 #define HAS_ARGBCOPYYTOALPHAROW_AVX2 |
| 184 #endif |
| 185 |
| 186 // The following are require VS2012. |
| 187 // TODO(fbarchard): Port to gcc. |
| 188 #if !defined(LIBYUV_DISABLE_X86) && defined(VISUALC_HAS_AVX2) |
| 189 #define HAS_ARGBTOUVROW_AVX2 |
| 190 #define HAS_ARGBTOYJROW_AVX2 |
| 191 #define HAS_ARGBTOYROW_AVX2 |
| 192 #define HAS_HALFROW_AVX2 |
| 193 #define HAS_I422TOARGBROW_AVX2 |
| 194 #define HAS_INTERPOLATEROW_AVX2 |
| 195 #define HAS_MERGEUVROW_AVX2 |
| 196 #define HAS_MIRRORROW_AVX2 |
| 197 #define HAS_SPLITUVROW_AVX2 |
| 198 #define HAS_UYVYTOUV422ROW_AVX2 |
| 199 #define HAS_UYVYTOUVROW_AVX2 |
| 200 #define HAS_UYVYTOYROW_AVX2 |
| 201 #define HAS_YUY2TOUV422ROW_AVX2 |
| 202 #define HAS_YUY2TOUVROW_AVX2 |
| 203 #define HAS_YUY2TOYROW_AVX2 |
| 204 |
| 205 // Effects: |
| 206 #define HAS_ARGBADDROW_AVX2 |
| 207 #define HAS_ARGBATTENUATEROW_AVX2 |
| 208 #define HAS_ARGBMIRRORROW_AVX2 |
| 209 #define HAS_ARGBMULTIPLYROW_AVX2 |
| 210 #define HAS_ARGBSUBTRACTROW_AVX2 |
| 211 #define HAS_ARGBUNATTENUATEROW_AVX2 |
| 212 #endif // defined(VISUALC_HAS_AVX2) |
| 213 |
| 214 // The following are Yasm x86 only: |
| 215 // TODO(fbarchard): Port AVX2 to inline. |
| 216 #if !defined(LIBYUV_DISABLE_X86) && defined(HAVE_YASM) |
| 217 (defined(_M_IX86) || defined(_M_X64) || \ |
| 218 defined(__x86_64__) || defined(__i386__)) |
| 219 #define HAS_MERGEUVROW_AVX2 |
| 220 #define HAS_MERGEUVROW_MMX |
| 221 #define HAS_SPLITUVROW_AVX2 |
| 222 #define HAS_SPLITUVROW_MMX |
| 223 #define HAS_UYVYTOYROW_AVX2 |
| 224 #define HAS_UYVYTOYROW_MMX |
| 225 #define HAS_YUY2TOYROW_AVX2 |
| 226 #define HAS_YUY2TOYROW_MMX |
| 227 #endif |
| 228 |
| 229 // The following are disabled when SSSE3 is available: |
| 230 #if !defined(LIBYUV_DISABLE_X86) && \ |
| 231 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \ |
| 232 !defined(LIBYUV_SSSE3_ONLY) |
| 233 #define HAS_ARGBBLENDROW_SSE2 |
| 234 #define HAS_ARGBATTENUATEROW_SSE2 |
| 235 #define HAS_MIRRORROW_SSE2 |
| 236 #endif |
| 237 |
| 238 // The following are available on Neon platforms: |
| 239 #if !defined(LIBYUV_DISABLE_NEON) && \ |
| 240 (defined(__ARM_NEON__) || defined(LIBYUV_NEON)) |
| 241 #define HAS_ABGRTOUVROW_NEON |
| 242 #define HAS_ABGRTOYROW_NEON |
| 243 #define HAS_ARGB1555TOARGBROW_NEON |
| 244 #define HAS_ARGB1555TOUVROW_NEON |
| 245 #define HAS_ARGB1555TOYROW_NEON |
| 246 #define HAS_ARGB4444TOARGBROW_NEON |
| 247 #define HAS_ARGB4444TOUVROW_NEON |
| 248 #define HAS_ARGB4444TOYROW_NEON |
| 249 #define HAS_ARGBTOARGB1555ROW_NEON |
| 250 #define HAS_ARGBTOARGB4444ROW_NEON |
| 251 #define HAS_ARGBTOBAYERROW_NEON |
| 252 #define HAS_ARGBTOBAYERGGROW_NEON |
| 253 #define HAS_ARGBTORAWROW_NEON |
| 254 #define HAS_ARGBTORGB24ROW_NEON |
| 255 #define HAS_ARGBTORGB565ROW_NEON |
| 256 #define HAS_ARGBTOUV411ROW_NEON |
| 257 #define HAS_ARGBTOUV422ROW_NEON |
| 258 #define HAS_ARGBTOUV444ROW_NEON |
| 259 #define HAS_ARGBTOUVROW_NEON |
| 260 #define HAS_ARGBTOUVJROW_NEON |
| 261 #define HAS_ARGBTOYROW_NEON |
| 262 #define HAS_ARGBTOYJROW_NEON |
| 263 #define HAS_BGRATOUVROW_NEON |
| 264 #define HAS_BGRATOYROW_NEON |
| 265 #define HAS_COPYROW_NEON |
| 266 #define HAS_HALFROW_NEON |
| 267 #define HAS_I400TOARGBROW_NEON |
| 268 #define HAS_I411TOARGBROW_NEON |
| 269 #define HAS_I422TOABGRROW_NEON |
| 270 #define HAS_I422TOARGB1555ROW_NEON |
| 271 #define HAS_I422TOARGB4444ROW_NEON |
| 272 #define HAS_I422TOARGBROW_NEON |
| 273 #define HAS_I422TOBGRAROW_NEON |
| 274 #define HAS_I422TORAWROW_NEON |
| 275 #define HAS_I422TORGB24ROW_NEON |
| 276 #define HAS_I422TORGB565ROW_NEON |
| 277 #define HAS_I422TORGBAROW_NEON |
| 278 #define HAS_I422TOUYVYROW_NEON |
| 279 #define HAS_I422TOYUY2ROW_NEON |
| 280 #define HAS_I444TOARGBROW_NEON |
| 281 #define HAS_MERGEUVROW_NEON |
| 282 #define HAS_MIRRORROW_NEON |
| 283 #define HAS_MIRRORUVROW_NEON |
| 284 #define HAS_NV12TOARGBROW_NEON |
| 285 #define HAS_NV12TORGB565ROW_NEON |
| 286 #define HAS_NV21TOARGBROW_NEON |
| 287 #define HAS_NV21TORGB565ROW_NEON |
| 288 #define HAS_RAWTOARGBROW_NEON |
| 289 #define HAS_RAWTOUVROW_NEON |
| 290 #define HAS_RAWTOYROW_NEON |
| 291 #define HAS_RGB24TOARGBROW_NEON |
| 292 #define HAS_RGB24TOUVROW_NEON |
| 293 #define HAS_RGB24TOYROW_NEON |
| 294 #define HAS_RGB565TOARGBROW_NEON |
| 295 #define HAS_RGB565TOUVROW_NEON |
| 296 #define HAS_RGB565TOYROW_NEON |
| 297 #define HAS_RGBATOUVROW_NEON |
| 298 #define HAS_RGBATOYROW_NEON |
| 299 #define HAS_SETROW_NEON |
| 300 #define HAS_SPLITUVROW_NEON |
| 301 #define HAS_UYVYTOARGBROW_NEON |
| 302 #define HAS_UYVYTOUV422ROW_NEON |
| 303 #define HAS_UYVYTOUVROW_NEON |
| 304 #define HAS_UYVYTOYROW_NEON |
| 305 #define HAS_YTOARGBROW_NEON |
| 306 #define HAS_YUY2TOARGBROW_NEON |
| 307 #define HAS_YUY2TOUV422ROW_NEON |
| 308 #define HAS_YUY2TOUVROW_NEON |
| 309 #define HAS_YUY2TOYROW_NEON |
| 310 |
| 311 // Effects: |
| 312 #define HAS_ARGBADDROW_NEON |
| 313 #define HAS_ARGBATTENUATEROW_NEON |
| 314 #define HAS_ARGBBLENDROW_NEON |
| 315 #define HAS_ARGBGRAYROW_NEON |
| 316 #define HAS_ARGBMIRRORROW_NEON |
| 317 #define HAS_ARGBMULTIPLYROW_NEON |
| 318 #define HAS_ARGBQUANTIZEROW_NEON |
| 319 #define HAS_ARGBSEPIAROW_NEON |
| 320 #define HAS_ARGBSHADEROW_NEON |
| 321 #define HAS_ARGBSUBTRACTROW_NEON |
| 322 #define HAS_SOBELROW_NEON |
| 323 #define HAS_SOBELTOPLANEROW_NEON |
| 324 #define HAS_SOBELXYROW_NEON |
| 325 #define HAS_SOBELXROW_NEON |
| 326 #define HAS_SOBELYROW_NEON |
| 327 #define HAS_INTERPOLATEROW_NEON |
| 328 // TODO(fbarchard): Investigate neon unittest failure. |
| 329 // #define HAS_ARGBCOLORMATRIXROW_NEON |
| 330 #endif |
| 331 |
| 332 // The following are available on Mips platforms: |
| 333 #if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) |
| 334 #define HAS_COPYROW_MIPS |
| 335 #if defined(__mips_dsp) && (__mips_dsp_rev >= 2) |
| 336 #define HAS_I422TOABGRROW_MIPS_DSPR2 |
| 337 #define HAS_I422TOARGBROW_MIPS_DSPR2 |
| 338 #define HAS_I422TOBGRAROW_MIPS_DSPR2 |
| 339 #define HAS_INTERPOLATEROWS_MIPS_DSPR2 |
| 340 #define HAS_MIRRORROW_MIPS_DSPR2 |
| 341 #define HAS_MIRRORUVROW_MIPS_DSPR2 |
| 342 #define HAS_SPLITUVROW_MIPS_DSPR2 |
| 343 #endif |
| 344 #endif |
| 345 |
| 346 #if defined(_MSC_VER) && !defined(__CLR_VER) |
| 347 #define SIMD_ALIGNED(var) __declspec(align(16)) var |
| 348 typedef __declspec(align(16)) int16 vec16[8]; |
| 349 typedef __declspec(align(16)) int32 vec32[4]; |
| 350 typedef __declspec(align(16)) int8 vec8[16]; |
| 351 typedef __declspec(align(16)) uint16 uvec16[8]; |
| 352 typedef __declspec(align(16)) uint32 uvec32[4]; |
| 353 typedef __declspec(align(16)) uint8 uvec8[16]; |
| 354 typedef __declspec(align(32)) int16 lvec16[16]; |
| 355 typedef __declspec(align(32)) int32 lvec32[8]; |
| 356 typedef __declspec(align(32)) int8 lvec8[32]; |
| 357 typedef __declspec(align(32)) uint16 ulvec16[16]; |
| 358 typedef __declspec(align(32)) uint32 ulvec32[8]; |
| 359 typedef __declspec(align(32)) uint8 ulvec8[32]; |
| 360 |
| 361 #elif defined(__GNUC__) |
| 362 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. |
| 363 #define SIMD_ALIGNED(var) var __attribute__((aligned(16))) |
| 364 typedef int16 __attribute__((vector_size(16))) vec16; |
| 365 typedef int32 __attribute__((vector_size(16))) vec32; |
| 366 typedef int8 __attribute__((vector_size(16))) vec8; |
| 367 typedef uint16 __attribute__((vector_size(16))) uvec16; |
| 368 typedef uint32 __attribute__((vector_size(16))) uvec32; |
| 369 typedef uint8 __attribute__((vector_size(16))) uvec8; |
| 370 #else |
| 371 #define SIMD_ALIGNED(var) var |
| 372 typedef int16 vec16[8]; |
| 373 typedef int32 vec32[4]; |
| 374 typedef int8 vec8[16]; |
| 375 typedef uint16 uvec16[8]; |
| 376 typedef uint32 uvec32[4]; |
| 377 typedef uint8 uvec8[16]; |
| 378 #endif |
| 379 |
| 380 #if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__) |
| 381 #define OMITFP |
| 382 #else |
| 383 #define OMITFP __attribute__((optimize("omit-frame-pointer"))) |
| 384 #endif |
| 385 |
| 386 // NaCL macros for GCC x86 and x64. |
| 387 |
| 388 // TODO(nfullagar): When pepper_33 toolchain is distributed, default to |
| 389 // NEW_BINUTILS and remove all BUNDLEALIGN occurances. |
| 390 #if defined(__native_client__) |
| 391 #define LABELALIGN ".p2align 5\n" |
| 392 #else |
| 393 #define LABELALIGN ".p2align 2\n" |
| 394 #endif |
| 395 #if defined(__native_client__) && defined(__x86_64__) |
| 396 #if defined(NEW_BINUTILS) |
| 397 #define BUNDLELOCK ".bundle_lock\n" |
| 398 #define BUNDLEUNLOCK ".bundle_unlock\n" |
| 399 #define BUNDLEALIGN "\n" |
| 400 #else |
| 401 #define BUNDLELOCK "\n" |
| 402 #define BUNDLEUNLOCK "\n" |
| 403 #define BUNDLEALIGN ".p2align 5\n" |
| 404 #endif |
| 405 #define MEMACCESS(base) "%%nacl:(%%r15,%q" #base ")" |
| 406 #define MEMACCESS2(offset, base) "%%nacl:" #offset "(%%r15,%q" #base ")" |
| 407 #define MEMLEA(offset, base) #offset "(%q" #base ")" |
| 408 #define MEMLEA3(offset, index, scale) \ |
| 409 #offset "(,%q" #index "," #scale ")" |
| 410 #define MEMLEA4(offset, base, index, scale) \ |
| 411 #offset "(%q" #base ",%q" #index "," #scale ")" |
| 412 #define MEMMOVESTRING(s, d) "%%nacl:(%q" #s "),%%nacl:(%q" #d "), %%r15" |
| 413 #define MEMSTORESTRING(reg, d) "%%" #reg ",%%nacl:(%q" #d "), %%r15" |
| 414 #define MEMOPREG(opcode, offset, base, index, scale, reg) \ |
| 415 BUNDLELOCK \ |
| 416 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ |
| 417 #opcode " (%%r15,%%r14),%%" #reg "\n" \ |
| 418 BUNDLEUNLOCK |
| 419 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \ |
| 420 BUNDLELOCK \ |
| 421 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ |
| 422 #opcode " %%" #reg ",(%%r15,%%r14)\n" \ |
| 423 BUNDLEUNLOCK |
| 424 #define MEMOPARG(opcode, offset, base, index, scale, arg) \ |
| 425 BUNDLELOCK \ |
| 426 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ |
| 427 #opcode " (%%r15,%%r14),%" #arg "\n" \ |
| 428 BUNDLEUNLOCK |
| 429 #else |
| 430 #define BUNDLEALIGN "\n" |
| 431 #define MEMACCESS(base) "(%" #base ")" |
| 432 #define MEMACCESS2(offset, base) #offset "(%" #base ")" |
| 433 #define MEMLEA(offset, base) #offset "(%" #base ")" |
| 434 #define MEMLEA3(offset, index, scale) \ |
| 435 #offset "(,%" #index "," #scale ")" |
| 436 #define MEMLEA4(offset, base, index, scale) \ |
| 437 #offset "(%" #base ",%" #index "," #scale ")" |
| 438 #define MEMMOVESTRING(s, d) |
| 439 #define MEMSTORESTRING(reg, d) |
| 440 #define MEMOPREG(opcode, offset, base, index, scale, reg) \ |
| 441 #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n" |
| 442 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \ |
| 443 #opcode " %%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n" |
| 444 #define MEMOPARG(opcode, offset, base, index, scale, arg) \ |
| 445 #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n" |
| 446 #endif |
| 447 |
| 448 void I444ToARGBRow_NEON(const uint8* src_y, |
| 449 const uint8* src_u, |
| 450 const uint8* src_v, |
| 451 uint8* dst_argb, |
| 452 int width); |
| 453 void I422ToARGBRow_NEON(const uint8* src_y, |
| 454 const uint8* src_u, |
| 455 const uint8* src_v, |
| 456 uint8* dst_argb, |
| 457 int width); |
| 458 void I411ToARGBRow_NEON(const uint8* src_y, |
| 459 const uint8* src_u, |
| 460 const uint8* src_v, |
| 461 uint8* dst_argb, |
| 462 int width); |
| 463 void I422ToBGRARow_NEON(const uint8* src_y, |
| 464 const uint8* src_u, |
| 465 const uint8* src_v, |
| 466 uint8* dst_bgra, |
| 467 int width); |
| 468 void I422ToABGRRow_NEON(const uint8* src_y, |
| 469 const uint8* src_u, |
| 470 const uint8* src_v, |
| 471 uint8* dst_abgr, |
| 472 int width); |
| 473 void I422ToRGBARow_NEON(const uint8* src_y, |
| 474 const uint8* src_u, |
| 475 const uint8* src_v, |
| 476 uint8* dst_rgba, |
| 477 int width); |
| 478 void I422ToRGB24Row_NEON(const uint8* src_y, |
| 479 const uint8* src_u, |
| 480 const uint8* src_v, |
| 481 uint8* dst_rgb24, |
| 482 int width); |
| 483 void I422ToRAWRow_NEON(const uint8* src_y, |
| 484 const uint8* src_u, |
| 485 const uint8* src_v, |
| 486 uint8* dst_raw, |
| 487 int width); |
| 488 void I422ToRGB565Row_NEON(const uint8* src_y, |
| 489 const uint8* src_u, |
| 490 const uint8* src_v, |
| 491 uint8* dst_rgb565, |
| 492 int width); |
| 493 void I422ToARGB1555Row_NEON(const uint8* src_y, |
| 494 const uint8* src_u, |
| 495 const uint8* src_v, |
| 496 uint8* dst_argb1555, |
| 497 int width); |
| 498 void I422ToARGB4444Row_NEON(const uint8* src_y, |
| 499 const uint8* src_u, |
| 500 const uint8* src_v, |
| 501 uint8* dst_argb4444, |
| 502 int width); |
| 503 void NV12ToARGBRow_NEON(const uint8* src_y, |
| 504 const uint8* src_uv, |
| 505 uint8* dst_argb, |
| 506 int width); |
| 507 void NV21ToARGBRow_NEON(const uint8* src_y, |
| 508 const uint8* src_vu, |
| 509 uint8* dst_argb, |
| 510 int width); |
| 511 void NV12ToRGB565Row_NEON(const uint8* src_y, |
| 512 const uint8* src_uv, |
| 513 uint8* dst_rgb565, |
| 514 int width); |
| 515 void NV21ToRGB565Row_NEON(const uint8* src_y, |
| 516 const uint8* src_vu, |
| 517 uint8* dst_rgb565, |
| 518 int width); |
| 519 void YUY2ToARGBRow_NEON(const uint8* src_yuy2, |
| 520 uint8* dst_argb, |
| 521 int width); |
| 522 void UYVYToARGBRow_NEON(const uint8* src_uyvy, |
| 523 uint8* dst_argb, |
| 524 int width); |
| 525 |
| 526 void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix); |
| 527 void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix); |
| 528 void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); |
| 529 void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix); |
| 530 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix); |
| 531 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); |
| 532 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix); |
| 533 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix); |
| 534 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix); |
| 535 void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix); |
| 536 void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int pix); |
| 537 void ARGBToYRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); |
| 538 void ARGBToYJRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); |
| 539 void BGRAToYRow_Unaligned_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix); |
| 540 void ABGRToYRow_Unaligned_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix); |
| 541 void RGBAToYRow_Unaligned_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix); |
| 542 void RGB24ToYRow_Unaligned_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix); |
| 543 void RAWToYRow_Unaligned_SSSE3(const uint8* src_raw, uint8* dst_y, int pix); |
| 544 void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix); |
| 545 void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix); |
| 546 void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, |
| 547 int pix); |
| 548 void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, |
| 549 int pix); |
| 550 void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, |
| 551 int pix); |
| 552 void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb, |
| 553 uint8* dst_u, uint8* dst_v, int pix); |
| 554 void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb, |
| 555 uint8* dst_u, uint8* dst_v, int pix); |
| 556 void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra, |
| 557 uint8* dst_u, uint8* dst_v, int pix); |
| 558 void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr, |
| 559 uint8* dst_u, uint8* dst_v, int pix); |
| 560 void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba, |
| 561 uint8* dst_u, uint8* dst_v, int pix); |
| 562 void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24, |
| 563 uint8* dst_u, uint8* dst_v, int pix); |
| 564 void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw, |
| 565 uint8* dst_u, uint8* dst_v, int pix); |
| 566 void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565, |
| 567 uint8* dst_u, uint8* dst_v, int pix); |
| 568 void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555, |
| 569 uint8* dst_u, uint8* dst_v, int pix); |
| 570 void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444, |
| 571 uint8* dst_u, uint8* dst_v, int pix); |
| 572 void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int pix); |
| 573 void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int pix); |
| 574 void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int pix); |
| 575 void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int pix); |
| 576 void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int pix); |
| 577 void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int pix); |
| 578 void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int pix); |
| 579 void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int pix); |
| 580 void ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int pix); |
| 581 void ARGBToYJRow_C(const uint8* src_argb, uint8* dst_y, int pix); |
| 582 void BGRAToYRow_C(const uint8* src_bgra, uint8* dst_y, int pix); |
| 583 void ABGRToYRow_C(const uint8* src_abgr, uint8* dst_y, int pix); |
| 584 void RGBAToYRow_C(const uint8* src_rgba, uint8* dst_y, int pix); |
| 585 void RGB24ToYRow_C(const uint8* src_rgb24, uint8* dst_y, int pix); |
| 586 void RAWToYRow_C(const uint8* src_raw, uint8* dst_y, int pix); |
| 587 void RGB565ToYRow_C(const uint8* src_rgb565, uint8* dst_y, int pix); |
| 588 void ARGB1555ToYRow_C(const uint8* src_argb1555, uint8* dst_y, int pix); |
| 589 void ARGB4444ToYRow_C(const uint8* src_argb4444, uint8* dst_y, int pix); |
| 590 void ARGBToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); |
| 591 void ARGBToYJRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); |
| 592 void BGRAToYRow_Any_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix); |
| 593 void ABGRToYRow_Any_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix); |
| 594 void RGBAToYRow_Any_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix); |
| 595 void RGB24ToYRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix); |
| 596 void RAWToYRow_Any_SSSE3(const uint8* src_raw, uint8* dst_y, int pix); |
| 597 void ARGBToYRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int pix); |
| 598 void ARGBToYJRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int pix); |
| 599 void BGRAToYRow_Any_NEON(const uint8* src_bgra, uint8* dst_y, int pix); |
| 600 void ABGRToYRow_Any_NEON(const uint8* src_abgr, uint8* dst_y, int pix); |
| 601 void RGBAToYRow_Any_NEON(const uint8* src_rgba, uint8* dst_y, int pix); |
| 602 void RGB24ToYRow_Any_NEON(const uint8* src_rgb24, uint8* dst_y, int pix); |
| 603 void RAWToYRow_Any_NEON(const uint8* src_raw, uint8* dst_y, int pix); |
| 604 void RGB565ToYRow_Any_NEON(const uint8* src_rgb565, uint8* dst_y, int pix); |
| 605 void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, uint8* dst_y, int pix); |
| 606 void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, uint8* dst_y, int pix); |
| 607 |
| 608 void ARGBToUVRow_AVX2(const uint8* src_argb, int src_stride_argb, |
| 609 uint8* dst_u, uint8* dst_v, int width); |
| 610 void ARGBToUVRow_Any_AVX2(const uint8* src_argb, int src_stride_argb, |
| 611 uint8* dst_u, uint8* dst_v, int width); |
| 612 void ARGBToUVRow_SSSE3(const uint8* src_argb, int src_stride_argb, |
| 613 uint8* dst_u, uint8* dst_v, int width); |
| 614 void ARGBToUVJRow_SSSE3(const uint8* src_argb, int src_stride_argb, |
| 615 uint8* dst_u, uint8* dst_v, int width); |
| 616 void BGRAToUVRow_SSSE3(const uint8* src_bgra, int src_stride_bgra, |
| 617 uint8* dst_u, uint8* dst_v, int width); |
| 618 void ABGRToUVRow_SSSE3(const uint8* src_abgr, int src_stride_abgr, |
| 619 uint8* dst_u, uint8* dst_v, int width); |
| 620 void RGBAToUVRow_SSSE3(const uint8* src_rgba, int src_stride_rgba, |
| 621 uint8* dst_u, uint8* dst_v, int width); |
| 622 void ARGBToUVRow_Unaligned_SSSE3(const uint8* src_argb, int src_stride_argb, |
| 623 uint8* dst_u, uint8* dst_v, int width); |
| 624 void ARGBToUVJRow_Unaligned_SSSE3(const uint8* src_argb, int src_stride_argb, |
| 625 uint8* dst_u, uint8* dst_v, int width); |
| 626 void BGRAToUVRow_Unaligned_SSSE3(const uint8* src_bgra, int src_stride_bgra, |
| 627 uint8* dst_u, uint8* dst_v, int width); |
| 628 void ABGRToUVRow_Unaligned_SSSE3(const uint8* src_abgr, int src_stride_abgr, |
| 629 uint8* dst_u, uint8* dst_v, int width); |
| 630 void RGBAToUVRow_Unaligned_SSSE3(const uint8* src_rgba, int src_stride_rgba, |
| 631 uint8* dst_u, uint8* dst_v, int width); |
| 632 void ARGBToUVRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb, |
| 633 uint8* dst_u, uint8* dst_v, int width); |
| 634 void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb, |
| 635 uint8* dst_u, uint8* dst_v, int width); |
| 636 void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, int src_stride_bgra, |
| 637 uint8* dst_u, uint8* dst_v, int width); |
| 638 void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, int src_stride_abgr, |
| 639 uint8* dst_u, uint8* dst_v, int width); |
| 640 void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, int src_stride_rgba, |
| 641 uint8* dst_u, uint8* dst_v, int width); |
| 642 void ARGBToUV444Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, |
| 643 int pix); |
| 644 void ARGBToUV422Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, |
| 645 int pix); |
| 646 void ARGBToUV411Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, |
| 647 int pix); |
| 648 void ARGBToUVRow_Any_NEON(const uint8* src_argb, int src_stride_argb, |
| 649 uint8* dst_u, uint8* dst_v, int pix); |
| 650 void ARGBToUVJRow_Any_NEON(const uint8* src_argb, int src_stride_argb, |
| 651 uint8* dst_u, uint8* dst_v, int pix); |
| 652 void BGRAToUVRow_Any_NEON(const uint8* src_bgra, int src_stride_bgra, |
| 653 uint8* dst_u, uint8* dst_v, int pix); |
| 654 void ABGRToUVRow_Any_NEON(const uint8* src_abgr, int src_stride_abgr, |
| 655 uint8* dst_u, uint8* dst_v, int pix); |
| 656 void RGBAToUVRow_Any_NEON(const uint8* src_rgba, int src_stride_rgba, |
| 657 uint8* dst_u, uint8* dst_v, int pix); |
| 658 void RGB24ToUVRow_Any_NEON(const uint8* src_rgb24, int src_stride_rgb24, |
| 659 uint8* dst_u, uint8* dst_v, int pix); |
| 660 void RAWToUVRow_Any_NEON(const uint8* src_raw, int src_stride_raw, |
| 661 uint8* dst_u, uint8* dst_v, int pix); |
| 662 void RGB565ToUVRow_Any_NEON(const uint8* src_rgb565, int src_stride_rgb565, |
| 663 uint8* dst_u, uint8* dst_v, int pix); |
| 664 void ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555, |
| 665 int src_stride_argb1555, |
| 666 uint8* dst_u, uint8* dst_v, int pix); |
| 667 void ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444, |
| 668 int src_stride_argb4444, |
| 669 uint8* dst_u, uint8* dst_v, int pix); |
| 670 void ARGBToUVRow_C(const uint8* src_argb, int src_stride_argb, |
| 671 uint8* dst_u, uint8* dst_v, int width); |
| 672 void ARGBToUVJRow_C(const uint8* src_argb, int src_stride_argb, |
| 673 uint8* dst_u, uint8* dst_v, int width); |
| 674 void BGRAToUVRow_C(const uint8* src_bgra, int src_stride_bgra, |
| 675 uint8* dst_u, uint8* dst_v, int width); |
| 676 void ABGRToUVRow_C(const uint8* src_abgr, int src_stride_abgr, |
| 677 uint8* dst_u, uint8* dst_v, int width); |
| 678 void RGBAToUVRow_C(const uint8* src_rgba, int src_stride_rgba, |
| 679 uint8* dst_u, uint8* dst_v, int width); |
| 680 void RGB24ToUVRow_C(const uint8* src_rgb24, int src_stride_rgb24, |
| 681 uint8* dst_u, uint8* dst_v, int width); |
| 682 void RAWToUVRow_C(const uint8* src_raw, int src_stride_raw, |
| 683 uint8* dst_u, uint8* dst_v, int width); |
| 684 void RGB565ToUVRow_C(const uint8* src_rgb565, int src_stride_rgb565, |
| 685 uint8* dst_u, uint8* dst_v, int width); |
| 686 void ARGB1555ToUVRow_C(const uint8* src_argb1555, int src_stride_argb1555, |
| 687 uint8* dst_u, uint8* dst_v, int width); |
| 688 void ARGB4444ToUVRow_C(const uint8* src_argb4444, int src_stride_argb4444, |
| 689 uint8* dst_u, uint8* dst_v, int width); |
| 690 |
| 691 void ARGBToUV444Row_SSSE3(const uint8* src_argb, |
| 692 uint8* dst_u, uint8* dst_v, int width); |
| 693 void ARGBToUV444Row_Unaligned_SSSE3(const uint8* src_argb, |
| 694 uint8* dst_u, uint8* dst_v, int width); |
| 695 void ARGBToUV444Row_Any_SSSE3(const uint8* src_argb, |
| 696 uint8* dst_u, uint8* dst_v, int width); |
| 697 |
| 698 void ARGBToUV422Row_SSSE3(const uint8* src_argb, |
| 699 uint8* dst_u, uint8* dst_v, int width); |
| 700 void ARGBToUV422Row_Unaligned_SSSE3(const uint8* src_argb, |
| 701 uint8* dst_u, uint8* dst_v, int width); |
| 702 void ARGBToUV422Row_Any_SSSE3(const uint8* src_argb, |
| 703 uint8* dst_u, uint8* dst_v, int width); |
| 704 |
| 705 void ARGBToUV444Row_C(const uint8* src_argb, |
| 706 uint8* dst_u, uint8* dst_v, int width); |
| 707 void ARGBToUV422Row_C(const uint8* src_argb, |
| 708 uint8* dst_u, uint8* dst_v, int width); |
| 709 void ARGBToUV411Row_C(const uint8* src_argb, |
| 710 uint8* dst_u, uint8* dst_v, int width); |
| 711 |
| 712 void MirrorRow_AVX2(const uint8* src, uint8* dst, int width); |
| 713 void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width); |
| 714 void MirrorRow_SSE2(const uint8* src, uint8* dst, int width); |
| 715 void MirrorRow_NEON(const uint8* src, uint8* dst, int width); |
| 716 void MirrorRow_MIPS_DSPR2(const uint8* src, uint8* dst, int width); |
| 717 void MirrorRow_C(const uint8* src, uint8* dst, int width); |
| 718 |
| 719 void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 720 int width); |
| 721 void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 722 int width); |
| 723 void MirrorUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 724 int width); |
| 725 void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 726 int width); |
| 727 |
| 728 void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width); |
| 729 void ARGBMirrorRow_SSSE3(const uint8* src, uint8* dst, int width); |
| 730 void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width); |
| 731 void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width); |
| 732 |
| 733 void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); |
| 734 void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); |
| 735 void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); |
| 736 void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); |
| 737 void SplitUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 738 int pix); |
| 739 void SplitUVRow_Unaligned_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 740 int pix); |
| 741 void SplitUVRow_Unaligned_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, |
| 742 uint8* dst_v, int pix); |
| 743 void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 744 int pix); |
| 745 void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 746 int pix); |
| 747 void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 748 int pix); |
| 749 void SplitUVRow_Any_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, |
| 750 int pix); |
| 751 |
| 752 void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 753 int width); |
| 754 void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 755 int width); |
| 756 void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 757 int width); |
| 758 void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 759 int width); |
| 760 void MergeUVRow_Unaligned_SSE2(const uint8* src_u, const uint8* src_v, |
| 761 uint8* dst_uv, int width); |
| 762 void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 763 int width); |
| 764 void MergeUVRow_Any_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 765 int width); |
| 766 void MergeUVRow_Any_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, |
| 767 int width); |
| 768 |
| 769 void CopyRow_SSE2(const uint8* src, uint8* dst, int count); |
| 770 void CopyRow_ERMS(const uint8* src, uint8* dst, int count); |
| 771 void CopyRow_X86(const uint8* src, uint8* dst, int count); |
| 772 void CopyRow_NEON(const uint8* src, uint8* dst, int count); |
| 773 void CopyRow_MIPS(const uint8* src, uint8* dst, int count); |
| 774 void CopyRow_C(const uint8* src, uint8* dst, int count); |
| 775 |
| 776 void CopyRow_16_C(const uint16* src, uint16* dst, int count); |
| 777 |
| 778 void ARGBCopyAlphaRow_C(const uint8* src_argb, uint8* dst_argb, int width); |
| 779 void ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); |
| 780 void ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); |
| 781 |
| 782 void ARGBCopyYToAlphaRow_C(const uint8* src_y, uint8* dst_argb, int width); |
| 783 void ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width); |
| 784 void ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); |
| 785 |
| 786 void SetRow_X86(uint8* dst, uint32 v32, int count); |
| 787 void ARGBSetRows_X86(uint8* dst, uint32 v32, int width, |
| 788 int dst_stride, int height); |
| 789 void SetRow_NEON(uint8* dst, uint32 v32, int count); |
| 790 void ARGBSetRows_NEON(uint8* dst, uint32 v32, int width, |
| 791 int dst_stride, int height); |
| 792 void SetRow_C(uint8* dst, uint32 v32, int count); |
| 793 void ARGBSetRows_C(uint8* dst, uint32 v32, int width, int dst_stride, |
| 794 int height); |
| 795 |
| 796 // ARGBShufflers for BGRAToARGB etc. |
| 797 void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb, |
| 798 const uint8* shuffler, int pix); |
| 799 void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb, |
| 800 const uint8* shuffler, int pix); |
| 801 void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb, |
| 802 const uint8* shuffler, int pix); |
| 803 void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb, |
| 804 const uint8* shuffler, int pix); |
| 805 void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb, |
| 806 const uint8* shuffler, int pix); |
| 807 void ARGBShuffleRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_argb, |
| 808 const uint8* shuffler, int pix); |
| 809 void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, |
| 810 const uint8* shuffler, int pix); |
| 811 void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb, |
| 812 const uint8* shuffler, int pix); |
| 813 void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, |
| 814 const uint8* shuffler, int pix); |
| 815 void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb, |
| 816 const uint8* shuffler, int pix); |
| 817 |
| 818 void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix); |
| 819 void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix); |
| 820 void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int pix); |
| 821 void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb, |
| 822 int pix); |
| 823 void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb, |
| 824 int pix); |
| 825 |
| 826 void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix); |
| 827 void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix); |
| 828 void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix); |
| 829 void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb, |
| 830 int pix); |
| 831 void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb, |
| 832 int pix); |
| 833 void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int pix); |
| 834 void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int pix); |
| 835 void RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int pix); |
| 836 void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix); |
| 837 void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix); |
| 838 void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix); |
| 839 void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix); |
| 840 void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, uint8* dst_argb, |
| 841 int pix); |
| 842 void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, uint8* dst_argb, |
| 843 int pix); |
| 844 void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, uint8* dst_argb, |
| 845 int pix); |
| 846 void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix); |
| 847 void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int pix); |
| 848 void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, uint8* dst_argb, |
| 849 int pix); |
| 850 void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, uint8* dst_argb, |
| 851 int pix); |
| 852 void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb, |
| 853 int pix); |
| 854 |
| 855 void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 856 void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 857 void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 858 void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 859 void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 860 |
| 861 void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 862 void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 863 void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 864 void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 865 void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 866 |
| 867 void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 868 void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 869 void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 870 void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 871 void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 872 void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 873 |
| 874 void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix); |
| 875 void I400ToARGBRow_Unaligned_SSE2(const uint8* src_y, uint8* dst_argb, int pix); |
| 876 void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int pix); |
| 877 void I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix); |
| 878 void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int pix); |
| 879 void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int pix); |
| 880 |
| 881 void I444ToARGBRow_C(const uint8* src_y, |
| 882 const uint8* src_u, |
| 883 const uint8* src_v, |
| 884 uint8* dst_argb, |
| 885 int width); |
| 886 void I422ToARGBRow_C(const uint8* src_y, |
| 887 const uint8* src_u, |
| 888 const uint8* src_v, |
| 889 uint8* dst_argb, |
| 890 int width); |
| 891 void I411ToARGBRow_C(const uint8* src_y, |
| 892 const uint8* src_u, |
| 893 const uint8* src_v, |
| 894 uint8* dst_argb, |
| 895 int width); |
| 896 void NV12ToARGBRow_C(const uint8* src_y, |
| 897 const uint8* src_uv, |
| 898 uint8* dst_argb, |
| 899 int width); |
| 900 void NV21ToRGB565Row_C(const uint8* src_y, |
| 901 const uint8* src_vu, |
| 902 uint8* dst_argb, |
| 903 int width); |
| 904 void NV12ToRGB565Row_C(const uint8* src_y, |
| 905 const uint8* src_uv, |
| 906 uint8* dst_argb, |
| 907 int width); |
| 908 void NV21ToARGBRow_C(const uint8* src_y, |
| 909 const uint8* src_vu, |
| 910 uint8* dst_argb, |
| 911 int width); |
| 912 void YUY2ToARGBRow_C(const uint8* src_yuy2, |
| 913 uint8* dst_argb, |
| 914 int width); |
| 915 void UYVYToARGBRow_C(const uint8* src_uyvy, |
| 916 uint8* dst_argb, |
| 917 int width); |
| 918 void I422ToBGRARow_C(const uint8* src_y, |
| 919 const uint8* src_u, |
| 920 const uint8* src_v, |
| 921 uint8* dst_bgra, |
| 922 int width); |
| 923 void I422ToABGRRow_C(const uint8* src_y, |
| 924 const uint8* src_u, |
| 925 const uint8* src_v, |
| 926 uint8* dst_abgr, |
| 927 int width); |
| 928 void I422ToRGBARow_C(const uint8* src_y, |
| 929 const uint8* src_u, |
| 930 const uint8* src_v, |
| 931 uint8* dst_rgba, |
| 932 int width); |
| 933 void I422ToRGB24Row_C(const uint8* src_y, |
| 934 const uint8* src_u, |
| 935 const uint8* src_v, |
| 936 uint8* dst_rgb24, |
| 937 int width); |
| 938 void I422ToRAWRow_C(const uint8* src_y, |
| 939 const uint8* src_u, |
| 940 const uint8* src_v, |
| 941 uint8* dst_raw, |
| 942 int width); |
| 943 void I422ToARGB4444Row_C(const uint8* src_y, |
| 944 const uint8* src_u, |
| 945 const uint8* src_v, |
| 946 uint8* dst_argb4444, |
| 947 int width); |
| 948 void I422ToARGB1555Row_C(const uint8* src_y, |
| 949 const uint8* src_u, |
| 950 const uint8* src_v, |
| 951 uint8* dst_argb4444, |
| 952 int width); |
| 953 void I422ToRGB565Row_C(const uint8* src_y, |
| 954 const uint8* src_u, |
| 955 const uint8* src_v, |
| 956 uint8* dst_rgb565, |
| 957 int width); |
| 958 void YToARGBRow_C(const uint8* src_y, |
| 959 uint8* dst_argb, |
| 960 int width); |
| 961 void I422ToARGBRow_AVX2(const uint8* src_y, |
| 962 const uint8* src_u, |
| 963 const uint8* src_v, |
| 964 uint8* dst_argb, |
| 965 int width); |
| 966 void I444ToARGBRow_SSSE3(const uint8* src_y, |
| 967 const uint8* src_u, |
| 968 const uint8* src_v, |
| 969 uint8* dst_argb, |
| 970 int width); |
| 971 void I422ToARGBRow_SSSE3(const uint8* src_y, |
| 972 const uint8* src_u, |
| 973 const uint8* src_v, |
| 974 uint8* dst_argb, |
| 975 int width); |
| 976 void I411ToARGBRow_SSSE3(const uint8* src_y, |
| 977 const uint8* src_u, |
| 978 const uint8* src_v, |
| 979 uint8* dst_argb, |
| 980 int width); |
| 981 void NV12ToARGBRow_SSSE3(const uint8* src_y, |
| 982 const uint8* src_uv, |
| 983 uint8* dst_argb, |
| 984 int width); |
| 985 void NV21ToARGBRow_SSSE3(const uint8* src_y, |
| 986 const uint8* src_vu, |
| 987 uint8* dst_argb, |
| 988 int width); |
| 989 void NV12ToRGB565Row_SSSE3(const uint8* src_y, |
| 990 const uint8* src_uv, |
| 991 uint8* dst_argb, |
| 992 int width); |
| 993 void NV21ToRGB565Row_SSSE3(const uint8* src_y, |
| 994 const uint8* src_vu, |
| 995 uint8* dst_argb, |
| 996 int width); |
| 997 void YUY2ToARGBRow_SSSE3(const uint8* src_yuy2, |
| 998 uint8* dst_argb, |
| 999 int width); |
| 1000 void UYVYToARGBRow_SSSE3(const uint8* src_uyvy, |
| 1001 uint8* dst_argb, |
| 1002 int width); |
| 1003 void I422ToBGRARow_SSSE3(const uint8* src_y, |
| 1004 const uint8* src_u, |
| 1005 const uint8* src_v, |
| 1006 uint8* dst_bgra, |
| 1007 int width); |
| 1008 void I422ToABGRRow_SSSE3(const uint8* src_y, |
| 1009 const uint8* src_u, |
| 1010 const uint8* src_v, |
| 1011 uint8* dst_abgr, |
| 1012 int width); |
| 1013 void I422ToRGBARow_SSSE3(const uint8* src_y, |
| 1014 const uint8* src_u, |
| 1015 const uint8* src_v, |
| 1016 uint8* dst_rgba, |
| 1017 int width); |
| 1018 void I422ToARGB4444Row_SSSE3(const uint8* src_y, |
| 1019 const uint8* src_u, |
| 1020 const uint8* src_v, |
| 1021 uint8* dst_argb, |
| 1022 int width); |
| 1023 void I422ToARGB1555Row_SSSE3(const uint8* src_y, |
| 1024 const uint8* src_u, |
| 1025 const uint8* src_v, |
| 1026 uint8* dst_argb, |
| 1027 int width); |
| 1028 void I422ToRGB565Row_SSSE3(const uint8* src_y, |
| 1029 const uint8* src_u, |
| 1030 const uint8* src_v, |
| 1031 uint8* dst_argb, |
| 1032 int width); |
| 1033 // RGB24/RAW are unaligned. |
| 1034 void I422ToRGB24Row_SSSE3(const uint8* src_y, |
| 1035 const uint8* src_u, |
| 1036 const uint8* src_v, |
| 1037 uint8* dst_rgb24, |
| 1038 int width); |
| 1039 void I422ToRAWRow_SSSE3(const uint8* src_y, |
| 1040 const uint8* src_u, |
| 1041 const uint8* src_v, |
| 1042 uint8* dst_raw, |
| 1043 int width); |
| 1044 |
| 1045 void I444ToARGBRow_Unaligned_SSSE3(const uint8* src_y, |
| 1046 const uint8* src_u, |
| 1047 const uint8* src_v, |
| 1048 uint8* dst_argb, |
| 1049 int width); |
| 1050 void I422ToARGBRow_Unaligned_SSSE3(const uint8* src_y, |
| 1051 const uint8* src_u, |
| 1052 const uint8* src_v, |
| 1053 uint8* dst_argb, |
| 1054 int width); |
| 1055 void I411ToARGBRow_Unaligned_SSSE3(const uint8* src_y, |
| 1056 const uint8* src_u, |
| 1057 const uint8* src_v, |
| 1058 uint8* dst_argb, |
| 1059 int width); |
| 1060 void NV12ToARGBRow_Unaligned_SSSE3(const uint8* src_y, |
| 1061 const uint8* src_uv, |
| 1062 uint8* dst_argb, |
| 1063 int width); |
| 1064 void NV21ToARGBRow_Unaligned_SSSE3(const uint8* src_y, |
| 1065 const uint8* src_vu, |
| 1066 uint8* dst_argb, |
| 1067 int width); |
| 1068 void YUY2ToARGBRow_Unaligned_SSSE3(const uint8* src_yuy2, |
| 1069 uint8* dst_argb, |
| 1070 int width); |
| 1071 void UYVYToARGBRow_Unaligned_SSSE3(const uint8* src_uyvy, |
| 1072 uint8* dst_argb, |
| 1073 int width); |
| 1074 void I422ToBGRARow_Unaligned_SSSE3(const uint8* src_y, |
| 1075 const uint8* src_u, |
| 1076 const uint8* src_v, |
| 1077 uint8* dst_bgra, |
| 1078 int width); |
| 1079 void I422ToABGRRow_Unaligned_SSSE3(const uint8* src_y, |
| 1080 const uint8* src_u, |
| 1081 const uint8* src_v, |
| 1082 uint8* dst_abgr, |
| 1083 int width); |
| 1084 void I422ToRGBARow_Unaligned_SSSE3(const uint8* src_y, |
| 1085 const uint8* src_u, |
| 1086 const uint8* src_v, |
| 1087 uint8* dst_rgba, |
| 1088 int width); |
| 1089 void I422ToARGBRow_Any_AVX2(const uint8* src_y, |
| 1090 const uint8* src_u, |
| 1091 const uint8* src_v, |
| 1092 uint8* dst_argb, |
| 1093 int width); |
| 1094 void I444ToARGBRow_Any_SSSE3(const uint8* src_y, |
| 1095 const uint8* src_u, |
| 1096 const uint8* src_v, |
| 1097 uint8* dst_argb, |
| 1098 int width); |
| 1099 void I422ToARGBRow_Any_SSSE3(const uint8* src_y, |
| 1100 const uint8* src_u, |
| 1101 const uint8* src_v, |
| 1102 uint8* dst_argb, |
| 1103 int width); |
| 1104 void I411ToARGBRow_Any_SSSE3(const uint8* src_y, |
| 1105 const uint8* src_u, |
| 1106 const uint8* src_v, |
| 1107 uint8* dst_argb, |
| 1108 int width); |
| 1109 void NV12ToARGBRow_Any_SSSE3(const uint8* src_y, |
| 1110 const uint8* src_uv, |
| 1111 uint8* dst_argb, |
| 1112 int width); |
| 1113 void NV21ToARGBRow_Any_SSSE3(const uint8* src_y, |
| 1114 const uint8* src_vu, |
| 1115 uint8* dst_argb, |
| 1116 int width); |
| 1117 void NV12ToRGB565Row_Any_SSSE3(const uint8* src_y, |
| 1118 const uint8* src_uv, |
| 1119 uint8* dst_argb, |
| 1120 int width); |
| 1121 void NV21ToRGB565Row_Any_SSSE3(const uint8* src_y, |
| 1122 const uint8* src_vu, |
| 1123 uint8* dst_argb, |
| 1124 int width); |
| 1125 void YUY2ToARGBRow_Any_SSSE3(const uint8* src_yuy2, |
| 1126 uint8* dst_argb, |
| 1127 int width); |
| 1128 void UYVYToARGBRow_Any_SSSE3(const uint8* src_uyvy, |
| 1129 uint8* dst_argb, |
| 1130 int width); |
| 1131 void I422ToBGRARow_Any_SSSE3(const uint8* src_y, |
| 1132 const uint8* src_u, |
| 1133 const uint8* src_v, |
| 1134 uint8* dst_bgra, |
| 1135 int width); |
| 1136 void I422ToABGRRow_Any_SSSE3(const uint8* src_y, |
| 1137 const uint8* src_u, |
| 1138 const uint8* src_v, |
| 1139 uint8* dst_abgr, |
| 1140 int width); |
| 1141 void I422ToRGBARow_Any_SSSE3(const uint8* src_y, |
| 1142 const uint8* src_u, |
| 1143 const uint8* src_v, |
| 1144 uint8* dst_rgba, |
| 1145 int width); |
| 1146 void I422ToARGB4444Row_Any_SSSE3(const uint8* src_y, |
| 1147 const uint8* src_u, |
| 1148 const uint8* src_v, |
| 1149 uint8* dst_rgba, |
| 1150 int width); |
| 1151 void I422ToARGB1555Row_Any_SSSE3(const uint8* src_y, |
| 1152 const uint8* src_u, |
| 1153 const uint8* src_v, |
| 1154 uint8* dst_rgba, |
| 1155 int width); |
| 1156 void I422ToRGB565Row_Any_SSSE3(const uint8* src_y, |
| 1157 const uint8* src_u, |
| 1158 const uint8* src_v, |
| 1159 uint8* dst_rgba, |
| 1160 int width); |
| 1161 // RGB24/RAW are unaligned. |
| 1162 void I422ToRGB24Row_Any_SSSE3(const uint8* src_y, |
| 1163 const uint8* src_u, |
| 1164 const uint8* src_v, |
| 1165 uint8* dst_argb, |
| 1166 int width); |
| 1167 void I422ToRAWRow_Any_SSSE3(const uint8* src_y, |
| 1168 const uint8* src_u, |
| 1169 const uint8* src_v, |
| 1170 uint8* dst_argb, |
| 1171 int width); |
| 1172 void YToARGBRow_SSE2(const uint8* src_y, |
| 1173 uint8* dst_argb, |
| 1174 int width); |
| 1175 void YToARGBRow_NEON(const uint8* src_y, |
| 1176 uint8* dst_argb, |
| 1177 int width); |
| 1178 void YToARGBRow_Any_SSE2(const uint8* src_y, |
| 1179 uint8* dst_argb, |
| 1180 int width); |
| 1181 void YToARGBRow_Any_NEON(const uint8* src_y, |
| 1182 uint8* dst_argb, |
| 1183 int width); |
| 1184 |
| 1185 // ARGB preattenuated alpha blend. |
| 1186 void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1, |
| 1187 uint8* dst_argb, int width); |
| 1188 void ARGBBlendRow_SSE2(const uint8* src_argb, const uint8* src_argb1, |
| 1189 uint8* dst_argb, int width); |
| 1190 void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1, |
| 1191 uint8* dst_argb, int width); |
| 1192 void ARGBBlendRow_C(const uint8* src_argb, const uint8* src_argb1, |
| 1193 uint8* dst_argb, int width); |
| 1194 |
| 1195 // ARGB multiply images. Same API as Blend, but these require |
| 1196 // pointer and width alignment for SSE2. |
| 1197 void ARGBMultiplyRow_C(const uint8* src_argb, const uint8* src_argb1, |
| 1198 uint8* dst_argb, int width); |
| 1199 void ARGBMultiplyRow_SSE2(const uint8* src_argb, const uint8* src_argb1, |
| 1200 uint8* dst_argb, int width); |
| 1201 void ARGBMultiplyRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1, |
| 1202 uint8* dst_argb, int width); |
| 1203 void ARGBMultiplyRow_AVX2(const uint8* src_argb, const uint8* src_argb1, |
| 1204 uint8* dst_argb, int width); |
| 1205 void ARGBMultiplyRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1, |
| 1206 uint8* dst_argb, int width); |
| 1207 void ARGBMultiplyRow_NEON(const uint8* src_argb, const uint8* src_argb1, |
| 1208 uint8* dst_argb, int width); |
| 1209 void ARGBMultiplyRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, |
| 1210 uint8* dst_argb, int width); |
| 1211 |
| 1212 // ARGB add images. |
| 1213 void ARGBAddRow_C(const uint8* src_argb, const uint8* src_argb1, |
| 1214 uint8* dst_argb, int width); |
| 1215 void ARGBAddRow_SSE2(const uint8* src_argb, const uint8* src_argb1, |
| 1216 uint8* dst_argb, int width); |
| 1217 void ARGBAddRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1, |
| 1218 uint8* dst_argb, int width); |
| 1219 void ARGBAddRow_AVX2(const uint8* src_argb, const uint8* src_argb1, |
| 1220 uint8* dst_argb, int width); |
| 1221 void ARGBAddRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1, |
| 1222 uint8* dst_argb, int width); |
| 1223 void ARGBAddRow_NEON(const uint8* src_argb, const uint8* src_argb1, |
| 1224 uint8* dst_argb, int width); |
| 1225 void ARGBAddRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, |
| 1226 uint8* dst_argb, int width); |
| 1227 |
| 1228 // ARGB subtract images. Same API as Blend, but these require |
| 1229 // pointer and width alignment for SSE2. |
| 1230 void ARGBSubtractRow_C(const uint8* src_argb, const uint8* src_argb1, |
| 1231 uint8* dst_argb, int width); |
| 1232 void ARGBSubtractRow_SSE2(const uint8* src_argb, const uint8* src_argb1, |
| 1233 uint8* dst_argb, int width); |
| 1234 void ARGBSubtractRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1, |
| 1235 uint8* dst_argb, int width); |
| 1236 void ARGBSubtractRow_AVX2(const uint8* src_argb, const uint8* src_argb1, |
| 1237 uint8* dst_argb, int width); |
| 1238 void ARGBSubtractRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1, |
| 1239 uint8* dst_argb, int width); |
| 1240 void ARGBSubtractRow_NEON(const uint8* src_argb, const uint8* src_argb1, |
| 1241 uint8* dst_argb, int width); |
| 1242 void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, |
| 1243 uint8* dst_argb, int width); |
| 1244 |
| 1245 void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1246 void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1247 void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1248 void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1249 void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1250 |
| 1251 void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1252 void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1253 void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1254 void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1255 void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); |
| 1256 |
| 1257 void I444ToARGBRow_Any_NEON(const uint8* src_y, |
| 1258 const uint8* src_u, |
| 1259 const uint8* src_v, |
| 1260 uint8* dst_argb, |
| 1261 int width); |
| 1262 void I422ToARGBRow_Any_NEON(const uint8* src_y, |
| 1263 const uint8* src_u, |
| 1264 const uint8* src_v, |
| 1265 uint8* dst_argb, |
| 1266 int width); |
| 1267 void I411ToARGBRow_Any_NEON(const uint8* src_y, |
| 1268 const uint8* src_u, |
| 1269 const uint8* src_v, |
| 1270 uint8* dst_argb, |
| 1271 int width); |
| 1272 void I422ToBGRARow_Any_NEON(const uint8* src_y, |
| 1273 const uint8* src_u, |
| 1274 const uint8* src_v, |
| 1275 uint8* dst_argb, |
| 1276 int width); |
| 1277 void I422ToABGRRow_Any_NEON(const uint8* src_y, |
| 1278 const uint8* src_u, |
| 1279 const uint8* src_v, |
| 1280 uint8* dst_argb, |
| 1281 int width); |
| 1282 void I422ToRGBARow_Any_NEON(const uint8* src_y, |
| 1283 const uint8* src_u, |
| 1284 const uint8* src_v, |
| 1285 uint8* dst_argb, |
| 1286 int width); |
| 1287 void I422ToRGB24Row_Any_NEON(const uint8* src_y, |
| 1288 const uint8* src_u, |
| 1289 const uint8* src_v, |
| 1290 uint8* dst_argb, |
| 1291 int width); |
| 1292 void I422ToRAWRow_Any_NEON(const uint8* src_y, |
| 1293 const uint8* src_u, |
| 1294 const uint8* src_v, |
| 1295 uint8* dst_argb, |
| 1296 int width); |
| 1297 void I422ToARGB4444Row_Any_NEON(const uint8* src_y, |
| 1298 const uint8* src_u, |
| 1299 const uint8* src_v, |
| 1300 uint8* dst_argb, |
| 1301 int width); |
| 1302 void I422ToARGB1555Row_Any_NEON(const uint8* src_y, |
| 1303 const uint8* src_u, |
| 1304 const uint8* src_v, |
| 1305 uint8* dst_argb, |
| 1306 int width); |
| 1307 void I422ToRGB565Row_Any_NEON(const uint8* src_y, |
| 1308 const uint8* src_u, |
| 1309 const uint8* src_v, |
| 1310 uint8* dst_argb, |
| 1311 int width); |
| 1312 void NV12ToARGBRow_Any_NEON(const uint8* src_y, |
| 1313 const uint8* src_uv, |
| 1314 uint8* dst_argb, |
| 1315 int width); |
| 1316 void NV21ToARGBRow_Any_NEON(const uint8* src_y, |
| 1317 const uint8* src_uv, |
| 1318 uint8* dst_argb, |
| 1319 int width); |
| 1320 void NV12ToRGB565Row_Any_NEON(const uint8* src_y, |
| 1321 const uint8* src_uv, |
| 1322 uint8* dst_argb, |
| 1323 int width); |
| 1324 void NV21ToRGB565Row_Any_NEON(const uint8* src_y, |
| 1325 const uint8* src_uv, |
| 1326 uint8* dst_argb, |
| 1327 int width); |
| 1328 void YUY2ToARGBRow_Any_NEON(const uint8* src_yuy2, |
| 1329 uint8* dst_argb, |
| 1330 int width); |
| 1331 void UYVYToARGBRow_Any_NEON(const uint8* src_uyvy, |
| 1332 uint8* dst_argb, |
| 1333 int width); |
| 1334 void I422ToARGBRow_MIPS_DSPR2(const uint8* src_y, |
| 1335 const uint8* src_u, |
| 1336 const uint8* src_v, |
| 1337 uint8* dst_argb, |
| 1338 int width); |
| 1339 void I422ToBGRARow_MIPS_DSPR2(const uint8* src_y, |
| 1340 const uint8* src_u, |
| 1341 const uint8* src_v, |
| 1342 uint8* dst_argb, |
| 1343 int width); |
| 1344 void I422ToABGRRow_MIPS_DSPR2(const uint8* src_y, |
| 1345 const uint8* src_u, |
| 1346 const uint8* src_v, |
| 1347 uint8* dst_argb, |
| 1348 int width); |
| 1349 void I422ToARGBRow_MIPS_DSPR2(const uint8* src_y, |
| 1350 const uint8* src_u, |
| 1351 const uint8* src_v, |
| 1352 uint8* dst_argb, |
| 1353 int width); |
| 1354 void I422ToBGRARow_MIPS_DSPR2(const uint8* src_y, |
| 1355 const uint8* src_u, |
| 1356 const uint8* src_v, |
| 1357 uint8* dst_argb, |
| 1358 int width); |
| 1359 void I422ToABGRRow_MIPS_DSPR2(const uint8* src_y, |
| 1360 const uint8* src_u, |
| 1361 const uint8* src_v, |
| 1362 uint8* dst_argb, |
| 1363 int width); |
| 1364 |
| 1365 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix); |
| 1366 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2, |
| 1367 uint8* dst_u, uint8* dst_v, int pix); |
| 1368 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2, |
| 1369 uint8* dst_u, uint8* dst_v, int pix); |
| 1370 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix); |
| 1371 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2, |
| 1372 uint8* dst_u, uint8* dst_v, int pix); |
| 1373 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2, |
| 1374 uint8* dst_u, uint8* dst_v, int pix); |
| 1375 void YUY2ToYRow_Unaligned_SSE2(const uint8* src_yuy2, |
| 1376 uint8* dst_y, int pix); |
| 1377 void YUY2ToUVRow_Unaligned_SSE2(const uint8* src_yuy2, int stride_yuy2, |
| 1378 uint8* dst_u, uint8* dst_v, int pix); |
| 1379 void YUY2ToUV422Row_Unaligned_SSE2(const uint8* src_yuy2, |
| 1380 uint8* dst_u, uint8* dst_v, int pix); |
| 1381 void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix); |
| 1382 void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2, |
| 1383 uint8* dst_u, uint8* dst_v, int pix); |
| 1384 void YUY2ToUV422Row_NEON(const uint8* src_yuy2, |
| 1385 uint8* dst_u, uint8* dst_v, int pix); |
| 1386 void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int pix); |
| 1387 void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2, |
| 1388 uint8* dst_u, uint8* dst_v, int pix); |
| 1389 void YUY2ToUV422Row_C(const uint8* src_yuy2, |
| 1390 uint8* dst_u, uint8* dst_v, int pix); |
| 1391 void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix); |
| 1392 void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, int stride_yuy2, |
| 1393 uint8* dst_u, uint8* dst_v, int pix); |
| 1394 void YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2, |
| 1395 uint8* dst_u, uint8* dst_v, int pix); |
| 1396 void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix); |
| 1397 void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2, |
| 1398 uint8* dst_u, uint8* dst_v, int pix); |
| 1399 void YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2, |
| 1400 uint8* dst_u, uint8* dst_v, int pix); |
| 1401 void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int pix); |
| 1402 void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2, |
| 1403 uint8* dst_u, uint8* dst_v, int pix); |
| 1404 void YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2, |
| 1405 uint8* dst_u, uint8* dst_v, int pix); |
| 1406 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1407 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, |
| 1408 uint8* dst_u, uint8* dst_v, int pix); |
| 1409 void UYVYToUV422Row_AVX2(const uint8* src_uyvy, |
| 1410 uint8* dst_u, uint8* dst_v, int pix); |
| 1411 void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1412 void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy, |
| 1413 uint8* dst_u, uint8* dst_v, int pix); |
| 1414 void UYVYToUV422Row_SSE2(const uint8* src_uyvy, |
| 1415 uint8* dst_u, uint8* dst_v, int pix); |
| 1416 void UYVYToYRow_Unaligned_SSE2(const uint8* src_uyvy, |
| 1417 uint8* dst_y, int pix); |
| 1418 void UYVYToUVRow_Unaligned_SSE2(const uint8* src_uyvy, int stride_uyvy, |
| 1419 uint8* dst_u, uint8* dst_v, int pix); |
| 1420 void UYVYToUV422Row_Unaligned_SSE2(const uint8* src_uyvy, |
| 1421 uint8* dst_u, uint8* dst_v, int pix); |
| 1422 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1423 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, |
| 1424 uint8* dst_u, uint8* dst_v, int pix); |
| 1425 void UYVYToUV422Row_AVX2(const uint8* src_uyvy, |
| 1426 uint8* dst_u, uint8* dst_v, int pix); |
| 1427 void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1428 void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy, |
| 1429 uint8* dst_u, uint8* dst_v, int pix); |
| 1430 void UYVYToUV422Row_NEON(const uint8* src_uyvy, |
| 1431 uint8* dst_u, uint8* dst_v, int pix); |
| 1432 |
| 1433 void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1434 void UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy, |
| 1435 uint8* dst_u, uint8* dst_v, int pix); |
| 1436 void UYVYToUV422Row_C(const uint8* src_uyvy, |
| 1437 uint8* dst_u, uint8* dst_v, int pix); |
| 1438 void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1439 void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, int stride_uyvy, |
| 1440 uint8* dst_u, uint8* dst_v, int pix); |
| 1441 void UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy, |
| 1442 uint8* dst_u, uint8* dst_v, int pix); |
| 1443 void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1444 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy, |
| 1445 uint8* dst_u, uint8* dst_v, int pix); |
| 1446 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy, |
| 1447 uint8* dst_u, uint8* dst_v, int pix); |
| 1448 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int pix); |
| 1449 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy, |
| 1450 uint8* dst_u, uint8* dst_v, int pix); |
| 1451 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy, |
| 1452 uint8* dst_u, uint8* dst_v, int pix); |
| 1453 |
| 1454 void HalfRow_C(const uint8* src_uv, int src_uv_stride, |
| 1455 uint8* dst_uv, int pix); |
| 1456 void HalfRow_SSE2(const uint8* src_uv, int src_uv_stride, |
| 1457 uint8* dst_uv, int pix); |
| 1458 void HalfRow_AVX2(const uint8* src_uv, int src_uv_stride, |
| 1459 uint8* dst_uv, int pix); |
| 1460 void HalfRow_NEON(const uint8* src_uv, int src_uv_stride, |
| 1461 uint8* dst_uv, int pix); |
| 1462 |
| 1463 void HalfRow_16_C(const uint16* src_uv, int src_uv_stride, |
| 1464 uint16* dst_uv, int pix); |
| 1465 |
| 1466 void ARGBToBayerRow_C(const uint8* src_argb, uint8* dst_bayer, |
| 1467 uint32 selector, int pix); |
| 1468 void ARGBToBayerRow_SSSE3(const uint8* src_argb, uint8* dst_bayer, |
| 1469 uint32 selector, int pix); |
| 1470 void ARGBToBayerRow_NEON(const uint8* src_argb, uint8* dst_bayer, |
| 1471 uint32 selector, int pix); |
| 1472 void ARGBToBayerRow_Any_SSSE3(const uint8* src_argb, uint8* dst_bayer, |
| 1473 uint32 selector, int pix); |
| 1474 void ARGBToBayerRow_Any_NEON(const uint8* src_argb, uint8* dst_bayer, |
| 1475 uint32 selector, int pix); |
| 1476 void ARGBToBayerGGRow_C(const uint8* src_argb, uint8* dst_bayer, |
| 1477 uint32 /* selector */, int pix); |
| 1478 void ARGBToBayerGGRow_SSE2(const uint8* src_argb, uint8* dst_bayer, |
| 1479 uint32 /* selector */, int pix); |
| 1480 void ARGBToBayerGGRow_NEON(const uint8* src_argb, uint8* dst_bayer, |
| 1481 uint32 /* selector */, int pix); |
| 1482 void ARGBToBayerGGRow_Any_SSE2(const uint8* src_argb, uint8* dst_bayer, |
| 1483 uint32 /* selector */, int pix); |
| 1484 void ARGBToBayerGGRow_Any_NEON(const uint8* src_argb, uint8* dst_bayer, |
| 1485 uint32 /* selector */, int pix); |
| 1486 |
| 1487 void I422ToYUY2Row_C(const uint8* src_y, |
| 1488 const uint8* src_u, |
| 1489 const uint8* src_v, |
| 1490 uint8* dst_yuy2, int width); |
| 1491 void I422ToUYVYRow_C(const uint8* src_y, |
| 1492 const uint8* src_u, |
| 1493 const uint8* src_v, |
| 1494 uint8* dst_uyvy, int width); |
| 1495 void I422ToYUY2Row_SSE2(const uint8* src_y, |
| 1496 const uint8* src_u, |
| 1497 const uint8* src_v, |
| 1498 uint8* dst_yuy2, int width); |
| 1499 void I422ToUYVYRow_SSE2(const uint8* src_y, |
| 1500 const uint8* src_u, |
| 1501 const uint8* src_v, |
| 1502 uint8* dst_uyvy, int width); |
| 1503 void I422ToYUY2Row_Any_SSE2(const uint8* src_y, |
| 1504 const uint8* src_u, |
| 1505 const uint8* src_v, |
| 1506 uint8* dst_yuy2, int width); |
| 1507 void I422ToUYVYRow_Any_SSE2(const uint8* src_y, |
| 1508 const uint8* src_u, |
| 1509 const uint8* src_v, |
| 1510 uint8* dst_uyvy, int width); |
| 1511 void I422ToYUY2Row_NEON(const uint8* src_y, |
| 1512 const uint8* src_u, |
| 1513 const uint8* src_v, |
| 1514 uint8* dst_yuy2, int width); |
| 1515 void I422ToUYVYRow_NEON(const uint8* src_y, |
| 1516 const uint8* src_u, |
| 1517 const uint8* src_v, |
| 1518 uint8* dst_uyvy, int width); |
| 1519 void I422ToYUY2Row_Any_NEON(const uint8* src_y, |
| 1520 const uint8* src_u, |
| 1521 const uint8* src_v, |
| 1522 uint8* dst_yuy2, int width); |
| 1523 void I422ToUYVYRow_Any_NEON(const uint8* src_y, |
| 1524 const uint8* src_u, |
| 1525 const uint8* src_v, |
| 1526 uint8* dst_uyvy, int width); |
| 1527 |
| 1528 // Effects related row functions. |
| 1529 void ARGBAttenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width); |
| 1530 void ARGBAttenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); |
| 1531 void ARGBAttenuateRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width); |
| 1532 void ARGBAttenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); |
| 1533 void ARGBAttenuateRow_NEON(const uint8* src_argb, uint8* dst_argb, int width); |
| 1534 void ARGBAttenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, |
| 1535 int width); |
| 1536 void ARGBAttenuateRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb, |
| 1537 int width); |
| 1538 void ARGBAttenuateRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, |
| 1539 int width); |
| 1540 void ARGBAttenuateRow_Any_NEON(const uint8* src_argb, uint8* dst_argb, |
| 1541 int width); |
| 1542 |
| 1543 // Inverse table for unattenuate, shared by C and SSE2. |
| 1544 extern const uint32 fixed_invtbl8[256]; |
| 1545 void ARGBUnattenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width); |
| 1546 void ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); |
| 1547 void ARGBUnattenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); |
| 1548 void ARGBUnattenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, |
| 1549 int width); |
| 1550 void ARGBUnattenuateRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, |
| 1551 int width); |
| 1552 |
| 1553 void ARGBGrayRow_C(const uint8* src_argb, uint8* dst_argb, int width); |
| 1554 void ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width); |
| 1555 void ARGBGrayRow_NEON(const uint8* src_argb, uint8* dst_argb, int width); |
| 1556 |
| 1557 void ARGBSepiaRow_C(uint8* dst_argb, int width); |
| 1558 void ARGBSepiaRow_SSSE3(uint8* dst_argb, int width); |
| 1559 void ARGBSepiaRow_NEON(uint8* dst_argb, int width); |
| 1560 |
| 1561 void ARGBColorMatrixRow_C(const uint8* src_argb, uint8* dst_argb, |
| 1562 const int8* matrix_argb, int width); |
| 1563 void ARGBColorMatrixRow_SSSE3(const uint8* src_argb, uint8* dst_argb, |
| 1564 const int8* matrix_argb, int width); |
| 1565 void ARGBColorMatrixRow_NEON(const uint8* src_argb, uint8* dst_argb, |
| 1566 const int8* matrix_argb, int width); |
| 1567 |
| 1568 void ARGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width); |
| 1569 void ARGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width); |
| 1570 |
| 1571 void RGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width); |
| 1572 void RGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width); |
| 1573 |
| 1574 void ARGBQuantizeRow_C(uint8* dst_argb, int scale, int interval_size, |
| 1575 int interval_offset, int width); |
| 1576 void ARGBQuantizeRow_SSE2(uint8* dst_argb, int scale, int interval_size, |
| 1577 int interval_offset, int width); |
| 1578 void ARGBQuantizeRow_NEON(uint8* dst_argb, int scale, int interval_size, |
| 1579 int interval_offset, int width); |
| 1580 |
| 1581 void ARGBShadeRow_C(const uint8* src_argb, uint8* dst_argb, int width, |
| 1582 uint32 value); |
| 1583 void ARGBShadeRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width, |
| 1584 uint32 value); |
| 1585 void ARGBShadeRow_NEON(const uint8* src_argb, uint8* dst_argb, int width, |
| 1586 uint32 value); |
| 1587 |
| 1588 // Used for blur. |
| 1589 void CumulativeSumToAverageRow_SSE2(const int32* topleft, const int32* botleft, |
| 1590 int width, int area, uint8* dst, int count); |
| 1591 void ComputeCumulativeSumRow_SSE2(const uint8* row, int32* cumsum, |
| 1592 const int32* previous_cumsum, int width); |
| 1593 |
| 1594 void CumulativeSumToAverageRow_C(const int32* topleft, const int32* botleft, |
| 1595 int width, int area, uint8* dst, int count); |
| 1596 void ComputeCumulativeSumRow_C(const uint8* row, int32* cumsum, |
| 1597 const int32* previous_cumsum, int width); |
| 1598 |
| 1599 LIBYUV_API |
| 1600 void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride, |
| 1601 uint8* dst_argb, const float* uv_dudv, int width); |
| 1602 LIBYUV_API |
| 1603 void ARGBAffineRow_SSE2(const uint8* src_argb, int src_argb_stride, |
| 1604 uint8* dst_argb, const float* uv_dudv, int width); |
| 1605 |
| 1606 // Used for I420Scale, ARGBScale, and ARGBInterpolate. |
| 1607 void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr, |
| 1608 ptrdiff_t src_stride_ptr, |
| 1609 int width, int source_y_fraction); |
| 1610 void InterpolateRow_SSE2(uint8* dst_ptr, const uint8* src_ptr, |
| 1611 ptrdiff_t src_stride_ptr, int width, |
| 1612 int source_y_fraction); |
| 1613 void InterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr, |
| 1614 ptrdiff_t src_stride_ptr, int width, |
| 1615 int source_y_fraction); |
| 1616 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr, |
| 1617 ptrdiff_t src_stride_ptr, int width, |
| 1618 int source_y_fraction); |
| 1619 void InterpolateRow_NEON(uint8* dst_ptr, const uint8* src_ptr, |
| 1620 ptrdiff_t src_stride_ptr, int width, |
| 1621 int source_y_fraction); |
| 1622 void InterpolateRows_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr, |
| 1623 ptrdiff_t src_stride_ptr, int width, |
| 1624 int source_y_fraction); |
| 1625 void InterpolateRow_Unaligned_SSE2(uint8* dst_ptr, const uint8* src_ptr, |
| 1626 ptrdiff_t src_stride_ptr, int width, |
| 1627 int source_y_fraction); |
| 1628 void InterpolateRow_Unaligned_SSSE3(uint8* dst_ptr, const uint8* src_ptr, |
| 1629 ptrdiff_t src_stride_ptr, int width, |
| 1630 int source_y_fraction); |
| 1631 void InterpolateRow_Any_NEON(uint8* dst_ptr, const uint8* src_ptr, |
| 1632 ptrdiff_t src_stride_ptr, int width, |
| 1633 int source_y_fraction); |
| 1634 void InterpolateRow_Any_SSE2(uint8* dst_ptr, const uint8* src_ptr, |
| 1635 ptrdiff_t src_stride_ptr, int width, |
| 1636 int source_y_fraction); |
| 1637 void InterpolateRow_Any_SSSE3(uint8* dst_ptr, const uint8* src_ptr, |
| 1638 ptrdiff_t src_stride_ptr, int width, |
| 1639 int source_y_fraction); |
| 1640 void InterpolateRow_Any_AVX2(uint8* dst_ptr, const uint8* src_ptr, |
| 1641 ptrdiff_t src_stride_ptr, int width, |
| 1642 int source_y_fraction); |
| 1643 void InterpolateRows_Any_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr, |
| 1644 ptrdiff_t src_stride_ptr, int width, |
| 1645 int source_y_fraction); |
| 1646 |
| 1647 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr, |
| 1648 ptrdiff_t src_stride_ptr, |
| 1649 int width, int source_y_fraction); |
| 1650 |
| 1651 // Sobel images. |
| 1652 void SobelXRow_C(const uint8* src_y0, const uint8* src_y1, const uint8* src_y2, |
| 1653 uint8* dst_sobelx, int width); |
| 1654 void SobelXRow_SSE2(const uint8* src_y0, const uint8* src_y1, |
| 1655 const uint8* src_y2, uint8* dst_sobelx, int width); |
| 1656 void SobelXRow_NEON(const uint8* src_y0, const uint8* src_y1, |
| 1657 const uint8* src_y2, uint8* dst_sobelx, int width); |
| 1658 void SobelYRow_C(const uint8* src_y0, const uint8* src_y1, |
| 1659 uint8* dst_sobely, int width); |
| 1660 void SobelYRow_SSE2(const uint8* src_y0, const uint8* src_y1, |
| 1661 uint8* dst_sobely, int width); |
| 1662 void SobelYRow_NEON(const uint8* src_y0, const uint8* src_y1, |
| 1663 uint8* dst_sobely, int width); |
| 1664 void SobelRow_C(const uint8* src_sobelx, const uint8* src_sobely, |
| 1665 uint8* dst_argb, int width); |
| 1666 void SobelRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
| 1667 uint8* dst_argb, int width); |
| 1668 void SobelRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
| 1669 uint8* dst_argb, int width); |
| 1670 void SobelToPlaneRow_C(const uint8* src_sobelx, const uint8* src_sobely, |
| 1671 uint8* dst_y, int width); |
| 1672 void SobelToPlaneRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
| 1673 uint8* dst_y, int width); |
| 1674 void SobelToPlaneRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
| 1675 uint8* dst_y, int width); |
| 1676 void SobelXYRow_C(const uint8* src_sobelx, const uint8* src_sobely, |
| 1677 uint8* dst_argb, int width); |
| 1678 void SobelXYRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, |
| 1679 uint8* dst_argb, int width); |
| 1680 void SobelXYRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, |
| 1681 uint8* dst_argb, int width); |
| 1682 |
| 1683 void ARGBPolynomialRow_C(const uint8* src_argb, |
| 1684 uint8* dst_argb, const float* poly, |
| 1685 int width); |
| 1686 void ARGBPolynomialRow_SSE2(const uint8* src_argb, |
| 1687 uint8* dst_argb, const float* poly, |
| 1688 int width); |
| 1689 void ARGBPolynomialRow_AVX2(const uint8* src_argb, |
| 1690 uint8* dst_argb, const float* poly, |
| 1691 int width); |
| 1692 |
| 1693 void ARGBLumaColorTableRow_C(const uint8* src_argb, uint8* dst_argb, int width, |
| 1694 const uint8* luma, uint32 lumacoeff); |
| 1695 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, |
| 1696 int width, |
| 1697 const uint8* luma, uint32 lumacoeff); |
| 1698 |
| 1699 #ifdef __cplusplus |
| 1700 } // extern "C" |
| 1701 } // namespace libyuv |
| 1702 #endif |
| 1703 |
| 1704 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT |
OLD | NEW |