Audacity 3.2.0
SampleTrackSource.h
Go to the documentation of this file.
1/**********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file SampleTrackSource.h
6 @brief Adapter of SampleTrack to the interface AudioGraph::Source
7
8 Dominic Mazzoni
9 Vaughan Johnson
10
11 Paul Licameli split from PerTrackEffect.h
12
13**********************************************************************/
14
15#ifndef __AUDACITY_SAMPLE_TRACK_SOURCE__
16#define __AUDACITY_SAMPLE_TRACK_SOURCE__
17
18#include "AudioGraphSource.h" // to inherit
19#include "SampleCount.h"
20#include <functional>
21
22class SampleTrack;
23
25class SAMPLE_TRACK_API SampleTrackSource final : public AudioGraph::Source {
26public:
28 using Poller = std::function<bool(sampleCount blockSize)>;
29
33 SampleTrackSource(const SampleTrack &left, const SampleTrack *pRight,
34 sampleCount start, sampleCount len, Poller pollUser);
36
39 bool AcceptsBuffers(const Buffers &buffers) const override;
40
42 bool AcceptsBlockSize(size_t blockSize) const override;
43
44 std::optional<size_t> Acquire(Buffers &data, size_t bound) override;
45 sampleCount Remaining() const override;
47 bool Release() override;
48private:
50 const SampleTrack *const mpRight;
52
54 sampleCount mOutputRemaining{};
55 size_t mLastProduced{};
56 size_t mFetched{};
57 bool mInitialized{ false };
58};
59#endif
Accumulates (non-interleaved) data during effect processing.
Upstream producer of sample streams, taking Buffers as external context.
virtual sampleCount Remaining() const =0
Result includes any amount Acquired and not yet Released.
virtual bool AcceptsBlockSize(size_t blockSize) const =0
virtual bool AcceptsBuffers(const Buffers &buffers) const =0
virtual std::optional< size_t > Acquire(Buffers &data, size_t bound)=0
Occupy vacant space in Buffers with some data.
virtual bool Release()=0
Caller is done examining last Acquire()d positions.
Adapts SampleTrack to the interface AudioGraph::Source.
const Poller mPollUser
const SampleTrack & mLeft
std::function< bool(sampleCount blockSize)> Poller
Type of function returning false if user cancels progress.
const SampleTrack *const mpRight
~SampleTrackSource() override
Positions or offsets within audio files need a wide type.
Definition: SampleCount.h:19