OpenShot Audio Library | OpenShotAudio 0.4.0
Loading...
Searching...
No Matches
juce_WavAudioFormat.h
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
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 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
37class JUCE_API WavAudioFormat : public AudioFormat
38{
39public:
40 //==============================================================================
43
45 ~WavAudioFormat() override;
46
47 //==============================================================================
48 // BWAV chunk properties:
49
50 static const char* const bwavDescription;
51 static const char* const bwavOriginator;
52 static const char* const bwavOriginatorRef;
53 static const char* const bwavOriginationDate;
54 static const char* const bwavOriginationTime;
55 static const char* const bwavCodingHistory;
65 static const char* const bwavTimeReference;
66
72 static StringPairArray createBWAVMetadata (const String& description,
73 const String& originator,
74 const String& originatorRef,
75 Time dateAndTime,
76 int64 timeReferenceSamples,
77 const String& codingHistory);
78
79 //==============================================================================
80 // 'acid' chunk properties:
81
82 static const char* const acidOneShot;
83 static const char* const acidRootSet;
84 static const char* const acidStretch;
85 static const char* const acidDiskBased;
86 static const char* const acidizerFlag;
87 static const char* const acidRootNote;
88 static const char* const acidBeats;
89 static const char* const acidDenominator;
90 static const char* const acidNumerator;
91 static const char* const acidTempo;
93 //==============================================================================
94 // INFO chunk properties:
95
96 static const char* const riffInfoArchivalLocation;
97 static const char* const riffInfoArtist;
98 static const char* const riffInfoBaseURL;
99 static const char* const riffInfoCinematographer;
100 static const char* const riffInfoComment;
101 static const char* const riffInfoComment2;
102 static const char* const riffInfoComments;
103 static const char* const riffInfoCommissioned;
104 static const char* const riffInfoCopyright;
105 static const char* const riffInfoCostumeDesigner;
106 static const char* const riffInfoCountry;
107 static const char* const riffInfoCropped;
108 static const char* const riffInfoDateCreated;
109 static const char* const riffInfoDateTimeOriginal;
110 static const char* const riffInfoDefaultAudioStream;
111 static const char* const riffInfoDimension;
112 static const char* const riffInfoDirectory;
113 static const char* const riffInfoDistributedBy;
114 static const char* const riffInfoDotsPerInch;
115 static const char* const riffInfoEditedBy;
116 static const char* const riffInfoEighthLanguage;
117 static const char* const riffInfoEncodedBy;
118 static const char* const riffInfoEndTimecode;
119 static const char* const riffInfoEngineer;
120 static const char* const riffInfoFifthLanguage;
121 static const char* const riffInfoFirstLanguage;
122 static const char* const riffInfoFourthLanguage;
123 static const char* const riffInfoGenre;
124 static const char* const riffInfoKeywords;
125 static const char* const riffInfoLanguage;
126 static const char* const riffInfoLength;
127 static const char* const riffInfoLightness;
128 static const char* const riffInfoLocation;
129 static const char* const riffInfoLogoIconURL;
130 static const char* const riffInfoLogoURL;
131 static const char* const riffInfoMedium;
132 static const char* const riffInfoMoreInfoBannerImage;
133 static const char* const riffInfoMoreInfoBannerURL;
134 static const char* const riffInfoMoreInfoText;
135 static const char* const riffInfoMoreInfoURL;
136 static const char* const riffInfoMusicBy;
137 static const char* const riffInfoNinthLanguage;
138 static const char* const riffInfoNumberOfParts;
139 static const char* const riffInfoOrganisation;
140 static const char* const riffInfoPart;
141 static const char* const riffInfoProducedBy;
142 static const char* const riffInfoProductName;
143 static const char* const riffInfoProductionDesigner;
144 static const char* const riffInfoProductionStudio;
145 static const char* const riffInfoRate;
146 static const char* const riffInfoRated;
147 static const char* const riffInfoRating;
148 static const char* const riffInfoRippedBy;
149 static const char* const riffInfoSecondaryGenre;
150 static const char* const riffInfoSecondLanguage;
151 static const char* const riffInfoSeventhLanguage;
152 static const char* const riffInfoSharpness;
153 static const char* const riffInfoSixthLanguage;
154 static const char* const riffInfoSoftware;
155 static const char* const riffInfoSoundSchemeTitle;
156 static const char* const riffInfoSource;
157 static const char* const riffInfoSourceFrom;
158 static const char* const riffInfoStarring_ISTR;
159 static const char* const riffInfoStarring_STAR;
160 static const char* const riffInfoStartTimecode;
161 static const char* const riffInfoStatistics;
162 static const char* const riffInfoSubject;
163 static const char* const riffInfoTapeName;
164 static const char* const riffInfoTechnician;
165 static const char* const riffInfoThirdLanguage;
166 static const char* const riffInfoTimeCode;
167 static const char* const riffInfoTitle;
168 static const char* const riffInfoTrackNo;
169 static const char* const riffInfoTrackNumber;
170 static const char* const riffInfoURL;
171 static const char* const riffInfoVegasVersionMajor;
172 static const char* const riffInfoVegasVersionMinor;
173 static const char* const riffInfoVersion;
174 static const char* const riffInfoWatermarkURL;
175 static const char* const riffInfoWrittenBy;
176 static const char* const riffInfoYear;
178 //==============================================================================
179 // ASWG chunk properties:
180
181 static const char* const aswgContentType;
182 static const char* const aswgProject;
183 static const char* const aswgOriginator;
184 static const char* const aswgOriginatorStudio;
185 static const char* const aswgNotes;
186 static const char* const aswgSession;
187 static const char* const aswgState;
188 static const char* const aswgEditor;
189 static const char* const aswgMixer;
190 static const char* const aswgFxChainName;
191 static const char* const aswgChannelConfig;
192 static const char* const aswgAmbisonicFormat;
193 static const char* const aswgAmbisonicChnOrder;
194 static const char* const aswgAmbisonicNorm;
195 static const char* const aswgMicType;
196 static const char* const aswgMicConfig;
197 static const char* const aswgMicDistance;
198 static const char* const aswgRecordingLoc;
199 static const char* const aswgIsDesigned;
200 static const char* const aswgRecEngineer;
201 static const char* const aswgRecStudio;
202 static const char* const aswgImpulseLocation;
203 static const char* const aswgCategory;
204 static const char* const aswgSubCategory;
205 static const char* const aswgCatId;
206 static const char* const aswgUserCategory;
207 static const char* const aswgUserData;
208 static const char* const aswgVendorCategory;
209 static const char* const aswgFxName;
210 static const char* const aswgLibrary;
211 static const char* const aswgCreatorId;
212 static const char* const aswgSourceId;
213 static const char* const aswgRmsPower;
214 static const char* const aswgLoudness;
215 static const char* const aswgLoudnessRange;
216 static const char* const aswgMaxPeak;
217 static const char* const aswgSpecDensity;
218 static const char* const aswgZeroCrossRate;
219 static const char* const aswgPapr;
220 static const char* const aswgText;
221 static const char* const aswgEfforts;
222 static const char* const aswgEffortType;
223 static const char* const aswgProjection;
224 static const char* const aswgLanguage;
225 static const char* const aswgTimingRestriction;
226 static const char* const aswgCharacterName;
227 static const char* const aswgCharacterGender;
228 static const char* const aswgCharacterAge;
229 static const char* const aswgCharacterRole;
230 static const char* const aswgActorName;
231 static const char* const aswgActorGender;
232 static const char* const aswgDirector;
233 static const char* const aswgDirection;
234 static const char* const aswgFxUsed;
235 static const char* const aswgUsageRights;
236 static const char* const aswgIsUnion;
237 static const char* const aswgAccent;
238 static const char* const aswgEmotion;
239 static const char* const aswgComposor;
240 static const char* const aswgArtist;
241 static const char* const aswgSongTitle;
242 static const char* const aswgGenre;
243 static const char* const aswgSubGenre;
244 static const char* const aswgProducer;
245 static const char* const aswgMusicSup;
246 static const char* const aswgInstrument;
247 static const char* const aswgMusicPublisher;
248 static const char* const aswgRightsOwner;
249 static const char* const aswgIsSource;
250 static const char* const aswgIsLoop;
251 static const char* const aswgIntensity;
252 static const char* const aswgIsFinal;
253 static const char* const aswgOrderRef;
254 static const char* const aswgIsOst;
255 static const char* const aswgIsCinematic;
256 static const char* const aswgIsLicensed;
257 static const char* const aswgIsDiegetic;
258 static const char* const aswgMusicVersion;
259 static const char* const aswgIsrcId;
260 static const char* const aswgTempo;
261 static const char* const aswgTimeSig;
262 static const char* const aswgInKey;
263 static const char* const aswgBillingCode;
264 static const char* const aswgVersion;
266 //==============================================================================
268 [[deprecated ("This string is identical to riffInfoSource, making it impossible to differentiate between the two")]]
269 static const char* const ISRC;
270
272 static const char* const internationalStandardRecordingCode;
273
275 static const char* const tracktionLoopInfo;
276
277 //==============================================================================
278 Array<int> getPossibleSampleRates() override;
279 Array<int> getPossibleBitDepths() override;
280 bool canDoStereo() override;
281 bool canDoMono() override;
282 bool isChannelLayoutSupported (const AudioChannelSet& channelSet) override;
283
284 //==============================================================================
285 AudioFormatReader* createReaderFor (InputStream* sourceStream,
286 bool deleteStreamIfOpeningFails) override;
287
288 MemoryMappedAudioFormatReader* createMemoryMappedReader (const File&) override;
289 MemoryMappedAudioFormatReader* createMemoryMappedReader (FileInputStream*) override;
290
291 AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo,
292 double sampleRateToUse,
293 unsigned int numberOfChannels,
294 int bitsPerSample,
295 const StringPairArray& metadataValues,
296 int qualityOptionIndex) override;
297
298 AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo,
299 double sampleRateToUse,
300 const AudioChannelSet& channelLayout,
301 int bitsPerSample,
302 const StringPairArray& metadataValues,
303 int qualityOptionIndex) override;
304 using AudioFormat::createWriterFor;
305
306 //==============================================================================
312 bool replaceMetadataInFile (const File& wavFile, const StringPairArray& newMetadata);
313
314
315private:
316 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WavAudioFormat)
317};
318
319} // namespace juce
static const char *const aswgRecStudio
static const char *const aswgBillingCode
static const char *const aswgMicDistance
static const char *const riffInfoCopyright
static const char *const acidRootSet
static const char *const aswgUserData
static const char *const riffInfoDirectory
static const char *const bwavCodingHistory
static const char *const bwavTimeReference
static const char *const acidDiskBased
static const char *const aswgEfforts
static const char *const aswgMusicSup
static const char *const aswgTimeSig
static const char *const acidOneShot
static const char *const aswgIsDesigned
static const char *const riffInfoOrganisation
static const char *const aswgCharacterName
static const char *const aswgIsUnion
static const char *const aswgLibrary
static const char *const riffInfoFirstLanguage
static const char *const aswgAmbisonicChnOrder
static const char *const aswgRecordingLoc
static const char *const aswgCreatorId
static const char *const riffInfoEncodedBy
static const char *const riffInfoCommissioned
static const char *const riffInfoMusicBy
static const char *const riffInfoSharpness
static const char *const aswgProducer
static const char *const aswgFxUsed
static const char *const riffInfoStatistics
static const char *const riffInfoNinthLanguage
static const char *const riffInfoDefaultAudioStream
static const char *const riffInfoGenre
static const char *const riffInfoMoreInfoBannerImage
static const char *const aswgProjection
static const char *const riffInfoVegasVersionMajor
static const char *const aswgContentType
static const char *const aswgOriginator
static const char *const riffInfoLocation
static const char *const aswgIsOst
static const char *const aswgRmsPower
static const char *const riffInfoRate
static const char *const riffInfoCostumeDesigner
static const char *const riffInfoVersion
static const char *const aswgActorGender
static const char *const riffInfoLightness
static const char *const riffInfoProductionStudio
static const char *const aswgIsLoop
static const char *const aswgState
static const char *const aswgSongTitle
static const char *const riffInfoProducedBy
static const char *const aswgSpecDensity
static const char *const riffInfoEighthLanguage
static const char *const riffInfoCropped
static const char *const aswgCharacterAge
static const char *const riffInfoRating
static const char *const aswgMicType
static const char *const aswgIsDiegetic
static const char *const riffInfoURL
static const char *const aswgVersion
static const char *const ISRC
static const char *const riffInfoMoreInfoBannerURL
static const char *const riffInfoStartTimecode
static const char *const aswgLoudnessRange
static const char *const bwavOriginatorRef
static const char *const aswgChannelConfig
static const char *const riffInfoTitle
static const char *const aswgIsFinal
static const char *const riffInfoArtist
static const char *const aswgMusicPublisher
static const char *const riffInfoSixthLanguage
static const char *const riffInfoSecondaryGenre
static const char *const riffInfoFifthLanguage
static const char *const riffInfoDotsPerInch
static const char *const riffInfoDistributedBy
static const char *const riffInfoStarring_ISTR
static const char *const aswgAccent
static const char *const riffInfoProductName
static const char *const riffInfoKeywords
static const char *const aswgInstrument
static const char *const aswgSession
static const char *const riffInfoRippedBy
static const char *const riffInfoLanguage
static const char *const riffInfoDateTimeOriginal
static const char *const acidizerFlag
static const char *const riffInfoBaseURL
static const char *const aswgArtist
static const char *const riffInfoProductionDesigner
static const char *const acidDenominator
static const char *const aswgCharacterRole
static const char *const aswgDirection
static const char *const aswgIsSource
static const char *const aswgFxChainName
static const char *const aswgFxName
static const char *const aswgOriginatorStudio
static const char *const riffInfoVegasVersionMinor
static const char *const riffInfoLength
static const char *const aswgUsageRights
static const char *const riffInfoTechnician
static const char *const riffInfoSoftware
static const char *const riffInfoStarring_STAR
static const char *const riffInfoDateCreated
static const char *const riffInfoSeventhLanguage
static const char *const aswgActorName
static const char *const aswgAmbisonicFormat
static const char *const acidBeats
static const char *const aswgMusicVersion
static const char *const aswgMixer
static const char *const riffInfoLogoIconURL
static const char *const tracktionLoopInfo
static const char *const acidNumerator
static const char *const bwavOriginationDate
static const char *const internationalStandardRecordingCode
static const char *const aswgSourceId
static const char *const riffInfoComments
static const char *const riffInfoNumberOfParts
static const char *const aswgVendorCategory
static const char *const bwavDescription
static const char *const riffInfoSoundSchemeTitle
static const char *const aswgPapr
static const char *const aswgEditor
static const char *const aswgComposor
static const char *const aswgSubGenre
static const char *const aswgEffortType
static const char *const riffInfoWatermarkURL
static const char *const aswgLoudness
static const char *const riffInfoTrackNo
static const char *const riffInfoMedium
static const char *const acidStretch
static const char *const aswgRightsOwner
static const char *const aswgImpulseLocation
static const char *const riffInfoThirdLanguage
static const char *const bwavOriginationTime
static const char *const aswgLanguage
static const char *const riffInfoArchivalLocation
static const char *const aswgTimingRestriction
static const char *const aswgIsrcId
static const char *const aswgIsLicensed
static const char *const aswgCategory
static const char *const aswgZeroCrossRate
static const char *const aswgGenre
static const char *const aswgMaxPeak
static const char *const riffInfoMoreInfoText
static const char *const aswgCharacterGender
static const char *const riffInfoCinematographer
static const char *const riffInfoFourthLanguage
static const char *const riffInfoSubject
static const char *const aswgEmotion
static const char *const aswgInKey
static const char *const aswgMicConfig
static const char *const riffInfoRated
static const char *const riffInfoDimension
static const char *const aswgProject
static const char *const aswgIntensity
static const char *const riffInfoEditedBy
static const char *const riffInfoYear
static const char *const riffInfoComment2
static const char *const riffInfoTrackNumber
static const char *const riffInfoEngineer
static const char *const riffInfoWrittenBy
static const char *const aswgSubCategory
static const char *const aswgText
static const char *const riffInfoTimeCode
static const char *const riffInfoSourceFrom
static const char *const riffInfoSource
static const char *const riffInfoLogoURL
static const char *const aswgOrderRef
static const char *const riffInfoCountry
static const char *const aswgAmbisonicNorm
static const char *const aswgUserCategory
static const char *const aswgNotes
static const char *const riffInfoSecondLanguage
static const char *const aswgTempo
static const char *const riffInfoComment
static const char *const riffInfoTapeName
static const char *const aswgDirector
static const char *const aswgRecEngineer
static const char *const aswgCatId
static const char *const riffInfoEndTimecode
static const char *const aswgIsCinematic
static const char *const riffInfoPart
static const char *const bwavOriginator
static const char *const acidTempo
static const char *const acidRootNote
static const char *const riffInfoMoreInfoURL