annotate src/vamp-plugin-sdk-2.4/skeleton/MyPlugin.cpp @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents b7bda433d832
children
rev   line source
Chris@12 1
Chris@12 2 // This is a skeleton file for use in creating your own plugin
Chris@12 3 // libraries. Replace MyPlugin and myPlugin throughout with the name
Chris@12 4 // of your first plugin class, and fill in the gaps as appropriate.
Chris@12 5
Chris@12 6
Chris@12 7 #include "MyPlugin.h"
Chris@12 8
Chris@12 9
Chris@12 10 MyPlugin::MyPlugin(float inputSampleRate) :
Chris@12 11 Plugin(inputSampleRate)
Chris@12 12 // Also be sure to set your plugin parameters (presumably stored
Chris@12 13 // in member variables) to their default values here -- the host
Chris@12 14 // will not do that for you
Chris@12 15 {
Chris@12 16 }
Chris@12 17
Chris@12 18 MyPlugin::~MyPlugin()
Chris@12 19 {
Chris@12 20 }
Chris@12 21
Chris@12 22 string
Chris@12 23 MyPlugin::getIdentifier() const
Chris@12 24 {
Chris@12 25 return "myplugin";
Chris@12 26 }
Chris@12 27
Chris@12 28 string
Chris@12 29 MyPlugin::getName() const
Chris@12 30 {
Chris@12 31 return "My Plugin";
Chris@12 32 }
Chris@12 33
Chris@12 34 string
Chris@12 35 MyPlugin::getDescription() const
Chris@12 36 {
Chris@12 37 // Return something helpful here!
Chris@12 38 return "";
Chris@12 39 }
Chris@12 40
Chris@12 41 string
Chris@12 42 MyPlugin::getMaker() const
Chris@12 43 {
Chris@12 44 // Your name here
Chris@12 45 return "";
Chris@12 46 }
Chris@12 47
Chris@12 48 int
Chris@12 49 MyPlugin::getPluginVersion() const
Chris@12 50 {
Chris@12 51 // Increment this each time you release a version that behaves
Chris@12 52 // differently from the previous one
Chris@12 53 return 1;
Chris@12 54 }
Chris@12 55
Chris@12 56 string
Chris@12 57 MyPlugin::getCopyright() const
Chris@12 58 {
Chris@12 59 // This function is not ideally named. It does not necessarily
Chris@12 60 // need to say who made the plugin -- getMaker does that -- but it
Chris@12 61 // should indicate the terms under which it is distributed. For
Chris@12 62 // example, "Copyright (year). All Rights Reserved", or "GPL"
Chris@12 63 return "";
Chris@12 64 }
Chris@12 65
Chris@12 66 MyPlugin::InputDomain
Chris@12 67 MyPlugin::getInputDomain() const
Chris@12 68 {
Chris@12 69 return TimeDomain;
Chris@12 70 }
Chris@12 71
Chris@12 72 size_t
Chris@12 73 MyPlugin::getPreferredBlockSize() const
Chris@12 74 {
Chris@12 75 return 0; // 0 means "I can handle any block size"
Chris@12 76 }
Chris@12 77
Chris@12 78 size_t
Chris@12 79 MyPlugin::getPreferredStepSize() const
Chris@12 80 {
Chris@12 81 return 0; // 0 means "anything sensible"; in practice this
Chris@12 82 // means the same as the block size for TimeDomain
Chris@12 83 // plugins, or half of it for FrequencyDomain plugins
Chris@12 84 }
Chris@12 85
Chris@12 86 size_t
Chris@12 87 MyPlugin::getMinChannelCount() const
Chris@12 88 {
Chris@12 89 return 1;
Chris@12 90 }
Chris@12 91
Chris@12 92 size_t
Chris@12 93 MyPlugin::getMaxChannelCount() const
Chris@12 94 {
Chris@12 95 return 1;
Chris@12 96 }
Chris@12 97
Chris@12 98 MyPlugin::ParameterList
Chris@12 99 MyPlugin::getParameterDescriptors() const
Chris@12 100 {
Chris@12 101 ParameterList list;
Chris@12 102
Chris@12 103 // If the plugin has no adjustable parameters, return an empty
Chris@12 104 // list here (and there's no need to provide implementations of
Chris@12 105 // getParameter and setParameter in that case either).
Chris@12 106
Chris@12 107 // Note that it is your responsibility to make sure the parameters
Chris@12 108 // start off having their default values (e.g. in the constructor
Chris@12 109 // above). The host needs to know the default value so it can do
Chris@12 110 // things like provide a "reset to default" function, but it will
Chris@12 111 // not explicitly set your parameters to their defaults for you if
Chris@12 112 // they have not changed in the mean time.
Chris@12 113
Chris@12 114 ParameterDescriptor d;
Chris@12 115 d.identifier = "parameter";
Chris@12 116 d.name = "Some Parameter";
Chris@12 117 d.description = "";
Chris@12 118 d.unit = "";
Chris@12 119 d.minValue = 0;
Chris@12 120 d.maxValue = 10;
Chris@12 121 d.defaultValue = 5;
Chris@12 122 d.isQuantized = false;
Chris@12 123 list.push_back(d);
Chris@12 124
Chris@12 125 return list;
Chris@12 126 }
Chris@12 127
Chris@12 128 float
Chris@12 129 MyPlugin::getParameter(string identifier) const
Chris@12 130 {
Chris@12 131 if (identifier == "parameter") {
Chris@12 132 return 5; // return the ACTUAL current value of your parameter here!
Chris@12 133 }
Chris@12 134 return 0;
Chris@12 135 }
Chris@12 136
Chris@12 137 void
Chris@12 138 MyPlugin::setParameter(string identifier, float value)
Chris@12 139 {
Chris@12 140 if (identifier == "parameter") {
Chris@12 141 // set the actual value of your parameter
Chris@12 142 }
Chris@12 143 }
Chris@12 144
Chris@12 145 MyPlugin::ProgramList
Chris@12 146 MyPlugin::getPrograms() const
Chris@12 147 {
Chris@12 148 ProgramList list;
Chris@12 149
Chris@12 150 // If you have no programs, return an empty list (or simply don't
Chris@12 151 // implement this function or getCurrentProgram/selectProgram)
Chris@12 152
Chris@12 153 return list;
Chris@12 154 }
Chris@12 155
Chris@12 156 string
Chris@12 157 MyPlugin::getCurrentProgram() const
Chris@12 158 {
Chris@12 159 return ""; // no programs
Chris@12 160 }
Chris@12 161
Chris@12 162 void
Chris@12 163 MyPlugin::selectProgram(string name)
Chris@12 164 {
Chris@12 165 }
Chris@12 166
Chris@12 167 MyPlugin::OutputList
Chris@12 168 MyPlugin::getOutputDescriptors() const
Chris@12 169 {
Chris@12 170 OutputList list;
Chris@12 171
Chris@12 172 // See OutputDescriptor documentation for the possibilities here.
Chris@12 173 // Every plugin must have at least one output.
Chris@12 174
Chris@12 175 OutputDescriptor d;
Chris@12 176 d.identifier = "output";
Chris@12 177 d.name = "My Output";
Chris@12 178 d.description = "";
Chris@12 179 d.unit = "";
Chris@12 180 d.hasFixedBinCount = true;
Chris@12 181 d.binCount = 1;
Chris@12 182 d.hasKnownExtents = false;
Chris@12 183 d.isQuantized = false;
Chris@12 184 d.sampleType = OutputDescriptor::OneSamplePerStep;
Chris@12 185 d.hasDuration = false;
Chris@12 186 list.push_back(d);
Chris@12 187
Chris@12 188 return list;
Chris@12 189 }
Chris@12 190
Chris@12 191 bool
Chris@12 192 MyPlugin::initialise(size_t channels, size_t stepSize, size_t blockSize)
Chris@12 193 {
Chris@12 194 if (channels < getMinChannelCount() ||
Chris@12 195 channels > getMaxChannelCount()) return false;
Chris@12 196
Chris@12 197 // Real initialisation work goes here!
Chris@12 198
Chris@12 199 return true;
Chris@12 200 }
Chris@12 201
Chris@12 202 void
Chris@12 203 MyPlugin::reset()
Chris@12 204 {
Chris@12 205 // Clear buffers, reset stored values, etc
Chris@12 206 }
Chris@12 207
Chris@12 208 MyPlugin::FeatureSet
Chris@12 209 MyPlugin::process(const float *const *inputBuffers, Vamp::RealTime timestamp)
Chris@12 210 {
Chris@12 211 // Do actual work!
Chris@12 212 return FeatureSet();
Chris@12 213 }
Chris@12 214
Chris@12 215 MyPlugin::FeatureSet
Chris@12 216 MyPlugin::getRemainingFeatures()
Chris@12 217 {
Chris@12 218 return FeatureSet();
Chris@12 219 }
Chris@12 220