Chris@1: Chris@1: Chris@1:
Chris@1: Chris@3: Chris@1:
Chris@1: VampPluginSDK
Chris@3: 2.4
Chris@1:
Chris@1:
Chris@1: |
Chris@1:
Chris@1:
Chris@1:
Chris@1:
00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@1: 00002 Chris@1: 00003 /* Chris@1: 00004 Vamp Chris@1: 00005 Chris@1: 00006 An API for audio analysis and feature extraction plugins. Chris@1: 00007 Chris@1: 00008 Centre for Digital Music, Queen Mary, University of London. Chris@1: 00009 Copyright 2006-2009 Chris Cannam and QMUL. Chris@1: 00010 Chris@1: 00011 Permission is hereby granted, free of charge, to any person Chris@1: 00012 obtaining a copy of this software and associated documentation Chris@1: 00013 files (the "Software"), to deal in the Software without Chris@1: 00014 restriction, including without limitation the rights to use, copy, Chris@1: 00015 modify, merge, publish, distribute, sublicense, and/or sell copies Chris@1: 00016 of the Software, and to permit persons to whom the Software is Chris@1: 00017 furnished to do so, subject to the following conditions: Chris@1: 00018 Chris@1: 00019 The above copyright notice and this permission notice shall be Chris@1: 00020 included in all copies or substantial portions of the Software. Chris@1: 00021 Chris@1: 00022 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, Chris@1: 00023 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF Chris@1: 00024 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND Chris@1: 00025 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR Chris@1: 00026 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF Chris@1: 00027 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION Chris@1: 00028 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Chris@1: 00029 Chris@1: 00030 Except as contained in this notice, the names of the Centre for Chris@1: 00031 Digital Music; Queen Mary, University of London; and Chris Cannam Chris@1: 00032 shall not be used in advertising or otherwise to promote the sale, Chris@1: 00033 use or other dealings in this Software without prior written Chris@1: 00034 authorization. Chris@1: 00035 */ Chris@1: 00036 Chris@1: 00037 #ifndef _VAMP_PLUGIN_INPUT_DOMAIN_ADAPTER_H_ Chris@1: 00038 #define _VAMP_PLUGIN_INPUT_DOMAIN_ADAPTER_H_ Chris@1: 00039 Chris@1: 00040 #include "hostguard.h" Chris@1: 00041 #include "PluginWrapper.h" Chris@1: 00042 Chris@1: 00043 _VAMP_SDK_HOSTSPACE_BEGIN(PluginInputDomainAdapter.h) Chris@1: 00044 Chris@1: 00045 namespace Vamp { Chris@1: 00046 Chris@1: 00047 namespace HostExt { Chris@1: 00048 Chris@1: 00087 class PluginInputDomainAdapter : public PluginWrapper Chris@1: 00088 { Chris@1: 00089 public: Chris@1: 00095 PluginInputDomainAdapter(Plugin *plugin); Chris@1: 00096 virtual ~PluginInputDomainAdapter(); Chris@1: 00097 Chris@1: 00098 bool initialise(size_t channels, size_t stepSize, size_t blockSize); Chris@1: 00099 void reset(); Chris@1: 00100 Chris@1: 00101 InputDomain getInputDomain() const; Chris@1: 00102 Chris@1: 00103 size_t getPreferredStepSize() const; Chris@1: 00104 size_t getPreferredBlockSize() const; Chris@1: 00105 Chris@1: 00106 FeatureSet process(const float *const *inputBuffers, RealTime timestamp); Chris@1: 00107 Chris@1: 00142 enum ProcessTimestampMethod { Chris@1: 00143 ShiftTimestamp, Chris@1: 00144 ShiftData, Chris@1: 00145 NoShift Chris@1: 00146 }; Chris@1: 00147 Chris@1: 00156 void setProcessTimestampMethod(ProcessTimestampMethod); Chris@1: 00157 Chris@1: 00163 ProcessTimestampMethod getProcessTimestampMethod() const; Chris@1: 00164 Chris@1: 00190 RealTime getTimestampAdjustment() const; Chris@1: 00191 Chris@1: 00195 enum WindowType { Chris@1: 00196 Chris@1: 00197 RectangularWindow = 0, Chris@1: 00198 Chris@1: 00199 BartlettWindow = 1, Chris@1: 00200 TriangularWindow = 1, Chris@1: 00201 Chris@1: 00202 HammingWindow = 2, Chris@1: 00203 Chris@1: 00204 HanningWindow = 3, Chris@1: 00205 HannWindow = 3, Chris@1: 00206 Chris@1: 00207 BlackmanWindow = 4, Chris@1: 00208 Chris@1: 00209 NuttallWindow = 7, Chris@1: 00210 Chris@1: 00211 BlackmanHarrisWindow = 8 Chris@1: 00212 }; Chris@1: 00213 Chris@1: 00217 WindowType getWindowType() const; Chris@1: 00218 Chris@1: 00222 void setWindowType(WindowType type); Chris@1: 00223 Chris@1: 00224 Chris@1: 00225 protected: Chris@1: 00226 class Impl; Chris@1: 00227 Impl *m_impl; Chris@1: 00228 }; Chris@1: 00229 Chris@1: 00230 } Chris@1: 00231 Chris@1: 00232 } Chris@1: 00233 Chris@1: 00234 _VAMP_SDK_HOSTSPACE_END(PluginInputDomainAdapter.h) Chris@1: 00235 Chris@1: 00236 #endif Chris@3: