Audacity 3.2.0
Public Member Functions | Private Attributes | List of all members
LV2Instance Class Referencefinal

#include <LV2Instance.h>

Inheritance diagram for LV2Instance:
[legend]
Collaboration diagram for LV2Instance:
[legend]

Public Member Functions

 LV2Instance (const PerTrackEffect &effect, const LV2FeaturesList &features, const LV2Ports &ports)
 
 ~LV2Instance () override
 
bool IsOk () const
 
const LV2PortStatesGetPortStates () const
 
bool ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap) override
 
size_t ProcessBlock (EffectSettings &settings, const float *const *inBlock, float *const *outBlock, size_t blockLen) override
 Called for destructive effect computation. More...
 
SampleCount GetLatency (const EffectSettings &settings, double sampleRate) const override
 
const LV2WrapperGetMaster () const
 
void MakeMaster (const EffectSettings &settings, double sampleRate)
 
std::unique_ptr< LV2WrapperMakeWrapper (const EffectSettings &settings, double sampleRate, EffectOutputs *pOutputs)
 
size_t GetBlockSize () const override
 
size_t SetBlockSize (size_t maxBlockSize) override
 
unsigned GetAudioInCount () const override
 How many input buffers to allocate at once. More...
 
unsigned GetAudioOutCount () const override
 How many output buffers to allocate at once. More...
 
bool RealtimeInitialize (EffectSettings &settings, double sampleRate) override
 
bool RealtimeAddProcessor (EffectSettings &settings, EffectOutputs *pOutputs, unsigned numChannels, float sampleRate) override
 
bool RealtimeFinalize (EffectSettings &settings) noexcept override
 
bool RealtimeSuspend () override
 
bool RealtimeResume () override
 
bool RealtimeProcessStart (MessagePackage &package) override
 settings are possibly changed, since last call, by an asynchronous dialog More...
 
size_t RealtimeProcess (size_t group, EffectSettings &settings, const float *const *inbuf, float *const *outbuf, size_t numSamples) override
 
bool RealtimeProcessEnd (EffectSettings &settings) noexcept override
 settings can be updated to let a dialog change appearance at idle More...
 
- Public Member Functions inherited from PerTrackEffect::Instance
 Instance (const PerTrackEffect &processor)
 
 ~Instance () override
 
bool Process (EffectSettings &settings) final
 Uses the other virtual functions of this class. More...
 
bool ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap) override
 
bool ProcessFinalize () noexcept override
 
- Public Member Functions inherited from EffectInstanceEx
virtual bool Init ()
 Call once to set up state for whole list of tracks to be processed. More...
 
virtual bool Process (EffectSettings &settings)=0
 Actually do the effect here. More...
 
 ~EffectInstanceEx () override
 
- Public Member Functions inherited from EffectInstance
virtual ~EffectInstance ()
 
virtual size_t GetBlockSize () const =0
 
virtual size_t SetBlockSize (size_t maxBlockSize)=0
 
virtual unsigned GetAudioInCount () const =0
 How many input buffers to allocate at once. More...
 
virtual unsigned GetAudioOutCount () const =0
 How many output buffers to allocate at once. More...
 
virtual bool RealtimeInitialize (EffectSettings &settings, double sampleRate)
 
virtual bool RealtimeAddProcessor (EffectSettings &settings, EffectOutputs *pOutputs, unsigned numChannels, float sampleRate)
 
virtual bool RealtimeSuspend ()
 
virtual bool RealtimeResume ()
 
virtual std::unique_ptr< MessageMakeMessage () const
 Called on the main thread, in which the result may be cloned. More...
 
virtual bool UsesMessages () const noexcept
 
virtual bool RealtimeProcessStart (MessagePackage &package)
 settings are possibly changed, since last call, by an asynchronous dialog More...
 
virtual size_t RealtimeProcess (size_t group, EffectSettings &settings, const float *const *inBuf, float *const *outBuf, size_t numSamples)
 
virtual void RealtimePassThrough (size_t group, EffectSettings &settings, const float *const *inBuf, size_t numSamples)
 Called instead of RealtimeProcess when the effect is bypassed. Default implementation does nothing. More...
 
virtual bool RealtimeProcessEnd (EffectSettings &settings) noexcept
 settings can be updated to let a dialog change appearance at idle More...
 
virtual bool RealtimeFinalize (EffectSettings &settings) noexcept
 
