15#ifndef __AUDACITY_EFFECT_STAGE__
16#define __AUDACITY_EFFECT_STAGE__
32 using Factory = std::function<std::shared_ptr<EffectInstance>()>;
46 std::optional<sampleCount> genLength,
const Track &track);
49 static std::unique_ptr<EffectStage> Create(
bool multi,
53 std::optional<sampleCount> genLength,
const Track &track);
63 bool AcceptsBuffers(
const Buffers &buffers)
const override;
65 bool AcceptsBlockSize(
size_t size)
const override;
67 std::optional<size_t> Acquire(
Buffers &data,
size_t bound)
override;
73 {
return std::max<sampleCount>(0, mDelayRemaining); }
83 const Buffers &data,
size_t curBlockSize,
size_t outBufferOffset)
const;
85 [[nodiscard]] std::optional<size_t> FetchProcessAndAdvance(
86 Buffers &data,
size_t bound,
bool doZeros,
size_t outBufferOffset = 0);
91 const std::vector<std::shared_ptr<EffectInstance>>
mInstances;
97 size_t mLastProduced{};
99 bool mLatencyDone{
false };
100 bool mCleared{
false };
static Settings & settings()
Accumulates (non-interleaved) data during effect processing.
Decorates a source with a non-timewarping effect, which may have latency.
const std::vector< std::shared_ptr< EffectInstance > > mInstances
std::function< std::shared_ptr< EffectInstance >()> Factory
sampleCount DelayRemaining() const
EffectStage(const EffectStage &)=delete
sampleCount mDelayRemaining
EffectSettings & mSettings
Upstream producer of sample streams, taking Buffers as external context.
Performs effect computation.
Abstract base class for an object holding data associated with points on a time axis.
Positions or offsets within audio files need a wide type.
AUDIO_GRAPH_API unsigned MakeChannelMap(const Track &track, bool multichannel, ChannelName map[3])
void Release(wxWindow *handler)
static RegisteredToolbarFactory factory
Externalized state of a plug-in.