| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebM 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 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 vp9_fht16x16_c(in, out, stride, tx_type); | 280 vp9_fht16x16_c(in, out, stride, tx_type); |
| 281 } | 281 } |
| 282 | 282 |
| 283 void iht16x16_ref(const tran_low_t *in, uint8_t *dest, int stride, | 283 void iht16x16_ref(const tran_low_t *in, uint8_t *dest, int stride, |
| 284 int tx_type) { | 284 int tx_type) { |
| 285 vp9_iht16x16_256_add_c(in, dest, stride, tx_type); | 285 vp9_iht16x16_256_add_c(in, dest, stride, tx_type); |
| 286 } | 286 } |
| 287 | 287 |
| 288 #if CONFIG_VP9_HIGHBITDEPTH | 288 #if CONFIG_VP9_HIGHBITDEPTH |
| 289 void idct16x16_10(const tran_low_t *in, uint8_t *out, int stride) { | 289 void idct16x16_10(const tran_low_t *in, uint8_t *out, int stride) { |
| 290 vp9_high_idct16x16_256_add_c(in, out, stride, 10); | 290 vp9_highbd_idct16x16_256_add_c(in, out, stride, 10); |
| 291 } | 291 } |
| 292 | 292 |
| 293 void idct16x16_12(const tran_low_t *in, uint8_t *out, int stride) { | 293 void idct16x16_12(const tran_low_t *in, uint8_t *out, int stride) { |
| 294 vp9_high_idct16x16_256_add_c(in, out, stride, 12); | 294 vp9_highbd_idct16x16_256_add_c(in, out, stride, 12); |
| 295 } | 295 } |
| 296 | 296 |
| 297 void idct16x16_10_ref(const tran_low_t *in, uint8_t *out, int stride, | 297 void idct16x16_10_ref(const tran_low_t *in, uint8_t *out, int stride, |
| 298 int tx_type) { | 298 int tx_type) { |
| 299 idct16x16_10(in, out, stride); | 299 idct16x16_10(in, out, stride); |
| 300 } | 300 } |
| 301 | 301 |
| 302 void idct16x16_12_ref(const tran_low_t *in, uint8_t *out, int stride, | 302 void idct16x16_12_ref(const tran_low_t *in, uint8_t *out, int stride, |
| 303 int tx_type) { | 303 int tx_type) { |
| 304 idct16x16_12(in, out, stride); | 304 idct16x16_12(in, out, stride); |
| 305 } | 305 } |
| 306 | 306 |
| 307 void iht16x16_10(const tran_low_t *in, uint8_t *out, int stride, int tx_type) { | 307 void iht16x16_10(const tran_low_t *in, uint8_t *out, int stride, int tx_type) { |
| 308 vp9_high_iht16x16_256_add_c(in, out, stride, tx_type, 10); | 308 vp9_highbd_iht16x16_256_add_c(in, out, stride, tx_type, 10); |
| 309 } | 309 } |
| 310 | 310 |
| 311 void iht16x16_12(const tran_low_t *in, uint8_t *out, int stride, int tx_type) { | 311 void iht16x16_12(const tran_low_t *in, uint8_t *out, int stride, int tx_type) { |
| 312 vp9_high_iht16x16_256_add_c(in, out, stride, tx_type, 12); | 312 vp9_highbd_iht16x16_256_add_c(in, out, stride, tx_type, 12); |
| 313 } | 313 } |
| 314 #endif | 314 #endif |
| 315 | 315 |
| 316 class Trans16x16TestBase { | 316 class Trans16x16TestBase { |
| 317 public: | 317 public: |
| 318 virtual ~Trans16x16TestBase() {} | 318 virtual ~Trans16x16TestBase() {} |
| 319 | 319 |
| 320 protected: | 320 protected: |
| 321 virtual void RunFwdTxfm(int16_t *in, tran_low_t *out, int stride) = 0; | 321 virtual void RunFwdTxfm(int16_t *in, tran_low_t *out, int stride) = 0; |
| 322 | 322 |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 for (int j = 0; j < kNumCoeffs; ++j) { | 436 for (int j = 0; j < kNumCoeffs; ++j) { |
| 437 EXPECT_EQ(output_block[j], output_ref_block[j]); | 437 EXPECT_EQ(output_block[j], output_ref_block[j]); |
| 438 EXPECT_GE(4 * DCT_MAX_VALUE << (bit_depth_ - 8), abs(output_block[j])) | 438 EXPECT_GE(4 * DCT_MAX_VALUE << (bit_depth_ - 8), abs(output_block[j])) |
| 439 << "Error: 16x16 FDCT has coefficient larger than 4*DCT_MAX_VALUE"; | 439 << "Error: 16x16 FDCT has coefficient larger than 4*DCT_MAX_VALUE"; |
| 440 } | 440 } |
| 441 } | 441 } |
| 442 } | 442 } |
| 443 | 443 |
| 444 void RunQuantCheck(int dc_thred, int ac_thred) { | 444 void RunQuantCheck(int dc_thred, int ac_thred) { |
| 445 ACMRandom rnd(ACMRandom::DeterministicSeed()); | 445 ACMRandom rnd(ACMRandom::DeterministicSeed()); |
| 446 const int count_test_block = 1000; | 446 const int count_test_block = 100000; |
| 447 DECLARE_ALIGNED_ARRAY(16, int16_t, input_block, kNumCoeffs); | 447 DECLARE_ALIGNED_ARRAY(16, int16_t, input_block, kNumCoeffs); |
| 448 DECLARE_ALIGNED_ARRAY(16, int16_t, input_extreme_block, kNumCoeffs); | 448 DECLARE_ALIGNED_ARRAY(16, int16_t, input_extreme_block, kNumCoeffs); |
| 449 DECLARE_ALIGNED_ARRAY(16, tran_low_t, output_ref_block, kNumCoeffs); | 449 DECLARE_ALIGNED_ARRAY(16, tran_low_t, output_ref_block, kNumCoeffs); |
| 450 | 450 |
| 451 DECLARE_ALIGNED_ARRAY(16, uint8_t, dst, kNumCoeffs); | 451 DECLARE_ALIGNED_ARRAY(16, uint8_t, dst, kNumCoeffs); |
| 452 DECLARE_ALIGNED_ARRAY(16, uint8_t, ref, kNumCoeffs); | 452 DECLARE_ALIGNED_ARRAY(16, uint8_t, ref, kNumCoeffs); |
| 453 #if CONFIG_VP9_HIGHBITDEPTH | 453 #if CONFIG_VP9_HIGHBITDEPTH |
| 454 DECLARE_ALIGNED_ARRAY(16, uint16_t, dst16, kNumCoeffs); | 454 DECLARE_ALIGNED_ARRAY(16, uint16_t, dst16, kNumCoeffs); |
| 455 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref16, kNumCoeffs); | 455 DECLARE_ALIGNED_ARRAY(16, uint16_t, ref16, kNumCoeffs); |
| 456 #endif | 456 #endif |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 693 RunCoeffCheck(); | 693 RunCoeffCheck(); |
| 694 } | 694 } |
| 695 | 695 |
| 696 TEST_P(Trans16x16HT, MemCheck) { | 696 TEST_P(Trans16x16HT, MemCheck) { |
| 697 RunMemCheck(); | 697 RunMemCheck(); |
| 698 } | 698 } |
| 699 | 699 |
| 700 TEST_P(Trans16x16HT, QuantCheck) { | 700 TEST_P(Trans16x16HT, QuantCheck) { |
| 701 // The encoder skips any non-DC intra prediction modes, | 701 // The encoder skips any non-DC intra prediction modes, |
| 702 // when the quantization step size goes beyond 988. | 702 // when the quantization step size goes beyond 988. |
| 703 RunQuantCheck(549, 988); | 703 RunQuantCheck(429, 729); |
| 704 } | 704 } |
| 705 | 705 |
| 706 using std::tr1::make_tuple; | 706 using std::tr1::make_tuple; |
| 707 | 707 |
| 708 #if CONFIG_VP9_HIGHBITDEPTH | 708 #if CONFIG_VP9_HIGHBITDEPTH |
| 709 INSTANTIATE_TEST_CASE_P( | 709 INSTANTIATE_TEST_CASE_P( |
| 710 C, Trans16x16DCT, | 710 C, Trans16x16DCT, |
| 711 ::testing::Values( | 711 ::testing::Values( |
| 712 make_tuple(&vp9_high_fdct16x16_c, &idct16x16_10, 0, VPX_BITS_10), | 712 make_tuple(&vp9_highbd_fdct16x16_c, &idct16x16_10, 0, VPX_BITS_10), |
| 713 make_tuple(&vp9_high_fdct16x16_c, &idct16x16_12, 0, VPX_BITS_12), | 713 make_tuple(&vp9_highbd_fdct16x16_c, &idct16x16_12, 0, VPX_BITS_12), |
| 714 make_tuple(&vp9_fdct16x16_c, &vp9_idct16x16_256_add_c, 0, VPX_BITS_8))); | 714 make_tuple(&vp9_fdct16x16_c, &vp9_idct16x16_256_add_c, 0, VPX_BITS_8))); |
| 715 #else | 715 #else |
| 716 INSTANTIATE_TEST_CASE_P( | 716 INSTANTIATE_TEST_CASE_P( |
| 717 C, Trans16x16DCT, | 717 C, Trans16x16DCT, |
| 718 ::testing::Values( | 718 ::testing::Values( |
| 719 make_tuple(&vp9_fdct16x16_c, &vp9_idct16x16_256_add_c, 0, VPX_BITS_8))); | 719 make_tuple(&vp9_fdct16x16_c, &vp9_idct16x16_256_add_c, 0, VPX_BITS_8))); |
| 720 #endif | 720 #endif |
| 721 | 721 |
| 722 #if CONFIG_VP9_HIGHBITDEPTH | 722 #if CONFIG_VP9_HIGHBITDEPTH |
| 723 INSTANTIATE_TEST_CASE_P( | 723 INSTANTIATE_TEST_CASE_P( |
| 724 C, Trans16x16HT, | 724 C, Trans16x16HT, |
| 725 ::testing::Values( | 725 ::testing::Values( |
| 726 make_tuple(&vp9_high_fht16x16_c, &iht16x16_10, 0, VPX_BITS_10), | 726 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_10, 0, VPX_BITS_10), |
| 727 make_tuple(&vp9_high_fht16x16_c, &iht16x16_10, 1, VPX_BITS_10), | 727 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_10, 1, VPX_BITS_10), |
| 728 make_tuple(&vp9_high_fht16x16_c, &iht16x16_10, 2, VPX_BITS_10), | 728 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_10, 2, VPX_BITS_10), |
| 729 make_tuple(&vp9_high_fht16x16_c, &iht16x16_10, 3, VPX_BITS_10), | 729 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_10, 3, VPX_BITS_10), |
| 730 make_tuple(&vp9_high_fht16x16_c, &iht16x16_12, 0, VPX_BITS_12), | 730 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_12, 0, VPX_BITS_12), |
| 731 make_tuple(&vp9_high_fht16x16_c, &iht16x16_12, 1, VPX_BITS_12), | 731 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_12, 1, VPX_BITS_12), |
| 732 make_tuple(&vp9_high_fht16x16_c, &iht16x16_12, 2, VPX_BITS_12), | 732 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_12, 2, VPX_BITS_12), |
| 733 make_tuple(&vp9_high_fht16x16_c, &iht16x16_12, 3, VPX_BITS_12), | 733 make_tuple(&vp9_highbd_fht16x16_c, &iht16x16_12, 3, VPX_BITS_12), |
| 734 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 0, VPX_BITS_8), | 734 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 0, VPX_BITS_8), |
| 735 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 1, VPX_BITS_8), | 735 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 1, VPX_BITS_8), |
| 736 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 2, VPX_BITS_8), | 736 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 2, VPX_BITS_8), |
| 737 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 3, VPX_BITS_8))); | 737 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 3, VPX_BITS_8))); |
| 738 #else | 738 #else |
| 739 INSTANTIATE_TEST_CASE_P( | 739 INSTANTIATE_TEST_CASE_P( |
| 740 C, Trans16x16HT, | 740 C, Trans16x16HT, |
| 741 ::testing::Values( | 741 ::testing::Values( |
| 742 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 0, VPX_BITS_8), | 742 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 0, VPX_BITS_8), |
| 743 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 1, VPX_BITS_8), | 743 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 1, VPX_BITS_8), |
| 744 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 2, VPX_BITS_8), | 744 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 2, VPX_BITS_8), |
| 745 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 3, VPX_BITS_8))); | 745 make_tuple(&vp9_fht16x16_c, &vp9_iht16x16_256_add_c, 3, VPX_BITS_8))); |
| 746 #endif | 746 #endif |
| 747 | 747 |
| 748 #if HAVE_NEON_ASM && !CONFIG_VP9_HIGHBITDEPTH | 748 #if HAVE_NEON_ASM && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE |
| 749 INSTANTIATE_TEST_CASE_P( | 749 INSTANTIATE_TEST_CASE_P( |
| 750 NEON, Trans16x16DCT, | 750 NEON, Trans16x16DCT, |
| 751 ::testing::Values( | 751 ::testing::Values( |
| 752 make_tuple(&vp9_fdct16x16_c, | 752 make_tuple(&vp9_fdct16x16_c, |
| 753 &vp9_idct16x16_256_add_neon, 0, VPX_BITS_8))); | 753 &vp9_idct16x16_256_add_neon, 0, VPX_BITS_8))); |
| 754 #endif | 754 #endif |
| 755 | 755 |
| 756 #if HAVE_SSE2 && !CONFIG_VP9_HIGHBITDEPTH | 756 #if HAVE_SSE2 && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE |
| 757 INSTANTIATE_TEST_CASE_P( | 757 INSTANTIATE_TEST_CASE_P( |
| 758 SSE2, Trans16x16DCT, | 758 SSE2, Trans16x16DCT, |
| 759 ::testing::Values( | 759 ::testing::Values( |
| 760 make_tuple(&vp9_fdct16x16_sse2, | 760 make_tuple(&vp9_fdct16x16_sse2, |
| 761 &vp9_idct16x16_256_add_sse2, 0, VPX_BITS_8))); | 761 &vp9_idct16x16_256_add_sse2, 0, VPX_BITS_8))); |
| 762 INSTANTIATE_TEST_CASE_P( | 762 INSTANTIATE_TEST_CASE_P( |
| 763 SSE2, Trans16x16HT, | 763 SSE2, Trans16x16HT, |
| 764 ::testing::Values( | 764 ::testing::Values( |
| 765 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 0, | 765 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 0, |
| 766 VPX_BITS_8), | 766 VPX_BITS_8), |
| 767 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 1, | 767 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 1, |
| 768 VPX_BITS_8), | 768 VPX_BITS_8), |
| 769 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 2, | 769 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 2, |
| 770 VPX_BITS_8), | 770 VPX_BITS_8), |
| 771 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 3, | 771 make_tuple(&vp9_fht16x16_sse2, &vp9_iht16x16_256_add_sse2, 3, |
| 772 VPX_BITS_8))); | 772 VPX_BITS_8))); |
| 773 #endif | 773 #endif |
| 774 | 774 |
| 775 #if HAVE_SSSE3 && !CONFIG_VP9_HIGHBITDEPTH | 775 #if HAVE_SSSE3 && !CONFIG_VP9_HIGHBITDEPTH && !CONFIG_EMULATE_HARDWARE |
| 776 INSTANTIATE_TEST_CASE_P( | 776 INSTANTIATE_TEST_CASE_P( |
| 777 SSSE3, Trans16x16DCT, | 777 SSSE3, Trans16x16DCT, |
| 778 ::testing::Values( | 778 ::testing::Values( |
| 779 make_tuple(&vp9_fdct16x16_c, &vp9_idct16x16_256_add_ssse3, 0, | 779 make_tuple(&vp9_fdct16x16_c, &vp9_idct16x16_256_add_ssse3, 0, |
| 780 VPX_BITS_8))); | 780 VPX_BITS_8))); |
| 781 #endif | 781 #endif |
| 782 } // namespace | 782 } // namespace |
| OLD | NEW |