lbajardsilogic@79: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@79: lbajardsilogic@79: /* Sound Access lbajardsilogic@79: EASAIER client application. lbajardsilogic@79: Silogic 2007. Laure Bajard. lbajardsilogic@79: lbajardsilogic@79: This program is free software; you can redistribute it and/or lbajardsilogic@79: modify it under the terms of the GNU General Public License as lbajardsilogic@79: published by the Free Software Foundation; either version 2 of the lbajardsilogic@79: License, or (at your option) any later version. See the file lbajardsilogic@79: COPYING included with this distribution for more information. lbajardsilogic@79: */ lbajardsilogic@79: lbajardsilogic@79: #ifndef _FILTER_H_ lbajardsilogic@79: #define _FILTER_H_ lbajardsilogic@79: lbajardsilogic@203: #include lbajardsilogic@203: lbajardsilogic@79: #include "base/PropertyContainer.h" lbajardsilogic@79: lbajardsilogic@223: class Filter : public QObject //: public PropertyContainer lbajardsilogic@79: { lbajardsilogic@79: Q_OBJECT lbajardsilogic@79: lbajardsilogic@79: public: lbajardsilogic@79: Filter(); lbajardsilogic@79: virtual ~Filter(); lbajardsilogic@79: lbajardsilogic@223: //virtual QString getPropertyLabel(const PropertyName &) const {return "";} lbajardsilogic@223: //virtual QString getPropertyContainerName() const {return "";} lbajardsilogic@223: //virtual QString getPropertyContainerIconName() const {return "";} lbajardsilogic@79: benoitrigolleau@88: lbajardsilogic@79: /** lbajardsilogic@79: * Put (and possibly process) a given number of input samples. lbajardsilogic@79: * Number should usually equal the value returned from lbajardsilogic@79: * getRequiredInputSamples(). lbajardsilogic@79: */ lbajardsilogic@79: virtual void putInput(float **input, size_t samples) = 0; lbajardsilogic@79: lbajardsilogic@79: /** lbajardsilogic@79: * Get some processed samples. lbajardsilogic@79: */ lbajardsilogic@79: virtual void getOutput(float **output, size_t samples) = 0; lbajardsilogic@79: lbajardsilogic@82: virtual size_t getRequiredInputSamples(size_t outputSamplesNeeded) = 0; lbajardsilogic@79: lbajardsilogic@84: inline void setSourceChannelCount(size_t channel){m_sourceChannelCount = channel;} lbajardsilogic@84: inline size_t getSourceChannelCount(){return m_sourceChannelCount;} lbajardsilogic@203: bool isFilterEnabled() const; benoitrigolleau@88: lbajardsilogic@181: /*allow or not to add another filter of this type*/ lbajardsilogic@181: virtual bool allowMultiple() = 0; lbajardsilogic@181: lbajardsilogic@203: QString toEasaierXmlString(QString indent, QString extraAttributes) const; lbajardsilogic@203: lbajardsilogic@203: void setProperties(const QXmlAttributes &attributes); lbajardsilogic@203: lbajardsilogic@223: std::vector getFilterCollection(){ return m_filterCollection;} lbajardsilogic@223: benoitrigolleau@88: signals : lbajardsilogic@203: void filterEnableChange(bool); lbajardsilogic@224: void propertyContainerRemoved(QString); lbajardsilogic@203: lbajardsilogic@225: void propertiesChanged(PropertyContainer *); lbajardsilogic@84: lbajardsilogic@79: protected: lbajardsilogic@79: lbajardsilogic@84: size_t m_sourceChannelCount; benoitrigolleau@88: bool filterEnabled; benoitrigolleau@88: benoitrigolleau@88: public slots : benoitrigolleau@88: void setFilterEnabled(bool b); benoitrigolleau@88: void setFilterEnabled(int b); lbajardsilogic@79: lbajardsilogic@223: protected: lbajardsilogic@223: std::vector m_filterCollection; lbajardsilogic@79: }; lbajardsilogic@79: lbajardsilogic@79: #endif