Mercurial > hg > vamp-aubio-plugins
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 |