11namespace tracktion {
inline namespace engine
14AudioFileFormatManager::AudioFileFormatManager()
20 wavFormat = std::make_unique<juce::WavAudioFormat>();
21 readFormats.
add (wavFormat.get());
22 writeFormats.
add (wavFormat.get());
24 aiffFormat = std::make_unique<juce::AiffAudioFormat>();
25 readFormats.
add (aiffFormat.
get());
26 writeFormats.
add (aiffFormat.
get());
28 floatFormat = std::make_unique<FloatAudioFormat>();
29 readFormats.
add (floatFormat.
get());
31 oggFormat = std::make_unique<juce::OggVorbisAudioFormat>();
32 readFormats.
add (oggFormat.
get());
33 writeFormats.
add (oggFormat.
get());
35 flacFormat = std::make_unique<juce::FlacAudioFormat>();
36 readFormats.
add (flacFormat.
get());
37 writeFormats.
add (flacFormat.
get());
39 #if TRACKTION_ENABLE_REX
40 rexFormat = std::make_unique<RexAudioFormat>();
41 readFormats.
add (rexFormat.get());
44 #if JUCE_MAC || JUCE_IOS
45 nativeAudioFormat = std::make_unique<juce::CoreAudioFormat>();
46 readFormats.
add (nativeAudioFormat.
get());
48 nativeAudioFormat = std::make_unique<juce::WindowsMediaAudioFormat>();
49 readFormats.
add (nativeAudioFormat.
get());
52 #if JUCE_USE_MP3AUDIOFORMAT
53 mp3ReadFormat = std::make_unique<juce::MP3AudioFormat>();
54 readFormats.
add (mp3ReadFormat.
get());
59 allFormats = readFormats;
68 #if TRACKTION_ENABLE_REX
72 #if JUCE_MAC || JUCE_IOS
78 #if JUCE_USE_MP3AUDIOFORMAT
90 memoryMappedFormatManager.
registerFormat (
new FloatAudioFormat(),
false);
93AudioFileFormatManager::~AudioFileFormatManager()
101 if (lameFormat !=
nullptr || lameForArray ==
nullptr || lameForAccess ==
nullptr)
104 lameFormat = std::move (lameForAccess);
105 writeFormats.
add (lameForArray.
get());
113 auto* af = additionalFormats.
add (formatCreator());
114 readFormats.
add (af);
122 if (isMemoryMappable)
123 memoryMappedFormatManager.
registerFormat (formatCreator(),
false);
128 for (
auto format : allFormats)
129 if (
format->canHandleFile (f))
135bool AudioFileFormatManager::canOpen (
const juce::File& f)
const
137 return getFormatFromFileName (f) !=
nullptr;
140juce::String AudioFileFormatManager::getValidFileExtensions()
const
142 return "wav;aiff;aif;ogg;mp3;mid;midi;flac;au;voc;caf;w64;rx2;rcy;rex;m4a;wfaf";
147 for (
auto format : allFormats)
148 if (
format->getFormatName() == formatName)
151 return getDefaultFormat();
void add(const ElementType &newElement)
ObjectClass * add(ObjectClass *newObject)
#define CRASH_TRACER
This macro adds the current location to a stack which gets logged if a crash happens.