| 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 #include <stdlib.h> | 10 #include <stdlib.h> |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 virtual void SetUp() { | 83 virtual void SetUp() { |
| 84 const tuple<int, int, VarianceFunctionType>& params = this->GetParam(); | 84 const tuple<int, int, VarianceFunctionType>& params = this->GetParam(); |
| 85 log2width_ = get<0>(params); | 85 log2width_ = get<0>(params); |
| 86 width_ = 1 << log2width_; | 86 width_ = 1 << log2width_; |
| 87 log2height_ = get<1>(params); | 87 log2height_ = get<1>(params); |
| 88 height_ = 1 << log2height_; | 88 height_ = 1 << log2height_; |
| 89 variance_ = get<2>(params); | 89 variance_ = get<2>(params); |
| 90 | 90 |
| 91 rnd(ACMRandom::DeterministicSeed()); | 91 rnd(ACMRandom::DeterministicSeed()); |
| 92 block_size_ = width_ * height_; | 92 block_size_ = width_ * height_; |
| 93 src_ = new uint8_t[block_size_]; | 93 src_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size_)); |
| 94 ref_ = new uint8_t[block_size_]; | 94 ref_ = new uint8_t[block_size_]; |
| 95 ASSERT_TRUE(src_ != NULL); | 95 ASSERT_TRUE(src_ != NULL); |
| 96 ASSERT_TRUE(ref_ != NULL); | 96 ASSERT_TRUE(ref_ != NULL); |
| 97 } | 97 } |
| 98 | 98 |
| 99 virtual void TearDown() { | 99 virtual void TearDown() { |
| 100 delete[] src_; | 100 vpx_free(src_); |
| 101 delete[] ref_; | 101 delete[] ref_; |
| 102 libvpx_test::ClearSystemState(); | 102 libvpx_test::ClearSystemState(); |
| 103 } | 103 } |
| 104 | 104 |
| 105 protected: | 105 protected: |
| 106 void ZeroTest(); | 106 void ZeroTest(); |
| 107 void RefTest(); | 107 void RefTest(); |
| 108 void OneQuarterTest(); | 108 void OneQuarterTest(); |
| 109 | 109 |
| 110 ACMRandom rnd; | 110 ACMRandom rnd; |
| (...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 make_tuple(4, 5, subpel_avg_variance16x32_ssse3), | 700 make_tuple(4, 5, subpel_avg_variance16x32_ssse3), |
| 701 make_tuple(5, 4, subpel_avg_variance32x16_ssse3), | 701 make_tuple(5, 4, subpel_avg_variance32x16_ssse3), |
| 702 make_tuple(5, 5, subpel_avg_variance32x32_ssse3), | 702 make_tuple(5, 5, subpel_avg_variance32x32_ssse3), |
| 703 make_tuple(5, 6, subpel_avg_variance32x64_ssse3), | 703 make_tuple(5, 6, subpel_avg_variance32x64_ssse3), |
| 704 make_tuple(6, 5, subpel_avg_variance64x32_ssse3), | 704 make_tuple(6, 5, subpel_avg_variance64x32_ssse3), |
| 705 make_tuple(6, 6, subpel_avg_variance64x64_ssse3))); | 705 make_tuple(6, 6, subpel_avg_variance64x64_ssse3))); |
| 706 #endif | 706 #endif |
| 707 #endif | 707 #endif |
| 708 | 708 |
| 709 #if HAVE_AVX2 | 709 #if HAVE_AVX2 |
| 710 // TODO(jzern): these prototypes can be removed after the avx2 versions are | 710 |
| 711 // reenabled in vp9_rtcd_defs.pl. | |
| 712 extern "C" { | |
| 713 unsigned int vp9_sub_pixel_variance32x32_avx2( | |
| 714 const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, | |
| 715 const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); | |
| 716 unsigned int vp9_sub_pixel_variance64x64_avx2( | |
| 717 const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, | |
| 718 const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); | |
| 719 unsigned int vp9_sub_pixel_avg_variance32x32_avx2( | |
| 720 const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, | |
| 721 const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, | |
| 722 const uint8_t *second_pred); | |
| 723 unsigned int vp9_sub_pixel_avg_variance64x64_avx2( | |
| 724 const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, | |
| 725 const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, | |
| 726 const uint8_t *second_pred); | |
| 727 } | |
| 728 const vp9_variance_fn_t variance16x16_avx2 = vp9_variance16x16_avx2; | 711 const vp9_variance_fn_t variance16x16_avx2 = vp9_variance16x16_avx2; |
| 729 const vp9_variance_fn_t variance32x16_avx2 = vp9_variance32x16_avx2; | 712 const vp9_variance_fn_t variance32x16_avx2 = vp9_variance32x16_avx2; |
| 730 const vp9_variance_fn_t variance32x32_avx2 = vp9_variance32x32_avx2; | 713 const vp9_variance_fn_t variance32x32_avx2 = vp9_variance32x32_avx2; |
| 731 const vp9_variance_fn_t variance64x32_avx2 = vp9_variance64x32_avx2; | 714 const vp9_variance_fn_t variance64x32_avx2 = vp9_variance64x32_avx2; |
| 732 const vp9_variance_fn_t variance64x64_avx2 = vp9_variance64x64_avx2; | 715 const vp9_variance_fn_t variance64x64_avx2 = vp9_variance64x64_avx2; |
| 733 INSTANTIATE_TEST_CASE_P( | 716 INSTANTIATE_TEST_CASE_P( |
| 734 AVX2, VP9VarianceTest, | 717 AVX2, VP9VarianceTest, |
| 735 ::testing::Values(make_tuple(4, 4, variance16x16_avx2), | 718 ::testing::Values(make_tuple(4, 4, variance16x16_avx2), |
| 736 make_tuple(5, 4, variance32x16_avx2), | 719 make_tuple(5, 4, variance32x16_avx2), |
| 737 make_tuple(5, 5, variance32x32_avx2), | 720 make_tuple(5, 5, variance32x32_avx2), |
| 738 make_tuple(6, 5, variance64x32_avx2), | 721 make_tuple(6, 5, variance64x32_avx2), |
| 739 make_tuple(6, 6, variance64x64_avx2))); | 722 make_tuple(6, 6, variance64x64_avx2))); |
| 740 | 723 |
| 741 const vp9_subpixvariance_fn_t subpel_variance32x32_avx2 = | 724 const vp9_subpixvariance_fn_t subpel_variance32x32_avx2 = |
| 742 vp9_sub_pixel_variance32x32_avx2; | 725 vp9_sub_pixel_variance32x32_avx2; |
| 743 const vp9_subpixvariance_fn_t subpel_variance64x64_avx2 = | 726 const vp9_subpixvariance_fn_t subpel_variance64x64_avx2 = |
| 744 vp9_sub_pixel_variance64x64_avx2; | 727 vp9_sub_pixel_variance64x64_avx2; |
| 745 INSTANTIATE_TEST_CASE_P( | 728 INSTANTIATE_TEST_CASE_P( |
| 746 DISABLED_AVX2, VP9SubpelVarianceTest, | 729 AVX2, VP9SubpelVarianceTest, |
| 747 ::testing::Values(make_tuple(5, 5, subpel_variance32x32_avx2), | 730 ::testing::Values(make_tuple(5, 5, subpel_variance32x32_avx2), |
| 748 make_tuple(6, 6, subpel_variance64x64_avx2))); | 731 make_tuple(6, 6, subpel_variance64x64_avx2))); |
| 749 | 732 |
| 750 const vp9_subp_avg_variance_fn_t subpel_avg_variance32x32_avx2 = | 733 const vp9_subp_avg_variance_fn_t subpel_avg_variance32x32_avx2 = |
| 751 vp9_sub_pixel_avg_variance32x32_avx2; | 734 vp9_sub_pixel_avg_variance32x32_avx2; |
| 752 const vp9_subp_avg_variance_fn_t subpel_avg_variance64x64_avx2 = | 735 const vp9_subp_avg_variance_fn_t subpel_avg_variance64x64_avx2 = |
| 753 vp9_sub_pixel_avg_variance64x64_avx2; | 736 vp9_sub_pixel_avg_variance64x64_avx2; |
| 754 INSTANTIATE_TEST_CASE_P( | 737 INSTANTIATE_TEST_CASE_P( |
| 755 DISABLED_AVX2, VP9SubpelAvgVarianceTest, | 738 AVX2, VP9SubpelAvgVarianceTest, |
| 756 ::testing::Values(make_tuple(5, 5, subpel_avg_variance32x32_avx2), | 739 ::testing::Values(make_tuple(5, 5, subpel_avg_variance32x32_avx2), |
| 757 make_tuple(6, 6, subpel_avg_variance64x64_avx2))); | 740 make_tuple(6, 6, subpel_avg_variance64x64_avx2))); |
| 758 #endif // HAVE_AVX2 | 741 #endif // HAVE_AVX2 |
| 742 #if HAVE_NEON |
| 743 const vp9_variance_fn_t variance8x8_neon = vp9_variance8x8_neon; |
| 744 const vp9_variance_fn_t variance16x16_neon = vp9_variance16x16_neon; |
| 745 const vp9_variance_fn_t variance32x32_neon = vp9_variance32x32_neon; |
| 746 INSTANTIATE_TEST_CASE_P( |
| 747 NEON, VP9VarianceTest, |
| 748 ::testing::Values(make_tuple(3, 3, variance8x8_neon), |
| 749 make_tuple(4, 4, variance16x16_neon), |
| 750 make_tuple(5, 5, variance32x32_neon))); |
| 751 |
| 752 const vp9_subpixvariance_fn_t subpel_variance8x8_neon = |
| 753 vp9_sub_pixel_variance8x8_neon; |
| 754 const vp9_subpixvariance_fn_t subpel_variance16x16_neon = |
| 755 vp9_sub_pixel_variance16x16_neon; |
| 756 const vp9_subpixvariance_fn_t subpel_variance32x32_neon = |
| 757 vp9_sub_pixel_variance32x32_neon; |
| 758 INSTANTIATE_TEST_CASE_P( |
| 759 NEON, VP9SubpelVarianceTest, |
| 760 ::testing::Values(make_tuple(3, 3, subpel_variance8x8_neon), |
| 761 make_tuple(4, 4, subpel_variance16x16_neon), |
| 762 make_tuple(5, 5, subpel_variance32x32_neon))); |
| 763 #endif // HAVE_NEON |
| 759 #endif // CONFIG_VP9_ENCODER | 764 #endif // CONFIG_VP9_ENCODER |
| 760 | 765 |
| 761 } // namespace vp9 | 766 } // namespace vp9 |
| 762 | 767 |
| 763 } // namespace | 768 } // namespace |
| OLD | NEW |