aboutsummaryrefslogtreecommitdiff
path: root/include/libyuv/scale_row.h
diff options
context:
space:
mode:
authorFrank Barchard <fbarchard@google.com>2020-10-12 16:06:09 -0700
committerCommit Bot <commit-bot@chromium.org>2020-10-13 21:42:15 +0000
commitd730dc2f18569a760f89218bc331f6a4b6ce88f9 (patch)
tree3b2fd061a23aae9205f8aaf2b43ce8cadcc0d910 /include/libyuv/scale_row.h
parentb6f3cff282020500270ae929aa31ee5a18e5fbab (diff)
downloadlibyuv-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.h76
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,