| 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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 }; | 117 }; |
| 118 | 118 |
| 119 template<typename VarianceFunctionType> | 119 template<typename VarianceFunctionType> |
| 120 void VarianceTest<VarianceFunctionType>::ZeroTest() { | 120 void VarianceTest<VarianceFunctionType>::ZeroTest() { |
| 121 for (int i = 0; i <= 255; ++i) { | 121 for (int i = 0; i <= 255; ++i) { |
| 122 memset(src_, i, block_size_); | 122 memset(src_, i, block_size_); |
| 123 for (int j = 0; j <= 255; ++j) { | 123 for (int j = 0; j <= 255; ++j) { |
| 124 memset(ref_, j, block_size_); | 124 memset(ref_, j, block_size_); |
| 125 unsigned int sse; | 125 unsigned int sse; |
| 126 unsigned int var; | 126 unsigned int var; |
| 127 REGISTER_STATE_CHECK(var = variance_(src_, width_, ref_, width_, &sse)); | 127 ASM_REGISTER_STATE_CHECK( |
| 128 var = variance_(src_, width_, ref_, width_, &sse)); |
| 128 EXPECT_EQ(0u, var) << "src values: " << i << "ref values: " << j; | 129 EXPECT_EQ(0u, var) << "src values: " << i << "ref values: " << j; |
| 129 } | 130 } |
| 130 } | 131 } |
| 131 } | 132 } |
| 132 | 133 |
| 133 template<typename VarianceFunctionType> | 134 template<typename VarianceFunctionType> |
| 134 void VarianceTest<VarianceFunctionType>::RefTest() { | 135 void VarianceTest<VarianceFunctionType>::RefTest() { |
| 135 for (int i = 0; i < 10; ++i) { | 136 for (int i = 0; i < 10; ++i) { |
| 136 for (int j = 0; j < block_size_; j++) { | 137 for (int j = 0; j < block_size_; j++) { |
| 137 src_[j] = rnd.Rand8(); | 138 src_[j] = rnd.Rand8(); |
| 138 ref_[j] = rnd.Rand8(); | 139 ref_[j] = rnd.Rand8(); |
| 139 } | 140 } |
| 140 unsigned int sse1, sse2; | 141 unsigned int sse1, sse2; |
| 141 unsigned int var1; | 142 unsigned int var1; |
| 142 REGISTER_STATE_CHECK(var1 = variance_(src_, width_, ref_, width_, &sse1)); | 143 ASM_REGISTER_STATE_CHECK( |
| 144 var1 = variance_(src_, width_, ref_, width_, &sse1)); |
| 143 const unsigned int var2 = variance_ref(src_, ref_, log2width_, | 145 const unsigned int var2 = variance_ref(src_, ref_, log2width_, |
| 144 log2height_, &sse2); | 146 log2height_, &sse2); |
| 145 EXPECT_EQ(sse1, sse2); | 147 EXPECT_EQ(sse1, sse2); |
| 146 EXPECT_EQ(var1, var2); | 148 EXPECT_EQ(var1, var2); |
| 147 } | 149 } |
| 148 } | 150 } |
| 149 | 151 |
| 150 template<typename VarianceFunctionType> | 152 template<typename VarianceFunctionType> |
| 151 void VarianceTest<VarianceFunctionType>::OneQuarterTest() { | 153 void VarianceTest<VarianceFunctionType>::OneQuarterTest() { |
| 152 memset(src_, 255, block_size_); | 154 memset(src_, 255, block_size_); |
| 153 const int half = block_size_ / 2; | 155 const int half = block_size_ / 2; |
| 154 memset(ref_, 255, half); | 156 memset(ref_, 255, half); |
| 155 memset(ref_ + half, 0, half); | 157 memset(ref_ + half, 0, half); |
| 156 unsigned int sse; | 158 unsigned int sse; |
| 157 unsigned int var; | 159 unsigned int var; |
| 158 REGISTER_STATE_CHECK(var = variance_(src_, width_, ref_, width_, &sse)); | 160 ASM_REGISTER_STATE_CHECK(var = variance_(src_, width_, ref_, width_, &sse)); |
| 159 const unsigned int expected = block_size_ * 255 * 255 / 4; | 161 const unsigned int expected = block_size_ * 255 * 255 / 4; |
| 160 EXPECT_EQ(expected, var); | 162 EXPECT_EQ(expected, var); |
| 161 } | 163 } |
| 162 | 164 |
| 163 #if CONFIG_VP9_ENCODER | 165 #if CONFIG_VP9_ENCODER |
| 164 | 166 |
| 165 unsigned int subpel_avg_variance_ref(const uint8_t *ref, | 167 unsigned int subpel_avg_variance_ref(const uint8_t *ref, |
| 166 const uint8_t *src, | 168 const uint8_t *src, |
| 167 const uint8_t *second_pred, | 169 const uint8_t *second_pred, |
| 168 int l2w, int l2h, | 170 int l2w, int l2h, |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 for (int x = 0; x < 16; ++x) { | 241 for (int x = 0; x < 16; ++x) { |
| 240 for (int y = 0; y < 16; ++y) { | 242 for (int y = 0; y < 16; ++y) { |
| 241 for (int j = 0; j < block_size_; j++) { | 243 for (int j = 0; j < block_size_; j++) { |
| 242 src_[j] = rnd.Rand8(); | 244 src_[j] = rnd.Rand8(); |
| 243 } | 245 } |
| 244 for (int j = 0; j < block_size_ + width_ + height_ + 1; j++) { | 246 for (int j = 0; j < block_size_ + width_ + height_ + 1; j++) { |
| 245 ref_[j] = rnd.Rand8(); | 247 ref_[j] = rnd.Rand8(); |
| 246 } | 248 } |
| 247 unsigned int sse1, sse2; | 249 unsigned int sse1, sse2; |
| 248 unsigned int var1; | 250 unsigned int var1; |
| 249 REGISTER_STATE_CHECK(var1 = subpel_variance_(ref_, width_ + 1, x, y, | 251 ASM_REGISTER_STATE_CHECK(var1 = subpel_variance_(ref_, width_ + 1, x, y, |
| 250 src_, width_, &sse1)); | 252 src_, width_, &sse1)); |
| 251 const unsigned int var2 = subpel_variance_ref(ref_, src_, log2width_, | 253 const unsigned int var2 = subpel_variance_ref(ref_, src_, log2width_, |
| 252 log2height_, x, y, &sse2); | 254 log2height_, x, y, &sse2); |
| 253 EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y; | 255 EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y; |
| 254 EXPECT_EQ(var1, var2) << "at position " << x << ", " << y; | 256 EXPECT_EQ(var1, var2) << "at position " << x << ", " << y; |
| 255 } | 257 } |
| 256 } | 258 } |
| 257 } | 259 } |
| 258 | 260 |
| 259 template<> | 261 template<> |
| 260 void SubpelVarianceTest<vp9_subp_avg_variance_fn_t>::RefTest() { | 262 void SubpelVarianceTest<vp9_subp_avg_variance_fn_t>::RefTest() { |
| 261 for (int x = 0; x < 16; ++x) { | 263 for (int x = 0; x < 16; ++x) { |
| 262 for (int y = 0; y < 16; ++y) { | 264 for (int y = 0; y < 16; ++y) { |
| 263 for (int j = 0; j < block_size_; j++) { | 265 for (int j = 0; j < block_size_; j++) { |
| 264 src_[j] = rnd.Rand8(); | 266 src_[j] = rnd.Rand8(); |
| 265 sec_[j] = rnd.Rand8(); | 267 sec_[j] = rnd.Rand8(); |
| 266 } | 268 } |
| 267 for (int j = 0; j < block_size_ + width_ + height_ + 1; j++) { | 269 for (int j = 0; j < block_size_ + width_ + height_ + 1; j++) { |
| 268 ref_[j] = rnd.Rand8(); | 270 ref_[j] = rnd.Rand8(); |
| 269 } | 271 } |
| 270 unsigned int sse1, sse2; | 272 unsigned int sse1, sse2; |
| 271 unsigned int var1; | 273 unsigned int var1; |
| 272 REGISTER_STATE_CHECK(var1 = subpel_variance_(ref_, width_ + 1, x, y, | 274 ASM_REGISTER_STATE_CHECK( |
| 273 src_, width_, &sse1, sec_)); | 275 var1 = subpel_variance_(ref_, width_ + 1, x, y, |
| 276 src_, width_, &sse1, sec_)); |
| 274 const unsigned int var2 = subpel_avg_variance_ref(ref_, src_, sec_, | 277 const unsigned int var2 = subpel_avg_variance_ref(ref_, src_, sec_, |
| 275 log2width_, log2height_, | 278 log2width_, log2height_, |
| 276 x, y, &sse2); | 279 x, y, &sse2); |
| 277 EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y; | 280 EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y; |
| 278 EXPECT_EQ(var1, var2) << "at position " << x << ", " << y; | 281 EXPECT_EQ(var1, var2) << "at position " << x << ", " << y; |
| 279 } | 282 } |
| 280 } | 283 } |
| 281 } | 284 } |
| 282 | 285 |
| 283 #endif // CONFIG_VP9_ENCODER | 286 #endif // CONFIG_VP9_ENCODER |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 INSTANTIATE_TEST_CASE_P( | 754 INSTANTIATE_TEST_CASE_P( |
| 752 DISABLED_AVX2, VP9SubpelAvgVarianceTest, | 755 DISABLED_AVX2, VP9SubpelAvgVarianceTest, |
| 753 ::testing::Values(make_tuple(5, 5, subpel_avg_variance32x32_avx2), | 756 ::testing::Values(make_tuple(5, 5, subpel_avg_variance32x32_avx2), |
| 754 make_tuple(6, 6, subpel_avg_variance64x64_avx2))); | 757 make_tuple(6, 6, subpel_avg_variance64x64_avx2))); |
| 755 #endif // HAVE_AVX2 | 758 #endif // HAVE_AVX2 |
| 756 #endif // CONFIG_VP9_ENCODER | 759 #endif // CONFIG_VP9_ENCODER |
| 757 | 760 |
| 758 } // namespace vp9 | 761 } // namespace vp9 |
| 759 | 762 |
| 760 } // namespace | 763 } // namespace |
| OLD | NEW |