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_STACK_H_ lbajardsilogic@79: #define _FILTER_STACK_H_ lbajardsilogic@79: lbajardsilogic@79: #include lbajardsilogic@79: #include lbajardsilogic@79: lbajardsilogic@79: #include "Filter.h" lbajardsilogic@79: lbajardsilogic@79: class FilterStack : public QObject lbajardsilogic@79: { lbajardsilogic@79: Q_OBJECT lbajardsilogic@79: lbajardsilogic@79: public: lbajardsilogic@79: FilterStack(); lbajardsilogic@79: virtual ~FilterStack(); lbajardsilogic@79: lbajardsilogic@79: void addFilter(Filter * filter); lbajardsilogic@79: void removeFilter(QString &name); lbajardsilogic@79: lbajardsilogic@79: void removeAllFilters(); lbajardsilogic@79: lbajardsilogic@79: void putInput(float **input, size_t samples); lbajardsilogic@79: void getOutput(float **output, size_t samples); lbajardsilogic@79: lbajardsilogic@79: QString getUniqueFilterName(QString candidate); lbajardsilogic@79: lbajardsilogic@82: size_t getRequiredInputSamples(size_t outputSamplesNeeded); lbajardsilogic@106: size_t getRequiredSkipSamples(); lbajardsilogic@82: lbajardsilogic@84: void setSourceChannelCount(size_t channel); lbajardsilogic@84: lbajardsilogic@181: Filter* findFilter(QString &name); lbajardsilogic@181: lbajardsilogic@181: bool allowOtherFilter(QString &labelType); lbajardsilogic@181: lbajardsilogic@203: QString toEasaierXmlString(QString indent, QString extraAttributes) const; lbajardsilogic@203: lbajardsilogic@79: signals: lbajardsilogic@223: void newFilterAdded(PropertyContainer *); lbajardsilogic@79: void filterRemoved(QString); lbajardsilogic@79: lbajardsilogic@79: protected: lbajardsilogic@79: std::map m_filters; lbajardsilogic@79: lbajardsilogic@79: int m_count; lbajardsilogic@84: lbajardsilogic@84: size_t m_sourceChannelCount; lbajardsilogic@79: }; lbajardsilogic@79: lbajardsilogic@79: #endif