22 sampleCount start,
bool isGenerator,
bool isProcessor,
24) : mLeft{ left }, mpRight{ pRight }
25 , mGenLeft{ isGenerator ? left.EmptyCopy() : nullptr }
26 , mGenRight{ pRight && isGenerator ? pRight->EmptyCopy() : nullptr }
27 , mIsProcessor{ isProcessor }
28 , mEffectiveFormat{ effectiveFormat }
63 const auto inputBufferCnt = data.
Position();
64 if (inputBufferCnt > 0) {
Contains declarations for TimeWarper, IdentityTimeWarper, ShiftTimeWarper, LinearTimeWarper,...
Accumulates (non-interleaved) data during effect processing.
void Rewind()
Reset positions to starts of buffers.
unsigned Channels() const
constSamplePtr GetReadPosition(unsigned iChannel) const
Get accumulated data for one channel.
Unit slope but with either a jump (pasting more) or a flat interval (pasting less)
A Track that contains audio waveform data.
void Set(constSamplePtr buffer, sampleFormat format, sampleCount start, size_t len, sampleFormat effectiveFormat=widestSampleFormat)
void ClearAndPaste(double t0, double t1, const Track *src, bool preserve=true, bool merge=true, const TimeWarper *effectWarper=NULL)
const sampleFormat mEffectiveFormat
~WaveTrackSink() override
WaveTrackSink(WaveTrack &left, WaveTrack *pRight, sampleCount start, bool isGenerator, bool isProcessor, sampleFormat effectiveFormat)
void DoConsume(Buffers &data)
bool Acquire(Buffers &data) override
Guarantee empty space in Buffers before they are written.
bool Release(const Buffers &data, size_t curBlockSize) override
Acknowledge receipt of data in Buffers, which caller may then Advance()
void Flush(Buffers &data, double t0, double t1)
const std::shared_ptr< WaveTrack > mGenLeft
bool AcceptsBuffers(const Buffers &buffers) const override
Accepts buffers only if there is at least one channel.
const std::shared_ptr< WaveTrack > mGenRight
Positions or offsets within audio files need a wide type.