c@19: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ c@19: c@19: /* c@19: Vamp c@19: c@19: An API for audio analysis and feature extraction plugins. c@19: c@19: Centre for Digital Music, Queen Mary, University of London. c@19: Copyright 2006 Chris Cannam. c@19: c@19: Permission is hereby granted, free of charge, to any person c@19: obtaining a copy of this software and associated documentation c@19: files (the "Software"), to deal in the Software without c@19: restriction, including without limitation the rights to use, copy, c@19: modify, merge, publish, distribute, sublicense, and/or sell copies c@19: of the Software, and to permit persons to whom the Software is c@19: furnished to do so, subject to the following conditions: c@19: c@19: The above copyright notice and this permission notice shall be c@19: included in all copies or substantial portions of the Software. c@19: c@19: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, c@19: EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF c@19: MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND c@19: NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR c@19: ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF c@19: CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION c@19: WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. c@19: c@19: Except as contained in this notice, the names of the Centre for c@19: Digital Music; Queen Mary, University of London; and Chris Cannam c@19: shall not be used in advertising or otherwise to promote the sale, c@19: use or other dealings in this Software without prior written c@19: authorization. c@19: */ c@19: c@19: #ifndef _GETMODE_PLUGIN_H_ c@19: #define _GETMODE_PLUGIN_H_ c@19: c@19: #include c@19: c@19: #include c@19: c@19: class GetModePlugin : public Vamp::Plugin c@19: { c@19: public: c@19: GetModePlugin(float inputSampleRate); c@19: virtual ~GetModePlugin(); c@19: c@19: bool initialise(size_t channels, size_t stepSize, size_t blockSize); c@19: void reset(); c@19: c@19: InputDomain getInputDomain() const { return TimeDomain; } c@19: c@19: std::string getName() const; c@19: std::string getDescription() const; c@19: std::string getMaker() const; c@19: int getPluginVersion() const; c@19: std::string getCopyright() const; c@19: c@19: OutputList getOutputDescriptors() const; c@19: c@19: FeatureSet process(const float *const *inputBuffers, c@19: Vamp::RealTime timestamp); c@19: c@19: FeatureSet getRemainingFeatures(); c@19: c@19: size_t getPreferredStepSize() const; c@19: size_t getPreferredBlockSize() const; c@19: c@19: protected: c@19: size_t m_stepSize; c@19: size_t m_blockSize; c@19: c@19: GetKeyMode* m_GetMode; c@19: double* m_InputFrame; c@19: unsigned int m_BlockandHopSize; c@19: }; c@19: c@19: c@19: #endif