Use std::vector rather than a raw array.
[dcpomatic.git] / src / lib / audio_filter.h
index 500cfa6e258b5b4d39fe5323596d75a5552b45d4..86fdce590cf0a5dc6eddba42ad8566779c332c73 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 
 #include <memory>
+#include <vector>
 
 
 class AudioBuffers;
 struct audio_filter_impulse_input_test;
 
+
 /** An audio filter which can take AudioBuffers and apply some filtering operation,
  *  returning filtered samples
  */
@@ -35,7 +37,6 @@ class AudioFilter
 {
 public:
        explicit AudioFilter (float transition_bandwidth)
-               : _ir (0)
        {
                _M = 4 / transition_bandwidth;
                if (_M % 2) {
@@ -43,7 +44,7 @@ public:
                }
        }
 
-       virtual ~AudioFilter ();
+       virtual ~AudioFilter () {}
 
        std::shared_ptr<AudioBuffers> run (std::shared_ptr<const AudioBuffers> in);
 
@@ -53,13 +54,14 @@ 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;
+       std::vector<float> _ir;
        int _M;
        std::shared_ptr<AudioBuffers> _tail;
 };
 
+
 class LowPassAudioFilter : public AudioFilter
 {
 public:
@@ -70,6 +72,7 @@ public:
        LowPassAudioFilter (float transition_bandwidth, float cutoff);
 };
 
+
 class HighPassAudioFilter : public AudioFilter
 {
 public:
@@ -80,6 +83,7 @@ public:
        HighPassAudioFilter (float transition_bandwidth, float cutoff);
 };
 
+
 class BandPassAudioFilter : public AudioFilter
 {
 public:
@@ -91,4 +95,5 @@ public:
        BandPassAudioFilter (float transition_bandwidth, float lower, float higher);
 };
 
+
 #endif