2 * Copyright (C) 2011 Igalia S.L
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
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 GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 #include "GRefPtrGStreamer.h"
22 #include "GStreamerVersioning.h"
24 #if USE(GSTREAMER) || ENABLE(TIZEN_WEB_AUDIO)
25 #include <gst/gstelement.h>
29 template <> GRefPtr<GstElement> adoptGRef(GstElement* ptr)
31 ASSERT(!ptr || !GST_OBJECT_IS_FLOATING(GST_OBJECT(ptr)));
32 return GRefPtr<GstElement>(ptr, GRefPtrAdopt);
35 template <> GstElement* refGPtr<GstElement>(GstElement* ptr)
38 webkitGstObjectRefSink(GST_OBJECT(ptr));
43 template <> void derefGPtr<GstElement>(GstElement* ptr)
46 gst_object_unref(ptr);
49 template <> GRefPtr<GstPad> adoptGRef(GstPad* ptr)
51 ASSERT(!ptr || !GST_OBJECT_IS_FLOATING(GST_OBJECT(ptr)));
52 return GRefPtr<GstPad>(ptr, GRefPtrAdopt);
55 template <> GstPad* refGPtr<GstPad>(GstPad* ptr)
58 webkitGstObjectRefSink(GST_OBJECT(ptr));
63 template <> void derefGPtr<GstPad>(GstPad* ptr)
66 gst_object_unref(GST_OBJECT(ptr));
69 template <> GRefPtr<GstPadTemplate> adoptGRef(GstPadTemplate* ptr)
71 ASSERT(!ptr || !GST_OBJECT_IS_FLOATING(GST_OBJECT(ptr)));
72 return GRefPtr<GstPadTemplate>(ptr, GRefPtrAdopt);
75 template <> GstPadTemplate* refGPtr<GstPadTemplate>(GstPadTemplate* ptr)
78 webkitGstObjectRefSink(GST_OBJECT(ptr));
83 template <> void derefGPtr<GstPadTemplate>(GstPadTemplate* ptr)
86 gst_object_unref(GST_OBJECT(ptr));
89 template <> GstCaps* refGPtr<GstCaps>(GstCaps* ptr)
96 template <> void derefGPtr<GstCaps>(GstCaps* ptr)
103 template <> GRefPtr<GstTask> adoptGRef(GstTask* ptr)
105 ASSERT(!GST_OBJECT_IS_FLOATING(GST_OBJECT(ptr)));
106 return GRefPtr<GstTask>(ptr, GRefPtrAdopt);
109 template <> GstTask* refGPtr<GstTask>(GstTask* ptr)
112 webkitGstObjectRefSink(GST_OBJECT(ptr));
117 template <> void derefGPtr<GstTask>(GstTask* ptr)
120 gst_object_unref(ptr);
123 template <> GRefPtr<GstBus> adoptGRef(GstBus* ptr)
125 ASSERT(!GST_OBJECT_IS_FLOATING(GST_OBJECT(ptr)));
126 return GRefPtr<GstBus>(ptr, GRefPtrAdopt);
129 template <> GstBus* refGPtr<GstBus>(GstBus* ptr)
132 webkitGstObjectRefSink(GST_OBJECT(ptr));
137 template <> void derefGPtr<GstBus>(GstBus* ptr)
140 gst_object_unref(ptr);
143 template <> GRefPtr<GstElementFactory> adoptGRef(GstElementFactory* ptr)
145 ASSERT(!GST_OBJECT_IS_FLOATING(GST_OBJECT(ptr)));
146 return GRefPtr<GstElementFactory>(ptr, GRefPtrAdopt);
149 template <> GstElementFactory* refGPtr<GstElementFactory>(GstElementFactory* ptr)
152 webkitGstObjectRefSink(GST_OBJECT(ptr));
157 template <> void derefGPtr<GstElementFactory>(GstElementFactory* ptr)
160 gst_object_unref(ptr);
164 #endif // USE(GSTREAMER)