virtual size_t GetTailSize () const
 
virtual SampleCount GetLatency (const EffectSettings &settings, double sampleRate) const
 
virtual bool NeedsDither () const
 
virtual bool ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap)=0
 
virtual bool ProcessFinalize () noexcept=0
 
virtual size_t ProcessBlock (EffectSettings &settings, const float *const *inBlock, float *const *outBlock, size_t blockLen)=0
 Called for destructive effect computation. More...
 

Private Attributes

LV2InstanceFeaturesList mFeatures
 
const LV2PortsmPorts
 
LV2PortStates mPortStates { mPorts }
 
std::unique_ptr< LV2WrappermMaster
 Holds lv2 library state for destructive processing. More...
 
std::vector< std::unique_ptr< LV2Wrapper > > mSlaves
 Each holds lv2 library state for realtime processing of one track. More...
 
LV2_Atom_Forge mForge {}
 
float mPositionSpeed { 1.0f }
 
int64_t mPositionFrame { 0 }
 
size_t mUserBlockSize {}
 
size_t mNumSamples {}
 
bool mRolling { true }
 
bool mUseLatency { false }
 

Additional Inherited Members

- Public Types inherited from EffectInstance
using Message = EffectSettingsAccess::Message
 
using SampleCount = uint64_t
 
- Protected Attributes inherited from PerTrackEffect::Instance
const PerTrackEffectmProcessor
 

Detailed Description

Definition at line 27 of file LV2Instance.h.

Constructor & Destructor Documentation

◆ LV2Instance()

LV2Instance::LV2Instance ( const PerTrackEffect effect,
const LV2FeaturesList features,
const LV2Ports ports 
)

Definition at line 27 of file LV2Instance.cpp.

30 : PerTrackEffect::Instance{ effect }
31 , mFeatures{ features }
32 , mPorts{ ports }
33{
35
36 int userBlockSize;
37 LV2Preferences::GetBufferSize(effect, userBlockSize);
38 mUserBlockSize = std::max(1, userBlockSize);
39 lv2_atom_forge_init(&mForge, mFeatures.Base().URIDMapFeature());
40}
LV2_URID_Map * URIDMapFeature() const
LV2InstanceFeaturesList mFeatures
Definition: LV2Instance.h:76
LV2_Atom_Forge mForge
Definition: LV2Instance.h:86
size_t mUserBlockSize
Definition: LV2Instance.h:92
const LV2Ports & mPorts
Definition: LV2Instance.h:77
bool mUseLatency
Definition: LV2Instance.h:96
LV2_API bool GetUseLatency(const EffectDefinitionInterface &effect, bool &useLatency)
LV2_API bool GetBufferSize(const EffectDefinitionInterface &effect, int &bufferSize)
const LV2FeaturesList & Base() const

References LV2InstanceFeaturesList::Base(), LV2Preferences::GetBufferSize(), LV2Preferences::GetUseLatency(), mFeatures, mForge, mUseLatency, mUserBlockSize, and LV2FeaturesList::URIDMapFeature().

Here is the call graph for this function:

◆ ~LV2Instance()

LV2Instance::~LV2Instance ( )
overridedefault

Member Function Documentation

◆ GetAudioInCount()

unsigned LV2Instance::GetAudioInCount ( ) const
overridevirtual

How many input buffers to allocate at once.

If the instance processes channels independently, this can return 1 The result is not necessarily well defined before RealtimeInitialize

Implements EffectInstance.

Definition at line 82 of file LV2Instance.cpp.

83{
84 return mPorts.mAudioIn;
85}
unsigned mAudioIn
Definition: LV2Ports.h:272

References LV2Ports::mAudioIn, and mPorts.

◆ GetAudioOutCount()

unsigned LV2Instance::GetAudioOutCount ( ) const
overridevirtual

How many output buffers to allocate at once.

The result is not necessarily well defined before RealtimeInitialize

Implements EffectInstance.

Definition at line 87 of file LV2Instance.cpp.

88{
89 return mPorts.mAudioOut;
90}
unsigned mAudioOut
Definition: LV2Ports.h:273

References LV2Ports::mAudioOut, and mPorts.

◆ GetBlockSize()

size_t LV2Instance::GetBlockSize ( ) const
overridevirtual

Implements EffectInstance.

Definition at line 77 of file LV2Instance.cpp.

