AudioFormat* AudioFormatManager::findFormatForFileExtension (const String& fileExtension) const { if (! fileExtension.startsWithChar ('.')) return findFormatForFileExtension ("." + fileExtension); for (int i = 0; i < getNumKnownFormats(); ++i) if (getKnownFormat(i)->getFileExtensions().contains (fileExtension, true)) return getKnownFormat(i); return nullptr; }
AudioFormatReader* AudioFormatManager::createReaderFor (InputStream* audioFileStream) { // you need to actually register some formats before the manager can // use them to open a file! jassert (getNumKnownFormats() > 0); ScopedPointer <InputStream> in (audioFileStream); if (in != nullptr) { const int64 originalStreamPos = in->getPosition(); for (int i = 0; i < getNumKnownFormats(); ++i) { AudioFormatReader* const r = getKnownFormat(i)->createReaderFor (in, false); if (r != nullptr) { in.release(); return r; } in->setPosition (originalStreamPos); // the stream that is passed-in must be capable of being repositioned so // that all the formats can have a go at opening it. jassert (in->getPosition() == originalStreamPos); } } return nullptr; }
//============================================================================== AudioFormatReader* AudioFormatManager::createReaderFor (const File& file) { // you need to actually register some formats before the manager can // use them to open a file! jassert (getNumKnownFormats() > 0); for (int i = 0; i < getNumKnownFormats(); ++i) { AudioFormat* const af = getKnownFormat(i); if (af->canHandleFile (file)) { InputStream* const in = file.createInputStream(); if (in != nullptr) { AudioFormatReader* const r = af->createReaderFor (in, true); if (r != nullptr) return r; } } } return nullptr; }
String AudioFormatManager::getWildcardForAllFormats() const { StringArray allExtensions; int i; for (i = 0; i < getNumKnownFormats(); ++i) allExtensions.addArray (getKnownFormat (i)->getFileExtensions()); allExtensions.trim(); allExtensions.removeEmptyStrings(); String s; for (i = 0; i < allExtensions.size(); ++i) { s << '*'; if (! allExtensions[i].startsWithChar ('.')) s << '.'; s << allExtensions[i]; if (i < allExtensions.size() - 1) s << ';'; } return s; }
String AudioFormatManager::getWildcardForAllFormats() const { StringArray extensions; for (int i = 0; i < getNumKnownFormats(); ++i) extensions.addArray (getKnownFormat(i)->getFileExtensions()); extensions.trim(); extensions.removeEmptyStrings(); for (int i = 0; i < extensions.size(); ++i) extensions.set (i, (extensions[i].startsWithChar ('.') ? "*" : "*.") + extensions[i]); extensions.removeDuplicates (true); return extensions.joinIntoString (";"); }
//============================================================================== void AudioFormatManager::registerFormat (AudioFormat* newFormat, const bool makeThisTheDefaultFormat) { jassert (newFormat != nullptr); if (newFormat != nullptr) { #if JUCE_DEBUG for (int i = getNumKnownFormats(); --i >= 0;) { if (getKnownFormat (i)->getFormatName() == newFormat->getFormatName()) { jassertfalse; // trying to add the same format twice! } } #endif if (makeThisTheDefaultFormat) defaultFormatIndex = getNumKnownFormats(); knownFormats.add (newFormat); } }
AudioFormat* AudioFormatManager::getDefaultFormat() const { return getKnownFormat (defaultFormatIndex); }