Initial commit.
[qtgstreamer:qtgstreamer.git] / src / qgstelement.cpp
1 /*
2     Copyright (C) 2009  George Kiagiadakis <kiagiadakis.george@gmail.com>
3
4     This library is free software; you can redistribute it and/or modify
5     it under the terms of the GNU Lesser General Public License as published
6     by the Free Software Foundation; either version 2.1 of the License, or
7     (at your option) any later version.
8
9     This program 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 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 program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "qgstelement.h"
18 #include <gst/gstelement.h>
19 #include <gst/gstutils.h>
20
21 namespace QtGstreamer {
22
23 QGstElement::QGstElement(GstElement *gstElement, QObject *parent)
24     : QGstObject(GST_OBJECT(gstElement), parent)
25 {
26 }
27
28 QGstElement::~QGstElement()
29 {
30 }
31
32 QGstElement::State QGstElement::currentState() const
33 {
34     GstState s;
35     gst_element_get_state(GST_ELEMENT(m_object), &s, NULL, 0);
36     return static_cast<State>(s);
37 }
38
39 void QGstElement::setState(State state)
40 {
41     gst_element_set_state(GST_ELEMENT(m_object), static_cast<GstState>(state));
42 }
43
44 //static
45 bool QGstElement::link(QGstElement *element1, QGstElement *element2, QGstElement *element3,
46                        QGstElement *element4, QGstElement *element5 , QGstElement *element6,
47                        QGstElement *element7, QGstElement *element8, QGstElement *element9,
48                        QGstElement *element10)
49 {
50     return gst_element_link_many(GST_ELEMENT(element1->m_object), GST_ELEMENT(element2->m_object),
51                                  element3 ? GST_ELEMENT(element3->m_object) : NULL,
52                                  element4 ? GST_ELEMENT(element4->m_object) : NULL,
53                                  element5 ? GST_ELEMENT(element5->m_object) : NULL,
54                                  element6 ? GST_ELEMENT(element6->m_object) : NULL,
55                                  element7 ? GST_ELEMENT(element7->m_object) : NULL,
56                                  element8 ? GST_ELEMENT(element8->m_object) : NULL,
57                                  element9 ? GST_ELEMENT(element9->m_object) : NULL,
58                                  element10 ? GST_ELEMENT(element10->m_object) : NULL, NULL);
59 }
60
61 //static
62 void QGstElement::unlink(QGstElement *element1, QGstElement *element2, QGstElement *element3,
63                          QGstElement *element4, QGstElement *element5 , QGstElement *element6,
64                          QGstElement *element7, QGstElement *element8, QGstElement *element9,
65                          QGstElement *element10)
66 {
67     gst_element_unlink_many(GST_ELEMENT(element1->m_object), GST_ELEMENT(element2->m_object),
68                             element3 ? GST_ELEMENT(element3->m_object) : NULL,
69                             element4 ? GST_ELEMENT(element4->m_object) : NULL,
70                             element5 ? GST_ELEMENT(element5->m_object) : NULL,
71                             element6 ? GST_ELEMENT(element6->m_object) : NULL,
72                             element7 ? GST_ELEMENT(element7->m_object) : NULL,
73                             element8 ? GST_ELEMENT(element8->m_object) : NULL,
74                             element9 ? GST_ELEMENT(element9->m_object) : NULL,
75                             element10 ? GST_ELEMENT(element10->m_object) : NULL, NULL);
76 }
77
78 }
79
80 #include "qgstelement.moc"