Add methods to compute magnitude and phase response for biquads
[WebKit-https.git] / Source / WebCore / webaudio / BiquadDSPKernel.h
index 47d0f3439fff3ca749ceff615a1f8764db6f85df..a21e24c0d0c84d894003389be75fc4ce8d29b0db 100644 (file)
@@ -45,10 +45,25 @@ public:
     // AudioDSPKernel
     virtual void process(const float* source, float* dest, size_t framesToProcess);
     virtual void reset() { m_biquad.reset(); }
-    
+
+    // Get the magnitude and phase response of the filter at the given
+    // set of frequencies (in Hz). The phase response is in radians.
+    void getFrequencyResponse(int nFrequencies,
+                              const float* frequencyHz,
+                              float* magResponse,
+                              float* phaseResponse);
 protected:
     Biquad m_biquad;
     BiquadProcessor* biquadProcessor() { return static_cast<BiquadProcessor*>(processor()); }
+
+    // To prevent audio glitches when parameters are changed,
+    // dezippering is used to slowly change the parameters.
+    // |useSmoothing| implies that we want to update using the
+    // smoothed values. Otherwise the final target values are
+    // used. If |forceUpdate| is true, we update the coefficients even
+    // if they are not dirty. (Used when computing the frequency
+    // response.)
+    void updateCoefficientsIfNecessary(bool useSmoothing, bool forceUpdate);
 };
 
 } // namespace WebCore