mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 16:56:55 +08:00
Fix ifdef mismatch for mirroruv
Macro define and macro ifdef didnt match, leading to C code being used. Make macro match function name. TBR=harryjin@google.com BUG=libyuv:543 Review URL: https://codereview.chromium.org/1579023002 .
This commit is contained in:
parent
0e462e6f45
commit
23c6a83561
@ -129,7 +129,7 @@ extern "C" {
|
||||
#define HAS_J422TOARGBROW_SSSE3
|
||||
#define HAS_MERGEUVROW_SSE2
|
||||
#define HAS_MIRRORROW_SSSE3
|
||||
#define HAS_MIRRORROW_UV_SSSE3
|
||||
#define HAS_MIRRORUVROW_SSSE3
|
||||
#define HAS_MIRRORUVROW_SSSE3
|
||||
#define HAS_NV12TOARGBROW_SSSE3
|
||||
#define HAS_NV12TORGB565ROW_SSSE3
|
||||
|
||||
@ -267,22 +267,22 @@ void RotateUV180(const uint8* src, int src_stride,
|
||||
uint8* dst_b, int dst_stride_b,
|
||||
int width, int height) {
|
||||
int i;
|
||||
void (*MirrorRowUV)(const uint8* src, uint8* dst_u, uint8* dst_v, int width) =
|
||||
void (*MirrorUVRow)(const uint8* src, uint8* dst_u, uint8* dst_v, int width) =
|
||||
MirrorUVRow_C;
|
||||
#if defined(HAS_MIRRORUVROW_NEON)
|
||||
if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(width, 8)) {
|
||||
MirrorRowUV = MirrorUVRow_NEON;
|
||||
MirrorUVRow = MirrorUVRow_NEON;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MIRRORROW_UV_SSSE3)
|
||||
#if defined(HAS_MIRRORUVROW_SSSE3)
|
||||
if (TestCpuFlag(kCpuHasSSSE3) && IS_ALIGNED(width, 16)) {
|
||||
MirrorRowUV = MirrorUVRow_SSSE3;
|
||||
MirrorUVRow = MirrorUVRow_SSSE3;
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_MIRRORUVROW_MIPS_DSPR2)
|
||||
if (TestCpuFlag(kCpuHasMIPS_DSPR2) &&
|
||||
IS_ALIGNED(src, 4) && IS_ALIGNED(src_stride, 4)) {
|
||||
MirrorRowUV = MirrorUVRow_MIPS_DSPR2;
|
||||
MirrorUVRow = MirrorUVRow_MIPS_DSPR2;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -290,7 +290,7 @@ void RotateUV180(const uint8* src, int src_stride,
|
||||
dst_b += dst_stride_b * (height - 1);
|
||||
|
||||
for (i = 0; i < height; ++i) {
|
||||
MirrorRowUV(src, dst_a, dst_b, width);
|
||||
MirrorUVRow(src, dst_a, dst_b, width);
|
||||
src += src_stride;
|
||||
dst_a -= dst_stride_a;
|
||||
dst_b -= dst_stride_b;
|
||||
|
||||
@ -2521,7 +2521,7 @@ void MirrorRow_AVX2(const uint8* src, uint8* dst, int width) {
|
||||
}
|
||||
#endif // HAS_MIRRORROW_AVX2
|
||||
|
||||
#ifdef HAS_MIRRORROW_UV_SSSE3
|
||||
#ifdef HAS_MIRRORUVROW_SSSE3
|
||||
// Shuffle table for reversing the bytes of UV channels.
|
||||
static uvec8 kShuffleMirrorUV = {
|
||||
14u, 12u, 10u, 8u, 6u, 4u, 2u, 0u, 15u, 13u, 11u, 9u, 7u, 5u, 3u, 1u
|
||||
@ -2552,7 +2552,7 @@ void MirrorUVRow_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v,
|
||||
"xmm0", "xmm1"
|
||||
);
|
||||
}
|
||||
#endif // HAS_MIRRORROW_UV_SSSE3
|
||||
#endif // HAS_MIRRORUVROW_SSSE3
|
||||
|
||||
#ifdef HAS_ARGBMIRRORROW_SSE2
|
||||
|
||||
|
||||
@ -3154,7 +3154,7 @@ void MirrorRow_AVX2(const uint8* src, uint8* dst, int width) {
|
||||
}
|
||||
#endif // HAS_MIRRORROW_AVX2
|
||||
|
||||
#ifdef HAS_MIRRORROW_UV_SSSE3
|
||||
#ifdef HAS_MIRRORUVROW_SSSE3
|
||||
// Shuffle table for reversing the bytes of UV channels.
|
||||
static const uvec8 kShuffleMirrorUV = {
|
||||
14u, 12u, 10u, 8u, 6u, 4u, 2u, 0u, 15u, 13u, 11u, 9u, 7u, 5u, 3u, 1u
|
||||
@ -3187,7 +3187,7 @@ void MirrorUVRow_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v,
|
||||
ret
|
||||
}
|
||||
}
|
||||
#endif // HAS_MIRRORROW_UV_SSSE3
|
||||
#endif // HAS_MIRRORUVROW_SSSE3
|
||||
|
||||
#ifdef HAS_ARGBMIRRORROW_SSE2
|
||||
__declspec(naked)
|
||||
|
||||
@ -1149,111 +1149,6 @@ TEST_F(LibYUVPlanarTest, ARGBBlend_Opt) {
|
||||
EXPECT_LE(max_diff, 1);
|
||||
}
|
||||
|
||||
#ifdef HAS_BLENDPLANEROW_AVX2
|
||||
static void TestBlendPlaneRow(int width, int height, int benchmark_iterations,
|
||||
int invert, int off) {
|
||||
int has_ssse3 = TestCpuFlag(kCpuHasSSSE3);
|
||||
int has_avx2 = TestCpuFlag(kCpuHasAVX2);
|
||||
width = width * height;
|
||||
height = 1;
|
||||
if (width < 256) {
|
||||
width = 256;
|
||||
}
|
||||
const int kBpp = 1;
|
||||
const int kStride = width * kBpp;
|
||||
align_buffer_64(src_argb_a, kStride * height + off);
|
||||
align_buffer_64(src_argb_b, kStride * height + off);
|
||||
align_buffer_64(src_argb_alpha, kStride * height + off);
|
||||
align_buffer_64(dst_argb_c, kStride * height + off);
|
||||
align_buffer_64(dst_argb_opt, kStride * height + off);
|
||||
memset(dst_argb_c, 255, kStride * height + off);
|
||||
memset(dst_argb_opt, 255, kStride * height + off);
|
||||
|
||||
if (has_ssse3) {
|
||||
// Test source is maintained exactly if alpha is 255.
|
||||
for (int i = 0; i < 256; ++i) {
|
||||
src_argb_a[i + off] = i;
|
||||
src_argb_b[i + off] = 255 - i;
|
||||
src_argb_alpha[i + off] = 255;
|
||||
}
|
||||
BlendPlaneRow_SSSE3(src_argb_a + off,
|
||||
src_argb_b + off,
|
||||
src_argb_alpha + off,
|
||||
dst_argb_opt + off,
|
||||
256);
|
||||
for (int i = 0; i < 256; ++i) {
|
||||
EXPECT_EQ(src_argb_a[i + off], dst_argb_opt[i + off]);
|
||||
}
|
||||
// Test destination is maintained exactly if alpha is 0.
|
||||
for (int i = 0; i < 256; ++i) {
|
||||
src_argb_a[i + off] = i;
|
||||
src_argb_b[i + off] = 255 - i;
|
||||
src_argb_alpha[i + off] = 0;
|
||||
}
|
||||
BlendPlaneRow_SSSE3(src_argb_a + off,
|
||||
src_argb_b + off,
|
||||
src_argb_alpha + off,
|
||||
dst_argb_opt + off,
|
||||
256);
|
||||
for (int i = 0; i < 256; ++i) {
|
||||
EXPECT_EQ(src_argb_b[i + off], dst_argb_opt[i + off]);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < kStride * height; ++i) {
|
||||
src_argb_a[i + off] = (fastrand() & 0xff);
|
||||
src_argb_b[i + off] = (fastrand() & 0xff);
|
||||
src_argb_alpha[i + off] = (fastrand() & 0xff);
|
||||
}
|
||||
|
||||
BlendPlaneRow_C(src_argb_a + off,
|
||||
src_argb_b + off,
|
||||
src_argb_alpha + off,
|
||||
dst_argb_c + off,
|
||||
width * height);
|
||||
for (int i = 0; i < benchmark_iterations; ++i) {
|
||||
if (has_avx2) {
|
||||
BlendPlaneRow_AVX2(src_argb_a + off,
|
||||
src_argb_b + off,
|
||||
src_argb_alpha + off,
|
||||
dst_argb_opt + off,
|
||||
width * height);
|
||||
} else {
|
||||
if (has_ssse3) {
|
||||
BlendPlaneRow_SSSE3(src_argb_a + off,
|
||||
src_argb_b + off,
|
||||
src_argb_alpha + off,
|
||||
dst_argb_opt + off,
|
||||
width * height);
|
||||
} else {
|
||||
BlendPlaneRow_C(src_argb_a + off,
|
||||
src_argb_b + off,
|
||||
src_argb_alpha + off,
|
||||
dst_argb_opt + off,
|
||||
width * height);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < kStride * height; ++i) {
|
||||
EXPECT_EQ(dst_argb_c[i + off], dst_argb_opt[i + off]);
|
||||
}
|
||||
free_aligned_buffer_64(src_argb_a);
|
||||
free_aligned_buffer_64(src_argb_b);
|
||||
free_aligned_buffer_64(src_argb_alpha);
|
||||
free_aligned_buffer_64(dst_argb_c);
|
||||
free_aligned_buffer_64(dst_argb_opt);
|
||||
return;
|
||||
}
|
||||
|
||||
TEST_F(LibYUVPlanarTest, BlendPlaneRow_Opt) {
|
||||
TestBlendPlaneRow(benchmark_width_, benchmark_height_, benchmark_iterations_,
|
||||
+1, 0);
|
||||
}
|
||||
TEST_F(LibYUVPlanarTest, BlendPlaneRow_Unaligned) {
|
||||
TestBlendPlaneRow(benchmark_width_, benchmark_height_, benchmark_iterations_,
|
||||
+1, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void TestBlendPlane(int width, int height, int benchmark_iterations,
|
||||
int disable_cpu_flags, int benchmark_cpu_info,
|
||||
int invert, int off) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user