view sv/filter/FilterStack.h @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents c413e82a4812
children
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*	Sound Access	
		EASAIER client application.	
		Silogic 2007. Laure Bajard. 
	
	This program is free software; you can redistribute it and/or    
	modify it under the terms of the GNU General Public License as    
	published by the Free Software Foundation; either version 2 of the    
	License, or (at your option) any later version.  See the file    
	COPYING included with this distribution for more information.
*/

#ifndef _FILTER_STACK_H_
#define _FILTER_STACK_H_

#include <QObject>
#include <map>

#include "Filter.h"

class FilterStack : public QObject
{
	Q_OBJECT

public:
	FilterStack();
	virtual ~FilterStack();

	void addFilter(Filter * filter);
	void removeFilter(QString &name);

	void removeAllFilters();

	void putInput(float **input, size_t samples);
    void getOutput(float **output, size_t samples);

	QString getUniqueFilterName(QString candidate);

	size_t getRequiredInputSamples(size_t outputSamplesNeeded);
	size_t getRequiredSkipSamples();

	void setSourceChannelCount(size_t channel);

	Filter* findFilter(QString &name);

	bool allowOtherFilter(QString &labelType);

	QString toEasaierXmlString(QString indent, QString extraAttributes) const;

signals:
	void newFilterAdded(PropertyContainer *);
	void filterRemoved(QString);

protected:
	std::map<int, Filter *> m_filters; 

	int			m_count;

	size_t		m_sourceChannelCount; 
};

#endif