Revision 532:569fc23fa37a
| CHANGELOG | ||
|---|---|---|
| 1 |
|
|
| 2 |
Version 2.9, 2019-10-23 (maintenance release) |
|
| 3 |
|
|
| 4 |
* Fix non-thread-safe behaviour in PluginAdapter. Plugins built |
|
| 5 |
using the adapter classes in version 2.8 or earlier cannot safely |
|
| 6 |
be used simultaneously across threads with other instances of |
|
| 7 |
themselves or of other plugins in the same library (i.e. shared |
|
| 8 |
object). Hosts have been required to provide synchronisation for |
|
| 9 |
such cases. Version 2.9 introduces synchronisation in the plugin, |
|
| 10 |
making this usage safe. Unfortunately this does not make host code |
|
| 11 |
safe when using older plugin builds, as the problem and its fix |
|
| 12 |
are in the plugin side of the SDK. Caution is still required, but |
|
| 13 |
this fix does allow updated plugin builds to avoid problems with |
|
| 14 |
some existing hosts |
|
| 15 |
* Change required C++ language standard from C++98 to C++11. This |
|
| 16 |
is because of the use of std::mutex in the above fix |
|
| 1 | 17 |
|
| 2 | 18 |
Version 2.8, 2019-02-07 (maintenance and minor feature release) |
| 3 | 19 |
|
| Makefile.in | ||
|---|---|---|
| 41 | 41 |
CC = @CC@ |
| 42 | 42 |
CXX = @CXX@ |
| 43 | 43 |
CFLAGS = @CFLAGS@ |
| 44 |
CXXFLAGS = -I. @CXXFLAGS@ @SNDFILE_CFLAGS@ |
|
| 44 |
CXXFLAGS = -std=c++11 -I. @CXXFLAGS@ @SNDFILE_CFLAGS@
|
|
| 45 | 45 |
|
| 46 | 46 |
# ar, ranlib |
| 47 | 47 |
# |
| ... | ... | |
| 78 | 78 |
INSTALL_PLUGINS = $(INSTALL_PREFIX)/lib/vamp |
| 79 | 79 |
INSTALL_BINARIES = $(INSTALL_PREFIX)/bin |
| 80 | 80 |
|
| 81 |
INSTALL_SDK_LIBNAME = libvamp-sdk.so.2.8.0
|
|
| 81 |
INSTALL_SDK_LIBNAME = libvamp-sdk.so.2.9.0
|
|
| 82 | 82 |
INSTALL_SDK_LINK_ABI = libvamp-sdk.so.2 |
| 83 | 83 |
INSTALL_SDK_LINK_DEV = libvamp-sdk.so |
| 84 | 84 |
INSTALL_SDK_STATIC = libvamp-sdk.a |
| 85 | 85 |
INSTALL_SDK_LA = libvamp-sdk.la |
| 86 | 86 |
|
| 87 |
INSTALL_HOSTSDK_LIBNAME = libvamp-hostsdk.so.3.8.0
|
|
| 87 |
INSTALL_HOSTSDK_LIBNAME = libvamp-hostsdk.so.3.9.0
|
|
| 88 | 88 |
INSTALL_HOSTSDK_LINK_ABI = libvamp-hostsdk.so.3 |
| 89 | 89 |
INSTALL_HOSTSDK_LINK_DEV = libvamp-hostsdk.so |
| 90 | 90 |
INSTALL_HOSTSDK_STATIC = libvamp-hostsdk.a |
| ... | ... | |
| 113 | 113 |
HOSTSDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) |
| 114 | 114 |
PLUGIN_LDFLAGS = $(DYNAMIC_LDFLAGS) -exported_symbols_list build/vamp-plugin.list |
| 115 | 115 |
|
| 116 |
INSTALL_HOSTSDK_LIBNAME = libvamp-hostsdk.3.8.0.dylib
|
|
| 116 |
INSTALL_HOSTSDK_LIBNAME = libvamp-hostsdk.3.9.0.dylib
|
|
| 117 | 117 |
INSTALL_HOSTSDK_LINK_ABI = libvamp-hostsdk.3.dylib |
| 118 | 118 |
|
| 119 | 119 |
# The OS X linker doesn't allow you to request static linkage when |
| ... | ... | |
| 122 | 122 |
# dynamic, the static library will never be used. That's OK for the |
| 123 | 123 |
# host SDK, but we do want plugins to get static linkage of the plugin |
| 124 | 124 |
# SDK. So install the dynamic version under a different name. |
| 125 |
INSTALL_SDK_LIBNAME = libvamp-sdk-dynamic.2.8.0.dylib
|
|
| 125 |
INSTALL_SDK_LIBNAME = libvamp-sdk-dynamic.2.9.0.dylib
|
|
| 126 | 126 |
INSTALL_SDK_LINK_ABI = libvamp-sdk-dynamic.2.dylib |
| 127 | 127 |
|
| 128 | 128 |
endif |
| README | ||
|---|---|---|
| 9 | 9 |
Vamp is an API for C and C++ plugins that process sampled audio data |
| 10 | 10 |
to produce descriptive output (measurements or semantic observations). |
| 11 | 11 |
|
| 12 |
This is version 2.8 of the Vamp plugin Software Development Kit.
|
|
| 12 |
This is version 2.9 of the Vamp plugin Software Development Kit.
|
|
| 13 | 13 |
|
| 14 | 14 |
Plugins and hosts built with this SDK are binary compatible with those |
| 15 | 15 |
built using any version 2.0 or newer of the SDK. |
| acinclude.m4 | ||
|---|---|---|
| 1 |
|
|
| 2 |
# From autoconf archive: |
|
| 3 |
|
|
| 4 |
# ============================================================================ |
|
| 5 |
# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html |
|
| 6 |
# ============================================================================ |
|
| 7 |
# |
|
| 8 |
# SYNOPSIS |
|
| 9 |
# |
|
| 10 |
# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) |
|
| 11 |
# |
|
| 12 |
# DESCRIPTION |
|
| 13 |
# |
|
| 14 |
# Check for baseline language coverage in the compiler for the C++11 |
|
| 15 |
# standard; if necessary, add switches to CXXFLAGS to enable support. |
|
| 16 |
# |
|
| 17 |
# The first argument, if specified, indicates whether you insist on an |
|
| 18 |
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. |
|
| 19 |
# -std=c++11). If neither is specified, you get whatever works, with |
|
| 20 |
# preference for an extended mode. |
|
| 21 |
# |
|
| 22 |
# The second argument, if specified 'mandatory' or if left unspecified, |
|
| 23 |
# indicates that baseline C++11 support is required and that the macro |
|
| 24 |
# should error out if no mode with that support is found. If specified |
|
| 25 |
# 'optional', then configuration proceeds regardless, after defining |
|
| 26 |
# HAVE_CXX11 if and only if a supporting mode is found. |
|
| 27 |
# |
|
| 28 |
# LICENSE |
|
| 29 |
# |
|
| 30 |
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com> |
|
| 31 |
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com> |
|
| 32 |
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu> |
|
| 33 |
# Copyright (c) 2014 Alexey Sokolov <sokolov@google.com> |
|
| 34 |
# |
|
| 35 |
# Copying and distribution of this file, with or without modification, are |
|
| 36 |
# permitted in any medium without royalty provided the copyright notice |
|
| 37 |
# and this notice are preserved. This file is offered as-is, without any |
|
| 38 |
# warranty. |
|
| 39 |
|
|
| 40 |
m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[ |
|
| 41 |
template <typename T> |
|
| 42 |
struct check |
|
| 43 |
{
|
|
| 44 |
static_assert(sizeof(int) <= sizeof(T), "not big enough"); |
|
| 45 |
}; |
|
| 46 |
|
|
| 47 |
struct Base {
|
|
| 48 |
virtual void f() {}
|
|
| 49 |
}; |
|
| 50 |
struct Child : public Base {
|
|
| 51 |
virtual void f() override {}
|
|
| 52 |
}; |
|
| 53 |
|
|
| 54 |
typedef check<check<bool>> right_angle_brackets; |
|
| 55 |
|
|
| 56 |
int a; |
|
| 57 |
decltype(a) b; |
|
| 58 |
|
|
| 59 |
typedef check<int> check_type; |
|
| 60 |
check_type c; |
|
| 61 |
check_type&& cr = static_cast<check_type&&>(c); |
|
| 62 |
|
|
| 63 |
auto d = a; |
|
| 64 |
auto l = [](){};
|
|
| 65 |
]]) |
|
| 66 |
|
|
| 67 |
AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl |
|
| 68 |
m4_if([$1], [], [], |
|
| 69 |
[$1], [ext], [], |
|
| 70 |
[$1], [noext], [], |
|
| 71 |
[m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl |
|
| 72 |
m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], |
|
| 73 |
[$2], [mandatory], [ax_cxx_compile_cxx11_required=true], |
|
| 74 |
[$2], [optional], [ax_cxx_compile_cxx11_required=false], |
|
| 75 |
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])]) |
|
| 76 |
AC_LANG_PUSH([C++])dnl |
|
| 77 |
ac_success=no |
|
| 78 |
AC_CACHE_CHECK(whether $CXX supports C++11 features by default, |
|
| 79 |
ax_cv_cxx_compile_cxx11, |
|
| 80 |
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], |
|
| 81 |
[ax_cv_cxx_compile_cxx11=yes], |
|
| 82 |
[ax_cv_cxx_compile_cxx11=no])]) |
|
| 83 |
if test x$ax_cv_cxx_compile_cxx11 = xyes; then |
|
| 84 |
ac_success=yes |
|
| 85 |
fi |
|
| 86 |
|
|
| 87 |
m4_if([$1], [noext], [], [dnl |
|
| 88 |
if test x$ac_success = xno; then |
|
| 89 |
for switch in -std=gnu++11 -std=gnu++0x; do |
|
| 90 |
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) |
|
| 91 |
AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, |
|
| 92 |
$cachevar, |
|
| 93 |
[ac_save_CXXFLAGS="$CXXFLAGS" |
|
| 94 |
CXXFLAGS="$CXXFLAGS $switch" |
|
| 95 |
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], |
|
| 96 |
[eval $cachevar=yes], |
|
| 97 |
[eval $cachevar=no]) |
|
| 98 |
CXXFLAGS="$ac_save_CXXFLAGS"]) |
|
| 99 |
if eval test x\$$cachevar = xyes; then |
|
| 100 |
CXXFLAGS="$CXXFLAGS $switch" |
|
| 101 |
ac_success=yes |
|
| 102 |
break |
|
| 103 |
fi |
|
| 104 |
done |
|
| 105 |
fi]) |
|
| 106 |
|
|
| 107 |
m4_if([$1], [ext], [], [dnl |
|
| 108 |
if test x$ac_success = xno; then |
|
| 109 |
for switch in -std=c++11 -std=c++0x; do |
|
| 110 |
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) |
|
| 111 |
AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, |
|
| 112 |
$cachevar, |
|
| 113 |
[ac_save_CXXFLAGS="$CXXFLAGS" |
|
| 114 |
CXXFLAGS="$CXXFLAGS $switch" |
|
| 115 |
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], |
|
| 116 |
[eval $cachevar=yes], |
|
| 117 |
[eval $cachevar=no]) |
|
| 118 |
CXXFLAGS="$ac_save_CXXFLAGS"]) |
|
| 119 |
if eval test x\$$cachevar = xyes; then |
|
| 120 |
CXXFLAGS="$CXXFLAGS $switch" |
|
| 121 |
ac_success=yes |
|
| 122 |
break |
|
| 123 |
fi |
|
| 124 |
done |
|
| 125 |
fi]) |
|
| 126 |
AC_LANG_POP([C++]) |
|
| 127 |
if test x$ax_cxx_compile_cxx11_required = xtrue; then |
|
| 128 |
if test x$ac_success = xno; then |
|
| 129 |
AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) |
|
| 130 |
fi |
|
| 131 |
else |
|
| 132 |
if test x$ac_success = xno; then |
|
| 133 |
HAVE_CXX11=0 |
|
| 134 |
AC_MSG_NOTICE([No compiler with C++11 support was found]) |
|
| 135 |
else |
|
| 136 |
HAVE_CXX11=1 |
|
| 137 |
AC_DEFINE(HAVE_CXX11,1, |
|
| 138 |
[define if the compiler supports basic C++11 syntax]) |
|
| 139 |
fi |
|
| 140 |
|
|
| 141 |
AC_SUBST(HAVE_CXX11) |
|
| 142 |
fi |
|
| 143 |
]) |
|
| build/Doxyfile | ||
|---|---|---|
| 31 | 31 |
# This could be handy for archiving the generated documentation or |
| 32 | 32 |
# if some version control system is used. |
| 33 | 33 |
|
| 34 |
PROJECT_NUMBER = 2.8
|
|
| 34 |
PROJECT_NUMBER = 2.9
|
|
| 35 | 35 |
|
| 36 | 36 |
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) |
| 37 | 37 |
# base path where the generated documentation will be put. |
| build/Makefile.osx | ||
|---|---|---|
| 70 | 70 |
# Compile flags |
| 71 | 71 |
# |
| 72 | 72 |
CFLAGS += $(ARCHFLAGS) -fPIC |
| 73 |
CXXFLAGS += $(ARCHFLAGS) -O2 -Wall -I. -I/usr/local/include -fPIC |
|
| 73 |
CXXFLAGS += $(ARCHFLAGS) -std=c++11 -O2 -Wall -I. -I/usr/local/include -fPIC
|
|
| 74 | 74 |
|
| 75 | 75 |
# Link flags common to all link targets |
| 76 | 76 |
# |
| build/Makefile.osx.106 | ||
|---|---|---|
| 1 |
|
|
| 2 |
# Makefile for the Vamp plugin SDK. This builds the SDK objects, |
|
| 3 |
# libraries, example plugins, and the test host. Please adjust to |
|
| 4 |
# suit your operating system requirements. |
|
| 5 |
# |
|
| 6 |
# This version of the Makefile is approximately correct for OS/X. |
|
| 7 |
# Note that it has no "install" target; the following are the |
|
| 8 |
# library and related files that may be of interest resulting from |
|
| 9 |
# the build: |
|
| 10 |
# |
|
| 11 |
# libvamp-sdk.dylib [SDK dynamic library for plugins] |
|
| 12 |
# libvamp-hostsdk.dylib [SDK dynamic library for hosts] |
|
| 13 |
# |
|
| 14 |
# libvamp-sdk.a [SDK static library for plugins] |
|
| 15 |
# libvamp-hostsdk.a [SDK static library for hosts] |
|
| 16 |
# |
|
| 17 |
# examples/vamp-example-plugins.cat [copy this to your Vamp plugin dir] |
|
| 18 |
# examples/vamp-example-plugins.dylib [copy this to your Vamp plugin dir] |
|
| 19 |
# |
|
| 20 |
# host/vamp-simple-host [requires libsndfile to build] |
|
| 21 |
# |
|
| 22 |
# rdf/generator/vamp-rdf-template-generator |
|
| 23 |
|
|
| 24 |
# Makefile for the Vamp plugin SDK. This builds the SDK objects, |
|
| 25 |
# libraries, example plugins, and the test host. Please adjust to |
|
| 26 |
# suit your operating system requirements. |
|
| 27 |
|
|
| 28 |
APIDIR = vamp |
|
| 29 |
|
|
| 30 |
SDKDIR = vamp-sdk |
|
| 31 |
HOSTSDKDIR = vamp-hostsdk |
|
| 32 |
|
|
| 33 |
SRCDIR = src |
|
| 34 |
SDKSRCDIR = src/vamp-sdk |
|
| 35 |
HOSTSDKSRCDIR = src/vamp-hostsdk |
|
| 36 |
|
|
| 37 |
EXAMPLEDIR = examples |
|
| 38 |
HOSTDIR = host |
|
| 39 |
PCDIR = pkgconfig |
|
| 40 |
LADIR = build |
|
| 41 |
RDFGENDIR = rdf/generator |
|
| 42 |
|
|
| 43 |
### |
|
| 44 |
### Start of user-serviceable parts |
|
| 45 |
### |
|
| 46 |
|
|
| 47 |
# Default build target (or use "make <target>" to select one). |
|
| 48 |
# Targets are: |
|
| 49 |
# all -- build everything |
|
| 50 |
# sdk -- build all the Vamp SDK libraries for plugins and hosts |
|
| 51 |
# sdkstatic -- build only the static versions of the SDK libraries |
|
| 52 |
# plugins -- build the example plugins (and the SDK if required) |
|
| 53 |
# host -- build the simple Vamp plugin host (and the SDK if required) |
|
| 54 |
# rdfgen -- build the RDF template generator (and the SDK if required) |
|
| 55 |
# test -- build the host and example plugins, and run a quick test |
|
| 56 |
# clean -- remove binary targets |
|
| 57 |
# distclean -- remove all targets |
|
| 58 |
# |
|
| 59 |
default: all |
|
| 60 |
|
|
| 61 |
# Architecture and developer SDK selection flags. Change these only |
|
| 62 |
# if you want to select a different OS/X compatibility level from the |
|
| 63 |
# default. |
|
| 64 |
# |
|
| 65 |
# By default, we try to find the oldest available SDK that is newer |
|
| 66 |
# than 10.4. |
|
| 67 |
# |
|
| 68 |
# If you want to override this to select a particular SDK, change |
|
| 69 |
# PREFERRED_SDK to the SDK name (e.g. "10.4u") and PREFERRED_MINVERSION |
|
| 70 |
# to the minimum OS revision (e.g. "10.4"). An example follows this code. |
|
| 71 |
# |
|
| 72 |
SDKPREFIX := /Developer/SDKs/MacOSX |
|
| 73 |
SDKS := $(wildcard $(SDKPREFIX)*.sdk) |
|
| 74 |
SDKVERSIONS := $(patsubst $(SDKPREFIX)%.sdk,%,$(SDKS)) |
|
| 75 |
GOOD_SDKS := $(filter-out 10.1%,$(filter-out 10.2%,$(filter-out 10.3%,$(filter-out 10.4%,$(SDKVERSIONS))))) |
|
| 76 |
# |
|
| 77 |
PREFERRED_SDK := $(word 1, $(sort $(GOOD_SDKS))) |
|
| 78 |
PREFERRED_MINVERSION := $(patsubst %u,%,$(PREFERRED_SDK)) |
|
| 79 |
# |
|
| 80 |
# Example: to set your own values, uncomment and adjust: |
|
| 81 |
# PREFERRED_SDK := 10.4u |
|
| 82 |
# PREFERRED_MINVERSION := 10.4 |
|
| 83 |
|
|
| 84 |
SDKFLAGS = -isysroot /Developer/SDKs/MacOSX$(PREFERRED_SDK).sdk -mmacosx-version-min=$(PREFERRED_MINVERSION) |
|
| 85 |
|
|
| 86 |
# Our default is to try to build for all available architectures in a |
|
| 87 |
# universal binary. |
|
| 88 |
# |
|
| 89 |
ARCHFLAGS = $(SDKFLAGS) -arch i386 -arch x86_64 -arch ppc |
|
| 90 |
|
|
| 91 |
# Compile flags |
|
| 92 |
# |
|
| 93 |
CFLAGS = $(ARCHFLAGS) -fPIC |
|
| 94 |
CXXFLAGS = $(ARCHFLAGS) -O2 -Wall -I. -fPIC |
|
| 95 |
|
|
| 96 |
# Link flags common to all link targets |
|
| 97 |
# |
|
| 98 |
LDFLAGS = $(ARCHFLAGS) |
|
| 99 |
|
|
| 100 |
# ar, ranlib |
|
| 101 |
# |
|
| 102 |
AR = ar |
|
| 103 |
RANLIB = ranlib |
|
| 104 |
RM_F = rm -f |
|
| 105 |
|
|
| 106 |
# Libraries required for the plugins. |
|
| 107 |
# |
|
| 108 |
PLUGIN_LIBS = ./libvamp-sdk.a |
|
| 109 |
|
|
| 110 |
# File extension for a dynamically loadable object |
|
| 111 |
# |
|
| 112 |
PLUGIN_EXT = .dylib |
|
| 113 |
|
|
| 114 |
# Libraries required for the host. |
|
| 115 |
# |
|
| 116 |
HOST_LIBS = ./libvamp-hostsdk.a -lsndfile -ldl |
|
| 117 |
|
|
| 118 |
# Libraries required for the RDF template generator. |
|
| 119 |
# |
|
| 120 |
RDFGEN_LIBS = ./libvamp-hostsdk.a -ldl |
|
| 121 |
|
|
| 122 |
# Flags required to tell the compiler to create a dynamically loadable object |
|
| 123 |
# |
|
| 124 |
DYNAMIC_LDFLAGS = $(ARCHFLAGS) -dynamiclib |
|
| 125 |
|
|
| 126 |
# Flags for building specific plugin and library targets. We need to |
|
| 127 |
# tell the linker the formal name for the library, and for plugins we |
|
| 128 |
# also want to tell the linker to make all symbols in the library |
|
| 129 |
# hidden except for the public entry point (making for a tidier library). |
|
| 130 |
# |
|
| 131 |
PLUGIN_LDFLAGS = $(DYNAMIC_LDFLAGS) \ |
|
| 132 |
-install_name vamp-example-plugins.dylib \ |
|
| 133 |
-exported_symbols_list build/vamp-plugin.list |
|
| 134 |
SDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) -install_name libvamp-sdk.dylib |
|
| 135 |
HOSTSDK_DYNAMIC_LDFLAGS = $(DYNAMIC_LDFLAGS) -install_name libvamp-hostsdk.dylib |
|
| 136 |
|
|
| 137 |
|
|
| 138 |
### End of user-serviceable parts |
|
| 139 |
|
|
| 140 |
|
|
| 141 |
API_HEADERS = \ |
|
| 142 |
$(APIDIR)/vamp.h |
|
| 143 |
|
|
| 144 |
SDK_HEADERS = \ |
|
| 145 |
$(SDKDIR)/Plugin.h \ |
|
| 146 |
$(SDKDIR)/PluginAdapter.h \ |
|
| 147 |
$(SDKDIR)/PluginBase.h \ |
|
| 148 |
$(SDKDIR)/RealTime.h \ |
|
| 149 |
$(SDKDIR)/FFT.h \ |
|
| 150 |
$(SDKDIR)/plugguard.h \ |
|
| 151 |
$(SDKDIR)/vamp-sdk.h |
|
| 152 |
|
|
| 153 |
HOSTSDK_HEADERS = \ |
|
| 154 |
$(HOSTSDKDIR)/Plugin.h \ |
|
| 155 |
$(HOSTSDKDIR)/PluginBase.h \ |
|
| 156 |
$(HOSTSDKDIR)/PluginHostAdapter.h \ |
|
| 157 |
$(HOSTSDKDIR)/RealTime.h \ |
|
| 158 |
$(HOSTSDKDIR)/PluginBufferingAdapter.h \ |
|
| 159 |
$(HOSTSDKDIR)/PluginChannelAdapter.h \ |
|
| 160 |
$(HOSTSDKDIR)/PluginInputDomainAdapter.h \ |
|
| 161 |
$(HOSTSDKDIR)/PluginLoader.h \ |
|
| 162 |
$(HOSTSDKDIR)/PluginSummarisingAdapter.h \ |
|
| 163 |
$(HOSTSDKDIR)/PluginWrapper.h \ |
|
| 164 |
$(HOSTSDKDIR)/hostguard.h \ |
|
| 165 |
$(HOSTSDKDIR)/host-c.h \ |
|
| 166 |
$(HOSTSDKDIR)/vamp-hostsdk.h |
|
| 167 |
|
|
| 168 |
SDK_OBJECTS = \ |
|
| 169 |
$(SDKSRCDIR)/PluginAdapter.o \ |
|
| 170 |
$(SDKSRCDIR)/RealTime.o \ |
|
| 171 |
$(SDKSRCDIR)/FFT.o \ |
|
| 172 |
$(SDKSRCDIR)/acsymbols.o |
|
| 173 |
|
|
| 174 |
HOSTSDK_OBJECTS = \ |
|
| 175 |
$(HOSTSDKSRCDIR)/Files.o \ |
|
| 176 |
$(HOSTSDKSRCDIR)/PluginHostAdapter.o \ |
|
| 177 |
$(HOSTSDKSRCDIR)/RealTime.o \ |
|
| 178 |
$(HOSTSDKSRCDIR)/PluginBufferingAdapter.o \ |
|
| 179 |
$(HOSTSDKSRCDIR)/PluginChannelAdapter.o \ |
|
| 180 |
$(HOSTSDKSRCDIR)/PluginInputDomainAdapter.o \ |
|
| 181 |
$(HOSTSDKSRCDIR)/PluginLoader.o \ |
|
| 182 |
$(HOSTSDKSRCDIR)/PluginSummarisingAdapter.o \ |
|
| 183 |
$(HOSTSDKSRCDIR)/PluginWrapper.o \ |
|
| 184 |
$(HOSTSDKSRCDIR)/host-c.o \ |
|
| 185 |
$(HOSTSDKSRCDIR)/acsymbols.o |
|
| 186 |
|
|
| 187 |
SDK_STATIC = \ |
|
| 188 |
./libvamp-sdk.a |
|
| 189 |
|
|
| 190 |
HOSTSDK_STATIC = \ |
|
| 191 |
./libvamp-hostsdk.a |
|
| 192 |
|
|
| 193 |
SDK_DYNAMIC = \ |
|
| 194 |
./libvamp-sdk$(PLUGIN_EXT) |
|
| 195 |
|
|
| 196 |
HOSTSDK_DYNAMIC = \ |
|
| 197 |
./libvamp-hostsdk$(PLUGIN_EXT) |
|
| 198 |
|
|
| 199 |
SDK_LA = \ |
|
| 200 |
$(LADIR)/libvamp-sdk.la |
|
| 201 |
|
|
| 202 |
HOSTSDK_LA = \ |
|
| 203 |
$(LADIR)/libvamp-hostsdk.la |
|
| 204 |
|
|
| 205 |
PLUGIN_HEADERS = \ |
|
| 206 |
$(EXAMPLEDIR)/SpectralCentroid.h \ |
|
| 207 |
$(EXAMPLEDIR)/PowerSpectrum.h \ |
|
| 208 |
$(EXAMPLEDIR)/PercussionOnsetDetector.h \ |
|
| 209 |
$(EXAMPLEDIR)/FixedTempoEstimator.h \ |
|
| 210 |
$(EXAMPLEDIR)/AmplitudeFollower.h \ |
|
| 211 |
$(EXAMPLEDIR)/ZeroCrossing.h |
|
| 212 |
|
|
| 213 |
PLUGIN_OBJECTS = \ |
|
| 214 |
$(EXAMPLEDIR)/SpectralCentroid.o \ |
|
| 215 |
$(EXAMPLEDIR)/PowerSpectrum.o \ |
|
| 216 |
$(EXAMPLEDIR)/PercussionOnsetDetector.o \ |
|
| 217 |
$(EXAMPLEDIR)/FixedTempoEstimator.o \ |
|
| 218 |
$(EXAMPLEDIR)/AmplitudeFollower.o \ |
|
| 219 |
$(EXAMPLEDIR)/ZeroCrossing.o \ |
|
| 220 |
$(EXAMPLEDIR)/plugins.o |
|
| 221 |
|
|
| 222 |
PLUGIN_TARGET = \ |
|
| 223 |
$(EXAMPLEDIR)/vamp-example-plugins$(PLUGIN_EXT) |
|
| 224 |
|
|
| 225 |
HOST_HEADERS = \ |
|
| 226 |
$(HOSTDIR)/system.h |
|
| 227 |
|
|
| 228 |
HOST_OBJECTS = \ |
|
| 229 |
$(HOSTDIR)/vamp-simple-host.o |
|
| 230 |
|
|
| 231 |
HOST_TARGET = \ |
|
| 232 |
$(HOSTDIR)/vamp-simple-host |
|
| 233 |
|
|
| 234 |
RDFGEN_OBJECTS = \ |
|
| 235 |
$(RDFGENDIR)/vamp-rdf-template-generator.o |
|
| 236 |
|
|
| 237 |
RDFGEN_TARGET = \ |
|
| 238 |
$(RDFGENDIR)/vamp-rdf-template-generator |
|
| 239 |
|
|
| 240 |
show: |
|
| 241 |
@echo " *** Found available SDK versions: $(SDKVERSIONS)" |
|
| 242 |
@test -n "$(PREFERRED_SDK)" || ( echo "Error: Failed to establish preferred SDK version, please ensure at least one Developer SDK is installed" ; exit 1 ) |
|
| 243 |
@test -n "$(PREFERRED_MINVERSION)" || ( echo "Error: Failed to establish preferred minimum OS version" ; exit 1 ) |
|
| 244 |
@echo " *** Default SDK is $(PREFERRED_SDK) for minimum OS/X version $(PREFERRED_MINVERSION)" |
|
| 245 |
|
|
| 246 |
sdk: show sdkstatic $(SDK_DYNAMIC) $(HOSTSDK_DYNAMIC) |
|
| 247 |
|
|
| 248 |
sdkstatic: $(SDK_STATIC) $(HOSTSDK_STATIC) |
|
| 249 |
$(RANLIB) $(SDK_STATIC) |
|
| 250 |
$(RANLIB) $(HOSTSDK_STATIC) |
|
| 251 |
|
|
| 252 |
plugins: $(PLUGIN_TARGET) |
|
| 253 |
|
|
| 254 |
host: $(HOST_TARGET) |
|
| 255 |
|
|
| 256 |
rdfgen: $(RDFGEN_TARGET) |
|
| 257 |
|
|
| 258 |
all: sdk plugins host rdfgen test |
|
| 259 |
|
|
| 260 |
$(SDK_STATIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) |
|
| 261 |
$(RM_F) $@ |
|
| 262 |
$(AR) r $@ $(SDK_OBJECTS) |
|
| 263 |
|
|
| 264 |
$(HOSTSDK_STATIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) |
|
| 265 |
$(RM_F) $@ |
|
| 266 |
$(AR) r $@ $(HOSTSDK_OBJECTS) |
|
| 267 |
|
|
| 268 |
$(SDK_DYNAMIC): $(SDK_OBJECTS) $(API_HEADERS) $(SDK_HEADERS) |
|
| 269 |
$(CXX) $(LDFLAGS) $(SDK_DYNAMIC_LDFLAGS) -o $@ $(SDK_OBJECTS) |
|
| 270 |
|
|
| 271 |
$(HOSTSDK_DYNAMIC): $(HOSTSDK_OBJECTS) $(API_HEADERS) $(HOSTSDK_HEADERS) |
|
| 272 |
$(CXX) $(LDFLAGS) $(HOSTSDK_DYNAMIC_LDFLAGS) -o $@ $(HOSTSDK_OBJECTS) |
|
| 273 |
|
|
| 274 |
$(PLUGIN_TARGET): $(PLUGIN_OBJECTS) $(SDK_STATIC) $(PLUGIN_HEADERS) |
|
| 275 |
$(CXX) $(LDFLAGS) $(PLUGIN_LDFLAGS) -o $@ $(PLUGIN_OBJECTS) $(PLUGIN_LIBS) |
|
| 276 |
|
|
| 277 |
$(HOST_TARGET): $(HOST_OBJECTS) $(HOSTSDK_STATIC) $(HOST_HEADERS) |
|
| 278 |
$(CXX) $(LDFLAGS) $(HOST_LDFLAGS) -o $@ $(HOST_OBJECTS) $(HOST_LIBS) |
|
| 279 |
|
|
| 280 |
$(RDFGEN_TARGET): $(RDFGEN_OBJECTS) $(HOSTSDK_STATIC) |
|
| 281 |
$(CXX) $(LDFLAGS) $(RDFGEN_LDFLAGS) -o $@ $(RDFGEN_OBJECTS) $(RDFGEN_LIBS) |
|
| 282 |
|
|
| 283 |
test: plugins host |
|
| 284 |
VAMP_PATH=$(EXAMPLEDIR) $(HOST_TARGET) -l |
|
| 285 |
|
|
| 286 |
clean: |
|
| 287 |
rm -f $(SDK_OBJECTS) $(HOSTSDK_OBJECTS) $(PLUGIN_OBJECTS) $(HOST_OBJECTS) $(RDFGEN_OBJECTS) |
|
| 288 |
|
|
| 289 |
distclean: clean |
|
| 290 |
rm -f $(SDK_STATIC) $(SDK_DYNAMIC) $(HOSTSDK_STATIC) $(HOSTSDK_DYNAMIC) $(PLUGIN_TARGET) $(HOST_TARGET) $(RDFGEN_TARGET) *~ */*~ |
|
| 291 |
|
|
| 292 |
# DO NOT DELETE |
|
| 293 |
|
|
| 294 |
examples/AmplitudeFollower.o: examples/AmplitudeFollower.h vamp-sdk/Plugin.h |
|
| 295 |
examples/AmplitudeFollower.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h |
|
| 296 |
examples/AmplitudeFollower.o: vamp-sdk/RealTime.h |
|
| 297 |
examples/FixedTempoEstimator.o: examples/FixedTempoEstimator.h |
|
| 298 |
examples/FixedTempoEstimator.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h |
|
| 299 |
examples/FixedTempoEstimator.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h |
|
| 300 |
examples/PercussionOnsetDetector.o: examples/PercussionOnsetDetector.h |
|
| 301 |
examples/PercussionOnsetDetector.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h |
|
| 302 |
examples/PercussionOnsetDetector.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h |
|
| 303 |
examples/SpectralCentroid.o: examples/SpectralCentroid.h vamp-sdk/Plugin.h |
|
| 304 |
examples/SpectralCentroid.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h |
|
| 305 |
examples/SpectralCentroid.o: vamp-sdk/RealTime.h |
|
| 306 |
examples/PowerSpectrum.o: examples/PowerSpectrum.h vamp-sdk/Plugin.h |
|
| 307 |
examples/PowerSpectrum.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h |
|
| 308 |
examples/PowerSpectrum.o: vamp-sdk/RealTime.h |
|
| 309 |
examples/ZeroCrossing.o: examples/ZeroCrossing.h vamp-sdk/Plugin.h |
|
| 310 |
examples/ZeroCrossing.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h |
|
| 311 |
examples/ZeroCrossing.o: vamp-sdk/RealTime.h |
|
| 312 |
examples/plugins.o: vamp/vamp.h vamp-sdk/PluginAdapter.h vamp-sdk/Plugin.h |
|
| 313 |
examples/plugins.o: vamp-sdk/PluginBase.h vamp-sdk/plugguard.h |
|
| 314 |
examples/plugins.o: vamp-sdk/RealTime.h examples/ZeroCrossing.h |
|
| 315 |
examples/plugins.o: vamp-sdk/Plugin.h examples/SpectralCentroid.h |
|
| 316 |
examples/plugins.o: examples/PercussionOnsetDetector.h examples/PowerSpectrum.h |
|
| 317 |
examples/plugins.o: examples/FixedTempoEstimator.h |
|
| 318 |
examples/plugins.o: examples/AmplitudeFollower.h |
|
| 319 |
host/vamp-simple-host.o: ./vamp-hostsdk/PluginHostAdapter.h vamp/vamp.h |
|
| 320 |
host/vamp-simple-host.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h |
|
| 321 |
host/vamp-simple-host.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h |
|
| 322 |
host/vamp-simple-host.o: ./vamp-hostsdk/PluginInputDomainAdapter.h |
|
| 323 |
host/vamp-simple-host.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 324 |
host/vamp-simple-host.o: ./vamp-hostsdk/Plugin.h ./vamp-hostsdk/hostguard.h |
|
| 325 |
host/vamp-simple-host.o: vamp-sdk/Plugin.h |
|
| 326 |
host/vamp-simple-host.o: ./vamp-hostsdk/PluginLoader.h host/system.h |
|
| 327 |
rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginHostAdapter.h |
|
| 328 |
rdf/generator/vamp-rdf-template-generator.o: vamp/vamp.h vamp-sdk/Plugin.h |
|
| 329 |
rdf/generator/vamp-rdf-template-generator.o: vamp-sdk/PluginBase.h |
|
| 330 |
rdf/generator/vamp-rdf-template-generator.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h |
|
| 331 |
rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginChannelAdapter.h |
|
| 332 |
rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 333 |
rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/Plugin.h |
|
| 334 |
rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/hostguard.h |
|
| 335 |
rdf/generator/vamp-rdf-template-generator.o: vamp-sdk/Plugin.h |
|
| 336 |
rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginInputDomainAdapter.h |
|
| 337 |
rdf/generator/vamp-rdf-template-generator.o: ./vamp-hostsdk/PluginLoader.h |
|
| 338 |
src/vamp-hostsdk/PluginHostAdapter.o: ./vamp-hostsdk/PluginHostAdapter.h |
|
| 339 |
src/vamp-hostsdk/PluginHostAdapter.o: vamp/vamp.h vamp-sdk/Plugin.h |
|
| 340 |
src/vamp-hostsdk/PluginHostAdapter.o: vamp-sdk/PluginBase.h |
|
| 341 |
src/vamp-hostsdk/PluginHostAdapter.o: vamp-sdk/plugguard.h |
|
| 342 |
src/vamp-hostsdk/PluginHostAdapter.o: vamp-sdk/RealTime.h |
|
| 343 |
src/vamp-hostsdk/RealTime.o: src/vamp-sdk/RealTime.cpp ./vamp-sdk/RealTime.h |
|
| 344 |
src/vamp-hostsdk/RealTime.o: vamp-sdk/plugguard.h |
|
| 345 |
src/vamp-sdk/PluginAdapter.o: vamp-sdk/PluginAdapter.h vamp/vamp.h |
|
| 346 |
src/vamp-sdk/PluginAdapter.o: vamp-sdk/Plugin.h vamp-sdk/PluginBase.h |
|
| 347 |
src/vamp-sdk/PluginAdapter.o: vamp-sdk/plugguard.h vamp-sdk/RealTime.h |
|
| 348 |
src/vamp-sdk/RealTime.o: ./vamp-sdk/RealTime.h vamp-sdk/plugguard.h |
|
| 349 |
src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/PluginBufferingAdapter.h |
|
| 350 |
src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 351 |
src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/Plugin.h |
|
| 352 |
src/vamp-hostsdk/PluginBufferingAdapter.o: ./vamp-hostsdk/hostguard.h |
|
| 353 |
src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/Plugin.h |
|
| 354 |
src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/PluginBase.h |
|
| 355 |
src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/plugguard.h |
|
| 356 |
src/vamp-hostsdk/PluginBufferingAdapter.o: vamp-sdk/RealTime.h |
|
| 357 |
src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/PluginChannelAdapter.h |
|
| 358 |
src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 359 |
src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/Plugin.h |
|
| 360 |
src/vamp-hostsdk/PluginChannelAdapter.o: ./vamp-hostsdk/hostguard.h |
|
| 361 |
src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/Plugin.h |
|
| 362 |
src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/PluginBase.h |
|
| 363 |
src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/plugguard.h |
|
| 364 |
src/vamp-hostsdk/PluginChannelAdapter.o: vamp-sdk/RealTime.h |
|
| 365 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/PluginInputDomainAdapter.h |
|
| 366 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 367 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/Plugin.h |
|
| 368 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: ./vamp-hostsdk/hostguard.h |
|
| 369 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/Plugin.h |
|
| 370 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/PluginBase.h |
|
| 371 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/plugguard.h |
|
| 372 |
src/vamp-hostsdk/PluginInputDomainAdapter.o: vamp-sdk/RealTime.h |
|
| 373 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginHostAdapter.h |
|
| 374 |
src/vamp-hostsdk/PluginLoader.o: vamp/vamp.h vamp-sdk/Plugin.h |
|
| 375 |
src/vamp-hostsdk/PluginLoader.o: vamp-sdk/PluginBase.h |
|
| 376 |
src/vamp-hostsdk/PluginLoader.o: vamp-sdk/plugguard.h |
|
| 377 |
src/vamp-hostsdk/PluginLoader.o: vamp-sdk/RealTime.h |
|
| 378 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginLoader.h |
|
| 379 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 380 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/Plugin.h |
|
| 381 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/hostguard.h |
|
| 382 |
src/vamp-hostsdk/PluginLoader.o: vamp-sdk/Plugin.h |
|
| 383 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginInputDomainAdapter.h |
|
| 384 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginChannelAdapter.h |
|
| 385 |
src/vamp-hostsdk/PluginLoader.o: ./vamp-hostsdk/PluginBufferingAdapter.h |
|
| 386 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/PluginSummarisingAdapter.h |
|
| 387 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 388 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/Plugin.h |
|
| 389 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: ./vamp-hostsdk/hostguard.h |
|
| 390 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/Plugin.h |
|
| 391 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/PluginBase.h |
|
| 392 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/plugguard.h |
|
| 393 |
src/vamp-hostsdk/PluginSummarisingAdapter.o: vamp-sdk/RealTime.h |
|
| 394 |
src/vamp-hostsdk/PluginWrapper.o: ./vamp-hostsdk/PluginWrapper.h |
|
| 395 |
src/vamp-hostsdk/PluginWrapper.o: ./vamp-hostsdk/Plugin.h |
|
| 396 |
src/vamp-hostsdk/PluginWrapper.o: ./vamp-hostsdk/hostguard.h |
|
| 397 |
src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/Plugin.h |
|
| 398 |
src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/PluginBase.h |
|
| 399 |
src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/plugguard.h |
|
| 400 |
src/vamp-hostsdk/PluginWrapper.o: vamp-sdk/RealTime.h |
|
| build/docker/Dockerfile_v2.9_ubuntu1604 | ||
|---|---|---|
| 1 |
FROM ubuntu:16.04 |
|
| 2 |
MAINTAINER Chris Cannam <cannam@all-day-breakfast.com> |
|
| 3 |
RUN apt-get update && \ |
|
| 4 |
apt-get install -y \ |
|
| 5 |
locales \ |
|
| 6 |
build-essential \ |
|
| 7 |
libsndfile-dev \ |
|
| 8 |
git \ |
|
| 9 |
mercurial |
|
| 10 |
RUN gcc --version |
|
| 11 |
RUN apt-get clean && rm -rf /var/lib/apt/lists/* |
|
| 12 |
RUN locale-gen en_US.UTF-8 |
|
| 13 |
ENV LANG en_US.UTF-8 |
|
| 14 |
ENV LANGUAGE en_US:en |
|
| 15 |
ENV LC_ALL en_US.UTF-8 |
|
| 16 |
RUN hg clone -rvamp-plugin-sdk-v2.9 https://code.soundsoftware.ac.uk/hg/vamp-plugin-sdk |
|
| 17 |
RUN hg clone https://code.soundsoftware.ac.uk/hg/vamp-test-plugin |
|
| 18 |
WORKDIR vamp-plugin-sdk |
|
| 19 |
RUN ./configure && make |
|
| 20 |
WORKDIR ../vamp-test-plugin |
|
| 21 |
RUN make -f Makefile.linux |
|
| 22 |
WORKDIR ../vamp-plugin-sdk |
|
| 23 |
RUN test/run-test-plugin-regression.sh |
|
| 24 |
RUN mkdir vamp-plugin-sdk-2.9.0-binaries-amd64-linux |
|
| 25 |
RUN cp libvamp-sdk.a libvamp-hostsdk.a examples/vamp-example-plugins.so host/vamp-simple-host rdf/generator/vamp-rdf-template-generator vamp-plugin-sdk-2.9.0-binaries-amd64-linux |
|
| 26 |
RUN tar cvzf vamp-plugin-sdk-2.9.0-binaries-amd64-linux.tar.gz vamp-plugin-sdk-2.9.0-binaries-amd64-linux |
|
| 27 |
RUN tar cvf output.tar *.tar.gz && cp output.tar .. |
|
| build/libvamp-hostsdk.la.in | ||
|---|---|---|
| 8 | 8 |
old_library='%STATIC%' |
| 9 | 9 |
dependency_libs='' |
| 10 | 10 |
current=3 |
| 11 |
age=8
|
|
| 11 |
age=9
|
|
| 12 | 12 |
revision=0 |
| 13 | 13 |
installed=yes |
| 14 | 14 |
libdir='%LIBS%' |
| build/libvamp-sdk.la.in | ||
|---|---|---|
| 8 | 8 |
old_library='%STATIC%' |
| 9 | 9 |
dependency_libs='' |
| 10 | 10 |
current=2 |
| 11 |
age=8
|
|
| 11 |
age=9
|
|
| 12 | 12 |
revision=0 |
| 13 | 13 |
installed=yes |
| 14 | 14 |
libdir='%LIBS%' |
| configure | ||
|---|---|---|
| 1 | 1 |
#! /bin/sh |
| 2 | 2 |
# Guess values for system-dependent variables and create Makefiles. |
| 3 |
# Generated by GNU Autoconf 2.69 for vamp-plugin-sdk 2.8.
|
|
| 3 |
# Generated by GNU Autoconf 2.69 for vamp-plugin-sdk 2.9.
|
|
| 4 | 4 |
# |
| 5 | 5 |
# Report bugs to <cannam@all-day-breakfast.com>. |
| 6 | 6 |
# |
| ... | ... | |
| 580 | 580 |
# Identity of this package. |
| 581 | 581 |
PACKAGE_NAME='vamp-plugin-sdk' |
| 582 | 582 |
PACKAGE_TARNAME='vamp-plugin-sdk' |
| 583 |
PACKAGE_VERSION='2.8'
|
|
| 584 |
PACKAGE_STRING='vamp-plugin-sdk 2.8'
|
|
| 583 |
PACKAGE_VERSION='2.9'
|
|
| 584 |
PACKAGE_STRING='vamp-plugin-sdk 2.9'
|
|
| 585 | 585 |
PACKAGE_BUGREPORT='cannam@all-day-breakfast.com' |
| 586 | 586 |
PACKAGE_URL='' |
| 587 | 587 |
|
| ... | ... | |
| 630 | 630 |
PKG_CONFIG_LIBDIR |
| 631 | 631 |
PKG_CONFIG_PATH |
| 632 | 632 |
PKG_CONFIG |
| 633 |
HAVE_CXX11 |
|
| 633 | 634 |
EGREP |
| 634 | 635 |
GREP |
| 635 | 636 |
CPP |
| ... | ... | |
| 1243 | 1244 |
# Omit some internal or obsolete options to make the list less imposing. |
| 1244 | 1245 |
# This message is too long to be a string in the A/UX 3.1 sh. |
| 1245 | 1246 |
cat <<_ACEOF |
| 1246 |
\`configure' configures vamp-plugin-sdk 2.8 to adapt to many kinds of systems.
|
|
| 1247 |
\`configure' configures vamp-plugin-sdk 2.9 to adapt to many kinds of systems.
|
|
| 1247 | 1248 |
|
| 1248 | 1249 |
Usage: $0 [OPTION]... [VAR=VALUE]... |
| 1249 | 1250 |
|
| ... | ... | |
| 1304 | 1305 |
|
| 1305 | 1306 |
if test -n "$ac_init_help"; then |
| 1306 | 1307 |
case $ac_init_help in |
| 1307 |
short | recursive ) echo "Configuration of vamp-plugin-sdk 2.8:";;
|
|
| 1308 |
short | recursive ) echo "Configuration of vamp-plugin-sdk 2.9:";;
|
|
| 1308 | 1309 |
esac |
| 1309 | 1310 |
cat <<\_ACEOF |
| 1310 | 1311 |
|
| ... | ... | |
| 1402 | 1403 |
test -n "$ac_init_help" && exit $ac_status |
| 1403 | 1404 |
if $ac_init_version; then |
| 1404 | 1405 |
cat <<\_ACEOF |
| 1405 |
vamp-plugin-sdk configure 2.8
|
|
| 1406 |
vamp-plugin-sdk configure 2.9
|
|
| 1406 | 1407 |
generated by GNU Autoconf 2.69 |
| 1407 | 1408 |
|
| 1408 | 1409 |
Copyright (C) 2012 Free Software Foundation, Inc. |
| ... | ... | |
| 1651 | 1652 |
This file contains any messages produced by compilers while |
| 1652 | 1653 |
running configure, to aid debugging if configure makes a mistake. |
| 1653 | 1654 |
|
| 1654 |
It was created by vamp-plugin-sdk $as_me 2.8, which was
|
|
| 1655 |
It was created by vamp-plugin-sdk $as_me 2.9, which was
|
|
| 1655 | 1656 |
generated by GNU Autoconf 2.69. Invocation command line was |
| 1656 | 1657 |
|
| 1657 | 1658 |
$ $0 $@ |
| ... | ... | |
| 3670 | 3671 |
esac |
| 3671 | 3672 |
|
| 3672 | 3673 |
|
| 3674 |
# We now require C++11 |
|
| 3675 |
|
|
| 3676 |
ax_cxx_compile_cxx11_required=true |
|
| 3677 |
ac_ext=cpp |
|
| 3678 |
ac_cpp='$CXXCPP $CPPFLAGS' |
|
| 3679 |
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
|
| 3680 |
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
|
| 3681 |
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu |
|
| 3682 |
ac_success=no |
|
| 3683 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
|
|
| 3684 |
$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } |
|
| 3685 |
if ${ax_cv_cxx_compile_cxx11+:} false; then :
|
|
| 3686 |
$as_echo_n "(cached) " >&6 |
|
| 3687 |
else |
|
| 3688 |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
|
| 3689 |
/* end confdefs.h. */ |
|
| 3690 |
|
|
| 3691 |
template <typename T> |
|
| 3692 |
struct check |
|
| 3693 |
{
|
|
| 3694 |
static_assert(sizeof(int) <= sizeof(T), "not big enough"); |
|
| 3695 |
}; |
|
| 3696 |
|
|
| 3697 |
struct Base {
|
|
| 3698 |
virtual void f() {}
|
|
| 3699 |
}; |
|
| 3700 |
struct Child : public Base {
|
|
| 3701 |
virtual void f() override {}
|
|
| 3702 |
}; |
|
| 3703 |
|
|
| 3704 |
typedef check<check<bool>> right_angle_brackets; |
|
| 3705 |
|
|
| 3706 |
int a; |
|
| 3707 |
decltype(a) b; |
|
| 3708 |
|
|
| 3709 |
typedef check<int> check_type; |
|
| 3710 |
check_type c; |
|
| 3711 |
check_type&& cr = static_cast<check_type&&>(c); |
|
| 3712 |
|
|
| 3713 |
auto d = a; |
|
| 3714 |
auto l = [](){};
|
|
| 3715 |
|
|
| 3716 |
_ACEOF |
|
| 3717 |
if ac_fn_cxx_try_compile "$LINENO"; then : |
|
| 3718 |
ax_cv_cxx_compile_cxx11=yes |
|
| 3719 |
else |
|
| 3720 |
ax_cv_cxx_compile_cxx11=no |
|
| 3721 |
fi |
|
| 3722 |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
|
| 3723 |
fi |
|
| 3724 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
|
|
| 3725 |
$as_echo "$ax_cv_cxx_compile_cxx11" >&6; } |
|
| 3726 |
if test x$ax_cv_cxx_compile_cxx11 = xyes; then |
|
| 3727 |
ac_success=yes |
|
| 3728 |
fi |
|
| 3729 |
|
|
| 3730 |
|
|
| 3731 |
|
|
| 3732 |
if test x$ac_success = xno; then |
|
| 3733 |
for switch in -std=c++11 -std=c++0x; do |
|
| 3734 |
cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` |
|
| 3735 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
|
|
| 3736 |
$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } |
|
| 3737 |
if eval \${$cachevar+:} false; then :
|
|
| 3738 |
$as_echo_n "(cached) " >&6 |
|
| 3739 |
else |
|
| 3740 |
ac_save_CXXFLAGS="$CXXFLAGS" |
|
| 3741 |
CXXFLAGS="$CXXFLAGS $switch" |
|
| 3742 |
cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
|
| 3743 |
/* end confdefs.h. */ |
|
| 3744 |
|
|
| 3745 |
template <typename T> |
|
| 3746 |
struct check |
|
| 3747 |
{
|
|
| 3748 |
static_assert(sizeof(int) <= sizeof(T), "not big enough"); |
|
| 3749 |
}; |
|
| 3750 |
|
|
| 3751 |
struct Base {
|
|
| 3752 |
virtual void f() {}
|
|
| 3753 |
}; |
|
| 3754 |
struct Child : public Base {
|
|
| 3755 |
virtual void f() override {}
|
|
| 3756 |
}; |
|
| 3757 |
|
|
| 3758 |
typedef check<check<bool>> right_angle_brackets; |
|
| 3759 |
|
|
| 3760 |
int a; |
|
| 3761 |
decltype(a) b; |
|
| 3762 |
|
|
| 3763 |
typedef check<int> check_type; |
|
| 3764 |
check_type c; |
|
| 3765 |
check_type&& cr = static_cast<check_type&&>(c); |
|
| 3766 |
|
|
| 3767 |
auto d = a; |
|
| 3768 |
auto l = [](){};
|
|
| 3769 |
|
|
| 3770 |
_ACEOF |
|
| 3771 |
if ac_fn_cxx_try_compile "$LINENO"; then : |
|
| 3772 |
eval $cachevar=yes |
|
| 3773 |
else |
|
| 3774 |
eval $cachevar=no |
|
| 3775 |
fi |
|
| 3776 |
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
|
| 3777 |
CXXFLAGS="$ac_save_CXXFLAGS" |
|
| 3778 |
fi |
|
| 3779 |
eval ac_res=\$$cachevar |
|
| 3780 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
| 3781 |
$as_echo "$ac_res" >&6; } |
|
| 3782 |
if eval test x\$$cachevar = xyes; then |
|
| 3783 |
CXXFLAGS="$CXXFLAGS $switch" |
|
| 3784 |
ac_success=yes |
|
| 3785 |
break |
|
| 3786 |
fi |
|
| 3787 |
done |
|
| 3788 |
fi |
|
| 3789 |
ac_ext=c |
|
| 3790 |
ac_cpp='$CPP $CPPFLAGS' |
|
| 3791 |
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
|
| 3792 |
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' |
|
| 3793 |
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
|
| 3794 |
|
|
| 3795 |
if test x$ax_cxx_compile_cxx11_required = xtrue; then |
|
| 3796 |
if test x$ac_success = xno; then |
|
| 3797 |
as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 |
|
| 3798 |
fi |
|
| 3799 |
else |
|
| 3800 |
if test x$ac_success = xno; then |
|
| 3801 |
HAVE_CXX11=0 |
|
| 3802 |
{ $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
|
|
| 3803 |
$as_echo "$as_me: No compiler with C++11 support was found" >&6;} |
|
| 3804 |
else |
|
| 3805 |
HAVE_CXX11=1 |
|
| 3806 |
|
|
| 3807 |
$as_echo "#define HAVE_CXX11 1" >>confdefs.h |
|
| 3808 |
|
|
| 3809 |
fi |
|
| 3810 |
|
|
| 3811 |
|
|
| 3812 |
fi |
|
| 3813 |
|
|
| 3814 |
|
|
| 3673 | 3815 |
if pkg-config --modversion vamp-sdk >/dev/null 2>&1; then |
| 3674 | 3816 |
echo "WARNING: A version of the Vamp plugin SDK is already installed." |
| 3675 | 3817 |
echo " Expect worries and sorrows if you install a new version" |
| ... | ... | |
| 3956 | 4098 |
*[\ \ ]-fPIC\ -Wall[\ \ ]*) ;; |
| 3957 | 4099 |
*) CFLAGS="$CFLAGS -fPIC -Wall -Wextra" ;; |
| 3958 | 4100 |
esac |
| 3959 |
CXXFLAGS="$CXXFLAGS -std=c++98"
|
|
| 4101 |
CXXFLAGS="$CXXFLAGS -std=c++11"
|
|
| 3960 | 4102 |
fi |
| 3961 | 4103 |
|
| 3962 | 4104 |
|
| ... | ... | |
| 4506 | 4648 |
# report actual input values of CONFIG_FILES etc. instead of their |
| 4507 | 4649 |
# values after options handling. |
| 4508 | 4650 |
ac_log=" |
| 4509 |
This file was extended by vamp-plugin-sdk $as_me 2.8, which was
|
|
| 4651 |
This file was extended by vamp-plugin-sdk $as_me 2.9, which was
|
|
| 4510 | 4652 |
generated by GNU Autoconf 2.69. Invocation command line was |
| 4511 | 4653 |
|
| 4512 | 4654 |
CONFIG_FILES = $CONFIG_FILES |
| ... | ... | |
| 4559 | 4701 |
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
| 4560 | 4702 |
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
| 4561 | 4703 |
ac_cs_version="\\ |
| 4562 |
vamp-plugin-sdk config.status 2.8
|
|
| 4704 |
vamp-plugin-sdk config.status 2.9
|
|
| 4563 | 4705 |
configured by $0, generated by GNU Autoconf 2.69, |
| 4564 | 4706 |
with options \\"\$ac_cs_config\\" |
| 4565 | 4707 |
|
| configure.ac | ||
|---|---|---|
| 1 | 1 |
|
| 2 |
AC_INIT(vamp-plugin-sdk, 2.8, cannam@all-day-breakfast.com)
|
|
| 2 |
AC_INIT(vamp-plugin-sdk, 2.9, cannam@all-day-breakfast.com)
|
|
| 3 | 3 |
|
| 4 | 4 |
AC_CONFIG_SRCDIR(vamp/vamp.h) |
| 5 | 5 |
AC_PROG_CXX |
| 6 | 6 |
AC_HEADER_STDC |
| 7 | 7 |
AC_C_BIGENDIAN |
| 8 | 8 |
|
| 9 |
# We now require C++11 |
|
| 10 |
AX_CXX_COMPILE_STDCXX_11(noext) |
|
| 11 |
|
|
| 9 | 12 |
if pkg-config --modversion vamp-sdk >/dev/null 2>&1; then |
| 10 | 13 |
echo "WARNING: A version of the Vamp plugin SDK is already installed." |
| 11 | 14 |
echo " Expect worries and sorrows if you install a new version" |
| ... | ... | |
| 50 | 53 |
*[\ \ ]-fPIC\ -Wall[\ \ ]*) ;; |
| 51 | 54 |
*) CFLAGS="$CFLAGS -fPIC -Wall -Wextra" ;; |
| 52 | 55 |
esac |
| 53 |
CXXFLAGS="$CXXFLAGS -std=c++98"
|
|
| 56 |
CXXFLAGS="$CXXFLAGS -std=c++11"
|
|
| 54 | 57 |
fi |
| 55 | 58 |
changequote([,])dnl |
| 56 | 59 |
|
| pkgconfig/vamp-hostsdk.pc.in | ||
|---|---|---|
| 4 | 4 |
includedir=${prefix}/include
|
| 5 | 5 |
|
| 6 | 6 |
Name: vamp-hostsdk |
| 7 |
Version: 2.8
|
|
| 7 |
Version: 2.9
|
|
| 8 | 8 |
Description: Development library for Vamp audio analysis plugin hosts |
| 9 | 9 |
Libs: -L${libdir} -lvamp-hostsdk -ldl
|
| 10 | 10 |
Cflags: -I${includedir}
|
| pkgconfig/vamp-sdk.pc.in | ||
|---|---|---|
| 4 | 4 |
includedir=${prefix}/include
|
| 5 | 5 |
|
| 6 | 6 |
Name: vamp-sdk |
| 7 |
Version: 2.8
|
|
| 7 |
Version: 2.9
|
|
| 8 | 8 |
Description: Development library for Vamp audio analysis plugins |
| 9 | 9 |
Libs: -L${libdir} -lvamp-sdk
|
| 10 | 10 |
Cflags: -I${includedir}
|
| pkgconfig/vamp.pc.in | ||
|---|---|---|
| 4 | 4 |
includedir=${prefix}/include
|
| 5 | 5 |
|
| 6 | 6 |
Name: vamp |
| 7 |
Version: 2.8
|
|
| 7 |
Version: 2.9
|
|
| 8 | 8 |
Description: An API for audio analysis and feature extraction plugins |
| 9 | 9 |
Libs: |
| 10 | 10 |
Cflags: -I${includedir}
|
| src/vamp-hostsdk/PluginHostAdapter.cpp | ||
|---|---|---|
| 39 | 39 |
|
| 40 | 40 |
#include "Files.h" |
| 41 | 41 |
|
| 42 |
#if ( VAMP_SDK_MAJOR_VERSION != 2 || VAMP_SDK_MINOR_VERSION != 8 )
|
|
| 42 |
#if ( VAMP_SDK_MAJOR_VERSION != 2 || VAMP_SDK_MINOR_VERSION != 9 )
|
|
| 43 | 43 |
#error Unexpected version of Vamp SDK header included |
| 44 | 44 |
#endif |
| 45 | 45 |
|
| src/vamp-hostsdk/PluginLoader.cpp | ||
|---|---|---|
| 567 | 567 |
PluginLoader::Impl::pluginDeleted(PluginDeletionNotifyAdapter *adapter) |
| 568 | 568 |
{
|
| 569 | 569 |
void *handle = m_pluginLibraryHandleMap[adapter]; |
| 570 |
if (handle) Files::unloadLibrary(handle); |
|
| 570 |
if (!handle) return; |
|
| 571 |
|
|
| 571 | 572 |
m_pluginLibraryHandleMap.erase(adapter); |
| 573 |
|
|
| 574 |
for (auto h: m_pluginLibraryHandleMap) {
|
|
| 575 |
if (h.second == handle) {
|
|
| 576 |
// still in use |
|
| 577 |
return; |
|
| 578 |
} |
|
| 579 |
} |
|
| 580 |
|
|
| 581 |
Files::unloadLibrary(handle); |
|
| 572 | 582 |
} |
| 573 | 583 |
|
| 574 | 584 |
PluginLoader::Impl::PluginDeletionNotifyAdapter::PluginDeletionNotifyAdapter(Plugin *plugin, |
| src/vamp-hostsdk/acsymbols.c | ||
|---|---|---|
| 1 | 1 |
/* These stubs are provided so that autoconf can check library |
| 2 | 2 |
* versions using C symbols only */ |
| 3 | 3 |
|
| 4 |
extern void libvamphostsdk_v_2_9_present(void) { }
|
|
| 4 | 5 |
extern void libvamphostsdk_v_2_8_present(void) { }
|
| 5 | 6 |
extern void libvamphostsdk_v_2_7_1_present(void) { }
|
| 6 | 7 |
extern void libvamphostsdk_v_2_7_present(void) { }
|
| src/vamp-sdk/FFT.cpp | ||
|---|---|---|
| 41 | 41 |
#include <math.h> |
| 42 | 42 |
#include <string.h> |
| 43 | 43 |
|
| 44 |
#if ( VAMP_SDK_MAJOR_VERSION != 2 || VAMP_SDK_MINOR_VERSION != 8 )
|
|
| 44 |
#if ( VAMP_SDK_MAJOR_VERSION != 2 || VAMP_SDK_MINOR_VERSION != 9 )
|
|
| 45 | 45 |
#error Unexpected version of Vamp SDK header included |
| 46 | 46 |
#endif |
| 47 | 47 |
|
| src/vamp-sdk/PluginAdapter.cpp | ||
|---|---|---|
| 39 | 39 |
#include <cstring> |
| 40 | 40 |
#include <cstdlib> |
| 41 | 41 |
|
| 42 |
#if ( VAMP_SDK_MAJOR_VERSION != 2 || VAMP_SDK_MINOR_VERSION != 8 ) |
|
| 42 |
#include <mutex> |
|
| 43 |
|
|
| 44 |
#if ( VAMP_SDK_MAJOR_VERSION != 2 || VAMP_SDK_MINOR_VERSION != 9 ) |
|
| 43 | 45 |
#error Unexpected version of Vamp SDK header included |
| 44 | 46 |
#endif |
| 45 | 47 |
|
| 48 |
using std::map; |
|
| 49 |
using std::vector; |
|
| 50 |
using std::string; |
|
| 51 |
using std::cerr; |
|
| 52 |
using std::endl; |
|
| 53 |
using std::mutex; |
|
| 54 |
using std::lock_guard; |
|
| 46 | 55 |
|
| 47 | 56 |
//#define DEBUG_PLUGIN_ADAPTER 1 |
| 48 | 57 |
|
| ... | ... | |
| 103 | 112 |
|
| 104 | 113 |
void cleanup(Plugin *plugin); |
| 105 | 114 |
unsigned int getOutputCount(Plugin *plugin); |
| 106 |
VampOutputDescriptor *getOutputDescriptor(Plugin *plugin, |
|
| 107 |
unsigned int i); |
|
| 115 |
VampOutputDescriptor *getOutputDescriptor(Plugin *plugin, unsigned int i); |
|
| 108 | 116 |
VampFeatureList *process(Plugin *plugin, |
| 109 | 117 |
const float *const *inputBuffers, |
| 110 | 118 |
int sec, int nsec); |
| ... | ... | |
| 113 | 121 |
const Plugin::FeatureSet &features); |
| 114 | 122 |
|
| 115 | 123 |
// maps both plugins and descriptors to adapters |
| 116 |
typedef std::map<const void *, Impl *> AdapterMap; |
|
| 124 |
typedef map<const void *, Impl *> AdapterMap; |
|
| 125 |
|
|
| 117 | 126 |
static AdapterMap *m_adapterMap; |
| 127 |
|
|
| 128 |
static mutex &adapterMapMutex() {
|
|
| 129 |
// If this mutex was a global static, then it might be |
|
| 130 |
// destroyed before the last adapter, and we would end up |
|
| 131 |
// trying to lock an invalid mutex when removing an adapter |
|
| 132 |
// from the adapter map. To ensure it outlasts the adapters, |
|
| 133 |
// we need to ensure it is constructed before the construction |
|
| 134 |
// of any of them is complete, since destruction order is |
|
| 135 |
// reverse of construction. So we have to make sure this is |
|
| 136 |
// called from the PluginAdapterBase::Impl constructor below. |
|
| 137 |
static mutex m; |
|
| 138 |
return m; |
|
| 139 |
} |
|
| 140 |
|
|
| 118 | 141 |
static Impl *lookupAdapter(VampPluginHandle); |
| 119 | 142 |
|
| 143 |
mutex m_mutex; // guards all of the below |
|
| 144 |
|
|
| 120 | 145 |
bool m_populated; |
| 121 | 146 |
VampPluginDescriptor m_descriptor; |
| 122 | 147 |
Plugin::ParameterList m_parameters; |
| 123 | 148 |
Plugin::ProgramList m_programs; |
| 124 | 149 |
|
| 125 |
typedef std::map<Plugin *, Plugin::OutputList *> OutputMap;
|
|
| 150 |
typedef map<Plugin *, Plugin::OutputList *> OutputMap; |
|
| 126 | 151 |
OutputMap m_pluginOutputs; |
| 127 | 152 |
|
| 128 |
std::map<Plugin *, VampFeatureList *> m_fs;
|
|
| 129 |
std::map<Plugin *, std::vector<size_t> > m_fsizes;
|
|
| 130 |
std::map<Plugin *, std::vector<std::vector<size_t> > > m_fvsizes;
|
|
| 153 |
map<Plugin *, VampFeatureList *> m_fs; |
|
| 154 |
map<Plugin *, vector<size_t> > m_fsizes;
|
|
| 155 |
map<Plugin *, vector<vector<size_t> > > m_fvsizes;
|
|
| 131 | 156 |
void resizeFS(Plugin *plugin, int n); |
| 132 | 157 |
void resizeFL(Plugin *plugin, int n, size_t sz); |
| 133 | 158 |
void resizeFV(Plugin *plugin, int n, int j, size_t sz); |
| ... | ... | |
| 154 | 179 |
m_populated(false) |
| 155 | 180 |
{
|
| 156 | 181 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 157 |
std::cerr << "PluginAdapterBase::Impl[" << this << "]::Impl" << std::endl;
|
|
| 182 |
cerr << "PluginAdapterBase::Impl[" << this << "]::Impl" << endl;
|
|
| 158 | 183 |
#endif |
| 184 |
|
|
| 185 |
(void)adapterMapMutex(); // see comment in adapterMapMutex function above |
|
| 159 | 186 |
} |
| 160 | 187 |
|
| 161 | 188 |
const VampPluginDescriptor * |
| 162 | 189 |
PluginAdapterBase::Impl::getDescriptor() |
| 163 | 190 |
{
|
| 164 | 191 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 165 |
std::cerr << "PluginAdapterBase::Impl[" << this << "]::getDescriptor" << std::endl;
|
|
| 192 |
cerr << "PluginAdapterBase::Impl[" << this << "]::getDescriptor" << endl;
|
|
| 166 | 193 |
#endif |
| 167 | 194 |
|
| 195 |
lock_guard<mutex> guard(m_mutex); |
|
| 196 |
|
|
| 168 | 197 |
if (m_populated) return &m_descriptor; |
| 169 | 198 |
|
| 170 | 199 |
Plugin *plugin = m_base->createPlugin(48000); |
| 171 | 200 |
|
| 172 | 201 |
if (!plugin) {
|
| 173 |
std::cerr << "PluginAdapterBase::Impl::getDescriptor: Failed to create plugin" << std::endl;
|
|
| 202 |
cerr << "PluginAdapterBase::Impl::getDescriptor: Failed to create plugin" << endl;
|
|
| 174 | 203 |
return 0; |
| 175 | 204 |
} |
| 176 | 205 |
|
| 177 | 206 |
if (plugin->getVampApiVersion() != VAMP_API_VERSION) {
|
| 178 |
std::cerr << "Vamp::PluginAdapterBase::Impl::getDescriptor: ERROR: "
|
|
| 179 |
<< "API version " << plugin->getVampApiVersion()
|
|
| 180 |
<< " for\nplugin \"" << plugin->getIdentifier() << "\" "
|
|
| 181 |
<< "differs from version "
|
|
| 182 |
<< VAMP_API_VERSION << " for adapter.\n"
|
|
| 183 |
<< "This plugin is probably linked against a different version of the Vamp SDK\n"
|
|
| 184 |
<< "from the version it was compiled with. It will need to be re-linked correctly\n"
|
|
| 185 |
<< "before it can be used." << std::endl;
|
|
| 207 |
cerr << "Vamp::PluginAdapterBase::Impl::getDescriptor: ERROR: " |
|
| 208 |
<< "API version " << plugin->getVampApiVersion() |
|
| 209 |
<< " for\nplugin \"" << plugin->getIdentifier() << "\" " |
|
| 210 |
<< "differs from version " |
|
| 211 |
<< VAMP_API_VERSION << " for adapter.\n" |
|
| 212 |
<< "This plugin is probably linked against a different version of the Vamp SDK\n" |
|
| 213 |
<< "from the version it was compiled with. It will need to be re-linked correctly\n" |
|
| 214 |
<< "before it can be used." << endl;
|
|
| 186 | 215 |
delete plugin; |
| 187 | 216 |
return 0; |
| 188 | 217 |
} |
| ... | ... | |
| 260 | 289 |
m_descriptor.process = vampProcess; |
| 261 | 290 |
m_descriptor.getRemainingFeatures = vampGetRemainingFeatures; |
| 262 | 291 |
m_descriptor.releaseFeatureSet = vampReleaseFeatureSet; |
| 292 |
|
|
| 293 |
lock_guard<mutex> adapterMapGuard(adapterMapMutex()); |
|
| 263 | 294 |
|
| 264 | 295 |
if (!m_adapterMap) {
|
| 265 | 296 |
m_adapterMap = new AdapterMap; |
| ... | ... | |
| 275 | 306 |
PluginAdapterBase::Impl::~Impl() |
| 276 | 307 |
{
|
| 277 | 308 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 278 |
std::cerr << "PluginAdapterBase::Impl[" << this << "]::~Impl" << std::endl;
|
|
| 309 |
cerr << "PluginAdapterBase::Impl[" << this << "]::~Impl" << endl;
|
|
| 279 | 310 |
#endif |
| 280 | 311 |
|
| 312 |
lock_guard<mutex> guard(m_mutex); |
|
| 313 |
|
|
| 281 | 314 |
if (!m_populated) return; |
| 282 | 315 |
|
| 283 | 316 |
free((void *)m_descriptor.identifier); |
| ... | ... | |
| 307 | 340 |
} |
| 308 | 341 |
free((void *)m_descriptor.programs); |
| 309 | 342 |
|
| 343 |
lock_guard<mutex> adapterMapGuard(adapterMapMutex()); |
|
| 344 |
|
|
| 310 | 345 |
if (m_adapterMap) {
|
| 311 | 346 |
|
| 312 | 347 |
m_adapterMap->erase(&m_descriptor); |
| 313 |
|
|
| 348 |
|
|
| 314 | 349 |
if (m_adapterMap->empty()) {
|
| 315 | 350 |
delete m_adapterMap; |
| 316 | 351 |
m_adapterMap = 0; |
| ... | ... | |
| 322 | 357 |
PluginAdapterBase::Impl::lookupAdapter(VampPluginHandle handle) |
| 323 | 358 |
{
|
| 324 | 359 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 325 |
std::cerr << "PluginAdapterBase::Impl::lookupAdapter(" << handle << ")" << std::endl;
|
|
| 360 |
cerr << "PluginAdapterBase::Impl::lookupAdapter(" << handle << ")" << endl;
|
|
| 326 | 361 |
#endif |
| 327 | 362 |
|
| 363 |
lock_guard<mutex> adapterMapGuard(adapterMapMutex()); |
|
| 364 |
|
|
| 328 | 365 |
if (!m_adapterMap) return 0; |
| 329 | 366 |
AdapterMap::const_iterator i = m_adapterMap->find(handle); |
| 330 | 367 |
if (i == m_adapterMap->end()) return 0; |
| ... | ... | |
| 336 | 373 |
float inputSampleRate) |
| 337 | 374 |
{
|
| 338 | 375 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 339 |
std::cerr << "PluginAdapterBase::Impl::vampInstantiate(" << desc << ")" << std::endl;
|
|
| 376 |
cerr << "PluginAdapterBase::Impl::vampInstantiate(" << desc << ")" << endl;
|
|
| 340 | 377 |
#endif |
| 341 | 378 |
|
| 379 |
lock_guard<mutex> adapterMapGuard(adapterMapMutex()); |
|
| 380 |
|
|
| 342 | 381 |
if (!m_adapterMap) {
|
| 343 | 382 |
m_adapterMap = new AdapterMap(); |
| 344 | 383 |
} |
| 345 | 384 |
|
| 346 | 385 |
if (m_adapterMap->find(desc) == m_adapterMap->end()) {
|
| 347 |
std::cerr << "WARNING: PluginAdapterBase::Impl::vampInstantiate: Descriptor " << desc << " not in adapter map" << std::endl;
|
|
| 386 |
cerr << "WARNING: PluginAdapterBase::Impl::vampInstantiate: Descriptor " << desc << " not in adapter map" << endl;
|
|
| 348 | 387 |
return 0; |
| 349 | 388 |
} |
| 350 | 389 |
|
| ... | ... | |
| 357 | 396 |
} |
| 358 | 397 |
|
| 359 | 398 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 360 |
std::cerr << "PluginAdapterBase::Impl::vampInstantiate(" << desc << "): returning handle " << plugin << std::endl;
|
|
| 399 |
cerr << "PluginAdapterBase::Impl::vampInstantiate(" << desc << "): returning handle " << plugin << endl;
|
|
| 361 | 400 |
#endif |
| 362 | 401 |
|
| 363 | 402 |
return plugin; |
| ... | ... | |
| 367 | 406 |
PluginAdapterBase::Impl::vampCleanup(VampPluginHandle handle) |
| 368 | 407 |
{
|
| 369 | 408 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 370 |
std::cerr << "PluginAdapterBase::Impl::vampCleanup(" << handle << ")" << std::endl;
|
|
| 409 |
cerr << "PluginAdapterBase::Impl::vampCleanup(" << handle << ")" << endl;
|
|
| 371 | 410 |
#endif |
| 372 | 411 |
|
| 373 | 412 |
Impl *adapter = lookupAdapter(handle); |
| ... | ... | |
| 385 | 424 |
unsigned int blockSize) |
| 386 | 425 |
{
|
| 387 | 426 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 388 |
std::cerr << "PluginAdapterBase::Impl::vampInitialise(" << handle << ", " << channels << ", " << stepSize << ", " << blockSize << ")" << std::endl;
|
|
| 427 |
cerr << "PluginAdapterBase::Impl::vampInitialise(" << handle << ", " << channels << ", " << stepSize << ", " << blockSize << ")" << endl;
|
|
| 389 | 428 |
#endif |
| 390 | 429 |
|
| 391 | 430 |
Impl *adapter = lookupAdapter(handle); |
| ... | ... | |
| 399 | 438 |
PluginAdapterBase::Impl::vampReset(VampPluginHandle handle) |
| 400 | 439 |
{
|
| 401 | 440 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 402 |
std::cerr << "PluginAdapterBase::Impl::vampReset(" << handle << ")" << std::endl;
|
|
| 441 |
cerr << "PluginAdapterBase::Impl::vampReset(" << handle << ")" << endl;
|
|
| 403 | 442 |
#endif |
| 404 | 443 |
|
| 405 | 444 |
((Plugin *)handle)->reset(); |
| ... | ... | |
| 410 | 449 |
int param) |
| 411 | 450 |
{
|
| 412 | 451 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 413 |
std::cerr << "PluginAdapterBase::Impl::vampGetParameter(" << handle << ", " << param << ")" << std::endl;
|
|
| 452 |
cerr << "PluginAdapterBase::Impl::vampGetParameter(" << handle << ", " << param << ")" << endl;
|
|
| 414 | 453 |
#endif |
| 415 | 454 |
|
| 416 | 455 |
Impl *adapter = lookupAdapter(handle); |
| ... | ... | |
| 424 | 463 |
int param, float value) |
| 425 | 464 |
{
|
| 426 | 465 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 427 |
std::cerr << "PluginAdapterBase::Impl::vampSetParameter(" << handle << ", " << param << ", " << value << ")" << std::endl;
|
|
| 466 |
cerr << "PluginAdapterBase::Impl::vampSetParameter(" << handle << ", " << param << ", " << value << ")" << endl;
|
|
| 428 | 467 |
#endif |
| 429 | 468 |
|
| 430 | 469 |
Impl *adapter = lookupAdapter(handle); |
| ... | ... | |
| 438 | 477 |
PluginAdapterBase::Impl::vampGetCurrentProgram(VampPluginHandle handle) |
| 439 | 478 |
{
|
| 440 | 479 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 441 |
std::cerr << "PluginAdapterBase::Impl::vampGetCurrentProgram(" << handle << ")" << std::endl;
|
|
| 480 |
cerr << "PluginAdapterBase::Impl::vampGetCurrentProgram(" << handle << ")" << endl;
|
|
| 442 | 481 |
#endif |
| 443 | 482 |
|
| 444 | 483 |
Impl *adapter = lookupAdapter(handle); |
| 445 | 484 |
if (!adapter) return 0; |
| 446 | 485 |
Plugin::ProgramList &list = adapter->m_programs; |
| 447 |
std::string program = ((Plugin *)handle)->getCurrentProgram();
|
|
| 486 |
string program = ((Plugin *)handle)->getCurrentProgram(); |
|
| 448 | 487 |
for (unsigned int i = 0; i < list.size(); ++i) {
|
| 449 | 488 |
if (list[i] == program) return i; |
| 450 | 489 |
} |
| ... | ... | |
| 456 | 495 |
unsigned int program) |
| 457 | 496 |
{
|
| 458 | 497 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 459 |
std::cerr << "PluginAdapterBase::Impl::vampSelectProgram(" << handle << ", " << program << ")" << std::endl;
|
|
| 498 |
cerr << "PluginAdapterBase::Impl::vampSelectProgram(" << handle << ", " << program << ")" << endl;
|
|
| 460 | 499 |
#endif |
| 461 | 500 |
|
| 462 | 501 |
Impl *adapter = lookupAdapter(handle); |
| ... | ... | |
| 472 | 511 |
PluginAdapterBase::Impl::vampGetPreferredStepSize(VampPluginHandle handle) |
| 473 | 512 |
{
|
| 474 | 513 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 475 |
std::cerr << "PluginAdapterBase::Impl::vampGetPreferredStepSize(" << handle << ")" << std::endl;
|
|
| 514 |
cerr << "PluginAdapterBase::Impl::vampGetPreferredStepSize(" << handle << ")" << endl;
|
|
| 476 | 515 |
#endif |
| 477 | 516 |
|
| 478 | 517 |
return ((Plugin *)handle)->getPreferredStepSize(); |
| ... | ... | |
| 482 | 521 |
PluginAdapterBase::Impl::vampGetPreferredBlockSize(VampPluginHandle handle) |
| 483 | 522 |
{
|
| 484 | 523 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 485 |
std::cerr << "PluginAdapterBase::Impl::vampGetPreferredBlockSize(" << handle << ")" << std::endl;
|
|
| 524 |
cerr << "PluginAdapterBase::Impl::vampGetPreferredBlockSize(" << handle << ")" << endl;
|
|
| 486 | 525 |
#endif |
| 487 | 526 |
|
| 488 | 527 |
return ((Plugin *)handle)->getPreferredBlockSize(); |
| ... | ... | |
| 492 | 531 |
PluginAdapterBase::Impl::vampGetMinChannelCount(VampPluginHandle handle) |
| 493 | 532 |
{
|
| 494 | 533 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 495 |
std::cerr << "PluginAdapterBase::Impl::vampGetMinChannelCount(" << handle << ")" << std::endl;
|
|
| 534 |
cerr << "PluginAdapterBase::Impl::vampGetMinChannelCount(" << handle << ")" << endl;
|
|
| 496 | 535 |
#endif |
| 497 | 536 |
|
| 498 | 537 |
return ((Plugin *)handle)->getMinChannelCount(); |
| ... | ... | |
| 502 | 541 |
PluginAdapterBase::Impl::vampGetMaxChannelCount(VampPluginHandle handle) |
| 503 | 542 |
{
|
| 504 | 543 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 505 |
std::cerr << "PluginAdapterBase::Impl::vampGetMaxChannelCount(" << handle << ")" << std::endl;
|
|
| 544 |
cerr << "PluginAdapterBase::Impl::vampGetMaxChannelCount(" << handle << ")" << endl;
|
|
| 506 | 545 |
#endif |
| 507 | 546 |
|
| 508 | 547 |
return ((Plugin *)handle)->getMaxChannelCount(); |
| ... | ... | |
| 512 | 551 |
PluginAdapterBase::Impl::vampGetOutputCount(VampPluginHandle handle) |
| 513 | 552 |
{
|
| 514 | 553 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 515 |
std::cerr << "PluginAdapterBase::Impl::vampGetOutputCount(" << handle << ")" << std::endl;
|
|
| 554 |
cerr << "PluginAdapterBase::Impl::vampGetOutputCount(" << handle << ")" << endl;
|
|
| 516 | 555 |
#endif |
| 517 | 556 |
|
| 518 | 557 |
Impl *adapter = lookupAdapter(handle); |
| 519 | 558 |
|
| 520 |
// std::cerr << "vampGetOutputCount: handle " << handle << " -> adapter "<< adapter << std::endl;
|
|
| 559 |
// cerr << "vampGetOutputCount: handle " << handle << " -> adapter "<< adapter << endl;
|
|
| 521 | 560 |
|
| 522 | 561 |
if (!adapter) return 0; |
| 523 | 562 |
return adapter->getOutputCount((Plugin *)handle); |
| ... | ... | |
| 528 | 567 |
unsigned int i) |
| 529 | 568 |
{
|
| 530 | 569 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 531 |
std::cerr << "PluginAdapterBase::Impl::vampGetOutputDescriptor(" << handle << ", " << i << ")" << std::endl;
|
|
| 570 |
cerr << "PluginAdapterBase::Impl::vampGetOutputDescriptor(" << handle << ", " << i << ")" << endl;
|
|
| 532 | 571 |
#endif |
| 533 | 572 |
|
| 534 | 573 |
Impl *adapter = lookupAdapter(handle); |
| 535 | 574 |
|
| 536 |
// std::cerr << "vampGetOutputDescriptor: handle " << handle << " -> adapter "<< adapter << std::endl;
|
|
| 575 |
// cerr << "vampGetOutputDescriptor: handle " << handle << " -> adapter "<< adapter << endl;
|
|
| 537 | 576 |
|
| 538 | 577 |
if (!adapter) return 0; |
| 539 | 578 |
return adapter->getOutputDescriptor((Plugin *)handle, i); |
| ... | ... | |
| 543 | 582 |
PluginAdapterBase::Impl::vampReleaseOutputDescriptor(VampOutputDescriptor *desc) |
| 544 | 583 |
{
|
| 545 | 584 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 546 |
std::cerr << "PluginAdapterBase::Impl::vampReleaseOutputDescriptor(" << desc << ")" << std::endl;
|
|
| 585 |
cerr << "PluginAdapterBase::Impl::vampReleaseOutputDescriptor(" << desc << ")" << endl;
|
|
| 547 | 586 |
#endif |
| 548 | 587 |
|
| 549 | 588 |
if (desc->identifier) free((void *)desc->identifier); |
| ... | ... | |
| 568 | 607 |
int nsec) |
| 569 | 608 |
{
|
| 570 | 609 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 571 |
std::cerr << "PluginAdapterBase::Impl::vampProcess(" << handle << ", " << sec << ", " << nsec << ")" << std::endl;
|
|
| 610 |
cerr << "PluginAdapterBase::Impl::vampProcess(" << handle << ", " << sec << ", " << nsec << ")" << endl;
|
|
| 572 | 611 |
#endif |
| 573 | 612 |
|
| 574 | 613 |
Impl *adapter = lookupAdapter(handle); |
| ... | ... | |
| 580 | 619 |
PluginAdapterBase::Impl::vampGetRemainingFeatures(VampPluginHandle handle) |
| 581 | 620 |
{
|
| 582 | 621 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 583 |
std::cerr << "PluginAdapterBase::Impl::vampGetRemainingFeatures(" << handle << ")" << std::endl;
|
|
| 622 |
cerr << "PluginAdapterBase::Impl::vampGetRemainingFeatures(" << handle << ")" << endl;
|
|
| 584 | 623 |
#endif |
| 585 | 624 |
|
| 586 | 625 |
Impl *adapter = lookupAdapter(handle); |
| ... | ... | |
| 592 | 631 |
PluginAdapterBase::Impl::vampReleaseFeatureSet(VampFeatureList *) |
| 593 | 632 |
{
|
| 594 | 633 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 595 |
std::cerr << "PluginAdapterBase::Impl::vampReleaseFeatureSet" << std::endl;
|
|
| 634 |
cerr << "PluginAdapterBase::Impl::vampReleaseFeatureSet" << endl;
|
|
| 596 | 635 |
#endif |
| 597 | 636 |
} |
| 598 | 637 |
|
| 599 | 638 |
void |
| 600 | 639 |
PluginAdapterBase::Impl::cleanup(Plugin *plugin) |
| 601 | 640 |
{
|
| 641 |
// at this point no mutex is held |
|
| 642 |
|
|
| 643 |
lock_guard<mutex> adapterMapGuard(adapterMapMutex()); |
|
| 644 |
lock_guard<mutex> guard(m_mutex); |
|
| 645 |
|
|
| 602 | 646 |
if (m_fs.find(plugin) != m_fs.end()) {
|
| 603 | 647 |
size_t outputCount = 0; |
| 604 | 648 |
if (m_pluginOutputs[plugin]) {
|
| 605 | 649 |
outputCount = m_pluginOutputs[plugin]->size(); |
| 606 | 650 |
} |
| 607 | 651 |
#ifdef DEBUG_PLUGIN_ADAPTER |
| 608 |
std::cerr << "PluginAdapterBase::Impl::cleanup: " << outputCount << " output(s)" << std::endl;
|
|
| 652 |
cerr << "PluginAdapterBase::Impl::cleanup: " << outputCount << " output(s)" << endl;
|
|
| 609 | 653 |
#endif |
| 610 | 654 |
VampFeatureList *list = m_fs[plugin]; |
| 611 | 655 |
for (unsigned int i = 0; i < outputCount; ++i) {
|
| ... | ... | |
| 645 | 689 |
void |
| 646 | 690 |
PluginAdapterBase::Impl::checkOutputMap(Plugin *plugin) |
| 647 | 691 |
{
|
| 692 |
// must be called with m_mutex held |
|
| 693 |
|
|
| 648 | 694 |
OutputMap::iterator i = m_pluginOutputs.find(plugin); |
| 649 | 695 |
|
| 650 | 696 |
if (i == m_pluginOutputs.end() || !i->second) {
|
| ... | ... | |
| 652 | 698 |
m_pluginOutputs[plugin] = new Plugin::OutputList |
| 653 | 699 |
(plugin->getOutputDescriptors()); |
| 654 | 700 |
|
| 655 |
// std::cerr << "PluginAdapterBase::Impl::checkOutputMap: Have " << m_pluginOutputs[plugin]->size() << " outputs for plugin " << plugin->getIdentifier() << std::endl;
|
|
| 701 |
// cerr << "PluginAdapterBase::Impl::checkOutputMap: Have " << m_pluginOutputs[plugin]->size() << " outputs for plugin " << plugin->getIdentifier() << endl;
|
|
| 656 | 702 |
} |
| 657 | 703 |
} |
| 658 | 704 |
|
| 659 | 705 |
void |
| 660 | 706 |
PluginAdapterBase::Impl::markOutputsChanged(Plugin *plugin) |
| 661 | 707 |
{
|
| 708 |
lock_guard<mutex> guard(m_mutex); |
|
| 709 |
|
|
| 662 | 710 |
OutputMap::iterator i = m_pluginOutputs.find(plugin); |
| 663 | 711 |
|
| 664 |
// std::cerr << "PluginAdapterBase::Impl::markOutputsChanged" << std::endl;
|
|
| 712 |
// cerr << "PluginAdapterBase::Impl::markOutputsChanged" << endl;
|
|
| 665 | 713 |
|
| 666 | 714 |
if (i != m_pluginOutputs.end()) {
|
Also available in: Unified diff