summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-07-03 22:40:00 +0200
committerCarl Hetherington <cth@carlh.net>2021-07-03 22:48:07 +0200
commitfa4da415f1788bed17eefd05ba8d49b8ad847613 (patch)
tree3f17524f7cce451a07cb0ca64e4de996813a7932 /src/lib
parent2d4e8c5f69cc694625ad95dcee554499605f823b (diff)
Use std::vector rather than a raw array.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/audio_filter.cc18
-rw-r--r--src/lib/audio_filter.h7
2 files changed, 8 insertions, 17 deletions
diff --git a/src/lib/audio_filter.cc b/src/lib/audio_filter.cc
index 281ac9668..96af75674 100644
--- a/src/lib/audio_filter.cc
+++ b/src/lib/audio_filter.cc
@@ -30,11 +30,11 @@ using std::min;
using std::shared_ptr;
-/** @return array of floats which the caller must destroy with delete[] */
-float *
+std::vector<float>
AudioFilter::sinc_blackman (float cutoff, bool invert) const
{
- float* ir = new float[_M + 1];
+ auto ir = std::vector<float>();
+ ir.reserve(_M + 1);
/* Impulse response */
@@ -73,12 +73,6 @@ AudioFilter::sinc_blackman (float cutoff, bool invert) const
}
-AudioFilter::~AudioFilter ()
-{
- delete[] _ir;
-}
-
-
shared_ptr<AudioBuffers>
AudioFilter::run (shared_ptr<const AudioBuffers> in)
{
@@ -147,15 +141,11 @@ BandPassAudioFilter::BandPassAudioFilter (float transition_bandwidth, float lowe
auto lpf = sinc_blackman (lower, false);
auto hpf = sinc_blackman (higher, true);
- delete[] _ir;
- _ir = new float[_M + 1];
+ _ir.reserve (_M + 1);
for (int i = 0; i <= _M; ++i) {
_ir[i] = lpf[i] + hpf[i];
}
- delete[] lpf;
- delete[] hpf;
-
/* We now have a band-stop, so invert for band-pass */
for (int i = 0; i <= _M; ++i) {
_ir[i] = -_ir[i];
diff --git a/src/lib/audio_filter.h b/src/lib/audio_filter.h
index 922cc5fdb..86fdce590 100644
--- a/src/lib/audio_filter.h
+++ b/src/lib/audio_filter.h
@@ -23,6 +23,7 @@
#include <memory>
+#include <vector>
class AudioBuffers;
@@ -43,7 +44,7 @@ public:
}
}
- virtual ~AudioFilter ();
+ virtual ~AudioFilter () {}
std::shared_ptr<AudioBuffers> run (std::shared_ptr<const AudioBuffers> in);
@@ -53,9 +54,9 @@ protected:
friend struct audio_filter_impulse_kernel_test;
friend struct audio_filter_impulse_input_test;
- float* sinc_blackman (float cutoff, bool invert) const;
+ std::vector<float> sinc_blackman (float cutoff, bool invert) const;
- float* _ir = nullptr;
+ std::vector<float> _ir;
int _M;
std::shared_ptr<AudioBuffers> _tail;
};