Audacity  3.0.3
SimpleBlockFile.h
Go to the documentation of this file.
1 /**********************************************************************
2 
3  Audacity: A Digital Audio Editor
4 
5  SimpleBlockFile.h
6 
7  Joshua Haberman
8 
9 **********************************************************************/
10 
11 #ifndef __AUDACITY_SIMPLE_BLOCKFILE__
12 #define __AUDACITY_SIMPLE_BLOCKFILE__
13 
14 #include "../BlockFile.h"
15 
16 class DirManager;
17 
18 // The AU formats we care about
19 enum {
23 };
24 
25 typedef struct {
26  wxUint32 magic; // magic number
27  wxUint32 dataOffset; // byte offset to start of audio data
28  wxUint32 dataSize; // data length, in bytes (optional)
29  wxUint32 encoding; // data encoding enumeration
30  wxUint32 sampleRate; // samples per second
31  wxUint32 channels; // number of interleaved channels
32 } auHeader;
33 
34 class PROFILE_DLL_API SimpleBlockFile /* not final */ : public BlockFile {
35  public:
36 
37  // Constructor / Destructor
38 
40  SimpleBlockFile(wxFileNameWrapper &&baseFileName,
41  samplePtr sampleData, size_t sampleLen,
44  SimpleBlockFile(wxFileNameWrapper &&existingFile, size_t len,
45  float min, float max, float rms);
46 
47  virtual ~SimpleBlockFile();
48 
49  // Reading
50 
52  bool ReadSummary(ArrayOf<char> &data) override;
54  size_t ReadData(samplePtr data, sampleFormat format,
55  size_t start, size_t len, bool mayThrow) const override;
56 
58  BlockFilePtr Copy(wxFileNameWrapper &&newFileName) override;
60  void SaveXML(XMLWriter &xmlFile) override;
61 
62  DiskByteCount GetSpaceUsage() const override;
63  void Recover() override;
64 
65  static BlockFilePtr BuildFromXML(DirManager &dm, const wxChar **attrs);
66 
67  protected:
68 
69  bool WriteSimpleBlockFile(samplePtr sampleData, size_t sampleLen,
70  sampleFormat format, void* summaryData);
71 
72  private:
73  mutable sampleFormat mFormat; // may be found lazily
74 };
75 
76 #endif
XMLWriter
Base class for XMLFileWriter and XMLStringWriter that provides the general functionality for creating...
Definition: XMLWriter.h:23
AU_SAMPLE_FORMAT_FLOAT
@ AU_SAMPLE_FORMAT_FLOAT
Definition: SimpleBlockFile.h:22
wxFileNameWrapper
Definition: wxFileNameWrapper.h:21
PROFILE_DLL_API
#define PROFILE_DLL_API
Definition: Sequence.h:58
auHeader::dataOffset
wxUint32 dataOffset
Definition: SimpleBlockFile.h:27
auHeader::dataSize
wxUint32 dataSize
Definition: SimpleBlockFile.h:28
auHeader::channels
wxUint32 channels
Definition: SimpleBlockFile.h:31
SimpleBlockFile::mFormat
sampleFormat mFormat
Definition: SimpleBlockFile.h:73
auHeader::sampleRate
wxUint32 sampleRate
Definition: SimpleBlockFile.h:30
SimpleBlockFile
A BlockFile that reads and writes uncompressed data using libsndfile.
Definition: SimpleBlockFile.h:34
format
int format
Definition: ExportPCM.cpp:56
sampleFormat
sampleFormat
Definition: SampleFormat.h:29
samplePtr
char * samplePtr
Definition: SampleFormat.h:49
min
int min(int a, int b)
Definition: CompareAudioCommand.cpp:106
auHeader::magic
wxUint32 magic
Definition: SimpleBlockFile.h:26
auHeader
The auHeader is a structure used by SimpleBlockFile for .au file format. There probably is an 'offici...
Definition: SimpleBlockFile.h:25
AU_SAMPLE_FORMAT_24
@ AU_SAMPLE_FORMAT_24
Definition: SimpleBlockFile.h:21
ArrayOf< char >
AU_SAMPLE_FORMAT_16
@ AU_SAMPLE_FORMAT_16
Definition: SimpleBlockFile.h:20
auHeader::encoding
wxUint32 encoding
Definition: SimpleBlockFile.h:29