File: SampleTrack.h

package info (click to toggle)
audacity 3.7.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 125,252 kB
  • sloc: cpp: 358,238; ansic: 75,458; lisp: 7,761; sh: 3,410; python: 1,503; xml: 1,385; perl: 854; makefile: 122
file content (71 lines) | stat: -rw-r--r-- 1,855 bytes parent folder | download | duplicates (2)
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