annotate README @ 28:b1bc4d045a4b vamp-plugin-tester-v1.0

* Solaris build fixes
author cannam
date Thu, 24 Sep 2009 14:11:14 +0000
parents 5dcdc86d45d4
children 4d04c4fa1905
rev   line source
cannam@17 1
cannam@17 2 Vamp Plugin Tester
cannam@17 3 ==================
cannam@17 4
cannam@17 5 This program tests Vamp audio feature extraction plugins
cannam@17 6 (http://vamp-plugins.org/) for certain common failure cases.
cannam@17 7
cannam@17 8 To test a single plugin, run vamp-plugin-tester with the name of your
cannam@17 9 plugin library and plugin identifier, separated by a colon. For example,
cannam@17 10
cannam@17 11 $ vamp-plugin-tester vamp-example-plugins:amplitudefollower
cannam@17 12
cannam@17 13 The plugin library must be installed in the Vamp plugin path (you
cannam@17 14 cannot give the path to the library file).
cannam@17 15
cannam@17 16
cannam@17 17 Options
cannam@17 18 =======
cannam@17 19
cannam@27 20 Supply the -a or --all option to tell vamp-plugin-tester to test all
cannam@27 21 plugins found in your Vamp path.
cannam@27 22
cannam@17 23 Supply the -v or --verbose option to tell vamp-plugin-tester to print
cannam@17 24 out the whole content of its returned feature log for diagnostic
cannam@17 25 purposes each time it prints an error or warning that arises from the
cannam@17 26 contents of a returned feature.
cannam@17 27
cannam@17 28 Supply the -n or --nondeterministic option to tell vamp-plugin-tester
cannam@17 29 that your plugins are expected to return different results each time
cannam@17 30 they are run. The default behaviour is to treat different results on
cannam@17 31 separate runs with the same input data as an error.
cannam@17 32
cannam@17 33
cannam@17 34 Errors and Warnings
cannam@17 35 ===================
cannam@17 36
cannam@17 37 Each test may cause one or several notes, warnings, or errors to be
cannam@17 38 printed. A note is printed when behaviour is observed that may be
cannam@17 39 correct behaviour but that is not always anticipated by the plugin
cannam@17 40 developer. A warning is printed when behaviour is observed that is
cannam@17 41 technically legal but that in practice most often happens by mistake.
cannam@17 42 An error is printed when behaviour is observed that cannot be correct.
cannam@17 43
cannam@17 44 vamp-plugin-tester prints all of its commentary to the standard
cannam@17 45 output. Standard error is usually used for diagnostic output printed
cannam@17 46 by the plugins themselves.
cannam@17 47
cannam@19 48 In addition to reports, vamp-plugin-tester runs some tests that are
cannam@19 49 intended to provoke the plugin into unexpected behaviour such as
cannam@19 50 memory errors. If vamp-plugin-tester crashes during a test, this may
cannam@19 51 be why. If you have access to a memory checker utility such as
cannam@19 52 valgrind, you are advised to run vamp-plugin-tester under it so as to
cannam@19 53 be informed of any memory errors that do not happen to cause crashes
cannam@19 54 (as well as memory leaks). The vamp-plugin-tester binaries
cannam@19 55 distributed by QMUL have been compiled with debug information
cannam@19 56 included, in order to facilitate this type of use.
cannam@17 57
cannam@17 58
cannam@17 59 Error and Warning Reference
cannam@17 60 ===========================
cannam@17 61
cannam@17 62 ** ERROR: Failed to load plugin
cannam@17 63
cannam@17 64 The plugin could not be loaded. Remember that the plugin must be
cannam@17 65 installed in the Vamp plugin path.
cannam@17 66
cannam@24 67 Normally this message will be preceded by one of the following
cannam@24 68 errors:
cannam@24 69
cannam@26 70 Invalid plugin key <key> in loadPlugin
cannam@24 71
cannam@26 72 - The argument given to vamp-plugin-tester could not be split
cannam@26 73 into library name and plugin identifier. Check the usage
cannam@26 74 description above.
cannam@26 75
cannam@26 76 No library found in Vamp path for plugin <key>
cannam@26 77
cannam@26 78 - No Vamp plugin library of that name was found in the Vamp path.
cannam@26 79 This message will often be accompanied by one of the following
cannam@26 80 errors; if it isn't, then that probably means the file did not
cannam@26 81 exist at all.
cannam@24 82
cannam@24 83 Plugin <id> not found in library <name>
cannam@24 84
cannam@24 85 - The library was found and loaded and was apparently a valid
cannam@24 86 Vamp plugin library, but it didn't contain a plugin of that id.
cannam@24 87 Check you typed the id correctly, and if this is your library,
cannam@24 88 check that the vampGetPluginDescriptor function returns the
cannam@24 89 plugin descriptor properly.
cannam@24 90
cannam@24 91 Unable to load library <name>
cannam@24 92
cannam@24 93 - A dynamic library of that name was found, but the system library
cannam@24 94 loader could not load it. Perhaps it depends on another library
cannam@26 95 that is not available, or it was built for the wrong architecture.
cannam@26 96 There may be more information in the error message.
cannam@24 97
cannam@24 98 No vampGetPluginDescriptor function found in library <name>
cannam@24 99
cannam@24 100 - A dynamic library of that name was found and loaded, but it
cannam@24 101 lacked the necessary public vampGetPluginDescriptor function.
cannam@24 102
cannam@24 103 * Are you sure this is a Vamp plugin library?
cannam@24 104 * If you made it, did you remember to include the global
cannam@24 105 vampGetPluginDescriptor function in your library along with
cannam@24 106 your plugin classes?
cannam@24 107 * If you are using Visual C++, did you remember to mark the
cannam@24 108 vampGetPluginDescriptor symbol exported, as described in
cannam@24 109 the README.msvc file in the SDK?
cannam@24 110
cannam@17 111 ** ERROR: (plugin|parameter|output) identifier <x> contains invalid characters
cannam@17 112
cannam@17 113 An identifier contains characters other than the permitted set (ASCII
cannam@17 114 lower and upper case letters, digits, "-" and "_" only).
cannam@17 115
cannam@17 116 ** ERROR: <field> is empty
cannam@17 117
cannam@17 118 A mandatory field, such as the name of a parameter or output,
cannam@17 119 contains no text.
cannam@17 120
cannam@17 121 ** WARNING: <field> is empty
cannam@17 122
cannam@17 123 An optional field, such as the description of a parameter or output,
cannam@17 124 contains no text.
cannam@17 125
cannam@17 126 ** ERROR: Plugin parameter <x> maxValue <= minValue
cannam@17 127
cannam@17 128 The minimum and maximum values given for a parameter are equal or in
cannam@17 129 the wrong order.
cannam@17 130
cannam@17 131 ** ERROR: Plugin parameter <x> defaultValue out of range
cannam@17 132
cannam@17 133 The default value for a parameter is not within the range defined by
cannam@17 134 the minimum and maximum values for the parameter.
cannam@17 135
cannam@17 136 ** ERROR: Plugin parameter <x> is quantized, but quantize step is zero
cannam@17 137
cannam@17 138 The quantizeStep value in a parameter with isQuantized true is set to
cannam@17 139 zero.
cannam@17 140
cannam@17 141 ** WARNING: Plugin parameter <x> value range is not a multiple of quantize step
cannam@17 142
cannam@17 143 A parameter's stated maximum value is not one of the possible values
cannam@17 144 obtained by adding multiples of the quantize step on to the minimum
cannam@17 145 value.
cannam@17 146
cannam@17 147 ** WARNING: Plugin parameter <x> has (more|fewer) value names than quantize steps
cannam@17 148
cannam@17 149 A quantized parameter lists some value names for its quantize steps,
cannam@17 150 but not the right number.
cannam@17 151
cannam@17 152 ** WARNING: Plugin parameter <x> default value is not a multiple of quantize
cannam@17 153 step beyond minimum
cannam@17 154
cannam@17 155 The default value for a parameter is not a value that the user could
cannam@17 156 actually obtain, if only offered the quantized values to choose from.
cannam@17 157
cannam@17 158 ** ERROR: Data returned on nonexistent output
cannam@17 159
cannam@17 160 The output number key for a returned feature is outside the range of
cannam@17 161 outputs listed in the plugin's output descriptor list.
cannam@17 162
cannam@17 163 ** NOTE: No results returned for output <x>
cannam@17 164
cannam@17 165 The plugin returned no features on one of its outputs, when given a
cannam@17 166 simple test file. This may be perfectly reasonable behaviour, but
cannam@17 167 you might like to know about it.
cannam@17 168
cannam@17 169 ** NOTE: Plugin returns features with timestamps on OneSamplePerStep output
cannam@17 170 ** NOTE: Plugin returns features with durations on OneSamplePerStep output
cannam@17 171
cannam@17 172 Hosts will usually ignore timestamps and durations attached to any
cannam@17 173 feature returned on a OneSamplePerStep output.
cannam@17 174
cannam@17 175 ** ERROR: Plugin returns features with no timestamps on VariableSampleRate output
cannam@17 176
cannam@17 177 Timestamps are mandatory on all features associated with a
cannam@17 178 VariableSampleRate output.
cannam@17 179
cannam@17 180 ** WARNING: Plugin returned one or more NaN/inf values
cannam@17 181
cannam@17 182 The plugin returned features containing floating-point not-a-number
cannam@17 183 or infinity values. This warning may be associated with a test
cannam@17 184 involving feeding some unexpected type of data to the plugin.
cannam@17 185
cannam@17 186 ** ERROR: Consecutive runs with separate instances produce different results
cannam@17 187
cannam@17 188 The plugin was constructed and run twice against the same input data,
cannam@17 189 and returned different features each time.
cannam@17 190
cannam@17 191 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 192 will downgrade this error to a note.
cannam@17 193
cannam@17 194 ** ERROR: Consecutive runs with the same instance (using reset) produce different results
cannam@17 195
cannam@17 196 The plugin was constructed, initialised, run against some input data,
cannam@17 197 reset with a call to its reset() function, and run again against the
cannam@17 198 same data; and it returned different features on each run. This is
cannam@17 199 often a sign of some simple error such as forgetting to implement
cannam@17 200 reset().
cannam@17 201
cannam@17 202 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 203 will downgrade this error to a note.
cannam@17 204
cannam@17 205 ** ERROR: Simultaneous runs with separate instances produce different results
cannam@17 206
cannam@17 207 Two instances of the plugin were constructed and run against the same
cannam@17 208 input data, giving each block of data to one plugin's process call
cannam@17 209 and then to the other's, "interleaving" the processing between the
cannam@17 210 two instances (but within a single application thread); and the two
cannam@17 211 instances returned different features. This may indicate ill-advised
cannam@17 212 use of static data shared between plugin instances.
cannam@17 213
cannam@17 214 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 215 will downgrade this error to a note.
cannam@17 216
cannam@17 217 ** WARNING: Consecutive runs with different starting timestamps produce the same result
cannam@17 218
cannam@17 219 The plugin was run twice on the same audio data, but with different
cannam@17 220 input timestamps, and it returned the same results each time. While
cannam@17 221 this is often unproblematic, it can indicate that a plugin failed to
cannam@17 222 take the input timestamp into account when calculating its output
cannam@17 223 timestamps (if any).
cannam@17 224
cannam@17 225 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 226 will downgrade this warning to a note.
cannam@17 227
cannam@17 228 ** ERROR: Explicitly setting current program to its supposed current value changes the results
cannam@17 229
cannam@17 230 The plugin was constructed and run twice on the same data, once
cannam@17 231 without changing its "program" setting, and again having set the
cannam@17 232 program to the vaule returned by getCurrentProgram() (i.e. the same
cannam@17 233 program that was supposed to be in effect already). It returned
cannam@17 234 different results for the two runs, suggesting that some internal
cannam@17 235 data was changed in selectProgram in a way that differed from its
cannam@17 236 default.
cannam@17 237
cannam@17 238 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 239 will downgrade this error to a note.
cannam@17 240
cannam@17 241 ** ERROR: Explicitly setting parameters to their supposed default values changes the results
cannam@17 242
cannam@17 243 The plugin was constructed and run twice on the same data, once
cannam@17 244 without changing any of its parameters, and again having set the
cannam@17 245 parameters to their specified default values. It returned different
cannam@17 246 results for the two runs, suggesting that some internal data was
cannam@17 247 changed when a parameter was set to its default, in a way that
cannam@17 248 differed from the plugin's initially constructed state.
cannam@17 249
cannam@17 250 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 251 will downgrade this error to a note.
cannam@17 252
cannam@17 253 ** WARNING: Constructor takes some time to run: work should be deferred to initialise?
cannam@17 254
cannam@17 255 The plugin took a long time to construct. You should ensure that the
cannam@17 256 constructor for the plugin runs as quickly as possible, because it
cannam@17 257 may be called by a host that is only scanning the properties of all
cannam@17 258 available plugins on startup. Any serious initialisation work should
cannam@17 259 be done in the initialise() function rather than the constructor.
cannam@17 260
cannam@17 261
cannam@18 262 Authors
cannam@18 263 =======
cannam@18 264
cannam@18 265 This program was written at the Centre for Digital Music at Queen
cannam@18 266 Mary, University of London, by Chris Cannam. Copyright (c) 2009 QMUL.
cannam@18 267