ITANUPFilterComponent.h 3.52 KB
Newer Older
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
#ifndef IW_ITA_NUP_CONV_FILTERCOMPONENT_H__
#define IW_ITA_NUP_CONV_FILTERCOMPONENT_H__

// Forwards
class IConvolution;
class ITASampleBuffer;
class ITASampleFrame;

//! Klasse für 2-Kanal Filterkomponenten
/**
 * \image html Filterkomponente.png
 *
 * Eine Filterkomponente ist ein Array von Filterkoeffizienten, dessen Offset (Position)
 * auf ein festes Segment festgelegt ist. In dieser Falterversion (Binaural) haben alle
 * Filterkomponenten zwei Kanäle.
 *
 * Passt auf eine Stufe!
 * TODO: Genauere Beschreibung
 */
//class ITA_CONVOLUTION_API ITANUFilterComponent
{
//public:
//	//! Übergeordneten Falter zurückgeben
//	virtual ITANUPC::IConvolution* getParent() const=0;
//
//	//! Startsegment zurückgeben
//	/**
//	 * Diese Methode gibt den Index des Segments zurück, 
//	 * an dem diese Filterkomponente plaziert ist.
//	 */
//	virtual unsigned int getStartSegment() const=0;
//
//	//! Offset zurückgeben
//	/**
//	 * Diese Methode gibt den Offset zurück,
//	 * d.h. dessen Position (Startsample) in der Impulsantwort. 
//	 */
//	virtual unsigned int getOffset() const=0;
//
//	//! Anzahl Filterkoeffizienten zurückgeben
//	/**
//	 * Gibt die Anzahl Filterkoeffizienten (taps) zurück
//	 */
//	virtual unsigned int getLength() const=0;
//
//	//! Zurückgeben ob die Filterkomponente für die Benutzung zugewiesen ist
//	/**
//	 * \return true, falls die Filterkomponente im Falter zur Benutzung zugewiesen ist.
//	 */
//	virtual bool isPlacedForUse() const=0;
//
//	//! Zurückgeben ob die Filterkomponente benutzt wird
//	/**
//	 * \return true, falls die Filterkomponente im Falter in Benutzung ist.
//	 */
//	virtual bool isInUse() const=0;
//
//	//! Filterkomponente freigeben
//	/**
//	 * Gibt die Filterkomponente zur Freigabe frei.
//	 * Die tatsächliche Freigabe erfolgt, wenn sie nicht mehr benutzt wird.
//	 */
//	virtual void release()=0;
//
//	//! Filterkoeffizienten laden
//	/**
//	 * Lädt neue Filterkoeffizienten.
//	 * Dies ist nur möglich, wenn die Filterkomponente unbenutzt ist.
//	 * ui{Left|Right}DataLength dienen dazu auch aus kürzeren (<getLength()) 
//	 * Quellpuffern laden zu können. Die restlichen Taps werden dann intern Null gesetzt.
//	 *
//	 * Hinweis: Dies führt entsprechende Konditionierungsarbeiten durch (FFTs, etc.)
//	 */
//	virtual void load(const float* pfLeftData, unsigned int uiLeftDataLength,
//		              const float* pfRightData, unsigned int uiRightDataLength)=0;
//
//	//! Filterkoeffizienten laden
//	/**
//	 * Lädt neue Filterkoeffizienten.
//	 * Dies ist nur möglich, wenn die Filterkomponente unbenutzt ist.
//	 * Er darf nicht länger als die maximale Filterlänge sein,
//	 * darf aber durchaus kürzer sein.
//	 * Die restlichen Taps werden dann intern mit Null gesetzt.
//	 *
//	 * Hinweis: Dies führt entsprechende Konditionierungsarbeiten durch (FFTs, etc.)
//	 */
//	virtual void load(const ITASampleBuffer* psbLeftFilter,
//		              const ITASampleBuffer* psbRightFilter)=0;
//
//	//! Filterkoeffizienten laden
//	/**
//	 * Lädt neue Filterkoeffizienten.
//	 * Dies ist nur möglich, wenn die Filterkomponente unbenutzt ist.
//	 * Der SampleFrame muss genau zwei Kanäle haben.
//	 * Er darf nicht länger als die maximale Filterlänge sein,
//	 * darf aber durchaus kürzer sein.
//	 * Die restlichen Taps werden dann intern mit Null gesetzt.
//	 *
//	 * Hinweis: Dies führt entsprechende Konditionierungsarbeiten durch (FFTs, etc.)
//	 */
//	virtual void load(const ITASampleFrame* psfData)=0;
//
//protected:
//	// Geschützer Destruktor
//	virtual ~ITANUFilterComponent() { };
//};

#endif // IW_ITA_NUP_CONV_FILTERCOMPONENT_H__