Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: webrtc/common_audio/resampler/sinc_resampler_unittest.cc

Issue 1888593004: Delete all use of tick_util.h. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC 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 // Modified from the Chromium original: 11 // Modified from the Chromium original:
12 // src/media/base/sinc_resampler_unittest.cc 12 // src/media/base/sinc_resampler_unittest.cc
13 13
14 // MSVC++ requires this to be set before any other includes to get M_PI. 14 // MSVC++ requires this to be set before any other includes to get M_PI.
15 #define _USE_MATH_DEFINES 15 #define _USE_MATH_DEFINES
16 16
17 #include <math.h> 17 #include <math.h>
18 18
19 #include <memory> 19 #include <memory>
20 20
21 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
23 #include "webrtc/base/timeutils.h"
23 #include "webrtc/common_audio/resampler/sinc_resampler.h" 24 #include "webrtc/common_audio/resampler/sinc_resampler.h"
24 #include "webrtc/common_audio/resampler/sinusoidal_linear_chirp_source.h" 25 #include "webrtc/common_audio/resampler/sinusoidal_linear_chirp_source.h"
25 #include "webrtc/system_wrappers/include/cpu_features_wrapper.h" 26 #include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
26 #include "webrtc/system_wrappers/include/stringize_macros.h" 27 #include "webrtc/system_wrappers/include/stringize_macros.h"
27 #include "webrtc/system_wrappers/include/tick_util.h"
28 #include "webrtc/test/test_suite.h" 28 #include "webrtc/test/test_suite.h"
29 29
30 using testing::_; 30 using testing::_;
31 31
32 namespace webrtc { 32 namespace webrtc {
33 33
34 static const double kSampleRateRatio = 192000.0 / 44100.0; 34 static const double kSampleRateRatio = 192000.0 / 44100.0;
35 static const double kKernelInterpolationFactor = 0.5; 35 static const double kKernelInterpolationFactor = 0.5;
36 36
37 // Helper class to ensure ChunkedResample() functions properly. 37 // Helper class to ensure ChunkedResample() functions properly.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 for (size_t i = 0; i < resampler.ChunkSize() / 2; ++i) 100 for (size_t i = 0; i < resampler.ChunkSize() / 2; ++i)
101 ASSERT_FLOAT_EQ(resampled_destination[i], 0); 101 ASSERT_FLOAT_EQ(resampled_destination[i], 0);
102 } 102 }
103 103
104 // Test flush resets the internal state properly. 104 // Test flush resets the internal state properly.
105 TEST(SincResamplerTest, DISABLED_SetRatioBench) { 105 TEST(SincResamplerTest, DISABLED_SetRatioBench) {
106 MockSource mock_source; 106 MockSource mock_source;
107 SincResampler resampler(kSampleRateRatio, SincResampler::kDefaultRequestSize, 107 SincResampler resampler(kSampleRateRatio, SincResampler::kDefaultRequestSize,
108 &mock_source); 108 &mock_source);
109 109
110 TickTime start = TickTime::Now(); 110 int64_t start = rtc::TimeNanos();
111 for (int i = 1; i < 10000; ++i) 111 for (int i = 1; i < 10000; ++i)
112 resampler.SetRatio(1.0 / i); 112 resampler.SetRatio(1.0 / i);
113 double total_time_c_us = (TickTime::Now() - start).Microseconds(); 113 double total_time_c_us =
114 (rtc::TimeNanos() - start) / rtc::kNumNanosecsPerMicrosec;
114 printf("SetRatio() took %.2fms.\n", total_time_c_us / 1000); 115 printf("SetRatio() took %.2fms.\n", total_time_c_us / 1000);
115 } 116 }
116 117
117 118
118 // Define platform independent function name for Convolve* tests. 119 // Define platform independent function name for Convolve* tests.
119 #if defined(WEBRTC_ARCH_X86_FAMILY) 120 #if defined(WEBRTC_ARCH_X86_FAMILY)
120 #define CONVOLVE_FUNC Convolve_SSE 121 #define CONVOLVE_FUNC Convolve_SSE
121 #elif defined(WEBRTC_ARCH_ARM_V7) 122 #elif defined(WEBRTC_ARCH_ARM_V7)
122 #define CONVOLVE_FUNC Convolve_NEON 123 #define CONVOLVE_FUNC Convolve_NEON
123 #endif 124 #endif
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 SincResampler resampler(kSampleRateRatio, SincResampler::kDefaultRequestSize, 173 SincResampler resampler(kSampleRateRatio, SincResampler::kDefaultRequestSize,
173 &mock_source); 174 &mock_source);
174 175
175 // Retrieve benchmark iterations from command line. 176 // Retrieve benchmark iterations from command line.
176 // TODO(ajm): Reintroduce this as a command line option. 177 // TODO(ajm): Reintroduce this as a command line option.
177 const int kConvolveIterations = 1000000; 178 const int kConvolveIterations = 1000000;
178 179
179 printf("Benchmarking %d iterations:\n", kConvolveIterations); 180 printf("Benchmarking %d iterations:\n", kConvolveIterations);
180 181
181 // Benchmark Convolve_C(). 182 // Benchmark Convolve_C().
182 TickTime start = TickTime::Now(); 183 int64_t start = rtc::TimeNanos();
183 for (int i = 0; i < kConvolveIterations; ++i) { 184 for (int i = 0; i < kConvolveIterations; ++i) {
184 resampler.Convolve_C( 185 resampler.Convolve_C(
185 resampler.kernel_storage_.get(), resampler.kernel_storage_.get(), 186 resampler.kernel_storage_.get(), resampler.kernel_storage_.get(),
186 resampler.kernel_storage_.get(), kKernelInterpolationFactor); 187 resampler.kernel_storage_.get(), kKernelInterpolationFactor);
187 } 188 }
188 double total_time_c_us = (TickTime::Now() - start).Microseconds(); 189 double total_time_c_us =
190 (rtc::TimeNanos() - start) / rtc::kNumNanosecsPerMicrosec;
189 printf("Convolve_C took %.2fms.\n", total_time_c_us / 1000); 191 printf("Convolve_C took %.2fms.\n", total_time_c_us / 1000);
190 192
191 #if defined(CONVOLVE_FUNC) 193 #if defined(CONVOLVE_FUNC)
192 #if defined(WEBRTC_ARCH_X86_FAMILY) 194 #if defined(WEBRTC_ARCH_X86_FAMILY)
193 ASSERT_TRUE(WebRtc_GetCPUInfo(kSSE2)); 195 ASSERT_TRUE(WebRtc_GetCPUInfo(kSSE2));
194 #elif defined(WEBRTC_ARCH_ARM_V7) 196 #elif defined(WEBRTC_ARCH_ARM_V7)
195 ASSERT_TRUE(WebRtc_GetCPUFeaturesARM() & kCPUFeatureNEON); 197 ASSERT_TRUE(WebRtc_GetCPUFeaturesARM() & kCPUFeatureNEON);
196 #endif 198 #endif
197 199
198 // Benchmark with unaligned input pointer. 200 // Benchmark with unaligned input pointer.
199 start = TickTime::Now(); 201 start = rtc::TimeNanos();
200 for (int j = 0; j < kConvolveIterations; ++j) { 202 for (int j = 0; j < kConvolveIterations; ++j) {
201 resampler.CONVOLVE_FUNC( 203 resampler.CONVOLVE_FUNC(
202 resampler.kernel_storage_.get() + 1, resampler.kernel_storage_.get(), 204 resampler.kernel_storage_.get() + 1, resampler.kernel_storage_.get(),
203 resampler.kernel_storage_.get(), kKernelInterpolationFactor); 205 resampler.kernel_storage_.get(), kKernelInterpolationFactor);
204 } 206 }
205 double total_time_optimized_unaligned_us = 207 double total_time_optimized_unaligned_us =
206 (TickTime::Now() - start).Microseconds(); 208 (rtc::TimeNanos() - start) / rtc::kNumNanosecsPerMicrosec;
207 printf(STRINGIZE(CONVOLVE_FUNC) "(unaligned) took %.2fms; which is %.2fx " 209 printf(STRINGIZE(CONVOLVE_FUNC) "(unaligned) took %.2fms; which is %.2fx "
208 "faster than Convolve_C.\n", total_time_optimized_unaligned_us / 1000, 210 "faster than Convolve_C.\n", total_time_optimized_unaligned_us / 1000,
209 total_time_c_us / total_time_optimized_unaligned_us); 211 total_time_c_us / total_time_optimized_unaligned_us);
210 212
211 // Benchmark with aligned input pointer. 213 // Benchmark with aligned input pointer.
212 start = TickTime::Now(); 214 start = rtc::TimeNanos();
213 for (int j = 0; j < kConvolveIterations; ++j) { 215 for (int j = 0; j < kConvolveIterations; ++j) {
214 resampler.CONVOLVE_FUNC( 216 resampler.CONVOLVE_FUNC(
215 resampler.kernel_storage_.get(), resampler.kernel_storage_.get(), 217 resampler.kernel_storage_.get(), resampler.kernel_storage_.get(),
216 resampler.kernel_storage_.get(), kKernelInterpolationFactor); 218 resampler.kernel_storage_.get(), kKernelInterpolationFactor);
217 } 219 }
218 double total_time_optimized_aligned_us = 220 double total_time_optimized_aligned_us =
219 (TickTime::Now() - start).Microseconds(); 221 (rtc::TimeNanos() - start) / rtc::kNumNanosecsPerMicrosec;
220 printf(STRINGIZE(CONVOLVE_FUNC) " (aligned) took %.2fms; which is %.2fx " 222 printf(STRINGIZE(CONVOLVE_FUNC) " (aligned) took %.2fms; which is %.2fx "
221 "faster than Convolve_C and %.2fx faster than " 223 "faster than Convolve_C and %.2fx faster than "
222 STRINGIZE(CONVOLVE_FUNC) " (unaligned).\n", 224 STRINGIZE(CONVOLVE_FUNC) " (unaligned).\n",
223 total_time_optimized_aligned_us / 1000, 225 total_time_optimized_aligned_us / 1000,
224 total_time_c_us / total_time_optimized_aligned_us, 226 total_time_c_us / total_time_optimized_aligned_us,
225 total_time_optimized_unaligned_us / total_time_optimized_aligned_us); 227 total_time_optimized_unaligned_us / total_time_optimized_aligned_us);
226 #endif 228 #endif
227 } 229 }
228 230
229 #undef CONVOLVE_FUNC 231 #undef CONVOLVE_FUNC
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 std::tr1::make_tuple(11025, 192000, kResamplingRMSError, -62.61), 383 std::tr1::make_tuple(11025, 192000, kResamplingRMSError, -62.61),
382 std::tr1::make_tuple(16000, 192000, kResamplingRMSError, -63.14), 384 std::tr1::make_tuple(16000, 192000, kResamplingRMSError, -63.14),
383 std::tr1::make_tuple(22050, 192000, kResamplingRMSError, -62.42), 385 std::tr1::make_tuple(22050, 192000, kResamplingRMSError, -62.42),
384 std::tr1::make_tuple(32000, 192000, kResamplingRMSError, -63.38), 386 std::tr1::make_tuple(32000, 192000, kResamplingRMSError, -63.38),
385 std::tr1::make_tuple(44100, 192000, kResamplingRMSError, -62.63), 387 std::tr1::make_tuple(44100, 192000, kResamplingRMSError, -62.63),
386 std::tr1::make_tuple(48000, 192000, kResamplingRMSError, -73.44), 388 std::tr1::make_tuple(48000, 192000, kResamplingRMSError, -73.44),
387 std::tr1::make_tuple(96000, 192000, kResamplingRMSError, -73.52), 389 std::tr1::make_tuple(96000, 192000, kResamplingRMSError, -73.52),
388 std::tr1::make_tuple(192000, 192000, kResamplingRMSError, -73.52))); 390 std::tr1::make_tuple(192000, 192000, kResamplingRMSError, -73.52)));
389 391
390 } // namespace webrtc 392 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/common_audio/resampler/push_sinc_resampler_unittest.cc ('k') | webrtc/common_video/incoming_video_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698