Audacity 3.2.0
|
An Effect base class that implements a two pass process. More...
#include <TwoPassSimpleMono.h>
Public Member Functions | |
~EffectTwoPassSimpleMono () override | |
bool | Process (EffectInstance &instance, EffectSettings &settings) override |
Public Member Functions inherited from StatefulEffect | |
~StatefulEffect () override | |
std::shared_ptr< EffectInstance > | MakeInstance () const override |
Make an object maintaining short-term state of an Effect. More... | |
Public Member Functions inherited from StatefulEffectBase | |
virtual bool | Init () |
virtual bool | Process (EffectInstance &instance, EffectSettings &settings)=0 |
virtual bool | RealtimeInitialize (EffectSettings &settings, double sampleRate) |
virtual bool | RealtimeAddProcessor (EffectSettings &settings, EffectOutputs *pOutputs, unsigned numChannels, float sampleRate) |
virtual bool | RealtimeSuspend () |
virtual bool | RealtimeResume () |
virtual bool | RealtimeProcessStart (MessagePackage &package) |
settings are possibly changed, since last call, by an asynchronous dialog More... | |
virtual size_t | RealtimeProcess (size_t group, EffectSettings &settings, const float *const *inBuf, float *const *outBuf, size_t numSamples) |
virtual bool | RealtimeProcessEnd (EffectSettings &settings) noexcept |
settings can be updated to let a dialog change appearance at idle More... | |
virtual bool | RealtimeFinalize (EffectSettings &settings) noexcept |
virtual size_t | SetBlockSize (size_t maxBlockSize) |
virtual size_t | GetBlockSize () const |
virtual unsigned | GetAudioInCount () const |
How many input buffers to allocate at once. More... | |
virtual unsigned | GetAudioOutCount () const |
How many output buffers to allocate at once. More... | |
virtual sampleCount | GetLatency () const |
virtual bool | NeedsDither () const |
virtual bool | ProcessInitialize (EffectSettings &settings, double sampleRate, ChannelNames chanMap=nullptr) |
virtual bool | ProcessFinalize () noexcept |
Public Member Functions inherited from Effect | |
Effect () | |
virtual | ~Effect () |
PluginPath | GetPath () const override |
bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) override |
bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const override |
ComponentInterfaceSymbol | GetSymbol () const override |
VendorSymbol | GetVendor () const override |
wxString | GetVersion () const override |
TranslatableString | GetDescription () const override |
EffectFamilySymbol | GetFamily () const override |
Report identifier and user-visible name of the effect protocol. More... | |
bool | IsInteractive () const override |
Whether the effect needs a dialog for entry of settings. More... | |
bool | IsDefault () const override |
Whether the effect sorts "above the line" in the menus. More... | |
RealtimeSince | RealtimeSupport () const override |
Since which version of Audacity has the effect supported realtime? More... | |
bool | SupportsAutomation () const override |
Whether the effect has any automatable controls. More... | |
bool | SaveSettings (const EffectSettings &settings, CommandParameters &parms) const override |
Store settings as keys and values. More... | |
bool | LoadSettings (const CommandParameters &parms, EffectSettings &settings) const override |
Restore settings from keys and values. More... | |
OptionalMessage | LoadUserPreset (const RegistryPath &name, EffectSettings &settings) const override |
bool | SaveUserPreset (const RegistryPath &name, const EffectSettings &settings) const override |
Save settings in the configuration file as a user-named preset. More... | |
RegistryPaths | GetFactoryPresets () const override |
Report names of factory presets. More... | |
OptionalMessage | LoadFactoryPreset (int id, EffectSettings &settings) const override |
OptionalMessage | LoadFactoryDefaults (EffectSettings &settings) const override |
virtual const EffectParameterMethods & | Parameters () const |
bool | CanExportPresets () const override |
Whether the effect supports export of presets to files, and importing too. More... | |
bool | HasOptions () const override |
const EffectSettingsManager & | GetDefinition () const override |
virtual NumericFormatID | GetSelectionFormat () |
bool | SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const override |
OptionalMessage | LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const override |
bool | IsBatchProcessing () const override |
void | SetBatchProcessing () override |
void | UnsetBatchProcessing () override |
unsigned | TestUIFlags (unsigned mask) |
bool | Delegate (Effect &delegate, EffectSettings &settings, InstanceFinder finder={}) |
Re-invoke DoEffect on another Effect object that implements the work. More... | |
Public Member Functions inherited from EffectBase | |
EffectBase () | |
~EffectBase () override | |
bool | IsLinearEffect () const |
bool | PreviewsFullSelection () const |
void | SetTracks (TrackList *pTracks) |
double | GetDefaultDuration () |
virtual std::any | BeginPreview (const EffectSettings &settings) |
Called when Preview() starts, to allow temporary effect state changes. More... | |
bool | DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess) override |
virtual double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const =0 |
void | CountWaveTracks () |
Public Member Functions inherited from EffectPlugin | |
EffectPlugin & | operator= (EffectPlugin &)=delete |
virtual | ~EffectPlugin () |
virtual bool | HasOptions () const =0 |
virtual bool | CanExportPresets () const =0 |
Whether the effect supports export of presets to files, and importing too. More... | |
virtual const EffectSettingsManager & | GetDefinition () const =0 |
virtual bool | SaveSettingsAsString (const EffectSettings &settings, wxString &parms) const =0 |
virtual OptionalMessage | LoadSettingsFromString (const wxString &parms, EffectSettings &settings) const =0 |
virtual bool | IsBatchProcessing () const =0 |
virtual void | SetBatchProcessing ()=0 |
virtual void | UnsetBatchProcessing ()=0 |
virtual bool | DoEffect (EffectSettings &settings, const InstanceFinder &finder, double projectRate, TrackList *list, WaveTrackFactory *factory, NotifyingSelectedRegion &selectedRegion, unsigned flags, const EffectSettingsAccessPtr &pAccess=nullptr)=0 |
Public Member Functions inherited from EffectInstanceFactory | |
virtual | ~EffectInstanceFactory () |
virtual std::shared_ptr< EffectInstance > | MakeInstance () const =0 |
Make an object maintaining short-term state of an Effect. More... | |
Public Member Functions inherited from EffectSettingsManager | |
virtual | ~EffectSettingsManager () |
virtual bool | VisitSettings (SettingsVisitor &visitor, EffectSettings &settings) |
virtual bool | VisitSettings (ConstSettingsVisitor &visitor, const EffectSettings &settings) const |
virtual EffectSettings | MakeSettings () const |
virtual bool | CopySettingsContents (const EffectSettings &src, EffectSettings &dst) const |
Update one settings object from another. More... | |
virtual std::unique_ptr< EffectOutputs > | MakeOutputs () const |
Produce an object to hold values to send to effect output meters. More... | |
Public Member Functions inherited from EffectDefinitionInterface | |
virtual | ~EffectDefinitionInterface () |
virtual EffectType | GetType () const =0 |
Type determines how it behaves. More... | |
virtual EffectType | GetClassification () const |
Determines which menu it appears in; default same as GetType(). More... | |
virtual EffectFamilySymbol | GetFamily () const =0 |
Report identifier and user-visible name of the effect protocol. More... | |
virtual bool | IsInteractive () const =0 |
Whether the effect needs a dialog for entry of settings. More... | |
virtual bool | IsDefault () const =0 |
Whether the effect sorts "above the line" in the menus. More... | |
virtual RealtimeSince | RealtimeSupport () const =0 |
Since which version of Audacity has the effect supported realtime? More... | |
bool | SupportsRealtime () const |
virtual bool | SupportsAutomation () const =0 |
Whether the effect has any automatable controls. More... | |
virtual bool | EnablesDebug () const |
Whether the effect dialog should have a Debug button; default, always false. More... | |
virtual ManualPageID | ManualPage () const |
Name of a page in the Audacity alpha manual, default is empty. More... | |
virtual FilePath | HelpPage () const |
Fully qualified local help file name, default is empty. More... | |
virtual bool | IsHiddenFromMenus () const |
Default is false. More... | |
Public Member Functions inherited from ComponentInterface | |
virtual | ~ComponentInterface () |
virtual PluginPath | GetPath () const =0 |
virtual ComponentInterfaceSymbol | GetSymbol () const =0 |
virtual VendorSymbol | GetVendor () const =0 |
virtual wxString | GetVersion () const =0 |
virtual TranslatableString | GetDescription () const =0 |
TranslatableString | GetName () const |
Protected Member Functions | |
virtual bool | InitPass1 () |
virtual bool | InitPass2 () |
virtual bool | NewTrackPass1 () |
virtual bool | NewTrackPass2 () |
virtual bool | ProcessPass1 (float *WXUNUSED(buffer), size_t WXUNUSED(len)) |
Override this method to actually process audio. More... | |
virtual bool | ProcessPass2 (float *WXUNUSED(buffer), size_t WXUNUSED(len)) |
virtual bool | TwoBufferProcessPass1 (float *buffer1, size_t len1, float *buffer2, size_t len2) |
virtual bool | TwoBufferProcessPass2 (float *buffer1, size_t len1, float *buffer2, size_t len2) |
void | DisableSecondPass () |
Call this if you know in advance that no second pass will be needed. More... | |
Protected Member Functions inherited from Effect | |
bool | CheckWhetherSkipEffect (const EffectSettings &settings) const override |
Default implementation returns false. More... | |
double | CalcPreviewInputLength (const EffectSettings &settings, double previewLength) const override |
Default implementation returns previewLength More... | |
bool | TotalProgress (double frac, const TranslatableString &={}) const |
bool | TrackProgress (int whichTrack, double frac, const TranslatableString &={}) const |
bool | TrackGroupProgress (int whichGroup, double frac, const TranslatableString &={}) const |
int | GetNumWaveTracks () const |
int | GetNumWaveGroups () const |
void | GetBounds (const WaveTrack &track, sampleCount *start, sampleCount *len) |
Protected Member Functions inherited from EffectBase | |
virtual bool | CheckWhetherSkipEffect (const EffectSettings &settings) const =0 |
After Init(), tell whether Process() should be skipped. More... | |
void | SetLinearEffectFlag (bool linearEffectFlag) |
void | SetPreviewFullSelectionFlag (bool previewDurationFlag) |
bool | IsPreviewing () const |
const TrackList * | inputTracks () const |
const AudacityProject * | FindProject () const |
Protected Attributes | |
int | mCurTrackNum |
double | mCurRate |
double | mCurT0 |
double | mCurT1 |
int | mPass |
bool | mSecondPassDisabled |
std::shared_ptr< TrackList > | mWorkTracks |
TrackList * | mTrackLists [2] |
Protected Attributes inherited from EffectBase | |
double | mF0 {} |
double | mF1 {} |
wxArrayString | mPresetNames |
unsigned | mUIFlags { 0 } |
Private Member Functions | |
bool | ProcessOne (WaveChannel &t, WaveChannel &outTrack, sampleCount start, sampleCount end) |
bool | ProcessPass (EffectSettings &settings) |
Additional Inherited Members | |
Public Types inherited from StatefulEffectBase | |
using | MessagePackage = EffectInstance::MessagePackage |
Public Types inherited from EffectPlugin | |
using | EffectSettingsAccessPtr = std::shared_ptr< EffectSettingsAccess > |
using | InstancePointer = std::shared_ptr< EffectInstanceEx > |
using | InstanceFinder = std::function< std::optional< InstancePointer >(EffectSettings &settings) > |
Public Types inherited from EffectDefinitionInterface | |
enum class | RealtimeSince : unsigned { Never , After_3_1 , Always } |
In which versions of Audacity was an effect realtime capable? More... | |
Static Public Member Functions inherited from Effect | |
static Effect * | FetchParameters (Effect &e, EffectSettings &) |
Static Public Member Functions inherited from EffectBase | |
static std::optional< InstancePointer > | FindInstance (EffectPlugin &plugin) |
static InstanceFinder | DefaultInstanceFinder (EffectPlugin &plugin) |
Static Public Member Functions inherited from EffectDefinitionInterface | |
static Identifier | GetSquashedName (const Identifier &ident) |
A utility that strips spaces and CamelCases a name. More... | |
Public Attributes inherited from EffectBase | |
std::shared_ptr< TrackList > | mTracks {} |
int | mNumTracks {} |
BasicUI::ProgressDialog * | mProgress {} |
double | mProjectRate {} |
WaveTrackFactory * | mFactory {} |
double | mT0 {} |
double | mT1 {} |
bool | mIsPreview { false } |
Static Public Attributes inherited from EffectPlugin | |
static const wxString | kUserPresetIdent = wxT("User Preset:") |
static const wxString | kFactoryPresetIdent = wxT("Factory Preset:") |
static const wxString | kCurrentSettingsIdent = wxT("<Current Settings>") |
static const wxString | kFactoryDefaultsIdent = wxT("<Factory Defaults>") |
An Effect base class that implements a two pass process.
Inherit from it if your effect needs to pass twice over the data. It does the first pass on all selected tracks before going back and doing the second pass over all selected tracks.
Definition at line 19 of file TwoPassSimpleMono.h.
|
overridedefault |
|
inlineprotected |
Call this if you know in advance that no second pass will be needed.
This is used as a hint for the progress bar
Definition at line 83 of file TwoPassSimpleMono.h.
Referenced by LegacyCompressorBase::InitPass1().
|
protectedvirtual |
Override these methods if you need to initialize something before each pass. Return false if processing should stop.
Reimplemented in LegacyCompressorBase.
Definition at line 242 of file TwoPassSimpleMono.cpp.
Referenced by Process().
|
protectedvirtual |
Reimplemented in LegacyCompressorBase.
Definition at line 249 of file TwoPassSimpleMono.cpp.
Referenced by Process().
|
protectedvirtual |
Override these methods if you need to do things before every track (including the first one)
Reimplemented in LegacyCompressorBase.
Definition at line 231 of file TwoPassSimpleMono.cpp.
Referenced by ProcessPass().
|
protectedvirtual |
Definition at line 236 of file TwoPassSimpleMono.cpp.
Referenced by ProcessPass().
|
overridevirtual |
Implements StatefulEffectBase.
Definition at line 24 of file TwoPassSimpleMono.cpp.
References TrackList::Create(), EffectBase::FindProject(), floatSample, TrackList::Get(), EffectDefinitionInterface::GetType(), InitPass1(), InitPass2(), mPass, mSecondPassDisabled, EffectBase::mT0, EffectBase::mT1, mTrackLists, EffectBase::mTracks, mWorkTracks, ProcessPass(), and settings().
|
private |
Definition at line 122 of file TwoPassSimpleMono.cpp.
References WaveChannel::Append(), details::end(), floatSample, WaveChannel::GetBestBlockSize(), WaveChannel::GetFloats(), WaveChannel::GetMaxBlockSize(), Effect::GetNumWaveTracks(), limitSampleBufferSize(), mCurTrackNum, min(), mPass, mSecondPassDisabled, WaveChannel::SetFloats(), anonymous_namespace{NoteTrack.cpp}::swap(), Effect::TotalProgress(), TwoBufferProcessPass1(), and TwoBufferProcessPass2().
Referenced by ProcessPass().
|
private |
Definition at line 61 of file TwoPassSimpleMono.cpp.
References details::end(), mCurRate, mCurT0, mCurT1, mCurTrackNum, min(), mPass, mSecondPassDisabled, EffectBase::mT0, EffectBase::mT1, mTrackLists, NewTrackPass1(), NewTrackPass2(), and ProcessOne().
Referenced by Process().
|
inlineprotectedvirtual |
Override this method to actually process audio.
Definition at line 45 of file TwoPassSimpleMono.h.
|
inlineprotectedvirtual |
Definition at line 49 of file TwoPassSimpleMono.h.
|
inlineprotectedvirtual |
Override this method to actually process audio with access to 2 sequential buffers at a time
Either buffer1 or buffer2 may be modified as needed This allows implementation of processing with delays The default just calls the one-buffer-at-a-time method
Reimplemented in LegacyCompressorBase.
Definition at line 60 of file TwoPassSimpleMono.h.
Referenced by ProcessOne().
|
inlineprotectedvirtual |
Definition at line 68 of file TwoPassSimpleMono.h.
Referenced by ProcessOne().
|
protected |
Definition at line 87 of file TwoPassSimpleMono.h.
Referenced by LegacyCompressorBase::NewTrackPass1(), and ProcessPass().
|
protected |
Definition at line 88 of file TwoPassSimpleMono.h.
Referenced by ProcessPass().
|
protected |
Definition at line 89 of file TwoPassSimpleMono.h.
Referenced by ProcessPass().
|
protected |
Definition at line 86 of file TwoPassSimpleMono.h.
Referenced by ProcessOne(), and ProcessPass().
|
protected |
Definition at line 90 of file TwoPassSimpleMono.h.
Referenced by Process(), ProcessOne(), and ProcessPass().
|
protected |
Definition at line 91 of file TwoPassSimpleMono.h.
Referenced by Process(), ProcessOne(), and ProcessPass().
|
protected |
Definition at line 94 of file TwoPassSimpleMono.h.
Referenced by Process(), and ProcessPass().
|
protected |
Definition at line 93 of file TwoPassSimpleMono.h.
Referenced by Process().