CLAM-Development  1.4.0
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes
CLAM::FFT_base Class Reference

Abstract base class for FFT classes. More...

#include <FFT_base.hxx>

List of all members.

Public Member Functions

 FFT_base ()
virtual ~FFT_base ()
const ProcessingConfigGetConfig () const
 Configuration access:
virtual bool Do (void)=0
 Supervised-mode Do function.
virtual bool Do (const Audio &in, Spectrum &out)=0
 Standard FFT Do function, with storage class references as arguments.
bool SetPrototypes (const Audio &in, const Spectrum &out)
 FFT non-supervised mode SetPrototypes function.
bool SetPrototypes ()
 Standard supervised-mode SetPrototypes function.
bool UnsetPrototypes ()
 Standard UnsetPrototypes function.
void CheckTypes (const Audio &in, const Spectrum &out) const
virtual bool MayDisableExecution () const
virtual bool DisableExecution ()
virtual bool EnableExecution ()
virtual void ToComplex (Spectrum &out)=0
virtual void ToOther (Spectrum &out)
- Public Member Functions inherited from CLAM::Processing
bool Configure (const ProcessingConfig &config)
 Configuration change method.
void Start (void)
 Method to turn the object into running state.
void Stop (void)
 Method to put the object out of running state When in execution mode, this method must be called before any further call to Configure() methods.
 Processing ()
virtual ~Processing ()
virtual const char * GetClassName () const =0
 Override it in every subclass and retur the name of that class.
virtual bool CanProcessInplace ()
 Override this method if your processing cannot process inplace.
bool CanConsumeAndProduce ()
 Check that Supervised Do() can be safely called.
void ConsumeAndProduce ()
 Acknoledges data tokens in published ports as read/writen by calling Produce() for all registered OutPorts and Consume() to all registered InPorts.
