diff options
author | Frank Barchard <fbarchard@google.com> | 2020-10-12 16:06:09 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-10-13 21:42:15 +0000 |
commit | d730dc2f18569a760f89218bc331f6a4b6ce88f9 (patch) | |
tree | 3b2fd061a23aae9205f8aaf2b43ce8cadcc0d910 /include/libyuv/scale_row.h | |
parent | b6f3cff282020500270ae929aa31ee5a18e5fbab (diff) | |
download | libyuv-d730dc2f18569a760f89218bc331f6a4b6ce88f9.tar.gz |
2x down sample for UV planes ported to SSSE3 / NEON
Bug: libuyv:838
Change-Id: Id9fb3282a3e86143d76b5e0cb557f0523a88b3c8
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/2465578
Reviewed-by: richard winterton <rrwinterton@gmail.com>
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Diffstat (limited to 'include/libyuv/scale_row.h')
-rw-r--r-- | include/libyuv/scale_row.h | 76 |
1 files changed, 44 insertions, 32 deletions
diff --git a/include/libyuv/scale_row.h b/include/libyuv/scale_row.h index 776dc383..9ebc1002 100644 --- a/include/libyuv/scale_row.h +++ b/include/libyuv/scale_row.h @@ -72,6 +72,13 @@ extern "C" { #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(_MSC_VER))) +#define HAS_SCALEUVROWDOWN2BOX_SSSE3 +#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. @@ -98,6 +105,11 @@ extern "C" { #define HAS_SCALEROWDOWN4_NEON #endif +// The following are available on 64 bit Neon platforms: +#if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__) +#define HAS_SCALEUVROWDOWN2BOX_NEON +#endif + #if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) #define HAS_SCALEADDROW_MSA #define HAS_SCALEARGBCOLS_MSA @@ -830,15 +842,15 @@ void ScaleARGBRowDownEvenBox_Any_MMI(const uint8_t* src_ptr, int dst_width); // UV Row functions -void ScaleUVRowDown2_SSE2(const uint8_t* src_uv, +void ScaleUVRowDown2_SSSE3(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2Linear_SSE2(const uint8_t* src_uv, +void ScaleUVRowDown2Linear_SSSE3(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2Box_SSE2(const uint8_t* src_uv, +void ScaleUVRowDown2Box_SSSE3(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); @@ -846,7 +858,7 @@ void ScaleUVRowDown2_NEON(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst, int dst_width); -void ScaleUVRowDown2Linear_NEON(const uint8_t* src_uv, +void ScaleUVRowDown2Linear_NEON(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); @@ -854,42 +866,42 @@ void ScaleUVRowDown2Box_NEON(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst, int dst_width); -void ScaleUVRowDown2_MSA(const uint8_t* src_uv, +void ScaleUVRowDown2_MSA(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2Linear_MSA(const uint8_t* src_uv, +void ScaleUVRowDown2Linear_MSA(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2Box_MSA(const uint8_t* src_uv, +void ScaleUVRowDown2Box_MSA(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2_MMI(const uint8_t* src_uv, +void ScaleUVRowDown2_MMI(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2Linear_MMI(const uint8_t* src_uv, +void ScaleUVRowDown2Linear_MMI(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2Box_MMI(const uint8_t* src_uv, +void ScaleUVRowDown2Box_MMI(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDown2_Any_SSE2(const uint8_t* src_ptr, - ptrdiff_t src_stride, - uint8_t* dst_ptr, - int dst_width); -void ScaleUVRowDown2Linear_Any_SSE2(const uint8_t* src_ptr, - ptrdiff_t src_stride, - uint8_t* dst_ptr, - int dst_width); -void ScaleUVRowDown2Box_Any_SSE2(const uint8_t* src_ptr, - ptrdiff_t src_stride, - uint8_t* dst_ptr, - 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 ScaleUVRowDown2_Any_NEON(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_ptr, @@ -926,52 +938,52 @@ void ScaleUVRowDown2Box_Any_MMI(const uint8_t* src_ptr, ptrdiff_t src_stride, uint8_t* dst_ptr, int dst_width); -void ScaleUVRowDownEven_SSE2(const uint8_t* src_uv, +void ScaleUVRowDownEven_SSSE3(const uint8_t* src_ptr, ptrdiff_t src_stride, int src_stepx, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDownEvenBox_SSE2(const uint8_t* src_uv, +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_uv, +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_uv, +void ScaleUVRowDownEvenBox_NEON(const uint8_t* src_ptr, ptrdiff_t src_stride, int src_stepx, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDownEven_MSA(const uint8_t* src_uv, +void ScaleUVRowDownEven_MSA(const uint8_t* src_ptr, ptrdiff_t src_stride, int32_t src_stepx, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDownEvenBox_MSA(const uint8_t* src_uv, +void ScaleUVRowDownEvenBox_MSA(const uint8_t* src_ptr, ptrdiff_t src_stride, int src_stepx, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDownEven_MMI(const uint8_t* src_uv, +void ScaleUVRowDownEven_MMI(const uint8_t* src_ptr, ptrdiff_t src_stride, int32_t src_stepx, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDownEvenBox_MMI(const uint8_t* src_uv, +void ScaleUVRowDownEvenBox_MMI(const uint8_t* src_ptr, ptrdiff_t src_stride, int src_stepx, uint8_t* dst_uv, int dst_width); -void ScaleUVRowDownEven_Any_SSE2(const uint8_t* src_ptr, +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_SSE2(const uint8_t* src_ptr, +void ScaleUVRowDownEvenBox_Any_SSSE3(const uint8_t* src_ptr, ptrdiff_t src_stride, int src_stepx, uint8_t* dst_ptr, |