To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / README @ 25:612333efd521

History | View | Annotate | Download (10.2 KB)

1

    
2
Vamp Plugin Tester
3
==================
4

    
5
This program tests Vamp audio feature extraction plugins
6
(http://vamp-plugins.org/) for certain common failure cases.
7

    
8
To test a single plugin, run vamp-plugin-tester with the name of your
9
plugin library and plugin identifier, separated by a colon.  For example,
10

    
11
  $ vamp-plugin-tester vamp-example-plugins:amplitudefollower
12

    
13
The plugin library must be installed in the Vamp plugin path (you
14
cannot give the path to the library file).
15

    
16
If you run vamp-plugin-tester with no arguments, it will test all
17
plugins found in your Vamp plugin path.
18

    
19

    
20
Options
21
=======
22

    
23
Supply the -v or --verbose option to tell vamp-plugin-tester to print
24
out the whole content of its returned feature log for diagnostic
25
purposes each time it prints an error or warning that arises from the
26
contents of a returned feature.
27

    
28
Supply the -n or --nondeterministic option to tell vamp-plugin-tester
29
that your plugins are expected to return different results each time
30
they are run.  The default behaviour is to treat different results on
31
separate runs with the same input data as an error.
32

    
33

    
34
Errors and Warnings
35
===================
36

    
37
Each test may cause one or several notes, warnings, or errors to be
38
printed.  A note is printed when behaviour is observed that may be
39
correct behaviour but that is not always anticipated by the plugin
40
developer.  A warning is printed when behaviour is observed that is
41
technically legal but that in practice most often happens by mistake.
42
An error is printed when behaviour is observed that cannot be correct.
43

    
44
vamp-plugin-tester prints all of its commentary to the standard
45
output.  Standard error is usually used for diagnostic output printed
46
by the plugins themselves.
47

    
48
In addition to reports, vamp-plugin-tester runs some tests that are
49
intended to provoke the plugin into unexpected behaviour such as
50
memory errors.  If vamp-plugin-tester crashes during a test, this may
51
be why.  If you have access to a memory checker utility such as
52
valgrind, you are advised to run vamp-plugin-tester under it so as to
53
be informed of any memory errors that do not happen to cause crashes
54
(as well as memory leaks).  The vamp-plugin-tester binaries
55
distributed by QMUL have been compiled with debug information
56
included, in order to facilitate this type of use.
57

    
58

    
59
Error and Warning Reference
60
===========================
61

    
62
 ** ERROR: Failed to load plugin
63

    
64
 The plugin could not be loaded.  Remember that the plugin must be
65
 installed in the Vamp plugin path.
66

    
67
 Normally this message will be preceded by one of the following
68
 errors:
69

    
70
   Invalid plugin key <key>
71

    
72
    - You have perhaps mistyped the argument to vamp-plugin-tester?
73

    
74
   Plugin <id> not found in library <name>
75

    
76
    - The library was found and loaded and was apparently a valid
77
      Vamp plugin library, but it didn't contain a plugin of that id.
78
      Check you typed the id correctly, and if this is your library,
79
      check that the vampGetPluginDescriptor function returns the
80
      plugin descriptor properly.
81

    
82
   No valid <name> found in Vamp path
83

    
84
    - No Vamp plugin library of that name was found in the Vamp path.
85
      This message will often be accompanied by one of the following
86
      errors; if it isn't, then that probably means the file did not
87
      exist at all.
88

    
89
   Unable to load library <name>
90

    
91
    - A dynamic library of that name was found, but the system library
92
      loader could not load it.  Perhaps it depends on another library
93
      that is not available, or it was built for the wrong architecture?
94

    
95
   No vampGetPluginDescriptor function found in library <name>
96

    
97
    - A dynamic library of that name was found and loaded, but it
98
      lacked the necessary public vampGetPluginDescriptor function.
99

    
100
      * Are you sure this is a Vamp plugin library?
101
      * If you made it, did you remember to include the global
102
        vampGetPluginDescriptor function in your library along with
103
	your plugin classes?
104
      * If you are using Visual C++, did you remember to mark the
105
        vampGetPluginDescriptor symbol exported, as described in
106
        the README.msvc file in the SDK?
107

    
108
 ** ERROR: (plugin|parameter|output) identifier <x> contains invalid characters
109

    
110
 An identifier contains characters other than the permitted set (ASCII
111
 lower and upper case letters, digits, "-" and "_" only).
112

    
113
 ** ERROR: <field> is empty
114

    
115
 A mandatory field, such as the name of a parameter or output,
116
 contains no text.
117

    
118
 ** WARNING: <field> is empty
119

    
120
 An optional field, such as the description of a parameter or output,
121
 contains no text.
122

    
123
 ** ERROR: Plugin parameter <x> maxValue <= minValue
124

    
125
 The minimum and maximum values given for a parameter are equal or in
126
 the wrong order.
127

    
128
 ** ERROR: Plugin parameter <x> defaultValue out of range
129

    
130
 The default value for a parameter is not within the range defined by
131
 the minimum and maximum values for the parameter.
132

    
133
 ** ERROR: Plugin parameter <x> is quantized, but quantize step is zero
134

    
135
 The quantizeStep value in a parameter with isQuantized true is set to
136
 zero.
137

    
138
 ** WARNING: Plugin parameter <x> value range is not a multiple of quantize step
139

    
140
 A parameter's stated maximum value is not one of the possible values
141
 obtained by adding multiples of the quantize step on to the minimum
142
 value.
143

    
144
 ** WARNING: Plugin parameter <x> has (more|fewer) value names than quantize steps
145

    
146
 A quantized parameter lists some value names for its quantize steps,
147
 but not the right number.
148
 
149
 ** WARNING: Plugin parameter <x> default value is not a multiple of quantize
150
 step beyond minimum
151

    
152
 The default value for a parameter is not a value that the user could
153
 actually obtain, if only offered the quantized values to choose from.
154

    
155
 ** ERROR: Data returned on nonexistent output
156

    
157
 The output number key for a returned feature is outside the range of
158
 outputs listed in the plugin's output descriptor list.
159

    
160
 ** NOTE: No results returned for output <x>
161

    
162
 The plugin returned no features on one of its outputs, when given a
163
 simple test file.  This may be perfectly reasonable behaviour, but
164
 you might like to know about it.
165

    
166
 ** NOTE: Plugin returns features with timestamps on OneSamplePerStep output
167
 ** NOTE: Plugin returns features with durations on OneSamplePerStep output
168

    
169
 Hosts will usually ignore timestamps and durations attached to any
170
 feature returned on a OneSamplePerStep output.
171

    
172
 ** ERROR: Plugin returns features with no timestamps on VariableSampleRate output
173

    
174
 Timestamps are mandatory on all features associated with a
175
 VariableSampleRate output.
176

    
177
 ** WARNING: Plugin returned one or more NaN/inf values
178

    
179
 The plugin returned features containing floating-point not-a-number
180
 or infinity values.  This warning may be associated with a test
181
 involving feeding some unexpected type of data to the plugin.
182
 
183
 ** ERROR: Consecutive runs with separate instances produce different results
184

    
185
 The plugin was constructed and run twice against the same input data,
186
 and returned different features each time.
187

    
188
 If you give the -n or --nondeterministic option, vamp-plugin-tester
189
 will downgrade this error to a note.
190

    
191
 ** ERROR: Consecutive runs with the same instance (using reset) produce different results
192

    
193
 The plugin was constructed, initialised, run against some input data,
194
 reset with a call to its reset() function, and run again against the
195
 same data; and it returned different features on each run.  This is
196
 often a sign of some simple error such as forgetting to implement
197
 reset().
198

    
199
 If you give the -n or --nondeterministic option, vamp-plugin-tester
200
 will downgrade this error to a note.
201

    
202
 ** ERROR: Simultaneous runs with separate instances produce different results
203

    
204
 Two instances of the plugin were constructed and run against the same
205
 input data, giving each block of data to one plugin's process call
206
 and then to the other's, "interleaving" the processing between the
207
 two instances (but within a single application thread); and the two
208
 instances returned different features.  This may indicate ill-advised
209
 use of static data shared between plugin instances.
210

    
211
 If you give the -n or --nondeterministic option, vamp-plugin-tester
212
 will downgrade this error to a note.
213

    
214
 ** WARNING: Consecutive runs with different starting timestamps produce the same result
215

    
216
 The plugin was run twice on the same audio data, but with different
217
 input timestamps, and it returned the same results each time.  While
218
 this is often unproblematic, it can indicate that a plugin failed to
219
 take the input timestamp into account when calculating its output
220
 timestamps (if any).
221

    
222
 If you give the -n or --nondeterministic option, vamp-plugin-tester
223
 will downgrade this warning to a note.
224

    
225
 ** ERROR: Explicitly setting current program to its supposed current value changes the results
226

    
227
 The plugin was constructed and run twice on the same data, once
228
 without changing its "program" setting, and again having set the
229
 program to the vaule returned by getCurrentProgram() (i.e. the same
230
 program that was supposed to be in effect already).  It returned
231
 different results for the two runs, suggesting that some internal
232
 data was changed in selectProgram in a way that differed from its
233
 default.
234

    
235
 If you give the -n or --nondeterministic option, vamp-plugin-tester
236
 will downgrade this error to a note.
237

    
238
 ** ERROR: Explicitly setting parameters to their supposed default values changes the results
239

    
240
 The plugin was constructed and run twice on the same data, once
241
 without changing any of its parameters, and again having set the
242
 parameters to their specified default values.  It returned different
243
 results for the two runs, suggesting that some internal data was
244
 changed when a parameter was set to its default, in a way that
245
 differed from the plugin's initially constructed state.
246

    
247
 If you give the -n or --nondeterministic option, vamp-plugin-tester
248
 will downgrade this error to a note.
249

    
250
 ** WARNING: Constructor takes some time to run: work should be deferred to initialise?
251

    
252
 The plugin took a long time to construct.  You should ensure that the
253
 constructor for the plugin runs as quickly as possible, because it
254
 may be called by a host that is only scanning the properties of all
255
 available plugins on startup.  Any serious initialisation work should
256
 be done in the initialise() function rather than the constructor.
257

    
258

    
259
Authors
260
=======
261

    
262
This program was written at the Centre for Digital Music at Queen
263
Mary, University of London, by Chris Cannam.  Copyright (c) 2009 QMUL.
264