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_ABGRTOUVROW_SSSE3 78 #define HAS_ABGRTOYROW_SSSE3 79 #define HAS_ARGB1555TOARGBROW_SSE2 80 #define HAS_ARGB4444TOARGBROW_SSE2 81 #define HAS_ARGBEXTRACTALPHAROW_SSE2 82 #define HAS_ARGBSETROW_X86 83 #define HAS_ARGBSHUFFLEROW_SSSE3 84 #define HAS_ARGBTOARGB1555ROW_SSE2 85 #define HAS_ARGBTOARGB4444ROW_SSE2 86 #define HAS_ARGBTORAWROW_SSSE3 87 #define HAS_ARGBTORGB24ROW_SSSE3 88 #define HAS_ARGBTORGB565DITHERROW_SSE2 89 #define HAS_ARGBTORGB565ROW_SSE2 90 #define HAS_ARGBTOUV444ROW_SSSE3 91 #define HAS_ARGBTOUVJROW_SSSE3 92 #define HAS_ARGBTOUVROW_SSSE3 93 #define HAS_ARGBTOYJROW_SSSE3 94 #define HAS_ARGBTOYROW_SSSE3 95 #define HAS_BGRATOUVROW_SSSE3 96 #define HAS_BGRATOYROW_SSSE3 97 #define HAS_COPYROW_ERMS 98 #define HAS_COPYROW_SSE2 99 #define HAS_H422TOARGBROW_SSSE3 100 #define HAS_HALFFLOATROW_SSE2 101 #define HAS_I422TOARGB1555ROW_SSSE3 102 #define HAS_I422TOARGB4444ROW_SSSE3 103 #define HAS_I422TOARGBROW_SSSE3 104 #define HAS_I422TORGB24ROW_SSSE3 105 #define HAS_I422TORGB565ROW_SSSE3 106 #define HAS_I422TORGBAROW_SSSE3 107 #define HAS_I422TOUYVYROW_SSE2 108 #define HAS_I422TOYUY2ROW_SSE2 109 #define HAS_I444TOARGBROW_SSSE3 110 #define HAS_J400TOARGBROW_SSE2 111 #define HAS_J422TOARGBROW_SSSE3 112 #define HAS_MERGEUVROW_SSE2 113 #define HAS_MIRRORROW_SSSE3 114 #define HAS_MIRRORSPLITUVROW_SSSE3 115 #define HAS_NV12TOARGBROW_SSSE3 116 #define HAS_NV12TORGB24ROW_SSSE3 117 #define HAS_NV12TORGB565ROW_SSSE3 118 #define HAS_NV21TOARGBROW_SSSE3 119 #define HAS_NV21TORGB24ROW_SSSE3 120 #define HAS_RAWTOARGBROW_SSSE3 121 #define HAS_RAWTORGB24ROW_SSSE3 122 #define HAS_RAWTOYROW_SSSE3 123 #define HAS_RGB24TOARGBROW_SSSE3 124 #define HAS_RGB24TOYROW_SSSE3 125 #define HAS_RGB24TOYJROW_SSSE3 126 #define HAS_RAWTOYJROW_SSSE3 127 #define HAS_RGB565TOARGBROW_SSE2 128 #define HAS_RGBATOUVROW_SSSE3 129 #define HAS_RGBATOYROW_SSSE3 130 #define HAS_SETROW_ERMS 131 #define HAS_SETROW_X86 132 #define HAS_SPLITUVROW_SSE2 133 #define HAS_UYVYTOARGBROW_SSSE3 134 #define HAS_UYVYTOUV422ROW_SSE2 135 #define HAS_UYVYTOUVROW_SSE2 136 #define HAS_UYVYTOYROW_SSE2 137 #define HAS_YUY2TOARGBROW_SSSE3 138 #define HAS_YUY2TOUV422ROW_SSE2 139 #define HAS_YUY2TOUVROW_SSE2 140 #define HAS_YUY2TOYROW_SSE2 141 142 // Effects: 143 #define HAS_ARGBADDROW_SSE2 144 #define HAS_ARGBAFFINEROW_SSE2 145 #define HAS_ARGBATTENUATEROW_SSSE3 146 #define HAS_ARGBBLENDROW_SSSE3 147 #define HAS_ARGBCOLORMATRIXROW_SSSE3 148 #define HAS_ARGBCOLORTABLEROW_X86 149 #define HAS_ARGBCOPYALPHAROW_SSE2 150 #define HAS_ARGBCOPYYTOALPHAROW_SSE2 151 #define HAS_ARGBGRAYROW_SSSE3 152 #define HAS_ARGBLUMACOLORTABLEROW_SSSE3 153 #define HAS_ARGBMIRRORROW_SSE2 154 #define HAS_ARGBMULTIPLYROW_SSE2 155 #define HAS_ARGBPOLYNOMIALROW_SSE2 156 #define HAS_ARGBQUANTIZEROW_SSE2 157 #define HAS_ARGBSEPIAROW_SSSE3 158 #define HAS_ARGBSHADEROW_SSE2 159 #define HAS_ARGBSUBTRACTROW_SSE2 160 #define HAS_ARGBUNATTENUATEROW_SSE2 161 #define HAS_BLENDPLANEROW_SSSE3 162 #define HAS_COMPUTECUMULATIVESUMROW_SSE2 163 #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2 164 #define HAS_INTERPOLATEROW_SSSE3 165 #define HAS_RGBCOLORTABLEROW_X86 166 #define HAS_SOBELROW_SSE2 167 #define HAS_SOBELTOPLANEROW_SSE2 168 #define HAS_SOBELXROW_SSE2 169 #define HAS_SOBELXYROW_SSE2 170 #define HAS_SOBELYROW_SSE2 171 172 // The following functions fail on gcc/clang 32 bit with fpic and framepointer. 173 // caveat: clangcl uses row_win.cc which works. 174 #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 175 defined(_MSC_VER) 176 // TODO(fbarchard): fix build error on android_full_debug=1 177 // https://code.google.com/p/libyuv/issues/detail?id=517 178 #define HAS_I422ALPHATOARGBROW_SSSE3 179 #endif 180 #endif 181 182 // The following are available on all x86 platforms, but 183 // require VS2012, clang 3.4 or gcc 4.7. 184 #if !defined(LIBYUV_DISABLE_X86) && \ 185 (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \ 186 defined(GCC_HAS_AVX2)) 187 #define HAS_ARGBCOPYALPHAROW_AVX2 188 #define HAS_ARGBCOPYYTOALPHAROW_AVX2 189 #define HAS_ARGBEXTRACTALPHAROW_AVX2 190 #define HAS_ARGBMIRRORROW_AVX2 191 #define HAS_ARGBPOLYNOMIALROW_AVX2 192 #define HAS_ARGBSHUFFLEROW_AVX2 193 #define HAS_ARGBTORGB565DITHERROW_AVX2 194 #define HAS_ARGBTOUVJROW_AVX2 195 #define HAS_ARGBTOUVROW_AVX2 196 #define HAS_ARGBTOYJROW_AVX2 197 #define HAS_ARGBTOYROW_AVX2 198 #define HAS_RGB24TOYJROW_AVX2 199 #define HAS_RAWTOYJROW_AVX2 200 #define HAS_COPYROW_AVX 201 #define HAS_H422TOARGBROW_AVX2 202 #define HAS_HALFFLOATROW_AVX2 203 // #define HAS_HALFFLOATROW_F16C // Enable to test halffloat cast 204 #define HAS_I422TOARGB1555ROW_AVX2 205 #define HAS_I422TOARGB4444ROW_AVX2 206 #define HAS_I422TOARGBROW_AVX2 207 #define HAS_I422TORGB24ROW_AVX2 208 #define HAS_I422TORGB565ROW_AVX2 209 #define HAS_I422TORGBAROW_AVX2 210 #define HAS_I444TOARGBROW_AVX2 211 #define HAS_INTERPOLATEROW_AVX2 212 #define HAS_J422TOARGBROW_AVX2 213 #define HAS_MERGEUVROW_AVX2 214 #define HAS_MIRRORROW_AVX2 215 #define HAS_NV12TOARGBROW_AVX2 216 #define HAS_NV12TORGB24ROW_AVX2 217 #define HAS_NV12TORGB565ROW_AVX2 218 #define HAS_NV21TOARGBROW_AVX2 219 #define HAS_NV21TORGB24ROW_AVX2 220 #define HAS_SPLITUVROW_AVX2 221 #define HAS_UYVYTOARGBROW_AVX2 222 #define HAS_UYVYTOUV422ROW_AVX2 223 #define HAS_UYVYTOUVROW_AVX2 224 #define HAS_UYVYTOYROW_AVX2 225 #define HAS_YUY2TOARGBROW_AVX2 226 #define HAS_YUY2TOUV422ROW_AVX2 227 #define HAS_YUY2TOUVROW_AVX2 228 #define HAS_YUY2TOYROW_AVX2 229 230 // Effects: 231 #define HAS_ARGBADDROW_AVX2 232 #define HAS_ARGBATTENUATEROW_AVX2 233 #define HAS_ARGBMULTIPLYROW_AVX2 234 #define HAS_ARGBSUBTRACTROW_AVX2 235 #define HAS_ARGBUNATTENUATEROW_AVX2 236 #define HAS_BLENDPLANEROW_AVX2 237 238 #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 239 defined(_MSC_VER) 240 // TODO(fbarchard): fix build error on android_full_debug=1 241 // https://code.google.com/p/libyuv/issues/detail?id=517 242 #define HAS_I422ALPHATOARGBROW_AVX2 243 #endif 244 #endif 245 246 // The following are available for AVX2 Visual C and clangcl 32 bit: 247 // TODO(fbarchard): Port to gcc. 248 #if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && defined(_MSC_VER) && \ 249 (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2)) 250 #define HAS_ARGB1555TOARGBROW_AVX2 251 #define HAS_ARGB4444TOARGBROW_AVX2 252 #define HAS_ARGBTOARGB1555ROW_AVX2 253 #define HAS_ARGBTOARGB4444ROW_AVX2 254 #define HAS_ARGBTORGB565ROW_AVX2 255 #define HAS_J400TOARGBROW_AVX2 256 #define HAS_RGB565TOARGBROW_AVX2 257 #endif 258 259 // The following are also available on x64 Visual C. 260 #if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_X64) && \ 261 (!defined(__clang__) || defined(__SSSE3__)) 262 #define HAS_I422ALPHATOARGBROW_SSSE3 263 #define HAS_I422TOARGBROW_SSSE3 264 #endif 265 266 // The following are available for gcc/clang x86 platforms: 267 // TODO(fbarchard): Port to Visual C 268 #if !defined(LIBYUV_DISABLE_X86) && \ 269 (defined(__x86_64__) || (defined(__i386__) && !defined(_MSC_VER))) 270 #define HAS_ABGRTOAR30ROW_SSSE3 271 #define HAS_ARGBTOAR30ROW_SSSE3 272 #define HAS_CONVERT16TO8ROW_SSSE3 273 #define HAS_CONVERT8TO16ROW_SSE2 274 #define HAS_HALFMERGEUVROW_SSSE3 275 #define HAS_I210TOAR30ROW_SSSE3 276 #define HAS_I210TOARGBROW_SSSE3 277 #define HAS_I400TOARGBROW_SSE2 278 #define HAS_I422TOAR30ROW_SSSE3 279 #define HAS_MERGERGBROW_SSSE3 280 #define HAS_MIRRORUVROW_AVX2 281 #define HAS_MIRRORUVROW_SSSE3 282 #define HAS_RAWTORGBAROW_SSSE3 283 #define HAS_RGB24MIRRORROW_SSSE3 284 #define HAS_RGBATOYJROW_SSSE3 285 #define HAS_SPLITRGBROW_SSSE3 286 #define HAS_SWAPUVROW_SSSE3 287 #endif 288 289 // The following are available for AVX2 gcc/clang x86 platforms: 290 // TODO(fbarchard): Port to Visual C 291 #if !defined(LIBYUV_DISABLE_X86) && \ 292 (defined(__x86_64__) || (defined(__i386__) && !defined(_MSC_VER))) && \ 293 (defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) 294 #define HAS_ABGRTOAR30ROW_AVX2 295 #define HAS_ABGRTOUVROW_AVX2 296 #define HAS_ABGRTOYROW_AVX2 297 #define HAS_ARGBTOAR30ROW_AVX2 298 #define HAS_ARGBTORAWROW_AVX2 299 #define HAS_ARGBTORGB24ROW_AVX2 300 #define HAS_CONVERT16TO8ROW_AVX2 301 #define HAS_CONVERT8TO16ROW_AVX2 302 #define HAS_HALFMERGEUVROW_AVX2 303 #define HAS_I210TOAR30ROW_AVX2 304 #define HAS_I210TOARGBROW_AVX2 305 #define HAS_I400TOARGBROW_AVX2 306 #define HAS_I422TOAR30ROW_AVX2 307 #define HAS_I422TOUYVYROW_AVX2 308 #define HAS_I422TOYUY2ROW_AVX2 309 #define HAS_MERGEUVROW_16_AVX2 310 #define HAS_MULTIPLYROW_16_AVX2 311 #define HAS_RGBATOYJROW_AVX2 312 #define HAS_SWAPUVROW_AVX2 313 // TODO(fbarchard): Fix AVX2 version of YUV24 314 // #define HAS_NV21TOYUV24ROW_AVX2 315 #endif 316 317 // The following are available for AVX512 clang x86 platforms: 318 // TODO(fbarchard): Port to GCC and Visual C 319 // TODO(fbarchard): re-enable HAS_ARGBTORGB24ROW_AVX512VBMI. Issue libyuv:789 320 #if !defined(LIBYUV_DISABLE_X86) && \ 321 (defined(__x86_64__) || (defined(__i386__) && !defined(_MSC_VER))) && \ 322 (defined(CLANG_HAS_AVX512)) 323 #define HAS_ARGBTORGB24ROW_AVX512VBMI 324 #endif 325 326 // The following are available on Neon platforms: 327 #if !defined(LIBYUV_DISABLE_NEON) && \ 328 (defined(__aarch64__) || defined(__ARM_NEON__) || defined(LIBYUV_NEON)) 329 #define HAS_ABGRTOUVROW_NEON 330 #define HAS_ABGRTOYROW_NEON 331 #define HAS_ARGB1555TOARGBROW_NEON 332 #define HAS_ARGB1555TOUVROW_NEON 333 #define HAS_ARGB1555TOYROW_NEON 334 #define HAS_ARGB4444TOARGBROW_NEON 335 #define HAS_ARGB4444TOUVROW_NEON 336 #define HAS_ARGB4444TOYROW_NEON 337 #define HAS_ARGBEXTRACTALPHAROW_NEON 338 #define HAS_ARGBSETROW_NEON 339 #define HAS_ARGBTOARGB1555ROW_NEON 340 #define HAS_ARGBTOARGB4444ROW_NEON 341 #define HAS_ARGBTORAWROW_NEON 342 #define HAS_ARGBTORGB24ROW_NEON 343 #define HAS_ARGBTORGB565DITHERROW_NEON 344 #define HAS_ARGBTORGB565ROW_NEON 345 #define HAS_ARGBTOUV444ROW_NEON 346 #define HAS_ARGBTOUVJROW_NEON 347 #define HAS_ARGBTOUVROW_NEON 348 #define HAS_ARGBTOYJROW_NEON 349 #define HAS_ARGBTOYROW_NEON 350 #define HAS_AYUVTOUVROW_NEON 351 #define HAS_AYUVTOVUROW_NEON 352 #define HAS_AYUVTOYROW_NEON 353 #define HAS_BGRATOUVROW_NEON 354 #define HAS_BGRATOYROW_NEON 355 #define HAS_BYTETOFLOATROW_NEON 356 #define HAS_COPYROW_NEON 357 #define HAS_HALFFLOATROW_NEON 358 #define HAS_HALFMERGEUVROW_NEON 359 #define HAS_I400TOARGBROW_NEON 360 #define HAS_I422ALPHATOARGBROW_NEON 361 #define HAS_I422TOARGB1555ROW_NEON 362 #define HAS_I422TOARGB4444ROW_NEON 363 #define HAS_I422TOARGBROW_NEON 364 #define HAS_I422TORGB24ROW_NEON 365 #define HAS_I422TORGB565ROW_NEON 366 #define HAS_I422TORGBAROW_NEON 367 #define HAS_I422TOUYVYROW_NEON 368 #define HAS_I422TOYUY2ROW_NEON 369 #define HAS_I444TOARGBROW_NEON 370 #define HAS_J400TOARGBROW_NEON 371 #define HAS_MERGEUVROW_NEON 372 #define HAS_MIRRORROW_NEON 373 #define HAS_MIRRORUVROW_NEON 374 #define HAS_MIRRORSPLITUVROW_NEON 375 #define HAS_NV12TOARGBROW_NEON 376 #define HAS_NV12TORGB24ROW_NEON 377 #define HAS_NV12TORGB565ROW_NEON 378 #define HAS_NV21TOARGBROW_NEON 379 #define HAS_NV21TORGB24ROW_NEON 380 #define HAS_NV21TOYUV24ROW_NEON 381 #define HAS_RAWTOARGBROW_NEON 382 #define HAS_RAWTORGB24ROW_NEON 383 #define HAS_RAWTORGBAROW_NEON 384 #define HAS_RAWTOUVROW_NEON 385 #define HAS_RAWTOYJROW_NEON 386 #define HAS_RAWTOYROW_NEON 387 #define HAS_RGB24TOARGBROW_NEON 388 #define HAS_RGB24TOUVROW_NEON 389 #define HAS_RGB24TOYJROW_NEON 390 #define HAS_RGB24TOYROW_NEON 391 #define HAS_RGB565TOARGBROW_NEON 392 #define HAS_RGB565TOUVROW_NEON 393 #define HAS_RGB565TOYROW_NEON 394 #define HAS_RGBATOUVROW_NEON 395 #define HAS_RGBATOYJROW_NEON 396 #define HAS_RGBATOYROW_NEON 397 #define HAS_SETROW_NEON 398 #define HAS_SPLITRGBROW_NEON 399 #define HAS_SPLITUVROW_NEON 400 #define HAS_SWAPUVROW_NEON 401 #define HAS_UYVYTOARGBROW_NEON 402 #define HAS_UYVYTOUV422ROW_NEON 403 #define HAS_UYVYTOUVROW_NEON 404 #define HAS_UYVYTOYROW_NEON 405 #define HAS_YUY2TOARGBROW_NEON 406 #define HAS_YUY2TOUV422ROW_NEON 407 #define HAS_YUY2TOUVROW_NEON 408 #define HAS_YUY2TOYROW_NEON 409 410 // Effects: 411 #define HAS_ARGBADDROW_NEON 412 #define HAS_ARGBATTENUATEROW_NEON 413 #define HAS_ARGBBLENDROW_NEON 414 #define HAS_ARGBCOLORMATRIXROW_NEON 415 #define HAS_ARGBGRAYROW_NEON 416 #define HAS_ARGBMIRRORROW_NEON 417 #define HAS_RGB24MIRRORROW_NEON 418 #define HAS_ARGBMULTIPLYROW_NEON 419 #define HAS_ARGBQUANTIZEROW_NEON 420 #define HAS_ARGBSEPIAROW_NEON 421 #define HAS_ARGBSHADEROW_NEON 422 #define HAS_ARGBSHUFFLEROW_NEON 423 #define HAS_ARGBSUBTRACTROW_NEON 424 #define HAS_INTERPOLATEROW_NEON 425 #define HAS_SOBELROW_NEON 426 #define HAS_SOBELTOPLANEROW_NEON 427 #define HAS_SOBELXROW_NEON 428 #define HAS_SOBELXYROW_NEON 429 #define HAS_SOBELYROW_NEON 430 #endif 431 432 // The following are available on AArch64 platforms: 433 #if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__) 434 #define HAS_SCALESUMSAMPLES_NEON 435 #define HAS_GAUSSROW_F32_NEON 436 #define HAS_GAUSSCOL_F32_NEON 437 438 #endif 439 #if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) 440 #define HAS_ABGRTOUVROW_MSA 441 #define HAS_ABGRTOYROW_MSA 442 #define HAS_ARGB1555TOARGBROW_MSA 443 #define HAS_ARGB1555TOUVROW_MSA 444 #define HAS_ARGB1555TOYROW_MSA 445 #define HAS_ARGB4444TOARGBROW_MSA 446 #define HAS_ARGBADDROW_MSA 447 #define HAS_ARGBATTENUATEROW_MSA 448 #define HAS_ARGBBLENDROW_MSA 449 #define HAS_ARGBCOLORMATRIXROW_MSA 450 #define HAS_ARGBEXTRACTALPHAROW_MSA 451 #define HAS_ARGBGRAYROW_MSA 452 #define HAS_ARGBMIRRORROW_MSA 453 #define HAS_ARGBMULTIPLYROW_MSA 454 #define HAS_ARGBQUANTIZEROW_MSA 455 #define HAS_ARGBSEPIAROW_MSA 456 #define HAS_ARGBSETROW_MSA 457 #define HAS_ARGBSHADEROW_MSA 458 #define HAS_ARGBSHUFFLEROW_MSA 459 #define HAS_ARGBSUBTRACTROW_MSA 460 #define HAS_ARGBTOARGB1555ROW_MSA 461 #define HAS_ARGBTOARGB4444ROW_MSA 462 #define HAS_ARGBTORAWROW_MSA 463 #define HAS_ARGBTORGB24ROW_MSA 464 #define HAS_ARGBTORGB565DITHERROW_MSA 465 #define HAS_ARGBTORGB565ROW_MSA 466 #define HAS_ARGBTOUV444ROW_MSA 467 #define HAS_ARGBTOUVJROW_MSA 468 #define HAS_ARGBTOUVROW_MSA 469 #define HAS_ARGBTOYJROW_MSA 470 #define HAS_ARGBTOYROW_MSA 471 #define HAS_BGRATOUVROW_MSA 472 #define HAS_BGRATOYROW_MSA 473 #define HAS_HALFFLOATROW_MSA 474 #define HAS_I400TOARGBROW_MSA 475 #define HAS_I422ALPHATOARGBROW_MSA 476 #define HAS_I422TOARGBROW_MSA 477 #define HAS_I422TORGB24ROW_MSA 478 #define HAS_I422TORGBAROW_MSA 479 #define HAS_I422TOUYVYROW_MSA 480 #define HAS_I422TOYUY2ROW_MSA 481 #define HAS_I444TOARGBROW_MSA 482 #define HAS_I422TOARGB1555ROW_MSA 483 #define HAS_I422TORGB565ROW_MSA 484 #define HAS_INTERPOLATEROW_MSA 485 #define HAS_J400TOARGBROW_MSA 486 #define HAS_MERGEUVROW_MSA 487 #define HAS_MIRRORROW_MSA 488 #define HAS_MIRRORUVROW_MSA 489 #define HAS_MIRRORSPLITUVROW_MSA 490 #define HAS_NV12TOARGBROW_MSA 491 #define HAS_NV12TORGB565ROW_MSA 492 #define HAS_NV21TOARGBROW_MSA 493 #define HAS_RAWTOARGBROW_MSA 494 #define HAS_RAWTORGB24ROW_MSA 495 #define HAS_RAWTOUVROW_MSA 496 #define HAS_RAWTOYROW_MSA 497 #define HAS_RGB24TOARGBROW_MSA 498 #define HAS_RGB24TOUVROW_MSA 499 #define HAS_RGB24TOYROW_MSA 500 #define HAS_RGB565TOARGBROW_MSA 501 #define HAS_RGB565TOUVROW_MSA 502 #define HAS_RGB565TOYROW_MSA 503 #define HAS_RGBATOUVROW_MSA 504 #define HAS_RGBATOYROW_MSA 505 #define HAS_SETROW_MSA 506 #define HAS_SOBELROW_MSA 507 #define HAS_SOBELTOPLANEROW_MSA 508 #define HAS_SOBELXROW_MSA 509 #define HAS_SOBELXYROW_MSA 510 #define HAS_SOBELYROW_MSA 511 #define HAS_SPLITUVROW_MSA 512 #define HAS_UYVYTOARGBROW_MSA 513 #define HAS_UYVYTOUVROW_MSA 514 #define HAS_UYVYTOYROW_MSA 515 #define HAS_YUY2TOARGBROW_MSA 516 #define HAS_YUY2TOUV422ROW_MSA 517 #define HAS_YUY2TOUVROW_MSA 518 #define HAS_YUY2TOYROW_MSA 519 #endif 520 521 #if !defined(LIBYUV_DISABLE_MMI) && defined(_MIPS_ARCH_LOONGSON3A) 522 #define HAS_ABGRTOUVROW_MMI 523 #define HAS_ABGRTOYROW_MMI 524 #define HAS_ARGB1555TOARGBROW_MMI 525 #define HAS_ARGB1555TOUVROW_MMI 526 #define HAS_ARGB1555TOYROW_MMI 527 #define HAS_ARGB4444TOARGBROW_MMI 528 #define HAS_ARGB4444TOUVROW_MMI 529 #define HAS_ARGB4444TOYROW_MMI 530 #define HAS_ARGBADDROW_MMI 531 #define HAS_ARGBATTENUATEROW_MMI 532 #define HAS_ARGBBLENDROW_MMI 533 #define HAS_ARGBCOLORMATRIXROW_MMI 534 #define HAS_ARGBCOPYALPHAROW_MMI 535 #define HAS_ARGBCOPYYTOALPHAROW_MMI 536 #define HAS_ARGBEXTRACTALPHAROW_MMI 537 #define HAS_ARGBGRAYROW_MMI 538 #define HAS_ARGBMIRRORROW_MMI 539 #define HAS_ARGBMULTIPLYROW_MMI 540 #define HAS_ARGBSEPIAROW_MMI 541 #define HAS_ARGBSETROW_MMI 542 #define HAS_ARGBSHADEROW_MMI 543 #define HAS_ARGBSHUFFLEROW_MMI 544 #define HAS_ARGBSUBTRACTROW_MMI 545 #define HAS_ARGBTOARGB1555ROW_MMI 546 #define HAS_ARGBTOARGB4444ROW_MMI 547 #define HAS_ARGBTORAWROW_MMI 548 #define HAS_ARGBTORGB24ROW_MMI 549 #define HAS_ARGBTORGB565DITHERROW_MMI 550 #define HAS_ARGBTORGB565ROW_MMI 551 #define HAS_ARGBTOUV444ROW_MMI 552 #define HAS_ARGBTOUVJROW_MMI 553 #define HAS_ARGBTOUVROW_MMI 554 #define HAS_ARGBTOYJROW_MMI 555 #define HAS_ARGBTOYROW_MMI 556 #define HAS_BGRATOUVROW_MMI 557 #define HAS_BGRATOYROW_MMI 558 #define HAS_BLENDPLANEROW_MMI 559 #define HAS_COMPUTECUMULATIVESUMROW_MMI 560 #define HAS_CUMULATIVESUMTOAVERAGEROW_MMI 561 #define HAS_HALFFLOATROW_MMI 562 #define HAS_I400TOARGBROW_MMI 563 #define HAS_I422TOUYVYROW_MMI 564 #define HAS_I422TOYUY2ROW_MMI 565 #define HAS_I422TOARGBROW_MMI 566 #define HAS_I444TOARGBROW_MMI 567 #define HAS_INTERPOLATEROW_MMI 568 #define HAS_J400TOARGBROW_MMI 569 #define HAS_MERGERGBROW_MMI 570 #define HAS_MERGEUVROW_MMI 571 #define HAS_MIRRORROW_MMI 572 #define HAS_MIRRORSPLITUVROW_MMI 573 #define HAS_RAWTOARGBROW_MMI 574 #define HAS_RAWTORGB24ROW_MMI 575 #define HAS_RAWTOUVROW_MMI 576 #define HAS_RAWTOYROW_MMI 577 #define HAS_RGB24TOARGBROW_MMI 578 #define HAS_RGB24TOUVROW_MMI 579 #define HAS_RGB24TOYROW_MMI 580 #define HAS_RGB565TOARGBROW_MMI 581 #define HAS_RGB565TOUVROW_MMI 582 #define HAS_RGB565TOYROW_MMI 583 #define HAS_RGBATOUVROW_MMI 584 #define HAS_RGBATOYROW_MMI 585 #define HAS_SOBELROW_MMI 586 #define HAS_SOBELTOPLANEROW_MMI 587 #define HAS_SOBELXROW_MMI 588 #define HAS_SOBELXYROW_MMI 589 #define HAS_SOBELYROW_MMI 590 #define HAS_SPLITRGBROW_MMI 591 #define HAS_SPLITUVROW_MMI 592 #define HAS_UYVYTOUVROW_MMI 593 #define HAS_UYVYTOYROW_MMI 594 #define HAS_YUY2TOUV422ROW_MMI 595 #define HAS_YUY2TOUVROW_MMI 596 #define HAS_YUY2TOYROW_MMI 597 #define HAS_I210TOARGBROW_MMI 598 #define HAS_I422TOARGB4444ROW_MMI 599 #define HAS_I422TOARGB1555ROW_MMI 600 #define HAS_I422TORGB565ROW_MMI 601 #define HAS_NV21TORGB24ROW_MMI 602 #define HAS_NV12TORGB24ROW_MMI 603 #define HAS_I422ALPHATOARGBROW_MMI 604 #define HAS_I422TORGB24ROW_MMI 605 #define HAS_NV12TOARGBROW_MMI 606 #define HAS_NV21TOARGBROW_MMI 607 #define HAS_NV12TORGB565ROW_MMI 608 #define HAS_YUY2TOARGBROW_MMI 609 #define HAS_UYVYTOARGBROW_MMI 610 #define HAS_I422TORGBAROW_MMI 611 #endif 612 613 #if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) 614 #if defined(VISUALC_HAS_AVX2) 615 #define SIMD_ALIGNED(var) __declspec(align(32)) var 616 #else 617 #define SIMD_ALIGNED(var) __declspec(align(16)) var 618 #endif 619 typedef __declspec(align(16)) int16_t vec16[8]; 620 typedef __declspec(align(16)) int32_t vec32[4]; 621 typedef __declspec(align(16)) float vecf32[4]; 622 typedef __declspec(align(16)) int8_t vec8[16]; 623 typedef __declspec(align(16)) uint16_t uvec16[8]; 624 typedef __declspec(align(16)) uint32_t uvec32[4]; 625 typedef __declspec(align(16)) uint8_t uvec8[16]; 626 typedef __declspec(align(32)) int16_t lvec16[16]; 627 typedef __declspec(align(32)) int32_t lvec32[8]; 628 typedef __declspec(align(32)) int8_t lvec8[32]; 629 typedef __declspec(align(32)) uint16_t ulvec16[16]; 630 typedef __declspec(align(32)) uint32_t ulvec32[8]; 631 typedef __declspec(align(32)) uint8_t ulvec8[32]; 632 #elif !defined(__pnacl__) && (defined(__GNUC__) || defined(__clang__)) 633 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. 634 #if defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2) 635 #define SIMD_ALIGNED(var) var __attribute__((aligned(32))) 636 #else 637 #define SIMD_ALIGNED(var) var __attribute__((aligned(16))) 638 #endif 639 typedef int16_t __attribute__((vector_size(16))) vec16; 640 typedef int32_t __attribute__((vector_size(16))) vec32; 641 typedef float __attribute__((vector_size(16))) vecf32; 642 typedef int8_t __attribute__((vector_size(16))) vec8; 643 typedef uint16_t __attribute__((vector_size(16))) uvec16; 644 typedef uint32_t __attribute__((vector_size(16))) uvec32; 645 typedef uint8_t __attribute__((vector_size(16))) uvec8; 646 typedef int16_t __attribute__((vector_size(32))) lvec16; 647 typedef int32_t __attribute__((vector_size(32))) lvec32; 648 typedef int8_t __attribute__((vector_size(32))) lvec8; 649 typedef uint16_t __attribute__((vector_size(32))) ulvec16; 650 typedef uint32_t __attribute__((vector_size(32))) ulvec32; 651 typedef uint8_t __attribute__((vector_size(32))) ulvec8; 652 #else 653 #define SIMD_ALIGNED(var) var 654 typedef int16_t vec16[8]; 655 typedef int32_t vec32[4]; 656 typedef float vecf32[4]; 657 typedef int8_t vec8[16]; 658 typedef uint16_t uvec16[8]; 659 typedef uint32_t uvec32[4]; 660 typedef uint8_t uvec8[16]; 661 typedef int16_t lvec16[16]; 662 typedef int32_t lvec32[8]; 663 typedef int8_t lvec8[32]; 664 typedef uint16_t ulvec16[16]; 665 typedef uint32_t ulvec32[8]; 666 typedef uint8_t ulvec8[32]; 667 #endif 668 669 #if defined(__aarch64__) 670 // This struct is for Arm64 color conversion. 671 struct YuvConstants { 672 uvec16 kUVToRB; 673 uvec16 kUVToRB2; 674 uvec16 kUVToG; 675 uvec16 kUVToG2; 676 vec16 kUVBiasBGR; 677 vec32 kYToRgb; 678 }; 679 #elif defined(__arm__) 680 // This struct is for ArmV7 color conversion. 681 struct YuvConstants { 682 uvec8 kUVToRB; 683 uvec8 kUVToG; 684 vec16 kUVBiasBGR; 685 vec32 kYToRgb; 686 }; 687 #else 688 // This struct is for Intel color conversion. 689 struct YuvConstants { 690 int8_t kUVToB[32]; 691 int8_t kUVToG[32]; 692 int8_t kUVToR[32]; 693 int16_t kUVBiasB[16]; 694 int16_t kUVBiasG[16]; 695 int16_t kUVBiasR[16]; 696 int16_t kYToRgb[16]; 697 int16_t kYBiasToRgb[16]; 698 }; 699 700 // Offsets into YuvConstants structure 701 #define KUVTOB 0 702 #define KUVTOG 32 703 #define KUVTOR 64 704 #define KUVBIASB 96 705 #define KUVBIASG 128 706 #define KUVBIASR 160 707 #define KYTORGB 192 708 #define KYBIASTORGB 224 709 710 #endif 711 712 #define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a)-1))) 713 714 #define align_buffer_64(var, size) \ 715 uint8_t* var##_mem = (uint8_t*)(malloc((size) + 63)); /* NOLINT */ \ 716 uint8_t* var = (uint8_t*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ 717 718 #define free_aligned_buffer_64(var) \ 719 free(var##_mem); \ 720 var = 0 721 722 #if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__) 723 #define OMITFP 724 #else 725 #define OMITFP __attribute__((optimize("omit-frame-pointer"))) 726 #endif 727 728 // NaCL macros for GCC x86 and x64. 729 #if defined(__native_client__) 730 #define LABELALIGN ".p2align 5\n" 731 #else 732 #define LABELALIGN 733 #endif 734 735 // Intel Code Analizer markers. Insert IACA_START IACA_END around code to be 736 // measured and then run with iaca -64 libyuv_unittest. 737 // IACA_ASM_START amd IACA_ASM_END are equivalents that can be used within 738 // inline assembly blocks. 739 // example of iaca: 740 // ~/iaca-lin64/bin/iaca.sh -64 -analysis LATENCY out/Release/libyuv_unittest 741 742 #if defined(__x86_64__) || defined(__i386__) 743 744 #define IACA_ASM_START \ 745 ".byte 0x0F, 0x0B\n" \ 746 " movl $111, %%ebx\n" \ 747 ".byte 0x64, 0x67, 0x90\n" 748 749 #define IACA_ASM_END \ 750 " movl $222, %%ebx\n" \ 751 ".byte 0x64, 0x67, 0x90\n" \ 752 ".byte 0x0F, 0x0B\n" 753 754 #define IACA_SSC_MARK(MARK_ID) \ 755 __asm__ __volatile__("\n\t movl $" #MARK_ID \ 756 ", %%ebx" \ 757 "\n\t .byte 0x64, 0x67, 0x90" \ 758 : \ 759 : \ 760 : "memory"); 761 762 #define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); 763 764 #else /* Visual C */ 765 #define IACA_UD_BYTES \ 766 { __asm _emit 0x0F __asm _emit 0x0B } 767 768 #define IACA_SSC_MARK(x) \ 769 { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } 770 771 #define IACA_VC64_START __writegsbyte(111, 111); 772 #define IACA_VC64_END __writegsbyte(222, 222); 773 #endif 774 775 #define IACA_START \ 776 { \ 777 IACA_UD_BYTES \ 778 IACA_SSC_MARK(111) \ 779 } 780 #define IACA_END \ 781 { \ 782 IACA_SSC_MARK(222) \ 783 IACA_UD_BYTES \ 784 } 785 786 void I444ToARGBRow_NEON(const uint8_t* src_y, 787 const uint8_t* src_u, 788 const uint8_t* src_v, 789 uint8_t* dst_argb, 790 const struct YuvConstants* yuvconstants, 791 int width); 792 void I422ToARGBRow_NEON(const uint8_t* src_y, 793 const uint8_t* src_u, 794 const uint8_t* src_v, 795 uint8_t* dst_argb, 796 const struct YuvConstants* yuvconstants, 797 int width); 798 void I422AlphaToARGBRow_NEON(const uint8_t* src_y, 799 const uint8_t* src_u, 800 const uint8_t* src_v, 801 const uint8_t* src_a, 802 uint8_t* dst_argb, 803 const struct YuvConstants* yuvconstants, 804 int width); 805 void I422ToARGBRow_NEON(const uint8_t* src_y, 806 const uint8_t* src_u, 807 const uint8_t* src_v, 808 uint8_t* dst_argb, 809 const struct YuvConstants* yuvconstants, 810 int width); 811 void I422ToRGBARow_NEON(const uint8_t* src_y, 812 const uint8_t* src_u, 813 const uint8_t* src_v, 814 uint8_t* dst_rgba, 815 const struct YuvConstants* yuvconstants, 816 int width); 817 void I422ToRGB24Row_NEON(const uint8_t* src_y, 818 const uint8_t* src_u, 819 const uint8_t* src_v, 820 uint8_t* dst_rgb24, 821 const struct YuvConstants* yuvconstants, 822 int width); 823 void I422ToRGB565Row_NEON(const uint8_t* src_y, 824 const uint8_t* src_u, 825 const uint8_t* src_v, 826 uint8_t* dst_rgb565, 827 const struct YuvConstants* yuvconstants, 828 int width); 829 void I422ToARGB1555Row_NEON(const uint8_t* src_y, 830 const uint8_t* src_u, 831 const uint8_t* src_v, 832 uint8_t* dst_argb1555, 833 const struct YuvConstants* yuvconstants, 834 int width); 835 void I422ToARGB4444Row_NEON(const uint8_t* src_y, 836 const uint8_t* src_u, 837 const uint8_t* src_v, 838 uint8_t* dst_argb4444, 839 const struct YuvConstants* yuvconstants, 840 int width); 841 void NV12ToARGBRow_NEON(const uint8_t* src_y, 842 const uint8_t* src_uv, 843 uint8_t* dst_argb, 844 const struct YuvConstants* yuvconstants, 845 int width); 846 void NV12ToRGB565Row_NEON(const uint8_t* src_y, 847 const uint8_t* src_uv, 848 uint8_t* dst_rgb565, 849 const struct YuvConstants* yuvconstants, 850 int width); 851 void NV21ToARGBRow_NEON(const uint8_t* src_y, 852 const uint8_t* src_vu, 853 uint8_t* dst_argb, 854 const struct YuvConstants* yuvconstants, 855 int width); 856 void NV12ToRGB24Row_NEON(const uint8_t* src_y, 857 const uint8_t* src_uv, 858 uint8_t* dst_rgb24, 859 const struct YuvConstants* yuvconstants, 860 int width); 861 void NV21ToRGB24Row_NEON(const uint8_t* src_y, 862 const uint8_t* src_vu, 863 uint8_t* dst_rgb24, 864 const struct YuvConstants* yuvconstants, 865 int width); 866 void NV21ToYUV24Row_NEON(const uint8_t* src_y, 867 const uint8_t* src_vu, 868 uint8_t* dst_yuv24, 869 int width); 870 void YUY2ToARGBRow_NEON(const uint8_t* src_yuy2, 871 uint8_t* dst_argb, 872 const struct YuvConstants* yuvconstants, 873 int width); 874 void UYVYToARGBRow_NEON(const uint8_t* src_uyvy, 875 uint8_t* dst_argb, 876 const struct YuvConstants* yuvconstants, 877 int width); 878 void I444ToARGBRow_MSA(const uint8_t* src_y, 879 const uint8_t* src_u, 880 const uint8_t* src_v, 881 uint8_t* dst_argb, 882 const struct YuvConstants* yuvconstants, 883 int width); 884 void I444ToARGBRow_MMI(const uint8_t* src_y, 885 const uint8_t* src_u, 886 const uint8_t* src_v, 887 uint8_t* dst_argb, 888 const struct YuvConstants* yuvconstants, 889 int width); 890 891 void I422ToARGBRow_MSA(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 I422ToRGBARow_MSA(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 I422ToARGBRow_MMI(const uint8_t* src_y, 904 const uint8_t* src_u, 905 const uint8_t* src_v, 906 uint8_t* dst_argb, 907 const struct YuvConstants* yuvconstants, 908 int width); 909 void I422AlphaToARGBRow_MSA(const uint8_t* src_y, 910 const uint8_t* src_u, 911 const uint8_t* src_v, 912 const uint8_t* src_a, 913 uint8_t* dst_argb, 914 const struct YuvConstants* yuvconstants, 915 int width); 916 void I422ToRGB24Row_MSA(const uint8_t* src_y, 917 const uint8_t* src_u, 918 const uint8_t* src_v, 919 uint8_t* dst_argb, 920 const struct YuvConstants* yuvconstants, 921 int width); 922 void I422ToRGB565Row_MSA(const uint8_t* src_y, 923 const uint8_t* src_u, 924 const uint8_t* src_v, 925 uint8_t* dst_rgb565, 926 const struct YuvConstants* yuvconstants, 927 int width); 928 void I422ToARGB4444Row_MSA(const uint8_t* src_y, 929 const uint8_t* src_u, 930 const uint8_t* src_v, 931 uint8_t* dst_argb4444, 932 const struct YuvConstants* yuvconstants, 933 int width); 934 void I422ToARGB1555Row_MSA(const uint8_t* src_y, 935 const uint8_t* src_u, 936 const uint8_t* src_v, 937 uint8_t* dst_argb1555, 938 const struct YuvConstants* yuvconstants, 939 int width); 940 void NV12ToARGBRow_MSA(const uint8_t* src_y, 941 const uint8_t* src_uv, 942 uint8_t* dst_argb, 943 const struct YuvConstants* yuvconstants, 944 int width); 945 void NV12ToRGB565Row_MSA(const uint8_t* src_y, 946 const uint8_t* src_uv, 947 uint8_t* dst_rgb565, 948 const struct YuvConstants* yuvconstants, 949 int width); 950 void NV21ToARGBRow_MSA(const uint8_t* src_y, 951 const uint8_t* src_vu, 952 uint8_t* dst_argb, 953 const struct YuvConstants* yuvconstants, 954 int width); 955 void YUY2ToARGBRow_MSA(const uint8_t* src_yuy2, 956 uint8_t* dst_argb, 957 const struct YuvConstants* yuvconstants, 958 int width); 959 void UYVYToARGBRow_MSA(const uint8_t* src_uyvy, 960 uint8_t* dst_argb, 961 const struct YuvConstants* yuvconstants, 962 int width); 963 964 void ARGBToYRow_AVX2(const uint8_t* src_argb, uint8_t* dst_y, int width); 965 void ARGBToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 966 void ABGRToYRow_AVX2(const uint8_t* src_abgr, uint8_t* dst_y, int width); 967 void ABGRToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 968 void ARGBToYRow_SSSE3(const uint8_t* src_argb, uint8_t* dst_y, int width); 969 void ARGBToYJRow_AVX2(const uint8_t* src_argb, uint8_t* dst_y, int width); 970 void ARGBToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 971 void ARGBToYJRow_SSSE3(const uint8_t* src_argb, uint8_t* dst_y, int width); 972 void RGBAToYJRow_AVX2(const uint8_t* src_rgba, uint8_t* dst_y, int width); 973 void RGBAToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 974 void RGBAToYJRow_SSSE3(const uint8_t* src_rgba, uint8_t* dst_y, int width); 975 void BGRAToYRow_SSSE3(const uint8_t* src_bgra, uint8_t* dst_y, int width); 976 void ABGRToYRow_SSSE3(const uint8_t* src_abgr, uint8_t* dst_y, int width); 977 void RGBAToYRow_SSSE3(const uint8_t* src_rgba, uint8_t* dst_y, int width); 978 void RGB24ToYRow_SSSE3(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 979 void RGB24ToYJRow_SSSE3(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 980 void RAWToYRow_SSSE3(const uint8_t* src_raw, uint8_t* dst_y, int width); 981 void RAWToYJRow_SSSE3(const uint8_t* src_raw, uint8_t* dst_y, int width); 982 void RGB24ToYJRow_AVX2(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 983 void RAWToYJRow_AVX2(const uint8_t* src_raw, uint8_t* dst_y, int width); 984 void ARGBToYRow_NEON(const uint8_t* src_argb, uint8_t* dst_y, int width); 985 void ARGBToYJRow_NEON(const uint8_t* src_argb, uint8_t* dst_y, int width); 986 void RGBAToYJRow_NEON(const uint8_t* src_rgba, uint8_t* dst_y, int width); 987 void ARGBToYRow_MSA(const uint8_t* src_argb0, uint8_t* dst_y, int width); 988 void ARGBToYJRow_MSA(const uint8_t* src_argb0, uint8_t* dst_y, int width); 989 void ARGBToYRow_MMI(const uint8_t* src_argb0, uint8_t* dst_y, int width); 990 void ARGBToYJRow_MMI(const uint8_t* src_argb0, uint8_t* dst_y, int width); 991 void ARGBToUV444Row_NEON(const uint8_t* src_argb, 992 uint8_t* dst_u, 993 uint8_t* dst_v, 994 int width); 995 void ARGBToUVRow_NEON(const uint8_t* src_argb, 996 int src_stride_argb, 997 uint8_t* dst_u, 998 uint8_t* dst_v, 999 int width); 1000 void ARGBToUV444Row_MSA(const uint8_t* src_argb, 1001 uint8_t* dst_u, 1002 uint8_t* dst_v, 1003 int width); 1004 void ARGBToUVRow_MSA(const uint8_t* src_argb, 1005 int src_stride_argb, 1006 uint8_t* dst_u, 1007 uint8_t* dst_v, 1008 int width); 1009 void ARGBToUV444Row_MMI(const uint8_t* src_argb, 1010 uint8_t* dst_u, 1011 uint8_t* dst_v, 1012 int width); 1013 void ARGBToUVRow_MMI(const uint8_t* src_argb, 1014 int src_stride_argb, 1015 uint8_t* dst_u, 1016 uint8_t* dst_v, 1017 int width); 1018 void ARGBToUVJRow_NEON(const uint8_t* src_argb, 1019 int src_stride_argb, 1020 uint8_t* dst_u, 1021 uint8_t* dst_v, 1022 int width); 1023 void BGRAToUVRow_NEON(const uint8_t* src_bgra, 1024 int src_stride_bgra, 1025 uint8_t* dst_u, 1026 uint8_t* dst_v, 1027 int width); 1028 void ABGRToUVRow_NEON(const uint8_t* src_abgr, 1029 int src_stride_abgr, 1030 uint8_t* dst_u, 1031 uint8_t* dst_v, 1032 int width); 1033 void RGBAToUVRow_NEON(const uint8_t* src_rgba, 1034 int src_stride_rgba, 1035 uint8_t* dst_u, 1036 uint8_t* dst_v, 1037 int width); 1038 void RGB24ToUVRow_NEON(const uint8_t* src_rgb24, 1039 int src_stride_rgb24, 1040 uint8_t* dst_u, 1041 uint8_t* dst_v, 1042 int width); 1043 void RAWToUVRow_NEON(const uint8_t* src_raw, 1044 int src_stride_raw, 1045 uint8_t* dst_u, 1046 uint8_t* dst_v, 1047 int width); 1048 void RGB565ToUVRow_NEON(const uint8_t* src_rgb565, 1049 int src_stride_rgb565, 1050 uint8_t* dst_u, 1051 uint8_t* dst_v, 1052 int width); 1053 void ARGB1555ToUVRow_NEON(const uint8_t* src_argb1555, 1054 int src_stride_argb1555, 1055 uint8_t* dst_u, 1056 uint8_t* dst_v, 1057 int width); 1058 void ARGB4444ToUVRow_NEON(const uint8_t* src_argb4444, 1059 int src_stride_argb4444, 1060 uint8_t* dst_u, 1061 uint8_t* dst_v, 1062 int width); 1063 void ARGBToUVJRow_MSA(const uint8_t* src_rgb, 1064 int src_stride_rgb, 1065 uint8_t* dst_u, 1066 uint8_t* dst_v, 1067 int width); 1068 void BGRAToUVRow_MSA(const uint8_t* src_rgb, 1069 int src_stride_rgb, 1070 uint8_t* dst_u, 1071 uint8_t* dst_v, 1072 int width); 1073 void ABGRToUVRow_MSA(const uint8_t* src_rgb, 1074 int src_stride_rgb, 1075 uint8_t* dst_u, 1076 uint8_t* dst_v, 1077 int width); 1078 void RGBAToUVRow_MSA(const uint8_t* src_rgb, 1079 int src_stride_rgb, 1080 uint8_t* dst_u, 1081 uint8_t* dst_v, 1082 int width); 1083 void RGB24ToUVRow_MSA(const uint8_t* src_rgb, 1084 int src_stride_rgb, 1085 uint8_t* dst_u, 1086 uint8_t* dst_v, 1087 int width); 1088 void RAWToUVRow_MSA(const uint8_t* src_rgb, 1089 int src_stride_rgb, 1090 uint8_t* dst_u, 1091 uint8_t* dst_v, 1092 int width); 1093 void RGB565ToUVRow_MSA(const uint8_t* src_rgb565, 1094 int src_stride_rgb565, 1095 uint8_t* dst_u, 1096 uint8_t* dst_v, 1097 int width); 1098 void ARGB1555ToUVRow_MSA(const uint8_t* src_argb1555, 1099 int src_stride_argb1555, 1100 uint8_t* dst_u, 1101 uint8_t* dst_v, 1102 int width); 1103 void ARGBToUVJRow_MMI(const uint8_t* src_rgb, 1104 int src_stride_rgb, 1105 uint8_t* dst_u, 1106 uint8_t* dst_v, 1107 int width); 1108 void BGRAToUVRow_MMI(const uint8_t* src_rgb, 1109 int src_stride_rgb, 1110 uint8_t* dst_u, 1111 uint8_t* dst_v, 1112 int width); 1113 void ABGRToUVRow_MMI(const uint8_t* src_rgb, 1114 int src_stride_rgb, 1115 uint8_t* dst_u, 1116 uint8_t* dst_v, 1117 int width); 1118 void RGBAToUVRow_MMI(const uint8_t* src_rgb, 1119 int src_stride_rgb, 1120 uint8_t* dst_u, 1121 uint8_t* dst_v, 1122 int width); 1123 void RGB24ToUVRow_MMI(const uint8_t* src_rgb, 1124 int src_stride_rgb, 1125 uint8_t* dst_u, 1126 uint8_t* dst_v, 1127 int width); 1128 void RAWToUVRow_MMI(const uint8_t* src_rgb, 1129 int src_stride_rgb, 1130 uint8_t* dst_u, 1131 uint8_t* dst_v, 1132 int width); 1133 void RGB565ToUVRow_MMI(const uint8_t* src_rgb565, 1134 int src_stride_rgb565, 1135 uint8_t* dst_u, 1136 uint8_t* dst_v, 1137 int width); 1138 void ARGB1555ToUVRow_MMI(const uint8_t* src_argb1555, 1139 int src_stride_argb1555, 1140 uint8_t* dst_u, 1141 uint8_t* dst_v, 1142 int width); 1143 void ARGB4444ToUVRow_MMI(const uint8_t* src_argb4444, 1144 int src_stride_argb4444, 1145 uint8_t* dst_u, 1146 uint8_t* dst_v, 1147 int width); 1148 void BGRAToYRow_NEON(const uint8_t* src_bgra, uint8_t* dst_y, int width); 1149 void ABGRToYRow_NEON(const uint8_t* src_abgr, uint8_t* dst_y, int width); 1150 void RGBAToYRow_NEON(const uint8_t* src_rgba, uint8_t* dst_y, int width); 1151 void RGB24ToYRow_NEON(const uint8_t* src_rgb24, uint8_t* dst_y, int width); 1152 void RGB24ToYJRow_NEON(const uint8_t* src_rgb24, uint8_t* dst_yj, int width); 1153 void RAWToYRow_NEON(const uint8_t* src_raw, uint8_t* dst_y, int width); 1154 void RAWToYJRow_NEON(const uint8_t* src_raw, uint8_t* dst_yj, int width); 1155 void RGB565ToYRow_NEON(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1156 void ARGB1555ToYRow_NEON(const uint8_t* src_argb1555, 1157 uint8_t* dst_y, 1158 int width); 1159 void ARGB4444ToYRow_NEON(const uint8_t* src_argb4444, 1160 uint8_t* dst_y, 1161 int width); 1162 void BGRAToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1163 void ABGRToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1164 void RGBAToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1165 void RGB24ToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1166 void RAWToYRow_MSA(const uint8_t* src_argb, uint8_t* dst_y, int width); 1167 void RGB565ToYRow_MSA(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1168 void ARGB1555ToYRow_MSA(const uint8_t* src_argb1555, uint8_t* dst_y, int width); 1169 void BGRAToYRow_MMI(const uint8_t* src_argb, uint8_t* dst_y, int width); 1170 void ABGRToYRow_MMI(const uint8_t* src_argb, uint8_t* dst_y, int width); 1171 void RGBAToYRow_MMI(const uint8_t* src_argb, uint8_t* dst_y, int width); 1172 void RGB24ToYRow_MMI(const uint8_t* src_argb, uint8_t* dst_y, int width); 1173 void RAWToYRow_MMI(const uint8_t* src_argb, uint8_t* dst_y, int width); 1174 void RGB565ToYRow_MMI(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1175 void ARGB1555ToYRow_MMI(const uint8_t* src_argb1555, uint8_t* dst_y, int width); 1176 void ARGB4444ToYRow_MMI(const uint8_t* src_argb4444, uint8_t* dst_y, int width); 1177 1178 void ARGBToYRow_C(const uint8_t* src_argb, uint8_t* dst_y, int width); 1179 void ARGBToYJRow_C(const uint8_t* src_argb, uint8_t* dst_y, int width); 1180 void RGBAToYJRow_C(const uint8_t* src_argb0, uint8_t* dst_y, int width); 1181 void BGRAToYRow_C(const uint8_t* src_argb, uint8_t* dst_y, int width); 1182 void ABGRToYRow_C(const uint8_t* src_argb, uint8_t* dst_y, int width); 1183 void RGBAToYRow_C(const uint8_t* src_argb, uint8_t* dst_y, int width); 1184 void RGB24ToYRow_C(const uint8_t* src_argb, uint8_t* dst_y, int width); 1185 void RGB24ToYJRow_C(const uint8_t* src_argb, uint8_t* dst_yj, int width); 1186 void RAWToYRow_C(const uint8_t* src_argb, uint8_t* dst_y, int width); 1187 void RAWToYJRow_C(const uint8_t* src_argb, uint8_t* dst_yj, int width); 1188 void RGB565ToYRow_C(const uint8_t* src_rgb565, uint8_t* dst_y, int width); 1189 void ARGB1555ToYRow_C(const uint8_t* src_argb1555, uint8_t* dst_y, int width); 1190 void ARGB4444ToYRow_C(const uint8_t* src_argb4444, uint8_t* dst_y, int width); 1191 void ARGBToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1192 void ARGBToYJRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1193 void RGBAToYJRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1194 void BGRAToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1195 void ABGRToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1196 void RGBAToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1197 void RGB24ToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1198 void RGB24ToYJRow_Any_SSSE3(const uint8_t* src_ptr, 1199 uint8_t* dst_ptr, 1200 int width); 1201 void RAWToYRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1202 void RAWToYJRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1203 void RGB24ToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1204 void RAWToYJRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1205 void ARGBToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1206 void ARGBToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1207 void RGBAToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1208 void BGRAToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1209 void ABGRToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1210 void RGBAToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1211 void RGB24ToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1212 void RGB24ToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1213 void RAWToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1214 void RAWToYJRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1215 void RGB565ToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1216 void ARGB1555ToYRow_Any_NEON(const uint8_t* src_ptr, 1217 uint8_t* dst_ptr, 1218 int width); 1219 void ARGB4444ToYRow_Any_NEON(const uint8_t* src_ptr, 1220 uint8_t* dst_ptr, 1221 int width); 1222 void BGRAToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1223 void ABGRToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1224 void RGBAToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1225 void ARGBToYJRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1226 void ARGBToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1227 void RGB24ToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1228 void RAWToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1229 void RGB565ToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1230 void ARGB1555ToYRow_Any_MSA(const uint8_t* src_ptr, 1231 uint8_t* dst_ptr, 1232 int width); 1233 void BGRAToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1234 void ABGRToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1235 void RGBAToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1236 void ARGBToYJRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1237 void ARGBToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1238 void RGB24ToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1239 void RAWToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1240 void RGB565ToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1241 void ARGB1555ToYRow_Any_MMI(const uint8_t* src_ptr, 1242 uint8_t* dst_ptr, 1243 int width); 1244 void ARGB4444ToYRow_Any_MMI(const uint8_t* src_ptr, 1245 uint8_t* dst_ptr, 1246 int width); 1247 1248 void ARGBToUVRow_AVX2(const uint8_t* src_argb, 1249 int src_stride_argb, 1250 uint8_t* dst_u, 1251 uint8_t* dst_v, 1252 int width); 1253 void ABGRToUVRow_AVX2(const uint8_t* src_abgr, 1254 int src_stride_abgr, 1255 uint8_t* dst_u, 1256 uint8_t* dst_v, 1257 int width); 1258 void ARGBToUVJRow_AVX2(const uint8_t* src_argb, 1259 int src_stride_argb, 1260 uint8_t* dst_u, 1261 uint8_t* dst_v, 1262 int width); 1263 void ARGBToUVRow_SSSE3(const uint8_t* src_argb, 1264 int src_stride_argb, 1265 uint8_t* dst_u, 1266 uint8_t* dst_v, 1267 int width); 1268 void ARGBToUVJRow_SSSE3(const uint8_t* src_argb, 1269 int src_stride_argb, 1270 uint8_t* dst_u, 1271 uint8_t* dst_v, 1272 int width); 1273 void BGRAToUVRow_SSSE3(const uint8_t* src_bgra, 1274 int src_stride_bgra, 1275 uint8_t* dst_u, 1276 uint8_t* dst_v, 1277 int width); 1278 void ABGRToUVRow_SSSE3(const uint8_t* src_abgr, 1279 int src_stride_abgr, 1280 uint8_t* dst_u, 1281 uint8_t* dst_v, 1282 int width); 1283 void RGBAToUVRow_SSSE3(const uint8_t* src_rgba, 1284 int src_stride_rgba, 1285 uint8_t* dst_u, 1286 uint8_t* dst_v, 1287 int width); 1288 void ARGBToUVRow_Any_AVX2(const uint8_t* src_ptr, 1289 int src_stride_ptr, 1290 uint8_t* dst_u, 1291 uint8_t* dst_v, 1292 int width); 1293 void ABGRToUVRow_Any_AVX2(const uint8_t* src_ptr, 1294 int src_stride_ptr, 1295 uint8_t* dst_u, 1296 uint8_t* dst_v, 1297 int width); 1298 void ARGBToUVJRow_Any_AVX2(const uint8_t* src_ptr, 1299 int src_stride_ptr, 1300 uint8_t* dst_u, 1301 uint8_t* dst_v, 1302 int width); 1303 void ARGBToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1304 int src_stride_ptr, 1305 uint8_t* dst_u, 1306 uint8_t* dst_v, 1307 int width); 1308 void ARGBToUVJRow_Any_SSSE3(const uint8_t* src_ptr, 1309 int src_stride_ptr, 1310 uint8_t* dst_u, 1311 uint8_t* dst_v, 1312 int width); 1313 void BGRAToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1314 int src_stride_ptr, 1315 uint8_t* dst_u, 1316 uint8_t* dst_v, 1317 int width); 1318 void ABGRToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1319 int src_stride_ptr, 1320 uint8_t* dst_u, 1321 uint8_t* dst_v, 1322 int width); 1323 void RGBAToUVRow_Any_SSSE3(const uint8_t* src_ptr, 1324 int src_stride_ptr, 1325 uint8_t* dst_u, 1326 uint8_t* dst_v, 1327 int width); 1328 void ARGBToUV444Row_Any_NEON(const uint8_t* src_ptr, 1329 uint8_t* dst_u, 1330 uint8_t* dst_v, 1331 int width); 1332 void ARGBToUVRow_Any_NEON(const uint8_t* src_ptr, 1333 int src_stride_ptr, 1334 uint8_t* dst_u, 1335 uint8_t* dst_v, 1336 int width); 1337 void ARGBToUV444Row_Any_MSA(const uint8_t* src_ptr, 1338 uint8_t* dst_u, 1339 uint8_t* dst_v, 1340 int width); 1341 void ARGBToUVRow_Any_MSA(const uint8_t* src_ptr, 1342 int src_stride_ptr, 1343 uint8_t* dst_u, 1344 uint8_t* dst_v, 1345 int width); 1346 void ARGBToUV444Row_Any_MMI(const uint8_t* src_ptr, 1347 uint8_t* dst_u, 1348 uint8_t* dst_v, 1349 int width); 1350 void ARGBToUVRow_Any_MMI(const uint8_t* src_ptr, 1351 int src_stride_ptr, 1352 uint8_t* dst_u, 1353 uint8_t* dst_v, 1354 int width); 1355 void ARGBToUVJRow_Any_NEON(const uint8_t* src_ptr, 1356 int src_stride_ptr, 1357 uint8_t* dst_u, 1358 uint8_t* dst_v, 1359 int width); 1360 void BGRAToUVRow_Any_NEON(const uint8_t* src_ptr, 1361 int src_stride_ptr, 1362 uint8_t* dst_u, 1363 uint8_t* dst_v, 1364 int width); 1365 void ABGRToUVRow_Any_NEON(const uint8_t* src_ptr, 1366 int src_stride_ptr, 1367 uint8_t* dst_u, 1368 uint8_t* dst_v, 1369 int width); 1370 void RGBAToUVRow_Any_NEON(const uint8_t* src_ptr, 1371 int src_stride_ptr, 1372 uint8_t* dst_u, 1373 uint8_t* dst_v, 1374 int width); 1375 void RGB24ToUVRow_Any_NEON(const uint8_t* src_ptr, 1376 int src_stride_ptr, 1377 uint8_t* dst_u, 1378 uint8_t* dst_v, 1379 int width); 1380 void RAWToUVRow_Any_NEON(const uint8_t* src_ptr, 1381 int src_stride_ptr, 1382 uint8_t* dst_u, 1383 uint8_t* dst_v, 1384 int width); 1385 void RGB565ToUVRow_Any_NEON(const uint8_t* src_ptr, 1386 int src_stride_ptr, 1387 uint8_t* dst_u, 1388 uint8_t* dst_v, 1389 int width); 1390 void ARGB1555ToUVRow_Any_NEON(const uint8_t* src_ptr, 1391 int src_stride_ptr, 1392 uint8_t* dst_u, 1393 uint8_t* dst_v, 1394 int width); 1395 void ARGB4444ToUVRow_Any_NEON(const uint8_t* src_ptr, 1396 int src_stride_ptr, 1397 uint8_t* dst_u, 1398 uint8_t* dst_v, 1399 int width); 1400 void ARGBToUVJRow_Any_MSA(const uint8_t* src_ptr, 1401 int src_stride_ptr, 1402 uint8_t* dst_u, 1403 uint8_t* dst_v, 1404 int width); 1405 void BGRAToUVRow_Any_MSA(const uint8_t* src_ptr, 1406 int src_stride_ptr, 1407 uint8_t* dst_u, 1408 uint8_t* dst_v, 1409 int width); 1410 void ABGRToUVRow_Any_MSA(const uint8_t* src_ptr, 1411 int src_stride_ptr, 1412 uint8_t* dst_u, 1413 uint8_t* dst_v, 1414 int width); 1415 void RGBAToUVRow_Any_MSA(const uint8_t* src_ptr, 1416 int src_stride_ptr, 1417 uint8_t* dst_u, 1418 uint8_t* dst_v, 1419 int width); 1420 void RGB24ToUVRow_Any_MSA(const uint8_t* src_ptr, 1421 int src_stride_ptr, 1422 uint8_t* dst_u, 1423 uint8_t* dst_v, 1424 int width); 1425 void RAWToUVRow_Any_MSA(const uint8_t* src_ptr, 1426 int src_stride_ptr, 1427 uint8_t* dst_u, 1428 uint8_t* dst_v, 1429 int width); 1430 void RGB565ToUVRow_Any_MSA(const uint8_t* src_ptr, 1431 int src_stride_ptr, 1432 uint8_t* dst_u, 1433 uint8_t* dst_v, 1434 int width); 1435 void ARGB1555ToUVRow_Any_MSA(const uint8_t* src_ptr, 1436 int src_stride_ptr, 1437 uint8_t* dst_u, 1438 uint8_t* dst_v, 1439 int width); 1440 void ARGBToUVJRow_Any_MMI(const uint8_t* src_ptr, 1441 int src_stride_ptr, 1442 uint8_t* dst_u, 1443 uint8_t* dst_v, 1444 int width); 1445 void BGRAToUVRow_Any_MMI(const uint8_t* src_ptr, 1446 int src_stride_ptr, 1447 uint8_t* dst_u, 1448 uint8_t* dst_v, 1449 int width); 1450 void ABGRToUVRow_Any_MMI(const uint8_t* src_ptr, 1451 int src_stride_ptr, 1452 uint8_t* dst_u, 1453 uint8_t* dst_v, 1454 int width); 1455 void RGBAToUVRow_Any_MMI(const uint8_t* src_ptr, 1456 int src_stride_ptr, 1457 uint8_t* dst_u, 1458 uint8_t* dst_v, 1459 int width); 1460 void RGB24ToUVRow_Any_MMI(const uint8_t* src_ptr, 1461 int src_stride_ptr, 1462 uint8_t* dst_u, 1463 uint8_t* dst_v, 1464 int width); 1465 void RAWToUVRow_Any_MMI(const uint8_t* src_ptr, 1466 int src_stride_ptr, 1467 uint8_t* dst_u, 1468 uint8_t* dst_v, 1469 int width); 1470 void RGB565ToUVRow_Any_MMI(const uint8_t* src_ptr, 1471 int src_stride_ptr, 1472 uint8_t* dst_u, 1473 uint8_t* dst_v, 1474 int width); 1475 void ARGB1555ToUVRow_Any_MMI(const uint8_t* src_ptr, 1476 int src_stride_ptr, 1477 uint8_t* dst_u, 1478 uint8_t* dst_v, 1479 int width); 1480 void ARGB4444ToUVRow_Any_MMI(const uint8_t* src_ptr, 1481 int src_stride_ptr, 1482 uint8_t* dst_u, 1483 uint8_t* dst_v, 1484 int width); 1485 void ARGBToUVRow_C(const uint8_t* src_rgb, 1486 int src_stride_rgb, 1487 uint8_t* dst_u, 1488 uint8_t* dst_v, 1489 int width); 1490 void ARGBToUVJRow_C(const uint8_t* src_rgb, 1491 int src_stride_rgb, 1492 uint8_t* dst_u, 1493 uint8_t* dst_v, 1494 int width); 1495 void ARGBToUVRow_C(const uint8_t* src_rgb, 1496 int src_stride_rgb, 1497 uint8_t* dst_u, 1498 uint8_t* dst_v, 1499 int width); 1500 void ARGBToUVJRow_C(const uint8_t* src_rgb, 1501 int src_stride_rgb, 1502 uint8_t* dst_u, 1503 uint8_t* dst_v, 1504 int width); 1505 void BGRAToUVRow_C(const uint8_t* src_rgb, 1506 int src_stride_rgb, 1507 uint8_t* dst_u, 1508 uint8_t* dst_v, 1509 int width); 1510 void ABGRToUVRow_C(const uint8_t* src_rgb, 1511 int src_stride_rgb, 1512 uint8_t* dst_u, 1513 uint8_t* dst_v, 1514 int width); 1515 void RGBAToUVRow_C(const uint8_t* src_rgb, 1516 int src_stride_rgb, 1517 uint8_t* dst_u, 1518 uint8_t* dst_v, 1519 int width); 1520 void RGB24ToUVRow_C(const uint8_t* src_rgb, 1521 int src_stride_rgb, 1522 uint8_t* dst_u, 1523 uint8_t* dst_v, 1524 int width); 1525 void RAWToUVRow_C(const uint8_t* src_rgb, 1526 int src_stride_rgb, 1527 uint8_t* dst_u, 1528 uint8_t* dst_v, 1529 int width); 1530 void RGB565ToUVRow_C(const uint8_t* src_rgb565, 1531 int src_stride_rgb565, 1532 uint8_t* dst_u, 1533 uint8_t* dst_v, 1534 int width); 1535 void ARGB1555ToUVRow_C(const uint8_t* src_argb1555, 1536 int src_stride_argb1555, 1537 uint8_t* dst_u, 1538 uint8_t* dst_v, 1539 int width); 1540 void ARGB4444ToUVRow_C(const uint8_t* src_argb4444, 1541 int src_stride_argb4444, 1542 uint8_t* dst_u, 1543 uint8_t* dst_v, 1544 int width); 1545 1546 void ARGBToUV444Row_SSSE3(const uint8_t* src_argb, 1547 uint8_t* dst_u, 1548 uint8_t* dst_v, 1549 int width); 1550 void ARGBToUV444Row_Any_SSSE3(const uint8_t* src_ptr, 1551 uint8_t* dst_u, 1552 uint8_t* dst_v, 1553 int width); 1554 1555 void ARGBToUV444Row_C(const uint8_t* src_argb, 1556 uint8_t* dst_u, 1557 uint8_t* dst_v, 1558 int width); 1559 1560 void MirrorRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 1561 void MirrorRow_SSSE3(const uint8_t* src, uint8_t* dst, int width); 1562 void MirrorRow_NEON(const uint8_t* src, uint8_t* dst, int width); 1563 void MirrorRow_MSA(const uint8_t* src, uint8_t* dst, int width); 1564 void MirrorRow_MMI(const uint8_t* src, uint8_t* dst, int width); 1565 void MirrorRow_C(const uint8_t* src, uint8_t* dst, int width); 1566 void MirrorRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1567 void MirrorRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1568 void MirrorRow_Any_SSE2(const uint8_t* src, uint8_t* dst, int width); 1569 void MirrorRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1570 void MirrorRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1571 void MirrorRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1572 void MirrorUVRow_AVX2(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1573 void MirrorUVRow_SSSE3(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1574 void MirrorUVRow_NEON(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1575 void MirrorUVRow_MSA(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1576 void MirrorUVRow_C(const uint8_t* src_uv, uint8_t* dst_uv, int width); 1577 void MirrorUVRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1578 void MirrorUVRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1579 void MirrorUVRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1580 void MirrorUVRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1581 1582 void MirrorSplitUVRow_SSSE3(const uint8_t* src, 1583 uint8_t* dst_u, 1584 uint8_t* dst_v, 1585 int width); 1586 void MirrorSplitUVRow_NEON(const uint8_t* src_uv, 1587 uint8_t* dst_u, 1588 uint8_t* dst_v, 1589 int width); 1590 void MirrorSplitUVRow_MSA(const uint8_t* src_uv, 1591 uint8_t* dst_u, 1592 uint8_t* dst_v, 1593 int width); 1594 void MirrorSplitUVRow_MMI(const uint8_t* src_uv, 1595 uint8_t* dst_u, 1596 uint8_t* dst_v, 1597 int width); 1598 void MirrorSplitUVRow_C(const uint8_t* src_uv, 1599 uint8_t* dst_u, 1600 uint8_t* dst_v, 1601 int width); 1602 1603 void ARGBMirrorRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 1604 void ARGBMirrorRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 1605 void ARGBMirrorRow_NEON(const uint8_t* src, uint8_t* dst, int width); 1606 void ARGBMirrorRow_MSA(const uint8_t* src, uint8_t* dst, int width); 1607 void ARGBMirrorRow_MMI(const uint8_t* src, uint8_t* dst, int width); 1608 void ARGBMirrorRow_C(const uint8_t* src, uint8_t* dst, int width); 1609 void ARGBMirrorRow_Any_AVX2(const uint8_t* src_ptr, 1610 uint8_t* dst_ptr, 1611 int width); 1612 void ARGBMirrorRow_Any_SSE2(const uint8_t* src_ptr, 1613 uint8_t* dst_ptr, 1614 int width); 1615 void ARGBMirrorRow_Any_NEON(const uint8_t* src_ptr, 1616 uint8_t* dst_ptr, 1617 int width); 1618 void ARGBMirrorRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1619 void ARGBMirrorRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1620 1621 void RGB24MirrorRow_SSSE3(const uint8_t* src, uint8_t* dst, int width); 1622 void RGB24MirrorRow_NEON(const uint8_t* src, uint8_t* dst, int width); 1623 void RGB24MirrorRow_C(const uint8_t* src, uint8_t* dst, int width); 1624 void RGB24MirrorRow_Any_SSSE3(const uint8_t* src_ptr, 1625 uint8_t* dst_ptr, 1626 int width); 1627 void RGB24MirrorRow_Any_NEON(const uint8_t* src_ptr, 1628 uint8_t* dst_ptr, 1629 int width); 1630 1631 void SplitUVRow_C(const uint8_t* src_uv, 1632 uint8_t* dst_u, 1633 uint8_t* dst_v, 1634 int width); 1635 void SplitUVRow_SSE2(const uint8_t* src_uv, 1636 uint8_t* dst_u, 1637 uint8_t* dst_v, 1638 int width); 1639 void SplitUVRow_AVX2(const uint8_t* src_uv, 1640 uint8_t* dst_u, 1641 uint8_t* dst_v, 1642 int width); 1643 void SplitUVRow_NEON(const uint8_t* src_uv, 1644 uint8_t* dst_u, 1645 uint8_t* dst_v, 1646 int width); 1647 void SplitUVRow_MSA(const uint8_t* src_uv, 1648 uint8_t* dst_u, 1649 uint8_t* dst_v, 1650 int width); 1651 void SplitUVRow_MMI(const uint8_t* src_uv, 1652 uint8_t* dst_u, 1653 uint8_t* dst_v, 1654 int width); 1655 void SplitUVRow_Any_SSE2(const uint8_t* src_ptr, 1656 uint8_t* dst_u, 1657 uint8_t* dst_v, 1658 int width); 1659 void SplitUVRow_Any_AVX2(const uint8_t* src_ptr, 1660 uint8_t* dst_u, 1661 uint8_t* dst_v, 1662 int width); 1663 void SplitUVRow_Any_NEON(const uint8_t* src_ptr, 1664 uint8_t* dst_u, 1665 uint8_t* dst_v, 1666 int width); 1667 void SplitUVRow_Any_MSA(const uint8_t* src_ptr, 1668 uint8_t* dst_u, 1669 uint8_t* dst_v, 1670 int width); 1671 void SplitUVRow_Any_MMI(const uint8_t* src_ptr, 1672 uint8_t* dst_u, 1673 uint8_t* dst_v, 1674 int width); 1675 1676 void MergeUVRow_C(const uint8_t* src_u, 1677 const uint8_t* src_v, 1678 uint8_t* dst_uv, 1679 int width); 1680 void MergeUVRow_SSE2(const uint8_t* src_u, 1681 const uint8_t* src_v, 1682 uint8_t* dst_uv, 1683 int width); 1684 void MergeUVRow_AVX2(const uint8_t* src_u, 1685 const uint8_t* src_v, 1686 uint8_t* dst_uv, 1687 int width); 1688 void MergeUVRow_NEON(const uint8_t* src_u, 1689 const uint8_t* src_v, 1690 uint8_t* dst_uv, 1691 int width); 1692 void MergeUVRow_MSA(const uint8_t* src_u, 1693 const uint8_t* src_v, 1694 uint8_t* dst_uv, 1695 int width); 1696 void MergeUVRow_MMI(const uint8_t* src_u, 1697 const uint8_t* src_v, 1698 uint8_t* dst_uv, 1699 int width); 1700 void MergeUVRow_Any_SSE2(const uint8_t* y_buf, 1701 const uint8_t* uv_buf, 1702 uint8_t* dst_ptr, 1703 int width); 1704 void MergeUVRow_Any_AVX2(const uint8_t* y_buf, 1705 const uint8_t* uv_buf, 1706 uint8_t* dst_ptr, 1707 int width); 1708 void MergeUVRow_Any_NEON(const uint8_t* y_buf, 1709 const uint8_t* uv_buf, 1710 uint8_t* dst_ptr, 1711 int width); 1712 void MergeUVRow_Any_MSA(const uint8_t* y_buf, 1713 const uint8_t* uv_buf, 1714 uint8_t* dst_ptr, 1715 int width); 1716 void MergeUVRow_Any_MMI(const uint8_t* y_buf, 1717 const uint8_t* uv_buf, 1718 uint8_t* dst_ptr, 1719 int width); 1720 1721 void HalfMergeUVRow_C(const uint8_t* src_u, 1722 int src_stride_u, 1723 const uint8_t* src_v, 1724 int src_stride_v, 1725 uint8_t* dst_uv, 1726 int width); 1727 1728 void HalfMergeUVRow_NEON(const uint8_t* src_u, 1729 int src_stride_u, 1730 const uint8_t* src_v, 1731 int src_stride_v, 1732 uint8_t* dst_uv, 1733 int width); 1734 1735 void HalfMergeUVRow_SSSE3(const uint8_t* src_u, 1736 int src_stride_u, 1737 const uint8_t* src_v, 1738 int src_stride_v, 1739 uint8_t* dst_uv, 1740 int width); 1741 1742 void HalfMergeUVRow_AVX2(const uint8_t* src_u, 1743 int src_stride_u, 1744 const uint8_t* src_v, 1745 int src_stride_v, 1746 uint8_t* dst_uv, 1747 int width); 1748 1749 void SplitRGBRow_C(const uint8_t* src_rgb, 1750 uint8_t* dst_r, 1751 uint8_t* dst_g, 1752 uint8_t* dst_b, 1753 int width); 1754 void SplitRGBRow_SSSE3(const uint8_t* src_rgb, 1755 uint8_t* dst_r, 1756 uint8_t* dst_g, 1757 uint8_t* dst_b, 1758 int width); 1759 void SplitRGBRow_NEON(const uint8_t* src_rgb, 1760 uint8_t* dst_r, 1761 uint8_t* dst_g, 1762 uint8_t* dst_b, 1763 int width); 1764 void SplitRGBRow_MMI(const uint8_t* src_rgb, 1765 uint8_t* dst_r, 1766 uint8_t* dst_g, 1767 uint8_t* dst_b, 1768 int width); 1769 void SplitRGBRow_Any_SSSE3(const uint8_t* src_ptr, 1770 uint8_t* dst_r, 1771 uint8_t* dst_g, 1772 uint8_t* dst_b, 1773 int width); 1774 void SplitRGBRow_Any_NEON(const uint8_t* src_ptr, 1775 uint8_t* dst_r, 1776 uint8_t* dst_g, 1777 uint8_t* dst_b, 1778 int width); 1779 void SplitRGBRow_Any_MMI(const uint8_t* src_ptr, 1780 uint8_t* dst_r, 1781 uint8_t* dst_g, 1782 uint8_t* dst_b, 1783 int width); 1784 1785 void MergeRGBRow_C(const uint8_t* src_r, 1786 const uint8_t* src_g, 1787 const uint8_t* src_b, 1788 uint8_t* dst_rgb, 1789 int width); 1790 void MergeRGBRow_SSSE3(const uint8_t* src_r, 1791 const uint8_t* src_g, 1792 const uint8_t* src_b, 1793 uint8_t* dst_rgb, 1794 int width); 1795 void MergeRGBRow_NEON(const uint8_t* src_r, 1796 const uint8_t* src_g, 1797 const uint8_t* src_b, 1798 uint8_t* dst_rgb, 1799 int width); 1800 void MergeRGBRow_MMI(const uint8_t* src_r, 1801 const uint8_t* src_g, 1802 const uint8_t* src_b, 1803 uint8_t* dst_rgb, 1804 int width); 1805 void MergeRGBRow_Any_SSSE3(const uint8_t* y_buf, 1806 const uint8_t* u_buf, 1807 const uint8_t* v_buf, 1808 uint8_t* dst_ptr, 1809 int width); 1810 void MergeRGBRow_Any_NEON(const uint8_t* src_r, 1811 const uint8_t* src_g, 1812 const uint8_t* src_b, 1813 uint8_t* dst_rgb, 1814 int width); 1815 void MergeRGBRow_Any_MMI(const uint8_t* src_r, 1816 const uint8_t* src_g, 1817 const uint8_t* src_b, 1818 uint8_t* dst_rgb, 1819 int width); 1820 1821 void MergeUVRow_16_C(const uint16_t* src_u, 1822 const uint16_t* src_v, 1823 uint16_t* dst_uv, 1824 int scale, /* 64 for 10 bit */ 1825 int width); 1826 void MergeUVRow_16_AVX2(const uint16_t* src_u, 1827 const uint16_t* src_v, 1828 uint16_t* dst_uv, 1829 int scale, 1830 int width); 1831 1832 void MultiplyRow_16_AVX2(const uint16_t* src_y, 1833 uint16_t* dst_y, 1834 int scale, 1835 int width); 1836 void MultiplyRow_16_C(const uint16_t* src_y, 1837 uint16_t* dst_y, 1838 int scale, 1839 int width); 1840 1841 void Convert8To16Row_C(const uint8_t* src_y, 1842 uint16_t* dst_y, 1843 int scale, 1844 int width); 1845 void Convert8To16Row_SSE2(const uint8_t* src_y, 1846 uint16_t* dst_y, 1847 int scale, 1848 int width); 1849 void Convert8To16Row_AVX2(const uint8_t* src_y, 1850 uint16_t* dst_y, 1851 int scale, 1852 int width); 1853 void Convert8To16Row_Any_SSE2(const uint8_t* src_ptr, 1854 uint16_t* dst_ptr, 1855 int scale, 1856 int width); 1857 void Convert8To16Row_Any_AVX2(const uint8_t* src_ptr, 1858 uint16_t* dst_ptr, 1859 int scale, 1860 int width); 1861 1862 void Convert16To8Row_C(const uint16_t* src_y, 1863 uint8_t* dst_y, 1864 int scale, 1865 int width); 1866 void Convert16To8Row_SSSE3(const uint16_t* src_y, 1867 uint8_t* dst_y, 1868 int scale, 1869 int width); 1870 void Convert16To8Row_AVX2(const uint16_t* src_y, 1871 uint8_t* dst_y, 1872 int scale, 1873 int width); 1874 void Convert16To8Row_Any_SSSE3(const uint16_t* src_ptr, 1875 uint8_t* dst_ptr, 1876 int scale, 1877 int width); 1878 void Convert16To8Row_Any_AVX2(const uint16_t* src_ptr, 1879 uint8_t* dst_ptr, 1880 int scale, 1881 int width); 1882 1883 void CopyRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 1884 void CopyRow_AVX(const uint8_t* src, uint8_t* dst, int width); 1885 void CopyRow_ERMS(const uint8_t* src, uint8_t* dst, int width); 1886 void CopyRow_NEON(const uint8_t* src, uint8_t* dst, int width); 1887 void CopyRow_MIPS(const uint8_t* src, uint8_t* dst, int count); 1888 void CopyRow_C(const uint8_t* src, uint8_t* dst, int count); 1889 void CopyRow_Any_SSE2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1890 void CopyRow_Any_AVX(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1891 void CopyRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 1892 1893 void CopyRow_16_C(const uint16_t* src, uint16_t* dst, int count); 1894 1895 void ARGBCopyAlphaRow_C(const uint8_t* src, uint8_t* dst, int width); 1896 void ARGBCopyAlphaRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 1897 void ARGBCopyAlphaRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 1898 void ARGBCopyAlphaRow_MMI(const uint8_t* src, uint8_t* dst, int width); 1899 void ARGBCopyAlphaRow_Any_SSE2(const uint8_t* src_ptr, 1900 uint8_t* dst_ptr, 1901 int width); 1902 void ARGBCopyAlphaRow_Any_AVX2(const uint8_t* src_ptr, 1903 uint8_t* dst_ptr, 1904 int width); 1905 void ARGBCopyAlphaRow_Any_MMI(const uint8_t* src_ptr, 1906 uint8_t* dst_ptr, 1907 int width); 1908 1909 void ARGBExtractAlphaRow_C(const uint8_t* src_argb, uint8_t* dst_a, int width); 1910 void ARGBExtractAlphaRow_SSE2(const uint8_t* src_argb, 1911 uint8_t* dst_a, 1912 int width); 1913 void ARGBExtractAlphaRow_AVX2(const uint8_t* src_argb, 1914 uint8_t* dst_a, 1915 int width); 1916 void ARGBExtractAlphaRow_NEON(const uint8_t* src_argb, 1917 uint8_t* dst_a, 1918 int width); 1919 void ARGBExtractAlphaRow_MSA(const uint8_t* src_argb, 1920 uint8_t* dst_a, 1921 int width); 1922 void ARGBExtractAlphaRow_MMI(const uint8_t* src_argb, 1923 uint8_t* dst_a, 1924 int width); 1925 void ARGBExtractAlphaRow_Any_SSE2(const uint8_t* src_ptr, 1926 uint8_t* dst_ptr, 1927 int width); 1928 void ARGBExtractAlphaRow_Any_AVX2(const uint8_t* src_ptr, 1929 uint8_t* dst_ptr, 1930 int width); 1931 void ARGBExtractAlphaRow_Any_NEON(const uint8_t* src_ptr, 1932 uint8_t* dst_ptr, 1933 int width); 1934 void ARGBExtractAlphaRow_Any_MSA(const uint8_t* src_ptr, 1935 uint8_t* dst_ptr, 1936 int width); 1937 void ARGBExtractAlphaRow_Any_MMI(const uint8_t* src_ptr, 1938 uint8_t* dst_ptr, 1939 int width); 1940 1941 void ARGBCopyYToAlphaRow_C(const uint8_t* src, uint8_t* dst, int width); 1942 void ARGBCopyYToAlphaRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 1943 void ARGBCopyYToAlphaRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 1944 void ARGBCopyYToAlphaRow_MMI(const uint8_t* src, uint8_t* dst, int width); 1945 void ARGBCopyYToAlphaRow_Any_SSE2(const uint8_t* src_ptr, 1946 uint8_t* dst_ptr, 1947 int width); 1948 void ARGBCopyYToAlphaRow_Any_AVX2(const uint8_t* src_ptr, 1949 uint8_t* dst_ptr, 1950 int width); 1951 void ARGBCopyYToAlphaRow_Any_MMI(const uint8_t* src_ptr, 1952 uint8_t* dst_ptr, 1953 int width); 1954 1955 void SetRow_C(uint8_t* dst, uint8_t v8, int width); 1956 void SetRow_MSA(uint8_t* dst, uint8_t v8, int width); 1957 void SetRow_X86(uint8_t* dst, uint8_t v8, int width); 1958 void SetRow_ERMS(uint8_t* dst, uint8_t v8, int width); 1959 void SetRow_NEON(uint8_t* dst, uint8_t v8, int width); 1960 void SetRow_Any_X86(uint8_t* dst_ptr, uint8_t v32, int width); 1961 void SetRow_Any_NEON(uint8_t* dst_ptr, uint8_t v32, int width); 1962 1963 void ARGBSetRow_C(uint8_t* dst_argb, uint32_t v32, int width); 1964 void ARGBSetRow_X86(uint8_t* dst_argb, uint32_t v32, int width); 1965 void ARGBSetRow_NEON(uint8_t* dst, uint32_t v32, int width); 1966 void ARGBSetRow_Any_NEON(uint8_t* dst_ptr, uint32_t v32, int width); 1967 void ARGBSetRow_MSA(uint8_t* dst_argb, uint32_t v32, int width); 1968 void ARGBSetRow_Any_MSA(uint8_t* dst_ptr, uint32_t v32, int width); 1969 void ARGBSetRow_MMI(uint8_t* dst_argb, uint32_t v32, int width); 1970 void ARGBSetRow_Any_MMI(uint8_t* dst_ptr, uint32_t v32, int width); 1971 1972 // ARGBShufflers for BGRAToARGB etc. 1973 void ARGBShuffleRow_C(const uint8_t* src_argb, 1974 uint8_t* dst_argb, 1975 const uint8_t* shuffler, 1976 int width); 1977 void ARGBShuffleRow_SSSE3(const uint8_t* src_argb, 1978 uint8_t* dst_argb, 1979 const uint8_t* shuffler, 1980 int width); 1981 void ARGBShuffleRow_AVX2(const uint8_t* src_argb, 1982 uint8_t* dst_argb, 1983 const uint8_t* shuffler, 1984 int width); 1985 void ARGBShuffleRow_NEON(const uint8_t* src_argb, 1986 uint8_t* dst_argb, 1987 const uint8_t* shuffler, 1988 int width); 1989 void ARGBShuffleRow_MSA(const uint8_t* src_argb, 1990 uint8_t* dst_argb, 1991 const uint8_t* shuffler, 1992 int width); 1993 void ARGBShuffleRow_MMI(const uint8_t* src_argb, 1994 uint8_t* dst_argb, 1995 const uint8_t* shuffler, 1996 int width); 1997 void ARGBShuffleRow_Any_SSSE3(const uint8_t* src_ptr, 1998 uint8_t* dst_ptr, 1999 const uint8_t* param, 2000 int width); 2001 void ARGBShuffleRow_Any_AVX2(const uint8_t* src_ptr, 2002 uint8_t* dst_ptr, 2003 const uint8_t* param, 2004 int width); 2005 void ARGBShuffleRow_Any_NEON(const uint8_t* src_ptr, 2006 uint8_t* dst_ptr, 2007 const uint8_t* param, 2008 int width); 2009 void ARGBShuffleRow_Any_MSA(const uint8_t* src_ptr, 2010 uint8_t* dst_ptr, 2011 const uint8_t* param, 2012 int width); 2013 void ARGBShuffleRow_Any_MMI(const uint8_t* src_ptr, 2014 uint8_t* dst_ptr, 2015 const uint8_t* param, 2016 int width); 2017 2018 void RGB24ToARGBRow_SSSE3(const uint8_t* src_rgb24, 2019 uint8_t* dst_argb, 2020 int width); 2021 void RAWToARGBRow_SSSE3(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2022 void RAWToRGBARow_SSSE3(const uint8_t* src_raw, uint8_t* dst_rgba, int width); 2023 void RAWToRGB24Row_SSSE3(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2024 void RGB565ToARGBRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2025 void ARGB1555ToARGBRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2026 void ARGB4444ToARGBRow_SSE2(const uint8_t* src, uint8_t* dst, int width); 2027 void RGB565ToARGBRow_AVX2(const uint8_t* src_rgb565, 2028 uint8_t* dst_argb, 2029 int width); 2030 void ARGB1555ToARGBRow_AVX2(const uint8_t* src_argb1555, 2031 uint8_t* dst_argb, 2032 int width); 2033 void ARGB4444ToARGBRow_AVX2(const uint8_t* src_argb4444, 2034 uint8_t* dst_argb, 2035 int width); 2036 2037 void RGB24ToARGBRow_NEON(const uint8_t* src_rgb24, 2038 uint8_t* dst_argb, 2039 int width); 2040 void RGB24ToARGBRow_MSA(const uint8_t* src_rgb24, uint8_t* dst_argb, int width); 2041 void RGB24ToARGBRow_MMI(const uint8_t* src_rgb24, uint8_t* dst_argb, int width); 2042 void RAWToARGBRow_NEON(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2043 void RAWToRGBARow_NEON(const uint8_t* src_raw, uint8_t* dst_rgba, int width); 2044 void RAWToARGBRow_MSA(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2045 void RAWToARGBRow_MMI(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2046 void RAWToRGB24Row_NEON(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2047 void RAWToRGB24Row_MSA(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2048 void RAWToRGB24Row_MMI(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2049 void RGB565ToARGBRow_NEON(const uint8_t* src_rgb565, 2050 uint8_t* dst_argb, 2051 int width); 2052 void RGB565ToARGBRow_MSA(const uint8_t* src_rgb565, 2053 uint8_t* dst_argb, 2054 int width); 2055 void RGB565ToARGBRow_MMI(const uint8_t* src_rgb565, 2056 uint8_t* dst_argb, 2057 int width); 2058 void ARGB1555ToARGBRow_NEON(const uint8_t* src_argb1555, 2059 uint8_t* dst_argb, 2060 int width); 2061 void ARGB1555ToARGBRow_MSA(const uint8_t* src_argb1555, 2062 uint8_t* dst_argb, 2063 int width); 2064 void ARGB1555ToARGBRow_MMI(const uint8_t* src_argb1555, 2065 uint8_t* dst_argb, 2066 int width); 2067 void ARGB4444ToARGBRow_NEON(const uint8_t* src_argb4444, 2068 uint8_t* dst_argb, 2069 int width); 2070 void ARGB4444ToARGBRow_MSA(const uint8_t* src_argb4444, 2071 uint8_t* dst_argb, 2072 int width); 2073 void ARGB4444ToARGBRow_MMI(const uint8_t* src_argb4444, 2074 uint8_t* dst_argb, 2075 int width); 2076 void RGB24ToARGBRow_C(const uint8_t* src_rgb24, uint8_t* dst_argb, int width); 2077 void RAWToARGBRow_C(const uint8_t* src_raw, uint8_t* dst_argb, int width); 2078 void RAWToRGBARow_C(const uint8_t* src_raw, uint8_t* dst_rgba, int width); 2079 void RAWToRGB24Row_C(const uint8_t* src_raw, uint8_t* dst_rgb24, int width); 2080 void RGB565ToARGBRow_C(const uint8_t* src_rgb565, uint8_t* dst_argb, int width); 2081 void ARGB1555ToARGBRow_C(const uint8_t* src_argb1555, 2082 uint8_t* dst_argb, 2083 int width); 2084 void ARGB4444ToARGBRow_C(const uint8_t* src_argb4444, 2085 uint8_t* dst_argb, 2086 int width); 2087 void AR30ToARGBRow_C(const uint8_t* src_ar30, uint8_t* dst_argb, int width); 2088 void AR30ToABGRRow_C(const uint8_t* src_ar30, uint8_t* dst_abgr, int width); 2089 void ARGBToAR30Row_C(const uint8_t* src_argb, uint8_t* dst_ar30, int width); 2090 void AR30ToAB30Row_C(const uint8_t* src_ar30, uint8_t* dst_ab30, int width); 2091 2092 void RGB24ToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 2093 uint8_t* dst_ptr, 2094 int width); 2095 void RAWToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 2096 uint8_t* dst_ptr, 2097 int width); 2098 void RAWToRGBARow_Any_SSSE3(const uint8_t* src_ptr, 2099 uint8_t* dst_ptr, 2100 int width); 2101 void RAWToRGB24Row_Any_SSSE3(const uint8_t* src_ptr, 2102 uint8_t* dst_ptr, 2103 int width); 2104 2105 void RGB565ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2106 uint8_t* dst_ptr, 2107 int width); 2108 void ARGB1555ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2109 uint8_t* dst_ptr, 2110 int width); 2111 void ARGB4444ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2112 uint8_t* dst_ptr, 2113 int width); 2114 void RGB565ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2115 uint8_t* dst_ptr, 2116 int width); 2117 void ARGB1555ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2118 uint8_t* dst_ptr, 2119 int width); 2120 void ARGB4444ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2121 uint8_t* dst_ptr, 2122 int width); 2123 2124 void RGB24ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2125 uint8_t* dst_ptr, 2126 int width); 2127 void RGB24ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2128 uint8_t* dst_ptr, 2129 int width); 2130 void RGB24ToARGBRow_Any_MMI(const uint8_t* src_ptr, 2131 uint8_t* dst_ptr, 2132 int width); 2133 void RAWToARGBRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2134 void RAWToRGBARow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2135 void RAWToARGBRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2136 void RAWToARGBRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2137 void RAWToRGB24Row_Any_NEON(const uint8_t* src_ptr, 2138 uint8_t* dst_ptr, 2139 int width); 2140 void RAWToRGB24Row_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2141 void RAWToRGB24Row_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2142 void RGB565ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2143 uint8_t* dst_ptr, 2144 int width); 2145 void RGB565ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2146 uint8_t* dst_ptr, 2147 int width); 2148 void RGB565ToARGBRow_Any_MMI(const uint8_t* src_ptr, 2149 uint8_t* dst_ptr, 2150 int width); 2151 void ARGB1555ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2152 uint8_t* dst_ptr, 2153 int width); 2154 void ARGB1555ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2155 uint8_t* dst_ptr, 2156 int width); 2157 void ARGB1555ToARGBRow_Any_MMI(const uint8_t* src_ptr, 2158 uint8_t* dst_ptr, 2159 int width); 2160 void ARGB4444ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2161 uint8_t* dst_ptr, 2162 int width); 2163 2164 void ARGB4444ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2165 uint8_t* dst_ptr, 2166 int width); 2167 void ARGB4444ToARGBRow_Any_MMI(const uint8_t* src_ptr, 2168 uint8_t* dst_ptr, 2169 int width); 2170 2171 void ARGBToRGB24Row_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2172 void ARGBToRAWRow_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2173 void ARGBToRGB565Row_SSE2(const uint8_t* src, uint8_t* dst, int width); 2174 void ARGBToARGB1555Row_SSE2(const uint8_t* src, uint8_t* dst, int width); 2175 void ARGBToARGB4444Row_SSE2(const uint8_t* src, uint8_t* dst, int width); 2176 void ABGRToAR30Row_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2177 void ARGBToAR30Row_SSSE3(const uint8_t* src, uint8_t* dst, int width); 2178 2179 void ARGBToRAWRow_AVX2(const uint8_t* src, uint8_t* dst, int width); 2180 void ARGBToRGB24Row_AVX2(const uint8_t* src, uint8_t* dst, int width); 2181 2182 void ARGBToRGB24Row_AVX512VBMI(const uint8_t* src, uint8_t* dst, int width); 2183 2184 void ARGBToRGB565DitherRow_C(const uint8_t* src_argb, 2185 uint8_t* dst_rgb, 2186 const uint32_t dither4, 2187 int width); 2188 void ARGBToRGB565DitherRow_SSE2(const uint8_t* src, 2189 uint8_t* dst, 2190 const uint32_t dither4, 2191 int width); 2192 void ARGBToRGB565DitherRow_AVX2(const uint8_t* src, 2193 uint8_t* dst, 2194 const uint32_t dither4, 2195 int width); 2196 2197 void ARGBToRGB565Row_AVX2(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2198 void ARGBToARGB1555Row_AVX2(const uint8_t* src_argb, 2199 uint8_t* dst_rgb, 2200 int width); 2201 void ARGBToARGB4444Row_AVX2(const uint8_t* src_argb, 2202 uint8_t* dst_rgb, 2203 int width); 2204 void ABGRToAR30Row_AVX2(const uint8_t* src, uint8_t* dst, int width); 2205 void ARGBToAR30Row_AVX2(const uint8_t* src, uint8_t* dst, int width); 2206 2207 void ARGBToRGB24Row_NEON(const uint8_t* src_argb, 2208 uint8_t* dst_rgb24, 2209 int width); 2210 void ARGBToRAWRow_NEON(const uint8_t* src_argb, uint8_t* dst_raw, int width); 2211 void ARGBToRGB565Row_NEON(const uint8_t* src_argb, 2212 uint8_t* dst_rgb565, 2213 int width); 2214 void ARGBToARGB1555Row_NEON(const uint8_t* src_argb, 2215 uint8_t* dst_argb1555, 2216 int width); 2217 void ARGBToARGB4444Row_NEON(const uint8_t* src_argb, 2218 uint8_t* dst_argb4444, 2219 int width); 2220 void ARGBToRGB565DitherRow_NEON(const uint8_t* src_argb, 2221 uint8_t* dst_rgb, 2222 const uint32_t dither4, 2223 int width); 2224 void ARGBToRGB24Row_MSA(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2225 void ARGBToRAWRow_MSA(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2226 void ARGBToRGB565Row_MSA(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2227 void ARGBToARGB1555Row_MSA(const uint8_t* src_argb, 2228 uint8_t* dst_rgb, 2229 int width); 2230 void ARGBToARGB4444Row_MSA(const uint8_t* src_argb, 2231 uint8_t* dst_rgb, 2232 int width); 2233 void ARGBToRGB565DitherRow_MSA(const uint8_t* src_argb, 2234 uint8_t* dst_rgb, 2235 const uint32_t dither4, 2236 int width); 2237 2238 void ARGBToRGB24Row_MMI(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2239 void ARGBToRAWRow_MMI(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2240 void ARGBToRGB565Row_MMI(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2241 void ARGBToARGB1555Row_MMI(const uint8_t* src_argb, 2242 uint8_t* dst_rgb, 2243 int width); 2244 void ARGBToARGB4444Row_MMI(const uint8_t* src_argb, 2245 uint8_t* dst_rgb, 2246 int width); 2247 void ARGBToRGB565DitherRow_MMI(const uint8_t* src_argb, 2248 uint8_t* dst_rgb, 2249 const uint32_t dither4, 2250 int width); 2251 2252 void ARGBToRGBARow_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2253 void ARGBToRGB24Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2254 void ARGBToRAWRow_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2255 void ARGBToRGB565Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2256 void ARGBToARGB1555Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2257 void ARGBToARGB4444Row_C(const uint8_t* src_argb, uint8_t* dst_rgb, int width); 2258 void ABGRToAR30Row_C(const uint8_t* src_abgr, uint8_t* dst_ar30, int width); 2259 void ARGBToAR30Row_C(const uint8_t* src_argb, uint8_t* dst_ar30, int width); 2260 2261 void J400ToARGBRow_SSE2(const uint8_t* src_y, uint8_t* dst_argb, int width); 2262 void J400ToARGBRow_AVX2(const uint8_t* src_y, uint8_t* dst_argb, int width); 2263 void J400ToARGBRow_NEON(const uint8_t* src_y, uint8_t* dst_argb, int width); 2264 void J400ToARGBRow_MSA(const uint8_t* src_y, uint8_t* dst_argb, int width); 2265 void J400ToARGBRow_MMI(const uint8_t* src_y, uint8_t* dst_argb, int width); 2266 void J400ToARGBRow_C(const uint8_t* src_y, uint8_t* dst_argb, int width); 2267 void J400ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2268 uint8_t* dst_ptr, 2269 int width); 2270 void J400ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2271 uint8_t* dst_ptr, 2272 int width); 2273 void J400ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2274 uint8_t* dst_ptr, 2275 int width); 2276 void J400ToARGBRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2277 void J400ToARGBRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 2278 2279 void I444ToARGBRow_C(const uint8_t* src_y, 2280 const uint8_t* src_u, 2281 const uint8_t* src_v, 2282 uint8_t* rgb_buf, 2283 const struct YuvConstants* yuvconstants, 2284 int width); 2285 void I422ToARGBRow_C(const uint8_t* src_y, 2286 const uint8_t* src_u, 2287 const uint8_t* src_v, 2288 uint8_t* rgb_buf, 2289 const struct YuvConstants* yuvconstants, 2290 int width); 2291 void I422ToAR30Row_C(const uint8_t* src_y, 2292 const uint8_t* src_u, 2293 const uint8_t* src_v, 2294 uint8_t* rgb_buf, 2295 const struct YuvConstants* yuvconstants, 2296 int width); 2297 void I210ToAR30Row_C(const uint16_t* src_y, 2298 const uint16_t* src_u, 2299 const uint16_t* src_v, 2300 uint8_t* rgb_buf, 2301 const struct YuvConstants* yuvconstants, 2302 int width); 2303 void I210ToARGBRow_C(const uint16_t* src_y, 2304 const uint16_t* src_u, 2305 const uint16_t* src_v, 2306 uint8_t* rgb_buf, 2307 const struct YuvConstants* yuvconstants, 2308 int width); 2309 void I422AlphaToARGBRow_C(const uint8_t* src_y, 2310 const uint8_t* src_u, 2311 const uint8_t* src_v, 2312 const uint8_t* src_a, 2313 uint8_t* rgb_buf, 2314 const struct YuvConstants* yuvconstants, 2315 int width); 2316 void NV12ToARGBRow_C(const uint8_t* src_y, 2317 const uint8_t* src_uv, 2318 uint8_t* rgb_buf, 2319 const struct YuvConstants* yuvconstants, 2320 int width); 2321 void NV12ToRGB565Row_C(const uint8_t* src_y, 2322 const uint8_t* src_uv, 2323 uint8_t* dst_rgb565, 2324 const struct YuvConstants* yuvconstants, 2325 int width); 2326 void NV21ToARGBRow_C(const uint8_t* src_y, 2327 const uint8_t* src_vu, 2328 uint8_t* rgb_buf, 2329 const struct YuvConstants* yuvconstants, 2330 int width); 2331 void NV12ToRGB24Row_C(const uint8_t* src_y, 2332 const uint8_t* src_uv, 2333 uint8_t* rgb_buf, 2334 const struct YuvConstants* yuvconstants, 2335 int width); 2336 void NV21ToRGB24Row_C(const uint8_t* src_y, 2337 const uint8_t* src_vu, 2338 uint8_t* rgb_buf, 2339 const struct YuvConstants* yuvconstants, 2340 int width); 2341 void NV21ToYUV24Row_C(const uint8_t* src_y, 2342 const uint8_t* src_vu, 2343 uint8_t* dst_yuv24, 2344 int width); 2345 void YUY2ToARGBRow_C(const uint8_t* src_yuy2, 2346 uint8_t* rgb_buf, 2347 const struct YuvConstants* yuvconstants, 2348 int width); 2349 void UYVYToARGBRow_C(const uint8_t* src_uyvy, 2350 uint8_t* rgb_buf, 2351 const struct YuvConstants* yuvconstants, 2352 int width); 2353 void I422ToRGBARow_C(const uint8_t* src_y, 2354 const uint8_t* src_u, 2355 const uint8_t* src_v, 2356 uint8_t* rgb_buf, 2357 const struct YuvConstants* yuvconstants, 2358 int width); 2359 void I422ToRGB24Row_C(const uint8_t* src_y, 2360 const uint8_t* src_u, 2361 const uint8_t* src_v, 2362 uint8_t* rgb_buf, 2363 const struct YuvConstants* yuvconstants, 2364 int width); 2365 void I422ToARGB4444Row_C(const uint8_t* src_y, 2366 const uint8_t* src_u, 2367 const uint8_t* src_v, 2368 uint8_t* dst_argb4444, 2369 const struct YuvConstants* yuvconstants, 2370 int width); 2371 void I422ToARGB1555Row_C(const uint8_t* src_y, 2372 const uint8_t* src_u, 2373 const uint8_t* src_v, 2374 uint8_t* dst_argb1555, 2375 const struct YuvConstants* yuvconstants, 2376 int width); 2377 void I422ToRGB565Row_C(const uint8_t* src_y, 2378 const uint8_t* src_u, 2379 const uint8_t* src_v, 2380 uint8_t* dst_rgb565, 2381 const struct YuvConstants* yuvconstants, 2382 int width); 2383 void I422ToARGBRow_AVX2(const uint8_t* y_buf, 2384 const uint8_t* u_buf, 2385 const uint8_t* v_buf, 2386 uint8_t* dst_argb, 2387 const struct YuvConstants* yuvconstants, 2388 int width); 2389 void I422ToRGBARow_AVX2(const uint8_t* y_buf, 2390 const uint8_t* u_buf, 2391 const uint8_t* v_buf, 2392 uint8_t* dst_argb, 2393 const struct YuvConstants* yuvconstants, 2394 int width); 2395 void I444ToARGBRow_SSSE3(const uint8_t* y_buf, 2396 const uint8_t* u_buf, 2397 const uint8_t* v_buf, 2398 uint8_t* dst_argb, 2399 const struct YuvConstants* yuvconstants, 2400 int width); 2401 void I444ToARGBRow_AVX2(const uint8_t* y_buf, 2402 const uint8_t* u_buf, 2403 const uint8_t* v_buf, 2404 uint8_t* dst_argb, 2405 const struct YuvConstants* yuvconstants, 2406 int width); 2407 void I444ToARGBRow_SSSE3(const uint8_t* y_buf, 2408 const uint8_t* u_buf, 2409 const uint8_t* v_buf, 2410 uint8_t* dst_argb, 2411 const struct YuvConstants* yuvconstants, 2412 int width); 2413 void I444ToARGBRow_AVX2(const uint8_t* y_buf, 2414 const uint8_t* u_buf, 2415 const uint8_t* v_buf, 2416 uint8_t* dst_argb, 2417 const struct YuvConstants* yuvconstants, 2418 int width); 2419 void I422ToARGBRow_SSSE3(const uint8_t* y_buf, 2420 const uint8_t* u_buf, 2421 const uint8_t* v_buf, 2422 uint8_t* dst_argb, 2423 const struct YuvConstants* yuvconstants, 2424 int width); 2425 2426 void I422ToAR30Row_SSSE3(const uint8_t* y_buf, 2427 const uint8_t* u_buf, 2428 const uint8_t* v_buf, 2429 uint8_t* dst_ar30, 2430 const struct YuvConstants* yuvconstants, 2431 int width); 2432 void I210ToAR30Row_SSSE3(const uint16_t* y_buf, 2433 const uint16_t* u_buf, 2434 const uint16_t* v_buf, 2435 uint8_t* dst_ar30, 2436 const struct YuvConstants* yuvconstants, 2437 int width); 2438 void I210ToARGBRow_SSSE3(const uint16_t* y_buf, 2439 const uint16_t* u_buf, 2440 const uint16_t* v_buf, 2441 uint8_t* dst_argb, 2442 const struct YuvConstants* yuvconstants, 2443 int width); 2444 void I422ToAR30Row_AVX2(const uint8_t* y_buf, 2445 const uint8_t* u_buf, 2446 const uint8_t* v_buf, 2447 uint8_t* dst_ar30, 2448 const struct YuvConstants* yuvconstants, 2449 int width); 2450 void I210ToARGBRow_AVX2(const uint16_t* y_buf, 2451 const uint16_t* u_buf, 2452 const uint16_t* v_buf, 2453 uint8_t* dst_argb, 2454 const struct YuvConstants* yuvconstants, 2455 int width); 2456 void I210ToAR30Row_AVX2(const uint16_t* y_buf, 2457 const uint16_t* u_buf, 2458 const uint16_t* v_buf, 2459 uint8_t* dst_ar30, 2460 const struct YuvConstants* yuvconstants, 2461 int width); 2462 void I422AlphaToARGBRow_SSSE3(const uint8_t* y_buf, 2463 const uint8_t* u_buf, 2464 const uint8_t* v_buf, 2465 const uint8_t* a_buf, 2466 uint8_t* dst_argb, 2467 const struct YuvConstants* yuvconstants, 2468 int width); 2469 void I422AlphaToARGBRow_AVX2(const uint8_t* y_buf, 2470 const uint8_t* u_buf, 2471 const uint8_t* v_buf, 2472 const uint8_t* a_buf, 2473 uint8_t* dst_argb, 2474 const struct YuvConstants* yuvconstants, 2475 int width); 2476 void NV12ToARGBRow_SSSE3(const uint8_t* y_buf, 2477 const uint8_t* uv_buf, 2478 uint8_t* dst_argb, 2479 const struct YuvConstants* yuvconstants, 2480 int width); 2481 void NV12ToARGBRow_AVX2(const uint8_t* y_buf, 2482 const uint8_t* uv_buf, 2483 uint8_t* dst_argb, 2484 const struct YuvConstants* yuvconstants, 2485 int width); 2486 void NV12ToRGB24Row_SSSE3(const uint8_t* src_y, 2487 const uint8_t* src_uv, 2488 uint8_t* dst_rgb24, 2489 const struct YuvConstants* yuvconstants, 2490 int width); 2491 void NV21ToRGB24Row_SSSE3(const uint8_t* src_y, 2492 const uint8_t* src_vu, 2493 uint8_t* dst_rgb24, 2494 const struct YuvConstants* yuvconstants, 2495 int width); 2496 void NV12ToRGB565Row_SSSE3(const uint8_t* src_y, 2497 const uint8_t* src_uv, 2498 uint8_t* dst_rgb565, 2499 const struct YuvConstants* yuvconstants, 2500 int width); 2501 void NV12ToRGB24Row_AVX2(const uint8_t* src_y, 2502 const uint8_t* src_uv, 2503 uint8_t* dst_rgb24, 2504 const struct YuvConstants* yuvconstants, 2505 int width); 2506 void NV21ToRGB24Row_AVX2(const uint8_t* src_y, 2507 const uint8_t* src_vu, 2508 uint8_t* dst_rgb24, 2509 const struct YuvConstants* yuvconstants, 2510 int width); 2511 void NV21ToYUV24Row_AVX2(const uint8_t* src_y, 2512 const uint8_t* src_vu, 2513 uint8_t* dst_yuv24, 2514 int width); 2515 void NV12ToRGB565Row_AVX2(const uint8_t* src_y, 2516 const uint8_t* src_uv, 2517 uint8_t* dst_rgb565, 2518 const struct YuvConstants* yuvconstants, 2519 int width); 2520 void NV21ToARGBRow_SSSE3(const uint8_t* y_buf, 2521 const uint8_t* vu_buf, 2522 uint8_t* dst_argb, 2523 const struct YuvConstants* yuvconstants, 2524 int width); 2525 void NV21ToARGBRow_AVX2(const uint8_t* y_buf, 2526 const uint8_t* vu_buf, 2527 uint8_t* dst_argb, 2528 const struct YuvConstants* yuvconstants, 2529 int width); 2530 void YUY2ToARGBRow_SSSE3(const uint8_t* yuy2_buf, 2531 uint8_t* dst_argb, 2532 const struct YuvConstants* yuvconstants, 2533 int width); 2534 void UYVYToARGBRow_SSSE3(const uint8_t* uyvy_buf, 2535 uint8_t* dst_argb, 2536 const struct YuvConstants* yuvconstants, 2537 int width); 2538 void YUY2ToARGBRow_AVX2(const uint8_t* yuy2_buf, 2539 uint8_t* dst_argb, 2540 const struct YuvConstants* yuvconstants, 2541 int width); 2542 void UYVYToARGBRow_AVX2(const uint8_t* uyvy_buf, 2543 uint8_t* dst_argb, 2544 const struct YuvConstants* yuvconstants, 2545 int width); 2546 void I422ToRGBARow_SSSE3(const uint8_t* y_buf, 2547 const uint8_t* u_buf, 2548 const uint8_t* v_buf, 2549 uint8_t* dst_rgba, 2550 const struct YuvConstants* yuvconstants, 2551 int width); 2552 void I422ToARGB4444Row_SSSE3(const uint8_t* src_y, 2553 const uint8_t* src_u, 2554 const uint8_t* src_v, 2555 uint8_t* dst_argb4444, 2556 const struct YuvConstants* yuvconstants, 2557 int width); 2558 void I422ToARGB4444Row_AVX2(const uint8_t* src_y, 2559 const uint8_t* src_u, 2560 const uint8_t* src_v, 2561 uint8_t* dst_argb4444, 2562 const struct YuvConstants* yuvconstants, 2563 int width); 2564 void I422ToARGB1555Row_SSSE3(const uint8_t* src_y, 2565 const uint8_t* src_u, 2566 const uint8_t* src_v, 2567 uint8_t* dst_argb1555, 2568 const struct YuvConstants* yuvconstants, 2569 int width); 2570 void I422ToARGB1555Row_AVX2(const uint8_t* src_y, 2571 const uint8_t* src_u, 2572 const uint8_t* src_v, 2573 uint8_t* dst_argb1555, 2574 const struct YuvConstants* yuvconstants, 2575 int width); 2576 void I422ToRGB565Row_SSSE3(const uint8_t* src_y, 2577 const uint8_t* src_u, 2578 const uint8_t* src_v, 2579 uint8_t* dst_rgb565, 2580 const struct YuvConstants* yuvconstants, 2581 int width); 2582 void I422ToRGB565Row_AVX2(const uint8_t* src_y, 2583 const uint8_t* src_u, 2584 const uint8_t* src_v, 2585 uint8_t* dst_rgb565, 2586 const struct YuvConstants* yuvconstants, 2587 int width); 2588 void I422ToRGB24Row_SSSE3(const uint8_t* y_buf, 2589 const uint8_t* u_buf, 2590 const uint8_t* v_buf, 2591 uint8_t* dst_rgb24, 2592 const struct YuvConstants* yuvconstants, 2593 int width); 2594 void I422ToRGB24Row_AVX2(const uint8_t* src_y, 2595 const uint8_t* src_u, 2596 const uint8_t* src_v, 2597 uint8_t* dst_rgb24, 2598 const struct YuvConstants* yuvconstants, 2599 int width); 2600 void I422ToARGBRow_Any_AVX2(const uint8_t* y_buf, 2601 const uint8_t* u_buf, 2602 const uint8_t* v_buf, 2603 uint8_t* dst_ptr, 2604 const struct YuvConstants* yuvconstants, 2605 int width); 2606 void I422ToRGBARow_Any_AVX2(const uint8_t* y_buf, 2607 const uint8_t* u_buf, 2608 const uint8_t* v_buf, 2609 uint8_t* dst_ptr, 2610 const struct YuvConstants* yuvconstants, 2611 int width); 2612 void I444ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 2613 const uint8_t* u_buf, 2614 const uint8_t* v_buf, 2615 uint8_t* dst_ptr, 2616 const struct YuvConstants* yuvconstants, 2617 int width); 2618 void I444ToARGBRow_Any_AVX2(const uint8_t* y_buf, 2619 const uint8_t* u_buf, 2620 const uint8_t* v_buf, 2621 uint8_t* dst_ptr, 2622 const struct YuvConstants* yuvconstants, 2623 int width); 2624 void I422ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 2625 const uint8_t* u_buf, 2626 const uint8_t* v_buf, 2627 uint8_t* dst_ptr, 2628 const struct YuvConstants* yuvconstants, 2629 int width); 2630 void I422ToAR30Row_Any_SSSE3(const uint8_t* y_buf, 2631 const uint8_t* u_buf, 2632 const uint8_t* v_buf, 2633 uint8_t* dst_ptr, 2634 const struct YuvConstants* yuvconstants, 2635 int width); 2636 void I210ToAR30Row_Any_SSSE3(const uint16_t* y_buf, 2637 const uint16_t* u_buf, 2638 const uint16_t* v_buf, 2639 uint8_t* dst_ptr, 2640 const struct YuvConstants* yuvconstants, 2641 int width); 2642 void I210ToARGBRow_Any_SSSE3(const uint16_t* y_buf, 2643 const uint16_t* u_buf, 2644 const uint16_t* v_buf, 2645 uint8_t* dst_ptr, 2646 const struct YuvConstants* yuvconstants, 2647 int width); 2648 void I422ToAR30Row_Any_AVX2(const uint8_t* y_buf, 2649 const uint8_t* u_buf, 2650 const uint8_t* v_buf, 2651 uint8_t* dst_ptr, 2652 const struct YuvConstants* yuvconstants, 2653 int width); 2654 void I210ToARGBRow_Any_AVX2(const uint16_t* y_buf, 2655 const uint16_t* u_buf, 2656 const uint16_t* v_buf, 2657 uint8_t* dst_ptr, 2658 const struct YuvConstants* yuvconstants, 2659 int width); 2660 void I210ToAR30Row_Any_AVX2(const uint16_t* y_buf, 2661 const uint16_t* u_buf, 2662 const uint16_t* v_buf, 2663 uint8_t* dst_ptr, 2664 const struct YuvConstants* yuvconstants, 2665 int width); 2666 void I422AlphaToARGBRow_Any_SSSE3(const uint8_t* y_buf, 2667 const uint8_t* u_buf, 2668 const uint8_t* v_buf, 2669 const uint8_t* a_buf, 2670 uint8_t* dst_ptr, 2671 const struct YuvConstants* yuvconstants, 2672 int width); 2673 void I422AlphaToARGBRow_Any_AVX2(const uint8_t* y_buf, 2674 const uint8_t* u_buf, 2675 const uint8_t* v_buf, 2676 const uint8_t* a_buf, 2677 uint8_t* dst_ptr, 2678 const struct YuvConstants* yuvconstants, 2679 int width); 2680 void NV12ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 2681 const uint8_t* uv_buf, 2682 uint8_t* dst_ptr, 2683 const struct YuvConstants* yuvconstants, 2684 int width); 2685 void NV12ToARGBRow_Any_AVX2(const uint8_t* y_buf, 2686 const uint8_t* uv_buf, 2687 uint8_t* dst_ptr, 2688 const struct YuvConstants* yuvconstants, 2689 int width); 2690 void NV21ToARGBRow_Any_SSSE3(const uint8_t* y_buf, 2691 const uint8_t* uv_buf, 2692 uint8_t* dst_ptr, 2693 const struct YuvConstants* yuvconstants, 2694 int width); 2695 void NV21ToARGBRow_Any_AVX2(const uint8_t* y_buf, 2696 const uint8_t* uv_buf, 2697 uint8_t* dst_ptr, 2698 const struct YuvConstants* yuvconstants, 2699 int width); 2700 void NV12ToRGB24Row_Any_SSSE3(const uint8_t* y_buf, 2701 const uint8_t* uv_buf, 2702 uint8_t* dst_ptr, 2703 const struct YuvConstants* yuvconstants, 2704 int width); 2705 void NV21ToRGB24Row_Any_SSSE3(const uint8_t* y_buf, 2706 const uint8_t* uv_buf, 2707 uint8_t* dst_ptr, 2708 const struct YuvConstants* yuvconstants, 2709 int width); 2710 void NV12ToRGB24Row_Any_AVX2(const uint8_t* y_buf, 2711 const uint8_t* uv_buf, 2712 uint8_t* dst_ptr, 2713 const struct YuvConstants* yuvconstants, 2714 int width); 2715 void NV21ToRGB24Row_Any_AVX2(const uint8_t* y_buf, 2716 const uint8_t* uv_buf, 2717 uint8_t* dst_ptr, 2718 const struct YuvConstants* yuvconstants, 2719 int width); 2720 void NV21ToYUV24Row_Any_AVX2(const uint8_t* src_y, 2721 const uint8_t* src_vu, 2722 uint8_t* dst_yuv24, 2723 int width); 2724 void NV12ToRGB565Row_Any_SSSE3(const uint8_t* y_buf, 2725 const uint8_t* uv_buf, 2726 uint8_t* dst_ptr, 2727 const struct YuvConstants* yuvconstants, 2728 int width); 2729 void NV12ToRGB565Row_Any_AVX2(const uint8_t* y_buf, 2730 const uint8_t* uv_buf, 2731 uint8_t* dst_ptr, 2732 const struct YuvConstants* yuvconstants, 2733 int width); 2734 void YUY2ToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 2735 uint8_t* dst_ptr, 2736 const struct YuvConstants* yuvconstants, 2737 int width); 2738 void UYVYToARGBRow_Any_SSSE3(const uint8_t* src_ptr, 2739 uint8_t* dst_ptr, 2740 const struct YuvConstants* yuvconstants, 2741 int width); 2742 void YUY2ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2743 uint8_t* dst_ptr, 2744 const struct YuvConstants* yuvconstants, 2745 int width); 2746 void UYVYToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2747 uint8_t* dst_ptr, 2748 const struct YuvConstants* yuvconstants, 2749 int width); 2750 void I422ToRGBARow_Any_SSSE3(const uint8_t* y_buf, 2751 const uint8_t* u_buf, 2752 const uint8_t* v_buf, 2753 uint8_t* dst_ptr, 2754 const struct YuvConstants* yuvconstants, 2755 int width); 2756 void I422ToARGB4444Row_Any_SSSE3(const uint8_t* y_buf, 2757 const uint8_t* u_buf, 2758 const uint8_t* v_buf, 2759 uint8_t* dst_ptr, 2760 const struct YuvConstants* yuvconstants, 2761 int width); 2762 void I422ToARGB4444Row_Any_AVX2(const uint8_t* y_buf, 2763 const uint8_t* u_buf, 2764 const uint8_t* v_buf, 2765 uint8_t* dst_ptr, 2766 const struct YuvConstants* yuvconstants, 2767 int width); 2768 void I422ToARGB1555Row_Any_SSSE3(const uint8_t* y_buf, 2769 const uint8_t* u_buf, 2770 const uint8_t* v_buf, 2771 uint8_t* dst_ptr, 2772 const struct YuvConstants* yuvconstants, 2773 int width); 2774 void I422ToARGB1555Row_Any_AVX2(const uint8_t* y_buf, 2775 const uint8_t* u_buf, 2776 const uint8_t* v_buf, 2777 uint8_t* dst_ptr, 2778 const struct YuvConstants* yuvconstants, 2779 int width); 2780 void I422ToRGB565Row_Any_SSSE3(const uint8_t* y_buf, 2781 const uint8_t* u_buf, 2782 const uint8_t* v_buf, 2783 uint8_t* dst_ptr, 2784 const struct YuvConstants* yuvconstants, 2785 int width); 2786 void I422ToRGB565Row_Any_AVX2(const uint8_t* y_buf, 2787 const uint8_t* u_buf, 2788 const uint8_t* v_buf, 2789 uint8_t* dst_ptr, 2790 const struct YuvConstants* yuvconstants, 2791 int width); 2792 void I422ToRGB24Row_Any_SSSE3(const uint8_t* y_buf, 2793 const uint8_t* u_buf, 2794 const uint8_t* v_buf, 2795 uint8_t* dst_ptr, 2796 const struct YuvConstants* yuvconstants, 2797 int width); 2798 void I422ToRGB24Row_Any_AVX2(const uint8_t* y_buf, 2799 const uint8_t* u_buf, 2800 const uint8_t* v_buf, 2801 uint8_t* dst_ptr, 2802 const struct YuvConstants* yuvconstants, 2803 int width); 2804 2805 void I400ToARGBRow_C(const uint8_t* src_y, 2806 uint8_t* rgb_buf, 2807 const struct YuvConstants* yuvconstants, 2808 int width); 2809 void I400ToARGBRow_SSE2(const uint8_t* y_buf, 2810 uint8_t* dst_argb, 2811 const struct YuvConstants* yuvconstants, 2812 int width); 2813 void I400ToARGBRow_AVX2(const uint8_t* y_buf, 2814 uint8_t* dst_argb, 2815 const struct YuvConstants* yuvconstants, 2816 int width); 2817 void I400ToARGBRow_NEON(const uint8_t* src_y, 2818 uint8_t* dst_argb, 2819 const struct YuvConstants* yuvconstants, 2820 int width); 2821 void I400ToARGBRow_MSA(const uint8_t* src_y, 2822 uint8_t* dst_argb, 2823 const struct YuvConstants* yuvconstants, 2824 int width); 2825 void I400ToARGBRow_MMI(const uint8_t* src_y, 2826 uint8_t* dst_argb, 2827 const struct YuvConstants* yuvconstants, 2828 int width); 2829 void I400ToARGBRow_Any_SSE2(const uint8_t* src_ptr, 2830 uint8_t* dst_ptr, 2831 const struct YuvConstants* yuvconstants, 2832 int width); 2833 void I400ToARGBRow_Any_AVX2(const uint8_t* src_ptr, 2834 uint8_t* dst_ptr, 2835 const struct YuvConstants* yuvconstants, 2836 int width); 2837 void I400ToARGBRow_Any_NEON(const uint8_t* src_ptr, 2838 uint8_t* dst_ptr, 2839 const struct YuvConstants* yuvconstants, 2840 int width); 2841 void I400ToARGBRow_Any_MSA(const uint8_t* src_ptr, 2842 uint8_t* dst_ptr, 2843 const struct YuvConstants* yuvconstants, 2844 int width); 2845 void I400ToARGBRow_Any_MMI(const uint8_t* src_ptr, 2846 uint8_t* dst_ptr, 2847 const struct YuvConstants* yuvconstants, 2848 int width); 2849 2850 // ARGB preattenuated alpha blend. 2851 void ARGBBlendRow_SSSE3(const uint8_t* src_argb0, 2852 const uint8_t* src_argb1, 2853 uint8_t* dst_argb, 2854 int width); 2855 void ARGBBlendRow_NEON(const uint8_t* src_argb0, 2856 const uint8_t* src_argb1, 2857 uint8_t* dst_argb, 2858 int width); 2859 void ARGBBlendRow_MSA(const uint8_t* src_argb0, 2860 const uint8_t* src_argb1, 2861 uint8_t* dst_argb, 2862 int width); 2863 void ARGBBlendRow_MMI(const uint8_t* src_argb0, 2864 const uint8_t* src_argb1, 2865 uint8_t* dst_argb, 2866 int width); 2867 void ARGBBlendRow_C(const uint8_t* src_argb0, 2868 const uint8_t* src_argb1, 2869 uint8_t* dst_argb, 2870 int width); 2871 2872 // Unattenuated planar alpha blend. 2873 void BlendPlaneRow_SSSE3(const uint8_t* src0, 2874 const uint8_t* src1, 2875 const uint8_t* alpha, 2876 uint8_t* dst, 2877 int width); 2878 void BlendPlaneRow_Any_SSSE3(const uint8_t* y_buf, 2879 const uint8_t* u_buf, 2880 const uint8_t* v_buf, 2881 uint8_t* dst_ptr, 2882 int width); 2883 void BlendPlaneRow_AVX2(const uint8_t* src0, 2884 const uint8_t* src1, 2885 const uint8_t* alpha, 2886 uint8_t* dst, 2887 int width); 2888 void BlendPlaneRow_Any_AVX2(const uint8_t* y_buf, 2889 const uint8_t* u_buf, 2890 const uint8_t* v_buf, 2891 uint8_t* dst_ptr, 2892 int width); 2893 void BlendPlaneRow_MMI(const uint8_t* src0, 2894 const uint8_t* src1, 2895 const uint8_t* alpha, 2896 uint8_t* dst, 2897 int width); 2898 void BlendPlaneRow_Any_MMI(const uint8_t* y_buf, 2899 const uint8_t* u_buf, 2900 const uint8_t* v_buf, 2901 uint8_t* dst_ptr, 2902 int width); 2903 void BlendPlaneRow_C(const uint8_t* src0, 2904 const uint8_t* src1, 2905 const uint8_t* alpha, 2906 uint8_t* dst, 2907 int width); 2908 2909 // ARGB multiply images. Same API as Blend, but these require 2910 // pointer and width alignment for SSE2. 2911 void ARGBMultiplyRow_C(const uint8_t* src_argb0, 2912 const uint8_t* src_argb1, 2913 uint8_t* dst_argb, 2914 int width); 2915 void ARGBMultiplyRow_SSE2(const uint8_t* src_argb0, 2916 const uint8_t* src_argb1, 2917 uint8_t* dst_argb, 2918 int width); 2919 void ARGBMultiplyRow_Any_SSE2(const uint8_t* y_buf, 2920 const uint8_t* uv_buf, 2921 uint8_t* dst_ptr, 2922 int width); 2923 void ARGBMultiplyRow_AVX2(const uint8_t* src_argb0, 2924 const uint8_t* src_argb1, 2925 uint8_t* dst_argb, 2926 int width); 2927 void ARGBMultiplyRow_Any_AVX2(const uint8_t* y_buf, 2928 const uint8_t* uv_buf, 2929 uint8_t* dst_ptr, 2930 int width); 2931 void ARGBMultiplyRow_NEON(const uint8_t* src_argb0, 2932 const uint8_t* src_argb1, 2933 uint8_t* dst_argb, 2934 int width); 2935 void ARGBMultiplyRow_Any_NEON(const uint8_t* y_buf, 2936 const uint8_t* uv_buf, 2937 uint8_t* dst_ptr, 2938 int width); 2939 void ARGBMultiplyRow_MSA(const uint8_t* src_argb0, 2940 const uint8_t* src_argb1, 2941 uint8_t* dst_argb, 2942 int width); 2943 void ARGBMultiplyRow_Any_MSA(const uint8_t* y_buf, 2944 const uint8_t* uv_buf, 2945 uint8_t* dst_ptr, 2946 int width); 2947 void ARGBMultiplyRow_MMI(const uint8_t* src_argb0, 2948 const uint8_t* src_argb1, 2949 uint8_t* dst_argb, 2950 int width); 2951 void ARGBMultiplyRow_Any_MMI(const uint8_t* y_buf, 2952 const uint8_t* uv_buf, 2953 uint8_t* dst_ptr, 2954 int width); 2955 2956 // ARGB add images. 2957 void ARGBAddRow_C(const uint8_t* src_argb0, 2958 const uint8_t* src_argb1, 2959 uint8_t* dst_argb, 2960 int width); 2961 void ARGBAddRow_SSE2(const uint8_t* src_argb0, 2962 const uint8_t* src_argb1, 2963 uint8_t* dst_argb, 2964 int width); 2965 void ARGBAddRow_Any_SSE2(const uint8_t* y_buf, 2966 const uint8_t* uv_buf, 2967 uint8_t* dst_ptr, 2968 int width); 2969 void ARGBAddRow_AVX2(const uint8_t* src_argb0, 2970 const uint8_t* src_argb1, 2971 uint8_t* dst_argb, 2972 int width); 2973 void ARGBAddRow_Any_AVX2(const uint8_t* y_buf, 2974 const uint8_t* uv_buf, 2975 uint8_t* dst_ptr, 2976 int width); 2977 void ARGBAddRow_NEON(const uint8_t* src_argb0, 2978 const uint8_t* src_argb1, 2979 uint8_t* dst_argb, 2980 int width); 2981 void ARGBAddRow_Any_NEON(const uint8_t* y_buf, 2982 const uint8_t* uv_buf, 2983 uint8_t* dst_ptr, 2984 int width); 2985 void ARGBAddRow_MSA(const uint8_t* src_argb0, 2986 const uint8_t* src_argb1, 2987 uint8_t* dst_argb, 2988 int width); 2989 void ARGBAddRow_Any_MSA(const uint8_t* y_buf, 2990 const uint8_t* uv_buf, 2991 uint8_t* dst_ptr, 2992 int width); 2993 void ARGBAddRow_MMI(const uint8_t* src_argb0, 2994 const uint8_t* src_argb1, 2995 uint8_t* dst_argb, 2996 int width); 2997 void ARGBAddRow_Any_MMI(const uint8_t* y_buf, 2998 const uint8_t* uv_buf, 2999 uint8_t* dst_ptr, 3000 int width); 3001 3002 // ARGB subtract images. Same API as Blend, but these require 3003 // pointer and width alignment for SSE2. 3004 void ARGBSubtractRow_C(const uint8_t* src_argb0, 3005 const uint8_t* src_argb1, 3006 uint8_t* dst_argb, 3007 int width); 3008 void ARGBSubtractRow_SSE2(const uint8_t* src_argb0, 3009 const uint8_t* src_argb1, 3010 uint8_t* dst_argb, 3011 int width); 3012 void ARGBSubtractRow_Any_SSE2(const uint8_t* y_buf, 3013 const uint8_t* uv_buf, 3014 uint8_t* dst_ptr, 3015 int width); 3016 void ARGBSubtractRow_AVX2(const uint8_t* src_argb0, 3017 const uint8_t* src_argb1, 3018 uint8_t* dst_argb, 3019 int width); 3020 void ARGBSubtractRow_Any_AVX2(const uint8_t* y_buf, 3021 const uint8_t* uv_buf, 3022 uint8_t* dst_ptr, 3023 int width); 3024 void ARGBSubtractRow_NEON(const uint8_t* src_argb0, 3025 const uint8_t* src_argb1, 3026 uint8_t* dst_argb, 3027 int width); 3028 void ARGBSubtractRow_Any_NEON(const uint8_t* y_buf, 3029 const uint8_t* uv_buf, 3030 uint8_t* dst_ptr, 3031 int width); 3032 void ARGBSubtractRow_MSA(const uint8_t* src_argb0, 3033 const uint8_t* src_argb1, 3034 uint8_t* dst_argb, 3035 int width); 3036 void ARGBSubtractRow_Any_MSA(const uint8_t* y_buf, 3037 const uint8_t* uv_buf, 3038 uint8_t* dst_ptr, 3039 int width); 3040 void ARGBSubtractRow_MMI(const uint8_t* src_argb0, 3041 const uint8_t* src_argb1, 3042 uint8_t* dst_argb, 3043 int width); 3044 void ARGBSubtractRow_Any_MMI(const uint8_t* y_buf, 3045 const uint8_t* uv_buf, 3046 uint8_t* dst_ptr, 3047 int width); 3048 3049 void ARGBToRGB24Row_Any_SSSE3(const uint8_t* src_ptr, 3050 uint8_t* dst_ptr, 3051 int width); 3052 void ARGBToRAWRow_Any_SSSE3(const uint8_t* src_ptr, 3053 uint8_t* dst_ptr, 3054 int width); 3055 void ARGBToRGB565Row_Any_SSE2(const uint8_t* src_ptr, 3056 uint8_t* dst_ptr, 3057 int width); 3058 void ARGBToARGB1555Row_Any_SSE2(const uint8_t* src_ptr, 3059 uint8_t* dst_ptr, 3060 int width); 3061 void ARGBToARGB4444Row_Any_SSE2(const uint8_t* src_ptr, 3062 uint8_t* dst_ptr, 3063 int width); 3064 void ABGRToAR30Row_Any_SSSE3(const uint8_t* src_ptr, 3065 uint8_t* dst_ptr, 3066 int width); 3067 void ARGBToAR30Row_Any_SSSE3(const uint8_t* src_ptr, 3068 uint8_t* dst_ptr, 3069 int width); 3070 void ARGBToRAWRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3071 void ARGBToRGB24Row_Any_AVX2(const uint8_t* src_ptr, 3072 uint8_t* dst_ptr, 3073 int width); 3074 void ARGBToRGB24Row_Any_AVX512VBMI(const uint8_t* src_ptr, 3075 uint8_t* dst_ptr, 3076 int width); 3077 void ARGBToRGB565DitherRow_Any_SSE2(const uint8_t* src_ptr, 3078 uint8_t* dst_ptr, 3079 const uint32_t param, 3080 int width); 3081 void ARGBToRGB565DitherRow_Any_AVX2(const uint8_t* src_ptr, 3082 uint8_t* dst_ptr, 3083 const uint32_t param, 3084 int width); 3085 3086 void ARGBToRGB565Row_Any_AVX2(const uint8_t* src_ptr, 3087 uint8_t* dst_ptr, 3088 int width); 3089 void ARGBToARGB1555Row_Any_AVX2(const uint8_t* src_ptr, 3090 uint8_t* dst_ptr, 3091 int width); 3092 void ARGBToARGB4444Row_Any_AVX2(const uint8_t* src_ptr, 3093 uint8_t* dst_ptr, 3094 int width); 3095 void ABGRToAR30Row_Any_AVX2(const uint8_t* src_ptr, 3096 uint8_t* dst_ptr, 3097 int width); 3098 void ARGBToAR30Row_Any_AVX2(const uint8_t* src_ptr, 3099 uint8_t* dst_ptr, 3100 int width); 3101 3102 void ARGBToRGB24Row_Any_NEON(const uint8_t* src_ptr, 3103 uint8_t* dst_ptr, 3104 int width); 3105 void ARGBToRAWRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3106 void ARGBToRGB565Row_Any_NEON(const uint8_t* src_ptr, 3107 uint8_t* dst_ptr, 3108 int width); 3109 void ARGBToARGB1555Row_Any_NEON(const uint8_t* src_ptr, 3110 uint8_t* dst_ptr, 3111 int width); 3112 void ARGBToARGB4444Row_Any_NEON(const uint8_t* src_ptr, 3113 uint8_t* dst_ptr, 3114 int width); 3115 void ARGBToRGB565DitherRow_Any_NEON(const uint8_t* src_ptr, 3116 uint8_t* dst_ptr, 3117 const uint32_t param, 3118 int width); 3119 void ARGBToRGB24Row_Any_MSA(const uint8_t* src_ptr, 3120 uint8_t* dst_ptr, 3121 int width); 3122 void ARGBToRAWRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3123 void ARGBToRGB565Row_Any_MSA(const uint8_t* src_ptr, 3124 uint8_t* dst_ptr, 3125 int width); 3126 void ARGBToARGB1555Row_Any_MSA(const uint8_t* src_ptr, 3127 uint8_t* dst_ptr, 3128 int width); 3129 void ARGBToARGB4444Row_Any_MSA(const uint8_t* src_ptr, 3130 uint8_t* dst_ptr, 3131 int width); 3132 void ARGBToRGB565DitherRow_Any_MSA(const uint8_t* src_ptr, 3133 uint8_t* dst_ptr, 3134 const uint32_t param, 3135 int width); 3136 3137 void ARGBToRGB24Row_Any_MMI(const uint8_t* src_ptr, 3138 uint8_t* dst_ptr, 3139 int width); 3140 void ARGBToRAWRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3141 void ARGBToRGB565Row_Any_MMI(const uint8_t* src_ptr, 3142 uint8_t* dst_ptr, 3143 int width); 3144 void ARGBToARGB1555Row_Any_MMI(const uint8_t* src_ptr, 3145 uint8_t* dst_ptr, 3146 int width); 3147 void ARGBToARGB4444Row_Any_MMI(const uint8_t* src_ptr, 3148 uint8_t* dst_ptr, 3149 int width); 3150 void ARGBToRGB565DitherRow_Any_MMI(const uint8_t* src_ptr, 3151 uint8_t* dst_ptr, 3152 const uint32_t param, 3153 int width); 3154 3155 void I444ToARGBRow_Any_NEON(const uint8_t* y_buf, 3156 const uint8_t* u_buf, 3157 const uint8_t* v_buf, 3158 uint8_t* dst_ptr, 3159 const struct YuvConstants* yuvconstants, 3160 int width); 3161 void I422ToARGBRow_Any_NEON(const uint8_t* y_buf, 3162 const uint8_t* u_buf, 3163 const uint8_t* v_buf, 3164 uint8_t* dst_ptr, 3165 const struct YuvConstants* yuvconstants, 3166 int width); 3167 void I422AlphaToARGBRow_Any_NEON(const uint8_t* y_buf, 3168 const uint8_t* u_buf, 3169 const uint8_t* v_buf, 3170 const uint8_t* a_buf, 3171 uint8_t* dst_ptr, 3172 const struct YuvConstants* yuvconstants, 3173 int width); 3174 void I422ToRGBARow_Any_NEON(const uint8_t* y_buf, 3175 const uint8_t* u_buf, 3176 const uint8_t* v_buf, 3177 uint8_t* dst_ptr, 3178 const struct YuvConstants* yuvconstants, 3179 int width); 3180 void I422ToRGB24Row_Any_NEON(const uint8_t* y_buf, 3181 const uint8_t* u_buf, 3182 const uint8_t* v_buf, 3183 uint8_t* dst_ptr, 3184 const struct YuvConstants* yuvconstants, 3185 int width); 3186 void I422ToARGB4444Row_Any_NEON(const uint8_t* y_buf, 3187 const uint8_t* u_buf, 3188 const uint8_t* v_buf, 3189 uint8_t* dst_ptr, 3190 const struct YuvConstants* yuvconstants, 3191 int width); 3192 void I422ToARGB1555Row_Any_NEON(const uint8_t* y_buf, 3193 const uint8_t* u_buf, 3194 const uint8_t* v_buf, 3195 uint8_t* dst_ptr, 3196 const struct YuvConstants* yuvconstants, 3197 int width); 3198 void I422ToRGB565Row_Any_NEON(const uint8_t* y_buf, 3199 const uint8_t* u_buf, 3200 const uint8_t* v_buf, 3201 uint8_t* dst_ptr, 3202 const struct YuvConstants* yuvconstants, 3203 int width); 3204 void NV12ToARGBRow_Any_NEON(const uint8_t* y_buf, 3205 const uint8_t* uv_buf, 3206 uint8_t* dst_ptr, 3207 const struct YuvConstants* yuvconstants, 3208 int width); 3209 void NV21ToARGBRow_Any_NEON(const uint8_t* y_buf, 3210 const uint8_t* uv_buf, 3211 uint8_t* dst_ptr, 3212 const struct YuvConstants* yuvconstants, 3213 int width); 3214 void NV12ToRGB24Row_Any_NEON(const uint8_t* y_buf, 3215 const uint8_t* uv_buf, 3216 uint8_t* dst_ptr, 3217 const struct YuvConstants* yuvconstants, 3218 int width); 3219 void NV21ToRGB24Row_Any_NEON(const uint8_t* y_buf, 3220 const uint8_t* uv_buf, 3221 uint8_t* dst_ptr, 3222 const struct YuvConstants* yuvconstants, 3223 int width); 3224 void NV21ToYUV24Row_Any_NEON(const uint8_t* src_y, 3225 const uint8_t* src_vu, 3226 uint8_t* dst_yuv24, 3227 int width); 3228 void NV12ToRGB565Row_Any_NEON(const uint8_t* y_buf, 3229 const uint8_t* uv_buf, 3230 uint8_t* dst_ptr, 3231 const struct YuvConstants* yuvconstants, 3232 int width); 3233 void YUY2ToARGBRow_Any_NEON(const uint8_t* src_ptr, 3234 uint8_t* dst_ptr, 3235 const struct YuvConstants* yuvconstants, 3236 int width); 3237 void UYVYToARGBRow_Any_NEON(const uint8_t* src_ptr, 3238 uint8_t* dst_ptr, 3239 const struct YuvConstants* yuvconstants, 3240 int width); 3241 void I444ToARGBRow_Any_MSA(const uint8_t* y_buf, 3242 const uint8_t* u_buf, 3243 const uint8_t* v_buf, 3244 uint8_t* dst_ptr, 3245 const struct YuvConstants* yuvconstants, 3246 int width); 3247 void I444ToARGBRow_Any_MMI(const uint8_t* y_buf, 3248 const uint8_t* u_buf, 3249 const uint8_t* v_buf, 3250 uint8_t* dst_ptr, 3251 const struct YuvConstants* yuvconstants, 3252 int width); 3253 void I422ToARGBRow_Any_MSA(const uint8_t* y_buf, 3254 const uint8_t* u_buf, 3255 const uint8_t* v_buf, 3256 uint8_t* dst_ptr, 3257 const struct YuvConstants* yuvconstants, 3258 int width); 3259 void I422ToARGBRow_Any_MMI(const uint8_t* y_buf, 3260 const uint8_t* u_buf, 3261 const uint8_t* v_buf, 3262 uint8_t* dst_ptr, 3263 const struct YuvConstants* yuvconstants, 3264 int width); 3265 void I422ToRGBARow_Any_MSA(const uint8_t* y_buf, 3266 const uint8_t* u_buf, 3267 const uint8_t* v_buf, 3268 uint8_t* dst_ptr, 3269 const struct YuvConstants* yuvconstants, 3270 int width); 3271 void I422AlphaToARGBRow_Any_MSA(const uint8_t* y_buf, 3272 const uint8_t* u_buf, 3273 const uint8_t* v_buf, 3274 const uint8_t* a_buf, 3275 uint8_t* dst_ptr, 3276 const struct YuvConstants* yuvconstants, 3277 int width); 3278 void I422ToRGB24Row_Any_MSA(const uint8_t* y_buf, 3279 const uint8_t* u_buf, 3280 const uint8_t* v_buf, 3281 uint8_t* dst_ptr, 3282 const struct YuvConstants* yuvconstants, 3283 int width); 3284 void I422ToRGB565Row_Any_MSA(const uint8_t* y_buf, 3285 const uint8_t* u_buf, 3286 const uint8_t* v_buf, 3287 uint8_t* dst_ptr, 3288 const struct YuvConstants* yuvconstants, 3289 int width); 3290 void I422ToARGB4444Row_Any_MSA(const uint8_t* y_buf, 3291 const uint8_t* u_buf, 3292 const uint8_t* v_buf, 3293 uint8_t* dst_ptr, 3294 const struct YuvConstants* yuvconstants, 3295 int width); 3296 void I422ToARGB1555Row_Any_MSA(const uint8_t* y_buf, 3297 const uint8_t* u_buf, 3298 const uint8_t* v_buf, 3299 uint8_t* dst_ptr, 3300 const struct YuvConstants* yuvconstants, 3301 int width); 3302 void NV12ToARGBRow_Any_MSA(const uint8_t* y_buf, 3303 const uint8_t* uv_buf, 3304 uint8_t* dst_ptr, 3305 const struct YuvConstants* yuvconstants, 3306 int width); 3307 void NV12ToRGB565Row_Any_MSA(const uint8_t* y_buf, 3308 const uint8_t* uv_buf, 3309 uint8_t* dst_ptr, 3310 const struct YuvConstants* yuvconstants, 3311 int width); 3312 void NV21ToARGBRow_Any_MSA(const uint8_t* y_buf, 3313 const uint8_t* uv_buf, 3314 uint8_t* dst_ptr, 3315 const struct YuvConstants* yuvconstants, 3316 int width); 3317 void YUY2ToARGBRow_Any_MSA(const uint8_t* src_ptr, 3318 uint8_t* dst_ptr, 3319 const struct YuvConstants* yuvconstants, 3320 int width); 3321 void UYVYToARGBRow_Any_MSA(const uint8_t* src_ptr, 3322 uint8_t* dst_ptr, 3323 const struct YuvConstants* yuvconstants, 3324 int width); 3325 3326 void YUY2ToYRow_AVX2(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 3327 void YUY2ToUVRow_AVX2(const uint8_t* src_yuy2, 3328 int stride_yuy2, 3329 uint8_t* dst_u, 3330 uint8_t* dst_v, 3331 int width); 3332 void YUY2ToUV422Row_AVX2(const uint8_t* src_yuy2, 3333 uint8_t* dst_u, 3334 uint8_t* dst_v, 3335 int width); 3336 void YUY2ToYRow_SSE2(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 3337 void YUY2ToUVRow_SSE2(const uint8_t* src_yuy2, 3338 int stride_yuy2, 3339 uint8_t* dst_u, 3340 uint8_t* dst_v, 3341 int width); 3342 void YUY2ToUV422Row_SSE2(const uint8_t* src_yuy2, 3343 uint8_t* dst_u, 3344 uint8_t* dst_v, 3345 int width); 3346 void YUY2ToYRow_NEON(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 3347 void YUY2ToUVRow_NEON(const uint8_t* src_yuy2, 3348 int stride_yuy2, 3349 uint8_t* dst_u, 3350 uint8_t* dst_v, 3351 int width); 3352 void YUY2ToUV422Row_NEON(const uint8_t* src_yuy2, 3353 uint8_t* dst_u, 3354 uint8_t* dst_v, 3355 int width); 3356 void YUY2ToYRow_MSA(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 3357 void YUY2ToYRow_MMI(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 3358 void YUY2ToUVRow_MSA(const uint8_t* src_yuy2, 3359 int src_stride_yuy2, 3360 uint8_t* dst_u, 3361 uint8_t* dst_v, 3362 int width); 3363 void YUY2ToUVRow_MMI(const uint8_t* src_yuy2, 3364 int src_stride_yuy2, 3365 uint8_t* dst_u, 3366 uint8_t* dst_v, 3367 int width); 3368 void YUY2ToUV422Row_MSA(const uint8_t* src_yuy2, 3369 uint8_t* dst_u, 3370 uint8_t* dst_v, 3371 int width); 3372 void YUY2ToUV422Row_MMI(const uint8_t* src_yuy2, 3373 uint8_t* dst_u, 3374 uint8_t* dst_v, 3375 int width); 3376 void YUY2ToYRow_C(const uint8_t* src_yuy2, uint8_t* dst_y, int width); 3377 void YUY2ToUVRow_C(const uint8_t* src_yuy2, 3378 int src_stride_yuy2, 3379 uint8_t* dst_u, 3380 uint8_t* dst_v, 3381 int width); 3382 void YUY2ToUV422Row_C(const uint8_t* src_yuy2, 3383 uint8_t* dst_u, 3384 uint8_t* dst_v, 3385 int width); 3386 void YUY2ToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3387 void YUY2ToUVRow_Any_AVX2(const uint8_t* src_ptr, 3388 int src_stride_ptr, 3389 uint8_t* dst_u, 3390 uint8_t* dst_v, 3391 int width); 3392 void YUY2ToUV422Row_Any_AVX2(const uint8_t* src_ptr, 3393 uint8_t* dst_u, 3394 uint8_t* dst_v, 3395 int width); 3396 void YUY2ToYRow_Any_SSE2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3397 void YUY2ToUVRow_Any_SSE2(const uint8_t* src_ptr, 3398 int src_stride_ptr, 3399 uint8_t* dst_u, 3400 uint8_t* dst_v, 3401 int width); 3402 void YUY2ToUV422Row_Any_SSE2(const uint8_t* src_ptr, 3403 uint8_t* dst_u, 3404 uint8_t* dst_v, 3405 int width); 3406 void YUY2ToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3407 void YUY2ToUVRow_Any_NEON(const uint8_t* src_ptr, 3408 int src_stride_ptr, 3409 uint8_t* dst_u, 3410 uint8_t* dst_v, 3411 int width); 3412 void YUY2ToUV422Row_Any_NEON(const uint8_t* src_ptr, 3413 uint8_t* dst_u, 3414 uint8_t* dst_v, 3415 int width); 3416 void YUY2ToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3417 void YUY2ToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3418 void YUY2ToUVRow_Any_MSA(const uint8_t* src_ptr, 3419 int src_stride_ptr, 3420 uint8_t* dst_u, 3421 uint8_t* dst_v, 3422 int width); 3423 void YUY2ToUVRow_Any_MMI(const uint8_t* src_ptr, 3424 int src_stride_ptr, 3425 uint8_t* dst_u, 3426 uint8_t* dst_v, 3427 int width); 3428 void YUY2ToUV422Row_Any_MSA(const uint8_t* src_ptr, 3429 uint8_t* dst_u, 3430 uint8_t* dst_v, 3431 int width); 3432 void YUY2ToUV422Row_Any_MMI(const uint8_t* src_ptr, 3433 uint8_t* dst_u, 3434 uint8_t* dst_v, 3435 int width); 3436 void UYVYToYRow_AVX2(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 3437 void UYVYToUVRow_AVX2(const uint8_t* src_uyvy, 3438 int stride_uyvy, 3439 uint8_t* dst_u, 3440 uint8_t* dst_v, 3441 int width); 3442 void UYVYToUV422Row_AVX2(const uint8_t* src_uyvy, 3443 uint8_t* dst_u, 3444 uint8_t* dst_v, 3445 int width); 3446 void UYVYToYRow_SSE2(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 3447 void UYVYToUVRow_SSE2(const uint8_t* src_uyvy, 3448 int stride_uyvy, 3449 uint8_t* dst_u, 3450 uint8_t* dst_v, 3451 int width); 3452 void UYVYToUV422Row_SSE2(const uint8_t* src_uyvy, 3453 uint8_t* dst_u, 3454 uint8_t* dst_v, 3455 int width); 3456 void UYVYToYRow_AVX2(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 3457 void UYVYToUVRow_AVX2(const uint8_t* src_uyvy, 3458 int stride_uyvy, 3459 uint8_t* dst_u, 3460 uint8_t* dst_v, 3461 int width); 3462 void UYVYToUV422Row_AVX2(const uint8_t* src_uyvy, 3463 uint8_t* dst_u, 3464 uint8_t* dst_v, 3465 int width); 3466 void UYVYToYRow_NEON(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 3467 void UYVYToUVRow_NEON(const uint8_t* src_uyvy, 3468 int stride_uyvy, 3469 uint8_t* dst_u, 3470 uint8_t* dst_v, 3471 int width); 3472 void UYVYToUV422Row_NEON(const uint8_t* src_uyvy, 3473 uint8_t* dst_u, 3474 uint8_t* dst_v, 3475 int width); 3476 void UYVYToYRow_MSA(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 3477 void UYVYToYRow_MMI(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 3478 void UYVYToUVRow_MSA(const uint8_t* src_uyvy, 3479 int src_stride_uyvy, 3480 uint8_t* dst_u, 3481 uint8_t* dst_v, 3482 int width); 3483 void UYVYToUVRow_MMI(const uint8_t* src_uyvy, 3484 int src_stride_uyvy, 3485 uint8_t* dst_u, 3486 uint8_t* dst_v, 3487 int width); 3488 void UYVYToUV422Row_MSA(const uint8_t* src_uyvy, 3489 uint8_t* dst_u, 3490 uint8_t* dst_v, 3491 int width); 3492 void UYVYToUV422Row_MMI(const uint8_t* src_uyvy, 3493 uint8_t* dst_u, 3494 uint8_t* dst_v, 3495 int width); 3496 3497 void UYVYToYRow_C(const uint8_t* src_uyvy, uint8_t* dst_y, int width); 3498 void UYVYToUVRow_C(const uint8_t* src_uyvy, 3499 int src_stride_uyvy, 3500 uint8_t* dst_u, 3501 uint8_t* dst_v, 3502 int width); 3503 void UYVYToUV422Row_C(const uint8_t* src_uyvy, 3504 uint8_t* dst_u, 3505 uint8_t* dst_v, 3506 int width); 3507 void UYVYToYRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3508 void UYVYToUVRow_Any_AVX2(const uint8_t* src_ptr, 3509 int src_stride_ptr, 3510 uint8_t* dst_u, 3511 uint8_t* dst_v, 3512 int width); 3513 void UYVYToUV422Row_Any_AVX2(const uint8_t* src_ptr, 3514 uint8_t* dst_u, 3515 uint8_t* dst_v, 3516 int width); 3517 void UYVYToYRow_Any_SSE2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3518 void UYVYToUVRow_Any_SSE2(const uint8_t* src_ptr, 3519 int src_stride_ptr, 3520 uint8_t* dst_u, 3521 uint8_t* dst_v, 3522 int width); 3523 void UYVYToUV422Row_Any_SSE2(const uint8_t* src_ptr, 3524 uint8_t* dst_u, 3525 uint8_t* dst_v, 3526 int width); 3527 void UYVYToYRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3528 void UYVYToUVRow_Any_NEON(const uint8_t* src_ptr, 3529 int src_stride_ptr, 3530 uint8_t* dst_u, 3531 uint8_t* dst_v, 3532 int width); 3533 void UYVYToUV422Row_Any_NEON(const uint8_t* src_ptr, 3534 uint8_t* dst_u, 3535 uint8_t* dst_v, 3536 int width); 3537 void UYVYToYRow_Any_MSA(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3538 void UYVYToYRow_Any_MMI(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3539 void UYVYToUVRow_Any_MSA(const uint8_t* src_ptr, 3540 int src_stride_ptr, 3541 uint8_t* dst_u, 3542 uint8_t* dst_v, 3543 int width); 3544 void UYVYToUVRow_Any_MMI(const uint8_t* src_ptr, 3545 int src_stride_ptr, 3546 uint8_t* dst_u, 3547 uint8_t* dst_v, 3548 int width); 3549 void UYVYToUV422Row_Any_MSA(const uint8_t* src_ptr, 3550 uint8_t* dst_u, 3551 uint8_t* dst_v, 3552 int width); 3553 void UYVYToUV422Row_Any_MMI(const uint8_t* src_ptr, 3554 uint8_t* dst_u, 3555 uint8_t* dst_v, 3556 int width); 3557 void SwapUVRow_C(const uint8_t* src_uv, uint8_t* dst_vu, int width); 3558 void SwapUVRow_NEON(const uint8_t* src_uv, uint8_t* dst_vu, int width); 3559 void SwapUVRow_Any_NEON(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3560 void SwapUVRow_SSSE3(const uint8_t* src_uv, uint8_t* dst_vu, int width); 3561 void SwapUVRow_Any_SSSE3(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3562 void SwapUVRow_AVX2(const uint8_t* src_uv, uint8_t* dst_vu, int width); 3563 void SwapUVRow_Any_AVX2(const uint8_t* src_ptr, uint8_t* dst_ptr, int width); 3564 void AYUVToYRow_C(const uint8_t* src_ayuv, uint8_t* dst_y, int width); 3565 void AYUVToUVRow_C(const uint8_t* src_ayuv, 3566 int stride_ayuv, 3567 uint8_t* dst_uv, 3568 int width); 3569 void AYUVToVURow_C(const uint8_t* src_ayuv, 3570 int stride_ayuv, 3571 uint8_t* dst_vu, 3572 int width); 3573 void AYUVToYRow_NEON(const uint8_t* src_ayuv, uint8_t* dst_y, int width); 3574 void AYUVToUVRow_NEON(const uint8_t* src_ayuv, 3575 int stride_ayuv, 3576 uint8_t* dst_uv, 3577 int width); 3578 void AYUVToVURow_NEON(const uint8_t* src_ayuv, 3579 int stride_ayuv, 3580 uint8_t* dst_vu, 3581 int width); 3582 void AYUVToYRow_Any_NEON(const uint8_t* src_ayuv, uint8_t* dst_y, int width); 3583 void AYUVToUVRow_Any_NEON(const uint8_t* src_ayuv, 3584 int stride_ayuv, 3585 uint8_t* dst_uv, 3586 int width); 3587 void AYUVToVURow_Any_NEON(const uint8_t* src_ayuv, 3588 int stride_ayuv, 3589 uint8_t* dst_vu, 3590 int width); 3591 3592 void I422ToYUY2Row_C(const uint8_t* src_y, 3593 const uint8_t* src_u, 3594 const uint8_t* src_v, 3595 uint8_t* dst_frame, 3596 int width); 3597 void I422ToUYVYRow_C(const uint8_t* src_y, 3598 const uint8_t* src_u, 3599 const uint8_t* src_v, 3600 uint8_t* dst_frame, 3601 int width); 3602 void I422ToYUY2Row_SSE2(const uint8_t* src_y, 3603 const uint8_t* src_u, 3604 const uint8_t* src_v, 3605 uint8_t* dst_yuy2, 3606 int width); 3607 void I422ToUYVYRow_SSE2(const uint8_t* src_y, 3608 const uint8_t* src_u, 3609 const uint8_t* src_v, 3610 uint8_t* dst_uyvy, 3611 int width); 3612 void I422ToYUY2Row_Any_SSE2(const uint8_t* y_buf, 3613 const uint8_t* u_buf, 3614 const uint8_t* v_buf, 3615 uint8_t* dst_ptr, 3616 int width); 3617 void I422ToUYVYRow_Any_SSE2(const uint8_t* y_buf, 3618 const uint8_t* u_buf, 3619 const uint8_t* v_buf, 3620 uint8_t* dst_ptr, 3621 int width); 3622 void I422ToYUY2Row_AVX2(const uint8_t* src_y, 3623 const uint8_t* src_u, 3624 const uint8_t* src_v, 3625 uint8_t* dst_yuy2, 3626 int width); 3627 void I422ToUYVYRow_AVX2(const uint8_t* src_y, 3628 const uint8_t* src_u, 3629 const uint8_t* src_v, 3630 uint8_t* dst_uyvy, 3631 int width); 3632 void I422ToYUY2Row_Any_AVX2(const uint8_t* y_buf, 3633 const uint8_t* u_buf, 3634 const uint8_t* v_buf, 3635 uint8_t* dst_ptr, 3636 int width); 3637 void I422ToUYVYRow_Any_AVX2(const uint8_t* y_buf, 3638 const uint8_t* u_buf, 3639 const uint8_t* v_buf, 3640 uint8_t* dst_ptr, 3641 int width); 3642 void I422ToYUY2Row_NEON(const uint8_t* src_y, 3643 const uint8_t* src_u, 3644 const uint8_t* src_v, 3645 uint8_t* dst_yuy2, 3646 int width); 3647 void I422ToUYVYRow_NEON(const uint8_t* src_y, 3648 const uint8_t* src_u, 3649 const uint8_t* src_v, 3650 uint8_t* dst_uyvy, 3651 int width); 3652 void I422ToYUY2Row_Any_NEON(const uint8_t* y_buf, 3653 const uint8_t* u_buf, 3654 const uint8_t* v_buf, 3655 uint8_t* dst_ptr, 3656 int width); 3657 void I422ToUYVYRow_Any_NEON(const uint8_t* y_buf, 3658 const uint8_t* u_buf, 3659 const uint8_t* v_buf, 3660 uint8_t* dst_ptr, 3661 int width); 3662 void I422ToYUY2Row_MSA(const uint8_t* src_y, 3663 const uint8_t* src_u, 3664 const uint8_t* src_v, 3665 uint8_t* dst_yuy2, 3666 int width); 3667 void I422ToYUY2Row_MMI(const uint8_t* src_y, 3668 const uint8_t* src_u, 3669 const uint8_t* src_v, 3670 uint8_t* dst_yuy2, 3671 int width); 3672 void I422ToUYVYRow_MSA(const uint8_t* src_y, 3673 const uint8_t* src_u, 3674 const uint8_t* src_v, 3675 uint8_t* dst_uyvy, 3676 int width); 3677 void I422ToUYVYRow_MMI(const uint8_t* src_y, 3678 const uint8_t* src_u, 3679 const uint8_t* src_v, 3680 uint8_t* dst_uyvy, 3681 int width); 3682 void I422ToYUY2Row_Any_MSA(const uint8_t* y_buf, 3683 const uint8_t* u_buf, 3684 const uint8_t* v_buf, 3685 uint8_t* dst_ptr, 3686 int width); 3687 void I422ToYUY2Row_Any_MMI(const uint8_t* y_buf, 3688 const uint8_t* u_buf, 3689 const uint8_t* v_buf, 3690 uint8_t* dst_ptr, 3691 int width); 3692 void I422ToUYVYRow_Any_MSA(const uint8_t* y_buf, 3693 const uint8_t* u_buf, 3694 const uint8_t* v_buf, 3695 uint8_t* dst_ptr, 3696 int width); 3697 void I422ToUYVYRow_Any_MMI(const uint8_t* y_buf, 3698 const uint8_t* u_buf, 3699 const uint8_t* v_buf, 3700 uint8_t* dst_ptr, 3701 int width); 3702 3703 // Effects related row functions. 3704 void ARGBAttenuateRow_C(const uint8_t* src_argb, uint8_t* dst_argb, int width); 3705 void ARGBAttenuateRow_SSSE3(const uint8_t* src_argb, 3706 uint8_t* dst_argb, 3707 int width); 3708 void ARGBAttenuateRow_AVX2(const uint8_t* src_argb, 3709 uint8_t* dst_argb, 3710 int width); 3711 void ARGBAttenuateRow_NEON(const uint8_t* src_argb, 3712 uint8_t* dst_argb, 3713 int width); 3714 void ARGBAttenuateRow_MSA(const uint8_t* src_argb, 3715 uint8_t* dst_argb, 3716 int width); 3717 void ARGBAttenuateRow_MMI(const uint8_t* src_argb, 3718 uint8_t* dst_argb, 3719 int width); 3720 void ARGBAttenuateRow_Any_SSSE3(const uint8_t* src_ptr, 3721 uint8_t* dst_ptr, 3722 int width); 3723 void ARGBAttenuateRow_Any_AVX2(const uint8_t* src_ptr, 3724 uint8_t* dst_ptr, 3725 int width); 3726 void ARGBAttenuateRow_Any_NEON(const uint8_t* src_ptr, 3727 uint8_t* dst_ptr, 3728 int width); 3729 void ARGBAttenuateRow_Any_MSA(const uint8_t* src_ptr, 3730 uint8_t* dst_ptr, 3731 int width); 3732 void ARGBAttenuateRow_Any_MMI(const uint8_t* src_ptr, 3733 uint8_t* dst_ptr, 3734 int width); 3735 3736 // Inverse table for unattenuate, shared by C and SSE2. 3737 extern const uint32_t fixed_invtbl8[256]; 3738 void ARGBUnattenuateRow_C(const uint8_t* src_argb, 3739 uint8_t* dst_argb, 3740 int width); 3741 void ARGBUnattenuateRow_SSE2(const uint8_t* src_argb, 3742 uint8_t* dst_argb, 3743 int width); 3744 void ARGBUnattenuateRow_AVX2(const uint8_t* src_argb, 3745 uint8_t* dst_argb, 3746 int width); 3747 void ARGBUnattenuateRow_Any_SSE2(const uint8_t* src_ptr, 3748 uint8_t* dst_ptr, 3749 int width); 3750 void ARGBUnattenuateRow_Any_AVX2(const uint8_t* src_ptr, 3751 uint8_t* dst_ptr, 3752 int width); 3753 3754 void ARGBGrayRow_C(const uint8_t* src_argb, uint8_t* dst_argb, int width); 3755 void ARGBGrayRow_SSSE3(const uint8_t* src_argb, uint8_t* dst_argb, int width); 3756 void ARGBGrayRow_NEON(const uint8_t* src_argb, uint8_t* dst_argb, int width); 3757 void ARGBGrayRow_MSA(const uint8_t* src_argb, uint8_t* dst_argb, int width); 3758 void ARGBGrayRow_MMI(const uint8_t* src_argb, uint8_t* dst_argb, int width); 3759 3760 void ARGBSepiaRow_C(uint8_t* dst_argb, int width); 3761 void ARGBSepiaRow_SSSE3(uint8_t* dst_argb, int width); 3762 void ARGBSepiaRow_NEON(uint8_t* dst_argb, int width); 3763 void ARGBSepiaRow_MSA(uint8_t* dst_argb, int width); 3764 void ARGBSepiaRow_MMI(uint8_t* dst_argb, int width); 3765 3766 void ARGBColorMatrixRow_C(const uint8_t* src_argb, 3767 uint8_t* dst_argb, 3768 const int8_t* matrix_argb, 3769 int width); 3770 void ARGBColorMatrixRow_SSSE3(const uint8_t* src_argb, 3771 uint8_t* dst_argb, 3772 const int8_t* matrix_argb, 3773 int width); 3774 void ARGBColorMatrixRow_NEON(const uint8_t* src_argb, 3775 uint8_t* dst_argb, 3776 const int8_t* matrix_argb, 3777 int width); 3778 void ARGBColorMatrixRow_MSA(const uint8_t* src_argb, 3779 uint8_t* dst_argb, 3780 const int8_t* matrix_argb, 3781 int width); 3782 void ARGBColorMatrixRow_MMI(const uint8_t* src_argb, 3783 uint8_t* dst_argb, 3784 const int8_t* matrix_argb, 3785 int width); 3786 3787 void ARGBColorTableRow_C(uint8_t* dst_argb, 3788 const uint8_t* table_argb, 3789 int width); 3790 void ARGBColorTableRow_X86(uint8_t* dst_argb, 3791 const uint8_t* table_argb, 3792 int width); 3793 3794 void RGBColorTableRow_C(uint8_t* dst_argb, 3795 const uint8_t* table_argb, 3796 int width); 3797 void RGBColorTableRow_X86(uint8_t* dst_argb, 3798 const uint8_t* table_argb, 3799 int width); 3800 3801 void ARGBQuantizeRow_C(uint8_t* dst_argb, 3802 int scale, 3803 int interval_size, 3804 int interval_offset, 3805 int width); 3806 void ARGBQuantizeRow_SSE2(uint8_t* dst_argb, 3807 int scale, 3808 int interval_size, 3809 int interval_offset, 3810 int width); 3811 void ARGBQuantizeRow_NEON(uint8_t* dst_argb, 3812 int scale, 3813 int interval_size, 3814 int interval_offset, 3815 int width); 3816 void ARGBQuantizeRow_MSA(uint8_t* dst_argb, 3817 int scale, 3818 int interval_size, 3819 int interval_offset, 3820 int width); 3821 3822 void ARGBShadeRow_C(const uint8_t* src_argb, 3823 uint8_t* dst_argb, 3824 int width, 3825 uint32_t value); 3826 void ARGBShadeRow_SSE2(const uint8_t* src_argb, 3827 uint8_t* dst_argb, 3828 int width, 3829 uint32_t value); 3830 void ARGBShadeRow_NEON(const uint8_t* src_argb, 3831 uint8_t* dst_argb, 3832 int width, 3833 uint32_t value); 3834 void ARGBShadeRow_MSA(const uint8_t* src_argb, 3835 uint8_t* dst_argb, 3836 int width, 3837 uint32_t value); 3838 void ARGBShadeRow_MMI(const uint8_t* src_argb, 3839 uint8_t* dst_argb, 3840 int width, 3841 uint32_t value); 3842 3843 // Used for blur. 3844 void CumulativeSumToAverageRow_SSE2(const int32_t* topleft, 3845 const int32_t* botleft, 3846 int width, 3847 int area, 3848 uint8_t* dst, 3849 int count); 3850 void ComputeCumulativeSumRow_SSE2(const uint8_t* row, 3851 int32_t* cumsum, 3852 const int32_t* previous_cumsum, 3853 int width); 3854 3855 void ComputeCumulativeSumRow_MMI(const uint8_t* row, 3856 int32_t* cumsum, 3857 const int32_t* previous_cumsum, 3858 int width); 3859 3860 void CumulativeSumToAverageRow_C(const int32_t* tl, 3861 const int32_t* bl, 3862 int w, 3863 int area, 3864 uint8_t* dst, 3865 int count); 3866 void ComputeCumulativeSumRow_C(const uint8_t* row, 3867 int32_t* cumsum, 3868 const int32_t* previous_cumsum, 3869 int width); 3870 3871 LIBYUV_API 3872 void ARGBAffineRow_C(const uint8_t* src_argb, 3873 int src_argb_stride, 3874 uint8_t* dst_argb, 3875 const float* uv_dudv, 3876 int width); 3877 LIBYUV_API 3878 void ARGBAffineRow_SSE2(const uint8_t* src_argb, 3879 int src_argb_stride, 3880 uint8_t* dst_argb, 3881 const float* src_dudv, 3882 int width); 3883 3884 // Used for I420Scale, ARGBScale, and ARGBInterpolate. 3885 void InterpolateRow_C(uint8_t* dst_ptr, 3886 const uint8_t* src_ptr, 3887 ptrdiff_t src_stride, 3888 int width, 3889 int source_y_fraction); 3890 void InterpolateRow_SSSE3(uint8_t* dst_ptr, 3891 const uint8_t* src_ptr, 3892 ptrdiff_t src_stride, 3893 int dst_width, 3894 int source_y_fraction); 3895 void InterpolateRow_AVX2(uint8_t* dst_ptr, 3896 const uint8_t* src_ptr, 3897 ptrdiff_t src_stride, 3898 int dst_width, 3899 int source_y_fraction); 3900 void InterpolateRow_NEON(uint8_t* dst_ptr, 3901 const uint8_t* src_ptr, 3902 ptrdiff_t src_stride, 3903 int dst_width, 3904 int source_y_fraction); 3905 void InterpolateRow_MSA(uint8_t* dst_ptr, 3906 const uint8_t* src_ptr, 3907 ptrdiff_t src_stride, 3908 int width, 3909 int source_y_fraction); 3910 void InterpolateRow_MMI(uint8_t* dst_ptr, 3911 const uint8_t* src_ptr, 3912 ptrdiff_t src_stride, 3913 int width, 3914 int source_y_fraction); 3915 void InterpolateRow_Any_NEON(uint8_t* dst_ptr, 3916 const uint8_t* src_ptr, 3917 ptrdiff_t src_stride_ptr, 3918 int width, 3919 int source_y_fraction); 3920 void InterpolateRow_Any_SSSE3(uint8_t* dst_ptr, 3921 const uint8_t* src_ptr, 3922 ptrdiff_t src_stride_ptr, 3923 int width, 3924 int source_y_fraction); 3925 void InterpolateRow_Any_AVX2(uint8_t* dst_ptr, 3926 const uint8_t* src_ptr, 3927 ptrdiff_t src_stride_ptr, 3928 int width, 3929 int source_y_fraction); 3930 void InterpolateRow_Any_MSA(uint8_t* dst_ptr, 3931 const uint8_t* src_ptr, 3932 ptrdiff_t src_stride_ptr, 3933 int width, 3934 int source_y_fraction); 3935 void InterpolateRow_Any_MMI(uint8_t* dst_ptr, 3936 const uint8_t* src_ptr, 3937 ptrdiff_t src_stride_ptr, 3938 int width, 3939 int source_y_fraction); 3940 3941 void InterpolateRow_16_C(uint16_t* dst_ptr, 3942 const uint16_t* src_ptr, 3943 ptrdiff_t src_stride, 3944 int width, 3945 int source_y_fraction); 3946 3947 // Sobel images. 3948 void SobelXRow_C(const uint8_t* src_y0, 3949 const uint8_t* src_y1, 3950 const uint8_t* src_y2, 3951 uint8_t* dst_sobelx, 3952 int width); 3953 void SobelXRow_SSE2(const uint8_t* src_y0, 3954 const uint8_t* src_y1, 3955 const uint8_t* src_y2, 3956 uint8_t* dst_sobelx, 3957 int width); 3958 void SobelXRow_NEON(const uint8_t* src_y0, 3959 const uint8_t* src_y1, 3960 const uint8_t* src_y2, 3961 uint8_t* dst_sobelx, 3962 int width); 3963 void SobelXRow_MSA(const uint8_t* src_y0, 3964 const uint8_t* src_y1, 3965 const uint8_t* src_y2, 3966 uint8_t* dst_sobelx, 3967 int width); 3968 void SobelXRow_MMI(const uint8_t* src_y0, 3969 const uint8_t* src_y1, 3970 const uint8_t* src_y2, 3971 uint8_t* dst_sobelx, 3972 int width); 3973 void SobelYRow_C(const uint8_t* src_y0, 3974 const uint8_t* src_y1, 3975 uint8_t* dst_sobely, 3976 int width); 3977 void SobelYRow_SSE2(const uint8_t* src_y0, 3978 const uint8_t* src_y1, 3979 uint8_t* dst_sobely, 3980 int width); 3981 void SobelYRow_NEON(const uint8_t* src_y0, 3982 const uint8_t* src_y1, 3983 uint8_t* dst_sobely, 3984 int width); 3985 void SobelYRow_MSA(const uint8_t* src_y0, 3986 const uint8_t* src_y1, 3987 uint8_t* dst_sobely, 3988 int width); 3989 void SobelYRow_MMI(const uint8_t* src_y0, 3990 const uint8_t* src_y1, 3991 uint8_t* dst_sobely, 3992 int width); 3993 void SobelRow_C(const uint8_t* src_sobelx, 3994 const uint8_t* src_sobely, 3995 uint8_t* dst_argb, 3996 int width); 3997 void SobelRow_SSE2(const uint8_t* src_sobelx, 3998 const uint8_t* src_sobely, 3999 uint8_t* dst_argb, 4000 int width); 4001 void SobelRow_NEON(const uint8_t* src_sobelx, 4002 const uint8_t* src_sobely, 4003 uint8_t* dst_argb, 4004 int width); 4005 void SobelRow_MSA(const uint8_t* src_sobelx, 4006 const uint8_t* src_sobely, 4007 uint8_t* dst_argb, 4008 int width); 4009 void SobelRow_MMI(const uint8_t* src_sobelx, 4010 const uint8_t* src_sobely, 4011 uint8_t* dst_argb, 4012 int width); 4013 void SobelToPlaneRow_C(const uint8_t* src_sobelx, 4014 const uint8_t* src_sobely, 4015 uint8_t* dst_y, 4016 int width); 4017 void SobelToPlaneRow_SSE2(const uint8_t* src_sobelx, 4018 const uint8_t* src_sobely, 4019 uint8_t* dst_y, 4020 int width); 4021 void SobelToPlaneRow_NEON(const uint8_t* src_sobelx, 4022 const uint8_t* src_sobely, 4023 uint8_t* dst_y, 4024 int width); 4025 void SobelToPlaneRow_MSA(const uint8_t* src_sobelx, 4026 const uint8_t* src_sobely, 4027 uint8_t* dst_y, 4028 int width); 4029 void SobelToPlaneRow_MMI(const uint8_t* src_sobelx, 4030 const uint8_t* src_sobely, 4031 uint8_t* dst_y, 4032 int width); 4033 void SobelXYRow_C(const uint8_t* src_sobelx, 4034 const uint8_t* src_sobely, 4035 uint8_t* dst_argb, 4036 int width); 4037 void SobelXYRow_SSE2(const uint8_t* src_sobelx, 4038 const uint8_t* src_sobely, 4039 uint8_t* dst_argb, 4040 int width); 4041 void SobelXYRow_NEON(const uint8_t* src_sobelx, 4042 const uint8_t* src_sobely, 4043 uint8_t* dst_argb, 4044 int width); 4045 void SobelXYRow_MSA(const uint8_t* src_sobelx, 4046 const uint8_t* src_sobely, 4047 uint8_t* dst_argb, 4048 int width); 4049 void SobelXYRow_MMI(const uint8_t* src_sobelx, 4050 const uint8_t* src_sobely, 4051 uint8_t* dst_argb, 4052 int width); 4053 void SobelRow_Any_SSE2(const uint8_t* y_buf, 4054 const uint8_t* uv_buf, 4055 uint8_t* dst_ptr, 4056 int width); 4057 void SobelRow_Any_NEON(const uint8_t* y_buf, 4058 const uint8_t* uv_buf, 4059 uint8_t* dst_ptr, 4060 int width); 4061 void SobelRow_Any_MSA(const uint8_t* y_buf, 4062 const uint8_t* uv_buf, 4063 uint8_t* dst_ptr, 4064 int width); 4065 void SobelRow_Any_MMI(const uint8_t* y_buf, 4066 const uint8_t* uv_buf, 4067 uint8_t* dst_ptr, 4068 int width); 4069 void SobelToPlaneRow_Any_SSE2(const uint8_t* y_buf, 4070 const uint8_t* uv_buf, 4071 uint8_t* dst_ptr, 4072 int width); 4073 void SobelToPlaneRow_Any_NEON(const uint8_t* y_buf, 4074 const uint8_t* uv_buf, 4075 uint8_t* dst_ptr, 4076 int width); 4077 void SobelToPlaneRow_Any_MSA(const uint8_t* y_buf, 4078 const uint8_t* uv_buf, 4079 uint8_t* dst_ptr, 4080 int width); 4081 void SobelToPlaneRow_Any_MMI(const uint8_t* y_buf, 4082 const uint8_t* uv_buf, 4083 uint8_t* dst_ptr, 4084 int width); 4085 void SobelXYRow_Any_SSE2(const uint8_t* y_buf, 4086 const uint8_t* uv_buf, 4087 uint8_t* dst_ptr, 4088 int width); 4089 void SobelXYRow_Any_NEON(const uint8_t* y_buf, 4090 const uint8_t* uv_buf, 4091 uint8_t* dst_ptr, 4092 int width); 4093 void SobelXYRow_Any_MSA(const uint8_t* y_buf, 4094 const uint8_t* uv_buf, 4095 uint8_t* dst_ptr, 4096 int width); 4097 void SobelXYRow_Any_MMI(const uint8_t* y_buf, 4098 const uint8_t* uv_buf, 4099 uint8_t* dst_ptr, 4100 int width); 4101 4102 void ARGBPolynomialRow_C(const uint8_t* src_argb, 4103 uint8_t* dst_argb, 4104 const float* poly, 4105 int width); 4106 void ARGBPolynomialRow_SSE2(const uint8_t* src_argb, 4107 uint8_t* dst_argb, 4108 const float* poly, 4109 int width); 4110 void ARGBPolynomialRow_AVX2(const uint8_t* src_argb, 4111 uint8_t* dst_argb, 4112 const float* poly, 4113 int width); 4114 4115 // Scale and convert to half float. 4116 void HalfFloatRow_C(const uint16_t* src, uint16_t* dst, float scale, int width); 4117 void HalfFloatRow_SSE2(const uint16_t* src, 4118 uint16_t* dst, 4119 float scale, 4120 int width); 4121 void HalfFloatRow_Any_SSE2(const uint16_t* src_ptr, 4122 uint16_t* dst_ptr, 4123 float param, 4124 int width); 4125 void HalfFloatRow_AVX2(const uint16_t* src, 4126 uint16_t* dst, 4127 float scale, 4128 int width); 4129 void HalfFloatRow_Any_AVX2(const uint16_t* src_ptr, 4130 uint16_t* dst_ptr, 4131 float param, 4132 int width); 4133 void HalfFloatRow_F16C(const uint16_t* src, 4134 uint16_t* dst, 4135 float scale, 4136 int width); 4137 void HalfFloatRow_Any_F16C(const uint16_t* src, 4138 uint16_t* dst, 4139 float scale, 4140 int width); 4141 void HalfFloat1Row_F16C(const uint16_t* src, 4142 uint16_t* dst, 4143 float scale, 4144 int width); 4145 void HalfFloat1Row_Any_F16C(const uint16_t* src, 4146 uint16_t* dst, 4147 float scale, 4148 int width); 4149 void HalfFloatRow_NEON(const uint16_t* src, 4150 uint16_t* dst, 4151 float scale, 4152 int width); 4153 void HalfFloatRow_Any_NEON(const uint16_t* src_ptr, 4154 uint16_t* dst_ptr, 4155 float param, 4156 int width); 4157 void HalfFloat1Row_NEON(const uint16_t* src, 4158 uint16_t* dst, 4159 float scale, 4160 int width); 4161 void HalfFloat1Row_Any_NEON(const uint16_t* src_ptr, 4162 uint16_t* dst_ptr, 4163 float param, 4164 int width); 4165 void HalfFloatRow_MSA(const uint16_t* src, 4166 uint16_t* dst, 4167 float scale, 4168 int width); 4169 void HalfFloatRow_Any_MSA(const uint16_t* src_ptr, 4170 uint16_t* dst_ptr, 4171 float param, 4172 int width); 4173 void ByteToFloatRow_C(const uint8_t* src, float* dst, float scale, int width); 4174 void ByteToFloatRow_NEON(const uint8_t* src, 4175 float* dst, 4176 float scale, 4177 int width); 4178 void ByteToFloatRow_Any_NEON(const uint8_t* src_ptr, 4179 float* dst_ptr, 4180 float param, 4181 int width); 4182 4183 void ARGBLumaColorTableRow_C(const uint8_t* src_argb, 4184 uint8_t* dst_argb, 4185 int width, 4186 const uint8_t* luma, 4187 uint32_t lumacoeff); 4188 void ARGBLumaColorTableRow_SSSE3(const uint8_t* src_argb, 4189 uint8_t* dst_argb, 4190 int width, 4191 const uint8_t* luma, 4192 uint32_t lumacoeff); 4193 4194 float ScaleMaxSamples_C(const float* src, float* dst, float scale, int width); 4195 float ScaleMaxSamples_NEON(const float* src, 4196 float* dst, 4197 float scale, 4198 int width); 4199 float ScaleSumSamples_C(const float* src, float* dst, float scale, int width); 4200 float ScaleSumSamples_NEON(const float* src, 4201 float* dst, 4202 float scale, 4203 int width); 4204 void ScaleSamples_C(const float* src, float* dst, float scale, int width); 4205 void ScaleSamples_NEON(const float* src, float* dst, float scale, int width); 4206 4207 void I210ToARGBRow_MMI(const uint16_t* src_y, 4208 const uint16_t* src_u, 4209 const uint16_t* src_v, 4210 uint8_t* rgb_buf, 4211 const struct YuvConstants* yuvconstants, 4212 int width); 4213 void I422ToRGBARow_MMI(const uint8_t* src_y, 4214 const uint8_t* src_u, 4215 const uint8_t* src_v, 4216 uint8_t* dst_argb, 4217 const struct YuvConstants* yuvconstants, 4218 int width); 4219 void I422AlphaToARGBRow_MMI(const uint8_t* src_y, 4220 const uint8_t* src_u, 4221 const uint8_t* src_v, 4222 const uint8_t* src_a, 4223 uint8_t* dst_argb, 4224 const struct YuvConstants* yuvconstants, 4225 int width); 4226 void I422ToRGB24Row_MMI(const uint8_t* src_y, 4227 const uint8_t* src_u, 4228 const uint8_t* src_v, 4229 uint8_t* dst_argb, 4230 const struct YuvConstants* yuvconstants, 4231 int width); 4232 void I422ToRGB565Row_MMI(const uint8_t* src_y, 4233 const uint8_t* src_u, 4234 const uint8_t* src_v, 4235 uint8_t* dst_rgb565, 4236 const struct YuvConstants* yuvconstants, 4237 int width); 4238 void I422ToARGB4444Row_MMI(const uint8_t* src_y, 4239 const uint8_t* src_u, 4240 const uint8_t* src_v, 4241 uint8_t* dst_argb4444, 4242 const struct YuvConstants* yuvconstants, 4243 int width); 4244 void I422ToARGB1555Row_MMI(const uint8_t* src_y, 4245 const uint8_t* src_u, 4246 const uint8_t* src_v, 4247 uint8_t* dst_argb1555, 4248 const struct YuvConstants* yuvconstants, 4249 int width); 4250 void NV12ToARGBRow_MMI(const uint8_t* src_y, 4251 const uint8_t* src_uv, 4252 uint8_t* dst_argb, 4253 const struct YuvConstants* yuvconstants, 4254 int width); 4255 void NV12ToRGB565Row_MMI(const uint8_t* src_y, 4256 const uint8_t* src_uv, 4257 uint8_t* dst_rgb565, 4258 const struct YuvConstants* yuvconstants, 4259 int width); 4260 void NV21ToARGBRow_MMI(const uint8_t* src_y, 4261 const uint8_t* src_vu, 4262 uint8_t* dst_argb, 4263 const struct YuvConstants* yuvconstants, 4264 int width); 4265 void NV12ToRGB24Row_MMI(const uint8_t* src_y, 4266 const uint8_t* src_uv, 4267 uint8_t* dst_rgb24, 4268 const struct YuvConstants* yuvconstants, 4269 int width); 4270 void NV21ToRGB24Row_MMI(const uint8_t* src_y, 4271 const uint8_t* src_vu, 4272 uint8_t* dst_rgb24, 4273 const struct YuvConstants* yuvconstants, 4274 int width); 4275 void YUY2ToARGBRow_MMI(const uint8_t* src_yuy2, 4276 uint8_t* dst_argb, 4277 const struct YuvConstants* yuvconstants, 4278 int width); 4279 void UYVYToARGBRow_MMI(const uint8_t* src_uyvy, 4280 uint8_t* dst_argb, 4281 const struct YuvConstants* yuvconstants, 4282 int width); 4283 void I210ToARGBRow_Any_MMI(const uint16_t* y_buf, 4284 const uint16_t* u_buf, 4285 const uint16_t* v_buf, 4286 uint8_t* dst_ptr, 4287 const struct YuvConstants* yuvconstants, 4288 int width); 4289 void I422ToRGBARow_Any_MMI(const uint8_t* y_buf, 4290 const uint8_t* u_buf, 4291 const uint8_t* v_buf, 4292 uint8_t* dst_ptr, 4293 const struct YuvConstants* yuvconstants, 4294 int width); 4295 void I422AlphaToARGBRow_Any_MMI(const uint8_t* y_buf, 4296 const uint8_t* u_buf, 4297 const uint8_t* v_buf, 4298 const uint8_t* a_buf, 4299 uint8_t* dst_ptr, 4300 const struct YuvConstants* yuvconstants, 4301 int width); 4302 void I422ToRGB24Row_Any_MMI(const uint8_t* y_buf, 4303 const uint8_t* u_buf, 4304 const uint8_t* v_buf, 4305 uint8_t* dst_ptr, 4306 const struct YuvConstants* yuvconstants, 4307 int width); 4308 void I422ToRGB565Row_Any_MMI(const uint8_t* y_buf, 4309 const uint8_t* u_buf, 4310 const uint8_t* v_buf, 4311 uint8_t* dst_ptr, 4312 const struct YuvConstants* yuvconstants, 4313 int width); 4314 void I422ToARGB4444Row_Any_MMI(const uint8_t* y_buf, 4315 const uint8_t* u_buf, 4316 const uint8_t* v_buf, 4317 uint8_t* dst_ptr, 4318 const struct YuvConstants* yuvconstants, 4319 int width); 4320 void I422ToARGB1555Row_Any_MMI(const uint8_t* y_buf, 4321 const uint8_t* u_buf, 4322 const uint8_t* v_buf, 4323 uint8_t* dst_ptr, 4324 const struct YuvConstants* yuvconstants, 4325 int width); 4326 void NV12ToARGBRow_Any_MMI(const uint8_t* y_buf, 4327 const uint8_t* uv_buf, 4328 uint8_t* dst_ptr, 4329 const struct YuvConstants* yuvconstants, 4330 int width); 4331 void NV12ToRGB565Row_Any_MMI(const uint8_t* y_buf, 4332 const uint8_t* uv_buf, 4333 uint8_t* dst_ptr, 4334 const struct YuvConstants* yuvconstants, 4335 int width); 4336 void NV21ToARGBRow_Any_MMI(const uint8_t* y_buf, 4337 const uint8_t* uv_buf, 4338 uint8_t* dst_ptr, 4339 const struct YuvConstants* yuvconstants, 4340 int width); 4341 void NV12ToRGB24Row_Any_MMI(const uint8_t* y_buf, 4342 const uint8_t* uv_buf, 4343 uint8_t* dst_ptr, 4344 const struct YuvConstants* yuvconstants, 4345 int width); 4346 void NV21ToRGB24Row_Any_MMI(const uint8_t* y_buf, 4347 const uint8_t* uv_buf, 4348 uint8_t* dst_ptr, 4349 const struct YuvConstants* yuvconstants, 4350 int width); 4351 void YUY2ToARGBRow_Any_MMI(const uint8_t* src_ptr, 4352 uint8_t* dst_ptr, 4353 const struct YuvConstants* yuvconstants, 4354 int width); 4355 void UYVYToARGBRow_Any_MMI(const uint8_t* src_ptr, 4356 uint8_t* dst_ptr, 4357 const struct YuvConstants* yuvconstants, 4358 int width); 4359 4360 void GaussRow_F32_NEON(const float* src, float* dst, int width); 4361 void GaussRow_F32_C(const float* src, float* dst, int width); 4362 4363 void GaussCol_F32_NEON(const float* src0, 4364 const float* src1, 4365 const float* src2, 4366 const float* src3, 4367 const float* src4, 4368 float* dst, 4369 int width); 4370 4371 void GaussCol_F32_C(const float* src0, 4372 const float* src1, 4373 const float* src2, 4374 const float* src3, 4375 const float* src4, 4376 float* dst, 4377 int width); 4378 4379 #ifdef __cplusplus 4380 } // extern "C" 4381 } // namespace libyuv 4382 #endif 4383 4384 #endif // INCLUDE_LIBYUV_ROW_H_ 4385