| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // MSVC++ requires this to be set before any other includes to get M_PI. | 5 // MSVC++ requires this to be set before any other includes to get M_PI. |
| 6 #define _USE_MATH_DEFINES | 6 #define _USE_MATH_DEFINES |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "base/cpu.h" | |
| 10 #include "base/memory/aligned_memory.h" | 9 #include "base/memory/aligned_memory.h" |
| 11 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/strings/stringize_macros.h" | 12 #include "base/strings/stringize_macros.h" |
| 14 #include "media/base/vector_math.h" | 13 #include "media/base/vector_math.h" |
| 15 #include "media/base/vector_math_testing.h" | 14 #include "media/base/vector_math_testing.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 17 | 16 |
| 18 using std::fill; | 17 using std::fill; |
| 19 | 18 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 { | 68 { |
| 70 SCOPED_TRACE("FMAC_C"); | 69 SCOPED_TRACE("FMAC_C"); |
| 71 FillTestVectors(kInputFillValue, kOutputFillValue); | 70 FillTestVectors(kInputFillValue, kOutputFillValue); |
| 72 vector_math::FMAC_C( | 71 vector_math::FMAC_C( |
| 73 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); | 72 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); |
| 74 VerifyOutput(kResult); | 73 VerifyOutput(kResult); |
| 75 } | 74 } |
| 76 | 75 |
| 77 #if defined(ARCH_CPU_X86_FAMILY) | 76 #if defined(ARCH_CPU_X86_FAMILY) |
| 78 { | 77 { |
| 79 ASSERT_TRUE(base::CPU().has_sse()); | |
| 80 SCOPED_TRACE("FMAC_SSE"); | 78 SCOPED_TRACE("FMAC_SSE"); |
| 81 FillTestVectors(kInputFillValue, kOutputFillValue); | 79 FillTestVectors(kInputFillValue, kOutputFillValue); |
| 82 vector_math::FMAC_SSE( | 80 vector_math::FMAC_SSE( |
| 83 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); | 81 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); |
| 84 VerifyOutput(kResult); | 82 VerifyOutput(kResult); |
| 85 } | 83 } |
| 86 #endif | 84 #endif |
| 87 | 85 |
| 88 #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) | 86 #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
| 89 { | 87 { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 111 { | 109 { |
| 112 SCOPED_TRACE("FMUL_C"); | 110 SCOPED_TRACE("FMUL_C"); |
| 113 FillTestVectors(kInputFillValue, kOutputFillValue); | 111 FillTestVectors(kInputFillValue, kOutputFillValue); |
| 114 vector_math::FMUL_C( | 112 vector_math::FMUL_C( |
| 115 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); | 113 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); |
| 116 VerifyOutput(kResult); | 114 VerifyOutput(kResult); |
| 117 } | 115 } |
| 118 | 116 |
| 119 #if defined(ARCH_CPU_X86_FAMILY) | 117 #if defined(ARCH_CPU_X86_FAMILY) |
| 120 { | 118 { |
| 121 ASSERT_TRUE(base::CPU().has_sse()); | |
| 122 SCOPED_TRACE("FMUL_SSE"); | 119 SCOPED_TRACE("FMUL_SSE"); |
| 123 FillTestVectors(kInputFillValue, kOutputFillValue); | 120 FillTestVectors(kInputFillValue, kOutputFillValue); |
| 124 vector_math::FMUL_SSE( | 121 vector_math::FMUL_SSE( |
| 125 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); | 122 input_vector_.get(), kScale, kVectorSize, output_vector_.get()); |
| 126 VerifyOutput(kResult); | 123 VerifyOutput(kResult); |
| 127 } | 124 } |
| 128 #endif | 125 #endif |
| 129 | 126 |
| 130 #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) | 127 #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
| 131 { | 128 { |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 { | 217 { |
| 221 SCOPED_TRACE("EWMAAndMaxPower_C"); | 218 SCOPED_TRACE("EWMAAndMaxPower_C"); |
| 222 const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_C( | 219 const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_C( |
| 223 initial_value_, data_.get(), data_len_, smoothing_factor_); | 220 initial_value_, data_.get(), data_len_, smoothing_factor_); |
| 224 EXPECT_NEAR(expected_final_avg_, result.first, 0.0000001f); | 221 EXPECT_NEAR(expected_final_avg_, result.first, 0.0000001f); |
| 225 EXPECT_NEAR(expected_max_, result.second, 0.0000001f); | 222 EXPECT_NEAR(expected_max_, result.second, 0.0000001f); |
| 226 } | 223 } |
| 227 | 224 |
| 228 #if defined(ARCH_CPU_X86_FAMILY) | 225 #if defined(ARCH_CPU_X86_FAMILY) |
| 229 { | 226 { |
| 230 ASSERT_TRUE(base::CPU().has_sse()); | |
| 231 SCOPED_TRACE("EWMAAndMaxPower_SSE"); | 227 SCOPED_TRACE("EWMAAndMaxPower_SSE"); |
| 232 const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE( | 228 const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE( |
| 233 initial_value_, data_.get(), data_len_, smoothing_factor_); | 229 initial_value_, data_.get(), data_len_, smoothing_factor_); |
| 234 EXPECT_NEAR(expected_final_avg_, result.first, 0.0000001f); | 230 EXPECT_NEAR(expected_final_avg_, result.first, 0.0000001f); |
| 235 EXPECT_NEAR(expected_max_, result.second, 0.0000001f); | 231 EXPECT_NEAR(expected_max_, result.second, 0.0000001f); |
| 236 } | 232 } |
| 237 #endif | 233 #endif |
| 238 | 234 |
| 239 #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) | 235 #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON) |
| 240 { | 236 { |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 .HasExpectedResult(0.00017858f, 4.0f), | 378 .HasExpectedResult(0.00017858f, 4.0f), |
| 383 EWMATestScenario(0.0f, kZeros, 32, 0.25f) | 379 EWMATestScenario(0.0f, kZeros, 32, 0.25f) |
| 384 .WithImpulse(2.0f, 2) | 380 .WithImpulse(2.0f, 2) |
| 385 .HasExpectedResult(0.00023811f, 4.0f), | 381 .HasExpectedResult(0.00023811f, 4.0f), |
| 386 EWMATestScenario(0.0f, kZeros, 32, 0.25f) | 382 EWMATestScenario(0.0f, kZeros, 32, 0.25f) |
| 387 .WithImpulse(2.0f, 3) | 383 .WithImpulse(2.0f, 3) |
| 388 .HasExpectedResult(0.00031748f, 4.0f) | 384 .HasExpectedResult(0.00031748f, 4.0f) |
| 389 )); | 385 )); |
| 390 | 386 |
| 391 } // namespace media | 387 } // namespace media |
| OLD | NEW |