|  | /* | 
|  | *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | */ | 
|  |  | 
|  | // Modified from the Chromium original here: | 
|  | // src/media/base/sinc_resampler_unittest.cc | 
|  |  | 
|  | #ifndef COMMON_AUDIO_RESAMPLER_SINUSOIDAL_LINEAR_CHIRP_SOURCE_H_ | 
|  | #define COMMON_AUDIO_RESAMPLER_SINUSOIDAL_LINEAR_CHIRP_SOURCE_H_ | 
|  |  | 
|  | #include "common_audio/resampler/sinc_resampler.h" | 
|  | #include "rtc_base/constructor_magic.h" | 
|  |  | 
|  | namespace webrtc { | 
|  |  | 
|  | // Fake audio source for testing the resampler.  Generates a sinusoidal linear | 
|  | // chirp (http://en.wikipedia.org/wiki/Chirp) which can be tuned to stress the | 
|  | // resampler for the specific sample rate conversion being used. | 
|  | class SinusoidalLinearChirpSource : public SincResamplerCallback { | 
|  | public: | 
|  | // |delay_samples| can be used to insert a fractional sample delay into the | 
|  | // source.  It will produce zeros until non-negative time is reached. | 
|  | SinusoidalLinearChirpSource(int sample_rate, | 
|  | size_t samples, | 
|  | double max_frequency, | 
|  | double delay_samples); | 
|  |  | 
|  | ~SinusoidalLinearChirpSource() override {} | 
|  |  | 
|  | void Run(size_t frames, float* destination) override; | 
|  |  | 
|  | double Frequency(size_t position); | 
|  |  | 
|  | private: | 
|  | enum { kMinFrequency = 5 }; | 
|  |  | 
|  | int sample_rate_; | 
|  | size_t total_samples_; | 
|  | double max_frequency_; | 
|  | double k_; | 
|  | size_t current_index_; | 
|  | double delay_samples_; | 
|  |  | 
|  | RTC_DISALLOW_COPY_AND_ASSIGN(SinusoidalLinearChirpSource); | 
|  | }; | 
|  |  | 
|  | }  // namespace webrtc | 
|  |  | 
|  | #endif  // COMMON_AUDIO_RESAMPLER_SINUSOIDAL_LINEAR_CHIRP_SOURCE_H_ |