OpenShot Audio Library | OpenShotAudio  0.6.0
juce_AudioFormat.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 
26 namespace juce
27 {
28 
29 //==============================================================================
38 class JUCE_API AudioFormat
39 {
40 public:
41  //==============================================================================
43  virtual ~AudioFormat();
44 
45  //==============================================================================
49  const String& getFormatName() const;
50 
51  //==============================================================================
57  virtual StringArray getFileExtensions() const;
58 
64  virtual bool canHandleFile (const File& fileToTest);
65 
68 
71 
73  virtual bool canDoStereo() = 0;
74 
76  virtual bool canDoMono() = 0;
77 
79  virtual bool isCompressed();
80 
82  virtual bool isChannelLayoutSupported (const AudioChannelSet& channelSet);
83 
92  virtual StringArray getQualityOptions();
93 
94  //==============================================================================
111  bool deleteStreamIfOpeningFails) = 0;
112 
116  virtual MemoryMappedAudioFormatReader* createMemoryMappedReader (const File& file);
117  virtual MemoryMappedAudioFormatReader* createMemoryMappedReader (FileInputStream* fin);
118 
149  virtual AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo,
150  double sampleRateToUse,
151  unsigned int numberOfChannels,
152  int bitsPerSample,
153  const StringPairArray& metadataValues,
154  int qualityOptionIndex) = 0;
155 
187  virtual AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo,
188  double sampleRateToUse,
189  const AudioChannelSet& channelLayout,
190  int bitsPerSample,
191  const StringPairArray& metadataValues,
192  int qualityOptionIndex);
193 
194 protected:
200  AudioFormat (String formatName, StringArray fileExtensions);
201 
208  AudioFormat (StringRef formatName, StringRef fileExtensions);
209 
210 private:
211  //==============================================================================
212  String formatName;
213  StringArray fileExtensions;
214 };
215 
216 } // namespace juce
virtual Array< int > getPossibleBitDepths()=0
virtual bool canDoStereo()=0
virtual bool canDoMono()=0
virtual AudioFormatWriter * createWriterFor(OutputStream *streamToWriteTo, double sampleRateToUse, unsigned int numberOfChannels, int bitsPerSample, const StringPairArray &metadataValues, int qualityOptionIndex)=0
virtual Array< int > getPossibleSampleRates()=0
virtual AudioFormatReader * createReaderFor(InputStream *sourceStream, bool deleteStreamIfOpeningFails)=0