summaryrefslogtreecommitdiffstats
path: root/src/effects/lv2/lv2backend.h
blob: 1d59d871295f8ae79c34821b7eb7d727a53db4c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#pragma once

#include "effects/defs.h"
#include "effects/effectsbackend.h"
#include "effects/lv2/lv2manifest.h"
#include "preferences/usersettings.h"
#include <lilv-0/lilv/lilv.h>

class LV2Backend : public EffectsBackend {
    Q_OBJECT
  public:
    LV2Backend(QObject* pParent);
    virtual ~LV2Backend();

    void enumeratePlugins();
    const QList<QString> getEffectIds() const;
    const QSet<QString> getDiscoveredPluginIds() const;
    EffectManifestPointer getManifest(const QString& effectId) const;
    LV2Manifest* getLV2Manifest(const QString& effectId) const;
    bool canInstantiateEffect(const QString& effectId) const;
    EffectPointer instantiateEffect(EffectsManager* pEffectsManager,
                                    const QString& effectId);

  private:
    void initializeProperties();
    LilvWorld* m_pWorld;
    QHash<QString, LilvNode*> m_properties;
    QHash<QString, LV2Manifest*> m_registeredEffects;

    QString debugString() const {
        return "LV2Backend";
    }
};