Browse Source

Filter: fixed crash on zero cutoff frequency

this fixes #10435
master
Andrew Tridgell 6 years ago
parent
commit
6c09b268d8
  1. 8
      libraries/Filter/LowPassFilter2p.cpp

8
libraries/Filter/LowPassFilter2p.cpp

@ -35,6 +35,10 @@ template <class T>
void DigitalBiquadFilter<T>::compute_params(float sample_freq, float cutoff_freq, biquad_params &ret) { void DigitalBiquadFilter<T>::compute_params(float sample_freq, float cutoff_freq, biquad_params &ret) {
ret.cutoff_freq = cutoff_freq; ret.cutoff_freq = cutoff_freq;
ret.sample_freq = sample_freq; ret.sample_freq = sample_freq;
if (!is_positive(ret.cutoff_freq)) {
// zero cutoff means pass-thru
return;
}
float fr = sample_freq/cutoff_freq; float fr = sample_freq/cutoff_freq;
float ohm = tanf(M_PI/fr); float ohm = tanf(M_PI/fr);
@ -83,6 +87,10 @@ float LowPassFilter2p<T>::get_sample_freq(void) const {
template <class T> template <class T>
T LowPassFilter2p<T>::apply(const T &sample) { T LowPassFilter2p<T>::apply(const T &sample) {
if (!is_positive(_params.cutoff_freq)) {
// zero cutoff means pass-thru
return sample;
}
return _filter.apply(sample, _params); return _filter.apply(sample, _params);
} }

Loading…
Cancel
Save