References LV2InstanceFeaturesList::mBlockSize, and mFeatures.

Referenced by ProcessBlock(), ProcessInitialize(), RealtimeInitialize(), RealtimeProcess(), and SetBlockSize().

Here is the caller graph for this function:

◆ GetLatency()

auto LV2Instance::GetLatency ( const EffectSettings settings,
double  sampleRate 
) const
overridevirtual

Default implementation returns 0

Reimplemented from EffectInstance.

Definition at line 92 of file LV2Instance.cpp.

94{
96 return mMaster->GetLatency();
97 return 0;
98}
std::unique_ptr< LV2Wrapper > mMaster
Holds lv2 library state for destructive processing.
Definition: LV2Instance.h:81
int mLatencyPort
Definition: LV2Ports.h:289

◆ GetMaster()

const LV2Wrapper * LV2Instance::GetMaster ( ) const
inline

Definition at line 46 of file LV2Instance.h.

46{ return mMaster.get(); }

Referenced by LV2Editor::UpdateUI().

Here is the caller graph for this function:

◆ GetPortStates()

const LV2PortStates & LV2Instance::GetPortStates ( ) const
inline

Definition at line 36 of file LV2Instance.h.

36{ return mPortStates; }
LV2PortStates mPortStates
Definition: LV2Instance.h:78

◆ IsOk()

bool LV2Instance::IsOk ( ) const
inline

Definition at line 34 of file LV2Instance.h.

◆ MakeMaster()

void LV2Instance::MakeMaster ( const EffectSettings settings,
double  sampleRate 
)

Do nothing if there is already an LV2Wrapper with the desired rate. The wrapper object remains until this is destroyed or the wrapper is re-made with another rate.

Definition at line 44 of file LV2Instance.cpp.

46{
47 // Come here only when doing non-realtime application of the effect, in which
48 // case, we don't care about capturing the output ports
50 // Already made but be sure to connect control ports to the right place
51 mMaster->ConnectControlPorts(mPorts, GetSettings(settings), nullptr);
52 return;
53 }
56}
static Settings & settings()
Definition: TrackInfo.cpp:51
size_t SetBlockSize(size_t maxBlockSize) override
Definition: LV2Instance.cpp:66
std::unique_ptr< LV2Wrapper > MakeWrapper(const EffectSettings &settings, double sampleRate, EffectOutputs *pOutputs)
Definition: LV2Instance.cpp:59
DynamicRangeProcessorSettings GetSettings(EffectSettingsAccess &access)

References anonymous_namespace{DynamicRangeProcessorEditor.cpp}::GetSettings(), MakeWrapper(), mFeatures, mMaster, mPorts, LV2InstanceFeaturesList::mSampleRate, mUserBlockSize, anonymous_namespace{ClipSegmentTest.cpp}::sampleRate, SetBlockSize(), and settings().

Referenced by ProcessInitialize().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MakeWrapper()

std::unique_ptr< LV2Wrapper > LV2Instance::MakeWrapper ( const EffectSettings settings,
double  sampleRate,
EffectOutputs pOutputs 
)

Definition at line 59 of file LV2Instance.cpp.

61{
63 GetSettings(settings), sampleRate, pOutputs);
64}
static std::unique_ptr< LV2Wrapper > Create(LV2InstanceFeaturesList &baseFeatures, const LV2Ports &ports, LV2PortStates &portStates, const LV2EffectSettings &settings, float sampleRate, EffectOutputs *pOutputs)
Factory.
Definition: LV2Wrapper.cpp:32

References LV2Wrapper::Create(), anonymous_namespace{DynamicRangeProcessorEditor.cpp}::GetSettings(), mFeatures, mPorts, mPortStates, anonymous_namespace{ClipSegmentTest.cpp}::sampleRate, and settings().

Referenced by MakeMaster(), and LV2Effect::PopulateUI().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProcessBlock()

size_t LV2Instance::ProcessBlock ( EffectSettings settings,
const float *const *  inBlock,
float *const *  outBlock,
size_t  blockLen 
)
overridevirtual

Called for destructive effect computation.

Implements EffectInstance.

Definition at line 113 of file LV2Instance.cpp.

