/* This file is part of the KDE project. Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). This library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 or 3 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef Phonon_GSTREAMER_BACKEND_H #define Phonon_GSTREAMER_BACKEND_H #include "common.h" #include "devicemanager.h" #include "medianode.h" #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE namespace Phonon { namespace Gstreamer { class AudioOutput; class MediaNode; class MediaObject; class EffectManager; class Backend : public QObject, public BackendInterface { Q_OBJECT Q_INTERFACES(Phonon::BackendInterface) public: enum DebugLevel {NoDebug, Warning, Info, Debug}; Backend(QObject *parent = 0, const QVariantList & = QVariantList()); virtual ~Backend(); DeviceManager* deviceManager() const; EffectManager* effectManager() const; QObject *createObject(BackendInterface::Class, QObject *parent, const QList &args); bool isValid() const; bool supportsVideo() const; QStringList availableMimeTypes() const; QList objectDescriptionIndexes(ObjectDescriptionType type) const; QHash objectDescriptionProperties(ObjectDescriptionType type, int index) const; bool startConnectionChange(QSet); bool connectNodes(QObject *, QObject *); bool disconnectNodes(QObject *, QObject *); bool endConnectionChange(QSet); DebugLevel debugLevel() const; void addBusWatcher(MediaObject* node); void removeBusWatcher(MediaObject* node); void logMessage(const QString &message, int priority = 2, QObject *obj=0) const; bool checkDependencies() const; Q_SIGNALS: void objectDescriptionChanged(ObjectDescriptionType); private Q_SLOTS: void handleBusMessage(Message); private: static gboolean busCall(GstBus *bus, GstMessage *msg, gpointer data); QList > m_audioOutputs; DeviceManager *m_deviceManager; EffectManager *m_effectManager; DebugLevel m_debugLevel; bool m_isValid; }; } } // namespace Phonon::Gstreamer QT_END_NAMESPACE #endif // Phonon_GSTREAMER_BACKEND_H