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 |
11 | 11 |
12 #include <string.h> | 12 #include <string.h> |
13 #include <limits.h> | 13 #include <limits.h> |
14 #include <stdio.h> | 14 #include <stdio.h> |
15 | 15 |
16 extern "C" { | 16 extern "C" { |
17 #include "./vpx_config.h" | 17 #include "./vpx_config.h" |
18 #include "./vp8_rtcd.h" | 18 #include "./vp8_rtcd.h" |
19 #include "vp8/common/blockd.h" | 19 #include "vp8/common/blockd.h" |
20 #include "vpx_mem/vpx_mem.h" | 20 #include "vpx_mem/vpx_mem.h" |
21 } | 21 } |
22 | 22 |
23 #include "test/acm_random.h" | 23 #include "test/acm_random.h" |
| 24 #include "test/register_state_check.h" |
24 #include "test/util.h" | 25 #include "test/util.h" |
25 #include "third_party/googletest/src/include/gtest/gtest.h" | 26 #include "third_party/googletest/src/include/gtest/gtest.h" |
26 | 27 |
27 | 28 |
28 typedef unsigned int (*sad_m_by_n_fn_t)(const unsigned char *source_ptr, | 29 typedef unsigned int (*sad_m_by_n_fn_t)(const unsigned char *source_ptr, |
29 int source_stride, | 30 int source_stride, |
30 const unsigned char *reference_ptr, | 31 const unsigned char *reference_ptr, |
31 int reference_stride, | 32 int reference_stride, |
32 unsigned int max_sad); | 33 unsigned int max_sad); |
33 | 34 |
(...skipping 24 matching lines...) Expand all Loading... |
58 sad_fn_ = GET_PARAM(2); | 59 sad_fn_ = GET_PARAM(2); |
59 height_ = GET_PARAM(1); | 60 height_ = GET_PARAM(1); |
60 width_ = GET_PARAM(0); | 61 width_ = GET_PARAM(0); |
61 source_stride_ = width_ * 2; | 62 source_stride_ = width_ * 2; |
62 reference_stride_ = width_ * 2; | 63 reference_stride_ = width_ * 2; |
63 rnd_.Reset(ACMRandom::DeterministicSeed()); | 64 rnd_.Reset(ACMRandom::DeterministicSeed()); |
64 } | 65 } |
65 | 66 |
66 sad_m_by_n_fn_t sad_fn_; | 67 sad_m_by_n_fn_t sad_fn_; |
67 virtual unsigned int SAD(unsigned int max_sad) { | 68 virtual unsigned int SAD(unsigned int max_sad) { |
68 return sad_fn_(source_data_, source_stride_, | 69 unsigned int ret; |
69 reference_data_, reference_stride_, | 70 REGISTER_STATE_CHECK(ret = sad_fn_(source_data_, source_stride_, |
70 max_sad); | 71 reference_data_, reference_stride_, |
| 72 max_sad)); |
| 73 return ret; |
71 } | 74 } |
72 | 75 |
73 // Sum of Absolute Differences. Given two blocks, calculate the absolute | 76 // Sum of Absolute Differences. Given two blocks, calculate the absolute |
74 // difference between two pixels in the same relative location; accumulate. | 77 // difference between two pixels in the same relative location; accumulate. |
75 unsigned int ReferenceSAD(unsigned int max_sad) { | 78 unsigned int ReferenceSAD(unsigned int max_sad) { |
76 unsigned int sad = 0; | 79 unsigned int sad = 0; |
77 | 80 |
78 for (int h = 0; h < height_; ++h) { | 81 for (int h = 0; h < height_; ++h) { |
79 for (int w = 0; w < width_; ++w) { | 82 for (int w = 0; w < width_; ++w) { |
80 sad += abs(source_data_[h * source_stride_ + w] | 83 sad += abs(source_data_[h * source_stride_ + w] |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 make_tuple(8, 8, sad_8x8_wmt), | 244 make_tuple(8, 8, sad_8x8_wmt), |
242 make_tuple(4, 4, sad_4x4_wmt))); | 245 make_tuple(4, 4, sad_4x4_wmt))); |
243 #endif | 246 #endif |
244 #if HAVE_SSSE3 | 247 #if HAVE_SSSE3 |
245 const sad_m_by_n_fn_t sad_16x16_sse3 = vp8_sad16x16_sse3; | 248 const sad_m_by_n_fn_t sad_16x16_sse3 = vp8_sad16x16_sse3; |
246 INSTANTIATE_TEST_CASE_P(SSE3, SADTest, ::testing::Values( | 249 INSTANTIATE_TEST_CASE_P(SSE3, SADTest, ::testing::Values( |
247 make_tuple(16, 16, sad_16x16_sse3))); | 250 make_tuple(16, 16, sad_16x16_sse3))); |
248 #endif | 251 #endif |
249 | 252 |
250 } // namespace | 253 } // namespace |
OLD | NEW |