From 541474bf6982e23c4c02abaf2389033f07f444e3 Mon Sep 17 00:00:00 2001 From: Owen Green Date: Sun, 16 Sep 2018 22:22:42 +0100 Subject: [PATCH] All non realtime: Add clean up calls, in case of reallocation --- src/FluidBufHPSS/FluidBufHPSS.cpp | 20 ++++++++++++++----- src/FluidBufNMF/FluidBufNMF.cpp | 11 +++++++++- .../FluidBufNoveltySlice.cpp | 8 ++++++-- src/FluidBufSines/FluidBufSines.cpp | 13 +++++++----- .../FluidBufTransientSlice.cpp | 9 +++++++-- src/FluidBufTransients/FluidBufTransients.cpp | 12 ++++++++--- 6 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/FluidBufHPSS/FluidBufHPSS.cpp b/src/FluidBufHPSS/FluidBufHPSS.cpp index 527f758..cd2879b 100644 --- a/src/FluidBufHPSS/FluidBufHPSS.cpp +++ b/src/FluidBufHPSS/FluidBufHPSS.cpp @@ -64,14 +64,24 @@ namespace fluid { bool postProcess(World* world) { - static_cast - (parameter::lookupParam("harmbuf", processor.getParams()).getBuffer())->assignToRT(world); - static_cast - (parameter::lookupParam("percbuf", processor.getParams()).getBuffer())->assignToRT(world); + static_cast(mModel.harm)->assignToRT(world); + static_cast(mModel.perc)->assignToRT(world); + + if(mModel.res) + static_cast(mModel.res)->assignToRT(world); + return true; } - bool postComplete(World* w) { return true; } + bool postComplete(World*) { + static_cast(mModel.harm)->cleanUp(); + static_cast(mModel.perc)->cleanUp(); + if(mModel.res) + static_cast(mModel.res)->cleanUp(); + return true; + } + + std::vector& parameters() { return processor.getParams(); diff --git a/src/FluidBufNMF/FluidBufNMF.cpp b/src/FluidBufNMF/FluidBufNMF.cpp index 3d232cf..975bc84 100644 --- a/src/FluidBufNMF/FluidBufNMF.cpp +++ b/src/FluidBufNMF/FluidBufNMF.cpp @@ -103,7 +103,16 @@ namespace fluid { return true; } - bool postComplete(World* w) { return true; } + bool postComplete(World*) { + if(mModel.resynthesise) + resynth->cleanUp(); + if(mModel.returnDictionaries) + dict->cleanUp(); + if(mModel.returnActivations) + act->cleanUp(); + return true; + } + std::vector& parameters() { return nmf.getParams(); diff --git a/src/FluidBufNoveltySlice/FluidBufNoveltySlice.cpp b/src/FluidBufNoveltySlice/FluidBufNoveltySlice.cpp index 3c348a0..ca628c1 100644 --- a/src/FluidBufNoveltySlice/FluidBufNoveltySlice.cpp +++ b/src/FluidBufNoveltySlice/FluidBufNoveltySlice.cpp @@ -47,11 +47,15 @@ namespace fluid { bool postProcess(World* world) { - static_cast(mModel.indices)->assignToRT(world); + static_cast(mModel.indices)->assignToRT(world); + return true; + } + + bool postComplete(World*) { + static_cast(mModel.indices)->cleanUp(); return true; } - bool postComplete(World* w) { return true; } std::vector& parameters() { return trans.getParams(); diff --git a/src/FluidBufSines/FluidBufSines.cpp b/src/FluidBufSines/FluidBufSines.cpp index af5a17f..d7fee1c 100644 --- a/src/FluidBufSines/FluidBufSines.cpp +++ b/src/FluidBufSines/FluidBufSines.cpp @@ -69,14 +69,17 @@ namespace fluid { bool postProcess(World* world) { - static_cast - (parameter::lookupParam("sinebuf", processor.getParams()).getBuffer())->assignToRT(world); - static_cast - (parameter::lookupParam("resbuf", processor.getParams()).getBuffer())->assignToRT(world); + static_cast(mModel.sine)->assignToRT(world); + static_cast(mModel.res)->assignToRT(world); + return true; + } + + bool postComplete(World* w) { + static_cast(mModel.sine)->cleanUp(); + static_cast(mModel.res)->cleanUp(); return true; } - bool postComplete(World* w) { return true; } std::vector& parameters() { return processor.getParams(); diff --git a/src/FluidBufTransientSlice/FluidBufTransientSlice.cpp b/src/FluidBufTransientSlice/FluidBufTransientSlice.cpp index f02dcd0..b9fcf94 100644 --- a/src/FluidBufTransientSlice/FluidBufTransientSlice.cpp +++ b/src/FluidBufTransientSlice/FluidBufTransientSlice.cpp @@ -48,11 +48,16 @@ namespace fluid { bool postProcess(World* world) { - static_cast(mModel.trans)->assignToRT(world); + static_cast(mModel.trans)->assignToRT(world); + return true; + } + + bool postComplete(World*) + { + static_cast(mModel.trans)->cleanUp(); return true; } - bool postComplete(World* w) { return true; } std::vector& parameters() { return trans.getParams(); diff --git a/src/FluidBufTransients/FluidBufTransients.cpp b/src/FluidBufTransients/FluidBufTransients.cpp index 6dde990..2031da7 100644 --- a/src/FluidBufTransients/FluidBufTransients.cpp +++ b/src/FluidBufTransients/FluidBufTransients.cpp @@ -1,8 +1,6 @@ // FD_BufNMF, an NRT buffer NMF Processor // A tool from the FluCoMa project, funded by the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 725899) -#define EIGEN_USE_BLAS - #include "clients/nrt/TransientNRTClient.hpp" #include "fdNRTBase.hpp" #include "data/FluidTensor.hpp" @@ -55,7 +53,15 @@ namespace fluid { return true; } - bool postComplete(World* w) { return true; } + bool postComplete(World*) + { + if(mModel.returnTransients) + static_cast(mModel.trans)->cleanUp(); + if(mModel.returnResidual) + static_cast(mModel.res)->cleanUp(); + return true; + + } std::vector& parameters() { return trans.getParams();