comparison plugin/RealTimePluginFactory.h @ 1830:5f8fbbde08ff audio-source-refactor

Use shared_ptr for plugin instances throughout
author Chris Cannam
date Fri, 20 Mar 2020 16:30:33 +0000
parents ad5f892c0c4d
children
comparison
equal deleted inserted replaced
1829:51fd27fbce9a 1830:5f8fbbde08ff
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