115{
116 using namespace LV2Symbols;
117 if (size > GetBlockSize())
118 return 0;
119 assert(mMaster); // else ProcessInitialize() returned false, I'm not called
120 const auto instance = &mMaster->GetInstance();
121
122 int i = 0;
123 int o = 0;
124 for (auto & port : mPorts.mAudioPorts)
125 lilv_instance_connect_port(instance,
126 port->mIndex,
127 const_cast<float*>(port->mIsInput ? inbuf[i++] : outbuf[o++]));
128
129 for (auto & state : mPortStates.mAtomPortStates)
130 state->SendToInstance(mForge, mPositionFrame, mPositionSpeed);
131
132 lilv_instance_run(instance, size);
133
134 // Main thread consumes responses
135 mMaster->ConsumeResponses();
136
137 for (auto & state : mPortStates.mAtomPortStates)
138 state->ResetForInstanceOutput();
139
140 return size;
141}
float mPositionSpeed
Definition: LV2Instance.h:89
size_t GetBlockSize() const override
Definition: LV2Instance.cpp:77
int64_t mPositionFrame
Definition: LV2Instance.h:90
LV2AtomPortStateArray mAtomPortStates
Definition: LV2Ports.h:298
LV2AudioPortArray mAudioPorts
Definition: LV2Ports.h:271

References GetBlockSize(), LV2PortStates::mAtomPortStates, LV2Ports::mAudioPorts, mForge, mMaster, mPorts, mPortStates, mPositionFrame, mPositionSpeed, and size.

Here is the call graph for this function:

◆ ProcessInitialize()

bool LV2Instance::ProcessInitialize ( EffectSettings settings,
double  sampleRate,
ChannelNames  chanMap 
)
overridevirtual

Called at start of destructive processing, for each (mono/stereo) track Default implementation does nothing, returns true

Parameters
chanMapnull or array terminated with ChannelNameEOL. Do not retain the pointer
Postcondition
GetAudioInCount() and GetAudioOutCount() are well defined

Reimplemented from PerTrackEffect::Instance.

Definition at line 101 of file LV2Instance.cpp.

103{
105 if (!mMaster)
106 return false;
107 for (auto & state : mPortStates.mCVPortStates)
108 state.mBuffer.reinit(GetBlockSize(), state.mpPort->mIsInput);
109 mMaster->Activate();
110 return true;
111}
void MakeMaster(const EffectSettings &settings, double sampleRate)
Definition: LV2Instance.cpp:44
LV2CVPortStateArray mCVPortStates
Definition: LV2Ports.h:299

References GetBlockSize(), MakeMaster(), LV2PortStates::mCVPortStates, mMaster, mPortStates, anonymous_namespace{ClipSegmentTest.cpp}::sampleRate, and settings().

Here is the call graph for this function:

◆ RealtimeAddProcessor()

bool LV2Instance::RealtimeAddProcessor ( EffectSettings settings,
EffectOutputs pOutputs,
unsigned  numChannels,
float  sampleRate 
)
overridevirtual
Returns
success Default implementation does nothing, returns true

Reimplemented from EffectInstance.

Definition at line 160 of file LV2Instance.cpp.

162{
163 // Connect to outputs only if this is the first processor for the track.
164 // (What's right when a mono effect is on a stereo channel? Unclear, but
165 // this definitely causes connection with the first channel.)
166 auto pInstance = LV2Wrapper::Create(mFeatures,
168 mSlaves.empty() ? static_cast<LV2EffectOutputs *>(pOutputs) : nullptr);
169 if (!pInstance)
170 return false;
171 pInstance->Activate();
172 mSlaves.push_back(move(pInstance));
173 return true;
174}
std::vector< std::unique_ptr< LV2Wrapper > > mSlaves
Each holds lv2 library state for realtime processing of one track.
Definition: LV2Instance.h:84
Carry output control port information back to main thread.
Definition: LV2Ports.h:228

References LV2Wrapper::Create(), anonymous_namespace{DynamicRangeProcessorEditor.cpp}::GetSettings(), mFeatures, mPorts, mPortStates, mSlaves, anonymous_namespace{ClipSegmentTest.cpp}::sampleRate, and settings().

Here is the call graph for this function:

◆ RealtimeFinalize()

bool LV2Instance::RealtimeFinalize ( EffectSettings settings)
overridevirtualnoexcept
Returns
success Default implementation does nothing, returns true

Reimplemented from EffectInstance.

Definition at line 150 of file LV2Instance.cpp.

