From 6a34ee200e53d003a8606bc87307c0a21213e123 Mon Sep 17 00:00:00 2001 From: "fbarchard@google.com" Date: Wed, 8 May 2013 23:05:08 +0000 Subject: [PATCH] Test DJB2 hash with half the buffer same. BUG=none TEST=libyuvTest.BenchmakDjb2_Test Review URL: https://webrtc-codereview.appspot.com/1446004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@689 16f28f9a-4ce2-e073-06de-1de4eb20be90 --- README.chromium | 2 +- include/libyuv/version.h | 2 +- unit_test/compare_test.cc | 44 +++++++++++++++++++++++++++++++++++++++ util/Makefile | 4 ++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/README.chromium b/README.chromium index 75d474998..751766123 100644 --- a/README.chromium +++ b/README.chromium @@ -1,6 +1,6 @@ Name: libyuv URL: http://code.google.com/p/libyuv/ -Version: 687 +Version: 688 License: BSD License File: LICENSE diff --git a/include/libyuv/version.h b/include/libyuv/version.h index a98463928..b449f5c6b 100644 --- a/include/libyuv/version.h +++ b/include/libyuv/version.h @@ -11,6 +11,6 @@ #ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT #define INCLUDE_LIBYUV_VERSION_H_ -#define LIBYUV_VERSION 687 +#define LIBYUV_VERSION 688 #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT diff --git a/unit_test/compare_test.cc b/unit_test/compare_test.cc index 162744118..9b622a6b8 100644 --- a/unit_test/compare_test.cc +++ b/unit_test/compare_test.cc @@ -30,6 +30,50 @@ static uint32 ReferenceHashDjb2(const uint8* src, uint64 count, uint32 seed) { return hash; } +TEST_F(libyuvTest, Djb2_Test) { + const int kMaxTest = benchmark_width_ * benchmark_height_; + align_buffer_64(src_a, kMaxTest) + align_buffer_64(src_b, kMaxTest) + + for (int i = 0; i < kMaxTest; ++i) { + src_a[i] = (random() & 0xff); + src_b[i] = (random() & 0xff); + } + // Compare different buffers. Expect hash is different. + uint32 h1 = HashDjb2(src_a, kMaxTest, 5381); + uint32 h2 = HashDjb2(src_b, kMaxTest, 5381); + EXPECT_NE(h1, h2); + + // Make last half same. Expect hash is different. + memcpy(src_a + kMaxTest / 2, src_b + kMaxTest / 2, kMaxTest / 2); + h1 = HashDjb2(src_a, kMaxTest, 5381); + h2 = HashDjb2(src_b, kMaxTest, 5381); + EXPECT_NE(h1, h2); + + // Make first half same. Expect hash is different. + memcpy(src_a + kMaxTest / 2, src_a, kMaxTest / 2); + memcpy(src_b + kMaxTest / 2, src_b, kMaxTest / 2); + memcpy(src_a, src_b, kMaxTest / 2); + h1 = HashDjb2(src_a, kMaxTest, 5381); + h2 = HashDjb2(src_b, kMaxTest, 5381); + EXPECT_NE(h1, h2); + + // Make same. Expect hash is same. + memcpy(src_a, src_b, kMaxTest); + h1 = HashDjb2(src_a, kMaxTest, 5381); + h2 = HashDjb2(src_b, kMaxTest, 5381); + EXPECT_EQ(h1, h2); + + // Mask seed different. Expect hash is different. + memcpy(src_a, src_b, kMaxTest); + h1 = HashDjb2(src_a, kMaxTest, 5381); + h2 = HashDjb2(src_b, kMaxTest, 1234); + EXPECT_NE(h1, h2); + + free_aligned_buffer_64(src_a) + free_aligned_buffer_64(src_b) +} + TEST_F(libyuvTest, BenchmakDjb2_Opt) { const int kMaxTest = benchmark_width_ * benchmark_height_; align_buffer_64(src_a, kMaxTest) diff --git a/util/Makefile b/util/Makefile index 426c5f1ab..be6de3591 100644 --- a/util/Makefile +++ b/util/Makefile @@ -1,2 +1,6 @@ psnr: psnr.cc ssim.cc psnr_main.cc +ifeq ($(CXX),icl) + $(CXX) /arch:SSE2 /Ox /openmp psnr.cc ssim.cc psnr_main.cc +else $(CXX) -msse2 -O3 -fopenmp -static -o psnr psnr.cc ssim.cc psnr_main.cc -Wl,--strip-all +endif