Mercurial > hg > vampy
comparison PyPlugin.h @ 18:e9cf443b18f5
* Add duration support (Vamp 2.0)
| author | cannam |
|---|---|
| date | Fri, 10 Jul 2009 15:14:24 +0000 |
| parents | a4c955e9a70b |
| children | 1ae350e97f93 |
comparison
equal
deleted
inserted
replaced
| 17:5b8167619b76 | 18:e9cf443b18f5 |
|---|---|
| 1 /* -*- c-basic-offset: 8 indent-tabs-mode: t -*- */ | |
| 1 /* | 2 /* |
| 2 Vamp | 3 Vamp |
| 3 | 4 |
| 4 An API for audio analysis and feature extraction plugins. | 5 An API for audio analysis and feature extraction plugins. |
| 5 | 6 |
| 43 #include <Python.h> | 44 #include <Python.h> |
| 44 | 45 |
| 45 #include "Mutex.h" | 46 #include "Mutex.h" |
| 46 | 47 |
| 47 //fields in OutputDescriptor | 48 //fields in OutputDescriptor |
| 49 namespace o { | |
| 48 enum eOutDescriptors { | 50 enum eOutDescriptors { |
| 49 not_found, | 51 not_found, |
| 50 identifier, | 52 identifier, |
| 51 name, | 53 name, |
| 52 description, | 54 description, |
| 59 maxValue, | 61 maxValue, |
| 60 isQuantized, | 62 isQuantized, |
| 61 quantizeStep, | 63 quantizeStep, |
| 62 sampleType, | 64 sampleType, |
| 63 sampleRate, | 65 sampleRate, |
| 66 hasDuration, | |
| 64 endNode | 67 endNode |
| 65 }; | 68 }; |
| 69 } | |
| 66 | 70 |
| 67 namespace p { | 71 namespace p { |
| 68 enum eParmDescriptors { | 72 enum eParmDescriptors { |
| 69 not_found, | 73 not_found, |
| 70 identifier, | 74 identifier, |
| 86 | 90 |
| 87 enum eFeatureFields { | 91 enum eFeatureFields { |
| 88 unknown, | 92 unknown, |
| 89 hasTimestamp, | 93 hasTimestamp, |
| 90 timeStamp, | 94 timeStamp, |
| 95 hasDuration, | |
| 96 duration, | |
| 91 values, | 97 values, |
| 92 label | 98 label |
| 93 }; | 99 }; |
| 94 | 100 |
| 95 enum eProcessType { | 101 enum eProcessType { |
| 99 }; | 105 }; |
| 100 | 106 |
| 101 class PyPlugin : public Vamp::Plugin | 107 class PyPlugin : public Vamp::Plugin |
| 102 { | 108 { |
| 103 public: | 109 public: |
| 104 PyPlugin(std::string plugin,float inputSampleRate, PyObject *pyInstance); | 110 PyPlugin(std::string plugin,float inputSampleRate, PyObject *pyInstance); |
| 105 virtual ~PyPlugin(); | 111 virtual ~PyPlugin(); |
| 106 | 112 |
| 107 bool initialise(size_t channels, size_t stepSize, size_t blockSize); | 113 bool initialise(size_t channels, size_t stepSize, size_t blockSize); |
| 108 void reset(); | 114 void reset(); |
| 109 | 115 |
| 110 InputDomain getInputDomain() const; | 116 InputDomain getInputDomain() const; |
| 111 size_t getPreferredBlockSize() const; | 117 size_t getPreferredBlockSize() const; |
| 112 size_t getPreferredStepSize() const; | 118 size_t getPreferredStepSize() const; |
| 113 size_t getMinChannelCount() const; | 119 size_t getMinChannelCount() const; |
| 114 size_t getMaxChannelCount() const; | 120 size_t getMaxChannelCount() const; |
| 115 | 121 |
| 116 std::string getIdentifier() const; | 122 std::string getIdentifier() const; |
| 117 std::string getName() const; | 123 std::string getName() const; |
| 118 std::string getDescription() const; | 124 std::string getDescription() const; |
| 119 std::string getMaker() const; | 125 std::string getMaker() const; |
| 120 int getPluginVersion() const; | 126 int getPluginVersion() const; |
| 121 std::string getCopyright() const; | 127 std::string getCopyright() const; |
| 122 | 128 |
| 123 OutputList getOutputDescriptors() const; | 129 OutputList getOutputDescriptors() const; |
| 124 ParameterList getParameterDescriptors() const; | 130 ParameterList getParameterDescriptors() const; |
| 125 float getParameter(std::string paramid) const; | 131 float getParameter(std::string paramid) const; |
| 126 void setParameter(std::string paramid, float newval); | 132 void setParameter(std::string paramid, float newval); |
| 127 | 133 |
| 128 FeatureSet process(const float *const *inputBuffers, | 134 FeatureSet process(const float *const *inputBuffers, |
| 129 Vamp::RealTime timestamp); | 135 Vamp::RealTime timestamp); |
| 130 | 136 |
| 131 FeatureSet getRemainingFeatures(); | 137 FeatureSet getRemainingFeatures(); |
| 132 | 138 |
| 133 protected: | 139 protected: |
| 134 PyObject *m_pyInstance; | 140 PyObject *m_pyInstance; |
| 135 size_t m_stepSize; | 141 size_t m_stepSize; |
| 136 size_t m_blockSize; | 142 size_t m_blockSize; |
| 137 size_t m_channels; | 143 size_t m_channels; |
| 138 std::string m_plugin; | 144 std::string m_plugin; |
| 139 std::string m_class; | 145 std::string m_class; |
| 140 std::string m_path; | 146 std::string m_path; |
| 141 int m_processType; | 147 int m_processType; |
| 142 PyObject *m_pyProcess; | 148 PyObject *m_pyProcess; |
