1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
/**********************************************************************
Audacity: A Digital Audio Editor
SampleTrack.h
@brief abstract Track sub-type that maps times to sample values
Paul Licameli split from WaveTrack.h
**********************************************************************/
#ifndef __AUDACITY_SAMPLE_TRACK__
#define __AUDACITY_SAMPLE_TRACK__
#include "AudioIOSequences.h"
#include "PlayableTrack.h"
#include "SampleCount.h"
#include "SampleFormat.h"
enum class sampleFormat : unsigned;
class SampleTrack;
class SAMPLE_TRACK_API SampleTrack /* not final */
: public PlayableTrack
, public PlayableSequence
{
public:
SampleTrack();
SampleTrack(const SampleTrack &other, ProtectedCreationArg&&);
~SampleTrack() override;
// Fix the otherwise ambiguous lookup of these virtual function names
using ChannelGroup::GetStartTime;
using ChannelGroup::GetEndTime;
const TypeInfo &GetTypeInfo() const override;
static const TypeInfo &ClassTypeInfo();
virtual sampleFormat GetSampleFormat() const = 0;
using WideSampleSequence::GetFloats;
};
ENUMERATE_TRACK_TYPE(SampleTrack)
class SAMPLE_TRACK_API WritableSampleTrack /* not final */
: public SampleTrack
, public RecordableSequence
{
public:
WritableSampleTrack();
WritableSampleTrack(
const WritableSampleTrack &other, ProtectedCreationArg&&);
~WritableSampleTrack() override;
// Resolve ambiguous lookups
using ChannelGroup::NChannels;
// Needed to resolve ambiguity with WideSampleSequence::GetRate, when this
// abstract interface is used directly.
// Expect the concrete subclass to define a common override for them.
using RecordableSequence::GetRate;
const TypeInfo &GetTypeInfo() const override;
static const TypeInfo &ClassTypeInfo();
};
ENUMERATE_TRACK_TYPE(WritableSampleTrack)
#endif
|