1
/* This file is part of the KDE project.
3
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
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.
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.
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/>.
18
#ifndef Phonon_QT7_MediaNode_H
19
#define Phonon_QT7_MediaNode_H
21
#include <QtCore/QObject>
22
#include "backendheader.h"
23
#include "medianodeevent.h"
24
#include "audioconnection.h"
25
#include "videoframe.h"
36
class AudioConnection;
38
class MediaNode : public QObject
43
enum NodeDescriptionEnum {
50
Q_DECLARE_FLAGS(NodeDescription, NodeDescriptionEnum);
52
MediaNode(NodeDescription description, QObject *parent);
53
MediaNode(NodeDescription description, AudioNode *audioPart, QObject *parent);
56
void setAudioNode(AudioNode *audioPart);
57
bool connectToSink(MediaNode *sink);
58
bool disconnectToSink(MediaNode *sink);
59
AudioConnection *getAudioConnectionToSink(MediaNode *sink);
61
void notify(const MediaNodeEvent *event, bool propagate = true);
62
void sendEventToSinks(const MediaNodeEvent *event);
63
virtual void mediaNodeEvent(const MediaNodeEvent *event);
65
virtual void updateVideo(VideoFrame &frame);
66
AudioGraph *m_audioGraph;
68
AudioNode *m_audioNode;
69
QList<AudioConnection *> m_audioSinkList;
70
QList<AudioConnection *> m_audioSourceList;
71
QList<MediaNode *> m_videoSinkList;
73
int availableAudioInputBus();
74
int availableAudioOutputBus();
76
NodeDescription m_description;
77
MediaObject *m_owningMediaObject;
80
Q_DECLARE_OPERATORS_FOR_FLAGS(MediaNode::NodeDescription);
82
}} // namespace Phonon::QT7
85
#endif // Phonon_QT7_MediaNode_H