2 ==============================================================================
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
7 JUCE is an open source library subject to commercial or open-source
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
23 ==============================================================================
29 AudioFormat::AudioFormat (String name
, StringArray extensions
)
30 : formatName (name
), fileExtensions (extensions
)
34 AudioFormat::AudioFormat (StringRef name
, StringRef extensions
)
35 : formatName (name
.text
), fileExtensions (StringArray::fromTokens (extensions
, false))
39 AudioFormat::~AudioFormat()
43 bool AudioFormat::canHandleFile (const File
& f
)
45 for (auto& e
: getFileExtensions())
46 if (f
.hasFileExtension (e
))
52 const String
& AudioFormat::getFormatName() const { return formatName
; }
53 StringArray
AudioFormat::getFileExtensions() const { return fileExtensions
; }
54 bool AudioFormat::isCompressed() { return false; }
55 StringArray
AudioFormat::getQualityOptions() { return {}; }
57 MemoryMappedAudioFormatReader
* AudioFormat::createMemoryMappedReader (const File
&)
62 MemoryMappedAudioFormatReader
* AudioFormat::createMemoryMappedReader (FileInputStream
* fin
)
68 bool AudioFormat::isChannelLayoutSupported (const AudioChannelSet
& channelSet
)
70 if (channelSet
== AudioChannelSet::mono()) return canDoMono();
71 if (channelSet
== AudioChannelSet::stereo()) return canDoStereo();
76 AudioFormatWriter
* AudioFormat::createWriterFor (OutputStream
* streamToWriteTo
,
77 double sampleRateToUse
,
78 const AudioChannelSet
& channelLayout
,
80 const StringPairArray
& metadataValues
,
81 int qualityOptionIndex
)
83 if (isChannelLayoutSupported (channelLayout
))
84 return createWriterFor (streamToWriteTo
, sampleRateToUse
,
85 static_cast<unsigned int> (channelLayout
.size()),
86 bitsPerSample
, metadataValues
, qualityOptionIndex
);