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 #if defined(__pnacl__) || defined(__CLR_VER) || \ 24 (defined(__native_client__) && defined(__x86_64__)) || \ 25 (defined(__i386__) && !defined(__SSE__) && !defined(__clang__)) 26 #define LIBYUV_DISABLE_X86 27 #endif 28 #if defined(__native_client__) 29 #define LIBYUV_DISABLE_NEON 30 #endif 31 // MemorySanitizer does not support assembly code yet. http://crbug.com/344505 32 #if defined(__has_feature) 33 #if __has_feature(memory_sanitizer) 34 #define LIBYUV_DISABLE_X86 35 #endif 36 #endif 37 // clang >= 3.5.0 required for Arm64. 38 #if defined(__clang__) && defined(__aarch64__) && !defined(LIBYUV_DISABLE_NEON) 39 #if (__clang_major__ < 3) || (__clang_major__ == 3 && (__clang_minor__ < 5)) 40 #define LIBYUV_DISABLE_NEON 41 #endif // clang >= 3.5 42 #endif // __clang__ 43 44 // GCC >= 4.7.0 required for AVX2. 45 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) 46 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) 47 #define GCC_HAS_AVX2 1 48 #endif // GNUC >= 4.7 49 #endif // __GNUC__ 50 51 // clang >= 3.4.0 required for AVX2. 52 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) 53 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4)) 54 #define CLANG_HAS_AVX2 1 55 #endif // clang >= 3.4 56 #endif // __clang__ 57 58 // clang >= 6.0.0 required for AVX512. 59 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) 60 // clang in xcode follows a different versioning scheme. 61 // TODO(fbarchard): fix xcode 9 ios b/789. 62 #if (__clang_major__ >= 7) && !defined(__APPLE__) 63 #define CLANG_HAS_AVX512 1 64 #endif // clang >= 7 65 #endif // __clang__ 66 67 // Visual C 2012 required for AVX2. 68 #if defined(_M_IX86) && !defined(__clang__) && defined(_MSC_VER) && \ 69 _MSC_VER >= 1700 70 #define VISUALC_HAS_AVX2 1 71 #endif // VisualStudio >= 2012 72 73 // The following are available on all x86 platforms: 74 #if !defined(LIBYUV_DISABLE_X86) && \ 75 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) 76 // Conversions: 77 #define HAS_ABGRTOYROW_SSSE3 78 #if !defined(LIBYUV_BIT_EXACT) 79 #define HAS_ABGRTOUVROW_SSSE3 80 #endif 81 #define HAS_ARGB1555TOARGBROW_SSE2 82 #define HAS_ARGB4444TOARGBROW_SSE2 83 #define HAS_ARGBEXTRACTALPHAROW_SSE2 84 #define HAS_ARGBSETROW_X86 85 #define HAS_ARGBSHUFFLEROW_SSSE3 86 #define HAS_ARGBTOARGB1555ROW_SSE2 87 #define HAS_ARGBTOARGB4444ROW_SSE2 88 #define HAS_ARGBTORAWROW_SSSE3 89 #define HAS_ARGBTORGB24ROW_SSSE3 90 #define HAS_ARGBTORGB565DITHERROW_SSE2 91 #define HAS_ARGBTORGB565ROW_SSE2 92 #define HAS_ARGBTOYJROW_SSSE3 93 #define HAS_ARGBTOYROW_SSSE3 94 #define HAS_BGRATOYROW_SSSE3 95 #if !defined(LIBYUV_BIT_EXACT) 96 #define HAS_ARGBTOUV444ROW_SSSE3 97 #define HAS_ARGBTOUVJROW_SSSE3 98 #define HAS_ARGBTOUVROW_SSSE3 99 #define HAS_BGRATOUVROW_SSSE3 100 #endif 101 #define HAS_COPYROW_ERMS 102 #define HAS_COPYROW_SSE2 103 #define HAS_H422TOARGBROW_SSSE3 104 #define HAS_HALFFLOATROW_SSE2 105 #define HAS_I422TOARGB1555ROW_SSSE3 106 #define HAS_I422TOARGB4444ROW_SSSE3 107 #define HAS_I422TOARGBROW_SSSE3 108 #define HAS_I422TORGB24ROW_SSSE3 109 #define HAS_I422TORGB565ROW_SSSE3 110 #define HAS_I422TORGBAROW_SSSE3 111 #define HAS_I422TOUYVYROW_SSE2 112 #define HAS_I422TOYUY2ROW_SSE2 113 #define HAS_I444TOARGBROW_SSSE3 114 #define HAS_INTERPOLATEROW_SSSE3 115 #define HAS_J400TOARGBROW_SSE2 116 #define HAS_J422TOARGBROW_SSSE3 117 #define HAS_MERGEUVROW_SSE2 118 #define HAS_MIRRORROW_SSSE3 119 #define HAS_MIRRORSPLITUVROW_SSSE3 120 #define HAS_NV12TOARGBROW_SSSE3 121 #define HAS_NV12TORGB24ROW_SSSE3 122 #define HAS_NV12TORGB565ROW_SSSE3 123 #define HAS_NV21TOARGBROW_SSSE3 124 #define HAS_NV21TORGB24ROW_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_RGBATOYROW_SSSE3 132 #if !defined(LIBYUV_BIT_EXACT) 133 #define HAS_RGB24TOYJROW_SSSE3 134 #define HAS_RAWTOYJROW_SSSE3 135 #define HAS_RGBATOUVROW_SSSE3 136 #endif 137 #define HAS_SETROW_ERMS 138 #define HAS_SETROW_X86 139 #define HAS_SPLITUVROW_SSE2 140 #define HAS_UYVYTOARGBROW_SSSE3 141 #define HAS_UYVYTOUV422ROW_SSE2 142 #define HAS_UYVYTOUVROW_SSE2 143 #define HAS_UYVYTOYROW_SSE2 144 #define HAS_YUY2TOARGBROW_SSSE3 145 #define HAS_YUY2TOUV422ROW_SSE2 146 #define HAS_YUY2TOUVROW_SSE2 147 #define HAS_YUY2TOYROW_SSE2 148 149 // Effects: 150 #define HAS_ARGBADDROW_SSE2 151 #define HAS_ARGBAFFINEROW_SSE2 152 #if !defined(LIBYUV_BIT_EXACT) 153 #define HAS_ARGBATTENUATEROW_SSSE3 154 #endif 155 #define HAS_ARGBBLENDROW_SSSE3 156 #define HAS_ARGBCOLORMATRIXROW_SSSE3 157 #define HAS_ARGBCOLORTABLEROW_X86 158 #define HAS_ARGBCOPYALPHAROW_SSE2 159 #define HAS_ARGBCOPYYTOALPHAROW_SSE2 160 #define HAS_ARGBGRAYROW_SSSE3 161 #define HAS_ARGBLUMACOLORTABLEROW_SSSE3 162 #define HAS_ARGBMIRRORROW_SSE2 163 #define HAS_ARGBMULTIPLYROW_SSE2 164 #define HAS_ARGBPOLYNOMIALROW_SSE2 165 #define HAS_ARGBQUANTIZEROW_SSE2 166 #define HAS_ARGBSEPIAROW_SSSE3 167 #define HAS_ARGBSHADEROW_SSE2 168 #define HAS_ARGBSUBTRACTROW_SSE2 169 #define HAS_ARGBUNATTENUATEROW_SSE2 170 #define HAS_BLENDPLANEROW_SSSE3 171 #define HAS_COMPUTECUMULATIVESUMROW_SSE2 172 #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2 173 #define HAS_RGBCOLORTABLEROW_X86 174 #define HAS_SOBELROW_SSE2 175 #define HAS_SOBELTOPLANEROW_SSE2 176 #define HAS_SOBELXROW_SSE2 177 #define HAS_SOBELXYROW_SSE2 178 #define HAS_SOBELYROW_SSE2 179 180 // The following functions fail on gcc/clang 32 bit with fpic and framepointer. 181 // caveat: clangcl uses row_win.cc which works. 182 #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 183 defined(_MSC_VER) 184 // TODO(fbarchard): fix build error on android_full_debug=1 185 // https://code.google.com/p/libyuv/issues/detail?id=517 186 #define HAS_I422ALPHATOARGBROW_SSSE3 187 #define HAS_I444ALPHATOARGBROW_SSSE3 188 #endif 189 #endif 190 191 // The following are available on all x86 platforms, but 192 // require VS2012, clang 3.4 or gcc 4.7. 193 #if !defined(LIBYUV_DISABLE_X86) && \ 194 (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \ 195 defined(GCC_HAS_AVX2)) 196 #define HAS_ARGBCOPYALPHAROW_AVX2 197 #define HAS_ARGBCOPYYTOALPHAROW_AVX2 198 #define HAS_ARGBEXTRACTALPHAROW_AVX2 199 #define HAS_ARGBMIRRORROW_AVX2 200 #define HAS_ARGBPOLYNOMIALROW_AVX2 201 #define HAS_ARGBSHUFFLEROW_AVX2 202 #define HAS_ARGBTORGB565DITHERROW_AVX2 203 #define HAS_ARGBTOYJROW_AVX2 204 #define HAS_RAWTOYJROW_AVX2 205 #define HAS_RGB24TOYJROW_AVX2 206 #define HAS_ARGBTOYROW_AVX2 207 #if !defined(LIBYUV_BIT_EXACT) 208 #define HAS_ARGBTOUVJROW_AVX2 209 #define HAS_ARGBTOUVROW_AVX2 210 #endif 211 #define HAS_COPYROW_AVX 212 #define HAS_H422TOARGBROW_AVX2 213 #define HAS_HALFFLOATROW_AVX2 214 // #define HAS_HALFFLOATROW_F16C // Enable to test halffloat cast 215 #define HAS_I422TOARGB1555ROW_AVX2 216 #define HAS_I422TOARGB4444ROW_AVX2 217 #define HAS_I422TOARGBROW_AVX2 218 #define HAS_I422TORGB24ROW_AVX2 219 #define HAS_I422TORGB565ROW_AVX2 220 #define HAS_I422TORGBAROW_AVX2 221 #define HAS_I444TOARGBROW_AVX2 222 #define HAS_INTERPOLATEROW_AVX2 223 #define HAS_J422TOARGBROW_AVX2 224 #define HAS_MERGEUVROW_AVX2 225 #define HAS_MIRRORROW_AVX2 226 #define HAS_NV12TOARGBROW_AVX2 227 #define HAS_NV12TORGB24ROW_AVX2 228 #define HAS_NV12TORGB565ROW_AVX2 229 #define HAS_NV21TOARGBROW_AVX2 230 #define HAS_NV21TORGB24ROW_AVX2 231 #define HAS_SPLITUVROW_AVX2 232 #define HAS_UYVYTOARGBROW_AVX2 233 #define HAS_UYVYTOUV422ROW_AVX2 234 #define HAS_UYVYTOUVROW_AVX2 235 #define HAS_UYVYTOYROW_AVX2 236 #define HAS_YUY2TOARGBROW_AVX2 237 #define HAS_YUY2TOUV422ROW_AVX2 238 #define HAS_YUY2TOUVROW_AVX2 239 #define HAS_YUY2TOYROW_AVX2 240 241 // Effects: 242 #define HAS_ARGBADDROW_AVX2 243 #if !defined(LIBYUV_BIT_EXACT) 244 #define HAS_ARGBATTENUATEROW_AVX2 245 #endif 246 #define HAS_ARGBMULTIPLYROW_AVX2 247 #define HAS_ARGBSUBTRACTROW_AVX2 248 #define HAS_ARGBUNATTENUATEROW_AVX2 249 #define HAS_BLENDPLANEROW_AVX2 250 251 #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 252 defined(_MSC_VER) 253 // TODO(fbarchard): fix build error on android_full_debug=1 254 // https://code.google.com/p/libyuv/issues/detail?id=517 255 #define HAS_I422ALPHATOARGBROW_AVX2 256 #define HAS_I444ALPHATOARGBROW_AVX2 257 #endif 258 #endif 259 260 // The following are available for AVX2 Visual C 32 bit: 261 // TODO(fbarchard): Port to gcc. 262 #if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && defined(_MSC_VER) && \ 263 !defined(__clang__) && defined(VISUALC_HAS_AVX2) 264 #define HAS_ARGB1555TOARGBROW_AVX2 265 #define HAS_ARGB4444TOARGBROW_AVX2 266 #define HAS_ARGBTOARGB1555ROW_AVX2 267 #define HAS_ARGBTOARGB4444ROW_AVX2 268 #define HAS_ARGBTORGB565ROW_AVX2 269 #define HAS_J400TOARGBROW_AVX2 270 #define HAS_RGB565TOARGBROW_AVX2 271 #endif 272 273 // The following are also available on x64 Visual C. 274 #if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_X64) && \ 275 (!defined(__clang__) || defined(__SSSE3__)) 276 #define HAS_I444ALPHATOARGBROW_SSSE3 277 #define HAS_I444TOARGBROW_SSSE3 278 #define HAS_I422ALPHATOARGBROW_SSSE3 279 #define HAS_I422TOARGBROW_SSSE3 280 #endif 281 282 // The following are available for gcc/clang x86 platforms: 283 // TODO(fbarchard): Port to Visual C 284 #if !defined(LIBYUV_DISABLE_X86) && (defined(__x86_64__) || defined(__i386__)) 285 #define HAS_ABGRTOAR30ROW_SSSE3 286 #define HAS_ARGBTOAR30ROW_SSSE3 287 #define HAS_ARGBTOAR64ROW_SSSE3 288 #define HAS_ARGBTOAB64ROW_SSSE3 289 #define HAS_AR64TOARGBROW_SSSE3 290 #define HAS_AB64TOARGBROW_SSSE3 291 #define HAS_CONVERT16TO8ROW_SSSE3 292 #define HAS_CONVERT8TO16ROW_SSE2 293 #define HAS_DETILEROW_SSE2 294 #define HAS_DETILESPLITUVROW_SSSE3 295 #define HAS_HALFMERGEUVROW_SSSE3 296 #define HAS_I210TOAR30ROW_SSSE3 297 #define HAS_I210TOARGBROW_SSSE3 298 #define HAS_I212TOAR30ROW_SSSE3 299 #define HAS_I212TOARGBROW_SSSE3 300 #define HAS_I400TOARGBROW_SSE2 301 #define HAS_I422TOAR30ROW_SSSE3 302 #define HAS_I410TOAR30ROW_SSSE3 303 #define HAS_I410TOARGBROW_SSSE3 304 #define HAS_MERGEARGBROW_SSE2 305 #define HAS_MERGEXRGBROW_SSE2 306 #define HAS_MERGERGBROW_SSSE3 307 #define HAS_MIRRORUVROW_SSSE3 308 #define HAS_NV21TOYUV24ROW_SSSE3 309 #define HAS_P210TOAR30ROW_SSSE3 310 #define HAS_P210TOARGBROW_SSSE3 311 #define HAS_P410TOAR30ROW_SSSE3 312 #define HAS_P410TOARGBROW_SSSE3 313 #define HAS_RAWTORGBAROW_SSSE3 314 #define HAS_RGB24MIRRORROW_SSSE3 315 #if !defined(LIBYUV_BIT_EXACT) 316 #define HAS_RGBATOYJROW_SSSE3 317 #endif 318 #define HAS_SPLITARGBROW_SSE2 319 #define HAS_SPLITARGBROW_SSSE3 320 #define HAS_SPLITXRGBROW_SSE2 321 #define HAS_SPLITXRGBROW_SSSE3 322 #define HAS_SPLITRGBROW_SSSE3 323 #define HAS_SWAPUVROW_SSSE3 324 325 #if defined(__x86_64__) || !defined(__pic__) 326 // TODO(fbarchard): fix build error on android_full_debug=1 327 // https://code.google.com/p/libyuv/issues/detail?id=517 328 #define HAS_I210ALPHATOARGBROW_SSSE3 329 #define HAS_I410ALPHATOARGBROW_SSSE3 330 #endif 331 #endif 332 333 // The following are available for AVX2 gcc/clang x86 platforms: 334 // TODO(fbarchard): Port to Visual C 335 #if !defined(LIBYUV_DISABLE_X86) && \ 336 (defined(__x86_64__) || defined(__i386__)) && \ 337 (defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) 338 #define HAS_ABGRTOAR30ROW_AVX2 339 #if !defined(LIBYUV_BIT_EXACT) 340 #define HAS_ABGRTOUVROW_AVX2 341 #define HAS_ABGRTOYROW_AVX2 342 #endif 343 #define HAS_ARGBTOAR30ROW_AVX2 344 #define HAS_ARGBTORAWROW_AVX2 345 #define HAS_ARGBTORGB24ROW_AVX2 346 #define HAS_ARGBTOAR64ROW_AVX2 347 #define HAS_ARGBTOAB64ROW_AVX2 348 #define HAS_AR64TOARGBROW_AVX2 349 #define HAS_AB64TOARGBROW_AVX2 350 #define HAS_CONVERT16TO8ROW_AVX2 351 #define HAS_INTERPOLATEROW_16TO8_AVX2 352 #define HAS_CONVERT8TO16ROW_AVX2 353 #define HAS_DIVIDEROW_16_AVX2 354 #define HAS_HALFMERGEUVROW_AVX2 355 #define HAS_MERGEAR64ROW_AVX2 356 #define HAS_MERGEARGB16TO8ROW_AVX2 357 #define HAS_MERGEARGBROW_AVX2 358 #define HAS_MERGEXR30ROW_AVX2 359 #define HAS_MERGEXR64ROW_AVX2 360 #define HAS_MERGEXRGB16TO8ROW_AVX2 361 #define HAS_MERGEXRGBROW_AVX2 362 #define HAS_NV21TOYUV24ROW_AVX2 363 #define HAS_I210TOAR30ROW_AVX2 364 #define HAS_I210TOARGBROW_AVX2 365 #define HAS_I212TOAR30ROW_AVX2 366 #define HAS_I212TOARGBROW_AVX2 367 #define HAS_I400TOARGBROW_AVX2 368 #define HAS_I410TOAR30ROW_AVX2 369 #define HAS_I410TOARGBROW_AVX2 370 #define HAS_P210TOAR30ROW_AVX2 371 #define HAS_P210TOARGBROW_AVX2 372 #define HAS_P410TOAR30ROW_AVX2 373 #define HAS_P410TOARGBROW_AVX2 374 #define HAS_I422TOAR30ROW_AVX2 375 #define HAS_I422TOUYVYROW_AVX2 376 #define HAS_I422TOYUY2ROW_AVX2 377 #define HAS_MERGEUVROW_16_AVX2 378 #define HAS_MIRRORUVROW_AVX2 379 #define HAS_MULTIPLYROW_16_AVX2 380 #if !defined(LIBYUV_BIT_EXACT) 381 #define HAS_RGBATOYJROW_AVX2 382 #endif 383 #define HAS_SPLITARGBROW_AVX2 384 #define HAS_SPLITXRGBROW_AVX2 385 #define HAS_SPLITUVROW_16_AVX2 386 #define HAS_SWAPUVROW_AVX2 387 388 #if defined(__x86_64__) || !defined(__pic__) 389 // TODO(fbarchard): fix build error on android_full_debug=1 390 // https://code.google.com/p/libyuv/issues/detail?id=517 391 #define HAS_I210ALPHATOARGBROW_AVX2 392 #define HAS_I410ALPHATOARGBROW_AVX2 393 #endif 394 #endif 395 396 // The following are available for AVX512 clang x86 platforms: 397 // TODO(fbarchard): Port to GCC and Visual C 398 // TODO(fbarchard): re-enable HAS_ARGBTORGB24ROW_AVX512VBMI. Issue libyuv:789 399 #if !defined(LIBYUV_DISABLE_X86) && \ 400 (defined(__x86_64__) || defined(__i386__)) && (defined(CLANG_HAS_AVX512)) 401 #define HAS_ARGBTORGB24ROW_AVX512VBMI 402 #endif 403 404 // The following are available for AVX512 clang x64 platforms: 405 // TODO(fbarchard): Port to x86 406 #if !defined(LIBYUV_DISABLE_X86) && defined(__x86_64__) && \ 407 (defined(CLANG_HAS_AVX512)) 408 #define HAS_I422TOARGBROW_AVX512BW 409 #endif 410 411 // The following are available on Neon platforms: 412 #if !defined(LIBYUV_DISABLE_NEON) && \ 413 (defined(__aarch64__) || defined(__ARM_NEON__) || defined(LIBYUV_NEON)) 414 #define HAS_AB64TOARGBROW_NEON 415 #define HAS_ABGRTOUVROW_NEON 416 #define HAS_ABGRTOYROW_NEON 417 #define HAS_AR64TOARGBROW_NEON 418 #define HAS_ARGB1555TOARGBROW_NEON 419 #define HAS_ARGB1555TOUVROW_NEON 420 #define HAS_ARGB1555TOYROW_NEON 421 #define HAS_ARGB4444TOARGBROW_NEON 422 #define HAS_ARGB4444TOUVROW_NEON 423 #define HAS_ARGB4444TOYROW_NEON 424 #define HAS_ARGBEXTRACTALPHAROW_NEON 425 #define HAS_ARGBSETROW_NEON 426 #define HAS_ARGBTOAB64ROW_NEON 427 #define HAS_ARGBTOAR64ROW_NEON 428 #define HAS_ARGBTOARGB1555ROW_NEON 429 #define HAS_ARGBTOARGB4444ROW_NEON 430 #define HAS_ARGBTORAWROW_NEON 431 #define HAS_ARGBTORGB24ROW_NEON 432 #define HAS_ARGBTORGB565DITHERROW_NEON 433 #define HAS_ARGBTORGB565ROW_NEON 434 #define HAS_ARGBTOUV444ROW_NEON 435 #define HAS_ARGBTOUVJROW_NEON 436 #define HAS_ARGBTOUVROW_NEON 437 #define HAS_ARGBTOYJROW_NEON 438 #define HAS_ARGBTOYROW_NEON 439 #define HAS_AYUVTOUVROW_NEON 440 #define HAS_AYUVTOVUROW_NEON 441 #define HAS_AYUVTOYROW_NEON 442 #define HAS_BGRATOUVROW_NEON 443 #define HAS_BGRATOYROW_NEON 444 #define HAS_BYTETOFLOATROW_NEON 445 #define HAS_CONVERT16TO8ROW_NEON 446 #define HAS_COPYROW_NEON 447 #define HAS_DETILEROW_NEON 448 #define HAS_DETILESPLITUVROW_NEON 449 #define HAS_DIVIDEROW_16_NEON 450 #define HAS_HALFFLOATROW_NEON 451 #define HAS_HALFMERGEUVROW_NEON 452 #define HAS_I400TOARGBROW_NEON 453 #define HAS_I422ALPHATOARGBROW_NEON 454 #define HAS_I422TOARGB1555ROW_NEON 455 #define HAS_I422TOARGB4444ROW_NEON 456 #define HAS_I422TOARGBROW_NEON 457 #define HAS_I422TORGB24ROW_NEON 458 #define HAS_I422TORGB565ROW_NEON 459 #define HAS_I422TORGBAROW_NEON 460 #define HAS_I422TOUYVYROW_NEON 461 #define HAS_I422TOYUY2ROW_NEON 462 #define HAS_I444ALPHATOARGBROW_NEON 463 #define HAS_I444TOARGBROW_NEON 464 #define HAS_INTERPOLATEROW_16_NEON 465 #define HAS_INTERPOLATEROW_NEON 466 #define HAS_J400TOARGBROW_NEON 467 #define HAS_MERGEAR64ROW_NEON 468 #define HAS_MERGEARGB16TO8ROW_NEON 469 #define HAS_MERGEARGBROW_NEON 470 #define HAS_MERGEUVROW_16_NEON 471 #define HAS_MERGEUVROW_NEON 472 #define HAS_MERGEXR30ROW_NEON 473 #define HAS_MERGEXR64ROW_NEON 474 #define HAS_MERGEXRGB16TO8ROW_NEON 475 #define HAS_MERGEXRGBROW_NEON 476 #define HAS_MIRRORROW_NEON 477 #define HAS_MIRRORSPLITUVROW_NEON 478 #define HAS_MIRRORUVROW_NEON 479 #define HAS_MULTIPLYROW_16_NEON 480 #define HAS_NV12TOARGBROW_NEON 481 #define HAS_NV12TORGB24ROW_NEON 482 #define HAS_NV12TORGB565ROW_NEON 483 #define HAS_NV21TOARGBROW_NEON 484 #define HAS_NV21TORGB24ROW_NEON 485 #define HAS_NV21TOYUV24ROW_NEON 486 #define HAS_RAWTOARGBROW_NEON 487 #define HAS_RAWTORGB24ROW_NEON 488 #define HAS_RAWTORGBAROW_NEON 489 #define HAS_RAWTOUVJROW_NEON 490 #define HAS_RAWTOUVROW_NEON 491 #define HAS_RAWTOYJROW_NEON 492 #define HAS_RAWTOYROW_NEON 493 #define HAS_RGB24TOARGBROW_NEON 494 #define HAS_RGB24TOUVJROW_NEON 495 #define HAS_RGB24TOUVROW_NEON 496 #define HAS_RGB24TOYJROW_NEON 497 #define HAS_RGB24TOYROW_NEON 498 #define HAS_RGB565TOARGBROW_NEON 499 #define HAS_RGB565TOUVROW_NEON 500 #define HAS_RGB565TOYROW_NEON 501 #define HAS_RGBATOUVROW_NEON 502 #define HAS_RGBATOYJROW_NEON 503 #define HAS_RGBATOYROW_NEON 504 #define HAS_SETROW_NEON 505 #define HAS_SPLITARGBROW_NEON 506 #define HAS_SPLITRGBROW_NEON 507 #define HAS_SPLITUVROW_16_NEON 508 #define HAS_SPLITUVROW_NEON 509 #define HAS_SPLITXRGBROW_NEON 510 #define HAS_SWAPUVROW_NEON 511 #define HAS_UYVYTOARGBROW_NEON 512 #define HAS_UYVYTOUV422ROW_NEON 513 #define HAS_UYVYTOUVROW_NEON 514 #define HAS_UYVYTOYROW_NEON 515 #define HAS_YUY2TOARGBROW_NEON 516 #define HAS_YUY2TOUV422ROW_NEON 517 #define HAS_YUY2TOUVROW_NEON 518 #define HAS_YUY2TOYROW_NEON 519 520 // Effects: 521 #define HAS_ARGBADDROW_NEON 522 #define HAS_ARGBATTENUATEROW_NEON 523 #define HAS_ARGBBLENDROW_NEON 524 #define HAS_ARGBCOLORMATRIXROW_NEON 525 #define HAS_ARGBGRAYROW_NEON 526 #define HAS_ARGBMIRRORROW_NEON 527 #define HAS_RGB24MIRRORROW_NEON 528 #define HAS_ARGBMULTIPLYROW_NEON 529 #define HAS_ARGBQUANTIZEROW_NEON 530 #define HAS_ARGBSEPIAROW_NEON 531 #define HAS_ARGBSHADEROW_NEON 532 #define HAS_ARGBSHUFFLEROW_NEON 533 #define HAS_ARGBSUBTRACTROW_NEON 534 #define HAS_SOBELROW_NEON 535 #define HAS_SOBELTOPLANEROW_NEON 536 #define HAS_SOBELXROW_NEON 537 #define HAS_SOBELXYROW_NEON 538 #define HAS_SOBELYROW_NEON 539 #endif 540 541 // The following are available on AArch64 platforms: 542 #if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__) 543 #define HAS_INTERPOLATEROW_16TO8_NEON 544 #define HAS_SCALESUMSAMPLES_NEON 545 #define HAS_GAUSSROW_F32_NEON 546 #define HAS_GAUSSCOL_F32_NEON 547 #endif 548 #if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) 549 #define HAS_ABGRTOUVROW_MSA 550 #define HAS_ABGRTOYROW_MSA 551 #define HAS_ARGB1555TOARGBROW_MSA 552 #define HAS_ARGB1555TOUVROW_MSA 553 #define HAS_ARGB1555TOYROW_MSA 554 #define HAS_ARGB4444TOARGBROW_MSA 555 #define HAS_ARGBADDROW_MSA 556 #define HAS_ARGBATTENUATEROW_MSA 557 #define HAS_ARGBBLENDROW_MSA 558 #define HAS_ARGBCOLORMATRIXROW_MSA 559 #define HAS_ARGBEXTRACTALPHAROW_MSA 560 #define HAS_ARGBGRAYROW_MSA 561 #define HAS_ARGBMIRRORROW_MSA 562 #define HAS_ARGBMULTIPLYROW_MSA 563 #define HAS_ARGBQUANTIZEROW_MSA 564 #define HAS_ARGBSEPIAROW_MSA 565 #define HAS_ARGBSETROW_MSA 566 #define HAS_ARGBSHADEROW_MSA 567 #define HAS_ARGBSHUFFLEROW_MSA 568 #define HAS_ARGBSUBTRACTROW_MSA 569 #define HAS_ARGBTOARGB1555ROW_MSA 570 #define HAS_ARGBTOARGB4444ROW_MSA 571 #define HAS_ARGBTORAWROW_MSA 572 #define HAS_ARGBTORGB24ROW_MSA 573 #define HAS_ARGBTORGB565DITHERROW_MSA 574 #define HAS_ARGBTORGB565ROW_MSA 575 #define HAS_ARGBTOUV444ROW_MSA 576 #define HAS_ARGBTOUVJROW_MSA 577 #define HAS_ARGBTOUVROW_MSA 578 #define HAS_ARGBTOYJROW_MSA 579 #define HAS_ARGBTOYROW_MSA 580 #define HAS_BGRATOUVROW_MSA 581 #define HAS_BGRATOYROW_MSA 582 #define HAS_HALFFLOATROW_MSA 583 #define HAS_I400TOARGBROW_MSA 584 #define HAS_I422TOUYVYROW_MSA 585 #define HAS_I422TOYUY2ROW_MSA 586 #define HAS_I422TOARGBROW_MSA 587 #define HAS_I422TORGBAROW_MSA 588 #define HAS_I422ALPHATOARGBROW_MSA 589 #define HAS_I422TORGB24ROW_MSA 590 #define HAS_I422TORGB565ROW_MSA 591 #define HAS_I422TOARGB4444ROW_MSA 592 #define HAS_I422TOARGB1555ROW_MSA 593 #define HAS_NV12TOARGBROW_MSA 594 #define HAS_NV12TORGB565ROW_MSA 595 #define HAS_NV21TOARGBROW_MSA 596 #define HAS_YUY2TOARGBROW_MSA 597 #define HAS_UYVYTOARGBROW_MSA 598 #define HAS_I444TOARGBROW_MSA 599 #define HAS_INTERPOLATEROW_MSA 600 #define HAS_J400TOARGBROW_MSA 601 #define HAS_MERGEUVROW_MSA 602 #define HAS_MIRRORROW_MSA 603 #define HAS_MIRRORUVROW_MSA 604 #define HAS_MIRRORSPLITUVROW_MSA 605 #define HAS_RAWTOARGBROW_MSA 606 #define HAS_RAWTORGB24ROW_MSA 607 #define HAS_RAWTOUVROW_MSA 608 #define HAS_RAWTOYROW_MSA 609 #define HAS_RGB24TOARGBROW_MSA 610 #define HAS_RGB24TOUVROW_MSA 611 #define HAS_RGB24TOYROW_MSA 612 #define HAS_RGB565TOARGBROW_MSA 613 #define HAS_RGB565TOUVROW_MSA 614 #define HAS_RGB565TOYROW_MSA 615 #define HAS_RGBATOUVROW_MSA 616 #define HAS_RGBATOYROW_MSA 617 #define HAS_SETROW_MSA 618 #define HAS_SOBELROW_MSA 619 #define HAS_SOBELTOPLANEROW_MSA 620 #define HAS_SOBELXROW_MSA 621 #define HAS_SOBELXYROW_MSA 622 #define HAS_SOBELYROW_MSA 623 #define HAS_SPLITUVROW_MSA 624 #define HAS_UYVYTOUVROW_MSA 625 #define HAS_UYVYTOYROW_MSA 626 #define HAS_YUY2TOUV422ROW_MSA 627 #define HAS_YUY2TOUVROW_MSA 628 #define HAS_YUY2TOYROW_MSA 629 #endif 630 631 #if !defined(LIBYUV_DISABLE_LSX) && defined(__loongarch_sx) 632 #define HAS_ARGB4444TOARGBROW_LSX 633 #define HAS_ARGB1555TOARGBROW_LSX 634 #define HAS_RGB565TOARGBROW_LSX 635 #define HAS_RGB24TOARGBROW_LSX 636 #define HAS_RAWTOARGBROW_LSX 637 #define HAS_ARGB1555TOYROW_LSX 638 #define HAS_ARGB1555TOUVROW_LSX 639 #define HAS_RGB565TOYROW_LSX 640 #define HAS_RGB565TOUVROW_LSX 641 #define HAS_RGB24TOYROW_LSX 642 #define HAS_RGB24TOUVROW_LSX 643 #define HAS_RAWTOYROW_LSX 644 #define HAS_RAWTOUVROW_LSX 645 #define HAS_NV12TOARGBROW_LSX 646 #define HAS_NV12TORGB565ROW_LSX 647 #define HAS_NV21TOARGBROW_LSX 648 #define HAS_SOBELROW_LSX 649 #define HAS_SOBELTOPLANEROW_LSX 650 #define HAS_SOBELXYROW_LSX 651 #define HAS_ARGBTOYJROW_LSX 652 #define HAS_BGRATOYROW_LSX 653 #define HAS_BGRATOUVROW_LSX 654 #define HAS_ABGRTOYROW_LSX 655 #define HAS_ABGRTOUVROW_LSX 656 #define HAS_RGBATOYROW_LSX 657 #define HAS_RGBATOUVROW_LSX 658 #define HAS_ARGBTOUVJROW_LSX 659 #define HAS_I444TOARGBROW_LSX 660 #define HAS_I400TOARGBROW_LSX 661 #define HAS_J400TOARGBROW_LSX 662 #define HAS_YUY2TOARGBROW_LSX 663 #define HAS_UYVYTOARGBROW_LSX 664 #define HAS_INTERPOLATEROW_LSX 665 #define HAS_ARGBSETROW_LSX 666 #define HAS_RAWTORGB24ROW_LSX 667 #define HAS_MERGEUVROW_LSX 668 #define HAS_ARGBEXTRACTALPHAROW_LSX 669 #define HAS_ARGBBLENDROW_LSX 670 #define HAS_ARGBQUANTIZEROW_LSX 671 #define HAS_ARGBCOLORMATRIXROW_LSX 672 #define HAS_SPLITUVROW_LSX 673 #define HAS_SETROW_LSX 674 #define HAS_MIRRORSPLITUVROW_LSX 675 #endif 676 677 #if !defined(LIBYUV_DISABLE_LASX) && defined(__loongarch_asx) 678 #define HAS_I422TOARGBROW_LASX 679 #define HAS_I422TORGBAROW_LASX 680 #define HAS_I422ALPHATOARGBROW_LASX 681 #define HAS_I422TOYUY2ROW_LASX 682 #define HAS_I422TOUYVYROW_LASX 683 #define HAS_MIRRORROW_LASX 684 #define HAS_MIRRORUVROW_LASX 685 #define HAS_ARGBMIRRORROW_LASX 686 #define HAS_I422TORGB24ROW_LASX 687 #define HAS_I422TORGB565ROW_LASX 688 #define HAS_I422TOARGB4444ROW_LASX 689 #define HAS_I422TOARGB1555ROW_LASX 690 #define HAS_YUY2TOUVROW_LASX 691 #define HAS_YUY2TOYROW_LASX 692 #define HAS_YUY2TOUV422ROW_LASX 693 #define HAS_UYVYTOYROW_LASX 694 #define HAS_UYVYTOUVROW_LASX 695 #define HAS_UYVYTOUV422ROW_LASX 696 #define HAS_ARGBTOYROW_LASX 697 #define HAS_ARGBTOUVROW_LASX 698 #define HAS_ARGBTORGB24ROW_LASX 699 #define HAS_ARGBTORAWROW_LASX 700 #define HAS_ARGBTORGB565ROW_LASX 701 #define HAS_ARGBTOARGB1555ROW_LASX 702 #define HAS_ARGBTOARGB4444ROW_LASX 703 #define HAS_ARGBTOUV444ROW_LASX 704 #define HAS_ARGBMULTIPLYROW_LASX 705 #define HAS_ARGBADDROW_LASX 706 #define HAS_ARGBSUBTRACTROW_LASX 707 #define HAS_ARGBATTENUATEROW_LASX 708 #define HAS_ARGBTORGB565DITHERROW_LASX 709 #define HAS_ARGBSHUFFLEROW_LASX 710 #define HAS_ARGBSHADEROW_LASX 711 #define HAS_ARGBGRAYROW_LASX 712 #define HAS_ARGBSEPIAROW_LASX 713 #define HAS_ARGB4444TOARGBROW_LASX 714 #define HAS_ARGB1555TOARGBROW_LASX 715 #define HAS_RGB565TOARGBROW_LASX 716 #define HAS_RGB24TOARGBROW_LASX 717 #define HAS_RAWTOARGBROW_LASX 718 #define HAS_ARGB1555TOYROW_LASX 719 #define HAS_ARGB1555TOUVROW_LASX 720 #define HAS_RGB565TOYROW_LASX 721 #define HAS_RGB565TOUVROW_LASX 722 #define HAS_RGB24TOYROW_LASX 723 #define HAS_RGB24TOUVROW_LASX 724 #define HAS_RAWTOYROW_LASX 725 #define HAS_RAWTOUVROW_LASX 726 #define HAS_NV12TOARGBROW_LASX 727 #define HAS_NV12TORGB565ROW_LASX 728 #define HAS_NV21TOARGBROW_LASX 729 #define HAS_ARGBTOYJROW_LASX 730 #define HAS_ARGBTOUVJROW_LASX 731 #endif 732 733 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) 734 #if defined(VISUALC_HAS_AVX2) 735 #define SIMD_ALIGNED(var) __declspec(align(32)) var 736 #else 737 #define SIMD_ALIGNED(var) __declspec(align(16)) var 738 #endif 739 #define LIBYUV_NOINLINE __declspec(noinline) 740 typedef __declspec(align(16)) int16_t vec16[8]; 741 typedef __declspec(align(16)) int32_t vec32[4]; 742 typedef __declspec(align(16)) float vecf32[4]; 743 typedef __declspec(align(16)) int8_t vec8[16]; 744 typedef __declspec(align(16)) uint16_t uvec16[8]; 745 typedef __declspec(align(16)) uint32_t uvec32[4]; 746 typedef __declspec(align(16)) uint8_t uvec8[16]; 747 typedef __declspec(align(32)) int16_t lvec16[16]; 748 typedef __declspec(align(32)) int32_t lvec32[8]; 749 typedef __declspec(align(32)) int8_t lvec8[32]; 750 typedef __declspec(align(32)) uint16_t ulvec16[16]; 751 typedef __declspec(align(32)) uint32_t ulvec32[8]; 752 typedef __declspec(align(32)) uint8_t ulvec8[32]; 753 #elif !defined(__pnacl__) && (defined(__GNUC__) || defined(__clang__)) 754 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. 755 #if defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2) 756 #define SIMD_ALIGNED(var) var __attribute__((aligned(32))) 757 #else 758 #define SIMD_ALIGNED(var) var __attribute__((aligned(16))) 759 #endif 760 #define LIBYUV_NOINLINE __attribute__((noinline)) 761 typedef int16_t __attribute__((vector_size(16))) vec16; 762 typedef int32_t __attribute__((vector_size(16))) vec32; 763 typedef float __attribute__((vector_size(16))) vecf32; 764 typedef int8_t __attribute__((vector_size(16))) vec8; 765 typedef uint16_t __attribute__((vector_size(16))) uvec16; 766 typedef uint32_t __attribute__((vector_size(16))) uvec32; 767 typedef uint8_t __attribute__((vector_size(16))) uvec8; 768 typedef int16_t __attribute__((vector_size(32))) lvec16; 769 typedef int32_t __attribute__((vector_size(32))) lvec32; 770 typedef int8_t __attribute__((vector_size(32))) lvec8; 771 typedef uint16_t __attribute__((vector_size(32))) ulvec16; 772 typedef uint32_t __attribute__((vector_size(32))) ulvec32; 773 typedef uint8_t __attribute__((vector_size(32))) ulvec8; 774 #else 775 #define SIMD_ALIGNED(var) var 776 #define LIBYUV_NOINLINE 777 typedef int16_t vec16[8]; 778 typedef int32_t vec32[4]; 779 typedef float vecf32[4]; 780 typedef int8_t vec8[16]; 781 typedef uint16_t uvec16[8]; 782 typedef uint32_t uvec32[4]; 783 typedef uint8_t uvec8[16]; 784 typedef int16_t lvec16[16]; 785 typedef int32_t lvec32[8]; 786 typedef int8_t lvec8[32]; 787 typedef uint16_t ulvec16[16]; 788 typedef uint32_t ulvec32[8]; 789 typedef uint8_t ulvec8[32]; 790 #endif 791 792 #if defined(__aarch64__) || defined(__arm__) 793 // This struct is for ARM color conversion. 794 struct YuvConstants { 795 uvec8 kUVCoeff; 796 vec16 kRGBCoeffBias; 797 }; 798 #else 799 // This struct is for Intel color conversion. 800 struct YuvConstants { 801 uint8_t kUVToB[32]; 802 uint8_t kUVToG[32]; 803 uint8_t kUVToR[32]; 804 int16_t kYToRgb[16]; 805 int16_t kYBiasToRgb[16]; 806 }; 807 808 // Offsets into YuvConstants structure 809 #define KUVTOB 0 810 #define KUVTOG 32 811 #define KUVTOR 64 812 #define KYTORGB 96 813 #define KYBIASTORGB 128 814 815 #endif 816 817 #define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a)-1))) 818 819 #define align_buffer_64(var, size) \ 820 uint8_t* var##_mem = (uint8_t*)(malloc((size) + 63)); /* NOLINT */ \ 821 uint8_t* var = (uint8_t*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ 822 823 #define free_aligned_buffer_64(var) \ 824 free(var##_mem); \ 825 var = 0 826 827 #if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__) 828 #define OMITFP 829 #else 830 #define OMITFP __attribute__((optimize("omit-frame-pointer"))) 831 #endif 832 833 // NaCL macros for GCC x86 and x64. 834 #if defined(__native_client__) 835 #define LABELALIGN ".p2align 5\n" 836 #else 837 #define LABELALIGN 838 #endif 839 840 // Intel Code Analizer markers. Insert IACA_START IACA_END around code to be 841 // measured and then run with iaca -64 libyuv_unittest. 842 // IACA_ASM_START amd IACA_ASM_END are equivalents that can be used within 843 // inline assembly blocks. 844 // example of iaca: 845 // ~/iaca-lin64/bin/iaca.sh -64 -analysis LATENCY out/Release/libyuv_unittest 846 847 #if defined(__x86_64__) || defined(__i386__) 848 849 #define IACA_ASM_START \ 850 ".byte 0x0F, 0x0B\n" \ 851 " movl $111, %%ebx\n" \ 852 ".byte 0x64, 0x67, 0x90\n" 853 854 #define IACA_ASM_END \ 855 " movl $222, %%ebx\n" \ 856 ".byte 0x64, 0x67, 0x90\n" \ 857 ".byte 0x0F, 0x0B\n" 858 859 #define IACA_SSC_MARK(MARK_ID) \ 860 __asm__ __volatile__("\n\t movl $" #MARK_ID \ 861 ", %%ebx" \ 862 "\n\t .byte 0x64, 0x67, 0x90" \ 863 : \ 864 : \ 865 : "memory"); 866 867 #define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); 868 869 #else /* Visual C */ 870 #define IACA_UD_BYTES \ 871 { __asm _emit 0x0F __asm _emit 0x0B } 872 873 #define IACA_SSC_MARK(x) \ 874 { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } 875 876 #define IACA_VC64_START __writegsbyte(111, 111); 877 #define IACA_VC64_END __writegsbyte(222, 222); 878 #endif 879 880 #define IACA_START \ 881 { \ 882 IACA_UD_BYTES \ 883 IACA_SSC_MARK(111) \ 884 } 885 #define IACA_END \ 886 { \ 887 IACA_SSC_MARK(222) \ 888 IACA_UD_BYTES \ 889 } 890 891 void I444ToARGBRow_NEON(const uint8_t* src_y, 892 const uint8_t* src_u, 893 const uint8_t* src_v, 894 uint8_t* dst_argb, 895 const struct YuvConstants* yuvconstants, 896 int width); 897 void I422ToARGBRow_NEON(const uint8_t* src_y, 898 const uint8_t* src_u, 899 const uint8_t* src_v, 900 uint8_t* dst_argb, 901 const struct YuvConstants* yuvconstants, 902 int width); 903 void I444AlphaToARGBRow_NEON(const uint8_t* src_y, 904 const uint8_t* src_u, 905 const uint8_t* src_v, 906 const uint8_t* src_a, 907 uint8_t* dst_argb, 908 const struct YuvConstants* yuvconstants, 909 int width); 910 void I422AlphaToARGBRow_NEON(const uint8_t* src_y, 911 const uint8_t* src_u, 912 const uint8_t* src_v, 913 const uint8_t* src_a, 914 uint8_t* dst_argb, 915 const struct YuvConstants* yuvconstants, 916 int width); 917 void I422ToRGBARow_NEON(const uint8_t* src_y, 918 const uint8_t* src_u, 919 const uint8_t* src_v, 920 uint8_t* dst_rgba, 921 const struct YuvConstants* yuvconstants, 922 int width); 923 void I422ToRGB24Row_NEON(const uint8_t* src_y, 924 const uint8_t* src_u, 925 const uint8_t* src_v, 926 uint8_t* dst_rgb24, 927 const struct YuvConstants* yuvconstants, 928 int width); 929 void I422ToRGB565Row_NEON(const uint8_t* src_y, 930 const uint8_t* src_u, 931 const uint8_t* src_v, 932 uint8_t* dst_rgb565, 933 const struct YuvConstants* yuvconstants, 934 int width); 935 void I422ToARGB1555Row_NEON(const uint8_t* src_y, 936 const uint8_t* src_u, 937 const uint8_t* src_v, 938 uint8_t* dst_argb1555, 939 const struct YuvConstants* yuvconstants, 940 int width); 941 void I422ToARGB4444Row_NEON(const uint8_t* src_y, 942 const uint8_t* src_u, 943 const uint8_t* src_v, 944 uint8_t* dst_argb4444, 945 const struct YuvConstants* yuvconstants, 946 int width); 947 void NV12ToARGBRow_NEON(const uint8_t* src_y, 948 const uint8_t* src_uv, 949 uint8_t* dst_argb, 950 const struct YuvConstants* yuvconstants, 951 int width); 952 void NV12ToRGB565Row_NEON(const uint8_t* src_y, 953 const uint8_t* src_uv, 954 uint8_t* dst_rgb565, 955 const struct YuvConstants* yuvconstants, 956 int width); 957 void NV21ToARGBRow_NEON(const uint8_t* src_y, 958 const uint8_t* src_vu, 959 uint8_t* dst_argb, 960 const struct YuvConstants* yuvconstants, 961 int width); 962 void NV12ToRGB24Row_NEON(const uint8_t* src_y, 963 const uint8_t* src_uv, 964 uint8_t* dst_rgb24, 965 const struct YuvConstants* yuvconstants, 966 int width); 967 void NV21ToRGB24Row_NEON(const uint8_t* src_y, 968 const uint8_t* src_vu, 969 uint8_t* dst_rgb24, 970 const struct YuvConstants* yuvconstants, 971 int width); 972 void NV21ToYUV24Row_NEON(const uint8_t* src_y, 973 const uint8_t* src_vu, 974 uint8_t* dst_yuv24, 975 int width); 976 void YUY2ToARGBRow_NEON(const uint8_t* src_yuy2, 977 uint8_t* dst_argb, 978 const struct YuvConstants* yuvconstants, 979 int width); 980 void UYVYToARGBRow_NEON(const uint8_t* src_uyvy, 981 uint8_t* dst_argb, 982 const struct YuvConstants* yuvconstants, 983 int width); 984 void I444ToARGBRow_MSA(const uint8_t* src_y, 985 const uint8_t* src_u, 986 const uint8_t* src_v, 987 uint8_t* dst_argb, 988 const struct YuvConstants* yuvconstants, 989 int width); 990 void I444ToARGBRow_LSX(const uint8_t* src_y, 991 const uint8_t* src_u, 992 const uint8_t* src_v, 993 uint8_t* dst_argb, 994 const struct YuvConstants* yuvconstants, 995 int width); 996 997 void I422ToARGBRow_MSA(const uint8_t* src_y, 998 const uint8_t* src_u, 999 const uint8_t* src_v, 1000 uint8_t* dst_argb, 1001 const struct YuvConstants* yuvconstants, 1002 int width); 1003 void I422ToARGBRow_LASX(const uint8_t* src_y, 1004 const uint8_t* src_u, 1005 const uint8_t* src_v, 1006 uint8_t* dst_argb, 1007 const struct YuvConstants* yuvconstants, 1008 int width); 1009 void I422ToRGBARow_MSA(const uint8_t* src_y, 1010 const uint8_t* src_u, 1011 const uint8_t* src_v, 1012 uint8_t* dst_argb, 1013 const struct YuvConstants* yuvconstants, 1014 int width); 1015 void I422ToRGBARow_LASX(const uint8_t* src_y, 1016 const uint8_t* src_u, 1017 const uint8_t* src_v, 1018 uint8_t* dst_argb, 1019 const struct YuvConstants* yuvconstants, 1020 int width); 1021 void I422AlphaToARGBRow_MSA(const uint8_t* src_y, 1022 const uint8_t* src_u, 1023 const uint8_t* src_v, 1024 const uint8_t* src_a, 1025 uint8_t* dst_argb, 1026 const struct YuvConstants* yuvconstants, 1027 int width); 1028 void I422AlphaToARGBRow_LASX(const uint8_t* src_y, 1029 const uint8_t* src_u, 1030 const uint8_t* src_v, 1031 const uint8_t* src_a, 1032 uint8_t* dst_argb, 1033 const struct YuvConstants* yuvconstants, 1034 int width); 1035 void I422ToRGB24Row_MSA(const uint8_t* src_y, 1036 const uint8_t* src_u, 1037 const uint8_t* src_v, 1038 uint8_t* dst_argb, 1039 const struct YuvConstants* yuvconstants, 1040 int width); 1041 void I422ToRGB24Row_LASX(const uint8_t* src_y, 1042 const uint8_t* src_u, 1043 const uint8_t* src_v, 1044 uint8_t* dst_argb, 1045 const struct YuvConstants* yuvconstants, 1046 int width); 1047 void I422ToRGB565Row_MSA(const uint8_t* src_y, 1048 const uint8_t* src_u, 1049 const uint8_t* src_v, 1050 uint8_t* dst_rgb565, 1051 const struct YuvConstants* yuvconstants, 1052 int width); 1053 void I422ToRGB565Row_LASX(const uint8_t* src_y, 1054 const uint8_t* src_u, 1055 const uint8_t* src_v, 1056 uint8_t* dst_rgb565, 1057 const struct YuvConstants* yuvconstants, 1058 int width); 1059 void I422ToARGB4444Row_MSA(const uint8_t* src_y, 1060 const uint8_t* src_u, 1061 const uint8_t* src_v, 1062 uint8_t* dst_argb4444, 1063 const struct YuvConstants* yuvconstants, 1064 int width); 1065 void I422ToARGB4444Row_LASX(const uint8_t* src_y, 1066 const uint8_t* src_u, 1067 const uint8_t* src_v, 1068 uint8_t* dst_argb4444, 1069 const struct YuvConstants* yuvconstants, 1070 int width); 1071 void I422ToARGB1555Row_MSA(const uint8_t* src_y, 1072 const uint8_t* src_u, 1073 const uint8_t* src_v, 1074 uint8_t* dst_argb1555, 1075 const struct YuvConstants* yuvconstants, 1076 int width); 1077 void I422ToARGB1555Row_LASX(const uint8_t* src_y, 1078 const uint8_t* src_u, 1079 const uint8_t* src_v, 1080 uint8_t* dst_argb1555, 1081 const struct YuvConstants* yuvconstants, 1082 int width); 1083 void NV12ToARGBRow_MSA(const uint8_t* src_y, 1084 const uint8_t* src_uv, 1085 uint8_t* dst_argb, 1086 const struct YuvConstants* yuvconstants, 1087 int width); 1088 void NV12ToRGB565Row_MSA(const uint8_t* src_y, 1089 const uint8_t* src_uv, 1090 uint8_t* dst_rgb565, 1091 const struct YuvConstants* yuvconstants, 1092 int width); 1093 void NV21ToARGBRow_MSA(const uint8_t* src_y, 1094 const uint8_t* src_vu, 1095 uint8_t* dst_argb, 1096 const struct YuvConstants* yuvconstants, 1097 int width); 1098 void YUY2ToARGBRow_MSA(const uint8_t* src_yuy2, 1099 uint8_t* dst_argb, 1100 const struct YuvConstants* yuvconstants, 1101 int width); 1102 void UYVYToARGBRow_MSA(const uint8_t* src_uyvy, 1103 uint8_t* dst_argb, 1104 const struct YuvConstants* yuvconstants, 1105 int width); 1106 1107 void NV12ToARGBRow_LSX(const uint8_t* src_y, 1108 const uint8_t* src_uv, 1109 uint8_t* dst_argb, 1110 const struct YuvConstants* yuvconstants, 1111 int width); 1112 void NV12ToARGBRow_LASX(const uint8_t* src_y, 1113 const uint8_t* src_uv, 1114 uint8_t* dst_argb, 1115 const struct YuvConstants* yuvconstants, 1116 int width); 1117 void NV12ToRGB565Row_LSX(const uint8_t* src_y, 1118 const uint8_t* src_uv, 1119 uint8_t* dst_rgb565, 1120 const struct YuvConstants* yuvconstants, 1121 int width); 1122 void NV12ToRGB565Row_LASX(const uint8_t* src_y, 1123 const uint8_t* src_uv, 1124 uint8_t* dst_rgb565, 1125 const struct YuvConstants* yuvconstants, 1126 int width); 1127 void NV21ToARGBRow_LSX(const uint8_t* src_y, 1128 const uint8_t* src_vu, 1129 uint8_t* dst_argb, 1130 const struct YuvConstants* yuvconstants, 1131 int width); 1132 void NV21ToARGBRow_LASX(const uint8_t* src_y, 1133 const uint8_t* src_vu, 1134 uint8_t* dst_argb, 1135 const struct YuvConstants* yuvconstants, 1136 int width); 1137 void YUY2ToARGBRow_LSX(const uint8_t* src_yuy2, 1138 uint8_t* dst_argb, 1139 const struct YuvConstants* yuvconstants, 1140 int width); 1141 void UYVYToARGBRow_LSX(const uint8_t* src_uyvy, 1142 uint8_t* dst_argb, 1143 const struct YuvConstants* yuvconstants, 1144 int width); 1145 1146 void ARGBToYRow_AVX2(const uint8_t* src_argb, uint8_t* dst_y, int width); 1147 void ARGBToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1148 void ABGRToYRow_AVX2(const uint8_t* src_abgr, uint8_t* dst_y, int width); 1149 void ABGRToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1150 void ARGBToYRow_SSSE3(const uint8_t* src_argb, uint8_t* dst_y, int width); 1151 void ARGBToYJRow_AVX2(const uint8_t* src_argb, uint8_t* dst_y, int width); 1152 void ARGBToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1153 void ARGBToYJRow_SSSE3(const uint8_t* src_argb, uint8_t* dst_y, int width); 1154 void RGBAToYJRow_AVX2(const uint8_t* src_rgba, uint8_t* dst_y, int width); 1155 void RGBAToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1156 void RGBAToYJRow_SSSE3(const uint8_t* src_rgba, uint8_t* dst_y, int width); 1157 void BGRAToYRow_SSSE3(const uint8_t* src_bgra, uint8_t* dst_y, int width); 1158 void ABGRToYRow_SSSE3(const uint8_t* src_abgr, uint8_t* dst_y, int width); 1159 void RGBAToYRow_SSSE3(const uint8_t* src_rgba, uint8_t* dst_y, int width); 1160 void RGB24ToYRow_SSSE3(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 1161 void RGB24ToYJRow_SSSE3(const uint8_t* src_rgb24, uint8_t* dst_yj, int width); 1162 void RAWToYRow_SSSE3(const uint8_t* src_raw, uint8_t* dst_y, int width); 1163 void RAWToYJRow_SSSE3(const uint8_t* src_raw, uint8_t* dst_yj, int width); 1164 void RGB24ToYJRow_AVX2(const uint8_t* src_rgb24, uint8_t* dst_yj, int width); 1165 void RAWToYJRow_AVX2(const uint8_t* src_raw, uint8_t* dst_yj, int width); 1166 void ARGBToYRow_NEON(const uint8_t* src_argb, uint8_t* dst_y, int width); 1167 void ARGBToYJRow_NEON(const uint8_t* src_argb, uint8_t* dst_y, int width); 1168 void RGBAToYJRow_NEON(const uint8_t* src_rgba, uint8_t* dst_y, int width); 1169 void ARGBToYRow_MSA(const uint8_t* src_argb0, uint8_t* dst_y, int width); 1170 void ARGBToYJRow_MSA(const uint8_t* src_argb0, uint8_t* dst_y, int width); 1171 void ARGBToYRow_LASX(const uint8_t* src_argb0, uint8_t* dst_y, int width); 1172 void ARGBToYJRow_LSX(const uint8_t* src_argb0, uint8_t* dst_y, int width); 1173 void ARGBToYJRow_LASX(const uint8_t* src_argb0, uint8_t* dst_y, int width); 1174 void ARGBToUV444Row_NEON(const uint8_t* src_argb, 1175 uint8_t* dst_u, 1176 uint8_t* dst_v, 1177 int width); 1178 void ARGBToUVRow_NEON(const uint8_t* src_argb, 1179 int src_stride_argb, 1180 uint8_t* dst_u, 1181 uint8_t* dst_v, 1182 int width); 1183 void ARGBToUV444Row_MSA(const uint8_t* src_argb, 1184 uint8_t* dst_u, 1185 uint8_t* dst_v, 1186 int width); 1187 void ARGBToUVRow_MSA(const uint8_t* src_argb, 1188 int src_stride_argb, 1189 uint8_t* dst_u, 1190 uint8_t* dst_v, 1191 int width); 1192 void ARGBToUVRow_LASX(const uint8_t* src_argb, 1193 int src_stride_argb, 1194 uint8_t* dst_u, 1195 uint8_t* dst_v, 1196 int width); 1197 void ARGBToUV444Row_LASX(const uint8_t* src_argb, 1198 uint8_t* dst_u, 1199 uint8_t* dst_v, 1200 int width); 1201 void ARGBToUVJRow_NEON(const uint8_t* src_argb, 1202 int src_stride_argb, 1203 uint8_t* dst_u, 1204 uint8_t* dst_v, 1205 int width); 1206 void BGRAToUVRow_NEON(const uint8_t* src_bgra, 1207 int src_stride_bgra, 1208 uint8_t* dst_u, 1209 uint8_t* dst_v, 1210 int width); 1211 void ABGRToUVRow_NEON(const uint8_t* src_abgr, 1212 int src_stride_abgr, 1213 uint8_t* dst_u, 1214 uint8_t* dst_v, 1215 int width); 1216 void RGBAToUVRow_NEON(const uint8_t* src_rgba, 1217 int src_stride_rgba, 1218 uint8_t* dst_u, 1219 uint8_t* dst_v, 1220 int width); 1221 void RGB24ToUVRow_NEON(const uint8_t* src_rgb24, 1222 int src_stride_rgb24, 1223 uint8_t* dst_u, 1224 uint8_t* dst_v, 1225 int width); 1226 void RAWToUVRow_NEON(const uint8_t* src_raw, 1227 int src_stride_raw, 1228 uint8_t* dst_u, 1229 uint8_t* dst_v, 1230 int width); 1231 void RGB24ToUVJRow_NEON(const uint8_t* src_rgb24, 1232 int src_stride_rgb24, 1233 uint8_t* dst_u, 1234 uint8_t* dst_v, 1235 int width); 1236 void RAWToUVJRow_NEON(const uint8_t* src_raw, 1237 int src_stride_raw, 1238 uint8_t* dst_u, 1239 uint8_t* dst_v, 1240 int width); 1241 void RGB565ToUVRow_NEON(const uint8_t* src_rgb565, 1242 int src_stride_rgb565, 1243 uint8_t* dst_u, 1244 uint8_t* dst_v, 1245 int width); 1246 void ARGB1555ToUVRow_NEON(const uint8_t* src_argb1555, 1247 int src_stride_argb1555, 1248 uint8_t* dst_u, 1249 uint8_t* dst_v, 1250 int width); 1251 void ARGB4444ToUVRow_NEON(const uint8_t* src_argb4444, 1252 int src_stride_argb4444, 1253 uint8_t* dst_u, 1254 uint8_t* dst_v, 1255 int width); 1256 void ARGBToUVJRow_MSA(const uint8_t* src_rgb, 1257 int src_stride_rgb, 1258 uint8_t* dst_u, 1259 uint8_t* dst_v, 1260 int width); 1261 void BGRAToUVRow_MSA(const uint8_t* src_rgb, 1262 int src_stride_rgb, 1263 uint8_t* dst_u, 1264 uint8_t* dst_v, 1265 int width); 1266 void ABGRToUVRow_MSA(const uint8_t* src_rgb, 1267 int src_stride_rgb, 1268 uint8_t* dst_u, 1269 uint8_t* dst_v, 1270 int width); 1271 void RGBAToUVRow_MSA(const uint8_t* src_rgb, 1272 int src_stride_rgb, 1273 uint8_t* dst_u, 1274 uint8_t* dst_v, 1275 int width); 1276 void RGB24ToUVRow_MSA(const uint8_t* src_rgb, 1277 int src_stride_rgb, 1278 uint8_t* dst_u, 1279 uint8_t* dst_v, 1280 int width); 1281 void RAWToUVRow_MSA(const uint8_t* src_rgb, 1282 int src_stride_rgb, 1283 uint8_t* dst_u, 1284 uint8_t* dst_v, 1285 int width); 1286 void RGB565ToUVRow_MSA(const uint8_t* src_rgb565, 1287 int src_stride_rgb565, 1288 uint8_t* dst_u, 1289 uint8_t* dst_v, 1290 int width); 1291 void ARGB1555ToUVRow_MSA(const uint8_t* src_argb1555, 1292 int src_stride_argb1555, 1293 uint8_t* dst_u, 1294 uint8_t* dst_v, 1295 int width); 1296 void BGRAToUVRow_LSX(const uint8_t* src_bgra, 1297 int src_stride_bgra, 1298 uint8_t* dst_u, 1299 uint8_t* dst_v, 1300 int width); 1301 void ABGRToUVRow_LSX(const uint8_t* src_abgr, 1302 int src_stride_abgr, 1303 uint8_t* dst_u, 1304 uint8_t* dst_v, 1305 int width); 1306 void RGBAToUVRow_LSX(const uint8_t* src_rgba, 1307 int src_stride_rgba, 1308 uint8_t* dst_u, 1309 uint8_t* dst_v, 1310 int width); 1311 void ARGBToUVJRow_LSX(const uint8_t* src_argb, 1312 int src_stride_argb, 1313 uint8_t* dst_u, 1314 uint8_t* dst_v, 1315 int width); 1316 void ARGBToUVJRow_LASX(const uint8_t* src_argb, 1317 int src_stride_argb, 1318 uint8_t* dst_u, 1319 uint8_t* dst_v, 1320 int width); 1321 void ARGB1555ToUVRow_LSX(const uint8_t* src_argb1555, 1322 int src_stride_argb1555, 1323 uint8_t* dst_u, 1324 uint8_t* dst_v, 1325 int width); 1326 void ARGB1555ToUVRow_LASX(const uint8_t* src_argb1555, 1327 int src_stride_argb1555, 1328 uint8_t* dst_u, 1329 uint8_t* dst_v, 1330 int width); 1331 void RGB565ToUVRow_LSX(const uint8_t* src_rgb565, 1332 int src_stride_rgb565, 1333 uint8_t* dst_u, 1334 uint8_t* dst_v, 1335 int width); 1336 void RGB565ToUVRow_LASX(const uint8_t* src_rgb565, 1337 int src_stride_rgb565, 1338 uint8_t* dst_u, 1339 uint8_t* dst_v, 1340 int width); 1341 void RGB24ToUVRow_LSX(const uint8_t* src_rgb24, 1342 int src_stride_rgb24, 1343 uint8_t* dst_u, 1344 uint8_t* dst_v, 1345 int width); 1346 void RGB24ToUVRow_LASX(const uint8_t* src_rgb24, 1347 int src_stride_rgb24, 1348 uint8_t* dst_u, 1349 uint8_t* dst_v, 1350 int width); 1351 void RAWToUVRow_LSX(const uint8_t* src_raw, 1352 int src_stride_raw, 1353 uint8_t* dst_u, 1354 uint8_t* dst_v, 1355 int width); 1356 void RAWToUVRow_LASX(const uint8_t* src_raw, 1357 int src_stride_raw, 1358 uint8_t* dst_u, 1359 uint8_t* dst_v, 1360 int width); 1361 void BGRAToYRow_NEON(const uint8_t* src_bgra, uint8_t* dst_y, int width); 1362 void ABGRToYRow_NEON(const uint8_t* src_abgr, uint8_t* dst_y, int width); 1363 void RGBAToYRow_NEON(const uint8_t* src_rgba, uint8_t* dst_y, int width); 1364 void RGB24ToYRow_NEON(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 1365 void RGB24ToYJRow_NEON(const uint8_t* src_rgb24, uint8_t* dst_yj, int width); 1366 void RAWToYRow_NEON(const uint8_t* src_raw, uint8_t* dst_y, int width); 1367 void RAWToYJRow_NEON(const uint8_t* src_raw, uint8_t* dst_yj, int width); 1368 void RGB565ToYRow_NEON(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1369 void ARGB1555ToYRow_NEON(const uint8_t* src_argb1555, 1370 uint8_t* dst_y, 1371 int width); 1372 void ARGB4444ToYRow_NEON(const uint8_t* src_argb4444, 1373 uint8_t* dst_y, 1374 int width); 1375 void BGRAToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1376 void ABGRToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1377 void RGBAToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1378 void RGB24ToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1379 void RAWToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1380 void RGB565ToYRow_MSA(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1381 void ARGB1555ToYRow_MSA(const uint8_t* src_argb1555, uint8_t* dst_y, int width); 1382 1383 void BGRAToYRow_LSX(const uint8_t* src_bgra, uint8_t* dst_y, int width); 1384 void ABGRToYRow_LSX(const uint8_t* src_abgr, uint8_t* dst_y, int width); 1385 void RGBAToYRow_LSX(const uint8_t* src_rgba, uint8_t* dst_y, int width); 1386 void ARGB1555ToYRow_LSX(const uint8_t* src_argb1555, uint8_t* dst_y, int width); 1387 void ARGB1555ToYRow_LASX(const uint8_t* src_argb1555, 1388 uint8_t* dst_y, 1389 int width); 1390 void RGB565ToYRow_LSX(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1391 void RGB565ToYRow_LASX(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1392 void RGB24ToYRow_LSX(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 1393 void RGB24ToYRow_LASX(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 1394 void RAWToYRow_LSX(const uint8_t* src_raw, uint8_t* dst_y, int width); 1395 void RAWToYRow_LASX(const uint8_t* src_raw, uint8_t* dst_y, int width); 1396 1397 void ARGBToYRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1398 void ARGBToYJRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1399 void RGBAToYJRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1400 void BGRAToYRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1401 void ABGRToYRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1402 void RGBAToYRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1403 void RGB24ToYRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1404 void RGB24ToYJRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1405 void RAWToYRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1406 void RAWToYJRow_C(const uint8_t* src_rgb, uint8_t* dst_y, int width); 1407 void RGB565ToYRow_C(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1408 void ARGB1555ToYRow_C(const uint8_t* src_argb1555, uint8_t* dst_y, int width); 1409 void ARGB4444ToYRow_C(const uint8_t* src_argb4444, uint8_t* dst_y, int width); 1410 void ARGBToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1411 void ARGBToYJRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1412 void RGBAToYJRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1413 void BGRAToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1414 void ABGRToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1415 void RGBAToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1416 void RGB24ToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1417 void RGB24ToYJRow_Any_SSSE3(const uint8_t* src_ptr, 1418 uint8_t* dst_ptr, 1419 int width); 1420 void RAWToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1421 void RAWToYJRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1422 void RGB24ToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1423 void RAWToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1424 void ARGBToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1425 void ARGBToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1426 void RGBAToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1427 void BGRAToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1428 void ABGRToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1429 void RGBAToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1430 void RGB24ToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1431 void RGB24ToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1432 void RAWToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1433 void RAWToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1434 void RGB565ToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1435 void ARGB1555ToYRow_Any_NEON(const uint8_t* src_ptr, 1436 uint8_t* dst_ptr, 1437 int width); 1438 void ARGB4444ToYRow_Any_NEON(const uint8_t* src_ptr, 1439 uint8_t* dst_ptr, 1440 int width); 1441 void BGRAToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1442 void ABGRToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1443 void RGBAToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1444 void ARGBToYJRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1445 void ARGBToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1446 void RGB24ToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1447 void RAWToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1448 void RGB565ToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1449 void ARGB1555ToYRow_Any_MSA(const uint8_t* src_ptr, 1450 uint8_t* dst_ptr, 1451 int width); 1452 1453 void BGRAToYRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1454 void ABGRToYRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1455 void RGBAToYRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1456 void ARGBToYJRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1457 void RGB24ToYRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1458 void RGB565ToYRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1459 void RAWToYRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1460 void ARGB1555ToYRow_Any_LSX(const uint8_t* src_ptr, 1461 uint8_t* dst_ptr, 1462 int width); 1463 1464 void RGB565ToYRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1465 void RGB24ToYRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1466 void ARGBToYJRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1467 void ARGBToYRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1468 void RAWToYRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1469 void ARGB1555ToYRow_Any_LASX(const uint8_t* src_ptr, 1470 uint8_t* dst_ptr, 1471 int width); 1472 1473 void ARGBToUVRow_AVX2(const uint8_t* src_argb, 1474 int src_stride_argb, 1475 uint8_t* dst_u, 1476 uint8_t* dst_v, 1477 int width); 1478 void ABGRToUVRow_AVX2(const uint8_t* src_abgr, 1479 int src_stride_abgr, 1480 uint8_t* dst_u, 1481 uint8_t* dst_v, 1482 int width); 1483 void ARGBToUVJRow_AVX2(const uint8_t* src_argb, 1484 int src_stride_argb, 1485 uint8_t* dst_u, 1486 uint8_t* dst_v, 1487 int width); 1488 void ARGBToUVRow_SSSE3(const uint8_t* src_argb, 1489 int src_stride_argb, 1490 uint8_t* dst_u, 1491 uint8_t* dst_v, 1492 int width); 1493 void ARGBToUVJRow_SSSE3(const uint8_t* src_argb, 1494 int src_stride_argb, 1495 uint8_t* dst_u, 1496 uint8_t* dst_v, 1497 int width); 1498 void BGRAToUVRow_SSSE3(const uint8_t* src_bgra, 1499 int src_stride_bgra, 1500 uint8_t* dst_u, 1501 uint8_t* dst_v, 1502 int width); 1503 void ABGRToUVRow_SSSE3(const uint8_t* src_abgr, 1504 int src_stride_abgr, 1505 uint8_t* dst_u, 1506 uint8_t* dst_v, 1507 int width); 1508 void RGBAToUVRow_SSSE3(const uint8_t* src_rgba, 1509 int src_stride_rgba, 1510 uint8_t* dst_u, 1511 uint8_t* dst_v, 1512 int width); 1513 void ARGBToUVRow_Any_AVX2(const uint8_t* src_ptr, 1514 int src_stride, 1515 uint8_t* dst_u, 1516 uint8_t* dst_v, 1517 int width); 1518 void ABGRToUVRow_Any_AVX2(const uint8_t* src_ptr, 1519 int src_stride, 1520 uint8_t* dst_u, 1521 uint8_t* dst_v, 1522 int width); 1523 void ARGBToUVJRow_Any_AVX2(const uint8_t* src_ptr, 1524 int src_stride, 1525 uint8_t* dst_u, 1526 uint8_t* dst_v, 1527 int width); 1528 void ARGBToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1529 int src_stride, 1530 uint8_t* dst_u, 1531 uint8_t* dst_v, 1532 int width); 1533 void ARGBToUVJRow_Any_SSSE3(const uint8_t* src_ptr, 1534 int src_stride, 1535 uint8_t* dst_u, 1536 uint8_t* dst_v, 1537 int width); 1538 void BGRAToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1539 int src_stride, 1540 uint8_t* dst_u, 1541 uint8_t* dst_v, 1542 int width); 1543 void ABGRToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1544 int src_stride, 1545 uint8_t* dst_u, 1546 uint8_t* dst_v, 1547 int width); 1548 void RGBAToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1549 int src_stride, 1550 uint8_t* dst_u, 1551 uint8_t* dst_v, 1552 int width); 1553 void ARGBToUV444Row_Any_NEON(const uint8_t* src_ptr, 1554 uint8_t* dst_u, 1555 uint8_t* dst_v, 1556 int width); 1557 void ARGBToUVRow_Any_NEON(const uint8_t* src_ptr, 1558 int src_stride, 1559 uint8_t* dst_u, 1560 uint8_t* dst_v, 1561 int width); 1562 void ARGBToUV444Row_Any_MSA(const uint8_t* src_ptr, 1563 uint8_t* dst_u, 1564 uint8_t* dst_v, 1565 int width); 1566 void ARGBToUVRow_Any_MSA(const uint8_t* src_ptr, 1567 int src_stride_ptr, 1568 uint8_t* dst_u, 1569 uint8_t* dst_v, 1570 int width); 1571 void ARGBToUVRow_Any_LASX(const uint8_t* src_ptr, 1572 int src_stride_ptr, 1573 uint8_t* dst_u, 1574 uint8_t* dst_v, 1575 int width); 1576 void ARGBToUV444Row_Any_LASX(const uint8_t* src_ptr, 1577 uint8_t* dst_u, 1578 uint8_t* dst_v, 1579 int width); 1580 void ARGBToUVJRow_Any_NEON(const uint8_t* src_ptr, 1581 int src_stride, 1582 uint8_t* dst_u, 1583 uint8_t* dst_v, 1584 int width); 1585 void BGRAToUVRow_Any_NEON(const uint8_t* src_ptr, 1586 int src_stride, 1587 uint8_t* dst_u, 1588 uint8_t* dst_v, 1589 int width); 1590 void ABGRToUVRow_Any_NEON(const uint8_t* src_ptr, 1591 int src_stride, 1592 uint8_t* dst_u, 1593 uint8_t* dst_v, 1594 int width); 1595 void RGBAToUVRow_Any_NEON(const uint8_t* src_ptr, 1596 int src_stride, 1597 uint8_t* dst_u, 1598 uint8_t* dst_v, 1599 int width); 1600 void RGB24ToUVRow_Any_NEON(const uint8_t* src_ptr, 1601 int src_stride, 1602 uint8_t* dst_u, 1603 uint8_t* dst_v, 1604 int width); 1605 void RAWToUVRow_Any_NEON(const uint8_t* src_ptr, 1606 int src_stride, 1607 uint8_t* dst_u, 1608 uint8_t* dst_v, 1609 int width); 1610 void RGB24ToUVJRow_Any_NEON(const uint8_t* src_ptr, 1611 int src_stride, 1612 uint8_t* dst_u, 1613 uint8_t* dst_v, 1614 int width); 1615 void RAWToUVJRow_Any_NEON(const uint8_t* src_ptr, 1616 int src_stride, 1617 uint8_t* dst_u, 1618 uint8_t* dst_v, 1619 int width); 1620 void RGB565ToUVRow_Any_NEON(const uint8_t* src_ptr, 1621 int src_stride, 1622 uint8_t* dst_u, 1623 uint8_t* dst_v, 1624 int width); 1625 void ARGB1555ToUVRow_Any_NEON(const uint8_t* src_ptr, 1626 int src_stride, 1627 uint8_t* dst_u, 1628 uint8_t* dst_v, 1629 int width); 1630 void ARGB4444ToUVRow_Any_NEON(const uint8_t* src_ptr, 1631 int src_stride, 1632 uint8_t* dst_u, 1633 uint8_t* dst_v, 1634 int width); 1635 void ARGBToUVJRow_Any_MSA(const uint8_t* src_ptr, 1636 int src_stride_ptr, 1637 uint8_t* dst_u, 1638 uint8_t* dst_v, 1639 int width); 1640 void BGRAToUVRow_Any_MSA(const uint8_t* src_ptr, 1641 int src_stride_ptr, 1642 uint8_t* dst_u, 1643 uint8_t* dst_v, 1644 int width); 1645 void ABGRToUVRow_Any_MSA(const uint8_t* src_ptr, 1646 int src_stride_ptr, 1647 uint8_t* dst_u, 1648 uint8_t* dst_v, 1649 int width); 1650 void RGBAToUVRow_Any_MSA(const uint8_t* src_ptr, 1651 int src_stride_ptr, 1652 uint8_t* dst_u, 1653 uint8_t* dst_v, 1654 int width); 1655 void RGB24ToUVRow_Any_MSA(const uint8_t* src_ptr, 1656 int src_stride_ptr, 1657 uint8_t* dst_u, 1658 uint8_t* dst_v, 1659 int width); 1660 void RAWToUVRow_Any_MSA(const uint8_t* src_ptr, 1661 int src_stride_ptr, 1662 uint8_t* dst_u, 1663 uint8_t* dst_v, 1664 int width); 1665 void RGB565ToUVRow_Any_MSA(const uint8_t* src_ptr, 1666 int src_stride_ptr, 1667 uint8_t* dst_u, 1668 uint8_t* dst_v, 1669 int width); 1670 void ARGB1555ToUVRow_Any_MSA(const uint8_t* src_ptr, 1671 int src_stride_ptr, 1672 uint8_t* dst_u, 1673 uint8_t* dst_v, 1674 int width); 1675 void ABGRToUVRow_Any_LSX(const uint8_t* src_ptr, 1676 int src_stride_ptr, 1677 uint8_t* dst_u, 1678 uint8_t* dst_v, 1679 int width); 1680 void BGRAToUVRow_Any_LSX(const uint8_t* src_ptr, 1681 int src_stride_ptr, 1682 uint8_t* dst_u, 1683 uint8_t* dst_v, 1684 int width); 1685 void RGBAToUVRow_Any_LSX(const uint8_t* src_ptr, 1686 int src_stride_ptr, 1687 uint8_t* dst_u, 1688 uint8_t* dst_v, 1689 int width); 1690 void ARGBToUVJRow_Any_LSX(const uint8_t* src_ptr, 1691 int src_stride_ptr, 1692 uint8_t* dst_u, 1693 uint8_t* dst_v, 1694 int width); 1695 void ARGBToUVJRow_Any_LASX(const uint8_t* src_ptr, 1696 int src_stride_ptr, 1697 uint8_t* dst_u, 1698 uint8_t* dst_v, 1699 int width); 1700 void ARGB1555ToUVRow_Any_LSX(const uint8_t* src_ptr, 1701 int src_stride_ptr, 1702 uint8_t* dst_u, 1703 uint8_t* dst_v, 1704 int width); 1705 void ARGB1555ToUVRow_Any_LASX(const uint8_t* src_ptr, 1706 int src_stride_ptr, 1707 uint8_t* dst_u, 1708 uint8_t* dst_v, 1709 int width); 1710 void RGB565ToUVRow_Any_LSX(const uint8_t* src_ptr, 1711 int src_stride_ptr, 1712 uint8_t* dst_u, 1713 uint8_t* dst_v, 1714 int width); 1715 void RGB565ToUVRow_Any_LASX(const uint8_t* src_ptr, 1716 int src_stride_ptr, 1717 uint8_t* dst_u, 1718 uint8_t* dst_v, 1719 int width); 1720 void RGB24ToUVRow_Any_LSX(const uint8_t* src_ptr, 1721 int src_stride_ptr, 1722 uint8_t* dst_u, 1723 uint8_t* dst_v, 1724 int width); 1725 void RGB24ToUVRow_Any_LASX(const uint8_t* src_ptr, 1726 int src_stride_ptr, 1727 uint8_t* dst_u, 1728 uint8_t* dst_v, 1729 int width); 1730 void RAWToUVRow_Any_LSX(const uint8_t* src_ptr, 1731 int src_stride_ptr, 1732 uint8_t* dst_u, 1733 uint8_t* dst_v, 1734 int width); 1735 void RAWToUVRow_Any_LASX(const uint8_t* src_ptr, 1736 int src_stride_ptr, 1737 uint8_t* dst_u, 1738 uint8_t* dst_v, 1739 int width); 1740 void ARGBToUVRow_C(const uint8_t* src_rgb, 1741 int src_stride_rgb, 1742 uint8_t* dst_u, 1743 uint8_t* dst_v, 1744 int width); 1745 void ARGBToUVJRow_C(const uint8_t* src_rgb, 1746 int src_stride_rgb, 1747 uint8_t* dst_u, 1748 uint8_t* dst_v, 1749 int width); 1750 void ARGBToUVRow_C(const uint8_t* src_rgb, 1751 int src_stride_rgb, 1752 uint8_t* dst_u, 1753 uint8_t* dst_v, 1754 int width); 1755 void ARGBToUVJRow_C(const uint8_t* src_rgb, 1756 int src_stride_rgb, 1757 uint8_t* dst_u, 1758 uint8_t* dst_v, 1759 int width); 1760 void BGRAToUVRow_C(const uint8_t* src_rgb, 1761 int src_stride_rgb, 1762 uint8_t* dst_u, 1763 uint8_t* dst_v, 1764 int width); 1765 void ABGRToUVRow_C(const uint8_t* src_rgb, 1766 int src_stride_rgb, 1767 uint8_t* dst_u, 1768 uint8_t* dst_v, 1769 int width); 1770 void RGBAToUVRow_C(const uint8_t* src_rgb, 1771 int src_stride_rgb, 1772 uint8_t* dst_u, 1773 uint8_t* dst_v, 1774 int width); 1775 void RGB24ToUVRow_C(const uint8_t* src_rgb, 1776 int src_stride_rgb, 1777 uint8_t* dst_u, 1778 uint8_t* dst_v, 1779 int width); 1780 void RAWToUVRow_C(const uint8_t* src_rgb, 1781 int src_stride_rgb, 1782 uint8_t* dst_u, 1783 uint8_t* dst_v, 1784 int width); 1785 void RGB24ToUVJRow_C(const uint8_t* src_rgb, 1786 int src_stride_rgb, 1787 uint8_t* dst_u, 1788 uint8_t* dst_v, 1789 int width); 1790 void RAWToUVJRow_C(const uint8_t* src_rgb, 1791 int src_stride_rgb, 1792 uint8_t* dst_u, 1793 uint8_t* dst_v, 1794 int width); 1795 void RGB565ToUVRow_C(const uint8_t* src_rgb565, 1796 int src_stride_rgb565, 1797 uint8_t* dst_u, 1798 uint8_t* dst_v, 1799 int width); 1800 void ARGB1555ToUVRow_C(const uint8_t* src_argb1555, 1801 int src_stride_argb1555, 1802 uint8_t* dst_u, 1803 uint8_t* dst_v, 1804 int width); 1805 void ARGB4444ToUVRow_C(const uint8_t* src_argb4444, 1806 int src_stride_argb4444, 1807 uint8_t* dst_u, 1808 uint8_t* dst_v, 1809 int width); 1810 1811 void ARGBToUV444Row_SSSE3(const uint8_t* src_argb, 1812 uint8_t* dst_u, 1813 uint8_t* dst_v, 1814 int width); 1815 void ARGBToUV444Row_Any_SSSE3(const uint8_t* src_ptr, 1816 uint8_t* dst_u, 1817 uint8_t* dst_v, 1818 int width); 1819 1820 void ARGBToUV444Row_C(const uint8_t* src_argb, 1821 uint8_t* dst_u, 1822 uint8_t* dst_v, 1823 int width); 1824 1825 void MirrorRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 1826 void MirrorRow_SSSE3(const uint8_t* src, uint8_t* dst, int width); 1827 void MirrorRow_NEON(const uint8_t* src, uint8_t* dst, int width); 1828 void MirrorRow_MSA(const uint8_t* src, uint8_t* dst, int width); 1829 void MirrorRow_LASX(const uint8_t* src, uint8_t* dst, int width); 1830 void MirrorRow_C(const uint8_t* src, uint8_t* dst, int width); 1831 void MirrorRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1832 void MirrorRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1833 void MirrorRow_Any_SSE2(const uint8_t* src, uint8_t* dst, int width); 1834 void MirrorRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1835 void MirrorRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1836 void MirrorRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1837 void MirrorUVRow_AVX2(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1838 void MirrorUVRow_SSSE3(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1839 void MirrorUVRow_NEON(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1840 void MirrorUVRow_MSA(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1841 void MirrorUVRow_LASX(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1842 void MirrorUVRow_C(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1843 void MirrorUVRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1844 void MirrorUVRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1845 void MirrorUVRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1846 void MirrorUVRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1847 void MirrorUVRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1848 1849 void MirrorSplitUVRow_SSSE3(const uint8_t* src, 1850 uint8_t* dst_u, 1851 uint8_t* dst_v, 1852 int width); 1853 void MirrorSplitUVRow_NEON(const uint8_t* src_uv, 1854 uint8_t* dst_u, 1855 uint8_t* dst_v, 1856 int width); 1857 void MirrorSplitUVRow_MSA(const uint8_t* src_uv, 1858 uint8_t* dst_u, 1859 uint8_t* dst_v, 1860 int width); 1861 void MirrorSplitUVRow_LSX(const uint8_t* src_uv, 1862 uint8_t* dst_u, 1863 uint8_t* dst_v, 1864 int width); 1865 void MirrorSplitUVRow_C(const uint8_t* src_uv, 1866 uint8_t* dst_u, 1867 uint8_t* dst_v, 1868 int width); 1869 1870 void ARGBMirrorRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 1871 void ARGBMirrorRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 1872 void ARGBMirrorRow_NEON(const uint8_t* src_argb, uint8_t* dst_argb, int width); 1873 void ARGBMirrorRow_MSA(const uint8_t* src, uint8_t* dst, int width); 1874 void ARGBMirrorRow_LASX(const uint8_t* src, uint8_t* dst, int width); 1875 void ARGBMirrorRow_C(const uint8_t* src, uint8_t* dst, int width); 1876 void ARGBMirrorRow_Any_AVX2(const uint8_t* src_ptr, 1877 uint8_t* dst_ptr, 1878 int width); 1879 void ARGBMirrorRow_Any_SSE2(const uint8_t* src_ptr, 1880 uint8_t* dst_ptr, 1881 int width); 1882 void ARGBMirrorRow_Any_NEON(const uint8_t* src_ptr, 1883 uint8_t* dst_ptr, 1884 int width); 1885 void ARGBMirrorRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1886 void ARGBMirrorRow_Any_LASX(const uint8_t* src_ptr, 1887 uint8_t* dst_ptr, 1888 int width); 1889 1890 void RGB24MirrorRow_SSSE3(const uint8_t* src_rgb24, 1891 uint8_t* dst_rgb24, 1892 int width); 1893 void RGB24MirrorRow_NEON(const uint8_t* src_rgb24, 1894 uint8_t* dst_rgb24, 1895 int width); 1896 void RGB24MirrorRow_C(const uint8_t* src_rgb24, uint8_t* dst_rgb24, int width); 1897 void RGB24MirrorRow_Any_SSSE3(const uint8_t* src_ptr, 1898 uint8_t* dst_ptr, 1899 int width); 1900 void RGB24MirrorRow_Any_NEON(const uint8_t* src_ptr, 1901 uint8_t* dst_ptr, 1902 int width); 1903 1904 void SplitUVRow_C(const uint8_t* src_uv, 1905 uint8_t* dst_u, 1906 uint8_t* dst_v, 1907 int width); 1908 void SplitUVRow_SSE2(const uint8_t* src_uv, 1909 uint8_t* dst_u, 1910 uint8_t* dst_v, 1911 int width); 1912 void SplitUVRow_AVX2(const uint8_t* src_uv, 1913 uint8_t* dst_u, 1914 uint8_t* dst_v, 1915 int width); 1916 void SplitUVRow_NEON(const uint8_t* src_uv, 1917 uint8_t* dst_u, 1918 uint8_t* dst_v, 1919 int width); 1920 void SplitUVRow_MSA(const uint8_t* src_uv, 1921 uint8_t* dst_u, 1922 uint8_t* dst_v, 1923 int width); 1924 void SplitUVRow_LSX(const uint8_t* src_uv, 1925 uint8_t* dst_u, 1926 uint8_t* dst_v, 1927 int width); 1928 void SplitUVRow_Any_SSE2(const uint8_t* src_ptr, 1929 uint8_t* dst_u, 1930 uint8_t* dst_v, 1931 int width); 1932 void SplitUVRow_Any_AVX2(const uint8_t* src_ptr, 1933 uint8_t* dst_u, 1934 uint8_t* dst_v, 1935 int width); 1936 void SplitUVRow_Any_NEON(const uint8_t* src_ptr, 1937 uint8_t* dst_u, 1938 uint8_t* dst_v, 1939 int width); 1940 void SplitUVRow_Any_MSA(const uint8_t* src_ptr, 1941 uint8_t* dst_u, 1942 uint8_t* dst_v, 1943 int width); 1944 void SplitUVRow_Any_LSX(const uint8_t* src_ptr, 1945 uint8_t* dst_u, 1946 uint8_t* dst_v, 1947 int width); 1948 void DetileRow_C(const uint8_t* src, 1949 ptrdiff_t src_tile_stride, 1950 uint8_t* dst, 1951 int width); 1952 1953 void DetileRow_NEON(const uint8_t* src, 1954 ptrdiff_t src_tile_stride, 1955 uint8_t* dst, 1956 int width); 1957 void DetileRow_Any_NEON(const uint8_t* src, 1958 ptrdiff_t src_tile_stride, 1959 uint8_t* dst, 1960 int width); 1961 void DetileRow_SSE2(const uint8_t* src, 1962 ptrdiff_t src_tile_stride, 1963 uint8_t* dst, 1964 int width); 1965 void DetileRow_Any_SSE2(const uint8_t* src, 1966 ptrdiff_t src_tile_stride, 1967 uint8_t* dst, 1968 int width); 1969 void DetileSplitUVRow_C(const uint8_t* src_uv, 1970 ptrdiff_t src_tile_stride, 1971 uint8_t* dst_u, 1972 uint8_t* dst_v, 1973 int width); 1974 void DetileSplitUVRow_SSSE3(const uint8_t* src_uv, 1975 ptrdiff_t src_tile_stride, 1976 uint8_t* dst_u, 1977 uint8_t* dst_v, 1978 int width); 1979 void DetileSplitUVRow_Any_SSSE3(const uint8_t* src_uv, 1980 ptrdiff_t src_tile_stride, 1981 uint8_t* dst_u, 1982 uint8_t* dst_v, 1983 int width); 1984 void DetileSplitUVRow_NEON(const uint8_t* src_uv, 1985 ptrdiff_t src_tile_stride, 1986 uint8_t* dst_u, 1987 uint8_t* dst_v, 1988 int width); 1989 void DetileSplitUVRow_Any_NEON(const uint8_t* src_uv, 1990 ptrdiff_t src_tile_stride, 1991 uint8_t* dst_u, 1992 uint8_t* dst_v, 1993 int width); 1994 void MergeUVRow_C(const uint8_t* src_u, 1995 const uint8_t* src_v, 1996 uint8_t* dst_uv, 1997 int width); 1998 void MergeUVRow_SSE2(const uint8_t* src_u, 1999 const uint8_t* src_v, 2000 uint8_t* dst_uv, 2001 int width); 2002 void MergeUVRow_AVX2(const uint8_t* src_u, 2003 const uint8_t* src_v, 2004 uint8_t* dst_uv, 2005 int width); 2006 void MergeUVRow_NEON(const uint8_t* src_u, 2007 const uint8_t* src_v, 2008 uint8_t* dst_uv, 2009 int width); 2010 void MergeUVRow_MSA(const uint8_t* src_u, 2011 const uint8_t* src_v, 2012 uint8_t* dst_uv, 2013 int width); 2014 void MergeUVRow_LSX(const uint8_t* src_u, 2015 const uint8_t* src_v, 2016 uint8_t* dst_uv, 2017 int width); 2018 void MergeUVRow_Any_SSE2(const uint8_t* y_buf, 2019 const uint8_t* uv_buf, 2020 uint8_t* dst_ptr, 2021 int width); 2022 void MergeUVRow_Any_AVX2(const uint8_t* y_buf, 2023 const uint8_t* uv_buf, 2024 uint8_t* dst_ptr, 2025 int width); 2026 void MergeUVRow_Any_NEON(const uint8_t* y_buf, 2027 const uint8_t* uv_buf, 2028 uint8_t* dst_ptr, 2029 int width); 2030 void MergeUVRow_Any_MSA(const uint8_t* y_buf, 2031 const uint8_t* uv_buf, 2032 uint8_t* dst_ptr, 2033 int width); 2034 void MergeUVRow_Any_LSX(const uint8_t* y_buf, 2035 const uint8_t* uv_buf, 2036 uint8_t* dst_ptr, 2037 int width); 2038 2039 void HalfMergeUVRow_C(const uint8_t* src_u, 2040 int src_stride_u, 2041 const uint8_t* src_v, 2042 int src_stride_v, 2043 uint8_t* dst_uv, 2044 int width); 2045 2046 void HalfMergeUVRow_NEON(const uint8_t* src_u, 2047 int src_stride_u, 2048 const uint8_t* src_v, 2049 int src_stride_v, 2050 uint8_t* dst_uv, 2051 int width); 2052 2053 void HalfMergeUVRow_SSSE3(const uint8_t* src_u, 2054 int src_stride_u, 2055 const uint8_t* src_v, 2056 int src_stride_v, 2057 uint8_t* dst_uv, 2058 int width); 2059 2060 void HalfMergeUVRow_AVX2(const uint8_t* src_u, 2061 int src_stride_u, 2062 const uint8_t* src_v, 2063 int src_stride_v, 2064 uint8_t* dst_uv, 2065 int width); 2066 2067 void SplitRGBRow_C(const uint8_t* src_rgb, 2068 uint8_t* dst_r, 2069 uint8_t* dst_g, 2070 uint8_t* dst_b, 2071 int width); 2072 void SplitRGBRow_SSSE3(const uint8_t* src_rgb, 2073 uint8_t* dst_r, 2074 uint8_t* dst_g, 2075 uint8_t* dst_b, 2076 int width); 2077 void SplitRGBRow_NEON(const uint8_t* src_rgb, 2078 uint8_t* dst_r, 2079 uint8_t* dst_g, 2080 uint8_t* dst_b, 2081 int width); 2082 void SplitRGBRow_Any_SSSE3(const uint8_t* src_ptr, 2083 uint8_t* dst_r, 2084 uint8_t* dst_g, 2085 uint8_t* dst_b, 2086 int width); 2087 void SplitRGBRow_Any_NEON(const uint8_t* src_ptr, 2088 uint8_t* dst_r, 2089 uint8_t* dst_g, 2090 uint8_t* dst_b, 2091 int width); 2092 2093 void MergeRGBRow_C(const uint8_t* src_r, 2094 const uint8_t* src_g, 2095 const uint8_t* src_b, 2096 uint8_t* dst_rgb, 2097 int width); 2098 void MergeRGBRow_SSSE3(const uint8_t* src_r, 2099 const uint8_t* src_g, 2100 const uint8_t* src_b, 2101 uint8_t* dst_rgb, 2102 int width); 2103 void MergeRGBRow_NEON(const uint8_t* src_r, 2104 const uint8_t* src_g, 2105 const uint8_t* src_b, 2106 uint8_t* dst_rgb, 2107 int width); 2108 void MergeRGBRow_Any_SSSE3(const uint8_t* y_buf, 2109 const uint8_t* u_buf, 2110 const uint8_t* v_buf, 2111 uint8_t* dst_ptr, 2112 int width); 2113 void MergeRGBRow_Any_NEON(const uint8_t* src_r, 2114 const uint8_t* src_g, 2115 const uint8_t* src_b, 2116 uint8_t* dst_rgb, 2117 int width); 2118 void MergeARGBRow_C(const uint8_t* src_r, 2119 const uint8_t* src_g, 2120 const uint8_t* src_b, 2121 const uint8_t* src_a, 2122 uint8_t* dst_argb, 2123 int width); 2124 void MergeARGBRow_SSE2(const uint8_t* src_r, 2125 const uint8_t* src_g, 2126 const uint8_t* src_b, 2127 const uint8_t* src_a, 2128 uint8_t* dst_argb, 2129 int width); 2130 void MergeARGBRow_AVX2(const uint8_t* src_r, 2131 const uint8_t* src_g, 2132 const uint8_t* src_b, 2133 const uint8_t* src_a, 2134 uint8_t* dst_argb, 2135 int width); 2136 void MergeARGBRow_NEON(const uint8_t* src_r, 2137 const uint8_t* src_g, 2138 const uint8_t* src_b, 2139 const uint8_t* src_a, 2140 uint8_t* dst_argb, 2141 int width); 2142 void MergeARGBRow_Any_SSE2(const uint8_t* y_buf, 2143 const uint8_t* u_buf, 2144 const uint8_t* v_buf, 2145 const uint8_t* a_buf, 2146 uint8_t* dst_ptr, 2147 int width); 2148 void MergeARGBRow_Any_AVX2(const uint8_t* y_buf, 2149 const uint8_t* u_buf, 2150 const uint8_t* v_buf, 2151 const uint8_t* a_buf, 2152 uint8_t* dst_ptr, 2153 int width); 2154 void MergeARGBRow_Any_NEON(const uint8_t* y_buf, 2155 const uint8_t* u_buf, 2156 const uint8_t* v_buf, 2157 const uint8_t* a_buf, 2158 uint8_t* dst_ptr, 2159 int width); 2160 void SplitARGBRow_C(const uint8_t* src_argb, 2161 uint8_t* dst_r, 2162 uint8_t* dst_g, 2163 uint8_t* dst_b, 2164 uint8_t* dst_a, 2165 int width); 2166 void SplitARGBRow_SSE2(const uint8_t* src_argb, 2167 uint8_t* dst_r, 2168 uint8_t* dst_g, 2169 uint8_t* dst_b, 2170 uint8_t* dst_a, 2171 int width); 2172 void SplitARGBRow_SSSE3(const uint8_t* src_argb, 2173 uint8_t* dst_r, 2174 uint8_t* dst_g, 2175 uint8_t* dst_b, 2176 uint8_t* dst_a, 2177 int width); 2178 void SplitARGBRow_AVX2(const uint8_t* src_argb, 2179 uint8_t* dst_r, 2180 uint8_t* dst_g, 2181 uint8_t* dst_b, 2182 uint8_t* dst_a, 2183 int width); 2184 void SplitARGBRow_NEON(const uint8_t* src_rgba, 2185 uint8_t* dst_r, 2186 uint8_t* dst_g, 2187 uint8_t* dst_b, 2188 uint8_t* dst_a, 2189 int width); 2190 void SplitARGBRow_Any_SSE2(const uint8_t* src_ptr, 2191 uint8_t* dst_r, 2192 uint8_t* dst_g, 2193 uint8_t* dst_b, 2194 uint8_t* dst_a, 2195 int width); 2196 void SplitARGBRow_Any_SSSE3(const uint8_t* src_ptr, 2197 uint8_t* dst_r, 2198 uint8_t* dst_g, 2199 uint8_t* dst_b, 2200 uint8_t* dst_a, 2201 int width); 2202 void SplitARGBRow_Any_AVX2(const uint8_t* src_ptr, 2203 uint8_t* dst_r, 2204 uint8_t* dst_g, 2205 uint8_t* dst_b, 2206 uint8_t* dst_a, 2207 int width); 2208 void SplitARGBRow_Any_NEON(const uint8_t* src_ptr, 2209 uint8_t* dst_r, 2210 uint8_t* dst_g, 2211 uint8_t* dst_b, 2212 uint8_t* dst_a, 2213 int width); 2214 void MergeXRGBRow_C(const uint8_t* src_r, 2215 const uint8_t* src_g, 2216 const uint8_t* src_b, 2217 uint8_t* dst_argb, 2218 int width); 2219 void MergeXRGBRow_SSE2(const uint8_t* src_r, 2220 const uint8_t* src_g, 2221 const uint8_t* src_b, 2222 uint8_t* dst_argb, 2223 int width); 2224 void MergeXRGBRow_AVX2(const uint8_t* src_r, 2225 const uint8_t* src_g, 2226 const uint8_t* src_b, 2227 uint8_t* dst_argb, 2228 int width); 2229 void MergeXRGBRow_NEON(const uint8_t* src_r, 2230 const uint8_t* src_g, 2231 const uint8_t* src_b, 2232 uint8_t* dst_argb, 2233 int width); 2234 void MergeXRGBRow_Any_SSE2(const uint8_t* y_buf, 2235 const uint8_t* u_buf, 2236 const uint8_t* v_buf, 2237 uint8_t* dst_ptr, 2238 int width); 2239 void MergeXRGBRow_Any_AVX2(const uint8_t* y_buf, 2240 const uint8_t* u_buf, 2241 const uint8_t* v_buf, 2242 uint8_t* dst_ptr, 2243 int width); 2244 void MergeXRGBRow_Any_NEON(const uint8_t* y_buf, 2245 const uint8_t* u_buf, 2246 const uint8_t* v_buf, 2247 uint8_t* dst_ptr, 2248 int width); 2249 void SplitXRGBRow_C(const uint8_t* src_argb, 2250 uint8_t* dst_r, 2251 uint8_t* dst_g, 2252 uint8_t* dst_b, 2253 int width); 2254 void SplitXRGBRow_SSE2(const uint8_t* src_argb, 2255 uint8_t* dst_r, 2256 uint8_t* dst_g, 2257 uint8_t* dst_b, 2258 int width); 2259 void SplitXRGBRow_SSSE3(const uint8_t* src_argb, 2260 uint8_t* dst_r, 2261 uint8_t* dst_g, 2262 uint8_t* dst_b, 2263 int width); 2264 void SplitXRGBRow_AVX2(const uint8_t* src_argb, 2265 uint8_t* dst_r, 2266 uint8_t* dst_g, 2267 uint8_t* dst_b, 2268 int width); 2269 void SplitXRGBRow_NEON(const uint8_t* src_rgba, 2270 uint8_t* dst_r, 2271 uint8_t* dst_g, 2272 uint8_t* dst_b, 2273 int width); 2274 void SplitXRGBRow_Any_SSE2(const uint8_t* src_ptr, 2275 uint8_t* dst_r, 2276 uint8_t* dst_g, 2277 uint8_t* dst_b, 2278 int width); 2279 void SplitXRGBRow_Any_SSSE3(const uint8_t* src_ptr, 2280 uint8_t* dst_r, 2281 uint8_t* dst_g, 2282 uint8_t* dst_b, 2283 int width); 2284 void SplitXRGBRow_Any_AVX2(const uint8_t* src_ptr, 2285 uint8_t* dst_r, 2286 uint8_t* dst_g, 2287 uint8_t* dst_b, 2288 int width); 2289 void SplitXRGBRow_Any_NEON(const uint8_t* src_ptr, 2290 uint8_t* dst_r, 2291 uint8_t* dst_g, 2292 uint8_t* dst_b, 2293 int width); 2294 2295 void MergeXR30Row_C(const uint16_t* src_r, 2296 const uint16_t* src_g, 2297 const uint16_t* src_b, 2298 uint8_t* dst_ar30, 2299 int depth, 2300 int width); 2301 void MergeAR64Row_C(const uint16_t* src_r, 2302 const uint16_t* src_g, 2303 const uint16_t* src_b, 2304 const uint16_t* src_a, 2305 uint16_t* dst_ar64, 2306 int depth, 2307 int width); 2308 void MergeARGB16To8Row_C(const uint16_t* src_r, 2309 const uint16_t* src_g, 2310 const uint16_t* src_b, 2311 const uint16_t* src_a, 2312 uint8_t* dst_argb, 2313 int depth, 2314 int width); 2315 void MergeXR64Row_C(const uint16_t* src_r, 2316 const uint16_t* src_g, 2317 const uint16_t* src_b, 2318 uint16_t* dst_ar64, 2319 int depth, 2320 int width); 2321 void MergeXRGB16To8Row_C(const uint16_t* src_r, 2322 const uint16_t* src_g, 2323 const uint16_t* src_b, 2324 uint8_t* dst_argb, 2325 int depth, 2326 int width); 2327 void MergeXR30Row_AVX2(const uint16_t* src_r, 2328 const uint16_t* src_g, 2329 const uint16_t* src_b, 2330 uint8_t* dst_ar30, 2331 int depth, 2332 int width); 2333 void MergeAR64Row_AVX2(const uint16_t* src_r, 2334 const uint16_t* src_g, 2335 const uint16_t* src_b, 2336 const uint16_t* src_a, 2337 uint16_t* dst_ar64, 2338 int depth, 2339 int width); 2340 void MergeARGB16To8Row_AVX2(const uint16_t* src_r, 2341 const uint16_t* src_g, 2342 const uint16_t* src_b, 2343 const uint16_t* src_a, 2344 uint8_t* dst_argb, 2345 int depth, 2346 int width); 2347 void MergeXR64Row_AVX2(const uint16_t* src_r, 2348 const uint16_t* src_g, 2349 const uint16_t* src_b, 2350 uint16_t* dst_ar64, 2351 int depth, 2352 int width); 2353 void MergeXRGB16To8Row_AVX2(const uint16_t* src_r, 2354 const uint16_t* src_g, 2355 const uint16_t* src_b, 2356 uint8_t* dst_argb, 2357 int depth, 2358 int width); 2359 void MergeXR30Row_NEON(const uint16_t* src_r, 2360 const uint16_t* src_g, 2361 const uint16_t* src_b, 2362 uint8_t* dst_ar30, 2363 int depth, 2364 int width); 2365 void MergeXR30Row_10_NEON(const uint16_t* src_r, 2366 const uint16_t* src_g, 2367 const uint16_t* src_b, 2368 uint8_t* dst_ar30, 2369 int /* depth */, 2370 int width); 2371 void MergeAR64Row_NEON(const uint16_t* src_r, 2372 const uint16_t* src_g, 2373 const uint16_t* src_b, 2374 const uint16_t* src_a, 2375 uint16_t* dst_ar64, 2376 int depth, 2377 int width); 2378 void MergeARGB16To8Row_NEON(const uint16_t* src_r, 2379 const uint16_t* src_g, 2380 const uint16_t* src_b, 2381 const uint16_t* src_a, 2382 uint8_t* dst_argb, 2383 int depth, 2384 int width); 2385 void MergeXR64Row_NEON(const uint16_t* src_r, 2386 const uint16_t* src_g, 2387 const uint16_t* src_b, 2388 uint16_t* dst_ar64, 2389 int depth, 2390 int width); 2391 void MergeXRGB16To8Row_NEON(const uint16_t* src_r, 2392 const uint16_t* src_g, 2393 const uint16_t* src_b, 2394 uint8_t* dst_argb, 2395 int depth, 2396 int width); 2397 void MergeXR30Row_Any_AVX2(const uint16_t* r_buf, 2398 const uint16_t* g_buf, 2399 const uint16_t* b_buf, 2400 uint8_t* dst_ptr, 2401 int depth, 2402 int width); 2403 void MergeAR64Row_Any_AVX2(const uint16_t* r_buf, 2404 const uint16_t* g_buf, 2405 const uint16_t* b_buf, 2406 const uint16_t* a_buf, 2407 uint16_t* dst_ptr, 2408 int depth, 2409 int width); 2410 void MergeXR64Row_Any_AVX2(const uint16_t* r_buf, 2411 const uint16_t* g_buf, 2412 const uint16_t* b_buf, 2413 uint16_t* dst_ptr, 2414 int depth, 2415 int width); 2416 void MergeARGB16To8Row_Any_AVX2(const uint16_t* r_buf, 2417 const uint16_t* g_buf, 2418 const uint16_t* b_buf, 2419 const uint16_t* a_buf, 2420 uint8_t* dst_ptr, 2421 int depth, 2422 int width); 2423 void MergeXRGB16To8Row_Any_AVX2(const uint16_t* r_buf, 2424 const uint16_t* g_buf, 2425 const uint16_t* b_buf, 2426 uint8_t* dst_ptr, 2427 int depth, 2428 int width); 2429 void MergeXR30Row_Any_NEON(const uint16_t* r_buf, 2430 const uint16_t* g_buf, 2431 const uint16_t* b_buf, 2432 uint8_t* dst_ptr, 2433 int depth, 2434 int width); 2435 void MergeXR30Row_10_Any_NEON(const uint16_t* r_buf, 2436 const uint16_t* g_buf, 2437 const uint16_t* b_buf, 2438 uint8_t* dst_ptr, 2439 int depth, 2440 int width); 2441 void MergeAR64Row_Any_NEON(const uint16_t* r_buf, 2442 const uint16_t* g_buf, 2443 const uint16_t* b_buf, 2444 const uint16_t* a_buf, 2445 uint16_t* dst_ptr, 2446 int depth, 2447 int width); 2448 void MergeARGB16To8Row_Any_NEON(const uint16_t* r_buf, 2449 const uint16_t* g_buf, 2450 const uint16_t* b_buf, 2451 const uint16_t* a_buf, 2452 uint8_t* dst_ptr, 2453 int depth, 2454 int width); 2455 void MergeXR64Row_Any_NEON(const uint16_t* r_buf, 2456 const uint16_t* g_buf, 2457 const uint16_t* b_buf, 2458 uint16_t* dst_ptr, 2459 int depth, 2460 int width); 2461 void MergeXRGB16To8Row_Any_NEON(const uint16_t* r_buf, 2462 const uint16_t* g_buf, 2463 const uint16_t* b_buf, 2464 uint8_t* dst_ptr, 2465 int depth, 2466 int width); 2467 2468 void MergeUVRow_16_C(const uint16_t* src_u, 2469 const uint16_t* src_v, 2470 uint16_t* dst_uv, 2471 int depth, 2472 int width); 2473 void MergeUVRow_16_AVX2(const uint16_t* src_u, 2474 const uint16_t* src_v, 2475 uint16_t* dst_uv, 2476 int depth, 2477 int width); 2478 void MergeUVRow_16_Any_AVX2(const uint16_t* src_u, 2479 const uint16_t* src_v, 2480 uint16_t* dst_uv, 2481 int depth, 2482 int width); 2483 void MergeUVRow_16_NEON(const uint16_t* src_u, 2484 const uint16_t* src_v, 2485 uint16_t* dst_uv, 2486 int depth, 2487 int width); 2488 void MergeUVRow_16_Any_NEON(const uint16_t* src_u, 2489 const uint16_t* src_v, 2490 uint16_t* dst_uv, 2491 int depth, 2492 int width); 2493 2494 void SplitUVRow_16_C(const uint16_t* src_uv, 2495 uint16_t* dst_u, 2496 uint16_t* dst_v, 2497 int depth, 2498 int width); 2499 void SplitUVRow_16_AVX2(const uint16_t* src_uv, 2500 uint16_t* dst_u, 2501 uint16_t* dst_v, 2502 int depth, 2503 int width); 2504 void SplitUVRow_16_Any_AVX2(const uint16_t* src_uv, 2505 uint16_t* dst_u, 2506 uint16_t* dst_v, 2507 int depth, 2508 int width); 2509 void SplitUVRow_16_NEON(const uint16_t* src_uv, 2510 uint16_t* dst_u, 2511 uint16_t* dst_v, 2512 int depth, 2513 int width); 2514 void SplitUVRow_16_Any_NEON(const uint16_t* src_uv, 2515 uint16_t* dst_u, 2516 uint16_t* dst_v, 2517 int depth, 2518 int width); 2519 2520 void MultiplyRow_16_C(const uint16_t* src_y, 2521 uint16_t* dst_y, 2522 int scale, 2523 int width); 2524 void MultiplyRow_16_AVX2(const uint16_t* src_y, 2525 uint16_t* dst_y, 2526 int scale, 2527 int width); 2528 void MultiplyRow_16_Any_AVX2(const uint16_t* src_ptr, 2529 uint16_t* dst_ptr, 2530 int scale, 2531 int width); 2532 void MultiplyRow_16_NEON(const uint16_t* src_y, 2533 uint16_t* dst_y, 2534 int scale, 2535 int width); 2536 void MultiplyRow_16_Any_NEON(const uint16_t* src_ptr, 2537 uint16_t* dst_ptr, 2538 int scale, 2539 int width); 2540 2541 void DivideRow_16_C(const uint16_t* src_y, 2542 uint16_t* dst_y, 2543 int scale, 2544 int width); 2545 void DivideRow_16_AVX2(const uint16_t* src_y, 2546 uint16_t* dst_y, 2547 int scale, 2548 int width); 2549 void DivideRow_16_Any_AVX2(const uint16_t* src_ptr, 2550 uint16_t* dst_ptr, 2551 int scale, 2552 int width); 2553 void DivideRow_16_NEON(const uint16_t* src_y, 2554 uint16_t* dst_y, 2555 int scale, 2556 int width); 2557 void DivideRow_16_Any_NEON(const uint16_t* src_ptr, 2558 uint16_t* dst_ptr, 2559 int scale, 2560 int width); 2561 2562 void Convert8To16Row_C(const uint8_t* src_y, 2563 uint16_t* dst_y, 2564 int scale, 2565 int width); 2566 void Convert8To16Row_SSE2(const uint8_t* src_y, 2567 uint16_t* dst_y, 2568 int scale, 2569 int width); 2570 void Convert8To16Row_AVX2(const uint8_t* src_y, 2571 uint16_t* dst_y, 2572 int scale, 2573 int width); 2574 void Convert8To16Row_Any_SSE2(const uint8_t* src_ptr, 2575 uint16_t* dst_ptr, 2576 int scale, 2577 int width); 2578 void Convert8To16Row_Any_AVX2(const uint8_t* src_ptr, 2579 uint16_t* dst_ptr, 2580 int scale, 2581 int width); 2582 2583 void Convert16To8Row_C(const uint16_t* src_y, 2584 uint8_t* dst_y, 2585 int scale, 2586 int width); 2587 void Convert16To8Row_SSSE3(const uint16_t* src_y, 2588 uint8_t* dst_y, 2589 int scale, 2590 int width); 2591 void Convert16To8Row_AVX2(const uint16_t* src_y, 2592 uint8_t* dst_y, 2593 int scale, 2594 int width); 2595 void Convert16To8Row_Any_SSSE3(const uint16_t* src_ptr, 2596 uint8_t* dst_ptr, 2597 int scale, 2598 int width); 2599 void Convert16To8Row_Any_AVX2(const uint16_t* src_ptr, 2600 uint8_t* dst_ptr, 2601 int scale, 2602 int width); 2603 void Convert16To8Row_NEON(const uint16_t* src_y, 2604 uint8_t* dst_y, 2605 int scale, 2606 int width); 2607 void Convert16To8Row_Any_NEON(const uint16_t* src_y, 2608 uint8_t* dst_y, 2609 int scale, 2610 int width); 2611 2612 void CopyRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2613 void CopyRow_AVX(const uint8_t* src, uint8_t* dst, int width); 2614 void CopyRow_ERMS(const uint8_t* src, uint8_t* dst, int width); 2615 void CopyRow_NEON(const uint8_t* src, uint8_t* dst, int width); 2616 void CopyRow_MIPS(const uint8_t* src, uint8_t* dst, int count); 2617 void CopyRow_C(const uint8_t* src, uint8_t* dst, int count); 2618 void CopyRow_Any_SSE2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2619 void CopyRow_Any_AVX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2620 void CopyRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2621 2622 void CopyRow_16_C(const uint16_t* src, uint16_t* dst, int count); 2623 2624 void ARGBCopyAlphaRow_C(const uint8_t* src, uint8_t* dst, int width); 2625 void ARGBCopyAlphaRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2626 void ARGBCopyAlphaRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 2627 void ARGBCopyAlphaRow_Any_SSE2(const uint8_t* src_ptr, 2628 uint8_t* dst_ptr, 2629 int width); 2630 void ARGBCopyAlphaRow_Any_AVX2(const uint8_t* src_ptr, 2631 uint8_t* dst_ptr, 2632 int width); 2633 2634 void ARGBExtractAlphaRow_C(const uint8_t* src_argb, uint8_t* dst_a, int width); 2635 void ARGBExtractAlphaRow_SSE2(const uint8_t* src_argb, 2636 uint8_t* dst_a, 2637 int width); 2638 void ARGBExtractAlphaRow_AVX2(const uint8_t* src_argb, 2639 uint8_t* dst_a, 2640 int width); 2641 void ARGBExtractAlphaRow_NEON(const uint8_t* src_argb, 2642 uint8_t* dst_a, 2643 int width); 2644 void ARGBExtractAlphaRow_MSA(const uint8_t* src_argb, 2645 uint8_t* dst_a, 2646 int width); 2647 void ARGBExtractAlphaRow_LSX(const uint8_t* src_argb, 2648 uint8_t* dst_a, 2649 int width); 2650 void ARGBExtractAlphaRow_Any_SSE2(const uint8_t* src_ptr, 2651 uint8_t* dst_ptr, 2652 int width); 2653 void ARGBExtractAlphaRow_Any_AVX2(const uint8_t* src_ptr, 2654 uint8_t* dst_ptr, 2655 int width); 2656 void ARGBExtractAlphaRow_Any_NEON(const uint8_t* src_ptr, 2657 uint8_t* dst_ptr, 2658 int width); 2659 void ARGBExtractAlphaRow_Any_MSA(const uint8_t* src_ptr, 2660 uint8_t* dst_ptr, 2661 int width); 2662 void ARGBExtractAlphaRow_Any_LSX(const uint8_t* src_ptr, 2663 uint8_t* dst_ptr, 2664 int width); 2665 2666 void ARGBCopyYToAlphaRow_C(const uint8_t* src, uint8_t* dst, int width); 2667 void ARGBCopyYToAlphaRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2668 void ARGBCopyYToAlphaRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 2669 void ARGBCopyYToAlphaRow_Any_SSE2(const uint8_t* src_ptr, 2670 uint8_t* dst_ptr, 2671 int width); 2672 void ARGBCopyYToAlphaRow_Any_AVX2(const uint8_t* src_ptr, 2673 uint8_t* dst_ptr, 2674 int width); 2675 2676 void SetRow_C(uint8_t* dst, uint8_t v8, int width); 2677 void SetRow_MSA(uint8_t* dst, uint8_t v8, int width); 2678 void SetRow_X86(uint8_t* dst, uint8_t v8, int width); 2679 void SetRow_ERMS(uint8_t* dst, uint8_t v8, int width); 2680 void SetRow_NEON(uint8_t* dst, uint8_t v8, int width); 2681 void SetRow_LSX(uint8_t* dst, uint8_t v8, int width); 2682 void SetRow_Any_X86(uint8_t* dst_ptr, uint8_t v32, int width); 2683 void SetRow_Any_NEON(uint8_t* dst_ptr, uint8_t v32, int width); 2684 void SetRow_Any_LSX(uint8_t* dst_ptr, uint8_t v32, int width); 2685 2686 void ARGBSetRow_C(uint8_t* dst_argb, uint32_t v32, int width); 2687 void ARGBSetRow_X86(uint8_t* dst_argb, uint32_t v32, int width); 2688 void ARGBSetRow_NEON(uint8_t* dst, uint32_t v32, int width); 2689 void ARGBSetRow_Any_NEON(uint8_t* dst_ptr, uint32_t v32, int width); 2690 void ARGBSetRow_MSA(uint8_t* dst_argb, uint32_t v32, int width); 2691 void ARGBSetRow_Any_MSA(uint8_t* dst_ptr, uint32_t v32, int width); 2692 void ARGBSetRow_LSX(uint8_t* dst_argb, uint32_t v32, int width); 2693 void ARGBSetRow_Any_LSX(uint8_t* dst_ptr, uint32_t v32, int width); 2694 2695 // ARGBShufflers for BGRAToARGB etc. 2696 void ARGBShuffleRow_C(const uint8_t* src_argb, 2697 uint8_t* dst_argb, 2698 const uint8_t* shuffler, 2699 int width); 2700 void ARGBShuffleRow_SSSE3(const uint8_t* src_argb, 2701 uint8_t* dst_argb, 2702 const uint8_t* shuffler, 2703 int width); 2704 void ARGBShuffleRow_AVX2(const uint8_t* src_argb, 2705 uint8_t* dst_argb, 2706 const uint8_t* shuffler, 2707 int width); 2708 void ARGBShuffleRow_NEON(const uint8_t* src_argb, 2709 uint8_t* dst_argb, 2710 const uint8_t* shuffler, 2711 int width); 2712 void ARGBShuffleRow_MSA(const uint8_t* src_argb, 2713 uint8_t* dst_argb, 2714 const uint8_t* shuffler, 2715 int width); 2716 void ARGBShuffleRow_LASX(const uint8_t* src_argb, 2717 uint8_t* dst_argb, 2718 const uint8_t* shuffler, 2719 int width); 2720 void ARGBShuffleRow_Any_SSSE3(const uint8_t* src_ptr, 2721 uint8_t* dst_ptr, 2722 const uint8_t* param, 2723 int width); 2724 void ARGBShuffleRow_Any_AVX2(const uint8_t* src_ptr, 2725 uint8_t* dst_ptr, 2726 const uint8_t* param, 2727 int width); 2728 void ARGBShuffleRow_Any_NEON(const uint8_t* src_ptr, 2729 uint8_t* dst_ptr, 2730 const uint8_t* param, 2731 int width); 2732 void ARGBShuffleRow_Any_MSA(const uint8_t* src_ptr, 2733 uint8_t* dst_ptr, 2734 const uint8_t* param, 2735 int width); 2736 void ARGBShuffleRow_Any_LASX(const uint8_t* src_ptr, 2737 uint8_t* dst_ptr, 2738 const uint8_t* param, 2739 int width); 2740 2741 void RGB24ToARGBRow_SSSE3(const uint8_t* src_rgb24, 2742 uint8_t* dst_argb, 2743 int width); 2744 void RAWToARGBRow_SSSE3(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2745 void RAWToRGBARow_SSSE3(const uint8_t* src_raw, uint8_t* dst_rgba, int width); 2746 void RAWToRGB24Row_SSSE3(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2747 void RGB565ToARGBRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2748 void ARGB1555ToARGBRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2749 void ARGB4444ToARGBRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2750 void RGB565ToARGBRow_AVX2(const uint8_t* src_rgb565, 2751 uint8_t* dst_argb, 2752 int width); 2753 void ARGB1555ToARGBRow_AVX2(const uint8_t* src_argb1555, 2754 uint8_t* dst_argb, 2755 int width); 2756 void ARGB4444ToARGBRow_AVX2(const uint8_t* src_argb4444, 2757 uint8_t* dst_argb, 2758 int width); 2759 2760 void RGB24ToARGBRow_NEON(const uint8_t* src_rgb24, 2761 uint8_t* dst_argb, 2762 int width); 2763 void RGB24ToARGBRow_MSA(const uint8_t* src_rgb24, uint8_t* dst_argb, int width); 2764 void RGB24ToARGBRow_LSX(const uint8_t* src_rgb24, uint8_t* dst_argb, int width); 2765 void RGB24ToARGBRow_LASX(const uint8_t* src_rgb24, 2766 uint8_t* dst_argb, 2767 int width); 2768 void RAWToARGBRow_NEON(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2769 void RAWToRGBARow_NEON(const uint8_t* src_raw, uint8_t* dst_rgba, int width); 2770 void RAWToARGBRow_MSA(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2771 void RAWToARGBRow_LSX(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2772 void RAWToARGBRow_LASX(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2773 void RAWToRGB24Row_NEON(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2774 void RAWToRGB24Row_MSA(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2775 void RAWToRGB24Row_LSX(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2776 void RGB565ToARGBRow_NEON(const uint8_t* src_rgb565, 2777 uint8_t* dst_argb, 2778 int width); 2779 void RGB565ToARGBRow_MSA(const uint8_t* src_rgb565, 2780 uint8_t* dst_argb, 2781 int width); 2782 void RGB565ToARGBRow_LSX(const uint8_t* src_rgb565, 2783 uint8_t* dst_argb, 2784 int width); 2785 void RGB565ToARGBRow_LASX(const uint8_t* src_rgb565, 2786 uint8_t* dst_argb, 2787 int width); 2788 void ARGB1555ToARGBRow_NEON(const uint8_t* src_argb1555, 2789 uint8_t* dst_argb, 2790 int width); 2791 void ARGB1555ToARGBRow_MSA(const uint8_t* src_argb1555, 2792 uint8_t* dst_argb, 2793 int width); 2794 void ARGB1555ToARGBRow_LSX(const uint8_t* src_argb1555, 2795 uint8_t* dst_argb, 2796 int width); 2797 void ARGB1555ToARGBRow_LASX(const uint8_t* src_argb1555, 2798 uint8_t* dst_argb, 2799 int width); 2800 void ARGB4444ToARGBRow_NEON(const uint8_t* src_argb4444, 2801 uint8_t* dst_argb, 2802 int width); 2803 void ARGB4444ToARGBRow_MSA(const uint8_t* src_argb4444, 2804 uint8_t* dst_argb, 2805 int width); 2806 void ARGB4444ToARGBRow_LSX(const uint8_t* src_argb4444, 2807 uint8_t* dst_argb, 2808 int width); 2809 void ARGB4444ToARGBRow_LASX(const uint8_t* src_argb4444, 2810 uint8_t* dst_argb, 2811 int width); 2812 void RGB24ToARGBRow_C(const uint8_t* src_rgb24, uint8_t* dst_argb, int width); 2813 void RAWToARGBRow_C(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2814 void RAWToRGBARow_C(const uint8_t* src_raw, uint8_t* dst_rgba, int width); 2815 void RAWToRGB24Row_C(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2816 void RGB565ToARGBRow_C(const uint8_t* src_rgb565, uint8_t* dst_argb, int width); 2817 void ARGB1555ToARGBRow_C(const uint8_t* src_argb1555, 2818 uint8_t* dst_argb, 2819 int width); 2820 void ARGB4444ToARGBRow_C(const uint8_t* src_argb4444, 2821 uint8_t* dst_argb, 2822 int width); 2823 void AR30ToARGBRow_C(const uint8_t* src_ar30, uint8_t* dst_argb, int width); 2824 void AR30ToABGRRow_C(const uint8_t* src_ar30, uint8_t* dst_abgr, int width); 2825 void ARGBToAR30Row_C(const uint8_t* src_argb, uint8_t* dst_ar30, int width); 2826 void AR30ToAB30Row_C(const uint8_t* src_ar30, uint8_t* dst_ab30, int width); 2827 2828 void RGB24ToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 2829 uint8_t* dst_ptr, 2830 int width); 2831 void RAWToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 2832 uint8_t* dst_ptr, 2833 int width); 2834 void RAWToRGBARow_Any_SSSE3(const uint8_t* src_ptr, 2835 uint8_t* dst_ptr, 2836 int width); 2837 void RAWToRGB24Row_Any_SSSE3(const uint8_t* src_ptr, 2838 uint8_t* dst_ptr, 2839 int width); 2840 2841 void RGB565ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2842 uint8_t* dst_ptr, 2843 int width); 2844 void ARGB1555ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2845 uint8_t* dst_ptr, 2846 int width); 2847 void ARGB4444ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2848 uint8_t* dst_ptr, 2849 int width); 2850 void RGB565ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2851 uint8_t* dst_ptr, 2852 int width); 2853 void ARGB1555ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2854 uint8_t* dst_ptr, 2855 int width); 2856 void ARGB4444ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2857 uint8_t* dst_ptr, 2858 int width); 2859 2860 void RGB24ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2861 uint8_t* dst_ptr, 2862 int width); 2863 void RGB24ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2864 uint8_t* dst_ptr, 2865 int width); 2866 void RGB24ToARGBRow_Any_LSX(const uint8_t* src_ptr, 2867 uint8_t* dst_ptr, 2868 int width); 2869 void RGB24ToARGBRow_Any_LASX(const uint8_t* src_ptr, 2870 uint8_t* dst_ptr, 2871 int width); 2872 void RAWToARGBRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2873 void RAWToRGBARow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2874 void RAWToARGBRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2875 void RAWToARGBRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2876 void RAWToARGBRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2877 void RAWToRGB24Row_Any_NEON(const uint8_t* src_ptr, 2878 uint8_t* dst_ptr, 2879 int width); 2880 void RAWToRGB24Row_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2881 void RAWToRGB24Row_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2882 void RGB565ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2883 uint8_t* dst_ptr, 2884 int width); 2885 void RGB565ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2886 uint8_t* dst_ptr, 2887 int width); 2888 void RGB565ToARGBRow_Any_LSX(const uint8_t* src_ptr, 2889 uint8_t* dst_ptr, 2890 int width); 2891 void RGB565ToARGBRow_Any_LASX(const uint8_t* src_ptr, 2892 uint8_t* dst_ptr, 2893 int width); 2894 void ARGB1555ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2895 uint8_t* dst_ptr, 2896 int width); 2897 void ARGB1555ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2898 uint8_t* dst_ptr, 2899 int width); 2900 void ARGB4444ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2901 uint8_t* dst_ptr, 2902 int width); 2903 void ARGB1555ToARGBRow_Any_LSX(const uint8_t* src_ptr, 2904 uint8_t* dst_ptr, 2905 int width); 2906 void ARGB1555ToARGBRow_Any_LASX(const uint8_t* src_ptr, 2907 uint8_t* dst_ptr, 2908 int width); 2909 2910 void ARGB4444ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2911 uint8_t* dst_ptr, 2912 int width); 2913 void ARGB4444ToARGBRow_Any_LSX(const uint8_t* src_ptr, 2914 uint8_t* dst_ptr, 2915 int width); 2916 void ARGB4444ToARGBRow_Any_LASX(const uint8_t* src_ptr, 2917 uint8_t* dst_ptr, 2918 int width); 2919 2920 void ARGBToRGB24Row_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2921 void ARGBToRAWRow_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2922 void ARGBToRGB565Row_SSE2(const uint8_t* src, uint8_t* dst, int width); 2923 void ARGBToARGB1555Row_SSE2(const uint8_t* src, uint8_t* dst, int width); 2924 void ARGBToARGB4444Row_SSE2(const uint8_t* src, uint8_t* dst, int width); 2925 void ABGRToAR30Row_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2926 void ARGBToAR30Row_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2927 2928 void ARGBToRAWRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 2929 void ARGBToRGB24Row_AVX2(const uint8_t* src, uint8_t* dst, int width); 2930 2931 void ARGBToRGB24Row_AVX512VBMI(const uint8_t* src, uint8_t* dst, int width); 2932 2933 void ARGBToRGB565DitherRow_C(const uint8_t* src_argb, 2934 uint8_t* dst_rgb, 2935 const uint32_t dither4, 2936 int width); 2937 void ARGBToRGB565DitherRow_SSE2(const uint8_t* src, 2938 uint8_t* dst, 2939 const uint32_t dither4, 2940 int width); 2941 void ARGBToRGB565DitherRow_AVX2(const uint8_t* src, 2942 uint8_t* dst, 2943 const uint32_t dither4, 2944 int width); 2945 2946 void ARGBToRGB565Row_AVX2(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2947 void ARGBToARGB1555Row_AVX2(const uint8_t* src_argb, 2948 uint8_t* dst_rgb, 2949 int width); 2950 void ARGBToARGB4444Row_AVX2(const uint8_t* src_argb, 2951 uint8_t* dst_rgb, 2952 int width); 2953 void ABGRToAR30Row_AVX2(const uint8_t* src, uint8_t* dst, int width); 2954 void ARGBToAR30Row_AVX2(const uint8_t* src, uint8_t* dst, int width); 2955 2956 void ARGBToRGB24Row_NEON(const uint8_t* src_argb, 2957 uint8_t* dst_rgb24, 2958 int width); 2959 void ARGBToRAWRow_NEON(const uint8_t* src_argb, uint8_t* dst_raw, int width); 2960 void ARGBToRGB565Row_NEON(const uint8_t* src_argb, 2961 uint8_t* dst_rgb565, 2962 int width); 2963 void ARGBToARGB1555Row_NEON(const uint8_t* src_argb, 2964 uint8_t* dst_argb1555, 2965 int width); 2966 void ARGBToARGB4444Row_NEON(const uint8_t* src_argb, 2967 uint8_t* dst_argb4444, 2968 int width); 2969 void ARGBToRGB565DitherRow_NEON(const uint8_t* src_argb, 2970 uint8_t* dst_rgb, 2971 const uint32_t dither4, 2972 int width); 2973 void ARGBToRGB24Row_MSA(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2974 void ARGBToRAWRow_MSA(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2975 void ARGBToRGB565Row_MSA(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2976 void ARGBToARGB1555Row_MSA(const uint8_t* src_argb, 2977 uint8_t* dst_rgb, 2978 int width); 2979 void ARGBToARGB4444Row_MSA(const uint8_t* src_argb, 2980 uint8_t* dst_rgb, 2981 int width); 2982 void ARGBToRGB565DitherRow_MSA(const uint8_t* src_argb, 2983 uint8_t* dst_rgb, 2984 const uint32_t dither4, 2985 int width); 2986 void ARGBToRGB565DitherRow_LASX(const uint8_t* src_argb, 2987 uint8_t* dst_rgb, 2988 const uint32_t dither4, 2989 int width); 2990 2991 void ARGBToRGB24Row_LASX(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2992 void ARGBToRAWRow_LASX(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2993 void ARGBToRGB565Row_LASX(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2994 void ARGBToARGB1555Row_LASX(const uint8_t* src_argb, 2995 uint8_t* dst_rgb, 2996 int width); 2997 void ARGBToARGB4444Row_LASX(const uint8_t* src_argb, 2998 uint8_t* dst_rgb, 2999 int width); 3000 3001 void ARGBToRGBARow_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 3002 void ARGBToRGB24Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 3003 void ARGBToRAWRow_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 3004 void ARGBToRGB565Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 3005 void ARGBToARGB1555Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 3006 void ARGBToARGB4444Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 3007 void ABGRToAR30Row_C(const uint8_t* src_abgr, uint8_t* dst_ar30, int width); 3008 void ARGBToAR30Row_C(const uint8_t* src_argb, uint8_t* dst_ar30, int width); 3009 3010 void ARGBToAR64Row_C(const uint8_t* src_argb, uint16_t* dst_ar64, int width); 3011 void ARGBToAB64Row_C(const uint8_t* src_argb, uint16_t* dst_ab64, int width); 3012 void AR64ToARGBRow_C(const uint16_t* src_ar64, uint8_t* dst_argb, int width); 3013 void AB64ToARGBRow_C(const uint16_t* src_ab64, uint8_t* dst_argb, int width); 3014 void AR64ShuffleRow_C(const uint8_t* src_ar64, 3015 uint8_t* dst_ar64, 3016 const uint8_t* shuffler, 3017 int width); 3018 void ARGBToAR64Row_SSSE3(const uint8_t* src_argb, 3019 uint16_t* dst_ar64, 3020 int width); 3021 void ARGBToAB64Row_SSSE3(const uint8_t* src_argb, 3022 uint16_t* dst_ab64, 3023 int width); 3024 void AR64ToARGBRow_SSSE3(const uint16_t* src_ar64, 3025 uint8_t* dst_argb, 3026 int width); 3027 void AB64ToARGBRow_SSSE3(const uint16_t* src_ab64, 3028 uint8_t* dst_argb, 3029 int width); 3030 void ARGBToAR64Row_AVX2(const uint8_t* src_argb, uint16_t* dst_ar64, int width); 3031 void ARGBToAB64Row_AVX2(const uint8_t* src_argb, uint16_t* dst_ab64, int width); 3032 void AR64ToARGBRow_AVX2(const uint16_t* src_ar64, uint8_t* dst_argb, int width); 3033 void AB64ToARGBRow_AVX2(const uint16_t* src_ab64, uint8_t* dst_argb, int width); 3034 void ARGBToAR64Row_NEON(const uint8_t* src_argb, uint16_t* dst_ar64, int width); 3035 void ARGBToAB64Row_NEON(const uint8_t* src_argb, uint16_t* dst_ab64, int width); 3036 void AR64ToARGBRow_NEON(const uint16_t* src_ar64, uint8_t* dst_argb, int width); 3037 void AB64ToARGBRow_NEON(const uint16_t* src_ab64, uint8_t* dst_argb, int width); 3038 void ARGBToAR64Row_Any_SSSE3(const uint8_t* src_ptr, 3039 uint16_t* dst_ptr, 3040 int width); 3041 void ARGBToAB64Row_Any_SSSE3(const uint8_t* src_ptr, 3042 uint16_t* dst_ptr, 3043 int width); 3044 void AR64ToARGBRow_Any_SSSE3(const uint16_t* src_ptr, 3045 uint8_t* dst_ptr, 3046 int width); 3047 void AB64ToARGBRow_Any_SSSE3(const uint16_t* src_ptr, 3048 uint8_t* dst_ptr, 3049 int width); 3050 void ARGBToAR64Row_Any_AVX2(const uint8_t* src_ptr, 3051 uint16_t* dst_ptr, 3052 int width); 3053 void ARGBToAB64Row_Any_AVX2(const uint8_t* src_ptr, 3054 uint16_t* dst_ptr, 3055 int width); 3056 void AR64ToARGBRow_Any_AVX2(const uint16_t* src_ptr, 3057 uint8_t* dst_ptr, 3058 int width); 3059 void AB64ToARGBRow_Any_AVX2(const uint16_t* src_ptr, 3060 uint8_t* dst_ptr, 3061 int width); 3062 void ARGBToAR64Row_Any_NEON(const uint8_t* src_ptr, 3063 uint16_t* dst_ptr, 3064 int width); 3065 void ARGBToAB64Row_Any_NEON(const uint8_t* src_ptr, 3066 uint16_t* dst_ptr, 3067 int width); 3068 void AR64ToARGBRow_Any_NEON(const uint16_t* src_ptr, 3069 uint8_t* dst_ptr, 3070 int width); 3071 void AB64ToARGBRow_Any_NEON(const uint16_t* src_ptr, 3072 uint8_t* dst_ptr, 3073 int width); 3074 3075 void J400ToARGBRow_SSE2(const uint8_t* src_y, uint8_t* dst_argb, int width); 3076 void J400ToARGBRow_AVX2(const uint8_t* src_y, uint8_t* dst_argb, int width); 3077 void J400ToARGBRow_NEON(const uint8_t* src_y, uint8_t* dst_argb, int width); 3078 void J400ToARGBRow_MSA(const uint8_t* src_y, uint8_t* dst_argb, int width); 3079 void J400ToARGBRow_LSX(const uint8_t* src_y, uint8_t* dst_argb, int width); 3080 void J400ToARGBRow_C(const uint8_t* src_y, uint8_t* dst_argb, int width); 3081 void J400ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 3082 uint8_t* dst_ptr, 3083 int width); 3084 void J400ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 3085 uint8_t* dst_ptr, 3086 int width); 3087 void J400ToARGBRow_Any_NEON(const uint8_t* src_ptr, 3088 uint8_t* dst_ptr, 3089 int width); 3090 void J400ToARGBRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3091 void J400ToARGBRow_Any_LSX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3092 3093 void I444ToARGBRow_C(const uint8_t* src_y, 3094 const uint8_t* src_u, 3095 const uint8_t* src_v, 3096 uint8_t* rgb_buf, 3097 const struct YuvConstants* yuvconstants, 3098 int width); 3099 void I422ToARGBRow_C(const uint8_t* src_y, 3100 const uint8_t* src_u, 3101 const uint8_t* src_v, 3102 uint8_t* rgb_buf, 3103 const struct YuvConstants* yuvconstants, 3104 int width); 3105 void I422ToAR30Row_C(const uint8_t* src_y, 3106 const uint8_t* src_u, 3107 const uint8_t* src_v, 3108 uint8_t* rgb_buf, 3109 const struct YuvConstants* yuvconstants, 3110 int width); 3111 void I210ToAR30Row_C(const uint16_t* src_y, 3112 const uint16_t* src_u, 3113 const uint16_t* src_v, 3114 uint8_t* rgb_buf, 3115 const struct YuvConstants* yuvconstants, 3116 int width); 3117 void I210ToARGBRow_C(const uint16_t* src_y, 3118 const uint16_t* src_u, 3119 const uint16_t* src_v, 3120 uint8_t* rgb_buf, 3121 const struct YuvConstants* yuvconstants, 3122 int width); 3123 void I212ToAR30Row_C(const uint16_t* src_y, 3124 const uint16_t* src_u, 3125 const uint16_t* src_v, 3126 uint8_t* rgb_buf, 3127 const struct YuvConstants* yuvconstants, 3128 int width); 3129 void I212ToARGBRow_C(const uint16_t* src_y, 3130 const uint16_t* src_u, 3131 const uint16_t* src_v, 3132 uint8_t* rgb_buf, 3133 const struct YuvConstants* yuvconstants, 3134 int width); 3135 void I410ToAR30Row_C(const uint16_t* src_y, 3136 const uint16_t* src_u, 3137 const uint16_t* src_v, 3138 uint8_t* rgb_buf, 3139 const struct YuvConstants* yuvconstants, 3140 int width); 3141 void I410ToARGBRow_C(const uint16_t* src_y, 3142 const uint16_t* src_u, 3143 const uint16_t* src_v, 3144 uint8_t* rgb_buf, 3145 const struct YuvConstants* yuvconstants, 3146 int width); 3147 void I210AlphaToARGBRow_C(const uint16_t* src_y, 3148 const uint16_t* src_u, 3149 const uint16_t* src_v, 3150 const uint16_t* src_a, 3151 uint8_t* rgb_buf, 3152 const struct YuvConstants* yuvconstants, 3153 int width); 3154 void I410AlphaToARGBRow_C(const uint16_t* src_y, 3155 const uint16_t* src_u, 3156 const uint16_t* src_v, 3157 const uint16_t* src_a, 3158 uint8_t* rgb_buf, 3159 const struct YuvConstants* yuvconstants, 3160 int width); 3161 void I444AlphaToARGBRow_C(const uint8_t* src_y, 3162 const uint8_t* src_u, 3163 const uint8_t* src_v, 3164 const uint8_t* src_a, 3165 uint8_t* rgb_buf, 3166 const struct YuvConstants* yuvconstants, 3167 int width); 3168 void I422AlphaToARGBRow_C(const uint8_t* src_y, 3169 const uint8_t* src_u, 3170 const uint8_t* src_v, 3171 const uint8_t* src_a, 3172 uint8_t* rgb_buf, 3173 const struct YuvConstants* yuvconstants, 3174 int width); 3175 void NV12ToARGBRow_C(const uint8_t* src_y, 3176 const uint8_t* src_uv, 3177 uint8_t* rgb_buf, 3178 const struct YuvConstants* yuvconstants, 3179 int width); 3180 void NV12ToRGB565Row_C(const uint8_t* src_y, 3181 const uint8_t* src_uv, 3182 uint8_t* dst_rgb565, 3183 const struct YuvConstants* yuvconstants, 3184 int width); 3185 void NV21ToARGBRow_C(const uint8_t* src_y, 3186 const uint8_t* src_vu, 3187 uint8_t* rgb_buf, 3188 const struct YuvConstants* yuvconstants, 3189 int width); 3190 void NV12ToRGB24Row_C(const uint8_t* src_y, 3191 const uint8_t* src_uv, 3192 uint8_t* rgb_buf, 3193 const struct YuvConstants* yuvconstants, 3194 int width); 3195 void NV21ToRGB24Row_C(const uint8_t* src_y, 3196 const uint8_t* src_vu, 3197 uint8_t* rgb_buf, 3198 const struct YuvConstants* yuvconstants, 3199 int width); 3200 void NV21ToYUV24Row_C(const uint8_t* src_y, 3201 const uint8_t* src_vu, 3202 uint8_t* dst_yuv24, 3203 int width); 3204 void YUY2ToARGBRow_C(const uint8_t* src_yuy2, 3205 uint8_t* rgb_buf, 3206 const struct YuvConstants* yuvconstants, 3207 int width); 3208 void UYVYToARGBRow_C(const uint8_t* src_uyvy, 3209 uint8_t* rgb_buf, 3210 const struct YuvConstants* yuvconstants, 3211 int width); 3212 void P210ToARGBRow_C(const uint16_t* src_y, 3213 const uint16_t* src_uv, 3214 uint8_t* dst_argb, 3215 const struct YuvConstants* yuvconstants, 3216 int width); 3217 void P410ToARGBRow_C(const uint16_t* src_y, 3218 const uint16_t* src_uv, 3219 uint8_t* dst_argb, 3220 const struct YuvConstants* yuvconstants, 3221 int width); 3222 void P210ToAR30Row_C(const uint16_t* src_y, 3223 const uint16_t* src_uv, 3224 uint8_t* dst_ar30, 3225 const struct YuvConstants* yuvconstants, 3226 int width); 3227 void P410ToAR30Row_C(const uint16_t* src_y, 3228 const uint16_t* src_uv, 3229 uint8_t* dst_ar30, 3230 const struct YuvConstants* yuvconstants, 3231 int width); 3232 3233 void I422ToRGBARow_C(const uint8_t* src_y, 3234 const uint8_t* src_u, 3235 const uint8_t* src_v, 3236 uint8_t* rgb_buf, 3237 const struct YuvConstants* yuvconstants, 3238 int width); 3239 void I422ToRGB24Row_C(const uint8_t* src_y, 3240 const uint8_t* src_u, 3241 const uint8_t* src_v, 3242 uint8_t* rgb_buf, 3243 const struct YuvConstants* yuvconstants, 3244 int width); 3245 void I422ToARGB4444Row_C(const uint8_t* src_y, 3246 const uint8_t* src_u, 3247 const uint8_t* src_v, 3248 uint8_t* dst_argb4444, 3249 const struct YuvConstants* yuvconstants, 3250 int width); 3251 void I422ToARGB1555Row_C(const uint8_t* src_y, 3252 const uint8_t* src_u, 3253 const uint8_t* src_v, 3254 uint8_t* dst_argb1555, 3255 const struct YuvConstants* yuvconstants, 3256 int width); 3257 void I422ToRGB565Row_C(const uint8_t* src_y, 3258 const uint8_t* src_u, 3259 const uint8_t* src_v, 3260 uint8_t* dst_rgb565, 3261 const struct YuvConstants* yuvconstants, 3262 int width); 3263 void I422ToARGBRow_AVX2(const uint8_t* y_buf, 3264 const uint8_t* u_buf, 3265 const uint8_t* v_buf, 3266 uint8_t* dst_argb, 3267 const struct YuvConstants* yuvconstants, 3268 int width); 3269 void I422ToARGBRow_AVX512BW(const uint8_t* y_buf, 3270 const uint8_t* u_buf, 3271 const uint8_t* v_buf, 3272 uint8_t* dst_argb, 3273 const struct YuvConstants* yuvconstants, 3274 int width); 3275 void I422ToRGBARow_AVX2(const uint8_t* y_buf, 3276 const uint8_t* u_buf, 3277 const uint8_t* v_buf, 3278 uint8_t* dst_argb, 3279 const struct YuvConstants* yuvconstants, 3280 int width); 3281 void I444ToARGBRow_SSSE3(const uint8_t* y_buf, 3282 const uint8_t* u_buf, 3283 const uint8_t* v_buf, 3284 uint8_t* dst_argb, 3285 const struct YuvConstants* yuvconstants, 3286 int width); 3287 void I444ToARGBRow_AVX2(const uint8_t* y_buf, 3288 const uint8_t* u_buf, 3289 const uint8_t* v_buf, 3290 uint8_t* dst_argb, 3291 const struct YuvConstants* yuvconstants, 3292 int width); 3293 void I422ToARGBRow_SSSE3(const uint8_t* y_buf, 3294 const uint8_t* u_buf, 3295 const uint8_t* v_buf, 3296 uint8_t* dst_argb, 3297 const struct YuvConstants* yuvconstants, 3298 int width); 3299 3300 void I422ToAR30Row_SSSE3(const uint8_t* y_buf, 3301 const uint8_t* u_buf, 3302 const uint8_t* v_buf, 3303 uint8_t* dst_ar30, 3304 const struct YuvConstants* yuvconstants, 3305 int width); 3306 void I210ToAR30Row_SSSE3(const uint16_t* y_buf, 3307 const uint16_t* u_buf, 3308 const uint16_t* v_buf, 3309 uint8_t* dst_ar30, 3310 const struct YuvConstants* yuvconstants, 3311 int width); 3312 void I210ToARGBRow_SSSE3(const uint16_t* y_buf, 3313 const uint16_t* u_buf, 3314 const uint16_t* v_buf, 3315 uint8_t* dst_argb, 3316 const struct YuvConstants* yuvconstants, 3317 int width); 3318 void I212ToAR30Row_SSSE3(const uint16_t* y_buf, 3319 const uint16_t* u_buf, 3320 const uint16_t* v_buf, 3321 uint8_t* dst_ar30, 3322 const struct YuvConstants* yuvconstants, 3323 int width); 3324 void I212ToARGBRow_SSSE3(const uint16_t* y_buf, 3325 const uint16_t* u_buf, 3326 const uint16_t* v_buf, 3327 uint8_t* dst_argb, 3328 const struct YuvConstants* yuvconstants, 3329 int width); 3330 void I410ToAR30Row_SSSE3(const uint16_t* y_buf, 3331 const uint16_t* u_buf, 3332 const uint16_t* v_buf, 3333 uint8_t* dst_ar30, 3334 const struct YuvConstants* yuvconstants, 3335 int width); 3336 void I410ToARGBRow_SSSE3(const uint16_t* y_buf, 3337 const uint16_t* u_buf, 3338 const uint16_t* v_buf, 3339 uint8_t* dst_argb, 3340 const struct YuvConstants* yuvconstants, 3341 int width); 3342 void I210AlphaToARGBRow_SSSE3(const uint16_t* y_buf, 3343 const uint16_t* u_buf, 3344 const uint16_t* v_buf, 3345 const uint16_t* a_buf, 3346 uint8_t* dst_argb, 3347 const struct YuvConstants* yuvconstants, 3348 int width); 3349 void I410AlphaToARGBRow_SSSE3(const uint16_t* y_buf, 3350 const uint16_t* u_buf, 3351 const uint16_t* v_buf, 3352 const uint16_t* a_buf, 3353 uint8_t* dst_argb, 3354 const struct YuvConstants* yuvconstants, 3355 int width); 3356 void I422ToAR30Row_AVX2(const uint8_t* y_buf, 3357 const uint8_t* u_buf, 3358 const uint8_t* v_buf, 3359 uint8_t* dst_ar30, 3360 const struct YuvConstants* yuvconstants, 3361 int width); 3362 void I210ToARGBRow_AVX2(const uint16_t* y_buf, 3363 const uint16_t* u_buf, 3364 const uint16_t* v_buf, 3365 uint8_t* dst_argb, 3366 const struct YuvConstants* yuvconstants, 3367 int width); 3368 void I210ToAR30Row_AVX2(const uint16_t* y_buf, 3369 const uint16_t* u_buf, 3370 const uint16_t* v_buf, 3371 uint8_t* dst_ar30, 3372 const struct YuvConstants* yuvconstants, 3373 int width); 3374 void I212ToARGBRow_AVX2(const uint16_t* y_buf, 3375 const uint16_t* u_buf, 3376 const uint16_t* v_buf, 3377 uint8_t* dst_argb, 3378 const struct YuvConstants* yuvconstants, 3379 int width); 3380 void I212ToAR30Row_AVX2(const uint16_t* y_buf, 3381 const uint16_t* u_buf, 3382 const uint16_t* v_buf, 3383 uint8_t* dst_ar30, 3384 const struct YuvConstants* yuvconstants, 3385 int width); 3386 void I410ToAR30Row_AVX2(const uint16_t* y_buf, 3387 const uint16_t* u_buf, 3388 const uint16_t* v_buf, 3389 uint8_t* dst_ar30, 3390 const struct YuvConstants* yuvconstants, 3391 int width); 3392 void I410ToARGBRow_AVX2(const uint16_t* y_buf, 3393 const uint16_t* u_buf, 3394 const uint16_t* v_buf, 3395 uint8_t* dst_argb, 3396 const struct YuvConstants* yuvconstants, 3397 int width); 3398 void I210AlphaToARGBRow_AVX2(const uint16_t* y_buf, 3399 const uint16_t* u_buf, 3400 const uint16_t* v_buf, 3401 const uint16_t* a_buf, 3402 uint8_t* dst_argb, 3403 const struct YuvConstants* yuvconstants, 3404 int width); 3405 void I410AlphaToARGBRow_AVX2(const uint16_t* y_buf, 3406 const uint16_t* u_buf, 3407 const uint16_t* v_buf, 3408 const uint16_t* a_buf, 3409 uint8_t* dst_argb, 3410 const struct YuvConstants* yuvconstants, 3411 int width); 3412 void I444AlphaToARGBRow_SSSE3(const uint8_t* y_buf, 3413 const uint8_t* u_buf, 3414 const uint8_t* v_buf, 3415 const uint8_t* a_buf, 3416 uint8_t* dst_argb, 3417 const struct YuvConstants* yuvconstants, 3418 int width); 3419 void I444AlphaToARGBRow_AVX2(const uint8_t* y_buf, 3420 const uint8_t* u_buf, 3421 const uint8_t* v_buf, 3422 const uint8_t* a_buf, 3423 uint8_t* dst_argb, 3424 const struct YuvConstants* yuvconstants, 3425 int width); 3426 void I422AlphaToARGBRow_SSSE3(const uint8_t* y_buf, 3427 const uint8_t* u_buf, 3428 const uint8_t* v_buf, 3429 const uint8_t* a_buf, 3430 uint8_t* dst_argb, 3431 const struct YuvConstants* yuvconstants, 3432 int width); 3433 void I422AlphaToARGBRow_AVX2(const uint8_t* y_buf, 3434 const uint8_t* u_buf, 3435 const uint8_t* v_buf, 3436 const uint8_t* a_buf, 3437 uint8_t* dst_argb, 3438 const struct YuvConstants* yuvconstants, 3439 int width); 3440 void NV12ToARGBRow_SSSE3(const uint8_t* y_buf, 3441 const uint8_t* uv_buf, 3442 uint8_t* dst_argb, 3443 const struct YuvConstants* yuvconstants, 3444 int width); 3445 void NV12ToARGBRow_AVX2(const uint8_t* y_buf, 3446 const uint8_t* uv_buf, 3447 uint8_t* dst_argb, 3448 const struct YuvConstants* yuvconstants, 3449 int width); 3450 void NV12ToRGB24Row_SSSE3(const uint8_t* src_y, 3451 const uint8_t* src_uv, 3452 uint8_t* dst_rgb24, 3453 const struct YuvConstants* yuvconstants, 3454 int width); 3455 void NV21ToRGB24Row_SSSE3(const uint8_t* src_y, 3456 const uint8_t* src_vu, 3457 uint8_t* dst_rgb24, 3458 const struct YuvConstants* yuvconstants, 3459 int width); 3460 void NV12ToRGB565Row_SSSE3(const uint8_t* src_y, 3461 const uint8_t* src_uv, 3462 uint8_t* dst_rgb565, 3463 const struct YuvConstants* yuvconstants, 3464 int width); 3465 void NV12ToRGB24Row_AVX2(const uint8_t* src_y, 3466 const uint8_t* src_uv, 3467 uint8_t* dst_rgb24, 3468 const struct YuvConstants* yuvconstants, 3469 int width); 3470 void NV21ToRGB24Row_AVX2(const uint8_t* src_y, 3471 const uint8_t* src_vu, 3472 uint8_t* dst_rgb24, 3473 const struct YuvConstants* yuvconstants, 3474 int width); 3475 void NV21ToYUV24Row_SSSE3(const uint8_t* src_y, 3476 const uint8_t* src_vu, 3477 uint8_t* dst_yuv24, 3478 int width); 3479 void NV21ToYUV24Row_AVX2(const uint8_t* src_y, 3480 const uint8_t* src_vu, 3481 uint8_t* dst_yuv24, 3482 int width); 3483 void NV12ToRGB565Row_AVX2(const uint8_t* src_y, 3484 const uint8_t* src_uv, 3485 uint8_t* dst_rgb565, 3486 const struct YuvConstants* yuvconstants, 3487 int width); 3488 void NV21ToARGBRow_SSSE3(const uint8_t* y_buf, 3489 const uint8_t* vu_buf, 3490 uint8_t* dst_argb, 3491 const struct YuvConstants* yuvconstants, 3492 int width); 3493 void NV21ToARGBRow_AVX2(const uint8_t* y_buf, 3494 const uint8_t* vu_buf, 3495 uint8_t* dst_argb, 3496 const struct YuvConstants* yuvconstants, 3497 int width); 3498 void YUY2ToARGBRow_SSSE3(const uint8_t* yuy2_buf, 3499 uint8_t* dst_argb, 3500 const struct YuvConstants* yuvconstants, 3501 int width); 3502 void UYVYToARGBRow_SSSE3(const uint8_t* uyvy_buf, 3503 uint8_t* dst_argb, 3504 const struct YuvConstants* yuvconstants, 3505 int width); 3506 void YUY2ToARGBRow_AVX2(const uint8_t* yuy2_buf, 3507 uint8_t* dst_argb, 3508 const struct YuvConstants* yuvconstants, 3509 int width); 3510 void UYVYToARGBRow_AVX2(const uint8_t* uyvy_buf, 3511 uint8_t* dst_argb, 3512 const struct YuvConstants* yuvconstants, 3513 int width); 3514 3515 void P210ToARGBRow_SSSE3(const uint16_t* y_buf, 3516 const uint16_t* uv_buf, 3517 uint8_t* dst_argb, 3518 const struct YuvConstants* yuvconstants, 3519 int width); 3520 void P410ToARGBRow_SSSE3(const uint16_t* y_buf, 3521 const uint16_t* uv_buf, 3522 uint8_t* dst_argb, 3523 const struct YuvConstants* yuvconstants, 3524 int width); 3525 void P210ToAR30Row_SSSE3(const uint16_t* y_buf, 3526 const uint16_t* uv_buf, 3527 uint8_t* dst_ar30, 3528 const struct YuvConstants* yuvconstants, 3529 int width); 3530 void P410ToAR30Row_SSSE3(const uint16_t* y_buf, 3531 const uint16_t* uv_buf, 3532 uint8_t* dst_ar30, 3533 const struct YuvConstants* yuvconstants, 3534 int width); 3535 void P210ToARGBRow_AVX2(const uint16_t* y_buf, 3536 const uint16_t* uv_buf, 3537 uint8_t* dst_argb, 3538 const struct YuvConstants* yuvconstants, 3539 int width); 3540 void P410ToARGBRow_AVX2(const uint16_t* y_buf, 3541 const uint16_t* uv_buf, 3542 uint8_t* dst_argb, 3543 const struct YuvConstants* yuvconstants, 3544 int width); 3545 void P210ToAR30Row_AVX2(const uint16_t* y_buf, 3546 const uint16_t* uv_buf, 3547 uint8_t* dst_ar30, 3548 const struct YuvConstants* yuvconstants, 3549 int width); 3550 void P410ToAR30Row_AVX2(const uint16_t* y_buf, 3551 const uint16_t* uv_buf, 3552 uint8_t* dst_ar30, 3553 const struct YuvConstants* yuvconstants, 3554 int width); 3555 3556 void I422ToRGBARow_SSSE3(const uint8_t* y_buf, 3557 const uint8_t* u_buf, 3558 const uint8_t* v_buf, 3559 uint8_t* dst_rgba, 3560 const struct YuvConstants* yuvconstants, 3561 int width); 3562 void I422ToARGB4444Row_SSSE3(const uint8_t* src_y, 3563 const uint8_t* src_u, 3564 const uint8_t* src_v, 3565 uint8_t* dst_argb4444, 3566 const struct YuvConstants* yuvconstants, 3567 int width); 3568 void I422ToARGB4444Row_AVX2(const uint8_t* src_y, 3569 const uint8_t* src_u, 3570 const uint8_t* src_v, 3571 uint8_t* dst_argb4444, 3572 const struct YuvConstants* yuvconstants, 3573 int width); 3574 void I422ToARGB1555Row_SSSE3(const uint8_t* src_y, 3575 const uint8_t* src_u, 3576 const uint8_t* src_v, 3577 uint8_t* dst_argb1555, 3578 const struct YuvConstants* yuvconstants, 3579 int width); 3580 void I422ToARGB1555Row_AVX2(const uint8_t* src_y, 3581 const uint8_t* src_u, 3582 const uint8_t* src_v, 3583 uint8_t* dst_argb1555, 3584 const struct YuvConstants* yuvconstants, 3585 int width); 3586 void I422ToRGB565Row_SSSE3(const uint8_t* src_y, 3587 const uint8_t* src_u, 3588 const uint8_t* src_v, 3589 uint8_t* dst_rgb565, 3590 const struct YuvConstants* yuvconstants, 3591 int width); 3592 void I422ToRGB565Row_AVX2(const uint8_t* src_y, 3593 const uint8_t* src_u, 3594 const uint8_t* src_v, 3595 uint8_t* dst_rgb565, 3596 const struct YuvConstants* yuvconstants, 3597 int width); 3598 void I422ToRGB24Row_SSSE3(const uint8_t* y_buf, 3599 const uint8_t* u_buf, 3600 const uint8_t* v_buf, 3601 uint8_t* dst_rgb24, 3602 const struct YuvConstants* yuvconstants, 3603 int width); 3604 void I422ToRGB24Row_AVX2(const uint8_t* src_y, 3605 const uint8_t* src_u, 3606 const uint8_t* src_v, 3607 uint8_t* dst_rgb24, 3608 const struct YuvConstants* yuvconstants, 3609 int width); 3610 void I422ToARGBRow_Any_AVX2(const uint8_t* y_buf, 3611 const uint8_t* u_buf, 3612 const uint8_t* v_buf, 3613 uint8_t* dst_ptr, 3614 const struct YuvConstants* yuvconstants, 3615 int width); 3616 void I422ToARGBRow_Any_AVX512BW(const uint8_t* y_buf, 3617 const uint8_t* u_buf, 3618 const uint8_t* v_buf, 3619 uint8_t* dst_ptr, 3620 const struct YuvConstants* yuvconstants, 3621 int width); 3622 void I422ToRGBARow_Any_AVX2(const uint8_t* y_buf, 3623 const uint8_t* u_buf, 3624 const uint8_t* v_buf, 3625 uint8_t* dst_ptr, 3626 const struct YuvConstants* yuvconstants, 3627 int width); 3628 void I444ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 3629 const uint8_t* u_buf, 3630 const uint8_t* v_buf, 3631 uint8_t* dst_ptr, 3632 const struct YuvConstants* yuvconstants, 3633 int width); 3634 void I444ToARGBRow_Any_AVX2(const uint8_t* y_buf, 3635 const uint8_t* u_buf, 3636 const uint8_t* v_buf, 3637 uint8_t* dst_ptr, 3638 const struct YuvConstants* yuvconstants, 3639 int width); 3640 void I422ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 3641 const uint8_t* u_buf, 3642 const uint8_t* v_buf, 3643 uint8_t* dst_ptr, 3644 const struct YuvConstants* yuvconstants, 3645 int width); 3646 void I422ToAR30Row_Any_SSSE3(const uint8_t* y_buf, 3647 const uint8_t* u_buf, 3648 const uint8_t* v_buf, 3649 uint8_t* dst_ptr, 3650 const struct YuvConstants* yuvconstants, 3651 int width); 3652 void I210ToAR30Row_Any_SSSE3(const uint16_t* y_buf, 3653 const uint16_t* u_buf, 3654 const uint16_t* v_buf, 3655 uint8_t* dst_ptr, 3656 const struct YuvConstants* yuvconstants, 3657 int width); 3658 void I210ToARGBRow_Any_SSSE3(const uint16_t* y_buf, 3659 const uint16_t* u_buf, 3660 const uint16_t* v_buf, 3661 uint8_t* dst_ptr, 3662 const struct YuvConstants* yuvconstants, 3663 int width); 3664 void I212ToAR30Row_Any_SSSE3(const uint16_t* y_buf, 3665 const uint16_t* u_buf, 3666 const uint16_t* v_buf, 3667 uint8_t* dst_ptr, 3668 const struct YuvConstants* yuvconstants, 3669 int width); 3670 void I212ToARGBRow_Any_SSSE3(const uint16_t* y_buf, 3671 const uint16_t* u_buf, 3672 const uint16_t* v_buf, 3673 uint8_t* dst_ptr, 3674 const struct YuvConstants* yuvconstants, 3675 int width); 3676 void I410ToAR30Row_Any_SSSE3(const uint16_t* y_buf, 3677 const uint16_t* u_buf, 3678 const uint16_t* v_buf, 3679 uint8_t* dst_ptr, 3680 const struct YuvConstants* yuvconstants, 3681 int width); 3682 void I410ToARGBRow_Any_SSSE3(const uint16_t* y_buf, 3683 const uint16_t* u_buf, 3684 const uint16_t* v_buf, 3685 uint8_t* dst_ptr, 3686 const struct YuvConstants* yuvconstants, 3687 int width); 3688 void I210AlphaToARGBRow_Any_SSSE3(const uint16_t* y_buf, 3689 const uint16_t* u_buf, 3690 const uint16_t* v_buf, 3691 const uint16_t* a_buf, 3692 uint8_t* dst_ptr, 3693 const struct YuvConstants* yuvconstants, 3694 int width); 3695 void I410AlphaToARGBRow_Any_SSSE3(const uint16_t* y_buf, 3696 const uint16_t* u_buf, 3697 const uint16_t* v_buf, 3698 const uint16_t* a_buf, 3699 uint8_t* dst_ptr, 3700 const struct YuvConstants* yuvconstants, 3701 int width); 3702 void I422ToAR30Row_Any_AVX2(const uint8_t* y_buf, 3703 const uint8_t* u_buf, 3704 const uint8_t* v_buf, 3705 uint8_t* dst_ptr, 3706 const struct YuvConstants* yuvconstants, 3707 int width); 3708 void I210ToARGBRow_Any_AVX2(const uint16_t* y_buf, 3709 const uint16_t* u_buf, 3710 const uint16_t* v_buf, 3711 uint8_t* dst_ptr, 3712 const struct YuvConstants* yuvconstants, 3713 int width); 3714 void I210ToAR30Row_Any_AVX2(const uint16_t* y_buf, 3715 const uint16_t* u_buf, 3716 const uint16_t* v_buf, 3717 uint8_t* dst_ptr, 3718 const struct YuvConstants* yuvconstants, 3719 int width); 3720 void I212ToARGBRow_Any_AVX2(const uint16_t* y_buf, 3721 const uint16_t* u_buf, 3722 const uint16_t* v_buf, 3723 uint8_t* dst_ptr, 3724 const struct YuvConstants* yuvconstants, 3725 int width); 3726 void I212ToAR30Row_Any_AVX2(const uint16_t* y_buf, 3727 const uint16_t* u_buf, 3728 const uint16_t* v_buf, 3729 uint8_t* dst_ptr, 3730 const struct YuvConstants* yuvconstants, 3731 int width); 3732 void I410ToAR30Row_Any_AVX2(const uint16_t* y_buf, 3733 const uint16_t* u_buf, 3734 const uint16_t* v_buf, 3735 uint8_t* dst_ptr, 3736 const struct YuvConstants* yuvconstants, 3737 int width); 3738 void I410ToARGBRow_Any_AVX2(const uint16_t* y_buf, 3739 const uint16_t* u_buf, 3740 const uint16_t* v_buf, 3741 uint8_t* dst_ptr, 3742 const struct YuvConstants* yuvconstants, 3743 int width); 3744 void I210AlphaToARGBRow_Any_AVX2(const uint16_t* y_buf, 3745 const uint16_t* u_buf, 3746 const uint16_t* v_buf, 3747 const uint16_t* a_buf, 3748 uint8_t* dst_ptr, 3749 const struct YuvConstants* yuvconstants, 3750 int width); 3751 void I410AlphaToARGBRow_Any_AVX2(const uint16_t* y_buf, 3752 const uint16_t* u_buf, 3753 const uint16_t* v_buf, 3754 const uint16_t* a_buf, 3755 uint8_t* dst_ptr, 3756 const struct YuvConstants* yuvconstants, 3757 int width); 3758 void I444AlphaToARGBRow_Any_SSSE3(const uint8_t* y_buf, 3759 const uint8_t* u_buf, 3760 const uint8_t* v_buf, 3761 const uint8_t* a_buf, 3762 uint8_t* dst_ptr, 3763 const struct YuvConstants* yuvconstants, 3764 int width); 3765 void I444AlphaToARGBRow_Any_AVX2(const uint8_t* y_buf, 3766 const uint8_t* u_buf, 3767 const uint8_t* v_buf, 3768 const uint8_t* a_buf, 3769 uint8_t* dst_ptr, 3770 const struct YuvConstants* yuvconstants, 3771 int width); 3772 void I422AlphaToARGBRow_Any_SSSE3(const uint8_t* y_buf, 3773 const uint8_t* u_buf, 3774 const uint8_t* v_buf, 3775 const uint8_t* a_buf, 3776 uint8_t* dst_ptr, 3777 const struct YuvConstants* yuvconstants, 3778 int width); 3779 void I422AlphaToARGBRow_Any_AVX2(const uint8_t* y_buf, 3780 const uint8_t* u_buf, 3781 const uint8_t* v_buf, 3782 const uint8_t* a_buf, 3783 uint8_t* dst_ptr, 3784 const struct YuvConstants* yuvconstants, 3785 int width); 3786 void NV12ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 3787 const uint8_t* uv_buf, 3788 uint8_t* dst_ptr, 3789 const struct YuvConstants* yuvconstants, 3790 int width); 3791 void NV12ToARGBRow_Any_AVX2(const uint8_t* y_buf, 3792 const uint8_t* uv_buf, 3793 uint8_t* dst_ptr, 3794 const struct YuvConstants* yuvconstants, 3795 int width); 3796 void NV21ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 3797 const uint8_t* uv_buf, 3798 uint8_t* dst_ptr, 3799 const struct YuvConstants* yuvconstants, 3800 int width); 3801 void NV21ToARGBRow_Any_AVX2(const uint8_t* y_buf, 3802 const uint8_t* uv_buf, 3803 uint8_t* dst_ptr, 3804 const struct YuvConstants* yuvconstants, 3805 int width); 3806 void NV12ToRGB24Row_Any_SSSE3(const uint8_t* y_buf, 3807 const uint8_t* uv_buf, 3808 uint8_t* dst_ptr, 3809 const struct YuvConstants* yuvconstants, 3810 int width); 3811 void NV21ToRGB24Row_Any_SSSE3(const uint8_t* y_buf, 3812 const uint8_t* uv_buf, 3813 uint8_t* dst_ptr, 3814 const struct YuvConstants* yuvconstants, 3815 int width); 3816 void NV12ToRGB24Row_Any_AVX2(const uint8_t* y_buf, 3817 const uint8_t* uv_buf, 3818 uint8_t* dst_ptr, 3819 const struct YuvConstants* yuvconstants, 3820 int width); 3821 void NV21ToRGB24Row_Any_AVX2(const uint8_t* y_buf, 3822 const uint8_t* uv_buf, 3823 uint8_t* dst_ptr, 3824 const struct YuvConstants* yuvconstants, 3825 int width); 3826 void NV21ToYUV24Row_Any_SSSE3(const uint8_t* src_y, 3827 const uint8_t* src_vu, 3828 uint8_t* dst_yuv24, 3829 int width); 3830 void NV21ToYUV24Row_Any_AVX2(const uint8_t* src_y, 3831 const uint8_t* src_vu, 3832 uint8_t* dst_yuv24, 3833 int width); 3834 void NV12ToRGB565Row_Any_SSSE3(const uint8_t* y_buf, 3835 const uint8_t* uv_buf, 3836 uint8_t* dst_ptr, 3837 const struct YuvConstants* yuvconstants, 3838 int width); 3839 void NV12ToRGB565Row_Any_AVX2(const uint8_t* y_buf, 3840 const uint8_t* uv_buf, 3841 uint8_t* dst_ptr, 3842 const struct YuvConstants* yuvconstants, 3843 int width); 3844 void YUY2ToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 3845 uint8_t* dst_ptr, 3846 const struct YuvConstants* yuvconstants, 3847 int width); 3848 void UYVYToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 3849 uint8_t* dst_ptr, 3850 const struct YuvConstants* yuvconstants, 3851 int width); 3852 void YUY2ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 3853 uint8_t* dst_ptr, 3854 const struct YuvConstants* yuvconstants, 3855 int width); 3856 void UYVYToARGBRow_Any_AVX2(const uint8_t* src_ptr, 3857 uint8_t* dst_ptr, 3858 const struct YuvConstants* yuvconstants, 3859 int width); 3860 void P210ToARGBRow_Any_SSSE3(const uint16_t* y_buf, 3861 const uint16_t* uv_buf, 3862 uint8_t* dst_ptr, 3863 const struct YuvConstants* yuvconstants, 3864 int width); 3865 void P410ToARGBRow_Any_SSSE3(const uint16_t* y_buf, 3866 const uint16_t* uv_buf, 3867 uint8_t* dst_ptr, 3868 const struct YuvConstants* yuvconstants, 3869 int width); 3870 void P210ToAR30Row_Any_SSSE3(const uint16_t* y_buf, 3871 const uint16_t* uv_buf, 3872 uint8_t* dst_ptr, 3873 const struct YuvConstants* yuvconstants, 3874 int width); 3875 void P410ToAR30Row_Any_SSSE3(const uint16_t* y_buf, 3876 const uint16_t* uv_buf, 3877 uint8_t* dst_ptr, 3878 const struct YuvConstants* yuvconstants, 3879 int width); 3880 void P210ToARGBRow_Any_AVX2(const uint16_t* y_buf, 3881 const uint16_t* uv_buf, 3882 uint8_t* dst_ptr, 3883 const struct YuvConstants* yuvconstants, 3884 int width); 3885 void P410ToARGBRow_Any_AVX2(const uint16_t* y_buf, 3886 const uint16_t* uv_buf, 3887 uint8_t* dst_ptr, 3888 const struct YuvConstants* yuvconstants, 3889 int width); 3890 void P210ToAR30Row_Any_AVX2(const uint16_t* y_buf, 3891 const uint16_t* uv_buf, 3892 uint8_t* dst_ptr, 3893 const struct YuvConstants* yuvconstants, 3894 int width); 3895 void P410ToAR30Row_Any_AVX2(const uint16_t* y_buf, 3896 const uint16_t* uv_buf, 3897 uint8_t* dst_ptr, 3898 const struct YuvConstants* yuvconstants, 3899 int width); 3900 void I422ToRGBARow_Any_SSSE3(const uint8_t* y_buf, 3901 const uint8_t* u_buf, 3902 const uint8_t* v_buf, 3903 uint8_t* dst_ptr, 3904 const struct YuvConstants* yuvconstants, 3905 int width); 3906 void I422ToARGB4444Row_Any_SSSE3(const uint8_t* y_buf, 3907 const uint8_t* u_buf, 3908 const uint8_t* v_buf, 3909 uint8_t* dst_ptr, 3910 const struct YuvConstants* yuvconstants, 3911 int width); 3912 void I422ToARGB4444Row_Any_AVX2(const uint8_t* y_buf, 3913 const uint8_t* u_buf, 3914 const uint8_t* v_buf, 3915 uint8_t* dst_ptr, 3916 const struct YuvConstants* yuvconstants, 3917 int width); 3918 void I422ToARGB1555Row_Any_SSSE3(const uint8_t* y_buf, 3919 const uint8_t* u_buf, 3920 const uint8_t* v_buf, 3921 uint8_t* dst_ptr, 3922 const struct YuvConstants* yuvconstants, 3923 int width); 3924 void I422ToARGB1555Row_Any_AVX2(const uint8_t* y_buf, 3925 const uint8_t* u_buf, 3926 const uint8_t* v_buf, 3927 uint8_t* dst_ptr, 3928 const struct YuvConstants* yuvconstants, 3929 int width); 3930 void I422ToRGB565Row_Any_SSSE3(const uint8_t* y_buf, 3931 const uint8_t* u_buf, 3932 const uint8_t* v_buf, 3933 uint8_t* dst_ptr, 3934 const struct YuvConstants* yuvconstants, 3935 int width); 3936 void I422ToRGB565Row_Any_AVX2(const uint8_t* y_buf, 3937 const uint8_t* u_buf, 3938 const uint8_t* v_buf, 3939 uint8_t* dst_ptr, 3940 const struct YuvConstants* yuvconstants, 3941 int width); 3942 void I422ToRGB24Row_Any_SSSE3(const uint8_t* y_buf, 3943 const uint8_t* u_buf, 3944 const uint8_t* v_buf, 3945 uint8_t* dst_ptr, 3946 const struct YuvConstants* yuvconstants, 3947 int width); 3948 void I422ToRGB24Row_Any_AVX2(const uint8_t* y_buf, 3949 const uint8_t* u_buf, 3950 const uint8_t* v_buf, 3951 uint8_t* dst_ptr, 3952 const struct YuvConstants* yuvconstants, 3953 int width); 3954 3955 void I400ToARGBRow_C(const uint8_t* src_y, 3956 uint8_t* rgb_buf, 3957 const struct YuvConstants* yuvconstants, 3958 int width); 3959 void I400ToARGBRow_SSE2(const uint8_t* y_buf, 3960 uint8_t* dst_argb, 3961 const struct YuvConstants* yuvconstants, 3962 int width); 3963 void I400ToARGBRow_AVX2(const uint8_t* y_buf, 3964 uint8_t* dst_argb, 3965 const struct YuvConstants* yuvconstants, 3966 int width); 3967 void I400ToARGBRow_NEON(const uint8_t* src_y, 3968 uint8_t* dst_argb, 3969 const struct YuvConstants* yuvconstants, 3970 int width); 3971 void I400ToARGBRow_MSA(const uint8_t* src_y, 3972 uint8_t* dst_argb, 3973 const struct YuvConstants* yuvconstants, 3974 int width); 3975 void I400ToARGBRow_LSX(const uint8_t* src_y, 3976 uint8_t* dst_argb, 3977 const struct YuvConstants* yuvconstants, 3978 int width); 3979 void I400ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 3980 uint8_t* dst_ptr, 3981 const struct YuvConstants* param, 3982 int width); 3983 void I400ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 3984 uint8_t* dst_ptr, 3985 const struct YuvConstants* param, 3986 int width); 3987 void I400ToARGBRow_Any_NEON(const uint8_t* src_ptr, 3988 uint8_t* dst_ptr, 3989 const struct YuvConstants* param, 3990 int width); 3991 void I400ToARGBRow_Any_MSA(const uint8_t* src_ptr, 3992 uint8_t* dst_ptr, 3993 const struct YuvConstants* yuvconstants, 3994 int width); 3995 void I400ToARGBRow_Any_LSX(const uint8_t* src_ptr, 3996 uint8_t* dst_ptr, 3997 const struct YuvConstants* yuvconstants, 3998 int width); 3999 4000 // ARGB preattenuated alpha blend. 4001 void ARGBBlendRow_SSSE3(const uint8_t* src_argb, 4002 const uint8_t* src_argb1, 4003 uint8_t* dst_argb, 4004 int width); 4005 void ARGBBlendRow_NEON(const uint8_t* src_argb, 4006 const uint8_t* src_argb1, 4007 uint8_t* dst_argb, 4008 int width); 4009 void ARGBBlendRow_MSA(const uint8_t* src_argb0, 4010 const uint8_t* src_argb1, 4011 uint8_t* dst_argb, 4012 int width); 4013 void ARGBBlendRow_LSX(const uint8_t* src_argb0, 4014 const uint8_t* src_argb1, 4015 uint8_t* dst_argb, 4016 int width); 4017 void ARGBBlendRow_C(const uint8_t* src_argb, 4018 const uint8_t* src_argb1, 4019 uint8_t* dst_argb, 4020 int width); 4021 4022 // Unattenuated planar alpha blend. 4023 void BlendPlaneRow_SSSE3(const uint8_t* src0, 4024 const uint8_t* src1, 4025 const uint8_t* alpha, 4026 uint8_t* dst, 4027 int width); 4028 void BlendPlaneRow_Any_SSSE3(const uint8_t* y_buf, 4029 const uint8_t* u_buf, 4030 const uint8_t* v_buf, 4031 uint8_t* dst_ptr, 4032 int width); 4033 void BlendPlaneRow_AVX2(const uint8_t* src0, 4034 const uint8_t* src1, 4035 const uint8_t* alpha, 4036 uint8_t* dst, 4037 int width); 4038 void BlendPlaneRow_Any_AVX2(const uint8_t* y_buf, 4039 const uint8_t* u_buf, 4040 const uint8_t* v_buf, 4041 uint8_t* dst_ptr, 4042 int width); 4043 void BlendPlaneRow_C(const uint8_t* src0, 4044 const uint8_t* src1, 4045 const uint8_t* alpha, 4046 uint8_t* dst, 4047 int width); 4048 4049 // ARGB multiply images. Same API as Blend, but these require 4050 // pointer and width alignment for SSE2. 4051 void ARGBMultiplyRow_C(const uint8_t* src_argb, 4052 const uint8_t* src_argb1, 4053 uint8_t* dst_argb, 4054 int width); 4055 void ARGBMultiplyRow_SSE2(const uint8_t* src_argb, 4056 const uint8_t* src_argb1, 4057 uint8_t* dst_argb, 4058 int width); 4059 void ARGBMultiplyRow_Any_SSE2(const uint8_t* y_buf, 4060 const uint8_t* uv_buf, 4061 uint8_t* dst_ptr, 4062 int width); 4063 void ARGBMultiplyRow_AVX2(const uint8_t* src_argb, 4064 const uint8_t* src_argb1, 4065 uint8_t* dst_argb, 4066 int width); 4067 void ARGBMultiplyRow_Any_AVX2(const uint8_t* y_buf, 4068 const uint8_t* uv_buf, 4069 uint8_t* dst_ptr, 4070 int width); 4071 void ARGBMultiplyRow_NEON(const uint8_t* src_argb, 4072 const uint8_t* src_argb1, 4073 uint8_t* dst_argb, 4074 int width); 4075 void ARGBMultiplyRow_Any_NEON(const uint8_t* y_buf, 4076 const uint8_t* uv_buf, 4077 uint8_t* dst_ptr, 4078 int width); 4079 void ARGBMultiplyRow_MSA(const uint8_t* src_argb0, 4080 const uint8_t* src_argb1, 4081 uint8_t* dst_argb, 4082 int width); 4083 void ARGBMultiplyRow_Any_MSA(const uint8_t* y_buf, 4084 const uint8_t* uv_buf, 4085 uint8_t* dst_ptr, 4086 int width); 4087 void ARGBMultiplyRow_LASX(const uint8_t* src_argb0, 4088 const uint8_t* src_argb1, 4089 uint8_t* dst_argb, 4090 int width); 4091 void ARGBMultiplyRow_Any_LASX(const uint8_t* y_buf, 4092 const uint8_t* uv_buf, 4093 uint8_t* dst_ptr, 4094 int width); 4095 4096 // ARGB add images. 4097 void ARGBAddRow_C(const uint8_t* src_argb, 4098 const uint8_t* src_argb1, 4099 uint8_t* dst_argb, 4100 int width); 4101 void ARGBAddRow_SSE2(const uint8_t* src_argb, 4102 const uint8_t* src_argb1, 4103 uint8_t* dst_argb, 4104 int width); 4105 void ARGBAddRow_Any_SSE2(const uint8_t* y_buf, 4106 const uint8_t* uv_buf, 4107 uint8_t* dst_ptr, 4108 int width); 4109 void ARGBAddRow_AVX2(const uint8_t* src_argb, 4110 const uint8_t* src_argb1, 4111 uint8_t* dst_argb, 4112 int width); 4113 void ARGBAddRow_Any_AVX2(const uint8_t* y_buf, 4114 const uint8_t* uv_buf, 4115 uint8_t* dst_ptr, 4116 int width); 4117 void ARGBAddRow_NEON(const uint8_t* src_argb, 4118 const uint8_t* src_argb1, 4119 uint8_t* dst_argb, 4120 int width); 4121 void ARGBAddRow_Any_NEON(const uint8_t* y_buf, 4122 const uint8_t* uv_buf, 4123 uint8_t* dst_ptr, 4124 int width); 4125 void ARGBAddRow_MSA(const uint8_t* src_argb0, 4126 const uint8_t* src_argb1, 4127 uint8_t* dst_argb, 4128 int width); 4129 void ARGBAddRow_Any_MSA(const uint8_t* y_buf, 4130 const uint8_t* uv_buf, 4131 uint8_t* dst_ptr, 4132 int width); 4133 void ARGBAddRow_LASX(const uint8_t* src_argb0, 4134 const uint8_t* src_argb1, 4135 uint8_t* dst_argb, 4136 int width); 4137 void ARGBAddRow_Any_LASX(const uint8_t* y_buf, 4138 const uint8_t* uv_buf, 4139 uint8_t* dst_ptr, 4140 int width); 4141 4142 // ARGB subtract images. Same API as Blend, but these require 4143 // pointer and width alignment for SSE2. 4144 void ARGBSubtractRow_C(const uint8_t* src_argb, 4145 const uint8_t* src_argb1, 4146 uint8_t* dst_argb, 4147 int width); 4148 void ARGBSubtractRow_SSE2(const uint8_t* src_argb, 4149 const uint8_t* src_argb1, 4150 uint8_t* dst_argb, 4151 int width); 4152 void ARGBSubtractRow_Any_SSE2(const uint8_t* y_buf, 4153 const uint8_t* uv_buf, 4154 uint8_t* dst_ptr, 4155 int width); 4156 void ARGBSubtractRow_AVX2(const uint8_t* src_argb, 4157 const uint8_t* src_argb1, 4158 uint8_t* dst_argb, 4159 int width); 4160 void ARGBSubtractRow_Any_AVX2(const uint8_t* y_buf, 4161 const uint8_t* uv_buf, 4162 uint8_t* dst_ptr, 4163 int width); 4164 void ARGBSubtractRow_NEON(const uint8_t* src_argb, 4165 const uint8_t* src_argb1, 4166 uint8_t* dst_argb, 4167 int width); 4168 void ARGBSubtractRow_Any_NEON(const uint8_t* y_buf, 4169 const uint8_t* uv_buf, 4170 uint8_t* dst_ptr, 4171 int width); 4172 void ARGBSubtractRow_MSA(const uint8_t* src_argb0, 4173 const uint8_t* src_argb1, 4174 uint8_t* dst_argb, 4175 int width); 4176 void ARGBSubtractRow_Any_MSA(const uint8_t* y_buf, 4177 const uint8_t* uv_buf, 4178 uint8_t* dst_ptr, 4179 int width); 4180 void ARGBSubtractRow_LASX(const uint8_t* src_argb0, 4181 const uint8_t* src_argb1, 4182 uint8_t* dst_argb, 4183 int width); 4184 void ARGBSubtractRow_Any_LASX(const uint8_t* y_buf, 4185 const uint8_t* uv_buf, 4186 uint8_t* dst_ptr, 4187 int width); 4188 4189 void ARGBToRGB24Row_Any_SSSE3(const uint8_t* src_ptr, 4190 uint8_t* dst_ptr, 4191 int width); 4192 void ARGBToRAWRow_Any_SSSE3(const uint8_t* src_ptr, 4193 uint8_t* dst_ptr, 4194 int width); 4195 void ARGBToRGB565Row_Any_SSE2(const uint8_t* src_ptr, 4196 uint8_t* dst_ptr, 4197 int width); 4198 void ARGBToARGB1555Row_Any_SSE2(const uint8_t* src_ptr, 4199 uint8_t* dst_ptr, 4200 int width); 4201 void ARGBToARGB4444Row_Any_SSE2(const uint8_t* src_ptr, 4202 uint8_t* dst_ptr, 4203 int width); 4204 void ABGRToAR30Row_Any_SSSE3(const uint8_t* src_ptr, 4205 uint8_t* dst_ptr, 4206 int width); 4207 void ARGBToAR30Row_Any_SSSE3(const uint8_t* src_ptr, 4208 uint8_t* dst_ptr, 4209 int width); 4210 void ARGBToRAWRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4211 void ARGBToRGB24Row_Any_AVX2(const uint8_t* src_ptr, 4212 uint8_t* dst_ptr, 4213 int width); 4214 void ARGBToRGB24Row_Any_AVX512VBMI(const uint8_t* src_ptr, 4215 uint8_t* dst_ptr, 4216 int width); 4217 void ARGBToRGB565DitherRow_Any_SSE2(const uint8_t* src_ptr, 4218 uint8_t* dst_ptr, 4219 const uint32_t param, 4220 int width); 4221 void ARGBToRGB565DitherRow_Any_AVX2(const uint8_t* src_ptr, 4222 uint8_t* dst_ptr, 4223 const uint32_t param, 4224 int width); 4225 4226 void ARGBToRGB565Row_Any_AVX2(const uint8_t* src_ptr, 4227 uint8_t* dst_ptr, 4228 int width); 4229 void ARGBToARGB1555Row_Any_AVX2(const uint8_t* src_ptr, 4230 uint8_t* dst_ptr, 4231 int width); 4232 void ARGBToARGB4444Row_Any_AVX2(const uint8_t* src_ptr, 4233 uint8_t* dst_ptr, 4234 int width); 4235 void ABGRToAR30Row_Any_AVX2(const uint8_t* src_ptr, 4236 uint8_t* dst_ptr, 4237 int width); 4238 void ARGBToAR30Row_Any_AVX2(const uint8_t* src_ptr, 4239 uint8_t* dst_ptr, 4240 int width); 4241 4242 void ARGBToRGB24Row_Any_NEON(const uint8_t* src_ptr, 4243 uint8_t* dst_ptr, 4244 int width); 4245 void ARGBToRAWRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4246 void ARGBToRGB565Row_Any_NEON(const uint8_t* src_ptr, 4247 uint8_t* dst_ptr, 4248 int width); 4249 void ARGBToARGB1555Row_Any_NEON(const uint8_t* src_ptr, 4250 uint8_t* dst_ptr, 4251 int width); 4252 void ARGBToARGB4444Row_Any_NEON(const uint8_t* src_ptr, 4253 uint8_t* dst_ptr, 4254 int width); 4255 void ARGBToRGB565DitherRow_Any_NEON(const uint8_t* src_ptr, 4256 uint8_t* dst_ptr, 4257 const uint32_t param, 4258 int width); 4259 void ARGBToRGB24Row_Any_MSA(const uint8_t* src_ptr, 4260 uint8_t* dst_ptr, 4261 int width); 4262 void ARGBToRAWRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4263 void ARGBToRGB565Row_Any_MSA(const uint8_t* src_ptr, 4264 uint8_t* dst_ptr, 4265 int width); 4266 void ARGBToARGB1555Row_Any_MSA(const uint8_t* src_ptr, 4267 uint8_t* dst_ptr, 4268 int width); 4269 void ARGBToARGB4444Row_Any_MSA(const uint8_t* src_ptr, 4270 uint8_t* dst_ptr, 4271 int width); 4272 void ARGBToRGB565DitherRow_Any_MSA(const uint8_t* src_ptr, 4273 uint8_t* dst_ptr, 4274 const uint32_t param, 4275 int width); 4276 void ARGBToRGB565DitherRow_Any_LASX(const uint8_t* src_ptr, 4277 uint8_t* dst_ptr, 4278 const uint32_t param, 4279 int width); 4280 4281 void ARGBToRGB24Row_Any_LASX(const uint8_t* src_ptr, 4282 uint8_t* dst_ptr, 4283 int width); 4284 void ARGBToRAWRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4285 void ARGBToRGB565Row_Any_LASX(const uint8_t* src_ptr, 4286 uint8_t* dst_ptr, 4287 int width); 4288 void ARGBToARGB1555Row_Any_LASX(const uint8_t* src_ptr, 4289 uint8_t* dst_ptr, 4290 int width); 4291 void ARGBToARGB4444Row_Any_LASX(const uint8_t* src_ptr, 4292 uint8_t* dst_ptr, 4293 int width); 4294 4295 void I444ToARGBRow_Any_NEON(const uint8_t* y_buf, 4296 const uint8_t* u_buf, 4297 const uint8_t* v_buf, 4298 uint8_t* dst_ptr, 4299 const struct YuvConstants* yuvconstants, 4300 int width); 4301 void I422ToARGBRow_Any_NEON(const uint8_t* y_buf, 4302 const uint8_t* u_buf, 4303 const uint8_t* v_buf, 4304 uint8_t* dst_ptr, 4305 const struct YuvConstants* yuvconstants, 4306 int width); 4307 void I444AlphaToARGBRow_Any_NEON(const uint8_t* y_buf, 4308 const uint8_t* u_buf, 4309 const uint8_t* v_buf, 4310 const uint8_t* a_buf, 4311 uint8_t* dst_ptr, 4312 const struct YuvConstants* yuvconstants, 4313 int width); 4314 void I422AlphaToARGBRow_Any_NEON(const uint8_t* y_buf, 4315 const uint8_t* u_buf, 4316 const uint8_t* v_buf, 4317 const uint8_t* a_buf, 4318 uint8_t* dst_ptr, 4319 const struct YuvConstants* yuvconstants, 4320 int width); 4321 void I422ToRGBARow_Any_NEON(const uint8_t* y_buf, 4322 const uint8_t* u_buf, 4323 const uint8_t* v_buf, 4324 uint8_t* dst_ptr, 4325 const struct YuvConstants* yuvconstants, 4326 int width); 4327 void I422ToRGB24Row_Any_NEON(const uint8_t* y_buf, 4328 const uint8_t* u_buf, 4329 const uint8_t* v_buf, 4330 uint8_t* dst_ptr, 4331 const struct YuvConstants* yuvconstants, 4332 int width); 4333 void I422ToARGB4444Row_Any_NEON(const uint8_t* y_buf, 4334 const uint8_t* u_buf, 4335 const uint8_t* v_buf, 4336 uint8_t* dst_ptr, 4337 const struct YuvConstants* yuvconstants, 4338 int width); 4339 void I422ToARGB1555Row_Any_NEON(const uint8_t* y_buf, 4340 const uint8_t* u_buf, 4341 const uint8_t* v_buf, 4342 uint8_t* dst_ptr, 4343 const struct YuvConstants* yuvconstants, 4344 int width); 4345 void I422ToRGB565Row_Any_NEON(const uint8_t* y_buf, 4346 const uint8_t* u_buf, 4347 const uint8_t* v_buf, 4348 uint8_t* dst_ptr, 4349 const struct YuvConstants* yuvconstants, 4350 int width); 4351 void NV12ToARGBRow_Any_NEON(const uint8_t* y_buf, 4352 const uint8_t* uv_buf, 4353 uint8_t* dst_ptr, 4354 const struct YuvConstants* yuvconstants, 4355 int width); 4356 void NV21ToARGBRow_Any_NEON(const uint8_t* y_buf, 4357 const uint8_t* uv_buf, 4358 uint8_t* dst_ptr, 4359 const struct YuvConstants* yuvconstants, 4360 int width); 4361 void NV12ToRGB24Row_Any_NEON(const uint8_t* y_buf, 4362 const uint8_t* uv_buf, 4363 uint8_t* dst_ptr, 4364 const struct YuvConstants* yuvconstants, 4365 int width); 4366 void NV21ToRGB24Row_Any_NEON(const uint8_t* y_buf, 4367 const uint8_t* uv_buf, 4368 uint8_t* dst_ptr, 4369 const struct YuvConstants* yuvconstants, 4370 int width); 4371 void NV21ToYUV24Row_Any_NEON(const uint8_t* y_buf, 4372 const uint8_t* uv_buf, 4373 uint8_t* dst_ptr, 4374 int width); 4375 void NV12ToRGB565Row_Any_NEON(const uint8_t* y_buf, 4376 const uint8_t* uv_buf, 4377 uint8_t* dst_ptr, 4378 const struct YuvConstants* yuvconstants, 4379 int width); 4380 void YUY2ToARGBRow_Any_NEON(const uint8_t* src_ptr, 4381 uint8_t* dst_ptr, 4382 const struct YuvConstants* yuvconstants, 4383 int width); 4384 void UYVYToARGBRow_Any_NEON(const uint8_t* src_ptr, 4385 uint8_t* dst_ptr, 4386 const struct YuvConstants* yuvconstants, 4387 int width); 4388 void P210ToARGBRow_NEON(const uint16_t* y_buf, 4389 const uint16_t* uv_buf, 4390 uint8_t* dst_argb, 4391 const struct YuvConstants* yuvconstants, 4392 int width); 4393 void P410ToARGBRow_NEON(const uint16_t* y_buf, 4394 const uint16_t* uv_buf, 4395 uint8_t* dst_argb, 4396 const struct YuvConstants* yuvconstants, 4397 int width); 4398 void P210ToAR30Row_NEON(const uint16_t* y_buf, 4399 const uint16_t* uv_buf, 4400 uint8_t* dst_ar30, 4401 const struct YuvConstants* yuvconstants, 4402 int width); 4403 void P410ToAR30Row_NEON(const uint16_t* y_buf, 4404 const uint16_t* uv_buf, 4405 uint8_t* dst_ar30, 4406 const struct YuvConstants* yuvconstants, 4407 int width); 4408 void P210ToARGBRow_Any_NEON(const uint16_t* y_buf, 4409 const uint16_t* uv_buf, 4410 uint8_t* dst_argb, 4411 const struct YuvConstants* yuvconstants, 4412 int width); 4413 void P410ToARGBRow_Any_NEON(const uint16_t* y_buf, 4414 const uint16_t* uv_buf, 4415 uint8_t* dst_argb, 4416 const struct YuvConstants* yuvconstants, 4417 int width); 4418 void P210ToAR30Row_Any_NEON(const uint16_t* y_buf, 4419 const uint16_t* uv_buf, 4420 uint8_t* dst_ar30, 4421 const struct YuvConstants* yuvconstants, 4422 int width); 4423 void P410ToAR30Row_Any_NEON(const uint16_t* y_buf, 4424 const uint16_t* uv_buf, 4425 uint8_t* dst_ar30, 4426 const struct YuvConstants* yuvconstants, 4427 int width); 4428 void I444ToARGBRow_Any_MSA(const uint8_t* y_buf, 4429 const uint8_t* u_buf, 4430 const uint8_t* v_buf, 4431 uint8_t* dst_ptr, 4432 const struct YuvConstants* yuvconstants, 4433 int width); 4434 void I444ToARGBRow_Any_LSX(const uint8_t* y_buf, 4435 const uint8_t* u_buf, 4436 const uint8_t* v_buf, 4437 uint8_t* dst_ptr, 4438 const struct YuvConstants* yuvconstants, 4439 int width); 4440 void I422ToARGBRow_Any_MSA(const uint8_t* y_buf, 4441 const uint8_t* u_buf, 4442 const uint8_t* v_buf, 4443 uint8_t* dst_ptr, 4444 const struct YuvConstants* yuvconstants, 4445 int width); 4446 void I422ToARGBRow_Any_LASX(const uint8_t* y_buf, 4447 const uint8_t* u_buf, 4448 const uint8_t* v_buf, 4449 uint8_t* dst_ptr, 4450 const struct YuvConstants* yuvconstants, 4451 int width); 4452 void I422ToRGBARow_Any_MSA(const uint8_t* y_buf, 4453 const uint8_t* u_buf, 4454 const uint8_t* v_buf, 4455 uint8_t* dst_ptr, 4456 const struct YuvConstants* yuvconstants, 4457 int width); 4458 void I422ToRGBARow_Any_LASX(const uint8_t* y_buf, 4459 const uint8_t* u_buf, 4460 const uint8_t* v_buf, 4461 uint8_t* dst_ptr, 4462 const struct YuvConstants* yuvconstants, 4463 int width); 4464 void I422AlphaToARGBRow_Any_MSA(const uint8_t* y_buf, 4465 const uint8_t* u_buf, 4466 const uint8_t* v_buf, 4467 const uint8_t* a_buf, 4468 uint8_t* dst_ptr, 4469 const struct YuvConstants* yuvconstants, 4470 int width); 4471 void I422AlphaToARGBRow_Any_LASX(const uint8_t* y_buf, 4472 const uint8_t* u_buf, 4473 const uint8_t* v_buf, 4474 const uint8_t* a_buf, 4475 uint8_t* dst_ptr, 4476 const struct YuvConstants* yuvconstants, 4477 int width); 4478 void I422ToRGB24Row_Any_MSA(const uint8_t* y_buf, 4479 const uint8_t* u_buf, 4480 const uint8_t* v_buf, 4481 uint8_t* dst_ptr, 4482 const struct YuvConstants* yuvconstants, 4483 int width); 4484 void I422ToRGB24Row_Any_LASX(const uint8_t* y_buf, 4485 const uint8_t* u_buf, 4486 const uint8_t* v_buf, 4487 uint8_t* dst_ptr, 4488 const struct YuvConstants* yuvconstants, 4489 int width); 4490 void I422ToRGB565Row_Any_MSA(const uint8_t* y_buf, 4491 const uint8_t* u_buf, 4492 const uint8_t* v_buf, 4493 uint8_t* dst_ptr, 4494 const struct YuvConstants* yuvconstants, 4495 int width); 4496 void I422ToRGB565Row_Any_LASX(const uint8_t* y_buf, 4497 const uint8_t* u_buf, 4498 const uint8_t* v_buf, 4499 uint8_t* dst_ptr, 4500 const struct YuvConstants* yuvconstants, 4501 int width); 4502 void I422ToARGB4444Row_Any_MSA(const uint8_t* y_buf, 4503 const uint8_t* u_buf, 4504 const uint8_t* v_buf, 4505 uint8_t* dst_ptr, 4506 const struct YuvConstants* yuvconstants, 4507 int width); 4508 void I422ToARGB4444Row_Any_LASX(const uint8_t* y_buf, 4509 const uint8_t* u_buf, 4510 const uint8_t* v_buf, 4511 uint8_t* dst_ptr, 4512 const struct YuvConstants* yuvconstants, 4513 int width); 4514 void I422ToARGB1555Row_Any_MSA(const uint8_t* y_buf, 4515 const uint8_t* u_buf, 4516 const uint8_t* v_buf, 4517 uint8_t* dst_ptr, 4518 const struct YuvConstants* yuvconstants, 4519 int width); 4520 void I422ToARGB1555Row_Any_LASX(const uint8_t* y_buf, 4521 const uint8_t* u_buf, 4522 const uint8_t* v_buf, 4523 uint8_t* dst_ptr, 4524 const struct YuvConstants* yuvconstants, 4525 int width); 4526 void NV12ToARGBRow_Any_MSA(const uint8_t* y_buf, 4527 const uint8_t* uv_buf, 4528 uint8_t* dst_ptr, 4529 const struct YuvConstants* yuvconstants, 4530 int width); 4531 void NV12ToRGB565Row_Any_MSA(const uint8_t* y_buf, 4532 const uint8_t* uv_buf, 4533 uint8_t* dst_ptr, 4534 const struct YuvConstants* yuvconstants, 4535 int width); 4536 void NV21ToARGBRow_Any_MSA(const uint8_t* y_buf, 4537 const uint8_t* uv_buf, 4538 uint8_t* dst_ptr, 4539 const struct YuvConstants* yuvconstants, 4540 int width); 4541 void YUY2ToARGBRow_Any_MSA(const uint8_t* src_ptr, 4542 uint8_t* dst_ptr, 4543 const struct YuvConstants* yuvconstants, 4544 int width); 4545 void UYVYToARGBRow_Any_MSA(const uint8_t* src_ptr, 4546 uint8_t* dst_ptr, 4547 const struct YuvConstants* yuvconstants, 4548 int width); 4549 4550 void NV12ToARGBRow_Any_LSX(const uint8_t* y_buf, 4551 const uint8_t* uv_buf, 4552 uint8_t* dst_ptr, 4553 const struct YuvConstants* yuvconstants, 4554 int width); 4555 void NV12ToARGBRow_Any_LASX(const uint8_t* y_buf, 4556 const uint8_t* uv_buf, 4557 uint8_t* dst_ptr, 4558 const struct YuvConstants* yuvconstants, 4559 int width); 4560 void NV12ToRGB565Row_Any_LSX(const uint8_t* y_buf, 4561 const uint8_t* uv_buf, 4562 uint8_t* dst_ptr, 4563 const struct YuvConstants* yuvconstants, 4564 int width); 4565 void NV12ToRGB565Row_Any_LASX(const uint8_t* y_buf, 4566 const uint8_t* uv_buf, 4567 uint8_t* dst_ptr, 4568 const struct YuvConstants* yuvconstants, 4569 int width); 4570 void NV21ToARGBRow_Any_LSX(const uint8_t* y_buf, 4571 const uint8_t* uv_buf, 4572 uint8_t* dst_ptr, 4573 const struct YuvConstants* yuvconstants, 4574 int width); 4575 void NV21ToARGBRow_Any_LASX(const uint8_t* y_buf, 4576 const uint8_t* uv_buf, 4577 uint8_t* dst_ptr, 4578 const struct YuvConstants* yuvconstants, 4579 int width); 4580 void YUY2ToARGBRow_Any_LSX(const uint8_t* src_ptr, 4581 uint8_t* dst_ptr, 4582 const struct YuvConstants* yuvconstants, 4583 int width); 4584 void UYVYToARGBRow_Any_LSX(const uint8_t* src_ptr, 4585 uint8_t* dst_ptr, 4586 const struct YuvConstants* yuvconstants, 4587 int width); 4588 4589 void YUY2ToYRow_AVX2(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 4590 void YUY2ToUVRow_AVX2(const uint8_t* src_yuy2, 4591 int stride_yuy2, 4592 uint8_t* dst_u, 4593 uint8_t* dst_v, 4594 int width); 4595 void YUY2ToUV422Row_AVX2(const uint8_t* src_yuy2, 4596 uint8_t* dst_u, 4597 uint8_t* dst_v, 4598 int width); 4599 void YUY2ToYRow_SSE2(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 4600 void YUY2ToUVRow_SSE2(const uint8_t* src_yuy2, 4601 int stride_yuy2, 4602 uint8_t* dst_u, 4603 uint8_t* dst_v, 4604 int width); 4605 void YUY2ToUV422Row_SSE2(const uint8_t* src_yuy2, 4606 uint8_t* dst_u, 4607 uint8_t* dst_v, 4608 int width); 4609 void YUY2ToYRow_NEON(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 4610 void YUY2ToUVRow_NEON(const uint8_t* src_yuy2, 4611 int stride_yuy2, 4612 uint8_t* dst_u, 4613 uint8_t* dst_v, 4614 int width); 4615 void YUY2ToUV422Row_NEON(const uint8_t* src_yuy2, 4616 uint8_t* dst_u, 4617 uint8_t* dst_v, 4618 int width); 4619 void YUY2ToYRow_MSA(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 4620 void YUY2ToYRow_LASX(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 4621 void YUY2ToUVRow_MSA(const uint8_t* src_yuy2, 4622 int src_stride_yuy2, 4623 uint8_t* dst_u, 4624 uint8_t* dst_v, 4625 int width); 4626 void YUY2ToUVRow_LASX(const uint8_t* src_yuy2, 4627 int src_stride_yuy2, 4628 uint8_t* dst_u, 4629 uint8_t* dst_v, 4630 int width); 4631 void YUY2ToUV422Row_MSA(const uint8_t* src_yuy2, 4632 uint8_t* dst_u, 4633 uint8_t* dst_v, 4634 int width); 4635 void YUY2ToUV422Row_LASX(const uint8_t* src_yuy2, 4636 uint8_t* dst_u, 4637 uint8_t* dst_v, 4638 int width); 4639 void YUY2ToYRow_C(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 4640 void YUY2ToUVRow_C(const uint8_t* src_yuy2, 4641 int src_stride_yuy2, 4642 uint8_t* dst_u, 4643 uint8_t* dst_v, 4644 int width); 4645 void YUY2ToUV422Row_C(const uint8_t* src_yuy2, 4646 uint8_t* dst_u, 4647 uint8_t* dst_v, 4648 int width); 4649 void YUY2ToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4650 void YUY2ToUVRow_Any_AVX2(const uint8_t* src_ptr, 4651 int src_stride, 4652 uint8_t* dst_u, 4653 uint8_t* dst_v, 4654 int width); 4655 void YUY2ToUV422Row_Any_AVX2(const uint8_t* src_ptr, 4656 uint8_t* dst_u, 4657 uint8_t* dst_v, 4658 int width); 4659 void YUY2ToYRow_Any_SSE2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4660 void YUY2ToUVRow_Any_SSE2(const uint8_t* src_ptr, 4661 int src_stride, 4662 uint8_t* dst_u, 4663 uint8_t* dst_v, 4664 int width); 4665 void YUY2ToUV422Row_Any_SSE2(const uint8_t* src_ptr, 4666 uint8_t* dst_u, 4667 uint8_t* dst_v, 4668 int width); 4669 void YUY2ToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4670 void YUY2ToUVRow_Any_NEON(const uint8_t* src_ptr, 4671 int src_stride, 4672 uint8_t* dst_u, 4673 uint8_t* dst_v, 4674 int width); 4675 void YUY2ToUV422Row_Any_NEON(const uint8_t* src_ptr, 4676 uint8_t* dst_u, 4677 uint8_t* dst_v, 4678 int width); 4679 void YUY2ToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4680 void YUY2ToYRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4681 void YUY2ToUVRow_Any_MSA(const uint8_t* src_ptr, 4682 int src_stride_ptr, 4683 uint8_t* dst_u, 4684 uint8_t* dst_v, 4685 int width); 4686 void YUY2ToUVRow_Any_LASX(const uint8_t* src_ptr, 4687 int src_stride_ptr, 4688 uint8_t* dst_u, 4689 uint8_t* dst_v, 4690 int width); 4691 void YUY2ToUV422Row_Any_MSA(const uint8_t* src_ptr, 4692 uint8_t* dst_u, 4693 uint8_t* dst_v, 4694 int width); 4695 void YUY2ToUV422Row_Any_LASX(const uint8_t* src_ptr, 4696 uint8_t* dst_u, 4697 uint8_t* dst_v, 4698 int width); 4699 void UYVYToYRow_AVX2(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 4700 void UYVYToUVRow_AVX2(const uint8_t* src_uyvy, 4701 int stride_uyvy, 4702 uint8_t* dst_u, 4703 uint8_t* dst_v, 4704 int width); 4705 void UYVYToUV422Row_AVX2(const uint8_t* src_uyvy, 4706 uint8_t* dst_u, 4707 uint8_t* dst_v, 4708 int width); 4709 void UYVYToYRow_SSE2(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 4710 void UYVYToUVRow_SSE2(const uint8_t* src_uyvy, 4711 int stride_uyvy, 4712 uint8_t* dst_u, 4713 uint8_t* dst_v, 4714 int width); 4715 void UYVYToUV422Row_SSE2(const uint8_t* src_uyvy, 4716 uint8_t* dst_u, 4717 uint8_t* dst_v, 4718 int width); 4719 void UYVYToYRow_AVX2(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 4720 void UYVYToUVRow_AVX2(const uint8_t* src_uyvy, 4721 int stride_uyvy, 4722 uint8_t* dst_u, 4723 uint8_t* dst_v, 4724 int width); 4725 void UYVYToUV422Row_AVX2(const uint8_t* src_uyvy, 4726 uint8_t* dst_u, 4727 uint8_t* dst_v, 4728 int width); 4729 void UYVYToYRow_NEON(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 4730 void UYVYToUVRow_NEON(const uint8_t* src_uyvy, 4731 int stride_uyvy, 4732 uint8_t* dst_u, 4733 uint8_t* dst_v, 4734 int width); 4735 void UYVYToUV422Row_NEON(const uint8_t* src_uyvy, 4736 uint8_t* dst_u, 4737 uint8_t* dst_v, 4738 int width); 4739 void UYVYToYRow_MSA(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 4740 void UYVYToYRow_LASX(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 4741 void UYVYToUVRow_MSA(const uint8_t* src_uyvy, 4742 int src_stride_uyvy, 4743 uint8_t* dst_u, 4744 uint8_t* dst_v, 4745 int width); 4746 void UYVYToUVRow_LASX(const uint8_t* src_uyvy, 4747 int src_stride_uyvy, 4748 uint8_t* dst_u, 4749 uint8_t* dst_v, 4750 int width); 4751 void UYVYToUV422Row_MSA(const uint8_t* src_uyvy, 4752 uint8_t* dst_u, 4753 uint8_t* dst_v, 4754 int width); 4755 void UYVYToUV422Row_LASX(const uint8_t* src_uyvy, 4756 uint8_t* dst_u, 4757 uint8_t* dst_v, 4758 int width); 4759 4760 void UYVYToYRow_C(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 4761 void UYVYToUVRow_C(const uint8_t* src_uyvy, 4762 int src_stride_uyvy, 4763 uint8_t* dst_u, 4764 uint8_t* dst_v, 4765 int width); 4766 void UYVYToUV422Row_C(const uint8_t* src_uyvy, 4767 uint8_t* dst_u, 4768 uint8_t* dst_v, 4769 int width); 4770 void UYVYToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4771 void UYVYToUVRow_Any_AVX2(const uint8_t* src_ptr, 4772 int src_stride, 4773 uint8_t* dst_u, 4774 uint8_t* dst_v, 4775 int width); 4776 void UYVYToUV422Row_Any_AVX2(const uint8_t* src_ptr, 4777 uint8_t* dst_u, 4778 uint8_t* dst_v, 4779 int width); 4780 void UYVYToYRow_Any_SSE2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4781 void UYVYToUVRow_Any_SSE2(const uint8_t* src_ptr, 4782 int src_stride, 4783 uint8_t* dst_u, 4784 uint8_t* dst_v, 4785 int width); 4786 void UYVYToUV422Row_Any_SSE2(const uint8_t* src_ptr, 4787 uint8_t* dst_u, 4788 uint8_t* dst_v, 4789 int width); 4790 void UYVYToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4791 void UYVYToUVRow_Any_NEON(const uint8_t* src_ptr, 4792 int src_stride, 4793 uint8_t* dst_u, 4794 uint8_t* dst_v, 4795 int width); 4796 void UYVYToUV422Row_Any_NEON(const uint8_t* src_ptr, 4797 uint8_t* dst_u, 4798 uint8_t* dst_v, 4799 int width); 4800 void UYVYToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4801 void UYVYToYRow_Any_LASX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4802 void UYVYToUVRow_Any_MSA(const uint8_t* src_ptr, 4803 int src_stride_ptr, 4804 uint8_t* dst_u, 4805 uint8_t* dst_v, 4806 int width); 4807 void UYVYToUVRow_Any_LASX(const uint8_t* src_ptr, 4808 int src_stride_ptr, 4809 uint8_t* dst_u, 4810 uint8_t* dst_v, 4811 int width); 4812 void UYVYToUV422Row_Any_MSA(const uint8_t* src_ptr, 4813 uint8_t* dst_u, 4814 uint8_t* dst_v, 4815 int width); 4816 void UYVYToUV422Row_Any_LASX(const uint8_t* src_ptr, 4817 uint8_t* dst_u, 4818 uint8_t* dst_v, 4819 int width); 4820 void SwapUVRow_C(const uint8_t* src_uv, uint8_t* dst_vu, int width); 4821 void SwapUVRow_NEON(const uint8_t* src_uv, uint8_t* dst_vu, int width); 4822 void SwapUVRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4823 void SwapUVRow_SSSE3(const uint8_t* src_uv, uint8_t* dst_vu, int width); 4824 void SwapUVRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4825 void SwapUVRow_AVX2(const uint8_t* src_uv, uint8_t* dst_vu, int width); 4826 void SwapUVRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4827 void AYUVToYRow_C(const uint8_t* src_ayuv, uint8_t* dst_y, int width); 4828 void AYUVToUVRow_C(const uint8_t* src_ayuv, 4829 int src_stride_ayuv, 4830 uint8_t* dst_uv, 4831 int width); 4832 void AYUVToVURow_C(const uint8_t* src_ayuv, 4833 int src_stride_ayuv, 4834 uint8_t* dst_vu, 4835 int width); 4836 void AYUVToYRow_NEON(const uint8_t* src_ayuv, uint8_t* dst_y, int width); 4837 void AYUVToUVRow_NEON(const uint8_t* src_ayuv, 4838 int src_stride_ayuv, 4839 uint8_t* dst_uv, 4840 int width); 4841 void AYUVToVURow_NEON(const uint8_t* src_ayuv, 4842 int src_stride_ayuv, 4843 uint8_t* dst_vu, 4844 int width); 4845 void AYUVToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 4846 void AYUVToUVRow_Any_NEON(const uint8_t* src_ptr, 4847 int src_stride, 4848 uint8_t* dst_vu, 4849 int width); 4850 void AYUVToVURow_Any_NEON(const uint8_t* src_ptr, 4851 int src_stride, 4852 uint8_t* dst_vu, 4853 int width); 4854 4855 void I422ToYUY2Row_C(const uint8_t* src_y, 4856 const uint8_t* src_u, 4857 const uint8_t* src_v, 4858 uint8_t* dst_frame, 4859 int width); 4860 void I422ToUYVYRow_C(const uint8_t* src_y, 4861 const uint8_t* src_u, 4862 const uint8_t* src_v, 4863 uint8_t* dst_frame, 4864 int width); 4865 void I422ToYUY2Row_SSE2(const uint8_t* src_y, 4866 const uint8_t* src_u, 4867 const uint8_t* src_v, 4868 uint8_t* dst_yuy2, 4869 int width); 4870 void I422ToUYVYRow_SSE2(const uint8_t* src_y, 4871 const uint8_t* src_u, 4872 const uint8_t* src_v, 4873 uint8_t* dst_uyvy, 4874 int width); 4875 void I422ToYUY2Row_Any_SSE2(const uint8_t* y_buf, 4876 const uint8_t* u_buf, 4877 const uint8_t* v_buf, 4878 uint8_t* dst_ptr, 4879 int width); 4880 void I422ToUYVYRow_Any_SSE2(const uint8_t* y_buf, 4881 const uint8_t* u_buf, 4882 const uint8_t* v_buf, 4883 uint8_t* dst_ptr, 4884 int width); 4885 void I422ToYUY2Row_AVX2(const uint8_t* src_y, 4886 const uint8_t* src_u, 4887 const uint8_t* src_v, 4888 uint8_t* dst_yuy2, 4889 int width); 4890 void I422ToUYVYRow_AVX2(const uint8_t* src_y, 4891 const uint8_t* src_u, 4892 const uint8_t* src_v, 4893 uint8_t* dst_uyvy, 4894 int width); 4895 void I422ToYUY2Row_Any_AVX2(const uint8_t* y_buf, 4896 const uint8_t* u_buf, 4897 const uint8_t* v_buf, 4898 uint8_t* dst_ptr, 4899 int width); 4900 void I422ToUYVYRow_Any_AVX2(const uint8_t* y_buf, 4901 const uint8_t* u_buf, 4902 const uint8_t* v_buf, 4903 uint8_t* dst_ptr, 4904 int width); 4905 void I422ToYUY2Row_NEON(const uint8_t* src_y, 4906 const uint8_t* src_u, 4907 const uint8_t* src_v, 4908 uint8_t* dst_yuy2, 4909 int width); 4910 void I422ToUYVYRow_NEON(const uint8_t* src_y, 4911 const uint8_t* src_u, 4912 const uint8_t* src_v, 4913 uint8_t* dst_uyvy, 4914 int width); 4915 void I422ToYUY2Row_Any_NEON(const uint8_t* y_buf, 4916 const uint8_t* u_buf, 4917 const uint8_t* v_buf, 4918 uint8_t* dst_ptr, 4919 int width); 4920 void I422ToUYVYRow_Any_NEON(const uint8_t* y_buf, 4921 const uint8_t* u_buf, 4922 const uint8_t* v_buf, 4923 uint8_t* dst_ptr, 4924 int width); 4925 void I422ToYUY2Row_MSA(const uint8_t* src_y, 4926 const uint8_t* src_u, 4927 const uint8_t* src_v, 4928 uint8_t* dst_yuy2, 4929 int width); 4930 void I422ToYUY2Row_LASX(const uint8_t* src_y, 4931 const uint8_t* src_u, 4932 const uint8_t* src_v, 4933 uint8_t* dst_yuy2, 4934 int width); 4935 void I422ToUYVYRow_MSA(const uint8_t* src_y, 4936 const uint8_t* src_u, 4937 const uint8_t* src_v, 4938 uint8_t* dst_uyvy, 4939 int width); 4940 void I422ToUYVYRow_LASX(const uint8_t* src_y, 4941 const uint8_t* src_u, 4942 const uint8_t* src_v, 4943 uint8_t* dst_uyvy, 4944 int width); 4945 void I422ToYUY2Row_Any_MSA(const uint8_t* y_buf, 4946 const uint8_t* u_buf, 4947 const uint8_t* v_buf, 4948 uint8_t* dst_ptr, 4949 int width); 4950 void I422ToYUY2Row_Any_LASX(const uint8_t* y_buf, 4951 const uint8_t* u_buf, 4952 const uint8_t* v_buf, 4953 uint8_t* dst_ptr, 4954 int width); 4955 void I422ToUYVYRow_Any_MSA(const uint8_t* y_buf, 4956 const uint8_t* u_buf, 4957 const uint8_t* v_buf, 4958 uint8_t* dst_ptr, 4959 int width); 4960 void I422ToUYVYRow_Any_LASX(const uint8_t* y_buf, 4961 const uint8_t* u_buf, 4962 const uint8_t* v_buf, 4963 uint8_t* dst_ptr, 4964 int width); 4965 4966 // Effects related row functions. 4967 void ARGBAttenuateRow_C(const uint8_t* src_argb, uint8_t* dst_argb, int width); 4968 void ARGBAttenuateRow_SSSE3(const uint8_t* src_argb, 4969 uint8_t* dst_argb, 4970 int width); 4971 void ARGBAttenuateRow_AVX2(const uint8_t* src_argb, 4972 uint8_t* dst_argb, 4973 int width); 4974 void ARGBAttenuateRow_NEON(const uint8_t* src_argb, 4975 uint8_t* dst_argb, 4976 int width); 4977 void ARGBAttenuateRow_MSA(const uint8_t* src_argb, 4978 uint8_t* dst_argb, 4979 int width); 4980 void ARGBAttenuateRow_LASX(const uint8_t* src_argb, 4981 uint8_t* dst_argb, 4982 int width); 4983 void ARGBAttenuateRow_Any_SSSE3(const uint8_t* src_ptr, 4984 uint8_t* dst_ptr, 4985 int width); 4986 void ARGBAttenuateRow_Any_AVX2(const uint8_t* src_ptr, 4987 uint8_t* dst_ptr, 4988 int width); 4989 void ARGBAttenuateRow_Any_NEON(const uint8_t* src_ptr, 4990 uint8_t* dst_ptr, 4991 int width); 4992 void ARGBAttenuateRow_Any_MSA(const uint8_t* src_ptr, 4993 uint8_t* dst_ptr, 4994 int width); 4995 void ARGBAttenuateRow_Any_LASX(const uint8_t* src_ptr, 4996 uint8_t* dst_ptr, 4997 int width); 4998 4999 // Inverse table for unattenuate, shared by C and SSE2. 5000 extern const uint32_t fixed_invtbl8[256]; 5001 void ARGBUnattenuateRow_C(const uint8_t* src_argb, 5002 uint8_t* dst_argb, 5003 int width); 5004 void ARGBUnattenuateRow_SSE2(const uint8_t* src_argb, 5005 uint8_t* dst_argb, 5006 int width); 5007 void ARGBUnattenuateRow_AVX2(const uint8_t* src_argb, 5008 uint8_t* dst_argb, 5009 int width); 5010 void ARGBUnattenuateRow_Any_SSE2(const uint8_t* src_ptr, 5011 uint8_t* dst_ptr, 5012 int width); 5013 void ARGBUnattenuateRow_Any_AVX2(const uint8_t* src_ptr, 5014 uint8_t* dst_ptr, 5015 int width); 5016 5017 void ARGBGrayRow_C(const uint8_t* src_argb, uint8_t* dst_argb, int width); 5018 void ARGBGrayRow_SSSE3(const uint8_t* src_argb, uint8_t* dst_argb, int width); 5019 void ARGBGrayRow_NEON(const uint8_t* src_argb, uint8_t* dst_argb, int width); 5020 void ARGBGrayRow_MSA(const uint8_t* src_argb, uint8_t* dst_argb, int width); 5021 void ARGBGrayRow_LASX(const uint8_t* src_argb, uint8_t* dst_argb, int width); 5022 5023 void ARGBSepiaRow_C(uint8_t* dst_argb, int width); 5024 void ARGBSepiaRow_SSSE3(uint8_t* dst_argb, int width); 5025 void ARGBSepiaRow_NEON(uint8_t* dst_argb, int width); 5026 void ARGBSepiaRow_MSA(uint8_t* dst_argb, int width); 5027 void ARGBSepiaRow_LASX(uint8_t* dst_argb, int width); 5028 5029 void ARGBColorMatrixRow_C(const uint8_t* src_argb, 5030 uint8_t* dst_argb, 5031 const int8_t* matrix_argb, 5032 int width); 5033 void ARGBColorMatrixRow_SSSE3(const uint8_t* src_argb, 5034 uint8_t* dst_argb, 5035 const int8_t* matrix_argb, 5036 int width); 5037 void ARGBColorMatrixRow_NEON(const uint8_t* src_argb, 5038 uint8_t* dst_argb, 5039 const int8_t* matrix_argb, 5040 int width); 5041 void ARGBColorMatrixRow_MSA(const uint8_t* src_argb, 5042 uint8_t* dst_argb, 5043 const int8_t* matrix_argb, 5044 int width); 5045 void ARGBColorMatrixRow_LSX(const uint8_t* src_argb, 5046 uint8_t* dst_argb, 5047 const int8_t* matrix_argb, 5048 int width); 5049 5050 void ARGBColorTableRow_C(uint8_t* dst_argb, 5051 const uint8_t* table_argb, 5052 int width); 5053 void ARGBColorTableRow_X86(uint8_t* dst_argb, 5054 const uint8_t* table_argb, 5055 int width); 5056 5057 void RGBColorTableRow_C(uint8_t* dst_argb, 5058 const uint8_t* table_argb, 5059 int width); 5060 void RGBColorTableRow_X86(uint8_t* dst_argb, 5061 const uint8_t* table_argb, 5062 int width); 5063 5064 void ARGBQuantizeRow_C(uint8_t* dst_argb, 5065 int scale, 5066 int interval_size, 5067 int interval_offset, 5068 int width); 5069 void ARGBQuantizeRow_SSE2(uint8_t* dst_argb, 5070 int scale, 5071 int interval_size, 5072 int interval_offset, 5073 int width); 5074 void ARGBQuantizeRow_NEON(uint8_t* dst_argb, 5075 int scale, 5076 int interval_size, 5077 int interval_offset, 5078 int width); 5079 void ARGBQuantizeRow_MSA(uint8_t* dst_argb, 5080 int scale, 5081 int interval_size, 5082 int interval_offset, 5083 int width); 5084 void ARGBQuantizeRow_LSX(uint8_t* dst_argb, 5085 int scale, 5086 int interval_size, 5087 int interval_offset, 5088 int width); 5089 5090 void ARGBShadeRow_C(const uint8_t* src_argb, 5091 uint8_t* dst_argb, 5092 int width, 5093 uint32_t value); 5094 void ARGBShadeRow_SSE2(const uint8_t* src_argb, 5095 uint8_t* dst_argb, 5096 int width, 5097 uint32_t value); 5098 void ARGBShadeRow_NEON(const uint8_t* src_argb, 5099 uint8_t* dst_argb, 5100 int width, 5101 uint32_t value); 5102 void ARGBShadeRow_MSA(const uint8_t* src_argb, 5103 uint8_t* dst_argb, 5104 int width, 5105 uint32_t value); 5106 void ARGBShadeRow_LASX(const uint8_t* src_argb, 5107 uint8_t* dst_argb, 5108 int width, 5109 uint32_t value); 5110 5111 // Used for blur. 5112 void CumulativeSumToAverageRow_SSE2(const int32_t* topleft, 5113 const int32_t* botleft, 5114 int width, 5115 int area, 5116 uint8_t* dst, 5117 int count); 5118 void ComputeCumulativeSumRow_SSE2(const uint8_t* row, 5119 int32_t* cumsum, 5120 const int32_t* previous_cumsum, 5121 int width); 5122 5123 void CumulativeSumToAverageRow_C(const int32_t* tl, 5124 const int32_t* bl, 5125 int w, 5126 int area, 5127 uint8_t* dst, 5128 int count); 5129 void ComputeCumulativeSumRow_C(const uint8_t* row, 5130 int32_t* cumsum, 5131 const int32_t* previous_cumsum, 5132 int width); 5133 5134 LIBYUV_API 5135 void ARGBAffineRow_C(const uint8_t* src_argb, 5136 int src_argb_stride, 5137 uint8_t* dst_argb, 5138 const float* uv_dudv, 5139 int width); 5140 LIBYUV_API 5141 void ARGBAffineRow_SSE2(const uint8_t* src_argb, 5142 int src_argb_stride, 5143 uint8_t* dst_argb, 5144 const float* src_dudv, 5145 int width); 5146 5147 // Used for I420Scale, ARGBScale, and ARGBInterpolate. 5148 void InterpolateRow_C(uint8_t* dst_ptr, 5149 const uint8_t* src_ptr, 5150 ptrdiff_t src_stride, 5151 int width, 5152 int source_y_fraction); 5153 void InterpolateRow_SSSE3(uint8_t* dst_ptr, 5154 const uint8_t* src_ptr, 5155 ptrdiff_t src_stride, 5156 int dst_width, 5157 int source_y_fraction); 5158 void InterpolateRow_AVX2(uint8_t* dst_ptr, 5159 const uint8_t* src_ptr, 5160 ptrdiff_t src_stride, 5161 int dst_width, 5162 int source_y_fraction); 5163 void InterpolateRow_NEON(uint8_t* dst_ptr, 5164 const uint8_t* src_ptr, 5165 ptrdiff_t src_stride, 5166 int dst_width, 5167 int source_y_fraction); 5168 void InterpolateRow_MSA(uint8_t* dst_ptr, 5169 const uint8_t* src_ptr, 5170 ptrdiff_t src_stride, 5171 int width, 5172 int source_y_fraction); 5173 void InterpolateRow_LSX(uint8_t* dst_ptr, 5174 const uint8_t* src_ptr, 5175 ptrdiff_t src_stride, 5176 int width, 5177 int source_y_fraction); 5178 void InterpolateRow_Any_NEON(uint8_t* dst_ptr, 5179 const uint8_t* src_ptr, 5180 ptrdiff_t src_stride_ptr, 5181 int width, 5182 int source_y_fraction); 5183 void InterpolateRow_Any_SSSE3(uint8_t* dst_ptr, 5184 const uint8_t* src_ptr, 5185 ptrdiff_t src_stride_ptr, 5186 int width, 5187 int source_y_fraction); 5188 void InterpolateRow_Any_AVX2(uint8_t* dst_ptr, 5189 const uint8_t* src_ptr, 5190 ptrdiff_t src_stride_ptr, 5191 int width, 5192 int source_y_fraction); 5193 void InterpolateRow_Any_MSA(uint8_t* dst_ptr, 5194 const uint8_t* src_ptr, 5195 ptrdiff_t src_stride_ptr, 5196 int width, 5197 int source_y_fraction); 5198 void InterpolateRow_Any_LSX(uint8_t* dst_ptr, 5199 const uint8_t* src_ptr, 5200 ptrdiff_t src_stride_ptr, 5201 int width, 5202 int source_y_fraction); 5203 5204 void InterpolateRow_16_C(uint16_t* dst_ptr, 5205 const uint16_t* src_ptr, 5206 ptrdiff_t src_stride, 5207 int width, 5208 int source_y_fraction); 5209 void InterpolateRow_16_NEON(uint16_t* dst_ptr, 5210 const uint16_t* src_ptr, 5211 ptrdiff_t src_stride, 5212 int width, 5213 int source_y_fraction); 5214 void InterpolateRow_16_Any_NEON(uint16_t* dst_ptr, 5215 const uint16_t* src_ptr, 5216 ptrdiff_t src_stride, 5217 int width, 5218 int source_y_fraction); 5219 5220 void InterpolateRow_16To8_C(uint8_t* dst_ptr, 5221 const uint16_t* src_ptr, 5222 ptrdiff_t src_stride, 5223 int scale, 5224 int width, 5225 int source_y_fraction); 5226 void InterpolateRow_16To8_NEON(uint8_t* dst_ptr, 5227 const uint16_t* src_ptr, 5228 ptrdiff_t src_stride, 5229 int scale, 5230 int width, 5231 int source_y_fraction); 5232 void InterpolateRow_16To8_Any_NEON(uint8_t* dst_ptr, 5233 const uint16_t* src_ptr, 5234 ptrdiff_t src_stride, 5235 int scale, 5236 int width, 5237 int source_y_fraction); 5238 void InterpolateRow_16To8_AVX2(uint8_t* dst_ptr, 5239 const uint16_t* src_ptr, 5240 ptrdiff_t src_stride, 5241 int scale, 5242 int width, 5243 int source_y_fraction); 5244 void InterpolateRow_16To8_Any_AVX2(uint8_t* dst_ptr, 5245 const uint16_t* src_ptr, 5246 ptrdiff_t src_stride, 5247 int scale, 5248 int width, 5249 int source_y_fraction); 5250 5251 // Sobel images. 5252 void SobelXRow_C(const uint8_t* src_y0, 5253 const uint8_t* src_y1, 5254 const uint8_t* src_y2, 5255 uint8_t* dst_sobelx, 5256 int width); 5257 void SobelXRow_SSE2(const uint8_t* src_y0, 5258 const uint8_t* src_y1, 5259 const uint8_t* src_y2, 5260 uint8_t* dst_sobelx, 5261 int width); 5262 void SobelXRow_NEON(const uint8_t* src_y0, 5263 const uint8_t* src_y1, 5264 const uint8_t* src_y2, 5265 uint8_t* dst_sobelx, 5266 int width); 5267 void SobelXRow_MSA(const uint8_t* src_y0, 5268 const uint8_t* src_y1, 5269 const uint8_t* src_y2, 5270 uint8_t* dst_sobelx, 5271 int width); 5272 void SobelYRow_C(const uint8_t* src_y0, 5273 const uint8_t* src_y1, 5274 uint8_t* dst_sobely, 5275 int width); 5276 void SobelYRow_SSE2(const uint8_t* src_y0, 5277 const uint8_t* src_y1, 5278 uint8_t* dst_sobely, 5279 int width); 5280 void SobelYRow_NEON(const uint8_t* src_y0, 5281 const uint8_t* src_y1, 5282 uint8_t* dst_sobely, 5283 int width); 5284 void SobelYRow_MSA(const uint8_t* src_y0, 5285 const uint8_t* src_y1, 5286 uint8_t* dst_sobely, 5287 int width); 5288 void SobelRow_C(const uint8_t* src_sobelx, 5289 const uint8_t* src_sobely, 5290 uint8_t* dst_argb, 5291 int width); 5292 void SobelRow_SSE2(const uint8_t* src_sobelx, 5293 const uint8_t* src_sobely, 5294 uint8_t* dst_argb, 5295 int width); 5296 void SobelRow_NEON(const uint8_t* src_sobelx, 5297 const uint8_t* src_sobely, 5298 uint8_t* dst_argb, 5299 int width); 5300 void SobelRow_MSA(const uint8_t* src_sobelx, 5301 const uint8_t* src_sobely, 5302 uint8_t* dst_argb, 5303 int width); 5304 void SobelRow_LSX(const uint8_t* src_sobelx, 5305 const uint8_t* src_sobely, 5306 uint8_t* dst_argb, 5307 int width); 5308 void SobelToPlaneRow_C(const uint8_t* src_sobelx, 5309 const uint8_t* src_sobely, 5310 uint8_t* dst_y, 5311 int width); 5312 void SobelToPlaneRow_SSE2(const uint8_t* src_sobelx, 5313 const uint8_t* src_sobely, 5314 uint8_t* dst_y, 5315 int width); 5316 void SobelToPlaneRow_NEON(const uint8_t* src_sobelx, 5317 const uint8_t* src_sobely, 5318 uint8_t* dst_y, 5319 int width); 5320 void SobelToPlaneRow_MSA(const uint8_t* src_sobelx, 5321 const uint8_t* src_sobely, 5322 uint8_t* dst_y, 5323 int width); 5324 void SobelToPlaneRow_LSX(const uint8_t* src_sobelx, 5325 const uint8_t* src_sobely, 5326 uint8_t* dst_y, 5327 int width); 5328 void SobelXYRow_C(const uint8_t* src_sobelx, 5329 const uint8_t* src_sobely, 5330 uint8_t* dst_argb, 5331 int width); 5332 void SobelXYRow_SSE2(const uint8_t* src_sobelx, 5333 const uint8_t* src_sobely, 5334 uint8_t* dst_argb, 5335 int width); 5336 void SobelXYRow_NEON(const uint8_t* src_sobelx, 5337 const uint8_t* src_sobely, 5338 uint8_t* dst_argb, 5339 int width); 5340 void SobelXYRow_MSA(const uint8_t* src_sobelx, 5341 const uint8_t* src_sobely, 5342 uint8_t* dst_argb, 5343 int width); 5344 void SobelXYRow_LSX(const uint8_t* src_sobelx, 5345 const uint8_t* src_sobely, 5346 uint8_t* dst_argb, 5347 int width); 5348 void SobelRow_Any_SSE2(const uint8_t* y_buf, 5349 const uint8_t* uv_buf, 5350 uint8_t* dst_ptr, 5351 int width); 5352 void SobelRow_Any_NEON(const uint8_t* y_buf, 5353 const uint8_t* uv_buf, 5354 uint8_t* dst_ptr, 5355 int width); 5356 void SobelRow_Any_MSA(const uint8_t* y_buf, 5357 const uint8_t* uv_buf, 5358 uint8_t* dst_ptr, 5359 int width); 5360 void SobelRow_Any_LSX(const uint8_t* y_buf, 5361 const uint8_t* uv_buf, 5362 uint8_t* dst_ptr, 5363 int width); 5364 void SobelToPlaneRow_Any_SSE2(const uint8_t* y_buf, 5365 const uint8_t* uv_buf, 5366 uint8_t* dst_ptr, 5367 int width); 5368 void SobelToPlaneRow_Any_NEON(const uint8_t* y_buf, 5369 const uint8_t* uv_buf, 5370 uint8_t* dst_ptr, 5371 int width); 5372 void SobelToPlaneRow_Any_MSA(const uint8_t* y_buf, 5373 const uint8_t* uv_buf, 5374 uint8_t* dst_ptr, 5375 int width); 5376 void SobelToPlaneRow_Any_LSX(const uint8_t* y_buf, 5377 const uint8_t* uv_buf, 5378 uint8_t* dst_ptr, 5379 int width); 5380 void SobelXYRow_Any_SSE2(const uint8_t* y_buf, 5381 const uint8_t* uv_buf, 5382 uint8_t* dst_ptr, 5383 int width); 5384 void SobelXYRow_Any_NEON(const uint8_t* y_buf, 5385 const uint8_t* uv_buf, 5386 uint8_t* dst_ptr, 5387 int width); 5388 void SobelXYRow_Any_MSA(const uint8_t* y_buf, 5389 const uint8_t* uv_buf, 5390 uint8_t* dst_ptr, 5391 int width); 5392 void SobelXYRow_Any_LSX(const uint8_t* y_buf, 5393 const uint8_t* uv_buf, 5394 uint8_t* dst_ptr, 5395 int width); 5396 5397 void ARGBPolynomialRow_C(const uint8_t* src_argb, 5398 uint8_t* dst_argb, 5399 const float* poly, 5400 int width); 5401 void ARGBPolynomialRow_SSE2(const uint8_t* src_argb, 5402 uint8_t* dst_argb, 5403 const float* poly, 5404 int width); 5405 void ARGBPolynomialRow_AVX2(const uint8_t* src_argb, 5406 uint8_t* dst_argb, 5407 const float* poly, 5408 int width); 5409 5410 // Scale and convert to half float. 5411 void HalfFloatRow_C(const uint16_t* src, uint16_t* dst, float scale, int width); 5412 void HalfFloatRow_SSE2(const uint16_t* src, 5413 uint16_t* dst, 5414 float scale, 5415 int width); 5416 void HalfFloatRow_Any_SSE2(const uint16_t* src_ptr, 5417 uint16_t* dst_ptr, 5418 float param, 5419 int width); 5420 void HalfFloatRow_AVX2(const uint16_t* src, 5421 uint16_t* dst, 5422 float scale, 5423 int width); 5424 void HalfFloatRow_Any_AVX2(const uint16_t* src_ptr, 5425 uint16_t* dst_ptr, 5426 float param, 5427 int width); 5428 void HalfFloatRow_F16C(const uint16_t* src, 5429 uint16_t* dst, 5430 float scale, 5431 int width); 5432 void HalfFloatRow_Any_F16C(const uint16_t* src, 5433 uint16_t* dst, 5434 float scale, 5435 int width); 5436 void HalfFloat1Row_F16C(const uint16_t* src, 5437 uint16_t* dst, 5438 float scale, 5439 int width); 5440 void HalfFloat1Row_Any_F16C(const uint16_t* src, 5441 uint16_t* dst, 5442 float scale, 5443 int width); 5444 void HalfFloatRow_NEON(const uint16_t* src, 5445 uint16_t* dst, 5446 float scale, 5447 int width); 5448 void HalfFloatRow_Any_NEON(const uint16_t* src_ptr, 5449 uint16_t* dst_ptr, 5450 float param, 5451 int width); 5452 void HalfFloat1Row_NEON(const uint16_t* src, 5453 uint16_t* dst, 5454 float scale, 5455 int width); 5456 void HalfFloat1Row_Any_NEON(const uint16_t* src_ptr, 5457 uint16_t* dst_ptr, 5458 float param, 5459 int width); 5460 void HalfFloatRow_MSA(const uint16_t* src, 5461 uint16_t* dst, 5462 float scale, 5463 int width); 5464 void HalfFloatRow_Any_MSA(const uint16_t* src_ptr, 5465 uint16_t* dst_ptr, 5466 float param, 5467 int width); 5468 void HalfFloatRow_LSX(const uint16_t* src, 5469 uint16_t* dst, 5470 float scale, 5471 int width); 5472 void HalfFloatRow_Any_LSX(const uint16_t* src_ptr, 5473 uint16_t* dst_ptr, 5474 float param, 5475 int width); 5476 void ByteToFloatRow_C(const uint8_t* src, float* dst, float scale, int width); 5477 void ByteToFloatRow_NEON(const uint8_t* src, 5478 float* dst, 5479 float scale, 5480 int width); 5481 void ByteToFloatRow_Any_NEON(const uint8_t* src_ptr, 5482 float* dst_ptr, 5483 float param, 5484 int width); 5485 5486 void ARGBLumaColorTableRow_C(const uint8_t* src_argb, 5487 uint8_t* dst_argb, 5488 int width, 5489 const uint8_t* luma, 5490 uint32_t lumacoeff); 5491 void ARGBLumaColorTableRow_SSSE3(const uint8_t* src_argb, 5492 uint8_t* dst_argb, 5493 int width, 5494 const uint8_t* luma, 5495 uint32_t lumacoeff); 5496 5497 float ScaleMaxSamples_C(const float* src, float* dst, float scale, int width); 5498 float ScaleMaxSamples_NEON(const float* src, 5499 float* dst, 5500 float scale, 5501 int width); 5502 float ScaleSumSamples_C(const float* src, float* dst, float scale, int width); 5503 float ScaleSumSamples_NEON(const float* src, 5504 float* dst, 5505 float scale, 5506 int width); 5507 void ScaleSamples_C(const float* src, float* dst, float scale, int width); 5508 void ScaleSamples_NEON(const float* src, float* dst, float scale, int width); 5509 5510 void GaussRow_F32_NEON(const float* src, float* dst, int width); 5511 void GaussRow_F32_C(const float* src, float* dst, int width); 5512 5513 void GaussCol_F32_NEON(const float* src0, 5514 const float* src1, 5515 const float* src2, 5516 const float* src3, 5517 const float* src4, 5518 float* dst, 5519 int width); 5520 5521 void GaussCol_F32_C(const float* src0, 5522 const float* src1, 5523 const float* src2, 5524 const float* src3, 5525 const float* src4, 5526 float* dst, 5527 int width); 5528 5529 #ifdef __cplusplus 5530 } // extern "C" 5531 } // namespace libyuv 5532 #endif 5533 5534 #endif // INCLUDE_LIBYUV_ROW_H_ 5535