1 /* This file is part of the KDE project. 2 3 Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 5 This library is free software: you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as published by 7 the Free Software Foundation, either version 2.1 or 3 of the License. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with this library. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef Phonon_GSTREAMER_EFFECT_H 19 #define Phonon_GSTREAMER_EFFECT_H 20 21 #include "medianode.h" 22 23 #include <phonon/effectparameter.h> 24 #include <phonon/effectinterface.h> 25 26 #include <QtCore/QObject> 27 28 #include <gst/gstelement.h> 29 30 #ifndef QT_NO_PHONON_EFFECT 31 namespace Phonon 32 { 33 namespace Gstreamer 34 { 35 class EffectInfo; 36 37 class Effect : public QObject, 38 public Phonon::EffectInterface, 39 public MediaNode 40 { 41 Q_OBJECT 42 Q_INTERFACES(Phonon::EffectInterface Phonon::Gstreamer::MediaNode) 43 public: 44 Effect (Backend *backend, QObject *parent, NodeDescription description); 45 virtual ~Effect (); 46 47 virtual QList<EffectParameter> parameters() const; 48 virtual QVariant parameterValue(const EffectParameter &) const; 49 virtual void setParameterValue(const EffectParameter &, const QVariant &); 50 51 virtual void init(); 52 virtual void setupEffectParams(); 53 54 protected: 55 virtual GstElement* createEffectBin() = 0; 56 57 void setEffectElement(GstElement *effectElement); 58 effectElement()59 GstElement *effectElement() const { 60 return m_effectElement; 61 } 62 effectBin()63 GstElement *effectBin() const { 64 return m_effectBin; 65 } 66 67 private: 68 GstElement *m_effectBin; 69 GstElement *m_effectElement; 70 QList<Phonon::EffectParameter> m_parameterList; 71 }; 72 } 73 } //namespace Phonon::Gstreamer 74 #endif //QT_NO_PHONON_EFFECT 75 76 #endif // Phonon_GSTREAMER_EFFECT_H 77