Mercurial > hg > svcore
comparison plugin/RealTimePluginFactory.h @ 1832:7c92c644db20
Merge from branch audio-source-refactor. Various changes to memory management for plugins, ring buffers etc, for safer code further up the stack
author | Chris Cannam |
---|---|
date | Fri, 03 Apr 2020 12:12:02 +0100 |
parents | 5f8fbbde08ff |
children |
comparison
equal
deleted
inserted
replaced
1831:498ed1e86f92 | 1832:7c92c644db20 |
---|---|
22 #ifndef SV_REALTIME_PLUGIN_FACTORY_H | 22 #ifndef SV_REALTIME_PLUGIN_FACTORY_H |
23 #define SV_REALTIME_PLUGIN_FACTORY_H | 23 #define SV_REALTIME_PLUGIN_FACTORY_H |
24 | 24 |
25 #include <QString> | 25 #include <QString> |
26 #include <vector> | 26 #include <vector> |
27 #include <memory> | |
27 | 28 |
28 #include "base/Debug.h" | 29 #include "base/Debug.h" |
29 #include "base/BaseTypes.h" | 30 #include "base/BaseTypes.h" |
30 | 31 |
31 class RealTimePluginInstance; | 32 class RealTimePluginInstance; |
78 virtual void enumeratePlugins(std::vector<QString> &list) = 0; | 79 virtual void enumeratePlugins(std::vector<QString> &list) = 0; |
79 | 80 |
80 /** | 81 /** |
81 * Get some basic information about a plugin (rapidly). | 82 * Get some basic information about a plugin (rapidly). |
82 */ | 83 */ |
83 virtual const RealTimePluginDescriptor *getPluginDescriptor(QString identifier) const = 0; | 84 virtual RealTimePluginDescriptor getPluginDescriptor(QString identifier) const = 0; |
84 | 85 |
85 /** | 86 /** |
86 * Instantiate a plugin. | 87 * Instantiate a plugin. |
87 */ | 88 */ |
88 virtual RealTimePluginInstance *instantiatePlugin(QString identifier, | 89 virtual std::shared_ptr<RealTimePluginInstance> instantiatePlugin(QString identifier, |
89 int clientId, | 90 int clientId, |
90 int position, | 91 int position, |
91 sv_samplerate_t sampleRate, | 92 sv_samplerate_t sampleRate, |
92 int blockSize, | 93 int blockSize, |
93 int channels) = 0; | 94 int channels) = 0; |
106 virtual QString getPluginLibraryPath(QString identifier) = 0; | 107 virtual QString getPluginLibraryPath(QString identifier) = 0; |
107 | 108 |
108 protected: | 109 protected: |
109 RealTimePluginFactory() { } | 110 RealTimePluginFactory() { } |
110 | 111 |
111 // for call by RealTimePluginInstance dtor | |
112 virtual void releasePlugin(RealTimePluginInstance *, QString identifier) = 0; | |
113 friend class RealTimePluginInstance; | |
114 | |
115 static sv_samplerate_t m_sampleRate; | 112 static sv_samplerate_t m_sampleRate; |
116 }; | 113 }; |
117 | 114 |
118 #endif | 115 #endif |