コード例 #1
0
QList<EffectDescription> BackendCapabilities::availableAudioEffects()
{
    BackendInterface *backendIface = qobject_cast<BackendInterface *>(Factory::backend());
    QList<EffectDescription> ret;
    if (backendIface) {
        const QList<int> deviceIndexes = backendIface->objectDescriptionIndexes(Phonon::EffectType);
        for (int i = 0; i < deviceIndexes.count(); ++i) {
            ret.append(EffectDescription::fromIndex(deviceIndexes.at(i)));
        }
    }
    return ret;
}
コード例 #2
0
void BackendBuilder::fillPlugins (BackendInterface & b) const
{
	for (auto const & plugin : toAdd)
	{
		b.addPlugin (plugin);
	}
}
コード例 #3
0
ObjectDescriptionData *ObjectDescriptionData::fromIndex(ObjectDescriptionType type, int index)
{
    bool is_audio_device = (AudioOutputDeviceType == type || AudioCaptureDeviceType == type);

    PulseSupport *pulse = PulseSupport::getInstance();
    if (is_audio_device && pulse->isActive()) {
        QList<int> indexes = pulse->objectDescriptionIndexes(type);
        if (indexes.contains(index)) {
            QHash<QByteArray, QVariant> properties = pulse->objectDescriptionProperties(type, index);
            return new ObjectDescriptionData(index, properties);
        }
    } else {
        BackendInterface *iface = qobject_cast<BackendInterface *>(Factory::backend());

        // prefer to get the ObjectDescriptionData from the platform plugin for audio devices
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
        if (is_audio_device) {
            PlatformPlugin *platformPlugin = Factory::platformPlugin();
            if (platformPlugin) {
                QList<int> indexes = platformPlugin->objectDescriptionIndexes(type);
                if (indexes.contains(index)) {
                    QHash<QByteArray, QVariant> properties = platformPlugin->objectDescriptionProperties(type, index);
                    return new ObjectDescriptionData(index, properties);
                }
            }
        }
#endif //QT_NO_PHONON_PLATFORMPLUGIN

        if (iface) {
            QList<int> indexes = iface->objectDescriptionIndexes(type);
            if (indexes.contains(index)) {
                QHash<QByteArray, QVariant> properties = iface->objectDescriptionProperties(type, index);
                return new ObjectDescriptionData(index, properties);
            }
        }
    }
    return new ObjectDescriptionData(0); // invalid
}
コード例 #4
0
        foreach (const QString &dir, dirsToCheck) {
            QVector<KPluginMetaData> metadataList = KPluginLoader::findPlugins(dir,
                [=](const KPluginMetaData &data)
            {
                return data.serviceTypes().contains("artikulate/libsound/backend");
            });

            foreach (const auto &metadata, metadataList) {
                loader.setFileName(metadata.fileName());
                qCDebug(LIBSOUND_LOG) << "Load Plugin: " << metadata.name();
                if (!loader.load()) {
                    qCCritical(LIBSOUND_LOG) << "Error while loading plugin: " << metadata.name();
                }
                KPluginFactory *factory = KPluginLoader(loader.fileName()).factory();
                if (!factory) {
                    qCCritical(LIBSOUND_LOG) << "Could not load plugin:" << metadata.name();
                    continue;
                }
                BackendInterface *plugin = factory->create<BackendInterface>(parent, QList< QVariant >());
                if (plugin->outputBackend()) {
                    m_backendList.append(plugin->outputBackend());
                }
            }