Chromium Code Reviews| Index: third_party/WebKit/Source/modules/webaudio/IIRDSPKernel.cpp |
| diff --git a/third_party/WebKit/Source/modules/webaudio/IIRDSPKernel.cpp b/third_party/WebKit/Source/modules/webaudio/IIRDSPKernel.cpp |
| index e3e38525c1180bde57f2924d1d8a47e2a44ee4cd..1a86b092464bdc402539a792804fda5a1390af41 100644 |
| --- a/third_party/WebKit/Source/modules/webaudio/IIRDSPKernel.cpp |
| +++ b/third_party/WebKit/Source/modules/webaudio/IIRDSPKernel.cpp |
| @@ -8,6 +8,12 @@ |
| namespace blink { |
| +IIRDSPKernel::IIRDSPKernel(IIRProcessor* processor) |
| + : AudioDSPKernel(processor), |
| + iir_(processor->Feedforward(), processor->Feedback()) { |
| + tail_time_ = iir_.TailTime(processor->SampleRate()); |
|
hongchan
2017/05/12 16:24:04
Is this the only moment that the tail time is comp
Raymond Toy
2017/05/12 17:33:18
Since the filter can't change, we only need to com
|
| +} |
| + |
| void IIRDSPKernel::Process(const float* source, |
| float* destination, |
| size_t frames_to_process) { |
| @@ -41,14 +47,7 @@ void IIRDSPKernel::GetFrequencyResponse(int n_frequencies, |
| } |
| double IIRDSPKernel::TailTime() const { |
| - // TODO(rtoy): This is true mathematically (infinite impulse response), but |
| - // perhaps it should be limited to a smaller value, possibly based on the |
| - // actual filter coefficients. To do that, we would probably need to find the |
| - // pole, r, with largest magnitude and select some threshold, eps, such that |
| - // |r|^n < eps for all n >= N. N is then the tailTime for the filter. If the |
| - // the magnitude of r is greater than or equal to 1, the infinity is the right |
| - // answer. (There is no constraint on the IIR filter that it be stable.) |
| - return std::numeric_limits<double>::infinity(); |
| + return tail_time_; |
| } |
| double IIRDSPKernel::LatencyTime() const { |