rt-vamp-plugin-sdk 0.3.1
Real-time Vamp plugin SDK for C++20
Loading...
Searching...
No Matches
rtvamp::pluginsdk::IsPlugin Concept Reference

#include <rtvamp/pluginsdk/Plugin.hpp>

Concept definition

template<typename T>
concept rtvamp::pluginsdk::IsPlugin = std::constructible_from<T, float> && requires(
T plugin,
std::string_view parameterName,
float parameterValue,
std::string_view programName,
uint32_t stepSize,
uint32_t blockSize,
uint64_t nsec
) {
{ T::outputCount } -> std::convertible_to<uint32_t>;
{ T::meta } -> std::convertible_to<typename T::Meta>;
requires (!HasParameters<T> || requires {
{ plugin.getParameter(parameterName) } -> std::same_as<std::optional<float>>;
{ plugin.setParameter(parameterName, parameterValue) } -> std::same_as<bool>;
});
requires (!HasPrograms<T> || requires {
{ plugin.getCurrentProgram() } -> std::same_as<std::string_view>;
{ plugin.selectProgram(programName) } -> std::same_as<bool>;
});
{ plugin.getPreferredStepSize() } -> std::same_as<uint32_t>;
{ plugin.getPreferredBlockSize() } -> std::same_as<uint32_t>;
{ plugin.getOutputDescriptors() } -> std::same_as<std::array<PluginBase::OutputDescriptor, T::outputCount>>;
{ plugin.initialise(stepSize, blockSize) } -> std::same_as<bool>;
{ plugin.reset() } -> std::same_as<void>;
{ plugin.process(buffer, nsec) } -> std::convertible_to<const std::array<PluginBase::Feature, T::outputCount>&>;
}
std::variant< TimeDomainBuffer, FrequencyDomainBuffer > InputBuffer
Input domain variant.
Definition Plugin.hpp:64
Definition Plugin.hpp:149