133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp/* 233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * Copyright 2011 The LibYuv Project Authors. All rights reserved. 333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * 433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * Use of this source code is governed by a BSD-style license 533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * that can be found in the LICENSE file in the root of the source 633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * tree. An additional intellectual property rights grant can be found 7f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang * in the file PATENTS. All contributing project authors may 833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * be found in the AUTHORS file in the root of the source tree. 933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp */ 1033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 11b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#ifndef INCLUDE_LIBYUV_ROW_H_ 1233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define INCLUDE_LIBYUV_ROW_H_ 1333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 14f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#include <stdlib.h> // For malloc. 15f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include "libyuv/basic_types.h" 1733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus 1933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampnamespace libyuv { 2033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampextern "C" { 2133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 2233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 23b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a)-1))) 2433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 25b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define align_buffer_64(var, size) \ 26b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \ 27b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ 28f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 29f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define free_aligned_buffer_64(var) \ 30b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard free(var##_mem); \ 31f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang var = 0 32f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 33f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__pnacl__) || defined(__CLR_VER) || \ 34f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang (defined(__i386__) && !defined(__SSE2__)) 35f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define LIBYUV_DISABLE_X86 36f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 37f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// MemorySanitizer does not support assembly code yet. http://crbug.com/344505 38f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__has_feature) 39f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if __has_feature(memory_sanitizer) 40f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define LIBYUV_DISABLE_X86 41f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 4233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 4333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// True if compiling for SSSE3 as a requirement. 4433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3)) 4533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define LIBYUV_SSSE3_ONLY 4633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 4733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 48f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__native_client__) 49f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define LIBYUV_DISABLE_NEON 50f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 51f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// clang >= 3.5.0 required for Arm64. 52f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__clang__) && defined(__aarch64__) && !defined(LIBYUV_DISABLE_NEON) 53f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if (__clang_major__ < 3) || (__clang_major__ == 3 && (__clang_minor__ < 5)) 54f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define LIBYUV_DISABLE_NEON 55f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // clang >= 3.5 56f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // __clang__ 57f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 58f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// GCC >= 4.7.0 required for AVX2. 59f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) 60f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) 61f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define GCC_HAS_AVX2 1 62f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // GNUC >= 4.7 63f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // __GNUC__ 64f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 65f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// clang >= 3.4.0 required for AVX2. 66f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) 67f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4)) 68f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define CLANG_HAS_AVX2 1 69f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // clang >= 3.4 70f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // __clang__ 71f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 72f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Visual C 2012 required for AVX2. 73b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if defined(_M_IX86) && !defined(__clang__) && defined(_MSC_VER) && \ 74b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard _MSC_VER >= 1700 75f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define VISUALC_HAS_AVX2 1 76f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // VisualStudio >= 2012 77f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 7833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// The following are available on all x86 platforms: 79f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if !defined(LIBYUV_DISABLE_X86) && \ 8033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) 81f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Conversions: 8233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ABGRTOUVROW_SSSE3 8333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ABGRTOYROW_SSSE3 8433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGB1555TOARGBROW_SSE2 8533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGB4444TOARGBROW_SSE2 86b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBEXTRACTALPHAROW_SSE2 87f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSETROW_X86 88f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSHUFFLEROW_SSE2 89f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSHUFFLEROW_SSSE3 9033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOARGB1555ROW_SSE2 9133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOARGB4444ROW_SSE2 9233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORAWROW_SSSE3 9333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORGB24ROW_SSSE3 94f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTORGB565DITHERROW_SSE2 9533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORGB565ROW_SSE2 96f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOUV444ROW_SSSE3 97f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOUVJROW_SSSE3 9833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOUVROW_SSSE3 99f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOYJROW_SSSE3 10033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOYROW_SSSE3 10133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_BGRATOUVROW_SSSE3 10233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_BGRATOYROW_SSSE3 103f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_COPYROW_ERMS 10433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_COPYROW_SSE2 105f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_H422TOARGBROW_SSSE3 106b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_HALFFLOATROW_SSE2 10733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I400TOARGBROW_SSE2 108f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGB1555ROW_SSSE3 109f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGB4444ROW_SSSE3 11033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOARGBROW_SSSE3 111f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TORGB24ROW_SSSE3 112f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TORGB565ROW_SSSE3 113f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TORGBAROW_SSSE3 114f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOUYVYROW_SSE2 115f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOYUY2ROW_SSE2 11633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I444TOARGBROW_SSSE3 117f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_J400TOARGBROW_SSE2 118f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_J422TOARGBROW_SSSE3 119f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MERGEUVROW_SSE2 12033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_MIRRORROW_SSSE3 121f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MIRRORUVROW_SSSE3 12233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_NV12TOARGBROW_SSSE3 123f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_NV12TORGB565ROW_SSSE3 12433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_NV21TOARGBROW_SSSE3 12533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RAWTOARGBROW_SSSE3 126f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RAWTORGB24ROW_SSSE3 127f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RAWTOYROW_SSSE3 12833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGB24TOARGBROW_SSSE3 129f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB24TOYROW_SSSE3 13033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGB565TOARGBROW_SSE2 131f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGBATOUVROW_SSSE3 132f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGBATOYROW_SSSE3 133f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SETROW_ERMS 13433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_SETROW_X86 135f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SPLITUVROW_SSE2 136f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_UYVYTOARGBROW_SSSE3 13733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUV422ROW_SSE2 13833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUVROW_SSE2 13933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOYROW_SSE2 140f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_YUY2TOARGBROW_SSSE3 14133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUV422ROW_SSE2 14233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUVROW_SSE2 14333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOYROW_SSE2 14433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 145f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Effects: 146f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBADDROW_SSE2 14733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBAFFINEROW_SSE2 14833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBATTENUATEROW_SSSE3 14933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBBLENDROW_SSSE3 15033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBCOLORMATRIXROW_SSSE3 151f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBCOLORTABLEROW_X86 152f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBCOPYALPHAROW_SSE2 153f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBCOPYYTOALPHAROW_SSE2 15433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBGRAYROW_SSSE3 155f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBLUMACOLORTABLEROW_SSSE3 156f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBMIRRORROW_SSE2 157f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBMULTIPLYROW_SSE2 158f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBPOLYNOMIALROW_SSE2 15933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBQUANTIZEROW_SSE2 16033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBSEPIAROW_SSSE3 161f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSHADEROW_SSE2 162f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSUBTRACTROW_SSE2 16333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBUNATTENUATEROW_SSE2 164f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_BLENDPLANEROW_SSSE3 16533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_COMPUTECUMULATIVESUMROW_SSE2 166f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2 167f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_INTERPOLATEROW_SSSE3 168f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGBCOLORTABLEROW_X86 169f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELROW_SSE2 170f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELTOPLANEROW_SSE2 171f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELXROW_SSE2 172f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELXYROW_SSE2 173f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELYROW_SSE2 174f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 175f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// The following functions fail on gcc/clang 32 bit with fpic and framepointer. 176f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// caveat: clangcl uses row_win.cc which works. 177b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 178b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard defined(_MSC_VER) 179f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// TODO(fbarchard): fix build error on android_full_debug=1 180f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// https://code.google.com/p/libyuv/issues/detail?id=517 181f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422ALPHATOARGBROW_SSSE3 182f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 18333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 18433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 185f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// The following are available on all x86 platforms, but 186f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// require VS2012, clang 3.4 or gcc 4.7. 187f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// The code supports NaCL but requires a new compiler and validator. 188b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if !defined(LIBYUV_DISABLE_X86) && \ 189b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \ 190b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard defined(GCC_HAS_AVX2)) 191f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBCOPYALPHAROW_AVX2 192f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBCOPYYTOALPHAROW_AVX2 193b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBEXTRACTALPHAROW_AVX2 194f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBMIRRORROW_AVX2 195f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBPOLYNOMIALROW_AVX2 196f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSHUFFLEROW_AVX2 197f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTORGB565DITHERROW_AVX2 198f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOUVJROW_AVX2 199f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOUVROW_AVX2 200f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOYJROW_AVX2 201f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOYROW_AVX2 202f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_COPYROW_AVX 203f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_H422TOARGBROW_AVX2 204b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_HALFFLOATROW_AVX2 205b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// #define HAS_HALFFLOATROW_F16C // Enable to test halffloat cast 206f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I400TOARGBROW_AVX2 207f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGB1555ROW_AVX2 208f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGB4444ROW_AVX2 209f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGBROW_AVX2 210f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TORGB24ROW_AVX2 211f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TORGB565ROW_AVX2 212f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TORGBAROW_AVX2 213f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I444TOARGBROW_AVX2 214f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_INTERPOLATEROW_AVX2 215f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_J422TOARGBROW_AVX2 216f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MERGEUVROW_AVX2 217f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MIRRORROW_AVX2 218f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_NV12TOARGBROW_AVX2 219f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_NV12TORGB565ROW_AVX2 220f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_NV21TOARGBROW_AVX2 221f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SPLITUVROW_AVX2 222f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_UYVYTOARGBROW_AVX2 223f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_UYVYTOUV422ROW_AVX2 224f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_UYVYTOUVROW_AVX2 225f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_UYVYTOYROW_AVX2 226f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_YUY2TOARGBROW_AVX2 227f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_YUY2TOUV422ROW_AVX2 228f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_YUY2TOUVROW_AVX2 229f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_YUY2TOYROW_AVX2 230f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 231f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Effects: 232f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBADDROW_AVX2 233f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBATTENUATEROW_AVX2 234f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBMULTIPLYROW_AVX2 235f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSUBTRACTROW_AVX2 236f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBUNATTENUATEROW_AVX2 237f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_BLENDPLANEROW_AVX2 238b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 239b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 240b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard defined(_MSC_VER) 241b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// TODO(fbarchard): fix build error on android_full_debug=1 242b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// https://code.google.com/p/libyuv/issues/detail?id=517 243b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422ALPHATOARGBROW_AVX2 244b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#endif 245f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 246f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 247f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// The following are available for AVX2 Visual C and clangcl 32 bit: 248f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// TODO(fbarchard): Port to gcc. 249f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if !defined(LIBYUV_DISABLE_X86) && defined(_M_IX86) && \ 250f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2)) 251f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB1555TOARGBROW_AVX2 252f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB4444TOARGBROW_AVX2 253f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOARGB1555ROW_AVX2 254f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOARGB4444ROW_AVX2 255f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTORGB565ROW_AVX2 256f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_J400TOARGBROW_AVX2 257f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB565TOARGBROW_AVX2 25833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 25933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 260f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// The following are also available on x64 Visual C. 261f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_X64) && \ 262f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang (!defined(__clang__) || defined(__SSSE3__)) 263f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422ALPHATOARGBROW_SSSE3 264f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGBROW_SSSE3 26533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 26633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 267f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// The following are available on Neon platforms: 268f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if !defined(LIBYUV_DISABLE_NEON) && \ 269f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang (defined(__aarch64__) || defined(__ARM_NEON__) || defined(LIBYUV_NEON)) 270f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ABGRTOUVROW_NEON 271f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ABGRTOYROW_NEON 272f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB1555TOARGBROW_NEON 273f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB1555TOUVROW_NEON 274f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB1555TOYROW_NEON 275f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB4444TOARGBROW_NEON 276f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB4444TOUVROW_NEON 277f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGB4444TOYROW_NEON 278b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBEXTRACTALPHAROW_NEON 279f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSETROW_NEON 280f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOARGB1555ROW_NEON 281f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOARGB4444ROW_NEON 282f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTORAWROW_NEON 283f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTORGB24ROW_NEON 284f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTORGB565DITHERROW_NEON 285f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTORGB565ROW_NEON 286f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOUV444ROW_NEON 287f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOUVJROW_NEON 288f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOUVROW_NEON 289f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOYJROW_NEON 290f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBTOYROW_NEON 291f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_BGRATOUVROW_NEON 292f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_BGRATOYROW_NEON 29333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_COPYROW_NEON 294b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_HALFFLOATROW_NEON 295f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I400TOARGBROW_NEON 296f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422ALPHATOARGBROW_NEON 297f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGB1555ROW_NEON 298f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGB4444ROW_NEON 29933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOARGBROW_NEON 30033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TORGB24ROW_NEON 301f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TORGB565ROW_NEON 30233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TORGBAROW_NEON 303f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOUYVYROW_NEON 304f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOYUY2ROW_NEON 305f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I444TOARGBROW_NEON 306f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_J400TOARGBROW_NEON 307f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MERGEUVROW_NEON 30833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_MIRRORROW_NEON 309f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MIRRORUVROW_NEON 310f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_NV12TOARGBROW_NEON 311f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_NV12TORGB565ROW_NEON 312f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_NV21TOARGBROW_NEON 313f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RAWTOARGBROW_NEON 314f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RAWTORGB24ROW_NEON 315f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RAWTOUVROW_NEON 316f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RAWTOYROW_NEON 317f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB24TOARGBROW_NEON 318f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB24TOUVROW_NEON 319f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB24TOYROW_NEON 320f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB565TOARGBROW_NEON 321f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB565TOUVROW_NEON 322f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGB565TOYROW_NEON 323f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGBATOUVROW_NEON 324f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_RGBATOYROW_NEON 32533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_SETROW_NEON 326f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SPLITUVROW_NEON 327f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_UYVYTOARGBROW_NEON 32833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUV422ROW_NEON 32933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUVROW_NEON 33033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOYROW_NEON 331f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_YUY2TOARGBROW_NEON 33233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUV422ROW_NEON 33333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUVROW_NEON 33433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOYROW_NEON 33533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 336f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Effects: 337f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBADDROW_NEON 338f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBATTENUATEROW_NEON 339f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBBLENDROW_NEON 340f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBCOLORMATRIXROW_NEON 341f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBGRAYROW_NEON 342f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBMIRRORROW_NEON 343f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBMULTIPLYROW_NEON 344f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBQUANTIZEROW_NEON 345f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSEPIAROW_NEON 346f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSHADEROW_NEON 347f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSHUFFLEROW_NEON 348f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_ARGBSUBTRACTROW_NEON 349f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_INTERPOLATEROW_NEON 350f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELROW_NEON 351f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELTOPLANEROW_NEON 352f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELXROW_NEON 353f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELXYROW_NEON 354f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SOBELYROW_NEON 35533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 35633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 357f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// The following are available on Mips platforms: 358b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if !defined(LIBYUV_DISABLE_DSPR2) && defined(__mips__) && \ 359f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang (_MIPS_SIM == _MIPS_SIM_ABI32) && (__mips_isa_rev < 6) 360f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_COPYROW_MIPS 361f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__mips_dsp) && (__mips_dsp_rev >= 2) 362f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_I422TOARGBROW_DSPR2 363f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_INTERPOLATEROW_DSPR2 364f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MIRRORROW_DSPR2 365f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_MIRRORUVROW_DSPR2 366f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define HAS_SPLITUVROW_DSPR2 367b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB24TOARGBROW_DSPR2 368b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RAWTOARGBROW_DSPR2 369b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB565TOARGBROW_DSPR2 370b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGB1555TOARGBROW_DSPR2 371b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGB4444TOARGBROW_DSPR2 372b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I444TOARGBROW_DSPR2 373b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422TOARGB4444ROW_DSPR2 374b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422TOARGB1555ROW_DSPR2 375b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_NV12TOARGBROW_DSPR2 376b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_BGRATOUVROW_DSPR2 377b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_BGRATOYROW_DSPR2 378b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ABGRTOUVROW_DSPR2 379b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOYROW_DSPR2 380b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ABGRTOYROW_DSPR2 381b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGBATOUVROW_DSPR2 382b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGBATOYROW_DSPR2 383b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOUVROW_DSPR2 384f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 385f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 386f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 387b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) 388b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBMIRRORROW_MSA 389b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422TOUYVYROW_MSA 390b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422TOYUY2ROW_MSA 391b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_MIRRORROW_MSA 392b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_UYVYTOUVROW_MSA 393b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_UYVYTOYROW_MSA 394b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_YUY2TOUV422ROW_MSA 395b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_YUY2TOUVROW_MSA 396b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_YUY2TOYROW_MSA 397b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGB4444TOARGBROW_MSA 398b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOYROW_MSA 399b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOUVROW_MSA 400b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422TOARGBROW_MSA 401b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422TORGBAROW_MSA 402b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422ALPHATOARGBROW_MSA 403b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I422TORGB24ROW_MSA 404b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTORGB24ROW_MSA 405b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTORAWROW_MSA 406b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTORGB565ROW_MSA 407b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOARGB1555ROW_MSA 408b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOARGB4444ROW_MSA 409b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOUV444ROW_MSA 410b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBMULTIPLYROW_MSA 411b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBADDROW_MSA 412b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBSUBTRACTROW_MSA 413b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBATTENUATEROW_MSA 414b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTORGB565DITHERROW_MSA 415b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBSHUFFLEROW_MSA 416b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBSHADEROW_MSA 417b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBGRAYROW_MSA 418b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBSEPIAROW_MSA 419b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGB1555TOARGBROW_MSA 420b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB565TOARGBROW_MSA 421b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB24TOARGBROW_MSA 422b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RAWTOARGBROW_MSA 423b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGB1555TOYROW_MSA 424b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB565TOYROW_MSA 425b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB24TOYROW_MSA 426b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RAWTOYROW_MSA 427b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGB1555TOUVROW_MSA 428b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB565TOUVROW_MSA 429b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGB24TOUVROW_MSA 430b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RAWTOUVROW_MSA 431b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_NV12TOARGBROW_MSA 432b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_NV12TORGB565ROW_MSA 433b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_NV21TOARGBROW_MSA 434b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_SOBELROW_MSA 435b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_SOBELTOPLANEROW_MSA 436b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_SOBELXYROW_MSA 437b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOYJROW_MSA 438b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_BGRATOYROW_MSA 439b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ABGRTOYROW_MSA 440b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGBATOYROW_MSA 441b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBTOUVJROW_MSA 442b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_BGRATOUVROW_MSA 443b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ABGRTOUVROW_MSA 444b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RGBATOUVROW_MSA 445b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I444TOARGBROW_MSA 446b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_I400TOARGBROW_MSA 447b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_J400TOARGBROW_MSA 448b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_YUY2TOARGBROW_MSA 449b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_UYVYTOARGBROW_MSA 450b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_INTERPOLATEROW_MSA 451b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_ARGBSETROW_MSA 452b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_RAWTORGB24ROW_MSA 453b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define HAS_MERGEUVROW_MSA 454b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#endif 455b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 456f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) 457b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if defined(VISUALC_HAS_AVX2) 458b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define SIMD_ALIGNED(var) __declspec(align(32)) var 459b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#else 46033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define SIMD_ALIGNED(var) __declspec(align(16)) var 461b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#endif 46233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) int16 vec16[8]; 46333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) int32 vec32[4]; 464f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(16)) int8 vec8[16]; 465f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(16)) uint16 uvec16[8]; 46633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) uint32 uvec32[4]; 467f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(16)) uint8 uvec8[16]; 468f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(32)) int16 lvec16[16]; 469f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(32)) int32 lvec32[8]; 470f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(32)) int8 lvec8[32]; 471f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(32)) uint16 ulvec16[16]; 472f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(32)) uint32 ulvec32[8]; 473f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef __declspec(align(32)) uint8 ulvec8[32]; 474f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#elif !defined(__pnacl__) && (defined(__GNUC__) || defined(__clang__)) 475f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. 476b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2) 477b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define SIMD_ALIGNED(var) var __attribute__((aligned(32))) 478b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#else 47933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define SIMD_ALIGNED(var) var __attribute__((aligned(16))) 480b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#endif 48133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int16 __attribute__((vector_size(16))) vec16; 48233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int32 __attribute__((vector_size(16))) vec32; 483f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int8 __attribute__((vector_size(16))) vec8; 484f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint16 __attribute__((vector_size(16))) uvec16; 48533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint32 __attribute__((vector_size(16))) uvec32; 486f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint8 __attribute__((vector_size(16))) uvec8; 487f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int16 __attribute__((vector_size(32))) lvec16; 488f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int32 __attribute__((vector_size(32))) lvec32; 489f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int8 __attribute__((vector_size(32))) lvec8; 490f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint16 __attribute__((vector_size(32))) ulvec16; 491f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint32 __attribute__((vector_size(32))) ulvec32; 492f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint8 __attribute__((vector_size(32))) ulvec8; 49333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else 49433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define SIMD_ALIGNED(var) var 49533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int16 vec16[8]; 49633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int32 vec32[4]; 497f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int8 vec8[16]; 498f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint16 uvec16[8]; 49933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint32 uvec32[4]; 500f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint8 uvec8[16]; 501f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int16 lvec16[16]; 502f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int32 lvec32[8]; 503f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef int8 lvec8[32]; 504f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint16 ulvec16[16]; 505f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint32 ulvec32[8]; 506f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangtypedef uint8 ulvec8[32]; 507f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 508f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 509f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__aarch64__) 510f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// This struct is for Arm64 color conversion. 511f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangstruct YuvConstants { 512f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uvec16 kUVToRB; 513f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uvec16 kUVToRB2; 514f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uvec16 kUVToG; 515f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uvec16 kUVToG2; 516f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang vec16 kUVBiasBGR; 517f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang vec32 kYToRgb; 518f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang}; 519f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#elif defined(__arm__) 520f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// This struct is for ArmV7 color conversion. 521f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangstruct YuvConstants { 522f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uvec8 kUVToRB; 523f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uvec8 kUVToG; 524f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang vec16 kUVBiasBGR; 525f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang vec32 kYToRgb; 526f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang}; 527f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#else 528f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// This struct is for Intel color conversion. 529f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangstruct YuvConstants { 530b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int8 kUVToB[32]; 531b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int8 kUVToG[32]; 532b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int8 kUVToR[32]; 533b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int16 kUVBiasB[16]; 534b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int16 kUVBiasG[16]; 535b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int16 kUVBiasR[16]; 536b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int16 kYToRgb[16]; 537f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang}; 538f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 539f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Offsets into YuvConstants structure 540b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define KUVTOB 0 541b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define KUVTOG 32 542b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define KUVTOR 64 543f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define KUVBIASB 96 544f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define KUVBIASG 128 545f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define KUVBIASR 160 546b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define KYTORGB 192 54733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 54833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 549f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Conversion matrix for YUV to RGB 550b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardextern const struct YuvConstants SIMD_ALIGNED(kYuvI601Constants); // BT.601 551b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardextern const struct YuvConstants SIMD_ALIGNED(kYuvJPEGConstants); // JPeg 552b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardextern const struct YuvConstants SIMD_ALIGNED(kYuvH709Constants); // BT.709 553f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 554f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Conversion matrix for YVU to BGR 555b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardextern const struct YuvConstants SIMD_ALIGNED(kYvuI601Constants); // BT.601 556b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardextern const struct YuvConstants SIMD_ALIGNED(kYvuJPEGConstants); // JPeg 557b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardextern const struct YuvConstants SIMD_ALIGNED(kYvuH709Constants); // BT.709 558f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 55933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__) 56033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define OMITFP 56133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else 56233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define OMITFP __attribute__((optimize("omit-frame-pointer"))) 56333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 56433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 565f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// NaCL macros for GCC x86 and x64. 566f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__native_client__) 567f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define LABELALIGN ".p2align 5\n" 568f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#else 569f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define LABELALIGN 570f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 571f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__native_client__) && defined(__x86_64__) 572f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// r14 is used for MEMOP macros. 573f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define NACL_R14 "r14", 574f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define BUNDLELOCK ".bundle_lock\n" 575f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define BUNDLEUNLOCK ".bundle_unlock\n" 576f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMACCESS(base) "%%nacl:(%%r15,%q" #base ")" 577f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMACCESS2(offset, base) "%%nacl:" #offset "(%%r15,%q" #base ")" 578f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMLEA(offset, base) #offset "(%q" #base ")" 579b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define MEMLEA3(offset, index, scale) #offset "(,%q" #index "," #scale ")" 580f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMLEA4(offset, base, index, scale) \ 581b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard #offset "(%q" #base ",%q" #index "," #scale ")" 582f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMMOVESTRING(s, d) "%%nacl:(%q" #s "),%%nacl:(%q" #d "), %%r15" 583f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMSTORESTRING(reg, d) "%%" #reg ",%%nacl:(%q" #d "), %%r15" 584b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define MEMOPREG(opcode, offset, base, index, scale, reg) \ 585b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard BUNDLELOCK \ 586b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 587b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard " (%%r15,%%r14),%%" #reg "\n" BUNDLEUNLOCK 588b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define MEMOPMEM(opcode, reg, offset, base, index, scale) \ 589b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard BUNDLELOCK \ 590b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 591b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard " %%" #reg ",(%%r15,%%r14)\n" BUNDLEUNLOCK 592b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define MEMOPARG(opcode, offset, base, index, scale, arg) \ 593b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard BUNDLELOCK \ 594b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 595b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard " (%%r15,%%r14),%" #arg "\n" BUNDLEUNLOCK 596b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \ 597b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard BUNDLELOCK \ 598b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 599b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard " (%%r15,%%r14),%%" #reg1 ",%%" #reg2 "\n" BUNDLEUNLOCK 600b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \ 601b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard BUNDLELOCK \ 602b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #op \ 603b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard " $" #sel ",%%" #reg ",(%%r15,%%r14)\n" BUNDLEUNLOCK 604f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#else // defined(__native_client__) && defined(__x86_64__) 605f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define NACL_R14 606f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define BUNDLEALIGN 607f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMACCESS(base) "(%" #base ")" 608f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMACCESS2(offset, base) #offset "(%" #base ")" 609f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMLEA(offset, base) #offset "(%" #base ")" 610b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define MEMLEA3(offset, index, scale) #offset "(,%" #index "," #scale ")" 611f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMLEA4(offset, base, index, scale) \ 612b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard #offset "(%" #base ",%" #index "," #scale ")" 613f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMMOVESTRING(s, d) 614f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMSTORESTRING(reg, d) 615f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMOPREG(opcode, offset, base, index, scale, reg) \ 616b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n" 617f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMOPMEM(opcode, reg, offset, base, index, scale) \ 618b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard #opcode " %%" #reg "," #offset "(%" #base ",%" #index "," #scale ")\n" 619f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMOPARG(opcode, offset, base, index, scale, arg) \ 620b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n" 621b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \ 622b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg1 \ 623b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ",%%" #reg2 "\n" 624f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \ 625b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard #op " $" #sel ",%%" #reg "," #offset "(%" #base ",%" #index "," #scale ")\n" 626f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif // defined(__native_client__) && defined(__x86_64__) 627f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 628f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__arm__) || defined(__aarch64__) 629f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#undef MEMACCESS 630f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#if defined(__native_client__) 631f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" 632f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#else 633f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#define MEMACCESS(base) 634f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 635f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang#endif 636f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 637b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// Intel Code Analizer markers. Insert IACA_START IACA_END around code to be 638b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// measured and then run with iaca -64 libyuv_unittest. 639b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// IACA_ASM_START amd IACA_ASM_END are equivalents that can be used within 640b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// inline assembly blocks. 641b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// example of iaca: 642b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// ~/iaca-lin64/bin/iaca.sh -64 -analysis LATENCY out/Release/libyuv_unittest 643b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 644b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#if defined(__x86_64__) || defined(__i386__) 645b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 646b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_ASM_START \ 647b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ".byte 0x0F, 0x0B\n" \ 648b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard " movl $111, %%ebx\n" \ 649b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ".byte 0x64, 0x67, 0x90\n" 650b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 651b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_ASM_END \ 652b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard " movl $222, %%ebx\n" \ 653b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ".byte 0x64, 0x67, 0x90\n" \ 654b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ".byte 0x0F, 0x0B\n" 655b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 656b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_SSC_MARK(MARK_ID) \ 657b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard __asm__ __volatile__("\n\t movl $" #MARK_ID \ 658b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ", %%ebx" \ 659b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard "\n\t .byte 0x64, 0x67, 0x90" \ 660b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard : \ 661b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard : \ 662b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard : "memory"); 663b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 664b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); 665b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 666b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#else /* Visual C */ 667b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_UD_BYTES \ 668b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard { __asm _emit 0x0F __asm _emit 0x0B } 669b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 670b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_SSC_MARK(x) \ 671b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } 672b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 673b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_VC64_START __writegsbyte(111, 111); 674b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_VC64_END __writegsbyte(222, 222); 675b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#endif 676b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 677b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_START \ 678b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard { \ 679b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard IACA_UD_BYTES \ 680b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard IACA_SSC_MARK(111) \ 681b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard } 682b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#define IACA_END \ 683b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard { \ 684b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard IACA_SSC_MARK(222) \ 685b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard IACA_UD_BYTES \ 686b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard } 687b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 688f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_NEON(const uint8* src_y, 689f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 690f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 691f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 692f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 69333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 694f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_NEON(const uint8* src_y, 695f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 696f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 697f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 698f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 69933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 700f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422AlphaToARGBRow_NEON(const uint8* y_buf, 701f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* u_buf, 702f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* v_buf, 703f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* a_buf, 704f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 705f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 706f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 707f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_NEON(const uint8* src_y, 708f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 709f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 710f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 711f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 71233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 713f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGBARow_NEON(const uint8* src_y, 714f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 715f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 716f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 717f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 718f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 719f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB24Row_NEON(const uint8* src_y, 720f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 721f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 722f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgb24, 723f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 72433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 725f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB565Row_NEON(const uint8* src_y, 726f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 727f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 728f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgb565, 729f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 730f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 731f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB1555Row_NEON(const uint8* src_y, 732f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 733f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 734f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb1555, 735f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 736f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 737f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB4444Row_NEON(const uint8* src_y, 738f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 739f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 740f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb4444, 741f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 742f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 743f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToARGBRow_NEON(const uint8* src_y, 744f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 745f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 746f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 747f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 748f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToRGB565Row_NEON(const uint8* src_y, 749f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 750f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgb565, 751f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 752f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 753f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV21ToARGBRow_NEON(const uint8* src_y, 754f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_vu, 755f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 756f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 757f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 758f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToARGBRow_NEON(const uint8* src_yuy2, 759f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 760f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 76133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 762f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToARGBRow_NEON(const uint8* src_uyvy, 763f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 764f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 76533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 766b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I444ToARGBRow_MSA(const uint8* src_y, 767b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 768b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 769b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 770b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 771b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 772b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I444ToARGBRow_DSPR2(const uint8* src_y, 773b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 774b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 775b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 776b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 777b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 778b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB4444Row_DSPR2(const uint8* src_y, 779b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 780b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 781b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb4444, 782b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 783b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 784b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB1555Row_DSPR2(const uint8* src_y, 785b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 786b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 787b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb1555, 788b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 789b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 790b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV12ToARGBRow_DSPR2(const uint8* src_y, 791b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_uv, 792b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 793b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 794b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 795b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 796b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGBRow_MSA(const uint8* src_y, 797b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 798b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 799b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 800b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 801b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 802b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToRGBARow_MSA(const uint8* src_y, 803b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 804b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 805b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgba, 806b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 807b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 808b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422AlphaToARGBRow_MSA(const uint8* y_buf, 809b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* u_buf, 810b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* v_buf, 811b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* a_buf, 812b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 813b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 814b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 815b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToRGB24Row_MSA(const uint8* src_y, 816b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 817b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 818b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb24, 819b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 820b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 821b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToRGB565Row_MSA(const uint8* src_y, 822b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 823b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 824b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb565, 825b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 826b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 827b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB4444Row_MSA(const uint8* src_y, 828b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 829b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 830b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb4444, 831b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 832b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 833b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB1555Row_MSA(const uint8* src_y, 834b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 835b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 836b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb1555, 837b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 838b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 839b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV12ToARGBRow_MSA(const uint8* src_y, 840b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_uv, 841b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 842b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 843b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 844b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV12ToRGB565Row_MSA(const uint8* src_y, 845b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_uv, 846b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb565, 847b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 848b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 849b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV21ToARGBRow_MSA(const uint8* src_y, 850b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_vu, 851b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 852b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 853b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 854b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToARGBRow_MSA(const uint8* src_yuy2, 855b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 856b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 857b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 858b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToARGBRow_MSA(const uint8* src_uyvy, 859b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 860b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 861b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 86233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 863f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width); 864f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width); 865f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width); 866f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int width); 867f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width); 868f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width); 869f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width); 870f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width); 871f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width); 872f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width); 873f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int width); 874f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width); 875f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width); 876b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToYRow_MSA(const uint8* src_argb, uint8* dst_y, int width); 877b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToYJRow_MSA(const uint8* src_argb, uint8* dst_y, int width); 878b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUV444Row_NEON(const uint8* src_argb, 879b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 880b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 881f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 882b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_NEON(const uint8* src_argb, 883b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 884b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 885b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 886b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 887b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUV444Row_MSA(const uint8* src_argb, 888b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 889b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 890b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 891b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_MSA(const uint8* src_argb, 892b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 893b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 894b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 895b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 896b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_NEON(const uint8* src_argb, 897b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 898b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 899b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 900b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 901b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_NEON(const uint8* src_bgra, 902b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 903b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 904b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 905b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 906b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_NEON(const uint8* src_abgr, 907b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 908b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 909b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 910b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 911b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_NEON(const uint8* src_rgba, 912b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 913b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 914b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 915b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 916b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToUVRow_NEON(const uint8* src_rgb24, 917b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb24, 918b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 919b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 920b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 921b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToUVRow_NEON(const uint8* src_raw, 922b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_raw, 923b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 924b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 925b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 926b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToUVRow_NEON(const uint8* src_rgb565, 927b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb565, 928b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 929b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 930b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 931b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToUVRow_NEON(const uint8* src_argb1555, 932b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb1555, 933b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 934b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 935b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 936b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToUVRow_NEON(const uint8* src_argb4444, 937b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb4444, 938b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 939b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 940b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 941b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_MSA(const uint8* src_argb, 942b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 943b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 944b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 945b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 946b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_MSA(const uint8* src_bgra, 947b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 948b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 949b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 950b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 951b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_MSA(const uint8* src_abgr, 952b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 953b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 954b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 955b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 956b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_MSA(const uint8* src_rgba, 957b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 958b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 959b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 960b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 961b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToUVRow_MSA(const uint8* src_rgb24, 962b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb24, 963b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 964b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 965b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 966b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToUVRow_MSA(const uint8* src_raw, 967b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_raw, 968b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 969b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 970b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 971b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToUVRow_MSA(const uint8* src_rgb565, 972b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb565, 973b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 974b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 975b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 976b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToUVRow_MSA(const uint8* src_argb1555, 977b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb1555, 978b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 979b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 980f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 981f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width); 982f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width); 983f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width); 984f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int width); 985f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int width); 986f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width); 987f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width); 988f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width); 989b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToYRow_MSA(const uint8* src_bgra, uint8* dst_y, int width); 990b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToYRow_MSA(const uint8* src_abgr, uint8* dst_y, int width); 991b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToYRow_MSA(const uint8* src_rgba, uint8* dst_y, int width); 992b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToYRow_MSA(const uint8* src_rgb24, uint8* dst_y, int width); 993b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToYRow_MSA(const uint8* src_raw, uint8* dst_y, int width); 994b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToYRow_MSA(const uint8* src_rgb565, uint8* dst_y, int width); 995b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToYRow_MSA(const uint8* src_argb1555, uint8* dst_y, int width); 996b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_DSPR2(const uint8* src_bgra, 997b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 998b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 999b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1000b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1001b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToYRow_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); 1002b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_DSPR2(const uint8* src_abgr, 1003b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 1004b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1005b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1006b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1007b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToYRow_DSPR2(const uint8* src_argb, uint8* dst_y, int width); 1008b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToYRow_DSPR2(const uint8* src_abgr, uint8* dst_y, int width); 1009b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_DSPR2(const uint8* src_rgba, 1010b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 1011b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1012b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1013b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1014b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToYRow_DSPR2(const uint8* src_rgba, uint8* dst_y, int width); 1015b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_DSPR2(const uint8* src_argb, 1016b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1017b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1018b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1019b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1020f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int width); 1021f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYJRow_C(const uint8* src_argb, uint8* dst_y, int width); 1022f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid BGRAToYRow_C(const uint8* src_bgra, uint8* dst_y, int width); 1023f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ABGRToYRow_C(const uint8* src_abgr, uint8* dst_y, int width); 1024f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGBAToYRow_C(const uint8* src_rgba, uint8* dst_y, int width); 1025f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToYRow_C(const uint8* src_rgb24, uint8* dst_y, int width); 1026f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToYRow_C(const uint8* src_raw, uint8* dst_y, int width); 1027f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB565ToYRow_C(const uint8* src_rgb565, uint8* dst_y, int width); 1028f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB1555ToYRow_C(const uint8* src_argb1555, uint8* dst_y, int width); 1029f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB4444ToYRow_C(const uint8* src_argb4444, uint8* dst_y, int width); 1030f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int width); 1031f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYJRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int width); 1032f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid BGRAToYRow_Any_SSSE3(const uint8* src_bgra, uint8* dst_y, int width); 1033f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ABGRToYRow_Any_SSSE3(const uint8* src_abgr, uint8* dst_y, int width); 1034f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGBAToYRow_Any_SSSE3(const uint8* src_rgba, uint8* dst_y, int width); 1035f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToYRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width); 1036f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToYRow_Any_SSSE3(const uint8* src_raw, uint8* dst_y, int width); 1037f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int width); 1038f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToYJRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int width); 1039f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid BGRAToYRow_Any_NEON(const uint8* src_bgra, uint8* dst_y, int width); 1040f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ABGRToYRow_Any_NEON(const uint8* src_abgr, uint8* dst_y, int width); 1041f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGBAToYRow_Any_NEON(const uint8* src_rgba, uint8* dst_y, int width); 1042f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToYRow_Any_NEON(const uint8* src_rgb24, uint8* dst_y, int width); 1043f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToYRow_Any_NEON(const uint8* src_raw, uint8* dst_y, int width); 1044f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB565ToYRow_Any_NEON(const uint8* src_rgb565, uint8* dst_y, int width); 1045b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, 1046b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 1047f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1048b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToYRow_Any_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); 1049b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToYRow_Any_DSPR2(const uint8* src_argb, uint8* dst_y, int width); 1050b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToYRow_Any_DSPR2(const uint8* src_abgr, uint8* dst_y, int width); 1051b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToYRow_Any_DSPR2(const uint8* src_rgba, uint8* dst_y, int width); 1052b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, 1053b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 1054f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1055b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToYRow_Any_MSA(const uint8* src_bgra, uint8* dst_y, int width); 1056b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToYRow_Any_MSA(const uint8* src_abgr, uint8* dst_y, int width); 1057b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToYRow_Any_MSA(const uint8* src_rgba, uint8* dst_y, int width); 1058b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToYJRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width); 1059b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToYRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width); 1060b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToYRow_Any_MSA(const uint8* src_rgb24, uint8* dst_y, int width); 1061b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToYRow_Any_MSA(const uint8* src_raw, uint8* dst_y, int width); 1062b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToYRow_Any_MSA(const uint8* src_rgb565, uint8* dst_y, int width); 1063b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToYRow_Any_MSA(const uint8* src_argb1555, uint8* dst_y, int width); 1064b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 1065b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_AVX2(const uint8* src_argb, 1066b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1067b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1068b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1069b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1070b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_AVX2(const uint8* src_argb, 1071b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1072b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1073b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1074b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1075b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_SSSE3(const uint8* src_argb, 1076b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1077b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1078b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1079b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1080b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_SSSE3(const uint8* src_argb, 1081b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1082b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1083b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1084b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1085b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_SSSE3(const uint8* src_bgra, 1086b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 1087b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1088b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1089b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1090b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_SSSE3(const uint8* src_abgr, 1091b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 1092b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1093b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1094b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1095b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_SSSE3(const uint8* src_rgba, 1096b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 1097b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1098b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1099b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1100b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_Any_AVX2(const uint8* src_argb, 1101b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1102b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1103b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1104b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1105b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_Any_AVX2(const uint8* src_argb, 1106b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1107b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1108b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1109b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1110b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_Any_SSSE3(const uint8* src_argb, 1111b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1112b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1113b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1114b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1115b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, 1116b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1117b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1118b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1119b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1120b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, 1121b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 1122b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1123b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1124b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1125b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, 1126b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 1127b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1128b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1129b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1130b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, 1131b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 1132b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1133b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1134b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1135b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUV444Row_Any_NEON(const uint8* src_argb, 1136b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1137b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1138f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1139b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_Any_NEON(const uint8* src_argb, 1140b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1141b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1142b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1143b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1144b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUV444Row_Any_MSA(const uint8* src_argb, 1145b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1146b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1147b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1148b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_Any_MSA(const uint8* src_argb, 1149b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1150b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1151b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1152b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1153b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_Any_NEON(const uint8* src_argb, 1154b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1155b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1156b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1157b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1158b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_Any_NEON(const uint8* src_bgra, 1159b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 1160b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1161b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1162b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1163b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_Any_NEON(const uint8* src_abgr, 1164b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 1165b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1166b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1167b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1168b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_Any_NEON(const uint8* src_rgba, 1169b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 1170b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1171b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1172b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1173b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToUVRow_Any_NEON(const uint8* src_rgb24, 1174b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb24, 1175b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1176b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1177b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1178b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToUVRow_Any_NEON(const uint8* src_raw, 1179b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_raw, 1180b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1181b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1182b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1183b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToUVRow_Any_NEON(const uint8* src_rgb565, 1184b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb565, 1185b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1186b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1187b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1188f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555, 1189f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int src_stride_argb1555, 1190b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1191b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1192b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1193f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444, 1194f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int src_stride_argb4444, 1195b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1196b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1197b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1198b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_Any_MSA(const uint8* src_argb, 1199b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1200b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1201b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1202b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1203b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_Any_MSA(const uint8* src_bgra, 1204b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 1205b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1206b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1207b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1208b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_Any_MSA(const uint8* src_abgr, 1209b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 1210b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1211b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1212b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1213b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_Any_MSA(const uint8* src_rgba, 1214b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 1215b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1216b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1217b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1218b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToUVRow_Any_MSA(const uint8* src_rgb24, 1219b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb24, 1220b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1221b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1222b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1223b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToUVRow_Any_MSA(const uint8* src_raw, 1224b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_raw, 1225b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1226b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1227b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1228b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToUVRow_Any_MSA(const uint8* src_rgb565, 1229b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb565, 1230b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1231b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1232b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1233b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToUVRow_Any_MSA(const uint8* src_argb1555, 1234b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb1555, 1235b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1236b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1237b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1238b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_Any_DSPR2(const uint8* src_bgra, 1239b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 1240b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1241b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1242b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1243b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_Any_DSPR2(const uint8* src_abgr, 1244b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 1245b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1246b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1247b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1248b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_Any_DSPR2(const uint8* src_rgba, 1249b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 1250b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1251b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1252b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1253b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_Any_DSPR2(const uint8* src_argb, 1254b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1255b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1256b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1257b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1258b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_C(const uint8* src_argb, 1259b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1260b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1261b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1262b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1263b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_C(const uint8* src_argb, 1264b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1265b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1266b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1267b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1268b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVRow_C(const uint8* src_argb, 1269b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1270b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1271b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1272b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1273b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToUVJRow_C(const uint8* src_argb, 1274b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb, 1275b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1276b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1277b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1278b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BGRAToUVRow_C(const uint8* src_bgra, 1279b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_bgra, 1280b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1281b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1282b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1283b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ABGRToUVRow_C(const uint8* src_abgr, 1284b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_abgr, 1285b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1286b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1287b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1288b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGBAToUVRow_C(const uint8* src_rgba, 1289b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgba, 1290b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1291b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1292b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1293b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToUVRow_C(const uint8* src_rgb24, 1294b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb24, 1295b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1296b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1297b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1298b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToUVRow_C(const uint8* src_raw, 1299b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_raw, 1300b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1301b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1302b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1303b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToUVRow_C(const uint8* src_rgb565, 1304b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_rgb565, 1305b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1306b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1307b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1308b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToUVRow_C(const uint8* src_argb1555, 1309b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb1555, 1310b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1311b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1312b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1313b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToUVRow_C(const uint8* src_argb4444, 1314b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_stride_argb4444, 1315b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1316b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1317b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1318f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1319f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToUV444Row_SSSE3(const uint8* src_argb, 1320b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1321b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1322b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1323f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToUV444Row_Any_SSSE3(const uint8* src_argb, 1324b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1325b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1326b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1327f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1328f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToUV444Row_C(const uint8* src_argb, 1329b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1330b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1331b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 133233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1333f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid MirrorRow_AVX2(const uint8* src, uint8* dst, int width); 133433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRow_SSSE3(const uint8* src, uint8* dst, int width); 133533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRow_NEON(const uint8* src, uint8* dst, int width); 1336f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid MirrorRow_DSPR2(const uint8* src, uint8* dst, int width); 1337b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MirrorRow_MSA(const uint8* src, uint8* dst, int width); 133833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRow_C(const uint8* src, uint8* dst, int width); 1339f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid MirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); 1340f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid MirrorRow_Any_SSSE3(const uint8* src, uint8* dst, int width); 1341f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid MirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); 1342f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid MirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); 1343b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MirrorRow_Any_MSA(const uint8* src, uint8* dst, int width); 134433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1345b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MirrorUVRow_SSSE3(const uint8* src_uv, 1346b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1347b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1348f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1349b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MirrorUVRow_NEON(const uint8* src_uv, 1350b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1351b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1352f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1353b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MirrorUVRow_DSPR2(const uint8* src_uv, 1354b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1355b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1356f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1357f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width); 135833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1359f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width); 1360f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width); 1361f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width); 1362b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMirrorRow_MSA(const uint8* src, uint8* dst, int width); 136333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBMirrorRow_C(const uint8* src, uint8* dst, int width); 1364f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); 1365f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBMirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); 1366f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); 1367b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMirrorRow_Any_MSA(const uint8* src, uint8* dst, int width); 1368f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1369f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width); 1370b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_SSE2(const uint8* src_uv, 1371b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1372b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1373f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1374b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_AVX2(const uint8* src_uv, 1375b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1376b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1377f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1378b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_NEON(const uint8* src_uv, 1379b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1380b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1381f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1382b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_DSPR2(const uint8* src_uv, 1383b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1384b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1385f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1386b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_Any_SSE2(const uint8* src_uv, 1387b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1388b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1389f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1390b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_Any_AVX2(const uint8* src_uv, 1391b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1392b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1393f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1394b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_Any_NEON(const uint8* src_uv, 1395b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1396b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1397f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1398b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SplitUVRow_Any_DSPR2(const uint8* src_uv, 1399b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 1400b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 1401f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 140233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1403b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_C(const uint8* src_u, 1404b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1405b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1406f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1407b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_SSE2(const uint8* src_u, 1408b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1409b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1410f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1411b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_AVX2(const uint8* src_u, 1412b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1413b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1414f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1415b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_NEON(const uint8* src_u, 1416b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1417b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1418f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1419b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_MSA(const uint8* src_u, 1420b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1421b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1422b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1423b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_Any_SSE2(const uint8* src_u, 1424b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1425b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1426f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1427b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_Any_AVX2(const uint8* src_u, 1428b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1429b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1430f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1431b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_Any_NEON(const uint8* src_u, 1432b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1433b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1434f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1435b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid MergeUVRow_Any_MSA(const uint8* src_u, 1436b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 1437b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uv, 1438b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 143933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 144033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CopyRow_SSE2(const uint8* src, uint8* dst, int count); 1441f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid CopyRow_AVX(const uint8* src, uint8* dst, int count); 1442f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid CopyRow_ERMS(const uint8* src, uint8* dst, int count); 144333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CopyRow_NEON(const uint8* src, uint8* dst, int count); 1444f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid CopyRow_MIPS(const uint8* src, uint8* dst, int count); 144533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CopyRow_C(const uint8* src, uint8* dst, int count); 1446f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid CopyRow_Any_SSE2(const uint8* src, uint8* dst, int count); 1447f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid CopyRow_Any_AVX(const uint8* src, uint8* dst, int count); 1448f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid CopyRow_Any_NEON(const uint8* src, uint8* dst, int count); 1449f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1450f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid CopyRow_16_C(const uint16* src, uint16* dst, int count); 1451f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1452f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBCopyAlphaRow_C(const uint8* src_argb, uint8* dst_argb, int width); 1453f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); 1454f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); 1455b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBCopyAlphaRow_Any_SSE2(const uint8* src_argb, 1456b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1457f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1458b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBCopyAlphaRow_Any_AVX2(const uint8* src_argb, 1459b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1460f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1461f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1462f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBExtractAlphaRow_C(const uint8* src_argb, uint8* dst_a, int width); 1463f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBExtractAlphaRow_SSE2(const uint8* src_argb, uint8* dst_a, int width); 1464b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBExtractAlphaRow_AVX2(const uint8* src_argb, uint8* dst_a, int width); 1465f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBExtractAlphaRow_NEON(const uint8* src_argb, uint8* dst_a, int width); 1466b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBExtractAlphaRow_Any_SSE2(const uint8* src_argb, 1467b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_a, 1468f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1469b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBExtractAlphaRow_Any_AVX2(const uint8* src_argb, 1470b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_a, 1471b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1472b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBExtractAlphaRow_Any_NEON(const uint8* src_argb, 1473b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_a, 1474f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1475f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1476f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBCopyYToAlphaRow_C(const uint8* src_y, uint8* dst_argb, int width); 1477f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width); 1478f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); 1479b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBCopyYToAlphaRow_Any_SSE2(const uint8* src_y, 1480b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1481f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1482b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBCopyYToAlphaRow_Any_AVX2(const uint8* src_y, 1483b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1484f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1485f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1486f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid SetRow_C(uint8* dst, uint8 v8, int count); 1487f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid SetRow_X86(uint8* dst, uint8 v8, int count); 1488f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid SetRow_ERMS(uint8* dst, uint8 v8, int count); 1489f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid SetRow_NEON(uint8* dst, uint8 v8, int count); 1490f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid SetRow_Any_X86(uint8* dst, uint8 v8, int count); 1491f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid SetRow_Any_NEON(uint8* dst, uint8 v8, int count); 1492f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1493f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBSetRow_C(uint8* dst_argb, uint32 v32, int count); 1494f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBSetRow_X86(uint8* dst_argb, uint32 v32, int count); 1495f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBSetRow_NEON(uint8* dst_argb, uint32 v32, int count); 1496f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBSetRow_Any_NEON(uint8* dst_argb, uint32 v32, int count); 1497b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSetRow_MSA(uint8* dst_argb, uint32 v32, int count); 1498b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSetRow_Any_MSA(uint8* dst_argb, uint32 v32, int count); 1499f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1500f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// ARGBShufflers for BGRAToARGB etc. 1501b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_C(const uint8* src_argb, 1502b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1503b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1504b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1505b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_SSE2(const uint8* src_argb, 1506b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1507b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1508b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1509b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_SSSE3(const uint8* src_argb, 1510b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1511b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1512b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1513b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_AVX2(const uint8* src_argb, 1514b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1515b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1516b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1517b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_NEON(const uint8* src_argb, 1518b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1519b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1520b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1521b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_MSA(const uint8* src_argb, 1522b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1523b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1524b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1525b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_Any_SSE2(const uint8* src_argb, 1526b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1527b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1528b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1529b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, 1530b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1531b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1532b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1533b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_Any_AVX2(const uint8* src_argb, 1534b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1535b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1536b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1537b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_Any_NEON(const uint8* src_argb, 1538b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1539b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1540b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1541b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShuffleRow_Any_MSA(const uint8* src_argb, 1542b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1543b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* shuffler, 1544b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1545f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1546f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int width); 1547f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int width); 1548f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToRGB24Row_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width); 1549f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int width); 1550b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, 1551b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1552f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1553b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, 1554b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1555f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1556f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb, int width); 1557b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, 1558b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1559f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1560b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, 1561b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1562f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 156333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1564f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int width); 1565b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToARGBRow_MSA(const uint8* src_rgb24, uint8* dst_argb, int width); 1566f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int width); 1567b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToARGBRow_MSA(const uint8* src_raw, uint8* dst_argb, int width); 1568f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToRGB24Row_NEON(const uint8* src_raw, uint8* dst_rgb24, int width); 1569b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToRGB24Row_MSA(const uint8* src_raw, uint8* dst_rgb24, int width); 1570f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int width); 1571b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToARGBRow_MSA(const uint8* src_rgb565, uint8* dst_argb, int width); 1572b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, 1573b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1574f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1575b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_MSA(const uint8* src_argb1555, 1576b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1577b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1578b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, 1579b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1580f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1581b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToARGBRow_DSPR2(const uint8* src_rgb24, uint8* dst_argb, int width); 1582b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToARGBRow_DSPR2(const uint8* src_raw, uint8* dst_argb, int width); 1583b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToARGBRow_DSPR2(const uint8* src_rgb565, uint8* dst_argb, int width); 1584b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_DSPR2(const uint8* src_argb1555, 1585b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1586b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1587b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_DSPR2(const uint8* src_argb4444, 1588b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1589b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1590b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_MSA(const uint8* src_argb4444, 1591b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1592b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1593f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int width); 1594f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int width); 1595f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToRGB24Row_C(const uint8* src_raw, uint8* dst_rgb24, int width); 1596f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int width); 1597f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width); 1598f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width); 1599b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, 1600b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1601f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1602f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int width); 1603f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToRGB24Row_Any_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width); 160433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1605b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, 1606b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1607f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1608b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, 1609b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1610f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1611b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, 1612b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1613f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1614b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565, 1615b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1616f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1617b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555, 1618b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1619f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1620b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444, 1621b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1622f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 162333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 1624b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, 1625b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1626f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1627b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToARGBRow_Any_MSA(const uint8* src_rgb24, uint8* dst_argb, int width); 1628f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int width); 1629b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToARGBRow_Any_MSA(const uint8* src_raw, uint8* dst_argb, int width); 1630f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RAWToRGB24Row_Any_NEON(const uint8* src_raw, uint8* dst_rgb24, int width); 1631b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToRGB24Row_Any_MSA(const uint8* src_raw, uint8* dst_rgb24, int width); 1632b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, 1633b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1634f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1635b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToARGBRow_Any_MSA(const uint8* src_rgb565, 1636b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1637b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1638b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, 1639b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1640f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1641b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_Any_MSA(const uint8* src_argb1555, 1642b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1643b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1644b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, 1645b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1646f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1647b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB24ToARGBRow_Any_DSPR2(const uint8* src_rgb24, 1648b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1649b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1650b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RAWToARGBRow_Any_DSPR2(const uint8* src_raw, uint8* dst_argb, int width); 1651b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid RGB565ToARGBRow_Any_DSPR2(const uint8* src_rgb565, 1652b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1653b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1654b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB1555ToARGBRow_Any_DSPR2(const uint8* src_argb1555, 1655b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1656b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1657b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_Any_DSPR2(const uint8* src_argb4444, 1658b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1659b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1660b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 1661b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGB4444ToARGBRow_Any_MSA(const uint8* src_argb4444, 1662b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 1663b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1664f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1665f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width); 1666f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width); 1667f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width); 1668f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width); 1669f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width); 1670f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1671b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_C(const uint8* src_argb, 1672b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 1673b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 1674b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1675b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, 1676b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 1677b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 1678b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1679b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, 1680b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 1681b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 1682b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1683f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1684f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width); 1685f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width); 1686f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width); 1687f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1688f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 1689f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 1690f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 1691f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 1692f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 1693b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_NEON(const uint8* src_argb, 1694b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 1695b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 1696b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1697b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB24Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 1698b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRAWRow_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 1699b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 1700b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB1555Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 1701b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB4444Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 1702b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_MSA(const uint8* src_argb, 1703b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 1704b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 1705b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 1706b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 1707f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int width); 1708f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int width); 1709f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int width); 1710f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int width); 1711f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int width); 1712f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int width); 1713f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1714f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width); 1715f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); 1716f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid J400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width); 1717b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid J400ToARGBRow_MSA(const uint8* src_y, uint8* dst_argb, int width); 1718f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width); 1719f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid J400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width); 1720f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid J400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width); 1721f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid J400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width); 1722b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid J400ToARGBRow_Any_MSA(const uint8* src_y, uint8* dst_argb, int width); 1723f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 1724f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_C(const uint8* src_y, 1725f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1726f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1727f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1728f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 172933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1730f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_C(const uint8* src_y, 1731f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1732f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1733f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1734f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 173533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1736f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_C(const uint8* src_y, 1737f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1738f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1739f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1740f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 174133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1742f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422AlphaToARGBRow_C(const uint8* y_buf, 1743f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* u_buf, 1744f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* v_buf, 1745f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* a_buf, 1746f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1747f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1748f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1749f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToARGBRow_C(const uint8* src_y, 1750f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1751f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1752f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 175333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1754f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToRGB565Row_C(const uint8* src_y, 1755f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1756f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1757f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1758f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1759f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV21ToARGBRow_C(const uint8* src_y, 1760f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1761f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1762f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 176333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1764f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToARGBRow_C(const uint8* src_yuy2, 1765f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1766f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 176733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1768f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToARGBRow_C(const uint8* src_uyvy, 1769f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1770f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1771f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1772f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGBARow_C(const uint8* src_y, 1773f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1774f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1775f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 1776f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1777f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1778f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB24Row_C(const uint8* src_y, 1779f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1780f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1781f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgb24, 1782f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 178333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1784f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB4444Row_C(const uint8* src_y, 1785f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1786f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1787f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb4444, 1788f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 178933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1790f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB1555Row_C(const uint8* src_y, 1791f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1792f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1793f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb4444, 1794f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 179533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1796f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB565Row_C(const uint8* src_y, 1797f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1798f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1799f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgb565, 1800f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1801f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1802f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_AVX2(const uint8* src_y, 1803f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1804f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1805f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1806f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1807f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1808f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_AVX2(const uint8* src_y, 1809f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1810f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1811f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1812f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1813f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1814f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGBARow_AVX2(const uint8* src_y, 1815f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1816f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1817f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1818f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1819f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1820f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_SSSE3(const uint8* src_y, 1821f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1822f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1823f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1824f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 182533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1826f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_AVX2(const uint8* src_y, 1827f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1828f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1829f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1830f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1831f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1832f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_SSSE3(const uint8* src_y, 1833f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1834f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1835f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1836f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 183733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1838f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_AVX2(const uint8* src_y, 1839f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1840f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1841f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1842f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1843f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1844f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_SSSE3(const uint8* src_y, 1845f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1846f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1847f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1848f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 184933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1850f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422AlphaToARGBRow_SSSE3(const uint8* y_buf, 1851f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* u_buf, 1852f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* v_buf, 1853f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* a_buf, 1854f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1855f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1856f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1857f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422AlphaToARGBRow_AVX2(const uint8* y_buf, 1858f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* u_buf, 1859f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* v_buf, 1860f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* a_buf, 1861f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1862f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1863f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1864f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_SSSE3(const uint8* src_y, 1865f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1866f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1867f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1868f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 186933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1870f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToARGBRow_SSSE3(const uint8* src_y, 1871f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1872f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1873f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 187433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1875f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToARGBRow_AVX2(const uint8* src_y, 1876f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1877f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1878f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1879f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1880f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToRGB565Row_SSSE3(const uint8* src_y, 1881f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1882f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1883f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1884f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1885f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToRGB565Row_AVX2(const uint8* src_y, 1886f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1887f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1888f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1889f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1890f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV21ToARGBRow_SSSE3(const uint8* src_y, 1891f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1892f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1893f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1894f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1895f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV21ToARGBRow_AVX2(const uint8* src_y, 1896f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 1897f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1898f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1899f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1900f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToARGBRow_SSSE3(const uint8* src_yuy2, 1901f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1902f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1903f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1904f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToARGBRow_SSSE3(const uint8* src_uyvy, 1905f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1906f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1907f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1908f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToARGBRow_AVX2(const uint8* src_yuy2, 1909f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1910f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1911f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1912f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToARGBRow_AVX2(const uint8* src_uyvy, 1913f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1914f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1915f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1916f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGBARow_SSSE3(const uint8* src_y, 1917f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1918f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1919f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 1920f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1921f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1922f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB4444Row_SSSE3(const uint8* src_y, 1923f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1924f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1925f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1926f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 192733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1928f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB4444Row_AVX2(const uint8* src_y, 1929f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1930f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1931f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1932f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1933f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1934f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB1555Row_SSSE3(const uint8* src_y, 1935f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1936f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1937f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1938f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 193933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1940f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB1555Row_AVX2(const uint8* src_y, 1941f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1942f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1943f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1944f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1945f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1946f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB565Row_SSSE3(const uint8* src_y, 1947f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1948f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1949f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1950f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1951f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1952f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB565Row_AVX2(const uint8* src_y, 1953f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1954f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1955f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1956f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1957f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1958f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB24Row_SSSE3(const uint8* src_y, 1959f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1960f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1961f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgb24, 1962f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1963f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1964f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB24Row_AVX2(const uint8* src_y, 1965f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1966f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1967f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgb24, 1968f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1969f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1970f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_Any_AVX2(const uint8* src_y, 1971f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1972f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1973f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1974f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1975f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1976f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGBARow_Any_AVX2(const uint8* src_y, 1977f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1978f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1979f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1980f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1981f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1982f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_Any_SSSE3(const uint8* src_y, 1983f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1984f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1985f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1986f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 198733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 1988f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_Any_AVX2(const uint8* src_y, 1989f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1990f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1991f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1992f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 1993f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 1994f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_Any_SSSE3(const uint8* src_y, 1995f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 1996f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 1997f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 1998f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 199933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2000f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422AlphaToARGBRow_Any_SSSE3(const uint8* y_buf, 2001f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* u_buf, 2002f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* v_buf, 2003f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* a_buf, 2004f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2005f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2006f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2007f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422AlphaToARGBRow_Any_AVX2(const uint8* y_buf, 2008f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* u_buf, 2009f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* v_buf, 2010f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* a_buf, 2011f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2012f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2013f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2014f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToARGBRow_Any_SSSE3(const uint8* src_y, 2015f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 2016f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2017f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 201833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2019f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToARGBRow_Any_AVX2(const uint8* src_y, 2020f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 2021f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2022f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2023f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2024f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV21ToARGBRow_Any_SSSE3(const uint8* src_y, 2025f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_vu, 2026f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2027f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 202833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2029f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV21ToARGBRow_Any_AVX2(const uint8* src_y, 2030f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_vu, 2031f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2032f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2033f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2034f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToRGB565Row_Any_SSSE3(const uint8* src_y, 2035f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 2036f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2037f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2038f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2039f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToRGB565Row_Any_AVX2(const uint8* src_y, 2040f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 2041f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2042f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2043f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2044f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToARGBRow_Any_SSSE3(const uint8* src_yuy2, 2045f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2046f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2047f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2048f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToARGBRow_Any_SSSE3(const uint8* src_uyvy, 2049f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2050f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2051f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2052f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToARGBRow_Any_AVX2(const uint8* src_yuy2, 2053f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2054f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2055f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2056f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToARGBRow_Any_AVX2(const uint8* src_uyvy, 2057f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2058f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2059f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2060f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGBARow_Any_SSSE3(const uint8* src_y, 2061f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2062f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2063f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 2064f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2065f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2066f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB4444Row_Any_SSSE3(const uint8* src_y, 2067f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2068f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2069f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 2070f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2071f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2072f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB4444Row_Any_AVX2(const uint8* src_y, 2073f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2074f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2075f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 2076f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2077f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2078f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB1555Row_Any_SSSE3(const uint8* src_y, 2079f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2080f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2081f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 2082f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2083f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2084f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB1555Row_Any_AVX2(const uint8* src_y, 2085f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2086f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2087f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 2088f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2089f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2090f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB565Row_Any_SSSE3(const uint8* src_y, 2091f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2092f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2093f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 2094f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2095f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2096f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB565Row_Any_AVX2(const uint8* src_y, 2097f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2098f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2099f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_rgba, 2100f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2101f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2102f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB24Row_Any_SSSE3(const uint8* src_y, 2103f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2104f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2105f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2106f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2107f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2108f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB24Row_Any_AVX2(const uint8* src_y, 2109f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2110f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2111f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2112f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 211333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 211433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2115f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width); 2116f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width); 2117f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); 2118f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width); 2119b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I400ToARGBRow_MSA(const uint8* src_y, uint8* dst_argb, int width); 2120f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width); 2121f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width); 2122f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width); 2123b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I400ToARGBRow_Any_MSA(const uint8* src_y, uint8* dst_argb, int width); 212433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 212533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// ARGB preattenuated alpha blend. 2126b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBBlendRow_SSSE3(const uint8* src_argb, 2127b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2128b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2129b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2130b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBBlendRow_NEON(const uint8* src_argb, 2131b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2132b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2133b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2134b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBBlendRow_C(const uint8* src_argb, 2135b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2136b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2137b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 213833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2139f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Unattenuated planar alpha blend. 2140b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BlendPlaneRow_SSSE3(const uint8* src0, 2141b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src1, 2142b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* alpha, 2143b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst, 2144b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2145b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BlendPlaneRow_Any_SSSE3(const uint8* src0, 2146b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src1, 2147b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* alpha, 2148b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst, 2149b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2150b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BlendPlaneRow_AVX2(const uint8* src0, 2151b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src1, 2152b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* alpha, 2153b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst, 2154b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2155b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BlendPlaneRow_Any_AVX2(const uint8* src0, 2156b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src1, 2157b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* alpha, 2158b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst, 2159b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2160b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid BlendPlaneRow_C(const uint8* src0, 2161b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src1, 2162b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* alpha, 2163b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst, 2164b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2165f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2166f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// ARGB multiply images. Same API as Blend, but these require 2167f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// pointer and width alignment for SSE2. 2168b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_C(const uint8* src_argb, 2169b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2170b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2171b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2172b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_SSE2(const uint8* src_argb, 2173b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2174b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2175b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2176b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_Any_SSE2(const uint8* src_argb, 2177b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2178b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2179b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2180b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_AVX2(const uint8* src_argb, 2181b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2182b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2183b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2184b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_Any_AVX2(const uint8* src_argb, 2185b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2186b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2187b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2188b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_NEON(const uint8* src_argb, 2189b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2190b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2191b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2192b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_Any_NEON(const uint8* src_argb, 2193b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2194b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2195b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2196b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_MSA(const uint8* src_argb, 2197b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2198b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2199b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2200b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBMultiplyRow_Any_MSA(const uint8* src_argb, 2201b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2202b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2203b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2204f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2205f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// ARGB add images. 2206b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_C(const uint8* src_argb, 2207b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2208b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2209b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2210b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_SSE2(const uint8* src_argb, 2211b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2212b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2213b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2214b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_Any_SSE2(const uint8* src_argb, 2215b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2216b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2217b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2218b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_AVX2(const uint8* src_argb, 2219b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2220b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2221b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2222b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_Any_AVX2(const uint8* src_argb, 2223b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2224b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2225b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2226b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_NEON(const uint8* src_argb, 2227b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2228b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2229b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2230b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_Any_NEON(const uint8* src_argb, 2231b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2232b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2233b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2234b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_MSA(const uint8* src_argb, 2235b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2236b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2237b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2238b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAddRow_Any_MSA(const uint8* src_argb, 2239b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2240b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2241b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2242f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2243f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// ARGB subtract images. Same API as Blend, but these require 2244f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// pointer and width alignment for SSE2. 2245b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_C(const uint8* src_argb, 2246b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2247b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2248b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2249b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_SSE2(const uint8* src_argb, 2250b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2251b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2252b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2253b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_Any_SSE2(const uint8* src_argb, 2254b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2255b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2256b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2257b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_AVX2(const uint8* src_argb, 2258b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2259b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2260b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2261b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_Any_AVX2(const uint8* src_argb, 2262b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2263b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2264b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2265b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_NEON(const uint8* src_argb, 2266b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2267b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2268b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2269b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_Any_NEON(const uint8* src_argb, 2270b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2271b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2272b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2273b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_MSA(const uint8* src_argb, 2274b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2275b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2276b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2277b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSubtractRow_Any_MSA(const uint8* src_argb, 2278b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_argb1, 2279b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2280b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2281f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2282f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width); 2283f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width); 2284f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int width); 2285b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, 2286b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2287f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2288b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, 2289b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2290f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2291f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2292b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb, 2293b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2294b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 2295b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2296b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb, 2297b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2298b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 2299b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2300f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2301f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int width); 2302b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, 2303b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2304f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2305b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, 2306b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2307f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2308f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2309f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 2310f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 2311f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 2312b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, 2313b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2314f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2315b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, 2316b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2317f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2318b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb, 2319b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2320b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 2321b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2322b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB24Row_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 2323b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRAWRow_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 2324b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565Row_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 2325b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB1555Row_Any_MSA(const uint8* src_argb, 2326b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2327b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2328b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToARGB4444Row_Any_MSA(const uint8* src_argb, 2329b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2330b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2331b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBToRGB565DitherRow_Any_MSA(const uint8* src_argb, 2332b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb, 2333b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint32 dither4, 2334b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2335f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2336f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I444ToARGBRow_Any_NEON(const uint8* src_y, 2337f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2338f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2339f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2340f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 234133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2342f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_Any_NEON(const uint8* src_y, 2343f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2344f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2345f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2346f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 234733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2348f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422AlphaToARGBRow_Any_NEON(const uint8* src_y, 2349f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2350f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2351f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_a, 2352f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2353f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2354f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2355f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGBARow_Any_NEON(const uint8* src_y, 2356f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2357f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2358f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2359f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 236033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2361f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB24Row_Any_NEON(const uint8* src_y, 2362f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2363f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2364f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2365f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 236633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2367f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB4444Row_Any_NEON(const uint8* src_y, 2368f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2369f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2370f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2371f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2372f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2373f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGB1555Row_Any_NEON(const uint8* src_y, 2374f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2375f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2376f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2377f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2378f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2379f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToRGB565Row_Any_NEON(const uint8* src_y, 2380f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2381f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2382f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2383f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2384f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2385f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToARGBRow_Any_NEON(const uint8* src_y, 2386f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 2387f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2388f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2389f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2390f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV21ToARGBRow_Any_NEON(const uint8* src_y, 2391f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_vu, 2392f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2393f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2394f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2395f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid NV12ToRGB565Row_Any_NEON(const uint8* src_y, 2396f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_uv, 2397f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2398f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2399f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2400f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToARGBRow_Any_NEON(const uint8* src_yuy2, 2401f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2402f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 240333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2404f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToARGBRow_Any_NEON(const uint8* src_uyvy, 2405f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2406f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 240733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int width); 2408b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I444ToARGBRow_Any_DSPR2(const uint8* src_y, 2409b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2410b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2411b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2412b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2413b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2414b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB4444Row_Any_DSPR2(const uint8* src_y, 2415b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2416b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2417b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2418b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2419b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2420b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGBRow_Any_DSPR2(const uint8* src_y, 2421b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2422b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2423b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2424b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2425b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2426f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_DSPR2(const uint8* src_y, 2427f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2428f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2429f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2430f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2431f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2432b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB1555Row_Any_DSPR2(const uint8* src_y, 2433b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2434b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2435b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2436b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2437b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2438b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I411ToARGBRow_Any_DSPR2(const uint8* src_y, 2439b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2440b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2441b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2442b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2443b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2444b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV12ToARGBRow_Any_DSPR2(const uint8* src_y, 2445b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_uv, 2446b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2447b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2448b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2449f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToARGBRow_DSPR2(const uint8* src_y, 2450f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2451f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2452f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint8* dst_argb, 2453f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const struct YuvConstants* yuvconstants, 2454f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2455b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I444ToARGBRow_Any_MSA(const uint8* src_y, 2456b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2457b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2458b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2459b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2460b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2461b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGBRow_Any_MSA(const uint8* src_y, 2462b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2463b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2464b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2465b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2466b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2467b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToRGBARow_Any_MSA(const uint8* src_y, 2468b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2469b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2470b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2471b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2472b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2473b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422AlphaToARGBRow_Any_MSA(const uint8* src_y, 2474b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2475b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2476b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_a, 2477b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2478b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2479b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2480b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToRGB24Row_Any_MSA(const uint8* src_y, 2481b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2482b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2483b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb24, 2484b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2485b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2486b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToRGB565Row_Any_MSA(const uint8* src_y, 2487b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2488b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2489b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_rgb565, 2490b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2491b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2492b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB4444Row_Any_MSA(const uint8* src_y, 2493b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2494b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2495b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb4444, 2496b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2497b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2498b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToARGB1555Row_Any_MSA(const uint8* src_y, 2499b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2500b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2501b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb1555, 2502b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2503b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2504b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV12ToARGBRow_Any_MSA(const uint8* src_y, 2505b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_uv, 2506b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2507b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2508b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2509b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV12ToRGB565Row_Any_MSA(const uint8* src_y, 2510b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_uv, 2511b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2512b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2513b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2514b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid NV21ToARGBRow_Any_MSA(const uint8* src_y, 2515b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_vu, 2516b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2517b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2518b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2519b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToARGBRow_Any_MSA(const uint8* src_yuy2, 2520b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2521b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2522b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2523b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToARGBRow_Any_MSA(const uint8* src_uyvy, 2524b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2525b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const struct YuvConstants* yuvconstants, 2526b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 252733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2528f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); 2529b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_AVX2(const uint8* src_yuy2, 2530b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2531b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2532b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2533b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2534f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToUV422Row_AVX2(const uint8* src_yuy2, 2535b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2536b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2537b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2538f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); 2539b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_SSE2(const uint8* src_yuy2, 2540b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2541b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2542b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2543b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 254433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_SSE2(const uint8* src_yuy2, 2545b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2546b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2547b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2548f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width); 2549b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_NEON(const uint8* src_yuy2, 2550b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2551b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2552b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2553b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 255433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_NEON(const uint8* src_yuy2, 2555b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2556b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2557b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2558b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToYRow_MSA(const uint8* src_yuy2, uint8* dst_y, int width); 2559b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_MSA(const uint8* src_yuy2, 2560b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2561b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2562b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2563b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2564b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUV422Row_MSA(const uint8* src_yuy2, 2565b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2566b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2567b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2568f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int width); 2569b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_C(const uint8* src_yuy2, 2570b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2571b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2572b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2573b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 257433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_C(const uint8* src_yuy2, 2575b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2576b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2577b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2578f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); 2579b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, 2580b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2581b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2582b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2583b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2584f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2, 2585b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2586b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2587b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2588f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); 2589b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, 2590b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2591b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2592b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2593b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 259433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2, 2595b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2596b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2597b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2598f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int width); 2599b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, 2600b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2601b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2602b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2603b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 260433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2, 2605b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2606b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2607b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2608b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToYRow_Any_MSA(const uint8* src_yuy2, uint8* dst_y, int width); 2609b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUVRow_Any_MSA(const uint8* src_yuy2, 2610b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_yuy2, 2611b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2612b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2613b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2614b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid YUY2ToUV422Row_Any_MSA(const uint8* src_yuy2, 2615b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2616b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2617b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2618f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 2619b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_AVX2(const uint8* src_uyvy, 2620b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2621b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2622b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2623b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2624f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToUV422Row_AVX2(const uint8* src_uyvy, 2625b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2626b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2627b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2628f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width); 2629b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_SSE2(const uint8* src_uyvy, 2630b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2631b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2632b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2633b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 263433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_SSE2(const uint8* src_uyvy, 2635b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2636b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2637b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2638f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 2639b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_AVX2(const uint8* src_uyvy, 2640b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2641b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2642b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2643b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2644f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToUV422Row_AVX2(const uint8* src_uyvy, 2645b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2646b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2647b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2648f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width); 2649b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_NEON(const uint8* src_uyvy, 2650b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2651b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2652b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2653b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 265433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_NEON(const uint8* src_uyvy, 2655b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2656b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2657b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2658b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToYRow_MSA(const uint8* src_uyvy, uint8* dst_y, int width); 2659b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_MSA(const uint8* src_uyvy, 2660b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2661b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2662b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2663b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2664b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUV422Row_MSA(const uint8* src_uyvy, 2665b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2666b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2667b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 266833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2669f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int width); 2670b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_C(const uint8* src_uyvy, 2671b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2672b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2673b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2674b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 267533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_C(const uint8* src_uyvy, 2676b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2677b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2678b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2679f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 2680b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, 2681b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2682b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2683b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2684b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2685f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy, 2686b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2687b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2688b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2689f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int width); 2690b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, 2691b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2692b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2693b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2694b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 269533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy, 2696b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2697b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2698b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2699f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int width); 2700b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_Any_NEON(const uint8* src_uyvy, 2701b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2702b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2703b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2704b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 270533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_Any_NEON(const uint8* src_uyvy, 2706b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2707b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2708b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2709b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToYRow_Any_MSA(const uint8* src_uyvy, uint8* dst_y, int width); 2710b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUVRow_Any_MSA(const uint8* src_uyvy, 2711b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int stride_uyvy, 2712b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2713b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2714b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2715b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid UYVYToUV422Row_Any_MSA(const uint8* src_uyvy, 2716b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_u, 2717b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_v, 2718b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2719f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2720f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToYUY2Row_C(const uint8* src_y, 2721f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2722f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2723b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_yuy2, 2724b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2725f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToUYVYRow_C(const uint8* src_y, 2726f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2727f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2728b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uyvy, 2729b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2730f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToYUY2Row_SSE2(const uint8* src_y, 2731f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2732f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2733b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_yuy2, 2734b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2735f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToUYVYRow_SSE2(const uint8* src_y, 2736f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2737f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2738b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uyvy, 2739b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2740f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToYUY2Row_Any_SSE2(const uint8* src_y, 2741f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2742f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2743b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_yuy2, 2744b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2745f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToUYVYRow_Any_SSE2(const uint8* src_y, 2746f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2747f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2748b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uyvy, 2749b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2750f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToYUY2Row_NEON(const uint8* src_y, 2751f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2752f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2753b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_yuy2, 2754b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2755f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToUYVYRow_NEON(const uint8* src_y, 2756f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2757f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2758b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uyvy, 2759b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2760f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToYUY2Row_Any_NEON(const uint8* src_y, 2761f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2762f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2763b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_yuy2, 2764b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2765f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid I422ToUYVYRow_Any_NEON(const uint8* src_y, 2766f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_u, 2767f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang const uint8* src_v, 2768b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uyvy, 2769b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2770b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToYUY2Row_MSA(const uint8* src_y, 2771b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2772b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2773b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_yuy2, 2774b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2775b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToUYVYRow_MSA(const uint8* src_y, 2776b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2777b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2778b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uyvy, 2779b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2780b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToYUY2Row_Any_MSA(const uint8* src_y, 2781b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2782b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2783b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_yuy2, 2784b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2785b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid I422ToUYVYRow_Any_MSA(const uint8* src_y, 2786b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_u, 2787b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_v, 2788b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_uyvy, 2789b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2790f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2791f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Effects related row functions. 279233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBAttenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width); 279333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBAttenuateRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width); 2794f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBAttenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); 2795f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBAttenuateRow_NEON(const uint8* src_argb, uint8* dst_argb, int width); 2796b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAttenuateRow_MSA(const uint8* src_argb, uint8* dst_argb, int width); 2797b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAttenuateRow_Any_SSE2(const uint8* src_argb, 2798b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2799f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2800b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAttenuateRow_Any_SSSE3(const uint8* src_argb, 2801b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2802f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2803b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAttenuateRow_Any_AVX2(const uint8* src_argb, 2804b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2805f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2806b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAttenuateRow_Any_NEON(const uint8* src_argb, 2807b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2808f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2809b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAttenuateRow_Any_MSA(const uint8* src_argb, 2810b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2811b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 281233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 281333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Inverse table for unattenuate, shared by C and SSE2. 2814f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangextern const uint32 fixed_invtbl8[256]; 281533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBUnattenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width); 281633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); 2817f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBUnattenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); 2818b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBUnattenuateRow_Any_SSE2(const uint8* src_argb, 2819b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2820f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 2821b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBUnattenuateRow_Any_AVX2(const uint8* src_argb, 2822b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2823f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 282433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 282533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBGrayRow_C(const uint8* src_argb, uint8* dst_argb, int width); 282633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width); 2827f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBGrayRow_NEON(const uint8* src_argb, uint8* dst_argb, int width); 2828b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBGrayRow_MSA(const uint8* src_argb, uint8* dst_argb, int width); 282933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 283033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBSepiaRow_C(uint8* dst_argb, int width); 283133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBSepiaRow_SSSE3(uint8* dst_argb, int width); 2832f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBSepiaRow_NEON(uint8* dst_argb, int width); 2833b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBSepiaRow_MSA(uint8* dst_argb, int width); 283433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2835b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBColorMatrixRow_C(const uint8* src_argb, 2836b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2837b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const int8* matrix_argb, 2838b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2839b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBColorMatrixRow_SSSE3(const uint8* src_argb, 2840b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2841b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const int8* matrix_argb, 2842b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2843b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBColorMatrixRow_NEON(const uint8* src_argb, 2844b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2845b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const int8* matrix_argb, 2846b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 284733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 284833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width); 284933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width); 285033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2851f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width); 2852f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid RGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width); 2853f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2854b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBQuantizeRow_C(uint8* dst_argb, 2855b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int scale, 2856b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int interval_size, 2857b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int interval_offset, 2858b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2859b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBQuantizeRow_SSE2(uint8* dst_argb, 2860b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int scale, 2861b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int interval_size, 2862b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int interval_offset, 2863b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2864b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBQuantizeRow_NEON(uint8* dst_argb, 2865b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int scale, 2866b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int interval_size, 2867b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int interval_offset, 2868b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2869f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2870b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShadeRow_C(const uint8* src_argb, 2871b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2872b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2873f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint32 value); 2874b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShadeRow_SSE2(const uint8* src_argb, 2875b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2876b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2877f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint32 value); 2878b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShadeRow_NEON(const uint8* src_argb, 2879b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2880b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2881f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang uint32 value); 2882b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBShadeRow_MSA(const uint8* src_argb, 2883b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2884b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2885b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint32 value); 288633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 288733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Used for blur. 2888b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid CumulativeSumToAverageRow_SSE2(const int32* topleft, 2889b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const int32* botleft, 2890b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2891b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int area, 2892b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst, 2893b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int count); 2894b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ComputeCumulativeSumRow_SSE2(const uint8* row, 2895b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int32* cumsum, 2896b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const int32* previous_cumsum, 2897b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 289833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2899b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid CumulativeSumToAverageRow_C(const int32* topleft, 2900b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const int32* botleft, 2901b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2902b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int area, 2903b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst, 2904b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int count); 2905b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ComputeCumulativeSumRow_C(const uint8* row, 2906b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int32* cumsum, 2907b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const int32* previous_cumsum, 2908b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 290933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 291033cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 2911b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAffineRow_C(const uint8* src_argb, 2912b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_argb_stride, 2913b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2914b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const float* uv_dudv, 2915b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 291633cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API 2917b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBAffineRow_SSE2(const uint8* src_argb, 2918b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int src_argb_stride, 2919b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 2920b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const float* uv_dudv, 2921b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 292233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2923f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Used for I420Scale, ARGBScale, and ARGBInterpolate. 2924b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_C(uint8* dst_ptr, 2925b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2926f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang ptrdiff_t src_stride_ptr, 2927b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2928b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int source_y_fraction); 2929b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_SSSE3(uint8* dst_ptr, 2930b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2931b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2932b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2933f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int source_y_fraction); 2934b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_AVX2(uint8* dst_ptr, 2935b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2936b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2937b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2938f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int source_y_fraction); 2939b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_NEON(uint8* dst_ptr, 2940b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2941b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2942b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2943f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int source_y_fraction); 2944b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_DSPR2(uint8* dst_ptr, 2945b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2946b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2947b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2948f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int source_y_fraction); 2949b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_MSA(uint8* dst_ptr, 2950b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2951b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2952b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2953b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int source_y_fraction); 2954b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_Any_NEON(uint8* dst_ptr, 2955b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2956b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2957b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2958f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int source_y_fraction); 2959b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_Any_SSSE3(uint8* dst_ptr, 2960b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2961b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2962b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2963f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int source_y_fraction); 2964b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_Any_AVX2(uint8* dst_ptr, 2965b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2966b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2967b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2968f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int source_y_fraction); 2969b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_Any_DSPR2(uint8* dst_ptr, 2970b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2971b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2972b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 297333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int source_y_fraction); 2974b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_Any_MSA(uint8* dst_ptr, 2975b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_ptr, 2976b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard ptrdiff_t src_stride_ptr, 2977b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2978b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int source_y_fraction); 2979b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 2980b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid InterpolateRow_16_C(uint16* dst_ptr, 2981b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint16* src_ptr, 2982f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang ptrdiff_t src_stride_ptr, 2983b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 2984b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int source_y_fraction); 2985f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 2986f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang// Sobel images. 2987b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXRow_C(const uint8* src_y0, 2988b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y1, 2989b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y2, 2990b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_sobelx, 2991b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2992b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXRow_SSE2(const uint8* src_y0, 2993b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y1, 2994b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y2, 2995b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_sobelx, 2996b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 2997b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXRow_NEON(const uint8* src_y0, 2998b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y1, 2999b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y2, 3000b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_sobelx, 3001b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3002b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelYRow_C(const uint8* src_y0, 3003b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y1, 3004b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_sobely, 3005b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3006b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelYRow_SSE2(const uint8* src_y0, 3007b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y1, 3008b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_sobely, 3009b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3010b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelYRow_NEON(const uint8* src_y0, 3011b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_y1, 3012b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_sobely, 3013b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3014b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelRow_C(const uint8* src_sobelx, 3015b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3016b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3017b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3018b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelRow_SSE2(const uint8* src_sobelx, 3019b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3020b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3021b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3022b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelRow_NEON(const uint8* src_sobelx, 3023b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3024b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3025b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3026b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelRow_MSA(const uint8* src_sobelx, 3027b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3028b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3029b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3030b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelToPlaneRow_C(const uint8* src_sobelx, 3031b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3032b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 3033b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3034b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelToPlaneRow_SSE2(const uint8* src_sobelx, 3035b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3036b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 3037b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3038b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelToPlaneRow_NEON(const uint8* src_sobelx, 3039b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3040b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 3041b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3042b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelToPlaneRow_MSA(const uint8* src_sobelx, 3043b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3044b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 3045b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3046b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXYRow_C(const uint8* src_sobelx, 3047b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3048b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3049b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3050b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXYRow_SSE2(const uint8* src_sobelx, 3051b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3052b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3053b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3054b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXYRow_NEON(const uint8* src_sobelx, 3055b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3056b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3057b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3058b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXYRow_MSA(const uint8* src_sobelx, 3059b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3060b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3061b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3062b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelRow_Any_SSE2(const uint8* src_sobelx, 3063b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3064b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3065b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3066b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelRow_Any_NEON(const uint8* src_sobelx, 3067b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3068b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3069b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3070b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelRow_Any_MSA(const uint8* src_sobelx, 3071b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3072b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3073b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3074b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelToPlaneRow_Any_SSE2(const uint8* src_sobelx, 3075b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3076b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 3077b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3078b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelToPlaneRow_Any_NEON(const uint8* src_sobelx, 3079b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3080b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 3081b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3082b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelToPlaneRow_Any_MSA(const uint8* src_sobelx, 3083b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3084b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_y, 3085b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3086b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXYRow_Any_SSE2(const uint8* src_sobelx, 3087b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3088b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3089b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3090b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXYRow_Any_NEON(const uint8* src_sobelx, 3091b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3092b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3093b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3094b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid SobelXYRow_Any_MSA(const uint8* src_sobelx, 3095b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* src_sobely, 3096b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3097b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3098f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 3099f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBPolynomialRow_C(const uint8* src_argb, 3100b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3101b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const float* poly, 3102f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 3103f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBPolynomialRow_SSE2(const uint8* src_argb, 3104b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3105b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const float* poly, 3106f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 3107f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuangvoid ARGBPolynomialRow_AVX2(const uint8* src_argb, 3108b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3109b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const float* poly, 3110f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width); 3111f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 3112b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard// Scale and convert to half float. 3113b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_C(const uint16* src, uint16* dst, float scale, int width); 3114b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_SSE2(const uint16* src, uint16* dst, float scale, int width); 3115b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_Any_SSE2(const uint16* src, 3116b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint16* dst, 3117b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard float scale, 3118b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3119b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_AVX2(const uint16* src, uint16* dst, float scale, int width); 3120b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_Any_AVX2(const uint16* src, 3121b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint16* dst, 3122b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard float scale, 3123b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3124b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_F16C(const uint16* src, uint16* dst, float scale, int width); 3125b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_Any_F16C(const uint16* src, 3126b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint16* dst, 3127b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard float scale, 3128b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3129b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloat1Row_F16C(const uint16* src, uint16* dst, float scale, int width); 3130b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloat1Row_Any_F16C(const uint16* src, 3131b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint16* dst, 3132b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard float scale, 3133b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3134b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_NEON(const uint16* src, uint16* dst, float scale, int width); 3135b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloatRow_Any_NEON(const uint16* src, 3136b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint16* dst, 3137b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard float scale, 3138b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3139b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloat1Row_NEON(const uint16* src, uint16* dst, float scale, int width); 3140b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid HalfFloat1Row_Any_NEON(const uint16* src, 3141b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint16* dst, 3142b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard float scale, 3143b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width); 3144b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard 3145b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBLumaColorTableRow_C(const uint8* src_argb, 3146b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3147b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard int width, 3148b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* luma, 3149b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint32 lumacoeff); 3150b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchardvoid ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, 3151b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint8* dst_argb, 3152f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang int width, 3153b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard const uint8* luma, 3154b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard uint32 lumacoeff); 3155f047e7ca6983218eed7703c7afd51fed7bd3b5c9Hangyu Kuang 315633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus 315733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp} // extern "C" 315833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp} // namespace libyuv 315933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 316033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 3161b83bb38f0a92bedeb52baa31e515220927ef53bbFrank Barchard#endif // INCLUDE_LIBYUV_ROW_H_ 3162