151{
152return GuardedCall<bool>([&]{
153 mSlaves.clear();
154 for (auto & state : mPortStates.mCVPortStates)
155 state.mBuffer.reset();
156 return true;
157});
158}

◆ RealtimeInitialize()

bool LV2Instance::RealtimeInitialize ( EffectSettings settings,
double  sampleRate 
)
overridevirtual
Returns
success
Postcondition
GetAudioInCount() and GetAudioOutCount() are well defined

Default implementation does nothing, returns false (so assume realtime is not supported). Other member functions related to realtime return true or zero, but will not be called, unless a derived class overrides RealtimeInitialize.

Reimplemented from EffectInstance.

Definition at line 143 of file LV2Instance.cpp.

144{
145 for (auto & state : mPortStates.mCVPortStates)
146 state.mBuffer.reinit(GetBlockSize(), state.mpPort->mIsInput);
147 return true;
148}

References GetBlockSize(), LV2PortStates::mCVPortStates, and mPortStates.

Here is the call graph for this function:

◆ RealtimeProcess()

size_t LV2Instance::RealtimeProcess ( size_t  group,
EffectSettings settings,
const float *const *  inBuf,
float *const *  outBuf,
size_t  numSamples 
)
overridevirtual
Returns
success Default implementation does nothing, returns 0

Reimplemented from EffectInstance.

Definition at line 212 of file LV2Instance.cpp.

214{
215 if (group >= mSlaves.size())
216 return 0;
217 assert(numSamples <= (size_t) GetBlockSize());
218
219 if (group < 0 || group >= (int) mSlaves.size())
220 return 0;
221
222 const auto slave = mSlaves[group].get();
223 const auto instance = &slave->GetInstance();
224
225 int i = 0;
226 int o = 0;
227 for (auto & port : mPorts.mAudioPorts)
228 lilv_instance_connect_port(instance,
229 port->mIndex,
230 const_cast<float*>(port->mIsInput ? inbuf[i++] : outbuf[o++]));
231
232 mNumSamples = std::max(numSamples, mNumSamples);
233
234 if (mRolling)
235 lilv_instance_run(instance, numSamples);
236 else
237 while (--i >= 0)
238 for (decltype(numSamples) s = 0; s < numSamples; s++)
239 outbuf[i][s] = inbuf[i][s];
240
241 // Background thread consumes responses from yet another worker thread
242 slave->ConsumeResponses();
243
244 for (auto & state : mPortStates.mAtomPortStates)
245 state->ResetForInstanceOutput();
246
247 if (group == 0)
248 mPositionFrame += numSamples;
249
250 return numSamples;
251}
size_t mNumSamples
Definition: LV2Instance.h:94
bool mRolling
Definition: LV2Instance.h:95

References GetBlockSize(), LV2PortStates::mAtomPortStates, LV2Ports::mAudioPorts, mNumSamples, mPorts, mPortStates, mPositionFrame, mRolling, and mSlaves.

Here is the call graph for this function:

◆ RealtimeProcessEnd()

bool LV2Instance::RealtimeProcessEnd ( EffectSettings settings)
overridevirtualnoexcept

settings can be updated to let a dialog change appearance at idle

Returns
success Default implementation does nothing, returns true

Reimplemented from EffectInstance.

Definition at line 253 of file LV2Instance.cpp.

254{
255return GuardedCall<bool>([&]{
256 // Nothing to do if we did process any samples
257 if (mNumSamples == 0)
258 return true;
259
260 // Why is this not also done on the destructive processing path?
261 // Because it is soon dimissing the modal dialog anyway.
262 for (auto & state : mPortStates.mAtomPortStates)
263 state->ReceiveFromInstance();
264
265 mNumSamples = 0;
266
267 return true;
268});
269}

◆ RealtimeProcessStart()

bool LV2Instance::RealtimeProcessStart ( MessagePackage package)
overridevirtual

settings are possibly changed, since last call, by an asynchronous dialog

Returns
success Default implementation does nothing, returns true

Reimplemented from EffectInstance.

Definition at line 204 of file LV2Instance.cpp.

205{
206 mNumSamples = 0;
207 for (auto & state : mPortStates.mAtomPortStates)
208 state->SendToInstance(mForge, mPositionFrame, mPositionSpeed);
209 return true;
210}

References LV2PortStates::mAtomPortStates, mForge, mNumSamples, mPortStates, mPositionFrame, and mPositionSpeed.

