void AudioPluginCache::load(const QDir &dir) { qDebug() << Q_FUNC_INFO << dir.path(); /* Check that we can access the directory */ if (dir.exists() == false || dir.isReadable() == false) return; /* Loop through all files in the directory */ QStringListIterator it(dir.entryList()); while (it.hasNext() == true) { /* Attempt to load a plugin from the path */ QString fileName(it.next()); QString path = dir.absoluteFilePath(fileName); QPluginLoader loader(path, this); AudioDecoder* ptr = qobject_cast<AudioDecoder*> (loader.instance()); if (ptr != NULL) { qDebug() << "Loaded audio decoder plugin from" << fileName; /* Just append the plugin path to be used at runtime * for dynamic creation of instances */ ptr->initialize(""); m_pluginsPathList << path; loader.unload(); } else qDebug() << "Failed to load plugin: " << loader.errorString(); } }
QStringList AudioPluginCache::getSupportedFormats() { QStringList caps; foreach(QString path, m_pluginsPathList) { QPluginLoader loader(path, this); AudioDecoder* ptr = qobject_cast<AudioDecoder*> (loader.instance()); if (ptr != NULL) { ptr->initialize(""); caps << ptr->supportedFormats(); loader.unload(); } }