mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-02-16 15:19:52 +08:00
ARGBMirror Any
BUG=none TESTED=mirror and rotate unittests R=harryjin@google.com Review URL: https://webrtc-codereview.appspot.com/30159004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@1172 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
d204db647e
commit
9dd083a512
@ -1,6 +1,6 @@
|
|||||||
Name: libyuv
|
Name: libyuv
|
||||||
URL: http://code.google.com/p/libyuv/
|
URL: http://code.google.com/p/libyuv/
|
||||||
Version: 1170
|
Version: 1171
|
||||||
License: BSD
|
License: BSD
|
||||||
License File: LICENSE
|
License File: LICENSE
|
||||||
|
|
||||||
|
|||||||
@ -840,6 +840,9 @@ void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width);
|
|||||||
void ARGBMirrorRow_SSSE3(const uint8* src, uint8* dst, int width);
|
void ARGBMirrorRow_SSSE3(const uint8* src, uint8* dst, int width);
|
||||||
void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width);
|
void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width);
|
||||||
void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width);
|
void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width);
|
||||||
|
void ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width);
|
||||||
|
void ARGBMirrorRow_Any_SSSE3(const uint8* src, uint8* dst, int width);
|
||||||
|
void ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width);
|
||||||
|
|
||||||
void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
||||||
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
||||||
|
|||||||
@ -11,6 +11,6 @@
|
|||||||
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
||||||
#define INCLUDE_LIBYUV_VERSION_H_
|
#define INCLUDE_LIBYUV_VERSION_H_
|
||||||
|
|
||||||
#define LIBYUV_VERSION 1170
|
#define LIBYUV_VERSION 1171
|
||||||
|
|
||||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||||
|
|||||||
@ -504,20 +504,28 @@ int ARGBMirror(const uint8* src_argb, int src_stride_argb,
|
|||||||
src_argb = src_argb + (height - 1) * src_stride_argb;
|
src_argb = src_argb + (height - 1) * src_stride_argb;
|
||||||
src_stride_argb = -src_stride_argb;
|
src_stride_argb = -src_stride_argb;
|
||||||
}
|
}
|
||||||
|
#if defined(HAS_ARGBMIRRORROW_NEON)
|
||||||
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
|
ARGBMirrorRow = ARGBMirrorRow_Any_NEON;
|
||||||
|
if (IS_ALIGNED(width, 4)) {
|
||||||
|
ARGBMirrorRow = ARGBMirrorRow_NEON;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(HAS_ARGBMIRRORROW_SSSE3)
|
#if defined(HAS_ARGBMIRRORROW_SSSE3)
|
||||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 4)) {
|
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||||
ARGBMirrorRow = ARGBMirrorRow_SSSE3;
|
ARGBMirrorRow = ARGBMirrorRow_Any_SSSE3;
|
||||||
|
if (IS_ALIGNED(width, 4)) {
|
||||||
|
ARGBMirrorRow = ARGBMirrorRow_SSSE3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_ARGBMIRRORROW_AVX2)
|
#if defined(HAS_ARGBMIRRORROW_AVX2)
|
||||||
if (TestCpuFlag(kCpuHasAVX2) && IS_ALIGNED(width, 8)) {
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
ARGBMirrorRow = ARGBMirrorRow_AVX2;
|
ARGBMirrorRow = ARGBMirrorRow_Any_AVX2;
|
||||||
}
|
if (IS_ALIGNED(width, 8)) {
|
||||||
#endif
|
ARGBMirrorRow = ARGBMirrorRow_AVX2;
|
||||||
#if defined(HAS_ARGBMIRRORROW_NEON)
|
}
|
||||||
if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(width, 4)) {
|
|
||||||
ARGBMirrorRow = ARGBMirrorRow_NEON;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -101,19 +101,28 @@ void ARGBRotate180(const uint8* src, int src_stride,
|
|||||||
void (*ARGBMirrorRow)(const uint8* src, uint8* dst, int width) =
|
void (*ARGBMirrorRow)(const uint8* src, uint8* dst, int width) =
|
||||||
ARGBMirrorRow_C;
|
ARGBMirrorRow_C;
|
||||||
void (*CopyRow)(const uint8* src, uint8* dst, int width) = CopyRow_C;
|
void (*CopyRow)(const uint8* src, uint8* dst, int width) = CopyRow_C;
|
||||||
|
#if defined(HAS_ARGBMIRRORROW_NEON)
|
||||||
|
if (TestCpuFlag(kCpuHasNEON)) {
|
||||||
|
ARGBMirrorRow = ARGBMirrorRow_Any_NEON;
|
||||||
|
if (IS_ALIGNED(width, 4)) {
|
||||||
|
ARGBMirrorRow = ARGBMirrorRow_NEON;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#if defined(HAS_ARGBMIRRORROW_SSSE3)
|
#if defined(HAS_ARGBMIRRORROW_SSSE3)
|
||||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 4)) {
|
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||||
ARGBMirrorRow = ARGBMirrorRow_SSSE3;
|
ARGBMirrorRow = ARGBMirrorRow_Any_SSSE3;
|
||||||
|
if (IS_ALIGNED(width, 4)) {
|
||||||
|
ARGBMirrorRow = ARGBMirrorRow_SSSE3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_ARGBMIRRORROW_AVX2)
|
#if defined(HAS_ARGBMIRRORROW_AVX2)
|
||||||
if (TestCpuFlag(kCpuHasAVX2) && IS_ALIGNED(width, 8)) {
|
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||||
ARGBMirrorRow = ARGBMirrorRow_AVX2;
|
ARGBMirrorRow = ARGBMirrorRow_Any_AVX2;
|
||||||
}
|
if (IS_ALIGNED(width, 8)) {
|
||||||
#endif
|
ARGBMirrorRow = ARGBMirrorRow_AVX2;
|
||||||
#if defined(HAS_ARGBMIRRORROW_NEON)
|
}
|
||||||
if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(width, 4)) {
|
|
||||||
ARGBMirrorRow = ARGBMirrorRow_NEON;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(HAS_COPYROW_NEON)
|
#if defined(HAS_COPYROW_NEON)
|
||||||
|
|||||||
@ -645,10 +645,20 @@ MANY(MirrorRow_Any_SSE2, MirrorRow_SSE2, MirrorRow_C, 1, 15)
|
|||||||
#ifdef HAS_MIRRORROW_NEON
|
#ifdef HAS_MIRRORROW_NEON
|
||||||
MANY(MirrorRow_Any_NEON, MirrorRow_NEON, MirrorRow_C, 1, 15)
|
MANY(MirrorRow_Any_NEON, MirrorRow_NEON, MirrorRow_C, 1, 15)
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAS_ARGBMIRRORROW_AVX2
|
||||||
|
MANY(ARGBMirrorRow_Any_AVX2, ARGBMirrorRow_AVX2, ARGBMirrorRow_C, 4, 7)
|
||||||
|
#endif
|
||||||
|
#ifdef HAS_ARGBMIRRORROW_SSSE3
|
||||||
|
MANY(ARGBMirrorRow_Any_SSSE3, ARGBMirrorRow_SSSE3, ARGBMirrorRow_C, 4, 3)
|
||||||
|
#endif
|
||||||
|
#ifdef HAS_ARGBMIRRORROW_SSE2
|
||||||
|
MANY(ARGBMirrorRow_Any_SSE2, ARGBMirrorRow_SSE2, ARGBMirrorRow_C, 4, 3)
|
||||||
|
#endif
|
||||||
|
#ifdef HAS_ARGBMIRRORROW_NEON
|
||||||
|
MANY(ARGBMirrorRow_Any_NEON, ARGBMirrorRow_NEON, ARGBMirrorRow_C, 4, 3)
|
||||||
|
#endif
|
||||||
#undef MANY
|
#undef MANY
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
} // namespace libyuv
|
} // namespace libyuv
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user