◆ RealtimeResume()

bool LV2Instance::RealtimeResume ( )
overridevirtual
Returns
success Default implementation does nothing, returns true

Reimplemented from EffectInstance.

Definition at line 190 of file LV2Instance.cpp.

191{
192 if (mMaster)
193 mMaster->Activate();
194 for (auto &pSlave : mSlaves)
195 pSlave->Activate();
196
197 mPositionSpeed = 1.0;
198 mPositionFrame = 0;
199 mRolling = true;
200
201 return true;
202}

References mMaster, mPositionFrame, mPositionSpeed, mRolling, and mSlaves.

◆ RealtimeSuspend()

bool LV2Instance::RealtimeSuspend ( )
overridevirtual
Returns
success Default implementation does nothing, returns true

Reimplemented from EffectInstance.

Definition at line 176 of file LV2Instance.cpp.

177{
178 if (mMaster)
179 mMaster->Deactivate();
180 for (auto &pSlave : mSlaves)
181 pSlave->Deactivate();
182
183 mPositionSpeed = 0.0;
184 mPositionFrame = 0;
185 mRolling = false;
186
187 return true;
188}

References mMaster, mPositionFrame, mPositionSpeed, mRolling, and mSlaves.

◆ SetBlockSize()

size_t LV2Instance::SetBlockSize ( size_t  maxBlockSize)
overridevirtual

Implements EffectInstance.

Definition at line 66 of file LV2Instance.cpp.

67{
69 std::min({maxBlockSize, mUserBlockSize, mFeatures.mMaxBlockSize}));
70 if (mMaster)
71 mMaster->SendBlockSize();
72 for (auto &pSlave : mSlaves)
73 pSlave->SendBlockSize();
74 return GetBlockSize();
75}
int min(int a, int b)

References GetBlockSize(), LV2InstanceFeaturesList::mBlockSize, mFeatures, min(), mMaster, LV2InstanceFeaturesList::mMinBlockSize, and mSlaves.

Referenced by MakeMaster().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ mFeatures

LV2InstanceFeaturesList LV2Instance::mFeatures
private

◆ mForge

LV2_Atom_Forge LV2Instance::mForge {}
private

Definition at line 86 of file LV2Instance.h.

Referenced by LV2Instance(), ProcessBlock(), and RealtimeProcessStart().

◆ mMaster

std::unique_ptr<LV2Wrapper> LV2Instance::mMaster
private

Holds lv2 library state for destructive processing.

Definition at line 81 of file LV2Instance.h.

Referenced by MakeMaster(), ProcessBlock(), ProcessInitialize(), RealtimeResume(), RealtimeSuspend(), and SetBlockSize().

◆ mNumSamples

size_t LV2Instance::mNumSamples {}
private

Definition at line 94 of file LV2Instance.h.

Referenced by RealtimeProcess(), and RealtimeProcessStart().

◆ mPorts

const LV2Ports& LV2Instance::mPorts
private

◆ mPortStates

LV2PortStates LV2Instance::mPortStates { mPorts }
private

◆ mPositionFrame

int64_t LV2Instance::mPositionFrame { 0 }
private

◆ mPositionSpeed

float LV2Instance::mPositionSpeed { 1.0f }
private

Definition at line 89 of file LV2Instance.h.

Referenced by ProcessBlock(), RealtimeProcessStart(), RealtimeResume(), and RealtimeSuspend().

◆ mRolling

bool LV2Instance::mRolling { true }
private

Definition at line 95 of file LV2Instance.h.

Referenced by RealtimeProcess(), RealtimeResume(), and RealtimeSuspend().

◆ mSlaves

std::vector<std::unique_ptr<LV2Wrapper> > LV2Instance::mSlaves
private

Each holds lv2 library state for realtime processing of one track.

Definition at line 84 of file LV2Instance.h.

Referenced by RealtimeAddProcessor(), RealtimeProcess(), RealtimeResume(), RealtimeSuspend(), and SetBlockSize().

◆ mUseLatency

bool LV2Instance::mUseLatency { false }
private

Definition at line 96 of file LV2Instance.h.

Referenced by LV2Instance().

◆ mUserBlockSize

size_t LV2Instance::mUserBlockSize {}
private

Definition at line 92 of file LV2Instance.h.

Referenced by LV2Instance(), and MakeMaster().


The documentation for this class was generated from the following files: