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
733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp *  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
1133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifndef INCLUDE_LIBYUV_ROW_H_  // NOLINT
1233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define INCLUDE_LIBYUV_ROW_H_
1333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
1433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include "libyuv/basic_types.h"
1533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
1633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus
1733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampnamespace libyuv {
1833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampextern "C" {
1933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
2033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
2133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// TODO(fbarchard): Remove kMaxStride
2233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define kMaxStride (2880 * 4)
2333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a) - 1)))
2433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
2533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(__CLR_VER) || defined(COVERAGE_ENABLED) || \
2633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp    defined(TARGET_IPHONE_SIMULATOR)
2733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define YUV_DISABLE_ASM
2833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
2933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// True if compiling for SSSE3 as a requirement.
3033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3))
3133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define LIBYUV_SSSE3_ONLY
3233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
3333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
3433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// The following are available on all x86 platforms:
3533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if !defined(YUV_DISABLE_ASM) && \
3633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp    (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__))
3733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Conversions.
3833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ABGRTOARGBROW_SSSE3
3933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ABGRTOUVROW_SSSE3
4033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ABGRTOYROW_SSSE3
4133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGB1555TOARGBROW_SSE2
4233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGB4444TOARGBROW_SSE2
4333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOARGB1555ROW_SSE2
4433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOARGB4444ROW_SSE2
4533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORAWROW_SSSE3
4633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORGB24ROW_SSSE3
4733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORGB565ROW_SSE2
4833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORGBAROW_SSSE3
4933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOUVROW_SSSE3
5033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTOYROW_SSSE3
5133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_BGRATOARGBROW_SSSE3
5233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_BGRATOUVROW_SSSE3
5333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_BGRATOYROW_SSSE3
5433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_COPYROW_SSE2
5533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_COPYROW_X86
5633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I400TOARGBROW_SSE2
5733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I411TOARGBROW_SSSE3
5833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOABGRROW_SSSE3
5933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOARGBROW_SSSE3
6033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOBGRAROW_SSSE3
6133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I444TOARGBROW_SSSE3
6233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_MIRRORROW_SSSE3
6333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_MIRRORROWUV_SSSE3
6433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_NV12TOARGBROW_SSSE3
6533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_NV21TOARGBROW_SSSE3
6633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RAWTOARGBROW_SSSE3
6733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGB24TOARGBROW_SSSE3
6833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGB565TOARGBROW_SSE2
6933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_SETROW_X86
7033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_SPLITUV_SSE2
7133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUV422ROW_SSE2
7233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUVROW_SSE2
7333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOYROW_SSE2
7433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YTOARGBROW_SSE2
7533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUV422ROW_SSE2
7633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUVROW_SSE2
7733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOYROW_SSE2
7833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
7933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Effects
8033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBAFFINEROW_SSE2
8133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBATTENUATEROW_SSSE3
8233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBBLENDROW_SSSE3
8333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBCOLORMATRIXROW_SSSE3
8433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBGRAYROW_SSSE3
8533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBINTERPOLATEROW_SSSE3
8633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBMIRRORROW_SSSE3
8733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBQUANTIZEROW_SSE2
8833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBSEPIAROW_SSSE3
8933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBSHADE_SSE2
9033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBUNATTENUATEROW_SSE2
9133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_COMPUTECUMULATIVESUMROW_SSE2
9233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_CUMULATIVESUMTOAVERAGE_SSE2
9333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
9433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
9533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// The following are Windows only:
9633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if !defined(YUV_DISABLE_ASM) && defined(_M_IX86)
9733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ABGRTOARGBROW_SSSE3
9833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBCOLORTABLEROW_X86
9933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TORGBAROW_SSSE3
10033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGBATOARGBROW_SSSE3
10133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGBATOUVROW_SSSE3
10233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGBATOYROW_SSSE3
10333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
10433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
10533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// The following are disabled when SSSE3 is available:
10633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if !defined(YUV_DISABLE_ASM) && \
10733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp    (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \
10833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp    !defined(LIBYUV_SSSE3_ONLY)
10933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBATTENUATE_SSE2
11033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBBLENDROW_SSE2
11133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_MIRRORROW_SSE2
11233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
11333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
11433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// The following are available on Neon platforms
11533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if !defined(YUV_DISABLE_ASM) && (defined(__ARM_NEON__) || defined(LIBYUV_NEON))
11633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_COPYROW_NEON
11733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOABGRROW_NEON
11833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOARGBROW_NEON
11933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TOBGRAROW_NEON
12033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TORAWROW_NEON
12133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TORGB24ROW_NEON
12233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_I422TORGBAROW_NEON
12333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_MIRRORROW_NEON
12433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_MIRRORROWUV_NEON
12533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_SETROW_NEON
12633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_SPLITUV_NEON
12733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUV422ROW_NEON
12833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOUVROW_NEON
12933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_UYVYTOYROW_NEON
13033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUV422ROW_NEON
13133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOUVROW_NEON
13233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_YUY2TOYROW_NEON
13333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
13433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// TODO(fbarchard): Hook these up to calling functions.
13533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ABGRTOARGBROW_NEON
13633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORAWROW_NEON
13733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORGB24ROW_NEON
13833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_ARGBTORGBAROW_NEON
13933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_BGRATOARGBROW_NEON
14033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_NV12TOARGBROW_NEON
14133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_NV21TOARGBROW_NEON
14233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RAWTOARGBROW_NEON
14333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGB24TOARGBROW_NEON
14433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define HAS_RGBATOARGBROW_NEON
14533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
14633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
14733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(_MSC_VER) && !defined(__CLR_VER)
14833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define SIMD_ALIGNED(var) __declspec(align(16)) var
14933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) int8 vec8[16];
15033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) uint8 uvec8[16];
15133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) int16 vec16[8];
15233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) uint16 uvec16[8];
15333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) int32 vec32[4];
15433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef __declspec(align(16)) uint32 uvec32[4];
15533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#elif defined(__GNUC__)
15633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define SIMD_ALIGNED(var) var __attribute__((aligned(16)))
15733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int8 __attribute__((vector_size(16))) vec8;
15833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint8 __attribute__((vector_size(16))) uvec8;
15933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int16 __attribute__((vector_size(16))) vec16;
16033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint16 __attribute__((vector_size(16))) uvec16;
16133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int32 __attribute__((vector_size(16))) vec32;
16233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint32 __attribute__((vector_size(16))) uvec32;
16333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else
16433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define SIMD_ALIGNED(var) var
16533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int8 vec8[16];
16633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint8 uvec8[16];
16733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int16 vec16[8];
16833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint16 uvec16[8];
16933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int32 vec32[4];
17033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef uint32 uvec32[4];
17133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
17233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
17333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__)
17433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define OMITFP
17533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else
17633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define OMITFP __attribute__((optimize("omit-frame-pointer")))
17733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
17833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
17933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToARGBRow_NEON(const uint8* y_buf,
18033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* u_buf,
18133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* v_buf,
18233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* rgb_buf,
18333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        int width);
18433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToBGRARow_NEON(const uint8* y_buf,
18533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* u_buf,
18633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* v_buf,
18733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* rgb_buf,
18833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        int width);
18933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToABGRRow_NEON(const uint8* y_buf,
19033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* u_buf,
19133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* v_buf,
19233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* rgb_buf,
19333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        int width);
19433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGBARow_NEON(const uint8* y_buf,
19533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* u_buf,
19633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* v_buf,
19733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* rgb_buf,
19833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        int width);
19933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGB24Row_NEON(const uint8* y_buf,
20033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* u_buf,
20133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* v_buf,
20233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* rgb_buf,
20333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
20433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRAWRow_NEON(const uint8* y_buf,
20533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       const uint8* u_buf,
20633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       const uint8* v_buf,
20733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       uint8* rgb_buf,
20833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       int width);
20933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV12ToARGBRow_NEON(const uint8* y_buf,
21033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* uv_buf,
21133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* rgb_buf,
21233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        int width);
21333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV21ToARGBRow_NEON(const uint8* y_buf,
21433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        const uint8* uv_buf,
21533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* rgb_buf,
21633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        int width);
21733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
21833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
21933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
22033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
22133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
22233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToYRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
22333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToYRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
22433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToYRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
22533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToYRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
22633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
22733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
22833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       uint8* dst_u, uint8* dst_v, int width);
22933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
23033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       uint8* dst_u, uint8* dst_v, int width);
23133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
23233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       uint8* dst_u, uint8* dst_v, int width);
23333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
23433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       uint8* dst_u, uint8* dst_v, int width);
23533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToUVRow_Unaligned_SSSE3(const uint8* src_argb0, int src_stride_argb,
23633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                 uint8* dst_u, uint8* dst_v, int width);
23733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToUVRow_Unaligned_SSSE3(const uint8* src_argb0, int src_stride_argb,
23833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                 uint8* dst_u, uint8* dst_v, int width);
23933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToUVRow_Unaligned_SSSE3(const uint8* src_argb0, int src_stride_argb,
24033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                 uint8* dst_u, uint8* dst_v, int width);
24133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToUVRow_Unaligned_SSSE3(const uint8* src_argb0, int src_stride_argb,
24233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                 uint8* dst_u, uint8* dst_v, int width);
24333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
24433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRow_SSSE3(const uint8* src, uint8* dst, int width);
24533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRow_SSE2(const uint8* src, uint8* dst, int width);
24633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRow_NEON(const uint8* src, uint8* dst, int width);
24733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRow_C(const uint8* src, uint8* dst, int width);
24833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
24933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRowUV_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v, int width);
25033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRowUV_NEON(const uint8* src, uint8* dst_u, uint8* dst_v, int width);
25133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid MirrorRowUV_C(const uint8* src, uint8* dst_u, uint8* dst_v, int width);
25233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
25333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBMirrorRow_SSSE3(const uint8* src, uint8* dst, int width);
25433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBMirrorRow_C(const uint8* src, uint8* dst, int width);
25533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
25633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SplitUV_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
25733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SplitUV_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
25833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SplitUV_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
25933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
26033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CopyRow_SSE2(const uint8* src, uint8* dst, int count);
26133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CopyRow_X86(const uint8* src, uint8* dst, int count);
26233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CopyRow_NEON(const uint8* src, uint8* dst, int count);
26333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CopyRow_C(const uint8* src, uint8* dst, int count);
26433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
26533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SetRow8_X86(uint8* dst, uint32 v32, int count);
26633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SetRows32_X86(uint8* dst, uint32 v32, int width,
26733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                   int dst_stride, int height);
26833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SetRow8_NEON(uint8* dst, uint32 v32, int count);
26933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SetRows32_NEON(uint8* dst, uint32 v32, int width,
27033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                    int dst_stride, int height);
27133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SetRow8_C(uint8* dst, uint32 v32, int count);
27233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid SetRows32_C(uint8* dst, uint32 v32, int width, int dst_stride, int height);
27333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
27433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
27533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
27633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
27733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
27833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
27933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToUVRow_C(const uint8* src_argb0, int src_stride_argb,
28033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                   uint8* dst_u, uint8* dst_v, int width);
28133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToUVRow_C(const uint8* src_argb0, int src_stride_argb,
28233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                   uint8* dst_u, uint8* dst_v, int width);
28333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToUVRow_C(const uint8* src_argb0, int src_stride_argb,
28433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                   uint8* dst_u, uint8* dst_v, int width);
28533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToUVRow_C(const uint8* src_argb0, int src_stride_argb,
28633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                   uint8* dst_u, uint8* dst_v, int width);
28733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
28833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToARGBRow_SSSE3(const uint8* src_bgra, uint8* dst_argb, int pix);
28933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToARGBRow_SSSE3(const uint8* src_abgr, uint8* dst_argb, int pix);
29033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToARGBRow_SSSE3(const uint8* src_rgba, uint8* dst_argb, int pix);
29133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix);
29233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RAWToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix);
29333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGB1555ToARGBRow_SSE2(const uint8* src_argb, uint8* dst_argb, int pix);
29433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGB565ToARGBRow_SSE2(const uint8* src_argb, uint8* dst_argb, int pix);
29533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGB4444ToARGBRow_SSE2(const uint8* src_argb, uint8* dst_argb, int pix);
29633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
29733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToARGBRow_NEON(const uint8* src_bgra, uint8* dst_argb, int pix);
29833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToARGBRow_NEON(const uint8* src_abgr, uint8* dst_argb, int pix);
29933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToARGBRow_NEON(const uint8* src_rgba, uint8* dst_argb, int pix);
30033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix);
30133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RAWToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix);
30233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
30333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToARGBRow_C(const uint8* src_bgra, uint8* dst_argb, int pix);
30433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToARGBRow_C(const uint8* src_abgr, uint8* dst_argb, int pix);
30533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToARGBRow_C(const uint8* src_rgba, uint8* dst_argb, int pix);
30633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int pix);
30733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RAWToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int pix);
30833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int pix);
30933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix);
31033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix);
31133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
31233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGBARow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
31333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
31433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
31533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
31633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
31733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
31833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
31933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGBARow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
32033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
32133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
32233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
32333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int pix);
32433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
32533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int pix);
32633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
32733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
32833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
32933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
33033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix);
33133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix);
33233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
33333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I444ToARGBRow_C(const uint8* y_buf,
33433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* u_buf,
33533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* v_buf,
33633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* argb_buf,
33733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
33833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
33933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToARGBRow_C(const uint8* y_buf,
34033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* u_buf,
34133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* v_buf,
34233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* argb_buf,
34333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
34433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
34533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I411ToARGBRow_C(const uint8* y_buf,
34633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* u_buf,
34733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* v_buf,
34833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* rgb_buf,
34933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
35033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
35133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV12ToARGBRow_C(const uint8* y_buf,
35233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* uv_buf,
35333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* argb_buf,
35433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
35533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
35633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV21ToARGBRow_C(const uint8* y_buf,
35733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* vu_buf,
35833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* argb_buf,
35933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
36033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
36133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToBGRARow_C(const uint8* y_buf,
36233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* u_buf,
36333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* v_buf,
36433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* bgra_buf,
36533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
36633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
36733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToABGRRow_C(const uint8* y_buf,
36833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* u_buf,
36933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* v_buf,
37033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* abgr_buf,
37133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
37233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
37333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGBARow_C(const uint8* y_buf,
37433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* u_buf,
37533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     const uint8* v_buf,
37633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* rgba_buf,
37733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
37833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGB24Row_C(const uint8* y_buf,
37933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      const uint8* u_buf,
38033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      const uint8* v_buf,
38133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      uint8* rgb24_buf,
38233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      int width);
38333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRAWRow_C(const uint8* y_buf,
38433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                    const uint8* u_buf,
38533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                    const uint8* v_buf,
38633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                    uint8* raw_buf,
38733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                    int width);
38833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
38933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YToARGBRow_C(const uint8* y_buf,
39033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                  uint8* rgb_buf,
39133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                  int width);
39233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
39333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I444ToARGBRow_SSSE3(const uint8* y_buf,
39433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* u_buf,
39533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* v_buf,
39633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* argb_buf,
39733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
39833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
39933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToARGBRow_SSSE3(const uint8* y_buf,
40033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* u_buf,
40133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* v_buf,
40233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* argb_buf,
40333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
40433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
40533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I411ToARGBRow_SSSE3(const uint8* y_buf,
40633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* u_buf,
40733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* v_buf,
40833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* rgb_buf,
40933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
41033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
41133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV12ToARGBRow_SSSE3(const uint8* y_buf,
41233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* uv_buf,
41333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* argb_buf,
41433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
41533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
41633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV21ToARGBRow_SSSE3(const uint8* y_buf,
41733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* vu_buf,
41833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* argb_buf,
41933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
42033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
42133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToBGRARow_SSSE3(const uint8* y_buf,
42233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* u_buf,
42333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* v_buf,
42433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* bgra_buf,
42533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
42633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
42733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToABGRRow_SSSE3(const uint8* y_buf,
42833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* u_buf,
42933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* v_buf,
43033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* abgr_buf,
43133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
43233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
43333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGBARow_SSSE3(const uint8* y_buf,
43433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* u_buf,
43533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         const uint8* v_buf,
43633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* rgba_buf,
43733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         int width);
43833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
43933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I444ToARGBRow_Unaligned_SSSE3(const uint8* y_buf,
44033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* u_buf,
44133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* v_buf,
44233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* argb_buf,
44333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
44433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
44533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf,
44633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* u_buf,
44733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* v_buf,
44833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* argb_buf,
44933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
45033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
45133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I411ToARGBRow_Unaligned_SSSE3(const uint8* y_buf,
45233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* u_buf,
45333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* v_buf,
45433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* rgb_buf,
45533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
45633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
45733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV12ToARGBRow_Unaligned_SSSE3(const uint8* y_buf,
45833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* uv_buf,
45933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* argb_buf,
46033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
46133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
46233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV21ToARGBRow_Unaligned_SSSE3(const uint8* y_buf,
46333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* vu_buf,
46433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* argb_buf,
46533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
46633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
46733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToBGRARow_Unaligned_SSSE3(const uint8* y_buf,
46833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* u_buf,
46933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* v_buf,
47033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* bgra_buf,
47133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
47233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
47333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToABGRRow_Unaligned_SSSE3(const uint8* y_buf,
47433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* u_buf,
47533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* v_buf,
47633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* abgr_buf,
47733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
47833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
47933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGBARow_Unaligned_SSSE3(const uint8* y_buf,
48033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* u_buf,
48133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   const uint8* v_buf,
48233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* rgba_buf,
48333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   int width);
48433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
48533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I444ToARGBRow_Any_SSSE3(const uint8* y_buf,
48633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* u_buf,
48733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* v_buf,
48833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* argb_buf,
48933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
49033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
49133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToARGBRow_Any_SSSE3(const uint8* y_buf,
49233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* u_buf,
49333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* v_buf,
49433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* argb_buf,
49533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
49633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
49733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I411ToARGBRow_Any_SSSE3(const uint8* y_buf,
49833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* u_buf,
49933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* v_buf,
50033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* rgb_buf,
50133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
50233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
50333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV12ToARGBRow_Any_SSSE3(const uint8* y_buf,
50433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* uv_buf,
50533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* argb_buf,
50633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
50733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
50833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV21ToARGBRow_Any_SSSE3(const uint8* y_buf,
50933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* vu_buf,
51033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* argb_buf,
51133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
51233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
51333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToBGRARow_Any_SSSE3(const uint8* y_buf,
51433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* u_buf,
51533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* v_buf,
51633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* bgra_buf,
51733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
51833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
51933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToABGRRow_Any_SSSE3(const uint8* y_buf,
52033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* u_buf,
52133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* v_buf,
52233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* abgr_buf,
52333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
52433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
52533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGBARow_Any_SSSE3(const uint8* y_buf,
52633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* u_buf,
52733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* v_buf,
52833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* rgba_buf,
52933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
53033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
53133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YToARGBRow_SSE2(const uint8* y_buf,
53233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* argb_buf,
53333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     int width);
53433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
53533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// ARGB preattenuated alpha blend.
53633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBBlendRow_SSSE3(const uint8* src_argb0, const uint8* src_argb1,
53733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* dst_argb, int width);
53833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBBlendRow_SSE2(const uint8* src_argb0, const uint8* src_argb1,
53933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       uint8* dst_argb, int width);
54033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBBlendRow_C(const uint8* src_argb0, const uint8* src_argb1,
54133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                    uint8* dst_argb, int width);
54233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
54333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
54433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
54533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
54633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
54733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
54833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
54933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
55033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
55133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
55233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
55333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
55433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
55533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
55633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBToUVRow_Any_SSSE3(const uint8* src_argb0, int src_stride_argb,
55733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           uint8* dst_u, uint8* dst_v, int width);
55833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid BGRAToUVRow_Any_SSSE3(const uint8* src_argb0, int src_stride_argb,
55933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           uint8* dst_u, uint8* dst_v, int width);
56033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ABGRToUVRow_Any_SSSE3(const uint8* src_argb0, int src_stride_argb,
56133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           uint8* dst_u, uint8* dst_v, int width);
56233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid RGBAToUVRow_Any_SSSE3(const uint8* src_argb0, int src_stride_argb,
56333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           uint8* dst_u, uint8* dst_v, int width);
56433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToARGBRow_Any_NEON(const uint8* y_buf,
56533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* u_buf,
56633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* v_buf,
56733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            uint8* rgb_buf,
56833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            int width);
56933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToBGRARow_Any_NEON(const uint8* y_buf,
57033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* u_buf,
57133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* v_buf,
57233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            uint8* rgb_buf,
57333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            int width);
57433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToABGRRow_Any_NEON(const uint8* y_buf,
57533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* u_buf,
57633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* v_buf,
57733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            uint8* rgb_buf,
57833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            int width);
57933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGBARow_Any_NEON(const uint8* y_buf,
58033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* u_buf,
58133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* v_buf,
58233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            uint8* rgb_buf,
58333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            int width);
58433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRGB24Row_Any_NEON(const uint8* y_buf,
58533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* u_buf,
58633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             const uint8* v_buf,
58733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* rgb_buf,
58833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             int width);
58933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid I422ToRAWRow_Any_NEON(const uint8* y_buf,
59033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           const uint8* u_buf,
59133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           const uint8* v_buf,
59233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           uint8* rgb_buf,
59333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                           int width);
59433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV12ToARGBRow_Any_NEON(const uint8* y_buf,
59533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* uv_buf,
59633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            uint8* argb_buf,
59733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            int width);
59833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid NV21ToARGBRow_Any_NEON(const uint8* y_buf,
59933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            const uint8* uv_buf,
60033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            uint8* argb_buf,
60133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                            int width);
60233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
60333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix);
60433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
60533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      uint8* dst_u, uint8* dst_v, int pix);
60633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
60733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* dst_u, uint8* dst_v, int pix);
60833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToYRow_Unaligned_SSE2(const uint8* src_yuy2,
60933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                               uint8* dst_y, int pix);
61033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUVRow_Unaligned_SSE2(const uint8* src_yuy2, int stride_yuy2,
61133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                uint8* dst_u, uint8* dst_v, int pix);
61233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_Unaligned_SSE2(const uint8* src_yuy2,
61333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* dst_u, uint8* dst_v, int pix);
61433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix);
61533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
61633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      uint8* dst_u, uint8* dst_v, int pix);
61733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_NEON(const uint8* src_yuy2,
61833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* dst_u, uint8* dst_v, int pix);
61933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int pix);
62033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2,
62133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                   uint8* dst_u, uint8* dst_v, int pix);
62233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_C(const uint8* src_yuy2,
62333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      uint8* dst_u, uint8* dst_v, int pix);
62433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix);
62533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2,
62633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                          uint8* dst_u, uint8* dst_v, int pix);
62733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2,
62833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* dst_u, uint8* dst_v, int pix);
62933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int pix);
63033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2,
63133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                          uint8* dst_u, uint8* dst_v, int pix);
63233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2,
63333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* dst_u, uint8* dst_v, int pix);
63433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
63533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix);
63633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
63733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      uint8* dst_u, uint8* dst_v, int pix);
63833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_SSE2(const uint8* src_uyvy,
63933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* dst_u, uint8* dst_v, int pix);
64033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToYRow_Unaligned_SSE2(const uint8* src_uyvy,
64133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                               uint8* dst_y, int pix);
64233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUVRow_Unaligned_SSE2(const uint8* src_uyvy, int stride_uyvy,
64333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                uint8* dst_u, uint8* dst_v, int pix);
64433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_Unaligned_SSE2(const uint8* src_uyvy,
64533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                   uint8* dst_u, uint8* dst_v, int pix);
64633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix);
64733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
64833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      uint8* dst_u, uint8* dst_v, int pix);
64933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_NEON(const uint8* src_uyvy,
65033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                         uint8* dst_u, uint8* dst_v, int pix);
65133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
65233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int pix);
65333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy,
65433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                   uint8* dst_u, uint8* dst_v, int pix);
65533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_C(const uint8* src_uyvy,
65633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                      uint8* dst_u, uint8* dst_v, int pix);
65733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix);
65833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy,
65933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                          uint8* dst_u, uint8* dst_v, int pix);
66033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy,
66133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* dst_u, uint8* dst_v, int pix);
66233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int pix);
66333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy,
66433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                          uint8* dst_u, uint8* dst_v, int pix);
66533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid UYVYToUV422Row_Any_NEON(const uint8* src_uyvy,
66633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                             uint8* dst_u, uint8* dst_v, int pix);
66733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
66833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBAttenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width);
66933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBAttenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
67033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBAttenuateRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width);
67133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
67233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Inverse table for unattenuate, shared by C and SSE2.
67333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampextern uint32 fixed_invtbl8[256];
67433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBUnattenuateRow_C(const uint8* src_argb, uint8* dst_argb, int width);
67533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
67633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
67733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBGrayRow_C(const uint8* src_argb, uint8* dst_argb, int width);
67833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width);
67933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
68033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBSepiaRow_C(uint8* dst_argb, int width);
68133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBSepiaRow_SSSE3(uint8* dst_argb, int width);
68233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
68333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBColorMatrixRow_C(uint8* dst_argb, const int8* matrix_argb, int width);
68433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBColorMatrixRow_SSSE3(uint8* dst_argb, const int8* matrix_argb,
68533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                              int width);
68633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
68733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width);
68833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width);
68933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
69033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBQuantizeRow_C(uint8* dst_argb, int scale, int interval_size,
69133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       int interval_offset, int width);
69233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBQuantizeRow_SSE2(uint8* dst_argb, int scale, int interval_size,
69333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                          int interval_offset, int width);
69433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
69533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Used for blur.
69633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CumulativeSumToAverage_SSE2(const int32* topleft, const int32* botleft,
69733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                 int width, int area, uint8* dst, int count);
69833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ComputeCumulativeSumRow_SSE2(const uint8* row, int32* cumsum,
69933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                                  const int32* previous_cumsum, int width);
70033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
70133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid CumulativeSumToAverage_C(const int32* topleft, const int32* botleft,
70233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                              int width, int area, uint8* dst, int count);
70333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ComputeCumulativeSumRow_C(const uint8* row, int32* cumsum,
70433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                               const int32* previous_cumsum, int width);
70533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
70633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBShadeRow_C(const uint8* src_argb, uint8* dst_argb, int width,
70733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                    uint32 value);
70833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBShadeRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width,
70933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                       uint32 value);
71033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
71133cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API
71233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride,
71333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                     uint8* dst_argb, const float* uv_dudv, int width);
71433cfdeb7b267ab635413797fffb046b73272f7ecHendrik DahlkampLIBYUV_API
71533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBAffineRow_SSE2(const uint8* src_argb, int src_argb_stride,
71633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                        uint8* dst_argb, const float* uv_dudv, int width);
71733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
71833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBInterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr,
71933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                          ptrdiff_t src_stride,
72033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                          int dst_width, int source_y_fraction);
72133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampvoid ARGBInterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr,
72233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                              ptrdiff_t src_stride, int dst_width,
72333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp                              int source_y_fraction);
72433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
72533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __cplusplus
72633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp}  // extern "C"
72733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp}  // namespace libyuv
72833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif
72933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
73033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif  // INCLUDE_LIBYUV_ROW_H_  NOLINT
73133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp
732