mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-02-08 18:56:43 +08:00
Switch to 128x72 for default testing size when not benchmarking.
BUG=none TEST=none Review URL: https://webrtc-codereview.appspot.com/935004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@442 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
3bb60b37fd
commit
bd4fcb9877
@ -1,6 +1,6 @@
|
|||||||
Name: libyuv
|
Name: libyuv
|
||||||
URL: http://code.google.com/p/libyuv/
|
URL: http://code.google.com/p/libyuv/
|
||||||
Version: 439
|
Version: 442
|
||||||
License: BSD
|
License: BSD
|
||||||
License File: LICENSE
|
License File: LICENSE
|
||||||
|
|
||||||
|
|||||||
@ -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 439
|
#define LIBYUV_VERSION 442
|
||||||
|
|
||||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||||
|
|||||||
@ -30,33 +30,9 @@ static uint32 ReferenceHashDjb2(const uint8* src, uint64 count, uint32 seed) {
|
|||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(libyuvTest, TestDjb2) {
|
|
||||||
const int kMaxTest = 2049;
|
|
||||||
align_buffer_16(src_a, kMaxTest)
|
|
||||||
|
|
||||||
for (int i = 0; i < kMaxTest; ++i) {
|
|
||||||
src_a[i] = i;
|
|
||||||
}
|
|
||||||
for (int i = 0; i < kMaxTest; ++i) {
|
|
||||||
uint32 h1 = HashDjb2(src_a, kMaxTest, 5381);
|
|
||||||
uint32 h2 = ReferenceHashDjb2(src_a, kMaxTest, 5381);
|
|
||||||
EXPECT_EQ(h1, h2);
|
|
||||||
}
|
|
||||||
// Hash constant generator using for tables in compare
|
|
||||||
int h = 1;
|
|
||||||
for (int i = 0; i <= 16 ; ++i) {
|
|
||||||
printf("%08x ", h);
|
|
||||||
h *= 33;
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
free_aligned_buffer_16(src_a)
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(libyuvTest, BenchmakDjb2_C) {
|
TEST_F(libyuvTest, BenchmakDjb2_C) {
|
||||||
const int kMaxTest = benchmark_width_ * benchmark_height_;
|
const int kMaxTest = benchmark_width_ * benchmark_height_;
|
||||||
align_buffer_16(src_a, kMaxTest)
|
align_buffer_16(src_a, kMaxTest)
|
||||||
|
|
||||||
for (int i = 0; i < kMaxTest; ++i) {
|
for (int i = 0; i < kMaxTest; ++i) {
|
||||||
src_a[i] = i;
|
src_a[i] = i;
|
||||||
}
|
}
|
||||||
@ -90,7 +66,6 @@ TEST_F(libyuvTest, BenchmakDjb2_OPT) {
|
|||||||
TEST_F(libyuvTest, BenchmakDjb2_Unaligned_OPT) {
|
TEST_F(libyuvTest, BenchmakDjb2_Unaligned_OPT) {
|
||||||
const int kMaxTest = benchmark_width_ * benchmark_height_;
|
const int kMaxTest = benchmark_width_ * benchmark_height_;
|
||||||
align_buffer_16(src_a, kMaxTest + 1)
|
align_buffer_16(src_a, kMaxTest + 1)
|
||||||
|
|
||||||
for (int i = 0; i < kMaxTest; ++i) {
|
for (int i = 0; i < kMaxTest; ++i) {
|
||||||
src_a[i + 1] = i;
|
src_a[i + 1] = i;
|
||||||
}
|
}
|
||||||
@ -107,6 +82,8 @@ TEST_F(libyuvTest, BenchmarkSumSquareError_C) {
|
|||||||
const int kMaxWidth = 4096 * 3;
|
const int kMaxWidth = 4096 * 3;
|
||||||
align_buffer_16(src_a, kMaxWidth)
|
align_buffer_16(src_a, kMaxWidth)
|
||||||
align_buffer_16(src_b, kMaxWidth)
|
align_buffer_16(src_b, kMaxWidth)
|
||||||
|
memset(src_a, 0, kMaxWidth);
|
||||||
|
memset(src_b, 0, kMaxWidth);
|
||||||
|
|
||||||
MaskCpuFlags(0);
|
MaskCpuFlags(0);
|
||||||
memcpy(src_a, "test0123test4567", 16);
|
memcpy(src_a, "test0123test4567", 16);
|
||||||
@ -118,15 +95,17 @@ TEST_F(libyuvTest, BenchmarkSumSquareError_C) {
|
|||||||
src_a[i] = i;
|
src_a[i] = i;
|
||||||
src_b[i] = i;
|
src_b[i] = i;
|
||||||
}
|
}
|
||||||
|
memset(src_a, 0, kMaxWidth);
|
||||||
|
memset(src_b, 0, kMaxWidth);
|
||||||
|
|
||||||
int count = benchmark_iterations_ *
|
int count = benchmark_iterations_ *
|
||||||
benchmark_width_ * benchmark_height_ / kMaxWidth;
|
(benchmark_width_ * benchmark_height_ + kMaxWidth - 1) / kMaxWidth;
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
MaskCpuFlags(-1);
|
MaskCpuFlags(-1);
|
||||||
EXPECT_EQ(h1, 0);
|
EXPECT_EQ(0, h1);
|
||||||
|
|
||||||
free_aligned_buffer_16(src_a)
|
free_aligned_buffer_16(src_a)
|
||||||
free_aligned_buffer_16(src_b)
|
free_aligned_buffer_16(src_b)
|
||||||
@ -136,6 +115,8 @@ TEST_F(libyuvTest, BenchmarkSumSquareError_OPT) {
|
|||||||
const int kMaxWidth = 4096 * 3;
|
const int kMaxWidth = 4096 * 3;
|
||||||
align_buffer_16(src_a, kMaxWidth)
|
align_buffer_16(src_a, kMaxWidth)
|
||||||
align_buffer_16(src_b, kMaxWidth)
|
align_buffer_16(src_b, kMaxWidth)
|
||||||
|
memset(src_a, 0, kMaxWidth);
|
||||||
|
memset(src_b, 0, kMaxWidth);
|
||||||
|
|
||||||
memcpy(src_a, "test0123test4567", 16);
|
memcpy(src_a, "test0123test4567", 16);
|
||||||
memcpy(src_b, "tick0123tock4567", 16);
|
memcpy(src_b, "tick0123tock4567", 16);
|
||||||
@ -146,14 +127,16 @@ TEST_F(libyuvTest, BenchmarkSumSquareError_OPT) {
|
|||||||
src_a[i] = i;
|
src_a[i] = i;
|
||||||
src_b[i] = i;
|
src_b[i] = i;
|
||||||
}
|
}
|
||||||
|
memset(src_a, 0, kMaxWidth);
|
||||||
|
memset(src_b, 0, kMaxWidth);
|
||||||
|
|
||||||
int count = benchmark_iterations_ *
|
int count = benchmark_iterations_ *
|
||||||
benchmark_width_ * benchmark_height_ / kMaxWidth;
|
(benchmark_width_ * benchmark_height_ + kMaxWidth - 1) / kMaxWidth;
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPECT_EQ(h1, 0);
|
EXPECT_EQ(0, h1);
|
||||||
|
|
||||||
free_aligned_buffer_16(src_a)
|
free_aligned_buffer_16(src_a)
|
||||||
free_aligned_buffer_16(src_b)
|
free_aligned_buffer_16(src_b)
|
||||||
@ -163,14 +146,13 @@ TEST_F(libyuvTest, SumSquareError) {
|
|||||||
const int kMaxWidth = 4096 * 3;
|
const int kMaxWidth = 4096 * 3;
|
||||||
align_buffer_16(src_a, kMaxWidth)
|
align_buffer_16(src_a, kMaxWidth)
|
||||||
align_buffer_16(src_b, kMaxWidth)
|
align_buffer_16(src_b, kMaxWidth)
|
||||||
|
|
||||||
memset(src_a, 0, kMaxWidth);
|
memset(src_a, 0, kMaxWidth);
|
||||||
memset(src_b, 0, kMaxWidth);
|
memset(src_b, 0, kMaxWidth);
|
||||||
|
|
||||||
uint64 err;
|
uint64 err;
|
||||||
err = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
err = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
||||||
|
|
||||||
EXPECT_EQ(err, 0);
|
EXPECT_EQ(0, err);
|
||||||
|
|
||||||
memset(src_a, 1, kMaxWidth);
|
memset(src_a, 1, kMaxWidth);
|
||||||
err = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
err = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
||||||
@ -181,7 +163,7 @@ TEST_F(libyuvTest, SumSquareError) {
|
|||||||
memset(src_b, 193, kMaxWidth);
|
memset(src_b, 193, kMaxWidth);
|
||||||
err = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
err = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
||||||
|
|
||||||
EXPECT_EQ(err, (kMaxWidth * 3 * 3));
|
EXPECT_EQ(kMaxWidth * 3 * 3, err);
|
||||||
|
|
||||||
srandom(time(NULL));
|
srandom(time(NULL));
|
||||||
|
|
||||||
@ -205,7 +187,6 @@ TEST_F(libyuvTest, SumSquareError) {
|
|||||||
TEST_F(libyuvTest, BenchmarkPsnr_C) {
|
TEST_F(libyuvTest, BenchmarkPsnr_C) {
|
||||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||||
|
|
||||||
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
||||||
src_a[i] = i;
|
src_a[i] = i;
|
||||||
src_b[i] = i;
|
src_b[i] = i;
|
||||||
@ -233,7 +214,6 @@ TEST_F(libyuvTest, BenchmarkPsnr_C) {
|
|||||||
TEST_F(libyuvTest, BenchmarkPsnr_OPT) {
|
TEST_F(libyuvTest, BenchmarkPsnr_OPT) {
|
||||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||||
|
|
||||||
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
||||||
src_a[i] = i;
|
src_a[i] = i;
|
||||||
src_b[i] = i;
|
src_b[i] = i;
|
||||||
@ -264,7 +244,6 @@ TEST_F(libyuvTest, Psnr) {
|
|||||||
const int kSrcStride = 2 * b + kSrcWidth;
|
const int kSrcStride = 2 * b + kSrcWidth;
|
||||||
align_buffer_16(src_a, kSrcPlaneSize)
|
align_buffer_16(src_a, kSrcPlaneSize)
|
||||||
align_buffer_16(src_b, kSrcPlaneSize)
|
align_buffer_16(src_b, kSrcPlaneSize)
|
||||||
|
|
||||||
memset(src_a, 0, kSrcPlaneSize);
|
memset(src_a, 0, kSrcPlaneSize);
|
||||||
memset(src_b, 0, kSrcPlaneSize);
|
memset(src_b, 0, kSrcPlaneSize);
|
||||||
|
|
||||||
@ -337,7 +316,6 @@ TEST_F(libyuvTest, Psnr) {
|
|||||||
TEST_F(libyuvTest, BenchmarkSsim_C) {
|
TEST_F(libyuvTest, BenchmarkSsim_C) {
|
||||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||||
|
|
||||||
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
||||||
src_a[i] = i;
|
src_a[i] = i;
|
||||||
src_b[i] = i;
|
src_b[i] = i;
|
||||||
@ -356,7 +334,7 @@ TEST_F(libyuvTest, BenchmarkSsim_C) {
|
|||||||
|
|
||||||
MaskCpuFlags(-1);
|
MaskCpuFlags(-1);
|
||||||
|
|
||||||
EXPECT_EQ(0, 0);
|
EXPECT_EQ(0, 0); // Pass if we get this far.
|
||||||
|
|
||||||
free_aligned_buffer_16(src_a)
|
free_aligned_buffer_16(src_a)
|
||||||
free_aligned_buffer_16(src_b)
|
free_aligned_buffer_16(src_b)
|
||||||
@ -365,7 +343,6 @@ TEST_F(libyuvTest, BenchmarkSsim_C) {
|
|||||||
TEST_F(libyuvTest, BenchmarkSsim_OPT) {
|
TEST_F(libyuvTest, BenchmarkSsim_OPT) {
|
||||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||||
|
|
||||||
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
||||||
src_a[i] = i;
|
src_a[i] = i;
|
||||||
src_b[i] = i;
|
src_b[i] = i;
|
||||||
@ -380,9 +357,9 @@ TEST_F(libyuvTest, BenchmarkSsim_OPT) {
|
|||||||
benchmark_width_, benchmark_height_);
|
benchmark_width_, benchmark_height_);
|
||||||
|
|
||||||
opt_time = (get_time() - opt_time) / benchmark_iterations_;
|
opt_time = (get_time() - opt_time) / benchmark_iterations_;
|
||||||
printf("BenchmarkPsnr_OPT - %8.2f us opt\n", opt_time * 1e6);
|
printf("BenchmarkSsim_OPT - %8.2f us opt\n", opt_time * 1e6);
|
||||||
|
|
||||||
EXPECT_EQ(0, 0);
|
EXPECT_EQ(0, 0); // Pass if we get this far.
|
||||||
|
|
||||||
free_aligned_buffer_16(src_a)
|
free_aligned_buffer_16(src_a)
|
||||||
free_aligned_buffer_16(src_b)
|
free_aligned_buffer_16(src_b)
|
||||||
@ -396,7 +373,6 @@ TEST_F(libyuvTest, Ssim) {
|
|||||||
const int kSrcStride = 2 * b + kSrcWidth;
|
const int kSrcStride = 2 * b + kSrcWidth;
|
||||||
align_buffer_16(src_a, kSrcPlaneSize)
|
align_buffer_16(src_a, kSrcPlaneSize)
|
||||||
align_buffer_16(src_b, kSrcPlaneSize)
|
align_buffer_16(src_b, kSrcPlaneSize)
|
||||||
|
|
||||||
memset(src_a, 0, kSrcPlaneSize);
|
memset(src_a, 0, kSrcPlaneSize);
|
||||||
memset(src_b, 0, kSrcPlaneSize);
|
memset(src_b, 0, kSrcPlaneSize);
|
||||||
|
|
||||||
@ -421,7 +397,7 @@ TEST_F(libyuvTest, Ssim) {
|
|||||||
src_b + kSrcStride * b + b, kSrcStride,
|
src_b + kSrcStride * b + b, kSrcStride,
|
||||||
kSrcWidth, kSrcHeight);
|
kSrcWidth, kSrcHeight);
|
||||||
|
|
||||||
EXPECT_GT(err, 0.8);
|
EXPECT_GT(err, 0.0001);
|
||||||
EXPECT_LT(err, 0.9);
|
EXPECT_LT(err, 0.9);
|
||||||
|
|
||||||
for (int i = 0; i < kSrcPlaneSize; ++i) {
|
for (int i = 0; i < kSrcPlaneSize; ++i) {
|
||||||
@ -432,7 +408,7 @@ TEST_F(libyuvTest, Ssim) {
|
|||||||
src_b + kSrcStride * b + b, kSrcStride,
|
src_b + kSrcStride * b + b, kSrcStride,
|
||||||
kSrcWidth, kSrcHeight);
|
kSrcWidth, kSrcHeight);
|
||||||
|
|
||||||
EXPECT_GT(err, 0.008);
|
EXPECT_GT(err, 0.0);
|
||||||
EXPECT_LT(err, 0.009);
|
EXPECT_LT(err, 0.009);
|
||||||
|
|
||||||
srandom(time(NULL));
|
srandom(time(NULL));
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -19,11 +19,17 @@
|
|||||||
#define BENCHMARK_ITERATIONS 1
|
#define BENCHMARK_ITERATIONS 1
|
||||||
|
|
||||||
libyuvTest::libyuvTest() : rotate_max_w_(128), rotate_max_h_(128),
|
libyuvTest::libyuvTest() : rotate_max_w_(128), rotate_max_h_(128),
|
||||||
benchmark_iterations_(BENCHMARK_ITERATIONS), benchmark_width_(1280),
|
benchmark_iterations_(BENCHMARK_ITERATIONS), benchmark_width_(128),
|
||||||
benchmark_height_(720) {
|
benchmark_height_(72) {
|
||||||
const char* repeat = getenv("LIBYUV_REPEAT");
|
const char* repeat = getenv("LIBYUV_REPEAT");
|
||||||
if (repeat) {
|
if (repeat) {
|
||||||
benchmark_iterations_ = atoi(repeat); // NOLINT
|
benchmark_iterations_ = atoi(repeat); // NOLINT
|
||||||
|
// For quicker unittests, default is 128 x 72. But when benchmarking,
|
||||||
|
// default to 720p. Allow size to specify.
|
||||||
|
if (benchmark_iterations_ > 1) {
|
||||||
|
benchmark_width_ = 1280;
|
||||||
|
benchmark_height_ = 720;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const char* width = getenv("LIBYUV_WIDTH");
|
const char* width = getenv("LIBYUV_WIDTH");
|
||||||
if (width) {
|
if (width) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user