11namespace tracktion {
inline namespace engine
14AudioFileFormatManager::AudioFileFormatManager()
21 readFormats.
add (wavFormat.get());
22 writeFormats.
add (wavFormat.get());
25 readFormats.
add (aiffFormat.
get());
26 writeFormats.
add (aiffFormat.
get());
29 readFormats.
add (floatFormat.
get());
32 readFormats.
add (oggFormat.
get());
33 writeFormats.
add (oggFormat.
get());
36 readFormats.
add (flacFormat.
get());
37 writeFormats.
add (flacFormat.
get());
39 #if TRACKTION_ENABLE_REX
41 readFormats.
add (rexFormat.get());
44 #if JUCE_MAC || JUCE_IOS
46 readFormats.
add (nativeAudioFormat.
get());
49 readFormats.
add (nativeAudioFormat.
get());
52 #if JUCE_USE_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.