annotate src/vamp-hostsdk/PluginWrapper.cpp @ 538:8ffb8985ae8f

Add ability to disown a wrapped plugin - making it possible to use the adapters in some situations involving managed pointers that didn't work previously
author Chris Cannam
date Thu, 23 Apr 2020 11:39:34 +0100
parents 4a86f866bb6b
children
rev   line source
cannam@233 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@233 2
cannam@233 3 /*
cannam@233 4 Vamp
cannam@233 5
cannam@233 6 An API for audio analysis and feature extraction plugins.
cannam@233 7
cannam@233 8 Centre for Digital Music, Queen Mary, University of London.
cannam@290 9 Copyright 2006-2009 Chris Cannam and QMUL.
cannam@233 10
cannam@233 11 Permission is hereby granted, free of charge, to any person
cannam@233 12 obtaining a copy of this software and associated documentation
cannam@233 13 files (the "Software"), to deal in the Software without
cannam@233 14 restriction, including without limitation the rights to use, copy,
cannam@233 15 modify, merge, publish, distribute, sublicense, and/or sell copies
cannam@233 16 of the Software, and to permit persons to whom the Software is
cannam@233 17 furnished to do so, subject to the following conditions:
cannam@233 18
cannam@233 19 The above copyright notice and this permission notice shall be
cannam@233 20 included in all copies or substantial portions of the Software.
cannam@233 21
cannam@233 22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
cannam@233 23 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
cannam@233 24 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
cannam@233 25 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
cannam@233 26 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
cannam@233 27 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
cannam@233 28 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cannam@233 29
cannam@233 30 Except as contained in this notice, the names of the Centre for
cannam@233 31 Digital Music; Queen Mary, University of London; and Chris Cannam
cannam@233 32 shall not be used in advertising or otherwise to promote the sale,
cannam@233 33 use or other dealings in this Software without prior written
cannam@233 34 authorization.
cannam@233 35 */
cannam@233 36
cannam@233 37 #include <vamp-hostsdk/PluginWrapper.h>
cannam@233 38
cannam@263 39 _VAMP_SDK_HOSTSPACE_BEGIN(PluginWrapper.cpp)
cannam@263 40
cannam@233 41 namespace Vamp {
cannam@233 42
cannam@233 43 namespace HostExt {
cannam@233 44
cannam@233 45 PluginWrapper::PluginWrapper(Plugin *plugin) :
Chris@500 46 Plugin(plugin->getInputSampleRate()),
Chris@538 47 m_plugin(plugin),
Chris@538 48 m_pluginIsOwned(true)
cannam@233 49 {
cannam@233 50 }
cannam@233 51
cannam@233 52 PluginWrapper::~PluginWrapper()
cannam@233 53 {
Chris@538 54 if (m_pluginIsOwned) {
Chris@538 55 delete m_plugin;
Chris@538 56 }
Chris@538 57 }
Chris@538 58
Chris@538 59 void
Chris@538 60 PluginWrapper::disownPlugin()
Chris@538 61 {
Chris@538 62 m_pluginIsOwned = false;
cannam@233 63 }
cannam@233 64
cannam@233 65 bool
cannam@233 66 PluginWrapper::initialise(size_t channels, size_t stepSize, size_t blockSize)
cannam@233 67 {
cannam@233 68 return m_plugin->initialise(channels, stepSize, blockSize);
cannam@233 69 }
cannam@233 70
cannam@233 71 void
cannam@233 72 PluginWrapper::reset()
cannam@233 73 {
cannam@233 74 m_plugin->reset();
cannam@233 75 }
cannam@233 76
cannam@233 77 Plugin::InputDomain
cannam@233 78 PluginWrapper::getInputDomain() const
cannam@233 79 {
cannam@233 80 return m_plugin->getInputDomain();
cannam@233 81 }
cannam@233 82
cannam@233 83 unsigned int
cannam@233 84 PluginWrapper::getVampApiVersion() const
cannam@233 85 {
cannam@233 86 return m_plugin->getVampApiVersion();
cannam@233 87 }
cannam@233 88
cannam@233 89 std::string
cannam@233 90 PluginWrapper::getIdentifier() const
cannam@233 91 {
cannam@233 92 return m_plugin->getIdentifier();
cannam@233 93 }
cannam@233 94
cannam@233 95 std::string
cannam@233 96 PluginWrapper::getName() const
cannam@233 97 {
cannam@233 98 return m_plugin->getName();
cannam@233 99 }
cannam@233 100
cannam@233 101 std::string
cannam@233 102 PluginWrapper::getDescription() const
cannam@233 103 {
cannam@233 104 return m_plugin->getDescription();
cannam@233 105 }
cannam@233 106
cannam@233 107 std::string
cannam@233 108 PluginWrapper::getMaker() const
cannam@233 109 {
cannam@233 110 return m_plugin->getMaker();
cannam@233 111 }
cannam@233 112
cannam@233 113 int
cannam@233 114 PluginWrapper::getPluginVersion() const
cannam@233 115 {
cannam@233 116 return m_plugin->getPluginVersion();
cannam@233 117 }
cannam@233 118
cannam@233 119 std::string
cannam@233 120 PluginWrapper::getCopyright() const
cannam@233 121 {
cannam@233 122 return m_plugin->getCopyright();
cannam@233 123 }
cannam@233 124
cannam@233 125 PluginBase::ParameterList
cannam@233 126 PluginWrapper::getParameterDescriptors() const
cannam@233 127 {
cannam@233 128 return m_plugin->getParameterDescriptors();
cannam@233 129 }
cannam@233 130
cannam@233 131 float
cannam@233 132 PluginWrapper::getParameter(std::string parameter) const
cannam@233 133 {
cannam@233 134 return m_plugin->getParameter(parameter);
cannam@233 135 }
cannam@233 136
cannam@233 137 void
cannam@233 138 PluginWrapper::setParameter(std::string parameter, float value)
cannam@233 139 {
cannam@233 140 m_plugin->setParameter(parameter, value);
cannam@233 141 }
cannam@233 142
cannam@233 143 PluginBase::ProgramList
cannam@233 144 PluginWrapper::getPrograms() const
cannam@233 145 {
cannam@233 146 return m_plugin->getPrograms();
cannam@233 147 }
cannam@233 148
cannam@233 149 std::string
cannam@233 150 PluginWrapper::getCurrentProgram() const
cannam@233 151 {
cannam@233 152 return m_plugin->getCurrentProgram();
cannam@233 153 }
cannam@233 154
cannam@233 155 void
cannam@233 156 PluginWrapper::selectProgram(std::string program)
cannam@233 157 {
cannam@233 158 m_plugin->selectProgram(program);
cannam@233 159 }
cannam@233 160
cannam@233 161 size_t
cannam@233 162 PluginWrapper::getPreferredStepSize() const
cannam@233 163 {
cannam@233 164 return m_plugin->getPreferredStepSize();
cannam@233 165 }
cannam@233 166
cannam@233 167 size_t
cannam@233 168 PluginWrapper::getPreferredBlockSize() const
cannam@233 169 {
cannam@233 170 return m_plugin->getPreferredBlockSize();
cannam@233 171 }
cannam@233 172
cannam@233 173 size_t
cannam@233 174 PluginWrapper::getMinChannelCount() const
cannam@233 175 {
cannam@233 176 return m_plugin->getMinChannelCount();
cannam@233 177 }
cannam@233 178
cannam@233 179 size_t PluginWrapper::getMaxChannelCount() const
cannam@233 180 {
cannam@233 181 return m_plugin->getMaxChannelCount();
cannam@233 182 }
cannam@233 183
cannam@233 184 Plugin::OutputList
cannam@233 185 PluginWrapper::getOutputDescriptors() const
cannam@233 186 {
cannam@233 187 return m_plugin->getOutputDescriptors();
cannam@233 188 }
cannam@233 189
cannam@233 190 Plugin::FeatureSet
cannam@233 191 PluginWrapper::process(const float *const *inputBuffers, RealTime timestamp)
cannam@233 192 {
cannam@233 193 return m_plugin->process(inputBuffers, timestamp);
cannam@233 194 }
cannam@233 195
cannam@233 196 Plugin::FeatureSet
cannam@233 197 PluginWrapper::getRemainingFeatures()
cannam@233 198 {
cannam@233 199 return m_plugin->getRemainingFeatures();
cannam@233 200 }
cannam@233 201
cannam@233 202 }
cannam@233 203
cannam@233 204 }
cannam@233 205
cannam@263 206 _VAMP_SDK_HOSTSPACE_END(PluginWrapper.cpp)