OpenShot Audio Library | OpenShotAudio  0.3.1
juce_WavAudioFormat.h
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2017 - ROLI Ltd.
6 
7  JUCE is an open source library subject to commercial or open-source
8  licensing.
9 
10  By using JUCE, you agree to the terms of both the JUCE 5 End-User License
11  Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
12  27th April 2017).
13 
14  End User License Agreement: www.juce.com/juce-5-licence
15  Privacy Policy: www.juce.com/juce-5-privacy-policy
16 
17  Or: You may also use this code under the terms of the GPL v3 (see
18  www.gnu.org/licenses).
19 
20  JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
21  EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
22  DISCLAIMED.
23 
24  ==============================================================================
25 */
26 
27 namespace juce
28 {
29 
30 //==============================================================================
38 class JUCE_API WavAudioFormat : public AudioFormat
39 {
40 public:
41  //==============================================================================
44 
46  ~WavAudioFormat() override;
47 
48  //==============================================================================
49  // BWAV chunk properties:
50 
51  static const char* const bwavDescription;
52  static const char* const bwavOriginator;
53  static const char* const bwavOriginatorRef;
54  static const char* const bwavOriginationDate;
55  static const char* const bwavOriginationTime;
56  static const char* const bwavCodingHistory;
66  static const char* const bwavTimeReference;
67 
73  static StringPairArray createBWAVMetadata (const String& description,
74  const String& originator,
75  const String& originatorRef,
76  Time dateAndTime,
77  int64 timeReferenceSamples,
78  const String& codingHistory);
79 
80  //==============================================================================
81  // 'acid' chunk properties:
82 
83  static const char* const acidOneShot;
84  static const char* const acidRootSet;
85  static const char* const acidStretch;
86  static const char* const acidDiskBased;
87  static const char* const acidizerFlag;
88  static const char* const acidRootNote;
89  static const char* const acidBeats;
90  static const char* const acidDenominator;
91  static const char* const acidNumerator;
92  static const char* const acidTempo;
94  //==============================================================================
95  // INFO chunk properties:
96 
97  static const char* const riffInfoArchivalLocation;
98  static const char* const riffInfoArtist;
99  static const char* const riffInfoBaseURL;
100  static const char* const riffInfoCinematographer;
101  static const char* const riffInfoComment;
102  static const char* const riffInfoComment2;
103  static const char* const riffInfoComments;
104  static const char* const riffInfoCommissioned;
105  static const char* const riffInfoCopyright;
106  static const char* const riffInfoCostumeDesigner;
107  static const char* const riffInfoCountry;
108  static const char* const riffInfoCropped;
109  static const char* const riffInfoDateCreated;
110  static const char* const riffInfoDateTimeOriginal;
111  static const char* const riffInfoDefaultAudioStream;
112  static const char* const riffInfoDimension;
113  static const char* const riffInfoDirectory;
114  static const char* const riffInfoDistributedBy;
115  static const char* const riffInfoDotsPerInch;
116  static const char* const riffInfoEditedBy;
117  static const char* const riffInfoEighthLanguage;
118  static const char* const riffInfoEncodedBy;
119  static const char* const riffInfoEndTimecode;
120  static const char* const riffInfoEngineer;
121  static const char* const riffInfoFifthLanguage;
122  static const char* const riffInfoFirstLanguage;
123  static const char* const riffInfoFourthLanguage;
124  static const char* const riffInfoGenre;
125  static const char* const riffInfoKeywords;
126  static const char* const riffInfoLanguage;
127  static const char* const riffInfoLength;
128  static const char* const riffInfoLightness;
129  static const char* const riffInfoLocation;
130  static const char* const riffInfoLogoIconURL;
131  static const char* const riffInfoLogoURL;
132  static const char* const riffInfoMedium;
133  static const char* const riffInfoMoreInfoBannerImage;
134  static const char* const riffInfoMoreInfoBannerURL;
135  static const char* const riffInfoMoreInfoText;
136  static const char* const riffInfoMoreInfoURL;
137  static const char* const riffInfoMusicBy;
138  static const char* const riffInfoNinthLanguage;
139  static const char* const riffInfoNumberOfParts;
140  static const char* const riffInfoOrganisation;
141  static const char* const riffInfoPart;
142  static const char* const riffInfoProducedBy;
143  static const char* const riffInfoProductName;
144  static const char* const riffInfoProductionDesigner;
145  static const char* const riffInfoProductionStudio;
146  static const char* const riffInfoRate;
147  static const char* const riffInfoRated;
148  static const char* const riffInfoRating;
149  static const char* const riffInfoRippedBy;
150  static const char* const riffInfoSecondaryGenre;
151  static const char* const riffInfoSecondLanguage;
152  static const char* const riffInfoSeventhLanguage;
153  static const char* const riffInfoSharpness;
154  static const char* const riffInfoSixthLanguage;
155  static const char* const riffInfoSoftware;
156  static const char* const riffInfoSoundSchemeTitle;
157  static const char* const riffInfoSource;
158  static const char* const riffInfoSourceFrom;
159  static const char* const riffInfoStarring_ISTR;
160  static const char* const riffInfoStarring_STAR;
161  static const char* const riffInfoStartTimecode;
162  static const char* const riffInfoStatistics;
163  static const char* const riffInfoSubject;
164  static const char* const riffInfoTapeName;
165  static const char* const riffInfoTechnician;
166  static const char* const riffInfoThirdLanguage;
167  static const char* const riffInfoTimeCode;
168  static const char* const riffInfoTitle;
169  static const char* const riffInfoTrackNo;
170  static const char* const riffInfoTrackNumber;
171  static const char* const riffInfoURL;
172  static const char* const riffInfoVegasVersionMajor;
173  static const char* const riffInfoVegasVersionMinor;
174  static const char* const riffInfoVersion;
175  static const char* const riffInfoWatermarkURL;
176  static const char* const riffInfoWrittenBy;
177  static const char* const riffInfoYear;
179  //==============================================================================
181  static const char* const ISRC;
182 
184  static const char* const tracktionLoopInfo;
185 
186  //==============================================================================
187  Array<int> getPossibleSampleRates() override;
188  Array<int> getPossibleBitDepths() override;
189  bool canDoStereo() override;
190  bool canDoMono() override;
191  bool isChannelLayoutSupported (const AudioChannelSet& channelSet) override;
192 
193  //==============================================================================
194  AudioFormatReader* createReaderFor (InputStream* sourceStream,
195  bool deleteStreamIfOpeningFails) override;
196 
197  MemoryMappedAudioFormatReader* createMemoryMappedReader (const File&) override;
198  MemoryMappedAudioFormatReader* createMemoryMappedReader (FileInputStream*) override;
199 
200  AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo,
201  double sampleRateToUse,
202  unsigned int numberOfChannels,
203  int bitsPerSample,
204  const StringPairArray& metadataValues,
205  int qualityOptionIndex) override;
206 
207  AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo,
208  double sampleRateToUse,
209  const AudioChannelSet& channelLayout,
210  int bitsPerSample,
211  const StringPairArray& metadataValues,
212  int qualityOptionIndex) override;
214 
215  //==============================================================================
221  bool replaceMetadataInFile (const File& wavFile, const StringPairArray& newMetadata);
222 
223 
224 private:
225  JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WavAudioFormat)
226 };
227 
228 } // namespace juce
static const char *const riffInfoOrganisation
static const char *const riffInfoTapeName
static const char *const bwavOriginatorRef
static const char *const riffInfoComment2
static const char *const riffInfoMoreInfoBannerURL
static const char *const acidDenominator
static const char *const tracktionLoopInfo
static const char *const riffInfoWatermarkURL
static const char *const acidNumerator
static const char *const riffInfoProductionStudio
static const char *const acidDiskBased
static const char *const riffInfoCountry
static const char *const riffInfoTechnician
static const char *const riffInfoStartTimecode
static const char *const riffInfoSeventhLanguage
static const char *const riffInfoRate
static const char *const riffInfoMoreInfoBannerImage
static const char *const riffInfoLength
static const char *const riffInfoFifthLanguage
virtual AudioFormatWriter * createWriterFor(OutputStream *streamToWriteTo, double sampleRateToUse, unsigned int numberOfChannels, int bitsPerSample, const StringPairArray &metadataValues, int qualityOptionIndex)=0
static const char *const riffInfoStarring_ISTR
static const char *const riffInfoSecondLanguage
static const char *const riffInfoNumberOfParts
static const char *const riffInfoVegasVersionMajor
static const char *const riffInfoProductName
static const char *const bwavCodingHistory
static const char *const acidBeats
static const char *const riffInfoSixthLanguage
static const char *const riffInfoEndTimecode
static const char *const riffInfoMusicBy
static const char *const riffInfoVegasVersionMinor
static const char *const riffInfoRating
static const char *const riffInfoURL
static const char *const riffInfoComment
static const char *const riffInfoFourthLanguage
static const char *const riffInfoTrackNo
static const char *const riffInfoEighthLanguage
static const char *const riffInfoDateCreated
static const char *const riffInfoFirstLanguage
static const char *const riffInfoStarring_STAR
static const char *const riffInfoSubject
static const char *const bwavDescription
static const char *const riffInfoBaseURL
static const char *const riffInfoDimension
static const char *const riffInfoSource
static const char *const riffInfoDotsPerInch
static const char *const riffInfoLogoURL
static const char *const riffInfoStatistics
static const char *const riffInfoEditedBy
static const char *const riffInfoArchivalLocation
static const char *const riffInfoMedium
static const char *const riffInfoMoreInfoURL
static const char *const riffInfoSoundSchemeTitle
static const char *const riffInfoGenre
static const char *const riffInfoDefaultAudioStream
static const char *const riffInfoSourceFrom
static const char *const bwavOriginationTime
static const char *const riffInfoProductionDesigner
static const char *const bwavOriginationDate
static const char *const riffInfoMoreInfoText
static const char *const riffInfoKeywords
static const char *const riffInfoPart
static const char *const riffInfoDistributedBy
static const char *const ISRC
static const char *const acidRootNote
static const char *const acidTempo
static const char *const riffInfoCopyright
static const char *const riffInfoYear
static const char *const riffInfoLocation
static const char *const riffInfoTrackNumber
static const char *const riffInfoDirectory
static const char *const riffInfoLanguage
static const char *const riffInfoVersion
static const char *const riffInfoSoftware
static const char *const riffInfoRated
static const char *const riffInfoSharpness
static const char *const riffInfoWrittenBy
static const char *const acidOneShot
static const char *const riffInfoDateTimeOriginal
static const char *const riffInfoNinthLanguage
static const char *const riffInfoCostumeDesigner
static const char *const riffInfoLogoIconURL
static const char *const riffInfoEngineer
static const char *const riffInfoComments
static const char *const riffInfoArtist
static const char *const bwavOriginator
static const char *const riffInfoTimeCode
static const char *const riffInfoLightness
static const char *const acidStretch
static const char *const riffInfoThirdLanguage
static const char *const riffInfoTitle
static const char *const riffInfoSecondaryGenre
static const char *const riffInfoProducedBy
static const char *const riffInfoCinematographer
static const char *const acidizerFlag
static const char *const acidRootSet
static const char *const riffInfoCommissioned
static const char *const riffInfoCropped
static const char *const riffInfoEncodedBy
static const char *const bwavTimeReference
static const char *const riffInfoRippedBy