mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-10-28 18:07:12 +08:00
Based on Philipp Hancke's AVX2 column kernel for ScaleUVBox at 3x (https://crrev.com/c/8427347). Add ScaleUVAddCols3 for exact 3x horizontal downscaling (dx == 0x30000 and boxheight <= 85) in ScaleUVBox, plus ScaleAddRow_AVX512BW and ScaleAddRow_WASMSIMD dispatch, and port 3x/box scaling kernels in scale_win.cc to 32/64-bit C++ intrinsics matching scale_gcc.cc: - ScaleUVAddCols3_C (portable C) - ScaleUVAddCols3_AVX2 and ScaleUVAddCols3_Any_AVX2 (scale_gcc.cc and scale_win.cc) - ScaleUVAddCols3_AVX512VBMI (scale_gcc.cc and scale_win.cc) - ScaleAddRow_SSE2, ScaleAddRow_AVX2, ScaleAddRow_AVX512BW, ScaleAddCols1_AVX512BW, ScaleAddCols2_AVX512BW, ScaleRowDown38_SSSE3, ScaleRowDown38_2_Box_SSSE3, and ScaleRowDown38_3_Box_SSSE3 in scale_win.cc for 32/64-bit Visual C and LIBYUV_ENABLE_ROWWIN - ScaleUVAddCols3_NEON (32-bit ARM and 64-bit AArch64) and ScaleUVAddCols3_Any_NEON - ScaleUVAddCols3_SME (ARMv9 Streaming SVE with whilelt predicate tail) - ScaleUVAddCols3_RVV (RISC-V Vector vlseg3e32.v inline asm) - ScaleUVAddCols3_LSX and ScaleUVAddCols3_Any_LSX (LoongArch LSX) - ScaleAddRow_WASMSIMD, ScaleAddRow_Any_WASMSIMD, ScaleUVAddCols3_WASMSIMD, and ScaleUVAddCols3_Any_WASMSIMD - ScaleUVAddCols3_HVX (Hexagon HVX vrdelta + vmpy_VuhRuh) Co-authored-by: Philipp Hancke <philipp.hancke@googlemail.com> Bug: libyuv:564129034 R=rrwinterton@gmail.com Change-Id: Ib9e14f3efcb097842c3d0e9fc9b473b6e2f81871 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/8596436 Reviewed-by: richard winterton <rrwinterton@gmail.com>
2052 lines
93 KiB
C++
2052 lines
93 KiB
C++
/*
|
|
* Copyright 2013 The LibYuv Project Authors. All rights reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef INCLUDE_LIBYUV_SCALE_ROW_H_
|
|
#define INCLUDE_LIBYUV_SCALE_ROW_H_
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include "libyuv/cpu_support.h"
|
|
#include "libyuv/scale.h"
|
|
|
|
#ifdef __cplusplus
|
|
namespace libyuv {
|
|
extern "C" {
|
|
#endif
|
|
|
|
// The following are available on all x86 platforms:
|
|
#if !defined(LIBYUV_DISABLE_X86) && \
|
|
(defined(_M_IX86) || ((defined(__x86_64__) || defined(__i386__)) && \
|
|
!defined(LIBYUV_ENABLE_ROWWIN)))
|
|
#define HAS_FIXEDDIV1_X86
|
|
#define HAS_FIXEDDIV_X86
|
|
#define HAS_SCALEARGBCOLS_SSE2
|
|
#define HAS_SCALEARGBCOLSUP2_SSE2
|
|
#define HAS_SCALEARGBFILTERCOLS_SSSE3
|
|
#define HAS_SCALEARGBROWDOWN2_SSE2
|
|
#define HAS_SCALEARGBROWDOWNEVEN_SSE2
|
|
#define HAS_SCALECOLSUP2_SSE2
|
|
#define HAS_SCALEFILTERCOLS_SSSE3
|
|
#define HAS_SCALEROWDOWN2_SSSE3
|
|
#define HAS_SCALEROWDOWN34_SSSE3
|
|
#define HAS_SCALEROWDOWN4_SSSE3
|
|
#endif
|
|
|
|
// The following are available for gcc/clang x86 platforms:
|
|
// TODO(fbarchard): Port to Visual C
|
|
#if !defined(LIBYUV_DISABLE_X86) && \
|
|
(defined(__x86_64__) || defined(__i386__)) && \
|
|
!defined(LIBYUV_ENABLE_ROWWIN)
|
|
#define HAS_SCALEADDROW_SSE2
|
|
#define HAS_SCALEROWDOWN38_SSSE3
|
|
#define HAS_SCALEUVROWDOWN2BOX_SSSE3
|
|
#define HAS_SCALEROWUP2_LINEAR_SSE2
|
|
#define HAS_SCALEROWUP2_LINEAR_SSSE3
|
|
#define HAS_SCALEROWUP2_BILINEAR_SSE2
|
|
#define HAS_SCALEROWUP2_BILINEAR_SSSE3
|
|
#define HAS_SCALEROWUP2_LINEAR_12_SSSE3
|
|
#define HAS_SCALEROWUP2_BILINEAR_12_SSSE3
|
|
#define HAS_SCALEROWUP2_LINEAR_16_SSE2
|
|
#define HAS_SCALEROWUP2_BILINEAR_16_SSE2
|
|
#define HAS_SCALEUVROWUP2_LINEAR_SSSE3
|
|
#define HAS_SCALEUVROWUP2_BILINEAR_SSSE3
|
|
#define HAS_SCALEUVROWUP2_LINEAR_16_SSE41
|
|
#define HAS_SCALEUVROWUP2_BILINEAR_16_SSE41
|
|
#endif
|
|
|
|
// The following are available for gcc/clang x86 platforms, but
|
|
// require clang 3.4 or gcc 4.7.
|
|
// TODO(fbarchard): Port to Visual C
|
|
#if !defined(LIBYUV_DISABLE_X86) && \
|
|
(defined(__x86_64__) || defined(__i386__)) && \
|
|
(defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) && \
|
|
!defined(LIBYUV_ENABLE_ROWWIN)
|
|
#define HAS_SCALEADDROW_AVX2
|
|
#define HAS_SCALEUVADDCOLS3_AVX2
|
|
#define HAS_SCALEUVROWDOWN2BOX_AVX2
|
|
#define HAS_SCALEROWUP2_LINEAR_AVX2
|
|
#define HAS_SCALEROWUP2_BILINEAR_AVX2
|
|
#define HAS_SCALEROWUP2_LINEAR_12_AVX2
|
|
#define HAS_SCALEROWUP2_BILINEAR_12_AVX2
|
|
#define HAS_SCALEROWUP2_LINEAR_16_AVX2
|
|
#define HAS_SCALEROWUP2_BILINEAR_16_AVX2
|
|
#define HAS_SCALEUVROWUP2_LINEAR_AVX2
|
|
#define HAS_SCALEUVROWUP2_BILINEAR_AVX2
|
|
#define HAS_SCALEUVROWUP2_LINEAR_16_AVX2
|
|
#define HAS_SCALEUVROWUP2_BILINEAR_16_AVX2
|
|
#endif
|
|
|
|
// The following are available on all x86 platforms, but
|
|
// require VS2012, clang 3.4 or gcc 4.7.
|
|
// The code supports NaCL but requires a new compiler and validator.
|
|
#if !defined(LIBYUV_DISABLE_X86) && \
|
|
(defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \
|
|
defined(GCC_HAS_AVX2))
|
|
#define HAS_SCALEROWDOWN2_AVX2
|
|
#define HAS_SCALEROWDOWN4_AVX2
|
|
#endif
|
|
|
|
// The following are available for AVX512 clang x64 platforms:
|
|
#if !defined(LIBYUV_DISABLE_X86) && \
|
|
(defined(__x86_64__) || defined(_M_X64)) && defined(CLANG_HAS_AVX512) && \
|
|
!defined(LIBYUV_ENABLE_ROWWIN)
|
|
#define HAS_SCALEADDROW_AVX512BW
|
|
#define HAS_SCALEADDCOLS_AVX512BW
|
|
#define HAS_SCALEUVADDCOLS3_AVX512VBMI
|
|
#define HAS_SCALEROWDOWN2_AVX512BW
|
|
#endif
|
|
|
|
// The following are available for Visual C 32/64 bit, and for clang with
|
|
// LIBYUV_ENABLE_ROWWIN, which is also enabled for MemorySanitizer:
|
|
#if !defined(LIBYUV_DISABLE_X86) && \
|
|
(defined(__x86_64__) || defined(__i386__) || defined(_M_X64) || \
|
|
defined(_M_IX86)) && \
|
|
((defined(_MSC_VER) && !defined(__clang__)) || \
|
|
defined(LIBYUV_ENABLE_ROWWIN))
|
|
#define HAS_SCALEADDROW_SSE2
|
|
#define HAS_SCALEROWDOWN38_SSSE3
|
|
#define HAS_SCALEADDROW_AVX2
|
|
#define HAS_SCALEUVADDCOLS3_AVX2
|
|
#if defined(__x86_64__) || defined(_M_X64)
|
|
#define HAS_SCALEADDROW_AVX512BW
|
|
#define HAS_SCALEADDCOLS_AVX512BW
|
|
#define HAS_SCALEUVADDCOLS3_AVX512VBMI
|
|
#endif
|
|
#endif
|
|
|
|
// The following are available on Neon platforms:
|
|
#if !defined(LIBYUV_DISABLE_NEON) && \
|
|
(defined(__ARM_NEON__) || defined(LIBYUV_NEON) || defined(__aarch64__))
|
|
#define HAS_SCALEADDROW_NEON
|
|
#define HAS_SCALEARGBCOLS_NEON
|
|
#define HAS_SCALEARGBFILTERCOLS_NEON
|
|
#define HAS_SCALEARGBROWDOWN2_NEON
|
|
#define HAS_SCALEARGBROWDOWNEVEN_NEON
|
|
#define HAS_SCALEFILTERCOLS_NEON
|
|
#define HAS_SCALEROWDOWN2_NEON
|
|
#define HAS_SCALEROWDOWN34_NEON
|
|
#define HAS_SCALEROWDOWN38_NEON
|
|
#define HAS_SCALEROWDOWN4_NEON
|
|
#define HAS_SCALEUVADDCOLS3_NEON
|
|
#define HAS_SCALEUVROWDOWN2_NEON
|
|
#define HAS_SCALEUVROWDOWN2LINEAR_NEON
|
|
#define HAS_SCALEUVROWDOWN2BOX_NEON
|
|
#define HAS_SCALEUVROWDOWNEVEN_NEON
|
|
#define HAS_SCALEROWUP2_LINEAR_NEON
|
|
#define HAS_SCALEROWUP2_BILINEAR_NEON
|
|
#define HAS_SCALEROWUP2_LINEAR_12_NEON
|
|
#define HAS_SCALEROWUP2_BILINEAR_12_NEON
|
|
#define HAS_SCALEROWUP2_LINEAR_16_NEON
|
|
#define HAS_SCALEROWUP2_BILINEAR_16_NEON
|
|
#define HAS_SCALEUVROWUP2_LINEAR_NEON
|
|
#define HAS_SCALEUVROWUP2_BILINEAR_NEON
|
|
#define HAS_SCALEUVROWUP2_LINEAR_16_NEON
|
|
#define HAS_SCALEUVROWUP2_BILINEAR_16_NEON
|
|
#endif
|
|
|
|
// The following are available on AArch64 Neon platforms:
|
|
#if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__)
|
|
#define HAS_SCALEROWDOWN2_16_NEON
|
|
#endif
|
|
|
|
// The following are available on AArch64 SME platforms:
|
|
#if !defined(LIBYUV_DISABLE_SME) && defined(CLANG_HAS_SME) && \
|
|
defined(__aarch64__)
|
|
#define HAS_SCALEARGBROWDOWN2_SME
|
|
#define HAS_SCALEROWDOWN2_16_SME
|
|
#define HAS_SCALEROWDOWN2_SME
|
|
#define HAS_SCALEUVADDCOLS3_SME
|
|
#define HAS_SCALEUVROWDOWN2BOX_SME
|
|
#define HAS_SCALEUVROWDOWN2LINEAR_SME
|
|
#define HAS_SCALEUVROWDOWN2_SME
|
|
#endif
|
|
|
|
#if !defined(LIBYUV_DISABLE_LSX) && defined(__loongarch_sx)
|
|
#define HAS_SCALEARGBROWDOWN2_LSX
|
|
#define HAS_SCALEARGBROWDOWNEVEN_LSX
|
|
#define HAS_SCALEROWDOWN2_LSX
|
|
#define HAS_SCALEROWDOWN4_LSX
|
|
#define HAS_SCALEROWDOWN38_LSX
|
|
#define HAS_SCALEFILTERCOLS_LSX
|
|
#define HAS_SCALEADDROW_LSX
|
|
#define HAS_SCALEARGBCOLS_LSX
|
|
#define HAS_SCALEARGBFILTERCOLS_LSX
|
|
#define HAS_SCALEROWDOWN34_LSX
|
|
#define HAS_SCALEUVADDCOLS3_LSX
|
|
#endif
|
|
|
|
#if !defined(LIBYUV_DISABLE_RVV) && \
|
|
((defined(__riscv_vector) && defined(__riscv_zve64x)) || \
|
|
(defined(LIBYUV_RVV) && \
|
|
(!defined(__riscv_vector) || defined(__riscv_zve64x))))
|
|
#define HAS_SCALEUVROWDOWN4_RVV
|
|
#endif
|
|
|
|
#if !defined(LIBYUV_DISABLE_RVV) && \
|
|
(defined(__riscv_vector) || defined(LIBYUV_RVV))
|
|
#define HAS_SCALEARGBROWDOWN2_RVV
|
|
#define HAS_SCALEROWDOWN34_0_BOX_RVV
|
|
#define HAS_SCALEROWDOWN34_1_BOX_RVV
|
|
#define HAS_SCALEROWDOWN38_2_BOX_RVV
|
|
#define HAS_SCALEROWDOWN38_3_BOX_RVV
|
|
#define HAS_SCALEUVROWUP2_BILINEAR_RVV
|
|
#define HAS_SCALEUVROWUP2_LINEAR_RVV
|
|
#define HAS_SCALEROWDOWN34_RVV
|
|
#define HAS_SCALEROWDOWN38_RVV
|
|
#define HAS_SCALEROWUP2_BILINEAR_RVV
|
|
#define HAS_SCALEROWUP2_LINEAR_RVV
|
|
|
|
#define HAS_SCALEARGBROWDOWN2BOX_RVV
|
|
#define HAS_SCALEARGBROWDOWN2LINEAR_RVV
|
|
#define HAS_SCALEARGBROWDOWNEVENBOX_RVV
|
|
#define HAS_SCALEROWDOWN2BOX_RVV
|
|
#define HAS_SCALEADDROW_RVV
|
|
// TODO: Test ScaleARGBRowDownEven_RVV and enable it
|
|
// #define HAS_SCALEARGBROWDOWNEVEN_RVV
|
|
#define HAS_SCALEUVROWDOWNEVEN_RVV
|
|
#define HAS_SCALEROWDOWN2_RVV
|
|
#define HAS_SCALEROWDOWN2LINEAR_RVV
|
|
#define HAS_SCALEROWDOWN4_RVV
|
|
#define HAS_SCALEROWDOWN4BOX_RVV
|
|
#define HAS_SCALEUVADDCOLS3_RVV
|
|
#define HAS_SCALEUVROWDOWN2_RVV
|
|
#define HAS_SCALEUVROWDOWN2BOX_RVV
|
|
#define HAS_SCALEUVROWDOWN2LINEAR_RVV
|
|
#define HAS_SCALEARGBFILTERCOLS_RVV
|
|
#endif
|
|
|
|
// The following are available for WebAssembly SIMD128:
|
|
#if !defined(LIBYUV_DISABLE_WASM) && defined(__wasm_simd128__)
|
|
#define HAS_SCALEADDROW_WASMSIMD
|
|
#define HAS_SCALEARGBCOLS_WASMSIMD
|
|
#define HAS_SCALEARGBCOLSUP2_WASMSIMD
|
|
#define HAS_SCALEARGBFILTERCOLS_WASMSIMD
|
|
#define HAS_SCALEARGBROWDOWN2_WASMSIMD
|
|
#define HAS_SCALEARGBROWDOWNEVEN_WASMSIMD
|
|
#define HAS_SCALEFILTERCOLS_WASMSIMD
|
|
#define HAS_SCALEROWDOWN2_WASMSIMD
|
|
#define HAS_SCALEROWDOWN34_WASMSIMD
|
|
#define HAS_SCALEROWDOWN38_WASMSIMD
|
|
#define HAS_SCALEROWDOWN4_WASMSIMD
|
|
#define HAS_SCALEUVADDCOLS3_WASMSIMD
|
|
#endif
|
|
|
|
// The following are available for Hexagon HVX:
|
|
#if !defined(LIBYUV_DISABLE_HVX) && defined(__HVX__)
|
|
#define HAS_SCALEADDROW_HVX
|
|
#define HAS_SCALEARGBROWDOWN2_HVX
|
|
#define HAS_SCALEROWDOWN2_16_HVX
|
|
#define HAS_SCALEROWDOWN2_HVX
|
|
#define HAS_SCALEROWDOWN4_HVX
|
|
#define HAS_SCALEUVADDCOLS3_HVX
|
|
#define HAS_SCALEUVROWDOWN2_HVX
|
|
#define HAS_SCALEUVROWDOWN2BOX_HVX
|
|
#define HAS_SCALEUVROWDOWN2LINEAR_HVX
|
|
#endif
|
|
|
|
// Scale ARGB vertically with bilinear interpolation.
|
|
void ScalePlaneVertical(int src_height,
|
|
int dst_width,
|
|
int dst_height,
|
|
int src_stride,
|
|
int dst_stride,
|
|
const uint8_t* src_argb,
|
|
uint8_t* dst_argb,
|
|
int x,
|
|
int y,
|
|
int dy,
|
|
int bpp,
|
|
enum FilterMode filtering);
|
|
|
|
void ScalePlaneVertical_16(int src_height,
|
|
int dst_width,
|
|
int dst_height,
|
|
int src_stride,
|
|
int dst_stride,
|
|
const uint16_t* src_argb,
|
|
uint16_t* dst_argb,
|
|
int x,
|
|
int y,
|
|
int dy,
|
|
int wpp,
|
|
enum FilterMode filtering);
|
|
|
|
// Simplify the filtering based on scale factors.
|
|
enum FilterMode ScaleFilterReduce(int src_width,
|
|
int src_height,
|
|
int dst_width,
|
|
int dst_height,
|
|
enum FilterMode filtering);
|
|
|
|
// Divide num by div and return as 16.16 fixed point result.
|
|
int FixedDiv_C(int num, int div);
|
|
int FixedDiv_X86(int num, int div);
|
|
// Divide num - 1 by div - 1 and return as 16.16 fixed point result.
|
|
int FixedDiv1_C(int num, int div);
|
|
int FixedDiv1_X86(int num, int div);
|
|
#ifdef HAS_FIXEDDIV_X86
|
|
#define FixedDiv FixedDiv_X86
|
|
#define FixedDiv1 FixedDiv1_X86
|
|
#else
|
|
#define FixedDiv FixedDiv_C
|
|
#define FixedDiv1 FixedDiv1_C
|
|
#endif
|
|
|
|
// Compute slope values for stepping.
|
|
void ScaleSlope(int src_width,
|
|
int src_height,
|
|
int dst_width,
|
|
int dst_height,
|
|
enum FilterMode filtering,
|
|
int* x,
|
|
int* y,
|
|
int* dx,
|
|
int* dy);
|
|
|
|
void ScaleRowDown2_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Odd_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown4_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown4_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown34_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown34_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* d,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* d,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* d,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* d,
|
|
int dst_width);
|
|
|
|
void ScaleRowUp2_Linear_C(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_C(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_Any_C(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_Any_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_Any_C(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_Any_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
|
|
void ScaleCols_C(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleCols_16_C(uint16_t* dst_ptr,
|
|
const uint16_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleColsUp2_C(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int,
|
|
int);
|
|
void ScaleColsUp2_16_C(uint16_t* dst_ptr,
|
|
const uint16_t* src_ptr,
|
|
int dst_width,
|
|
int,
|
|
int);
|
|
void ScaleFilterCols_C(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleFilterCols_16_C(uint16_t* dst_ptr,
|
|
const uint16_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleFilterCols64_C(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x32,
|
|
int dx);
|
|
void ScaleFilterCols64_16_C(uint16_t* dst_ptr,
|
|
const uint16_t* src_ptr,
|
|
int dst_width,
|
|
int x32,
|
|
int dx);
|
|
void ScaleRowDown38_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown38_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleAddRow_C(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
|
void ScaleAddRow_16_C(const uint16_t* src_ptr,
|
|
uint32_t* dst_ptr,
|
|
int src_width);
|
|
void ScaleARGBRowDown2_C(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_C(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_C(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_C(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_C(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBCols_C(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBCols64_C(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x32,
|
|
int dx);
|
|
void ScaleARGBColsUp2_C(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int,
|
|
int);
|
|
void ScaleARGBFilterCols_C(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols64_C(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x32,
|
|
int dx);
|
|
void ScaleUVRowDown2_C(const uint8_t* src_uv,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_C(const uint8_t* src_uv,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_C(const uint8_t* src_uv,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDownEven_C(const uint8_t* src_uv,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDownEvenBox_C(const uint8_t* src_uv,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
|
|
void ScaleUVRowUp2_Linear_C(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_Any_C(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_Any_C(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_C(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_Any_C(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_Any_C(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
|
|
void ScaleUVCols_C(uint8_t* dst_uv,
|
|
const uint8_t* src_uv,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleUVCols64_C(uint8_t* dst_uv,
|
|
const uint8_t* src_uv,
|
|
int dst_width,
|
|
int x32,
|
|
int dx);
|
|
void ScaleUVColsUp2_C(uint8_t* dst_uv,
|
|
const uint8_t* src_uv,
|
|
int dst_width,
|
|
int,
|
|
int);
|
|
void ScaleUVFilterCols_C(uint8_t* dst_uv,
|
|
const uint8_t* src_uv,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleUVFilterCols64_C(uint8_t* dst_uv,
|
|
const uint8_t* src_uv,
|
|
int dst_width,
|
|
int x32,
|
|
int dx);
|
|
void ScaleUVAddCols3_C(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
|
|
// Specialized scalers for x86.
|
|
void ScaleRowDown2_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2_AVX512BW(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_AVX512BW(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_AVX512BW(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Odd_AVX512BW(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleRowDown34_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleRowUp2_Linear_SSE2(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_SSE2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_12_SSSE3(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_12_SSSE3(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_SSE2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_SSE2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_AVX2(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_12_AVX2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_12_AVX2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_AVX2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_Any_SSE2(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_Any_SSE2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_12_Any_SSSE3(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_12_Any_SSSE3(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_Any_SSE2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_Any_SSE2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_Any_AVX2(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_12_Any_AVX2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_12_Any_AVX2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_Any_AVX2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_Any_AVX2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
|
|
void ScaleRowDown2_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Odd_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Odd_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleRowDown34_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleAddRow_SSE2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
|
void ScaleAddRow_AVX2(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
|
void ScaleAddRow_AVX512BW(const uint8_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int src_width);
|
|
void ScaleAddRow_Any_SSE2(const uint8_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int src_width);
|
|
void ScaleAddRow_Any_AVX2(const uint8_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int src_width);
|
|
void ScaleAddCols1_AVX512BW(int dst_width,
|
|
int boxheight,
|
|
int x,
|
|
int dx,
|
|
const uint16_t* src_ptr,
|
|
uint8_t* dst_ptr);
|
|
void ScaleAddCols2_AVX512BW(int dst_width,
|
|
int boxheight,
|
|
int x,
|
|
int dx,
|
|
const uint16_t* src_ptr,
|
|
uint8_t* dst_ptr);
|
|
|
|
void ScaleFilterCols_SSSE3(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleColsUp2_SSE2(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
|
|
// ARGB Column functions
|
|
void ScaleARGBCols_SSE2(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_SSSE3(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBColsUp2_SSE2(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_NEON(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBCols_NEON(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_Any_NEON(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBCols_Any_NEON(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_RVV(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
|
|
// ARGB Row functions
|
|
void ScaleARGBRowDown2_SSE2(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_SSE2(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_SSE2(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_NEON(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_SME(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_RVV(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_RVV(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_RVV(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_LSX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_LSX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_LSX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_Any_SSE2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_Any_SSE2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_Any_SSE2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_SSE2(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_SSE2(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_NEON(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_NEON(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_LSX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int32_t src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_LSX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_RVV(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int32_t src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_RVV(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_Any_SSE2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_Any_SSE2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int32_t src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
// UV Row functions
|
|
void ScaleUVRowDown2_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleUVRowDown2_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleUVRowDown2_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleUVRowDown2_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDown2_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDownEven_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDownEvenBox_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDownEven_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDownEvenBox_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown4_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int32_t src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDownEven_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int32_t src_stepx,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDownEven_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDownEvenBox_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDownEven_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowDownEvenBox_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleUVRowUp2_Linear_SSSE3(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_Any_SSSE3(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_Any_SSSE3(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_AVX2(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_Any_AVX2(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_Any_AVX2(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_NEON(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_Any_NEON(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_RVV(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_SSE41(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_SSE41(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_Any_SSE41(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_Any_SSE41(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_AVX2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_AVX2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_Any_AVX2(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_Any_AVX2(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_NEON(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Linear_16_Any_NEON(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleUVRowUp2_Bilinear_16_Any_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleUVAddCols3_AVX2(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_Any_AVX2(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_AVX512VBMI(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_NEON(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_Any_NEON(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_SME(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_RVV(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_LSX(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_Any_LSX(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_WASMSIMD(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_Any_WASMSIMD(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
void ScaleUVAddCols3_HVX(int dst_width,
|
|
int scaleval,
|
|
const uint16_t* src_uv,
|
|
uint8_t* dst_uv);
|
|
|
|
// ScaleRowDown2Box also used by planar functions
|
|
// NEON/SME downscalers with interpolation.
|
|
void ScaleRowDown2_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2_16_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2_16_SME(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_16_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_16_SME(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_SME(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_16_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_16_SME(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
|
|
void ScaleRowDown4_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
// Down scale from 4 to 3 pixels. Use the neon multilane read/write
|
|
// to load up the every 4th pixel into a 4 different registers.
|
|
// Point samples 32 pixels to 24 pixels.
|
|
void ScaleRowDown34_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
// 32 -> 12
|
|
void ScaleRowDown38_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
// 32x3 -> 12x1
|
|
void ScaleRowDown38_3_Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
// 32x2 -> 12x1
|
|
void ScaleRowDown38_2_Box_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleRowDown2_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Odd_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
// 32 -> 12
|
|
void ScaleRowDown38_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
// 32x3 -> 12x1
|
|
void ScaleRowDown38_3_Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
// 32x2 -> 12x1
|
|
void ScaleRowDown38_2_Box_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleRowUp2_Linear_NEON(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_12_NEON(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_12_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_NEON(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_Any_NEON(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_Any_NEON(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_12_Any_NEON(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_12_Any_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
void ScaleRowUp2_Linear_16_Any_NEON(const uint16_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_16_Any_NEON(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
|
|
void ScaleAddRow_NEON(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
|
void ScaleAddRow_Any_NEON(const uint8_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int src_width);
|
|
|
|
void ScaleFilterCols_NEON(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
|
|
void ScaleFilterCols_Any_NEON(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
|
|
void ScaleRowDown2_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown4_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown38_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleAddRow_LSX(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
|
void ScaleFilterCols_LSX(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_LSX(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBCols_LSX(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleRowDown34_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* d,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* d,
|
|
int dst_width);
|
|
void ScaleRowDown2_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleAddRow_Any_LSX(const uint8_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int src_width);
|
|
void ScaleFilterCols_Any_LSX(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBCols_Any_LSX(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_Any_LSX(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleRowDown34_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_Any_LSX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleAddRow_RVV(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
|
void ScaleRowDown2_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
|
|
void ScaleRowDown4_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
|
|
void ScaleRowUp2_Linear_RVV(const uint8_t* src_ptr,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowUp2_Bilinear_RVV(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
ptrdiff_t dst_stride,
|
|
int dst_width);
|
|
|
|
void ScaleRowDown2_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Odd_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_0_Box_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown34_1_Box_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_3_Box_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown38_2_Box_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleAddRow_WASMSIMD(const uint8_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int src_width);
|
|
void ScaleAddRow_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
uint16_t* dst_ptr,
|
|
int src_width);
|
|
void ScaleFilterCols_WASMSIMD(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleFilterCols_Any_WASMSIMD(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBRowDown2_WASMSIMD(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_WASMSIMD(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_WASMSIMD(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_WASMSIMD(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_WASMSIMD(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEven_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDownEvenBox_Any_WASMSIMD(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
int src_stepx,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBCols_WASMSIMD(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBCols_Any_WASMSIMD(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_WASMSIMD(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBFilterCols_Any_WASMSIMD(uint8_t* dst_ptr,
|
|
const uint8_t* src_ptr,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
void ScaleARGBColsUp2_WASMSIMD(uint8_t* dst_argb,
|
|
const uint8_t* src_argb,
|
|
int dst_width,
|
|
int x,
|
|
int dx);
|
|
|
|
void ScaleAddRow_HVX(const uint8_t* src_ptr, uint16_t* dst_ptr, int src_width);
|
|
void ScaleRowDown2_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_Odd_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2_16_HVX(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Linear_16_HVX(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown2Box_16_HVX(const uint16_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint16_t* dst,
|
|
int dst_width);
|
|
void ScaleRowDown4_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleRowDown4Box_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_ptr,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2_HVX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Linear_HVX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleARGBRowDown2Box_HVX(const uint8_t* src_argb,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_argb,
|
|
int dst_width);
|
|
void ScaleUVRowDown2_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Linear_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
void ScaleUVRowDown2Box_HVX(const uint8_t* src_ptr,
|
|
ptrdiff_t src_stride,
|
|
uint8_t* dst_uv,
|
|
int dst_width);
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
} // namespace libyuv
|
|
#endif
|
|
|
|
#endif // INCLUDE_LIBYUV_SCALE_ROW_H_
|