lbajardsilogic@79
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@79
|
2
|
lbajardsilogic@79
|
3 /* Sound Access
|
lbajardsilogic@79
|
4 EASAIER client application.
|
lbajardsilogic@79
|
5 Silogic 2007. Laure Bajard.
|
lbajardsilogic@79
|
6
|
lbajardsilogic@79
|
7 This program is free software; you can redistribute it and/or
|
lbajardsilogic@79
|
8 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@79
|
9 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@79
|
10 License, or (at your option) any later version. See the file
|
lbajardsilogic@79
|
11 COPYING included with this distribution for more information.
|
lbajardsilogic@79
|
12 */
|
lbajardsilogic@79
|
13
|
lbajardsilogic@79
|
14 #ifndef _FILTER_H_
|
lbajardsilogic@79
|
15 #define _FILTER_H_
|
lbajardsilogic@79
|
16
|
lbajardsilogic@203
|
17 #include <QXmlAttributes>
|
lbajardsilogic@203
|
18
|
lbajardsilogic@79
|
19 #include "base/PropertyContainer.h"
|
lbajardsilogic@79
|
20
|
lbajardsilogic@223
|
21 class Filter : public QObject //: public PropertyContainer
|
lbajardsilogic@79
|
22 {
|
lbajardsilogic@79
|
23 Q_OBJECT
|
lbajardsilogic@79
|
24
|
lbajardsilogic@79
|
25 public:
|
lbajardsilogic@79
|
26 Filter();
|
lbajardsilogic@79
|
27 virtual ~Filter();
|
lbajardsilogic@79
|
28
|
lbajardsilogic@223
|
29 //virtual QString getPropertyLabel(const PropertyName &) const {return "";}
|
lbajardsilogic@223
|
30 //virtual QString getPropertyContainerName() const {return "";}
|
lbajardsilogic@223
|
31 //virtual QString getPropertyContainerIconName() const {return "";}
|
lbajardsilogic@79
|
32
|
benoitrigolleau@88
|
33
|
lbajardsilogic@79
|
34 /**
|
lbajardsilogic@79
|
35 * Put (and possibly process) a given number of input samples.
|
lbajardsilogic@79
|
36 * Number should usually equal the value returned from
|
lbajardsilogic@79
|
37 * getRequiredInputSamples().
|
lbajardsilogic@79
|
38 */
|
lbajardsilogic@79
|
39 virtual void putInput(float **input, size_t samples) = 0;
|
lbajardsilogic@79
|
40
|
lbajardsilogic@79
|
41 /**
|
lbajardsilogic@79
|
42 * Get some processed samples.
|
lbajardsilogic@79
|
43 */
|
lbajardsilogic@79
|
44 virtual void getOutput(float **output, size_t samples) = 0;
|
lbajardsilogic@79
|
45
|
lbajardsilogic@82
|
46 virtual size_t getRequiredInputSamples(size_t outputSamplesNeeded) = 0;
|
lbajardsilogic@79
|
47
|
lbajardsilogic@84
|
48 inline void setSourceChannelCount(size_t channel){m_sourceChannelCount = channel;}
|
lbajardsilogic@84
|
49 inline size_t getSourceChannelCount(){return m_sourceChannelCount;}
|
lbajardsilogic@203
|
50 bool isFilterEnabled() const;
|
benoitrigolleau@88
|
51
|
lbajardsilogic@181
|
52 /*allow or not to add another filter of this type*/
|
lbajardsilogic@181
|
53 virtual bool allowMultiple() = 0;
|
lbajardsilogic@181
|
54
|
lbajardsilogic@203
|
55 QString toEasaierXmlString(QString indent, QString extraAttributes) const;
|
lbajardsilogic@203
|
56
|
lbajardsilogic@203
|
57 void setProperties(const QXmlAttributes &attributes);
|
lbajardsilogic@203
|
58
|
lbajardsilogic@223
|
59 std::vector<PropertyContainer*> getFilterCollection(){ return m_filterCollection;}
|
lbajardsilogic@223
|
60
|
benoitrigolleau@88
|
61 signals :
|
lbajardsilogic@203
|
62 void filterEnableChange(bool);
|
lbajardsilogic@224
|
63 void propertyContainerRemoved(QString);
|
lbajardsilogic@203
|
64
|
lbajardsilogic@225
|
65 void propertiesChanged(PropertyContainer *);
|
lbajardsilogic@84
|
66
|
lbajardsilogic@79
|
67 protected:
|
lbajardsilogic@79
|
68
|
lbajardsilogic@84
|
69 size_t m_sourceChannelCount;
|
benoitrigolleau@88
|
70 bool filterEnabled;
|
benoitrigolleau@88
|
71
|
benoitrigolleau@88
|
72 public slots :
|
benoitrigolleau@88
|
73 void setFilterEnabled(bool b);
|
benoitrigolleau@88
|
74 void setFilterEnabled(int b);
|
lbajardsilogic@79
|
75
|
lbajardsilogic@223
|
76 protected:
|
lbajardsilogic@223
|
77 std::vector<PropertyContainer*> m_filterCollection;
|
lbajardsilogic@79
|
78 };
|
lbajardsilogic@79
|
79
|
lbajardsilogic@79
|
80 #endif |