Chromium Code Reviews| Index: media/base/sinc_resampler_unittest.cc |
| diff --git a/media/base/sinc_resampler_unittest.cc b/media/base/sinc_resampler_unittest.cc |
| index 62156d2de5ac6e49eaf1150db810ba4c11bf99d2..8b8b4dd67bd546601fcea75657a55b405c067eb4 100644 |
| --- a/media/base/sinc_resampler_unittest.cc |
| +++ b/media/base/sinc_resampler_unittest.cc |
| @@ -98,6 +98,22 @@ TEST(SincResamplerTest, Flush) { |
| ASSERT_FLOAT_EQ(resampled_destination[i], 0); |
| } |
| +// Test flush resets the internal state properly. |
| +TEST(SincResamplerTest, DISABLED_SetRatioBench) { |
| + MockSource mock_source; |
| + SincResampler resampler( |
| + kSampleRateRatio, |
| + base::Bind(&MockSource::ProvideInput, base::Unretained(&mock_source))); |
| + |
| + base::TimeTicks start = base::TimeTicks::HighResNow(); |
| + for (int i = 1; i < 10000; ++i) |
| + resampler.SetRatio(1.0 / i); |
|
Chris Rogers
2013/04/16 22:57:02
These are pretty insanely low ratio values! But,
DaleCurtis
2013/04/16 23:03:12
Correct, it's just a timing test, so this is fine.
|
| + double total_time_c_ms = |
| + (base::TimeTicks::HighResNow() - start).InMillisecondsF(); |
| + printf("SetRatio() took %.2fms.\n", total_time_c_ms); |
| +} |
| + |
| + |
| // Define platform independent function name for Convolve* tests. |
| #if defined(ARCH_CPU_X86_FAMILY) |
| #define CONVOLVE_FUNC Convolve_SSE |
| @@ -299,11 +315,24 @@ TEST_P(SincResamplerTest, Resample) { |
| SinusoidalLinearChirpSource resampler_source( |
| input_rate_, input_samples, input_nyquist_freq); |
| + const double io_ratio = input_rate_ / static_cast<double>(output_rate_); |
| SincResampler resampler( |
| - input_rate_ / static_cast<double>(output_rate_), |
| + io_ratio, |
| base::Bind(&SinusoidalLinearChirpSource::ProvideInput, |
| base::Unretained(&resampler_source))); |
| + // Force an update to the sample rate ratio to ensure dyanmic sample rate |
| + // changes are working correctly. |
| + scoped_ptr<float[]> kernel(new float[SincResampler::kKernelStorageSize]); |
| + memcpy(kernel.get(), resampler.get_kernel_for_testing(), |
| + SincResampler::kKernelStorageSize); |
| + resampler.SetRatio(M_PI); |
| + ASSERT_NE(0, memcmp(kernel.get(), resampler.get_kernel_for_testing(), |
| + SincResampler::kKernelStorageSize)); |
| + resampler.SetRatio(io_ratio); |
| + ASSERT_EQ(0, memcmp(kernel.get(), resampler.get_kernel_for_testing(), |
| + SincResampler::kKernelStorageSize)); |
| + |
| // TODO(dalecurtis): If we switch to AVX/SSE optimization, we'll need to |
| // allocate these on 32-byte boundaries and ensure they're sized % 32 bytes. |
| scoped_ptr<float[]> resampled_destination(new float[output_samples]); |