1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/**********************************************************************
Audacity: A Digital Audio Editor
StatefulPerTrackEffect.cpp
Dominic Mazzoni
Vaughan Johnson
Martyn Shaw
Paul Licameli split from PerTrackEffect.cpp
*******************************************************************//**
\class StatefulPerTrackEffect
\brief Base class for many of the effects in Audacity.
*//*******************************************************************/
#include "StatefulPerTrackEffect.h"
StatefulPerTrackEffect::Instance::~Instance() = default;
bool StatefulPerTrackEffect::Instance::ProcessInitialize(
EffectSettings &settings, double sampleRate, ChannelNames chanMap)
{
return GetEffect()
.ProcessInitialize(settings, sampleRate, chanMap);
}
bool StatefulPerTrackEffect::Instance::ProcessFinalize() noexcept
{
return GetEffect().ProcessFinalize();
}
size_t StatefulPerTrackEffect::Instance::ProcessBlock(EffectSettings &settings,
const float *const *inBlock, float *const *outBlock, size_t blockLen)
{
return GetEffect().ProcessBlock(settings, inBlock, outBlock, blockLen);
}
StatefulPerTrackEffect::~StatefulPerTrackEffect() = default;
std::shared_ptr<EffectInstance> StatefulPerTrackEffect::MakeInstance() const
{
// Cheat with const_cast to return an object that calls through to
// non-const methods of a stateful effect.
// Stateless effects should override this function and be really const
// correct.
return std::make_shared<Instance>(
const_cast<StatefulPerTrackEffect&>(*this));
}
bool StatefulPerTrackEffect::Process(
EffectInstance &instance, EffectSettings &settings)
{
// Call through to a non-virtual function
return PerTrackEffect::Process(instance, settings);
}
size_t StatefulPerTrackEffect::SetBlockSize(size_t maxBlockSize)
{
mBlockSize = maxBlockSize;
return mBlockSize;
}
size_t StatefulPerTrackEffect::GetBlockSize() const
{
return mBlockSize;
}
bool StatefulPerTrackEffect::ProcessInitialize(
EffectSettings &, double, ChannelNames)
{
return true;
}
bool StatefulPerTrackEffect::ProcessFinalize() noexcept
{
return true;
}
|