annotate README @ 80:f84e12a1553c tip

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