Audacity 3.2.0
StatefulPerTrackEffect.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 StatefulPerTrackEffect.h
6
7 Dominic Mazzoni
8 Vaughan Johnson
9
10 Paul Licameli split from PerTrackEffect.h
11
12**********************************************************************/
13
14#ifndef __AUDACITY_STATEFUL_PER_TRACK_EFFECT__
15#define __AUDACITY_STATEFUL_PER_TRACK_EFFECT__
16
17#include "PerTrackEffect.h" // to inherit
18#include "StatefulEffectBase.h" // to inherit
19#include "StatefulEffectUIServices.h" // to inherit
20
24 : public StatefulEffectBase
25 , public PerTrackEffect
27{
28public:
29
32 class AUDACITY_DLL_API Instance
35 {
36 public:
38 : StatefulEffectBase::Instance{ effect }
39 , PerTrackEffect::Instance{ effect }
40 {}
41 ~Instance() override;
43 ChannelNames chanMap) override;
44 bool ProcessFinalize() noexcept override;
46 const float *const *inBlock, float *const *outBlock, size_t blockLen)
47 override;
48
49 protected:
50 StatefulPerTrackEffect &GetEffect() const
51 {
52 // Tolerate const_cast in this class while it sun-sets
53 return static_cast<StatefulPerTrackEffect &>(
54 const_cast<PerTrackEffect &>(mProcessor));
55 }
56 };
57
59
60 std::shared_ptr<EffectInstance> MakeInstance() const override;
61
62 size_t SetBlockSize(size_t maxBlockSize) override;
63 size_t GetBlockSize() const override;
64
69 ChannelNames chanMap = nullptr) override;
70
74 bool ProcessFinalize() noexcept override;
75
80 const float *const *inBlock, float *const *outBlock, size_t blockLen) = 0;
81
82private:
83 bool Process(EffectInstance &instance, EffectSettings &settings) final;
84
85 size_t mBlockSize{};
86};
87
88#endif
ChannelName
static Settings & settings()
Definition: TrackInfo.cpp:47
Performs effect computation.
Base class for many of the effects in Audacity.
Calls through to members of StatefulEffectBase.
Instance(StatefulPerTrackEffect &effect)
Base class for many of the effects in Audacity.
bool ProcessInitialize(EffectSettings &settings, double sampleRate, ChannelNames chanMap=nullptr) override
~StatefulPerTrackEffect() override
bool ProcessFinalize() noexcept override
size_t GetBlockSize() const override
size_t SetBlockSize(size_t maxBlockSize) override
std::shared_ptr< EffectInstance > MakeInstance() const override
Make an object maintaining short-term state of an Effect.
bool Process(EffectInstance &instance, EffectSettings &settings) final
virtual size_t ProcessBlock(EffectSettings &settings, const float *const *inBlock, float *const *outBlock, size_t blockLen)=0
Called for destructive effect computation.
Externalized state of a plug-in.