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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 : public SADTestBase, | 142 : public SADTestBase, |
143 public ::testing::WithParamInterface<sad_n_by_n_by_4_test_param_t> { | 143 public ::testing::WithParamInterface<sad_n_by_n_by_4_test_param_t> { |
144 public: | 144 public: |
145 SADx4Test() : SADTestBase(GET_PARAM(0), GET_PARAM(1)) {} | 145 SADx4Test() : SADTestBase(GET_PARAM(0), GET_PARAM(1)) {} |
146 | 146 |
147 protected: | 147 protected: |
148 void SADs(unsigned int *results) { | 148 void SADs(unsigned int *results) { |
149 const uint8_t* refs[] = {GetReference(0), GetReference(1), | 149 const uint8_t* refs[] = {GetReference(0), GetReference(1), |
150 GetReference(2), GetReference(3)}; | 150 GetReference(2), GetReference(3)}; |
151 | 151 |
152 REGISTER_STATE_CHECK(GET_PARAM(2)(source_data_, source_stride_, | 152 ASM_REGISTER_STATE_CHECK(GET_PARAM(2)(source_data_, source_stride_, |
153 refs, reference_stride_, | 153 refs, reference_stride_, |
154 results)); | 154 results)); |
155 } | 155 } |
156 | 156 |
157 void CheckSADs() { | 157 void CheckSADs() { |
158 unsigned int reference_sad, exp_sad[4]; | 158 unsigned int reference_sad, exp_sad[4]; |
159 | 159 |
160 SADs(exp_sad); | 160 SADs(exp_sad); |
161 for (int block = 0; block < 4; ++block) { | 161 for (int block = 0; block < 4; ++block) { |
162 reference_sad = ReferenceSAD(UINT_MAX, block); | 162 reference_sad = ReferenceSAD(UINT_MAX, block); |
163 | 163 |
164 EXPECT_EQ(reference_sad, exp_sad[block]) << "block " << block; | 164 EXPECT_EQ(reference_sad, exp_sad[block]) << "block " << block; |
165 } | 165 } |
166 } | 166 } |
167 }; | 167 }; |
168 | 168 |
169 #if CONFIG_VP8_ENCODER | 169 #if CONFIG_VP8_ENCODER |
170 class SADTest | 170 class SADTest |
171 : public SADTestBase, | 171 : public SADTestBase, |
172 public ::testing::WithParamInterface<sad_m_by_n_test_param_t> { | 172 public ::testing::WithParamInterface<sad_m_by_n_test_param_t> { |
173 public: | 173 public: |
174 SADTest() : SADTestBase(GET_PARAM(0), GET_PARAM(1)) {} | 174 SADTest() : SADTestBase(GET_PARAM(0), GET_PARAM(1)) {} |
175 | 175 |
176 protected: | 176 protected: |
177 unsigned int SAD(unsigned int max_sad, int block_idx) { | 177 unsigned int SAD(unsigned int max_sad, int block_idx) { |
178 unsigned int ret; | 178 unsigned int ret; |
179 const uint8_t* const reference = GetReference(block_idx); | 179 const uint8_t* const reference = GetReference(block_idx); |
180 | 180 |
181 REGISTER_STATE_CHECK(ret = GET_PARAM(2)(source_data_, source_stride_, | 181 ASM_REGISTER_STATE_CHECK(ret = GET_PARAM(2)(source_data_, source_stride_, |
182 reference, reference_stride_, | 182 reference, reference_stride_, |
183 max_sad)); | 183 max_sad)); |
184 return ret; | 184 return ret; |
185 } | 185 } |
186 | 186 |
187 void CheckSAD(unsigned int max_sad) { | 187 void CheckSAD(unsigned int max_sad) { |
188 const unsigned int reference_sad = ReferenceSAD(max_sad, 0); | 188 const unsigned int reference_sad = ReferenceSAD(max_sad, 0); |
189 const unsigned int exp_sad = SAD(max_sad, 0); | 189 const unsigned int exp_sad = SAD(max_sad, 0); |
190 | 190 |
191 if (reference_sad <= max_sad) { | 191 if (reference_sad <= max_sad) { |
192 ASSERT_EQ(exp_sad, reference_sad); | 192 ASSERT_EQ(exp_sad, reference_sad); |
193 } else { | 193 } else { |
194 // Alternative implementations are not required to check max_sad | 194 // Alternative implementations are not required to check max_sad |
195 ASSERT_GE(exp_sad, reference_sad); | 195 ASSERT_GE(exp_sad, reference_sad); |
196 } | 196 } |
197 } | 197 } |
198 }; | 198 }; |
199 #endif // CONFIG_VP8_ENCODER | 199 #endif // CONFIG_VP8_ENCODER |
200 | 200 |
201 #if CONFIG_VP9_ENCODER | 201 #if CONFIG_VP9_ENCODER |
202 class SADVP9Test | 202 class SADVP9Test |
203 : public SADTestBase, | 203 : public SADTestBase, |
204 public ::testing::WithParamInterface<sad_m_by_n_test_param_vp9_t> { | 204 public ::testing::WithParamInterface<sad_m_by_n_test_param_vp9_t> { |
205 public: | 205 public: |
206 SADVP9Test() : SADTestBase(GET_PARAM(0), GET_PARAM(1)) {} | 206 SADVP9Test() : SADTestBase(GET_PARAM(0), GET_PARAM(1)) {} |
207 | 207 |
208 protected: | 208 protected: |
209 unsigned int SAD(int block_idx) { | 209 unsigned int SAD(int block_idx) { |
210 unsigned int ret; | 210 unsigned int ret; |
211 const uint8_t* const reference = GetReference(block_idx); | 211 const uint8_t* const reference = GetReference(block_idx); |
212 | 212 |
213 REGISTER_STATE_CHECK(ret = GET_PARAM(2)(source_data_, source_stride_, | 213 ASM_REGISTER_STATE_CHECK(ret = GET_PARAM(2)(source_data_, source_stride_, |
214 reference, reference_stride_)); | 214 reference, reference_stride_)); |
215 return ret; | 215 return ret; |
216 } | 216 } |
217 | 217 |
218 void CheckSAD() { | 218 void CheckSAD() { |
219 const unsigned int reference_sad = ReferenceSAD(UINT_MAX, 0); | 219 const unsigned int reference_sad = ReferenceSAD(UINT_MAX, 0); |
220 const unsigned int exp_sad = SAD(0); | 220 const unsigned int exp_sad = SAD(0); |
221 | 221 |
222 ASSERT_EQ(reference_sad, exp_sad); | 222 ASSERT_EQ(reference_sad, exp_sad); |
223 } | 223 } |
224 }; | 224 }; |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 } | 641 } |
642 const sad_n_by_n_by_4_fn_t sad_64x64x4d_avx2 = vp9_sad64x64x4d_avx2; | 642 const sad_n_by_n_by_4_fn_t sad_64x64x4d_avx2 = vp9_sad64x64x4d_avx2; |
643 const sad_n_by_n_by_4_fn_t sad_32x32x4d_avx2 = vp9_sad32x32x4d_avx2; | 643 const sad_n_by_n_by_4_fn_t sad_32x32x4d_avx2 = vp9_sad32x32x4d_avx2; |
644 INSTANTIATE_TEST_CASE_P(DISABLED_AVX2, SADx4Test, ::testing::Values( | 644 INSTANTIATE_TEST_CASE_P(DISABLED_AVX2, SADx4Test, ::testing::Values( |
645 make_tuple(32, 32, sad_32x32x4d_avx2), | 645 make_tuple(32, 32, sad_32x32x4d_avx2), |
646 make_tuple(64, 64, sad_64x64x4d_avx2))); | 646 make_tuple(64, 64, sad_64x64x4d_avx2))); |
647 #endif // CONFIG_VP9_ENCODER | 647 #endif // CONFIG_VP9_ENCODER |
648 #endif // HAVE_AVX2 | 648 #endif // HAVE_AVX2 |
649 | 649 |
650 } // namespace | 650 } // namespace |
OLD | NEW |