annotate vamp-sdk/plugguard.h @ 354:e85513153c71

Initialise rate to 0. Otherwise there's a danger plugins will change the SampleType (e.g. to VariableSampleRate) but not set the rate because they don't think they need it (when in fact it needs to be set to 0)
author Chris Cannam
date Thu, 28 Mar 2013 15:49:17 +0000
parents dc40fff9f20b
children 5628c5ec4000
rev   line source
cannam@230 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@230 2
cannam@230 3 /*
cannam@230 4 Vamp
cannam@230 5
cannam@230 6 An API for audio analysis and feature extraction plugins.
cannam@230 7
cannam@230 8 Centre for Digital Music, Queen Mary, University of London.
cannam@230 9 Copyright 2006 Chris Cannam.
cannam@230 10
cannam@230 11 Permission is hereby granted, free of charge, to any person
cannam@230 12 obtaining a copy of this software and associated documentation
cannam@230 13 files (the "Software"), to deal in the Software without
cannam@230 14 restriction, including without limitation the rights to use, copy,
cannam@230 15 modify, merge, publish, distribute, sublicense, and/or sell copies
cannam@230 16 of the Software, and to permit persons to whom the Software is
cannam@230 17 furnished to do so, subject to the following conditions:
cannam@230 18
cannam@230 19 The above copyright notice and this permission notice shall be
cannam@230 20 included in all copies or substantial portions of the Software.
cannam@230 21
cannam@230 22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
cannam@230 23 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
cannam@230 24 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
cannam@230 25 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
cannam@230 26 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
cannam@230 27 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
cannam@230 28 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cannam@230 29
cannam@230 30 Except as contained in this notice, the names of the Centre for
cannam@230 31 Digital Music; Queen Mary, University of London; and Chris Cannam
cannam@230 32 shall not be used in advertising or otherwise to promote the sale,
cannam@230 33 use or other dealings in this Software without prior written
cannam@230 34 authorization.
cannam@230 35 */
cannam@230 36
cannam@234 37 #ifndef _VAMP_SDK_PLUGGUARD_H_
cannam@234 38 #define _VAMP_SDK_PLUGGUARD_H_
cannam@230 39
cannam@230 40 /**
cannam@230 41 * Normal usage should be:
cannam@230 42 *
cannam@230 43 * - Plugins include vamp-sdk/Plugin.h or vamp-sdk/PluginBase.h.
cannam@230 44 * These files include this header, which specifies an appropriate
cannam@230 45 * namespace for the plugin classes to avoid any risk of conflict
cannam@230 46 * with non-plugin class implementations in the host on load.
cannam@230 47 *
cannam@230 48 * - Hosts include vamp-hostsdk/Plugin.h, vamp-hostsdk/PluginBase.h,
cannam@233 49 * vamp-hostsdk/PluginHostAdapter, vamp-hostsdk/PluginLoader.h etc.
cannam@233 50 * These files include vamp-hostsdk/hostguard.h, which makes a note
cannam@230 51 * that we are in a host. A file such as vamp-hostsdk/Plugin.h
cannam@230 52 * then simply includes vamp-sdk/Plugin.h, and this guard header
cannam@230 53 * takes notice of the fact that it has been included from a host
cannam@230 54 * and leaves the plugin namespace unset.
cannam@230 55 *
cannam@230 56 * Problems will occur when a host includes files directly from the
cannam@230 57 * vamp-sdk directory. There are two reasons this might happen:
cannam@230 58 * mistake, perhaps owing to ignorance of the fact that this isn't
cannam@230 59 * allowed (particularly since it was the normal mechanism in v1 of
cannam@230 60 * the SDK); and a wish to incorporate plugin code directly into the
cannam@230 61 * host rather than having to load it.
cannam@230 62 *
cannam@230 63 * What if the host does include a vamp-sdk header by mistake? We can
cannam@230 64 * catch it if it's included before something from vamp-hostsdk. If
cannam@230 65 * it's included after something from vamp-hostsdk, it will work OK
cannam@234 66 * anyway. The remaining problem case is where nothing from
cannam@234 67 * vamp-hostsdk is included in the same file. We can't catch that.
cannam@230 68 */
cannam@230 69
cannam@263 70 #ifndef _VAMP_IN_HOSTSDK
cannam@230 71
cannam@243 72 #define _VAMP_IN_PLUGINSDK 1
cannam@230 73
Chris@349 74 #define VAMP_SDK_VERSION "2.5"
Chris@337 75 #define VAMP_SDK_MAJOR_VERSION 2
Chris@349 76 #define VAMP_SDK_MINOR_VERSION 5
Chris@337 77
cannam@233 78 #ifdef _VAMP_NO_PLUGIN_NAMESPACE
cannam@233 79 #define _VAMP_SDK_PLUGSPACE_BEGIN(h)
cannam@233 80 #define _VAMP_SDK_PLUGSPACE_END(h)
cannam@233 81 #else
cannam@265 82 #ifdef _VAMP_PLUGIN_IN_HOST_NAMESPACE
cannam@265 83 #define _VAMP_SDK_PLUGSPACE_BEGIN(h) \
cannam@265 84 namespace _VampHost {
cannam@265 85
cannam@265 86 #define _VAMP_SDK_PLUGSPACE_END(h) \
cannam@265 87 } \
cannam@265 88 using namespace _VampHost;
cannam@265 89 #else
cannam@233 90 #define _VAMP_SDK_PLUGSPACE_BEGIN(h) \
cannam@230 91 namespace _VampPlugin {
cannam@230 92
cannam@233 93 #define _VAMP_SDK_PLUGSPACE_END(h) \
cannam@230 94 } \
cannam@230 95 using namespace _VampPlugin;
cannam@233 96 #endif
cannam@265 97 #endif
cannam@230 98
cannam@230 99 #endif
cannam@230 100
cannam@230 101 #endif
cannam@230 102