Mercurial > hg > vamp-plugin-sdk
comparison vamp-sdk/PluginAdapter.h @ 12:a3d35e11c3fe
* Avoid repeated malloc/free for returned feature lists -- reuse static
feature lists where possible. Need to document the host behaviour that
permits this (i.e. a returned feature list is only valid until the next
call to process, getRemainingFeatures or releaseFeatureSet)
author | cannam |
---|---|
date | Thu, 06 Apr 2006 15:12:25 +0000 |
parents | 83d3eb580731 |
children | 85801331454c |
comparison
equal
deleted
inserted
replaced
11:6616075ec7b6 | 12:a3d35e11c3fe |
---|---|
82 static VampOutputDescriptor *vampGetOutputDescriptor(VampPluginHandle handle, | 82 static VampOutputDescriptor *vampGetOutputDescriptor(VampPluginHandle handle, |
83 unsigned int i); | 83 unsigned int i); |
84 | 84 |
85 static void vampReleaseOutputDescriptor(VampOutputDescriptor *desc); | 85 static void vampReleaseOutputDescriptor(VampOutputDescriptor *desc); |
86 | 86 |
87 static VampFeatureList **vampProcess(VampPluginHandle handle, | 87 static VampFeatureList *vampProcess(VampPluginHandle handle, |
88 float **inputBuffers, | 88 float **inputBuffers, |
89 int sec, | 89 int sec, |
90 int nsec); | 90 int nsec); |
91 | 91 |
92 static VampFeatureList **vampGetRemainingFeatures(VampPluginHandle handle); | 92 static VampFeatureList *vampGetRemainingFeatures(VampPluginHandle handle); |
93 | 93 |
94 static void vampReleaseFeatureSet(VampFeatureList **fs); | 94 static void vampReleaseFeatureSet(VampFeatureList *fs); |
95 | 95 |
96 void cleanup(Plugin *plugin); | 96 void cleanup(Plugin *plugin); |
97 void checkOutputMap(Plugin *plugin); | 97 void checkOutputMap(Plugin *plugin); |
98 unsigned int getOutputCount(Plugin *plugin); | 98 unsigned int getOutputCount(Plugin *plugin); |
99 VampOutputDescriptor *getOutputDescriptor(Plugin *plugin, | 99 VampOutputDescriptor *getOutputDescriptor(Plugin *plugin, |
100 unsigned int i); | 100 unsigned int i); |
101 VampFeatureList **process(Plugin *plugin, | 101 VampFeatureList *process(Plugin *plugin, |
102 float **inputBuffers, | 102 float **inputBuffers, |
103 int sec, int nsec); | 103 int sec, int nsec); |
104 VampFeatureList **getRemainingFeatures(Plugin *plugin); | 104 VampFeatureList *getRemainingFeatures(Plugin *plugin); |
105 VampFeatureList **convertFeatures(const Plugin::FeatureSet &features); | 105 VampFeatureList *convertFeatures(Plugin *plugin, |
106 const Plugin::FeatureSet &features); | |
106 | 107 |
107 typedef std::map<const void *, PluginAdapterBase *> AdapterMap; | 108 typedef std::map<const void *, PluginAdapterBase *> AdapterMap; |
108 static AdapterMap m_adapterMap; | 109 static AdapterMap m_adapterMap; |
109 static PluginAdapterBase *lookupAdapter(VampPluginHandle); | 110 static PluginAdapterBase *lookupAdapter(VampPluginHandle); |
110 | 111 |
114 Plugin::ProgramList m_programs; | 115 Plugin::ProgramList m_programs; |
115 | 116 |
116 typedef std::map<Plugin *, Plugin::OutputList *> OutputMap; | 117 typedef std::map<Plugin *, Plugin::OutputList *> OutputMap; |
117 OutputMap m_pluginOutputs; | 118 OutputMap m_pluginOutputs; |
118 | 119 |
119 typedef std::map<Plugin *, VampFeature ***> FeatureBufferMap; | 120 std::map<Plugin *, VampFeatureList *> m_fs; |
120 FeatureBufferMap m_pluginFeatures; | 121 std::map<Plugin *, std::vector<size_t> > m_fsizes; |
122 std::map<Plugin *, std::vector<std::vector<size_t> > > m_fvsizes; | |
123 void resizeFS(Plugin *plugin, int n); | |
124 void resizeFL(Plugin *plugin, int n, size_t sz); | |
125 void resizeFV(Plugin *plugin, int n, int j, size_t sz); | |
121 }; | 126 }; |
122 | 127 |
123 template <typename P> | 128 template <typename P> |
124 class PluginAdapter : public PluginAdapterBase | 129 class PluginAdapter : public PluginAdapterBase |
125 { | 130 { |