annotate src/vamp-hostsdk/PluginWrapper.cpp @ 525:8c18bdaad04f c++11-mutex

Avoid simple static allocation of mutex, as it could lead to mutex being destroyed before last adapter that needs to use it (since adapters are usually also static)
author Chris Cannam
date Mon, 09 Sep 2019 10:24:13 +0100
parents 4a86f866bb6b
children 8ffb8985ae8f
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()),
cannam@233 47 m_plugin(plugin)
cannam@233 48 {
cannam@233 49 }
cannam@233 50
cannam@233 51 PluginWrapper::~PluginWrapper()
cannam@233 52 {
cannam@233 53 delete m_plugin;
cannam@233 54 }
cannam@233 55
cannam@233 56 bool
cannam@233 57 PluginWrapper::initialise(size_t channels, size_t stepSize, size_t blockSize)
cannam@233 58 {
cannam@233 59 return m_plugin->initialise(channels, stepSize, blockSize);
cannam@233 60 }
cannam@233 61
cannam@233 62 void
cannam@233 63 PluginWrapper::reset()
cannam@233 64 {
cannam@233 65 m_plugin->reset();
cannam@233 66 }
cannam@233 67
cannam@233 68 Plugin::InputDomain
cannam@233 69 PluginWrapper::getInputDomain() const
cannam@233 70 {
cannam@233 71 return m_plugin->getInputDomain();
cannam@233 72 }
cannam@233 73
cannam@233 74 unsigned int
cannam@233 75 PluginWrapper::getVampApiVersion() const
cannam@233 76 {
cannam@233 77 return m_plugin->getVampApiVersion();
cannam@233 78 }
cannam@233 79
cannam@233 80 std::string
cannam@233 81 PluginWrapper::getIdentifier() const
cannam@233 82 {
cannam@233 83 return m_plugin->getIdentifier();
cannam@233 84 }
cannam@233 85
cannam@233 86 std::string
cannam@233 87 PluginWrapper::getName() const
cannam@233 88 {
cannam@233 89 return m_plugin->getName();
cannam@233 90 }
cannam@233 91
cannam@233 92 std::string
cannam@233 93 PluginWrapper::getDescription() const
cannam@233 94 {
cannam@233 95 return m_plugin->getDescription();
cannam@233 96 }
cannam@233 97
cannam@233 98 std::string
cannam@233 99 PluginWrapper::getMaker() const
cannam@233 100 {
cannam@233 101 return m_plugin->getMaker();
cannam@233 102 }
cannam@233 103
cannam@233 104 int
cannam@233 105 PluginWrapper::getPluginVersion() const
cannam@233 106 {
cannam@233 107 return m_plugin->getPluginVersion();
cannam@233 108 }
cannam@233 109
cannam@233 110 std::string
cannam@233 111 PluginWrapper::getCopyright() const
cannam@233 112 {
cannam@233 113 return m_plugin->getCopyright();
cannam@233 114 }
cannam@233 115
cannam@233 116 PluginBase::ParameterList
cannam@233 117 PluginWrapper::getParameterDescriptors() const
cannam@233 118 {
cannam@233 119 return m_plugin->getParameterDescriptors();
cannam@233 120 }
cannam@233 121
cannam@233 122 float
cannam@233 123 PluginWrapper::getParameter(std::string parameter) const
cannam@233 124 {
cannam@233 125 return m_plugin->getParameter(parameter);
cannam@233 126 }
cannam@233 127
cannam@233 128 void
cannam@233 129 PluginWrapper::setParameter(std::string parameter, float value)
cannam@233 130 {
cannam@233 131 m_plugin->setParameter(parameter, value);
cannam@233 132 }
cannam@233 133
cannam@233 134 PluginBase::ProgramList
cannam@233 135 PluginWrapper::getPrograms() const
cannam@233 136 {
cannam@233 137 return m_plugin->getPrograms();
cannam@233 138 }
cannam@233 139
cannam@233 140 std::string
cannam@233 141 PluginWrapper::getCurrentProgram() const
cannam@233 142 {
cannam@233 143 return m_plugin->getCurrentProgram();
cannam@233 144 }
cannam@233 145
cannam@233 146 void
cannam@233 147 PluginWrapper::selectProgram(std::string program)
cannam@233 148 {
cannam@233 149 m_plugin->selectProgram(program);
cannam@233 150 }
cannam@233 151
cannam@233 152 size_t
cannam@233 153 PluginWrapper::getPreferredStepSize() const
cannam@233 154 {
cannam@233 155 return m_plugin->getPreferredStepSize();
cannam@233 156 }
cannam@233 157
cannam@233 158 size_t
cannam@233 159 PluginWrapper::getPreferredBlockSize() const
cannam@233 160 {
cannam@233 161 return m_plugin->getPreferredBlockSize();
cannam@233 162 }
cannam@233 163
cannam@233 164 size_t
cannam@233 165 PluginWrapper::getMinChannelCount() const
cannam@233 166 {
cannam@233 167 return m_plugin->getMinChannelCount();
cannam@233 168 }
cannam@233 169
cannam@233 170 size_t PluginWrapper::getMaxChannelCount() const
cannam@233 171 {
cannam@233 172 return m_plugin->getMaxChannelCount();
cannam@233 173 }
cannam@233 174
cannam@233 175 Plugin::OutputList
cannam@233 176 PluginWrapper::getOutputDescriptors() const
cannam@233 177 {
cannam@233 178 return m_plugin->getOutputDescriptors();
cannam@233 179 }
cannam@233 180
cannam@233 181 Plugin::FeatureSet
cannam@233 182 PluginWrapper::process(const float *const *inputBuffers, RealTime timestamp)
cannam@233 183 {
cannam@233 184 return m_plugin->process(inputBuffers, timestamp);
cannam@233 185 }
cannam@233 186
cannam@233 187 Plugin::FeatureSet
cannam@233 188 PluginWrapper::getRemainingFeatures()
cannam@233 189 {
cannam@233 190 return m_plugin->getRemainingFeatures();
cannam@233 191 }
cannam@233 192
cannam@233 193 }
cannam@233 194
cannam@233 195 }
cannam@233 196
cannam@263 197 _VAMP_SDK_HOSTSPACE_END(PluginWrapper.cpp)