annotate README @ 24:064ad81ea53c

* Document the errors that can result from plugin load failure
author cannam
date Tue, 22 Sep 2009 10:53:21 +0000
parents 34d52412039c
children 612333efd521
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 If you run vamp-plugin-tester with no arguments, it will test all
cannam@17 17 plugins found in your Vamp plugin path.
cannam@17 18
cannam@17 19
cannam@17 20 Options
cannam@17 21 =======
cannam@17 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@24 70 Invalid plugin key <key>
cannam@24 71
cannam@24 72 - You have perhaps mistyped the argument to vamp-plugin-tester?
cannam@24 73
cannam@24 74 Plugin <id> not found in library <name>
cannam@24 75
cannam@24 76 - The library was found and loaded and was apparently a valid
cannam@24 77 Vamp plugin library, but it didn't contain a plugin of that id.
cannam@24 78 Check you typed the id correctly, and if this is your library,
cannam@24 79 check that the vampGetPluginDescriptor function returns the
cannam@24 80 plugin descriptor properly.
cannam@24 81
cannam@24 82 No valid <name> found in Vamp path
cannam@24 83
cannam@24 84 - No Vamp plugin library of that name was found in the path.
cannam@24 85 This message will often be accompanied by one of the following
cannam@24 86 errors; if it isn't, then that probably means the file did not
cannam@24 87 exist at all.
cannam@24 88
cannam@24 89 Unable to load library <name>
cannam@24 90
cannam@24 91 - A dynamic library of that name was found, but the system library
cannam@24 92 loader could not load it. Perhaps it depends on another library
cannam@24 93 that is not available, or it was built for the wrong architecture?
cannam@24 94
cannam@24 95 No vampGetPluginDescriptor function found in library <name>
cannam@24 96
cannam@24 97 - A dynamic library of that name was found and loaded, but it
cannam@24 98 lacked the necessary public vampGetPluginDescriptor function.
cannam@24 99
cannam@24 100 * Are you sure this is a Vamp plugin library?
cannam@24 101 * If you made it, did you remember to include the global
cannam@24 102 vampGetPluginDescriptor function in your library along with
cannam@24 103 your plugin classes?
cannam@24 104 * If you are using Visual C++, did you remember to mark the
cannam@24 105 vampGetPluginDescriptor symbol exported, as described in
cannam@24 106 the README.msvc file in the SDK?
cannam@24 107
cannam@17 108 ** ERROR: (plugin|parameter|output) identifier <x> contains invalid characters
cannam@17 109
cannam@17 110 An identifier contains characters other than the permitted set (ASCII
cannam@17 111 lower and upper case letters, digits, "-" and "_" only).
cannam@17 112
cannam@17 113 ** ERROR: <field> is empty
cannam@17 114
cannam@17 115 A mandatory field, such as the name of a parameter or output,
cannam@17 116 contains no text.
cannam@17 117
cannam@17 118 ** WARNING: <field> is empty
cannam@17 119
cannam@17 120 An optional field, such as the description of a parameter or output,
cannam@17 121 contains no text.
cannam@17 122
cannam@17 123 ** ERROR: Plugin parameter <x> maxValue <= minValue
cannam@17 124
cannam@17 125 The minimum and maximum values given for a parameter are equal or in
cannam@17 126 the wrong order.
cannam@17 127
cannam@17 128 ** ERROR: Plugin parameter <x> defaultValue out of range
cannam@17 129
cannam@17 130 The default value for a parameter is not within the range defined by
cannam@17 131 the minimum and maximum values for the parameter.
cannam@17 132
cannam@17 133 ** ERROR: Plugin parameter <x> is quantized, but quantize step is zero
cannam@17 134
cannam@17 135 The quantizeStep value in a parameter with isQuantized true is set to
cannam@17 136 zero.
cannam@17 137
cannam@17 138 ** WARNING: Plugin parameter <x> value range is not a multiple of quantize step
cannam@17 139
cannam@17 140 A parameter's stated maximum value is not one of the possible values
cannam@17 141 obtained by adding multiples of the quantize step on to the minimum
cannam@17 142 value.
cannam@17 143
cannam@17 144 ** WARNING: Plugin parameter <x> has (more|fewer) value names than quantize steps
cannam@17 145
cannam@17 146 A quantized parameter lists some value names for its quantize steps,
cannam@17 147 but not the right number.
cannam@17 148
cannam@17 149 ** WARNING: Plugin parameter <x> default value is not a multiple of quantize
cannam@17 150 step beyond minimum
cannam@17 151
cannam@17 152 The default value for a parameter is not a value that the user could
cannam@17 153 actually obtain, if only offered the quantized values to choose from.
cannam@17 154
cannam@17 155 ** ERROR: Data returned on nonexistent output
cannam@17 156
cannam@17 157 The output number key for a returned feature is outside the range of
cannam@17 158 outputs listed in the plugin's output descriptor list.
cannam@17 159
cannam@17 160 ** NOTE: No results returned for output <x>
cannam@17 161
cannam@17 162 The plugin returned no features on one of its outputs, when given a
cannam@17 163 simple test file. This may be perfectly reasonable behaviour, but
cannam@17 164 you might like to know about it.
cannam@17 165
cannam@17 166 ** NOTE: Plugin returns features with timestamps on OneSamplePerStep output
cannam@17 167 ** NOTE: Plugin returns features with durations on OneSamplePerStep output
cannam@17 168
cannam@17 169 Hosts will usually ignore timestamps and durations attached to any
cannam@17 170 feature returned on a OneSamplePerStep output.
cannam@17 171
cannam@17 172 ** ERROR: Plugin returns features with no timestamps on VariableSampleRate output
cannam@17 173
cannam@17 174 Timestamps are mandatory on all features associated with a
cannam@17 175 VariableSampleRate output.
cannam@17 176
cannam@17 177 ** WARNING: Plugin returned one or more NaN/inf values
cannam@17 178
cannam@17 179 The plugin returned features containing floating-point not-a-number
cannam@17 180 or infinity values. This warning may be associated with a test
cannam@17 181 involving feeding some unexpected type of data to the plugin.
cannam@17 182
cannam@17 183 ** ERROR: Consecutive runs with separate instances produce different results
cannam@17 184
cannam@17 185 The plugin was constructed and run twice against the same input data,
cannam@17 186 and returned different features each time.
cannam@17 187
cannam@17 188 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 189 will downgrade this error to a note.
cannam@17 190
cannam@17 191 ** ERROR: Consecutive runs with the same instance (using reset) produce different results
cannam@17 192
cannam@17 193 The plugin was constructed, initialised, run against some input data,
cannam@17 194 reset with a call to its reset() function, and run again against the
cannam@17 195 same data; and it returned different features on each run. This is
cannam@17 196 often a sign of some simple error such as forgetting to implement
cannam@17 197 reset().
cannam@17 198
cannam@17 199 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 200 will downgrade this error to a note.
cannam@17 201
cannam@17 202 ** ERROR: Simultaneous runs with separate instances produce different results
cannam@17 203
cannam@17 204 Two instances of the plugin were constructed and run against the same
cannam@17 205 input data, giving each block of data to one plugin's process call
cannam@17 206 and then to the other's, "interleaving" the processing between the
cannam@17 207 two instances (but within a single application thread); and the two
cannam@17 208 instances returned different features. This may indicate ill-advised
cannam@17 209 use of static data shared between plugin instances.
cannam@17 210
cannam@17 211 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 212 will downgrade this error to a note.
cannam@17 213
cannam@17 214 ** WARNING: Consecutive runs with different starting timestamps produce the same result
cannam@17 215
cannam@17 216 The plugin was run twice on the same audio data, but with different
cannam@17 217 input timestamps, and it returned the same results each time. While
cannam@17 218 this is often unproblematic, it can indicate that a plugin failed to
cannam@17 219 take the input timestamp into account when calculating its output
cannam@17 220 timestamps (if any).
cannam@17 221
cannam@17 222 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 223 will downgrade this warning to a note.
cannam@17 224
cannam@17 225 ** ERROR: Explicitly setting current program to its supposed current value changes the results
cannam@17 226
cannam@17 227 The plugin was constructed and run twice on the same data, once
cannam@17 228 without changing its "program" setting, and again having set the
cannam@17 229 program to the vaule returned by getCurrentProgram() (i.e. the same
cannam@17 230 program that was supposed to be in effect already). It returned
cannam@17 231 different results for the two runs, suggesting that some internal
cannam@17 232 data was changed in selectProgram in a way that differed from its
cannam@17 233 default.
cannam@17 234
cannam@17 235 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 236 will downgrade this error to a note.
cannam@17 237
cannam@17 238 ** ERROR: Explicitly setting parameters to their supposed default values changes the results
cannam@17 239
cannam@17 240 The plugin was constructed and run twice on the same data, once
cannam@17 241 without changing any of its parameters, and again having set the
cannam@17 242 parameters to their specified default values. It returned different
cannam@17 243 results for the two runs, suggesting that some internal data was
cannam@17 244 changed when a parameter was set to its default, in a way that
cannam@17 245 differed from the plugin's initially constructed state.
cannam@17 246
cannam@17 247 If you give the -n or --nondeterministic option, vamp-plugin-tester
cannam@17 248 will downgrade this error to a note.
cannam@17 249
cannam@17 250 ** WARNING: Constructor takes some time to run: work should be deferred to initialise?
cannam@17 251
cannam@17 252 The plugin took a long time to construct. You should ensure that the
cannam@17 253 constructor for the plugin runs as quickly as possible, because it
cannam@17 254 may be called by a host that is only scanning the properties of all
cannam@17 255 available plugins on startup. Any serious initialisation work should
cannam@17 256 be done in the initialise() function rather than the constructor.
cannam@17 257
cannam@17 258
cannam@18 259 Authors
cannam@18 260 =======
cannam@18 261
cannam@18 262 This program was written at the Centre for Digital Music at Queen
cannam@18 263 Mary, University of London, by Chris Cannam. Copyright (c) 2009 QMUL.
cannam@18 264