1/* This file is part of the KDE project
2 Copyright (C) 2008 Matthias Kretz <kretz@kde.org>
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License as
6 published by the Free Software Foundation; either version 2 of
7 the License or (at your option) version 3 or any later version
8 accepted by the membership of KDE e.V. (or its successor approved
9 by the membership of KDE e.V.), Nokia Corporation (or its successors,
10 if any) and the KDE Free Qt Foundation, which shall act as a proxy
11 defined in Section 14 of version 3 of the license.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20
21*/
22#include "abstractvideodataoutput.h"
23#include "abstractvideodataoutput_p.h"
24#include "videodataoutputinterface.h"
25#include "factory_p.h"
26
27namespace Phonon
28{
29namespace Experimental
30{
31
32AbstractVideoDataOutput::AbstractVideoDataOutput()
33 : AbstractVideoOutput(*new AbstractVideoDataOutputPrivate)
34{
35 P_D(AbstractVideoDataOutput);
36 d->isRunning = false;
37 d->allowedFormats << VideoFrame2::Format_RGB888;
38}
39
40AbstractVideoDataOutput::AbstractVideoDataOutput(AbstractVideoDataOutputPrivate &dd)
41 : AbstractVideoOutput(dd)
42{
43}
44
45AbstractVideoDataOutput::~AbstractVideoDataOutput()
46{
47 setRunning(false);
48}
49
50QSet<VideoFrame2::Format> AbstractVideoDataOutput::allowedFormats() const
51{
52 P_D(const AbstractVideoDataOutput);
53 return d->allowedFormats;
54}
55
56void AbstractVideoDataOutput::setAllowedFormats(const QSet<VideoFrame2::Format> &allowedFormats)
57{
58 P_D(AbstractVideoDataOutput);
59 d->allowedFormats = allowedFormats;
60}
61
62bool AbstractVideoDataOutput::isRunning() const
63{
64 P_D(const AbstractVideoDataOutput);
65 return d->isRunning;
66}
67
68void AbstractVideoDataOutput::setRunning(bool running)
69{
70 P_D(AbstractVideoDataOutput);
71 d->isRunning = running;
72 Iface<VideoDataOutputInterface> iface(d);
73 if (iface) {
74 if (running) {
75 iface->setFrontendObject(this);
76 } else {
77 iface->setFrontendObject(nullptr);
78 }
79 }
80}
81
82void AbstractVideoDataOutput::start()
83{
84 setRunning(true);
85}
86
87void AbstractVideoDataOutput::stop()
88{
89 setRunning(false);
90}
91
92bool AbstractVideoDataOutputPrivate::aboutToDeleteBackendObject()
93{
94 return AbstractVideoOutputPrivate::aboutToDeleteBackendObject();
95}
96
97void AbstractVideoDataOutputPrivate::setupBackendObject()
98{
99 P_Q(AbstractVideoDataOutput);
100 Q_ASSERT(m_backendObject);
101 //AbstractVideoOutputPrivate::setupBackendObject();
102 if (isRunning) {
103 Iface<VideoDataOutputInterface> iface(this);
104 if (iface) {
105 iface->setFrontendObject(q);
106 }
107 }
108}
109
110void AbstractVideoDataOutputPrivate::createBackendObject()
111{
112 if (m_backendObject)
113 return;
114 //P_Q(AbstractVideoDataOutput);
115 m_backendObject = Factory::createVideoDataOutput(parent: nullptr);
116 if (m_backendObject) {
117 setupBackendObject();
118 }
119}
120
121} // namespace Experimental
122} // namespace Phonon
123

source code of phonon/phonon/experimental/abstractvideodataoutput.cpp