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 | |
27 | namespace Phonon |
28 | { |
29 | namespace Experimental |
30 | { |
31 | |
32 | AbstractVideoDataOutput::AbstractVideoDataOutput() |
33 | : AbstractVideoOutput(*new AbstractVideoDataOutputPrivate) |
34 | { |
35 | P_D(AbstractVideoDataOutput); |
36 | d->isRunning = false; |
37 | d->allowedFormats << VideoFrame2::Format_RGB888; |
38 | } |
39 | |
40 | AbstractVideoDataOutput::AbstractVideoDataOutput(AbstractVideoDataOutputPrivate &dd) |
41 | : AbstractVideoOutput(dd) |
42 | { |
43 | } |
44 | |
45 | AbstractVideoDataOutput::~AbstractVideoDataOutput() |
46 | { |
47 | setRunning(false); |
48 | } |
49 | |
50 | QSet<VideoFrame2::Format> AbstractVideoDataOutput::allowedFormats() const |
51 | { |
52 | P_D(const AbstractVideoDataOutput); |
53 | return d->allowedFormats; |
54 | } |
55 | |
56 | void AbstractVideoDataOutput::setAllowedFormats(const QSet<VideoFrame2::Format> &allowedFormats) |
57 | { |
58 | P_D(AbstractVideoDataOutput); |
59 | d->allowedFormats = allowedFormats; |
60 | } |
61 | |
62 | bool AbstractVideoDataOutput::isRunning() const |
63 | { |
64 | P_D(const AbstractVideoDataOutput); |
65 | return d->isRunning; |
66 | } |
67 | |
68 | void 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 | |
82 | void AbstractVideoDataOutput::start() |
83 | { |
84 | setRunning(true); |
85 | } |
86 | |
87 | void AbstractVideoDataOutput::stop() |
88 | { |
89 | setRunning(false); |
90 | } |
91 | |
92 | bool AbstractVideoDataOutputPrivate::aboutToDeleteBackendObject() |
93 | { |
94 | return AbstractVideoOutputPrivate::aboutToDeleteBackendObject(); |
95 | } |
96 | |
97 | void 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 | |
110 | void 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 |