diff --git a/libs/vamp-plugins/TruePeak.cpp b/libs/vamp-plugins/TruePeak.cpp index 82c56c88f3..18f5a268dd 100644 --- a/libs/vamp-plugins/TruePeak.cpp +++ b/libs/vamp-plugins/TruePeak.cpp @@ -439,11 +439,14 @@ TruePeakdsp::reset () _p = 0; } -void +bool TruePeakdsp::init (float fsamp) { _src.setup(fsamp, fsamp * 4.0, 1, 24, 1.0); _buf = (float*) malloc(32768 * sizeof(float)); + if (!_buf) { + return false; + } /* q/d initialize */ float zero[8192]; @@ -455,6 +458,7 @@ TruePeakdsp::init (float fsamp) _src.out_count = 32768; _src.out_data = _buf; _src.process (); + return true; } } @@ -522,14 +526,16 @@ VampTruePeak::initialise(size_t channels, size_t stepSize, size_t blockSize) return false; } - if (blockSize > 8192) { + if (blockSize == 0 || blockSize > 8192) { + return false; + } + + if (!_meter.init (m_inputSampleRate)) { return false; } m_blockSize = blockSize; - _meter.init (m_inputSampleRate); - return true; } diff --git a/libs/vamp-plugins/TruePeak.h b/libs/vamp-plugins/TruePeak.h index 5e3ff9d2c2..ab832511e7 100644 --- a/libs/vamp-plugins/TruePeak.h +++ b/libs/vamp-plugins/TruePeak.h @@ -123,7 +123,7 @@ public: void read (float &m, float &p); void reset (void); - void init (float fsamp); + bool init (float fsamp); private: