comparison libmain.cpp @ 31:2e979622bd93

Update plugin version numbers, remove API version back compatibility (API v1 is now so long out of date)
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 09 Jul 2012 15:44:07 +0100
parents 8c939fff7ee1
children cc7270debc8e
comparison
equal deleted inserted replaced
30:7fd8f7a0b088 31:2e979622bd93
21 #include "plugins/Pitch.h" 21 #include "plugins/Pitch.h"
22 #include "plugins/Notes.h" 22 #include "plugins/Notes.h"
23 #include "plugins/Tempo.h" 23 #include "plugins/Tempo.h"
24 #include "plugins/Silence.h" 24 #include "plugins/Silence.h"
25 25
26 template <typename P>
27 class VersionedPluginAdapter : public Vamp::PluginAdapterBase
28 {
29 public:
30 VersionedPluginAdapter(unsigned int v) : PluginAdapterBase(), m_v(v) { }
31 virtual ~VersionedPluginAdapter() { }
32
33 protected:
34 Vamp::Plugin *createPlugin(float inputSampleRate) {
35 P *p = new P(inputSampleRate, m_v);
36 Vamp::Plugin *plugin = dynamic_cast<Vamp::Plugin *>(p);
37 return plugin;
38 }
39 unsigned int m_v;
40 };
41
42 static Vamp::PluginAdapter<Onset> onsetAdapter; 26 static Vamp::PluginAdapter<Onset> onsetAdapter;
43 static Vamp::PluginAdapter<Pitch> pitchAdapter; 27 static Vamp::PluginAdapter<Pitch> pitchAdapter;
28 static Vamp::PluginAdapter<Notes> notesAdapter;
44 static Vamp::PluginAdapter<Tempo> tempoAdapter; 29 static Vamp::PluginAdapter<Tempo> tempoAdapter;
45 30 static Vamp::PluginAdapter<Silence> silenceAdapter;
46 // These two plugins both benefit from the Vamp v2 API if available
47 static VersionedPluginAdapter<Notes> *notesAdapter = 0;
48 static VersionedPluginAdapter<Silence> *silenceAdapter = 0;
49
50 struct Tidy
51 {
52 ~Tidy() { delete notesAdapter; delete silenceAdapter; }
53 };
54 static Tidy tidy;
55 31
56 const VampPluginDescriptor *vampGetPluginDescriptor(unsigned int vampApiVersion, 32 const VampPluginDescriptor *vampGetPluginDescriptor(unsigned int vampApiVersion,
57 unsigned int index) 33 unsigned int index)
58 { 34 {
59 if (vampApiVersion < 1) return 0; 35 if (vampApiVersion < 2) return 0;
60 36
61 switch (index) { 37 switch (index) {
62 case 0: return onsetAdapter.getDescriptor(); 38 case 0: return onsetAdapter.getDescriptor();
63 case 1: return pitchAdapter.getDescriptor(); 39 case 1: return pitchAdapter.getDescriptor();
40 case 2: return notesAdapter.getDescriptor();
64 case 3: return tempoAdapter.getDescriptor(); 41 case 3: return tempoAdapter.getDescriptor();
65 42 case 4: return silenceAdapter.getDescriptor();
66 case 2:
67 if (!notesAdapter) {
68 notesAdapter = new VersionedPluginAdapter<Notes>(vampApiVersion);
69 }
70 return notesAdapter->getDescriptor();
71
72 case 4:
73 if (!silenceAdapter) {
74 silenceAdapter = new VersionedPluginAdapter<Silence>(vampApiVersion);
75 }
76 return silenceAdapter->getDescriptor();
77
78 default: return 0; 43 default: return 0;
79 } 44 }
80 } 45 }
81 46