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 |