std::string GetExecStateString () const
bool IsConfigured () const
bool IsRunning () const
void RegisterOutPort (OutPortBase *out)
void RegisterInPort (InPortBase *in)
void RegisterOutControl (OutControlBase *out)
void RegisterInControl (InControlBase *in)
void SetParent (Processing *p)
void SetNetworkBackLink (Network *network)
virtual bool ModifiesPortsAndControlsAtConfiguration ()
 This method is used to determine if a given processing can change its interface of ports/controls after its construction (i.e.
bool HasInPort (const std::string &name)
bool HasOutPort (const std::string &name)
bool HasInControl (const std::string &name)
bool HasOutControl (const std::string &name)
InPortBaseGetInPort (const std::string &name)
OutPortBaseGetOutPort (const std::string &name)
InControlBaseGetInControl (const std::string &name)
OutControlBaseGetOutControl (const std::string &name)
InPortBaseGetInPort (unsigned index)
OutPortBaseGetOutPort (unsigned index)
InControlBaseGetInControl (unsigned index)
OutControlBaseGetOutControl (unsigned index)
unsigned GetNInPorts () const
unsigned GetNOutPorts () const
unsigned GetNInControls () const
unsigned GetNOutControls () const
const std::string & GetConfigErrorMessage () const
 Returns a string describing configuration errors if any.
virtual bool IsSyncSource () const
 Wether the processing is a sync source such as audio i/o device, or an audio callback hook (i.e.
virtual bool SupportsVariableAudioSize () const
 This method reports whether the processing supports dynamic buffer-size host.

Protected Types

enum  FFTState { sComplex, sComplexSync, sOther }

Protected Member Functions

void ChangeSize (int n)
int GetSize ()
virtual bool ConcreteConfigure (const ProcessingConfig &)=0
 Configuration method interface.
- Protected Member Functions inherited from CLAM::Processing
virtual bool ConcreteStart ()
 Processing objects have to redefine this method when starting them implies some internal changes.
virtual bool ConcreteStop ()
 Processing objects have to redefine this method when stoping them implies some internal changes.
unsigned BackendBufferSize ()
 Given by the NetworkPlayer (backend) if exists.
unsigned BackendSampleRate ()
 Given by the NetworkPlayer (backend) if exists.
InControlRegistryGetInControls ()
 Accessor to published Controls manager.
OutControlRegistryGetOutControls ()
 Accessor to published Controls manager.
InPortRegistryGetInPorts ()
 Accessor to published Ports manager.
OutPortRegistryGetOutPorts ()
 Accessor to published Portss manager.
bool AddConfigErrorMessage (const std::string &msg)
 Use this method to append a configuration errors to the processing when implementing ConcreteConfigure.
bool AbleToExecute (void) const
 In debug-mode checks that the processing is configured and started.
template<typename ConcreteConfig >
void CopyAsConcreteConfig (ConcreteConfig &concrete, const ProcessingConfig &abstract) const
 Helper template to convert a reference to a ProcessingConfig to the concrete ProcessingConfig specified on the first parameter.
void SetExecState (ExecState state)

Protected Attributes

Spectrum mComplexSpectrum
 Auxiliary spectrum used if output spectrum does not have complex array.
FFTConfig mConfig
 FFT Configuration.
int mSize
 FFT size.
FFTState mState
 I/O Prototype state of the FFT object.
FFTState mBackupState
 When the object enters "Disabled" mode, it stores the previoius state here.
AudioInPort mInput
OutPort< SpectrummOutput
TDatafftbuffer
 Internal output buffer.
- Protected Attributes inherited from CLAM::Processing
ProcessingCompositempParent
 Pointer to the parent (composite) processing object, or 0.
Network_network
 The parent network if any.

Static Protected Attributes

static SpecTypeFlags mComplexflags
 Auxiliary flags structure, used to add the complex attribute.

Additional Inherited Members

- Public Types inherited from CLAM::Processing
enum  ExecState { Unconfigured = 0, Ready, Running }
 Processing Object possible execution states. More...
typedef NullProcessingConfig Config

Detailed Description

Abstract base class for FFT classes.

Definition at line 43 of file FFT_base.hxx.


Member Enumeration Documentation

enum CLAM::FFT_base::FFTState
protected
Enumerator:
sComplex 
sComplexSync 
sOther 

Definition at line 60 of file FFT_base.hxx.


Constructor & Destructor Documentation

CLAM::FFT_base::FFT_base ( )

Definition at line 45 of file FFT.cxx.

CLAM::FFT_base::~FFT_base ( )
virtual

Definition at line 53 of file FFT.cxx.

References fftbuffer.


Member Function Documentation

void CLAM::FFT_base::ChangeSize ( int  n)
protected

Definition at line 58 of file FFT.cxx.

References CLAM_ASSERT.

void CLAM::FFT_base::CheckTypes ( const Audio in,
const Spectrum out 
) const
bool CLAM::FFT_base::ConcreteConfigure ( const ProcessingConfig )
protectedpure virtual

Configuration method interface.

The Processing base class forces all the concrete classes derived from it to implement this method, which must actually perform the specific configuration tasks.

Note that the user can not call this method directly. He will use Configure instead. The argument is expected to be an object of the necesary concrete configuration class.

Parameters:
Referenceto the configuration object.
Returns:
false if the object is not yet fully configured. (For example, if some important configuration attribute such as number of ports was set to zero in the config object)

true if the processing object is left in a consistent state, and can be executed.

Exceptions:
Thismethod must throw a bad_cast exception if the argument is not an object of the expected configuration class.

Reimplemented from CLAM::Processing.

Implemented in CLAM::FFT_fftw3.

Definition at line 110 of file FFT.cxx.

References CLAM::Processing::AddConfigErrorMessage(), CLAM::SpecTypeFlags::bComplex, CLAM::SpecTypeFlags::bMagPhase, CLAM::Spectrum::Configure(), CLAM::Processing::CopyAsConcreteConfig(), fftbuffer, mComplexflags, mComplexSpectrum, mConfig, mInput, mSize, mState, CLAM::InPort< Token >::SetHop(), CLAM::InPort< Token >::SetSize(), and sOther.

virtual bool CLAM::FFT_base::DisableExecution ( )
inlinevirtual

Definition at line 129 of file FFT_base.hxx.

virtual bool CLAM::FFT_base::Do ( void  )
pure virtual

Supervised-mode Do function.

Implements CLAM::Processing.

Implemented in CLAM::FFT_ooura, CLAM::FFT_numrec, and CLAM::FFT_fftw3.

virtual bool CLAM::FFT_base::Do ( const Audio in,
Spectrum out 
)
pure virtual

Standard FFT Do function, with storage class references as arguments.

This method implements the old conversor routines. The resulting spectrum will be of input audio size / 2 + 1. Input audio must be a power-of-two.

Implemented in CLAM::FFT_ooura, CLAM::FFT_numrec, and CLAM::FFT_fftw3.

virtual bool CLAM::FFT_base::EnableExecution ( )
inlinevirtual

Definition at line 131 of file FFT_base.hxx.

const ProcessingConfig& CLAM::FFT_base::GetConfig ( ) const
inlinevirtual

Configuration access:

Reimplemented from CLAM::Processing.

Definition at line 96 of file FFT_base.hxx.

References mConfig.

int CLAM::FFT_base::GetSize ( )
inlineprotected

Definition at line 85 of file FFT_base.hxx.

References mSize.

virtual bool CLAM::FFT_base::MayDisableExecution ( ) const
inlinevirtual

Reimplemented in CLAM::FFT_ooura, and CLAM::FFT_numrec.

Definition at line 127 of file FFT_base.hxx.

bool CLAM::FFT_base::SetPrototypes ( const Audio in,
const Spectrum out 
)
bool CLAM::FFT_base::SetPrototypes ( )
inline

Standard supervised-mode SetPrototypes function.

Definition at line 115 of file FFT_base.hxx.

virtual void CLAM::FFT_base::ToComplex ( Spectrum out)
pure virtual

Referenced by ToOther().

void CLAM::FFT_base::ToOther ( Spectrum out)
virtual
bool CLAM::FFT_base::UnsetPrototypes ( )

Standard UnsetPrototypes function.

Definition at line 143 of file FFT.cxx.

References mState, and sOther.


Member Data Documentation

TData* CLAM::FFT_base::fftbuffer
protected

Internal output buffer.

Definition at line 81 of file FFT_base.hxx.

Referenced by ConcreteConfigure(), CLAM::FFT_numrec::Do(), CLAM::FFT_ooura::Do(), and ~FFT_base().

FFTState CLAM::FFT_base::mBackupState
protected

When the object enters "Disabled" mode, it stores the previoius state here.

It would have been easier to use a single state variable, and a "Disabled" flag outside of the state, but this way we can implement Do()s with a single switch level, which is slightly faster.

Definition at line 75 of file FFT_base.hxx.

SpecTypeFlags CLAM::FFT_base::mComplexflags
staticprotected

Auxiliary flags structure, used to add the complex attribute.

Definition at line 48 of file FFT_base.hxx.

Referenced by ConcreteConfigure(), CLAM::FFT_fftw3::Do(), CLAM::FFT_numrec::Do(), CLAM::FFT_ooura::Do(), and ToOther().

Spectrum CLAM::FFT_base::mComplexSpectrum
protected

Auxiliary spectrum used if output spectrum does not have complex array.

Definition at line 51 of file FFT_base.hxx.

Referenced by ConcreteConfigure(), and ToOther().

FFTConfig CLAM::FFT_base::mConfig
protected

FFT Configuration.

Definition at line 54 of file FFT_base.hxx.

Referenced by ConcreteConfigure(), and GetConfig().

AudioInPort CLAM::FFT_base::mInput
protected
OutPort<Spectrum> CLAM::FFT_base::mOutput
protected

Definition at line 78 of file FFT_base.hxx.

Referenced by CLAM::FFT_fftw3::Do(), CLAM::FFT_numrec::Do(), and CLAM::FFT_ooura::Do().

int CLAM::FFT_base::mSize
protected
FFTState CLAM::FFT_base::mState
protected

I/O Prototype state of the FFT object.

Definition at line 67 of file FFT_base.hxx.

Referenced by ConcreteConfigure(), CLAM::FFT_fftw3::Do(), CLAM::FFT_numrec::Do(), CLAM::FFT_ooura::Do(), SetPrototypes(), and UnsetPrototypes().


The documentation for this class was generated from the following files: