| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 align_buffer_64(src_b, kMaxTest); | 38 align_buffer_64(src_b, kMaxTest); |
| 39 | 39 |
| 40 const char* fox = "The quick brown fox jumps over the lazy dog" | 40 const char* fox = "The quick brown fox jumps over the lazy dog" |
| 41 " and feels as if he were in the seventh heaven of typography" | 41 " and feels as if he were in the seventh heaven of typography" |
| 42 " together with Hermann Zapf"; | 42 " together with Hermann Zapf"; |
| 43 uint32 foxhash = HashDjb2(reinterpret_cast<const uint8*>(fox), 131, 5381); | 43 uint32 foxhash = HashDjb2(reinterpret_cast<const uint8*>(fox), 131, 5381); |
| 44 const uint32 kExpectedFoxHash = 2611006483u; | 44 const uint32 kExpectedFoxHash = 2611006483u; |
| 45 EXPECT_EQ(kExpectedFoxHash, foxhash); | 45 EXPECT_EQ(kExpectedFoxHash, foxhash); |
| 46 | 46 |
| 47 for (int i = 0; i < kMaxTest; ++i) { | 47 for (int i = 0; i < kMaxTest; ++i) { |
| 48 src_a[i] = (random() & 0xff); | 48 src_a[i] = (fastrand() & 0xff); |
| 49 src_b[i] = (random() & 0xff); | 49 src_b[i] = (fastrand() & 0xff); |
| 50 } | 50 } |
| 51 // Compare different buffers. Expect hash is different. | 51 // Compare different buffers. Expect hash is different. |
| 52 uint32 h1 = HashDjb2(src_a, kMaxTest, 5381); | 52 uint32 h1 = HashDjb2(src_a, kMaxTest, 5381); |
| 53 uint32 h2 = HashDjb2(src_b, kMaxTest, 5381); | 53 uint32 h2 = HashDjb2(src_b, kMaxTest, 5381); |
| 54 EXPECT_NE(h1, h2); | 54 EXPECT_NE(h1, h2); |
| 55 | 55 |
| 56 // Make last half same. Expect hash is different. | 56 // Make last half same. Expect hash is different. |
| 57 memcpy(src_a + kMaxTest / 2, src_b + kMaxTest / 2, kMaxTest / 2); | 57 memcpy(src_a + kMaxTest / 2, src_b + kMaxTest / 2, kMaxTest / 2); |
| 58 h1 = HashDjb2(src_a, kMaxTest, 5381); | 58 h1 = HashDjb2(src_a, kMaxTest, 5381); |
| 59 h2 = HashDjb2(src_b, kMaxTest, 5381); | 59 h2 = HashDjb2(src_b, kMaxTest, 5381); |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 249 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 250 | 250 |
| 251 EXPECT_EQ(err, kMaxWidth); | 251 EXPECT_EQ(err, kMaxWidth); |
| 252 | 252 |
| 253 memset(src_a, 190, kMaxWidth); | 253 memset(src_a, 190, kMaxWidth); |
| 254 memset(src_b, 193, kMaxWidth); | 254 memset(src_b, 193, kMaxWidth); |
| 255 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 255 err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 256 | 256 |
| 257 EXPECT_EQ(kMaxWidth * 3 * 3, err); | 257 EXPECT_EQ(kMaxWidth * 3 * 3, err); |
| 258 | 258 |
| 259 srandom(time(NULL)); | |
| 260 | |
| 261 for (int i = 0; i < kMaxWidth; ++i) { | 259 for (int i = 0; i < kMaxWidth; ++i) { |
| 262 src_a[i] = (random() & 0xff); | 260 src_a[i] = (fastrand() & 0xff); |
| 263 src_b[i] = (random() & 0xff); | 261 src_b[i] = (fastrand() & 0xff); |
| 264 } | 262 } |
| 265 | 263 |
| 266 MaskCpuFlags(disable_cpu_flags_); | 264 MaskCpuFlags(disable_cpu_flags_); |
| 267 uint64 c_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 265 uint64 c_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 268 | 266 |
| 269 MaskCpuFlags(-1); | 267 MaskCpuFlags(-1); |
| 270 uint64 opt_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); | 268 uint64 opt_err = ComputeSumSquareError(src_a, src_b, kMaxWidth); |
| 271 | 269 |
| 272 EXPECT_EQ(c_err, opt_err); | 270 EXPECT_EQ(c_err, opt_err); |
| 273 | 271 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 | 364 |
| 367 err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride, | 365 err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride, |
| 368 src_b + kSrcStride * b + b, kSrcStride, | 366 src_b + kSrcStride * b + b, kSrcStride, |
| 369 kSrcWidth, kSrcHeight); | 367 kSrcWidth, kSrcHeight); |
| 370 | 368 |
| 371 EXPECT_GT(err, 2.0); | 369 EXPECT_GT(err, 2.0); |
| 372 if (kSrcWidth * kSrcHeight >= 256) { | 370 if (kSrcWidth * kSrcHeight >= 256) { |
| 373 EXPECT_LT(err, 6.0); | 371 EXPECT_LT(err, 6.0); |
| 374 } | 372 } |
| 375 | 373 |
| 376 srandom(time(NULL)); | |
| 377 | |
| 378 memset(src_a, 0, kSrcPlaneSize); | 374 memset(src_a, 0, kSrcPlaneSize); |
| 379 memset(src_b, 0, kSrcPlaneSize); | 375 memset(src_b, 0, kSrcPlaneSize); |
| 380 | 376 |
| 381 for (int i = b; i < (kSrcHeight + b); ++i) { | 377 for (int i = b; i < (kSrcHeight + b); ++i) { |
| 382 for (int j = b; j < (kSrcWidth + b); ++j) { | 378 for (int j = b; j < (kSrcWidth + b); ++j) { |
| 383 src_a[(i * kSrcStride) + j] = (random() & 0xff); | 379 src_a[(i * kSrcStride) + j] = (fastrand() & 0xff); |
| 384 src_b[(i * kSrcStride) + j] = (random() & 0xff); | 380 src_b[(i * kSrcStride) + j] = (fastrand() & 0xff); |
| 385 } | 381 } |
| 386 } | 382 } |
| 387 | 383 |
| 388 MaskCpuFlags(disable_cpu_flags_); | 384 MaskCpuFlags(disable_cpu_flags_); |
| 389 double c_err, opt_err; | 385 double c_err, opt_err; |
| 390 | 386 |
| 391 c_err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride, | 387 c_err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride, |
| 392 src_b + kSrcStride * b + b, kSrcStride, | 388 src_b + kSrcStride * b + b, kSrcStride, |
| 393 kSrcWidth, kSrcHeight); | 389 kSrcWidth, kSrcHeight); |
| 394 | 390 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 | 476 |
| 481 err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride, | 477 err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride, |
| 482 src_b + kSrcStride * b + b, kSrcStride, | 478 src_b + kSrcStride * b + b, kSrcStride, |
| 483 kSrcWidth, kSrcHeight); | 479 kSrcWidth, kSrcHeight); |
| 484 | 480 |
| 485 if (kSrcWidth > 8 && kSrcHeight > 8) { | 481 if (kSrcWidth > 8 && kSrcHeight > 8) { |
| 486 EXPECT_GT(err, 0.0); | 482 EXPECT_GT(err, 0.0); |
| 487 EXPECT_LT(err, 0.01); | 483 EXPECT_LT(err, 0.01); |
| 488 } | 484 } |
| 489 | 485 |
| 490 srandom(time(NULL)); | |
| 491 for (int i = b; i < (kSrcHeight + b); ++i) { | 486 for (int i = b; i < (kSrcHeight + b); ++i) { |
| 492 for (int j = b; j < (kSrcWidth + b); ++j) { | 487 for (int j = b; j < (kSrcWidth + b); ++j) { |
| 493 src_a[(i * kSrcStride) + j] = (random() & 0xff); | 488 src_a[(i * kSrcStride) + j] = (fastrand() & 0xff); |
| 494 src_b[(i * kSrcStride) + j] = (random() & 0xff); | 489 src_b[(i * kSrcStride) + j] = (fastrand() & 0xff); |
| 495 } | 490 } |
| 496 } | 491 } |
| 497 | 492 |
| 498 MaskCpuFlags(disable_cpu_flags_); | 493 MaskCpuFlags(disable_cpu_flags_); |
| 499 double c_err, opt_err; | 494 double c_err, opt_err; |
| 500 | 495 |
| 501 c_err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride, | 496 c_err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride, |
| 502 src_b + kSrcStride * b + b, kSrcStride, | 497 src_b + kSrcStride * b + b, kSrcStride, |
| 503 kSrcWidth, kSrcHeight); | 498 kSrcWidth, kSrcHeight); |
| 504 | 499 |
| 505 MaskCpuFlags(-1); | 500 MaskCpuFlags(-1); |
| 506 | 501 |
| 507 opt_err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride, | 502 opt_err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride, |
| 508 src_b + kSrcStride * b + b, kSrcStride, | 503 src_b + kSrcStride * b + b, kSrcStride, |
| 509 kSrcWidth, kSrcHeight); | 504 kSrcWidth, kSrcHeight); |
| 510 | 505 |
| 511 if (kSrcWidth > 8 && kSrcHeight > 8) { | 506 if (kSrcWidth > 8 && kSrcHeight > 8) { |
| 512 EXPECT_EQ(opt_err, c_err); | 507 EXPECT_EQ(opt_err, c_err); |
| 513 } | 508 } |
| 514 | 509 |
| 515 free_aligned_buffer_64(src_a); | 510 free_aligned_buffer_64(src_a); |
| 516 free_aligned_buffer_64(src_b); | 511 free_aligned_buffer_64(src_b); |
| 517 } | 512 } |
| 518 | 513 |
| 519 } // namespace libyuv | 514 } // namespace libyuv |
| OLD | NEW |