mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-01-01 03:12:16 +08:00
bilinear scale use fast 2 pass unless image is beyond row buffer size.
BUG=none TEST=none Review URL: https://webrtc-codereview.appspot.com/965020 git-svn-id: http://libyuv.googlecode.com/svn/trunk@484 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
e0b63e44e0
commit
55d5b48e4d
@ -1,6 +1,6 @@
|
||||
Name: libyuv
|
||||
URL: http://code.google.com/p/libyuv/
|
||||
Version: 483
|
||||
Version: 484
|
||||
License: BSD
|
||||
License File: LICENSE
|
||||
|
||||
|
||||
@ -11,6 +11,6 @@
|
||||
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
||||
#define INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
#define LIBYUV_VERSION 483
|
||||
#define LIBYUV_VERSION 484
|
||||
|
||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||
|
||||
@ -2799,7 +2799,7 @@ void ScalePlaneBilinear(int src_width, int src_height,
|
||||
const uint8* src_ptr, uint8* dst_ptr) {
|
||||
assert(dst_width > 0);
|
||||
assert(dst_height > 0);
|
||||
if (!IS_ALIGNED(src_width, 8) || (src_width > kMaxInputWidth)) {
|
||||
if (src_width > kMaxInputWidth) {
|
||||
ScalePlaneBilinearSimple(src_width, src_height, dst_width, dst_height,
|
||||
src_stride, dst_stride, src_ptr, dst_ptr);
|
||||
|
||||
|
||||
@ -30,23 +30,6 @@ static uint32 ReferenceHashDjb2(const uint8* src, uint64 count, uint32 seed) {
|
||||
return hash;
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmakDjb2_C) {
|
||||
const int kMaxTest = benchmark_width_ * benchmark_height_;
|
||||
align_buffer_16(src_a, kMaxTest)
|
||||
for (int i = 0; i < kMaxTest; ++i) {
|
||||
src_a[i] = i;
|
||||
}
|
||||
uint32 h2 = ReferenceHashDjb2(src_a, kMaxTest, 5381);
|
||||
uint32 h1;
|
||||
MaskCpuFlags(0);
|
||||
for (int i = 0; i < benchmark_iterations_; ++i) {
|
||||
h1 = HashDjb2(src_a, kMaxTest, 5381);
|
||||
}
|
||||
MaskCpuFlags(-1);
|
||||
EXPECT_EQ(h1, h2);
|
||||
free_aligned_buffer_16(src_a)
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmakDjb2_OPT) {
|
||||
const int kMaxTest = benchmark_width_ * benchmark_height_;
|
||||
align_buffer_16(src_a, kMaxTest)
|
||||
@ -78,39 +61,6 @@ TEST_F(libyuvTest, BenchmakDjb2_Unaligned_OPT) {
|
||||
free_aligned_buffer_16(src_a)
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmarkSumSquareError_C) {
|
||||
const int kMaxWidth = 4096 * 3;
|
||||
align_buffer_16(src_a, kMaxWidth)
|
||||
align_buffer_16(src_b, kMaxWidth)
|
||||
memset(src_a, 0, kMaxWidth);
|
||||
memset(src_b, 0, kMaxWidth);
|
||||
|
||||
MaskCpuFlags(0);
|
||||
memcpy(src_a, "test0123test4567", 16);
|
||||
memcpy(src_b, "tick0123tock4567", 16);
|
||||
uint64 h1 = ComputeSumSquareError(src_a, src_b, 16);
|
||||
EXPECT_EQ(790u, h1);
|
||||
|
||||
for (int i = 0; i < kMaxWidth; ++i) {
|
||||
src_a[i] = i;
|
||||
src_b[i] = i;
|
||||
}
|
||||
memset(src_a, 0, kMaxWidth);
|
||||
memset(src_b, 0, kMaxWidth);
|
||||
|
||||
int count = benchmark_iterations_ *
|
||||
(benchmark_width_ * benchmark_height_ + kMaxWidth - 1) / kMaxWidth;
|
||||
for (int i = 0; i < count; ++i) {
|
||||
h1 = ComputeSumSquareError(src_a, src_b, kMaxWidth);
|
||||
}
|
||||
|
||||
MaskCpuFlags(-1);
|
||||
EXPECT_EQ(0, h1);
|
||||
|
||||
free_aligned_buffer_16(src_a)
|
||||
free_aligned_buffer_16(src_b)
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmarkSumSquareError_OPT) {
|
||||
const int kMaxWidth = 4096 * 3;
|
||||
align_buffer_16(src_a, kMaxWidth)
|
||||
@ -184,33 +134,6 @@ TEST_F(libyuvTest, SumSquareError) {
|
||||
free_aligned_buffer_16(src_b)
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmarkPsnr_C) {
|
||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
||||
src_a[i] = i;
|
||||
src_b[i] = i;
|
||||
}
|
||||
|
||||
MaskCpuFlags(0);
|
||||
|
||||
double c_time = get_time();
|
||||
for (int i = 0; i < benchmark_iterations_; ++i)
|
||||
CalcFramePsnr(src_a, benchmark_width_,
|
||||
src_b, benchmark_width_,
|
||||
benchmark_width_, benchmark_height_);
|
||||
|
||||
c_time = (get_time() - c_time) / benchmark_iterations_;
|
||||
printf("BenchmarkPsnr_C - %8.2f us c\n", c_time * 1e6);
|
||||
|
||||
MaskCpuFlags(-1);
|
||||
|
||||
EXPECT_EQ(0, 0);
|
||||
|
||||
free_aligned_buffer_16(src_a)
|
||||
free_aligned_buffer_16(src_b)
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmarkPsnr_OPT) {
|
||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||
@ -313,33 +236,6 @@ TEST_F(libyuvTest, Psnr) {
|
||||
free_aligned_buffer_16(src_b)
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmarkSsim_C) {
|
||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||
for (int i = 0; i < benchmark_width_ * benchmark_height_; ++i) {
|
||||
src_a[i] = i;
|
||||
src_b[i] = i;
|
||||
}
|
||||
|
||||
MaskCpuFlags(0);
|
||||
|
||||
double c_time = get_time();
|
||||
for (int i = 0; i < benchmark_iterations_; ++i)
|
||||
CalcFrameSsim(src_a, benchmark_width_,
|
||||
src_b, benchmark_width_,
|
||||
benchmark_width_, benchmark_height_);
|
||||
|
||||
c_time = (get_time() - c_time) / benchmark_iterations_;
|
||||
printf("BenchmarkSsim_C - %8.2f us c\n", c_time * 1e6);
|
||||
|
||||
MaskCpuFlags(-1);
|
||||
|
||||
EXPECT_EQ(0, 0); // Pass if we get this far.
|
||||
|
||||
free_aligned_buffer_16(src_a)
|
||||
free_aligned_buffer_16(src_b)
|
||||
}
|
||||
|
||||
TEST_F(libyuvTest, BenchmarkSsim_OPT) {
|
||||
align_buffer_16(src_a, benchmark_width_ * benchmark_height_)
|
||||
align_buffer_16(src_b, benchmark_width_ * benchmark_height_)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user