1 /* -*- Mode: C; c-basic-offset: 4 -*- */
4 #define NO_IMPORT_PYGOBJECT
10 #include <gst/pygst.h>
20 /* Boonky define that allows for backwards compatibility with Python 2.4 */
21 #if PY_VERSION_HEX < 0x02050000
22 #define Py_ssize_t int
25 void pyges_register_classes(PyObject *d);
26 void pyges_add_constants(PyObject *module, const gchar *strip_prefix);
29 import gobject.GObject as PyGObject_Type
30 import gobject.MainContext as PyGMainContext_Type
31 import gobject.GObject as PyGInitiallyUnowned_Type
32 import gst.Bin as PyGstBin_Type
33 import gst.Pipeline as PyGstPipeline_Type
34 import gst.Element as PyGstElement_Type
35 import gst.Buffer as PyGstBuffer_Type
36 import gst.Pad as PyGstPad_Type
37 import gst.pbutils.EncodingProfile as PyGstEncodingProfile_Type
40 override ges_track_get_timeline kwargs
42 _wrap_ges_track_get_timeline(PyGObject *self)
44 const GESTimeline *ret;
46 pyg_begin_allow_threads;
47 ret = ges_track_get_timeline(GES_TRACK(self->obj));
48 pyg_end_allow_threads;
49 /* pygobject_new handles NULL checking */
50 return pygobject_new((GObject *)ret);
54 override ges_track_get_caps noargs
56 _wrap_ges_track_get_caps(PyGObject *self, void* closure)
60 ret = ges_track_get_caps(GES_TRACK(self->obj));
62 return pyg_boxed_new (GST_TYPE_CAPS, (GstCaps*) ret, TRUE, TRUE);
66 override ges_track_set_caps kwargs
68 _wrap_ges_track_set_caps(PyGObject *self, PyObject *args, PyObject *kwargs)
70 static char *kwlist[] = { "caps", NULL };
74 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:GstBuffer.set_caps", kwlist, &py_caps))
77 caps = pyg_boxed_get (py_caps, GstCaps);
81 pyg_begin_allow_threads;
82 ges_track_set_caps (GES_TRACK(self->obj), caps);
83 pyg_end_allow_threads;
89 new-constructor GES_TYPE_TRACK
91 override ges_track_new kwargs
93 _wrap_ges_track_new(PyGObject *self, PyObject *args, PyObject *kwargs)
95 static char *kwlist[] = { "type", "caps", NULL };
96 PyObject *py_type = NULL;
101 if (!PyArg_ParseTupleAndKeywords(args, kwargs,"OO:GES.Track.__init__", kwlist, &py_type, &py_caps))
103 if (pyg_flags_get_value(GES_TYPE_TRACK_TYPE, py_type, (gpointer)&type))
105 caps = pyg_boxed_get (py_caps, GstCaps);
106 self->obj = (GObject *)ges_track_new(type, caps);
109 PyErr_SetString(PyExc_RuntimeError, "could not create GESTrack object");
112 pygobject_register_wrapper((PyObject *)self);
117 override ges_track_object_lookup_child kwargs
119 _wrap_ges_track_object_lookup_child(PyGObject *self, PyObject *args, PyObject *kwargs)
121 static char *kwlist[] = {"name", NULL};
127 if (!PyArg_ParseTupleAndKeywords(args, kwargs,
128 "z:GES.TrackObject.lookup_child", kwlist, &name))
131 pyg_begin_allow_threads;
132 ret = ges_track_object_lookup_child (GES_TRACK_OBJECT (self->obj), name, &element, &pspec);
133 pyg_end_allow_threads;
136 return PyBool_FromLong(ret);
137 return pygobject_new((GObject *)element);
141 override ges_timeline_parse_launch_effect_new kwargs
143 _wrap_ges_timeline_parse_launch_effect_new(PyGObject *self, PyObject *args, PyObject *kwargs)
145 static char *kwlist[] = { "video_bin_description", "audio_bin_description", NULL };
146 char *video_bin_description, *audio_bin_description = NULL;
148 if (!PyArg_ParseTupleAndKeywords(args, kwargs,"zz:GES.TimelineParseLaunchEffect.__init__", kwlist, &video_bin_description, &audio_bin_description))
150 self->obj = (GObject *)ges_timeline_parse_launch_effect_new(video_bin_description, audio_bin_description);
153 PyErr_SetString(PyExc_RuntimeError, "could not create GESTimelineParseLaunchEffect object");
156 pygobject_register_wrapper((PyObject *)self);
160 /* I did not override ges_formatter_get_data and set_data for these functions are deprecated */
163 override ges_pitivi_formatter_set_sources kwargs
165 _wrap_ges_pitivi_formatter_set_sources(PyGObject *self, PyObject *args, PyObject *kwargs)
167 GList *sources = NULL;
170 PyObject *pylist = NULL;
171 PyGObject *tmpobj = NULL;
172 Py_ssize_t list_size;
174 GESPitiviFormatter *formatter = GES_PITIVI_FORMATTER (self->obj);
176 if (!PyArg_ParseTuple(args, "O:GESPitiviFormatter.set_sources",
178 return PyBool_FromLong(FALSE);
180 list_size = PyList_GET_SIZE(pylist);
182 for (i = 0; i < list_size; i++) {
183 tmpobj = (PyGObject*)PyList_GetItem(pylist, i);
184 sources = g_list_prepend (sources, tmpobj->obj);
187 return PyBool_FromLong (ges_pitivi_formatter_set_sources (formatter, sources));
191 override ges_pitivi_formatter_get_sources kwargs
193 _wrap_ges_pitivi_formatter_get_sources(PyGObject *self, PyObject *args, PyObject *kwargs)
195 const GList *l, *list;
198 g_return_val_if_fail (GES_IS_PITIVI_FORMATTER (self->obj),PyList_New(0));
200 pyg_begin_allow_threads;
201 list = ges_pitivi_formatter_get_sources (GES_PITIVI_FORMATTER (self->obj));
202 pyg_end_allow_threads;
204 py_list = PyList_New(0);
205 for (l = list; l; l = l->next) {
206 gchar * source = (gchar *)l->data;
207 GST_ERROR ("Adding %s", source);
208 PyList_Append(py_list, PyString_FromString(source));
216 override ges_timeline_object_get_top_effects noargs
218 _wrap_ges_timeline_object_get_top_effects(PyGObject *self)
220 const GList *l, *list;
223 g_return_val_if_fail (GES_IS_TIMELINE_OBJECT (self->obj),PyList_New(0));
225 pyg_begin_allow_threads;
226 list = ges_timeline_object_get_top_effects(GES_TIMELINE_OBJECT(self->obj));
227 pyg_end_allow_threads;
229 py_list = PyList_New(0);
230 for (l = list; l; l = l->next) {
231 GESTrackEffect *track_effect = (GESTrackEffect*)l->data;
232 PyObject *py_track_effect = pygobject_new(G_OBJECT(track_effect));
233 PyList_Append(py_list, py_track_effect);
234 Py_DECREF(py_track_effect);
241 override ges_timeline_get_tracks noargs
243 _wrap_ges_timeline_get_tracks(PyGObject *self)
245 const GList *l, *list;
248 g_return_val_if_fail (GES_IS_TIMELINE (self->obj),PyList_New(0));
250 pyg_begin_allow_threads;
251 list = ges_timeline_get_tracks(GES_TIMELINE(self->obj));
252 pyg_end_allow_threads;
254 py_list = PyList_New(0);
255 for (l = list; l; l = l->next) {
256 GESTrack *track = (GESTrack*)l->data;
257 PyObject *py_track = pygobject_new(G_OBJECT(track));
258 PyList_Append(py_list, py_track);
266 override ges_timeline_get_layers noargs
268 _wrap_ges_timeline_get_layers(PyGObject *self)
270 const GList *l, *list;
273 g_return_val_if_fail (GES_IS_TIMELINE (self->obj), PyList_New(0));
275 pyg_begin_allow_threads;
276 list = ges_timeline_get_layers(GES_TIMELINE(self->obj));
277 pyg_end_allow_threads;
279 py_list = PyList_New(0);
280 for (l = list; l; l = l->next) {
281 GESTimelineLayer *layer = (GESTimelineLayer*)l->data;
282 PyObject *py_layer = pygobject_new(G_OBJECT(layer));
283 PyList_Append(py_list, py_layer);
291 override ges_timeline_layer_get_objects noargs
293 _wrap_ges_timeline_layer_get_objects(PyGObject *self)
295 const GList *l, *list;
298 g_return_val_if_fail (GES_IS_TIMELINE_LAYER (self->obj), PyList_New(0));
300 pyg_begin_allow_threads;
301 list = ges_timeline_layer_get_objects(GES_TIMELINE_LAYER(self->obj));
302 pyg_end_allow_threads;
304 py_list = PyList_New(0);
305 for (l = list; l; l = l->next) {
306 GESTimelineObject *object = (GESTimelineObject*)l->data;
307 PyObject *py_object = pygobject_new(G_OBJECT(object));
308 PyList_Append(py_list, py_object);
309 Py_DECREF(py_object);
316 override ges_timeline_object_get_track_objects noargs
318 _wrap_ges_timeline_object_get_track_objects(PyGObject *self)
320 const GList *l, *list;
323 g_return_val_if_fail (GES_IS_TIMELINE_OBJECT (self->obj), PyList_New(0));
325 pyg_begin_allow_threads;
326 list = ges_timeline_object_get_track_objects(GES_TIMELINE_OBJECT(self->obj));
327 pyg_end_allow_threads;
329 py_list = PyList_New(0);
330 for (l = list; l; l = l->next) {
331 GESTrackObject *object = (GESTrackObject*)l->data;
332 PyObject *py_object = pygobject_new(G_OBJECT(object));
333 PyList_Append(py_list, py_object);
334 Py_DECREF(py_object);
341 override ges_track_get_objects noargs
343 _wrap_ges_track_get_objects(PyGObject *self)
345 const GList *l, *list;
348 g_return_val_if_fail (GES_IS_TRACK (self->obj), PyList_New(0));
350 pyg_begin_allow_threads;
351 list = ges_track_get_objects(GES_TRACK(self->obj));
352 pyg_end_allow_threads;
354 py_list = PyList_New(0);
355 for (l = list; l; l = l->next) {
356 GESTrackObject *object = (GESTrackObject*)l->data;
357 PyObject *py_object = pygobject_new(G_OBJECT(object));
358 PyList_Append(py_list, py_object);
359 Py_DECREF(py_object);
366 override ges_track_object_get_child_property kwargs
368 _wrap_ges_track_object_get_child_property (PyGObject *self, PyObject *args, PyObject *kwargs)
370 gchar *property_name;
371 GESTrackObject *obj = GES_TRACK_OBJECT (self->obj);
373 GParamSpec *pspec = NULL;
374 GValue value = { 0, } ;
377 if (!PyArg_ParseTuple(args, "s:GESTrackObject.get_child_property",
382 ges_track_object_lookup_child(obj, property_name, NULL, &pspec);
385 g_snprintf(buf, sizeof(buf),
386 "container does not support property `%s'",
389 PyErr_SetString(PyExc_TypeError, buf);
393 g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
395 ges_track_object_get_child_property_by_pspec(obj,
399 ret = pyg_value_as_pyobject(&value, TRUE);
400 g_value_unset(&value);
406 override ges_track_object_set_child_property kwargs
408 _wrap_ges_track_object_set_child_property (PyGObject *self, PyObject *args, PyObject *kwargs)
410 gchar *property_name;
411 GESTrackObject *obj = GES_TRACK_OBJECT (self->obj);
413 GParamSpec *pspec = NULL;
415 GValue value = { 0, } ;
417 if (!PyArg_ParseTuple(args, "sO:GESTrackObject.set_child_property",
418 &property_name, &pyvalue)) {
422 ges_track_object_lookup_child(obj, property_name, NULL, &pspec);
425 g_snprintf(buf, sizeof(buf),
426 "container does not support property `%s'",
429 PyErr_SetString(PyExc_TypeError, buf);
433 g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
434 pyg_value_from_pyobject(&value, (PyObject*)pyvalue);
436 ges_track_object_set_child_property_by_pspec(obj,
440 g_value_unset(&value);
447 override ges_track_object_list_children_properties noargs
449 _wrap_ges_track_object_list_children_properties (PyGObject *self)
456 specs = ges_track_object_list_children_properties(GES_TRACK_OBJECT (self->obj), &nprops);
457 list = PyTuple_New(nprops);
463 for (i = 0; i < nprops; i++) {
464 PyTuple_SetItem(list, i, pyg_param_spec_new(specs[i]));
473 override ges_version noargs
475 _wrap_ges_version (PyObject *self)
477 guint major, minor, micro, nano;
480 ges_version (&major, &minor, µ, &nano);
481 py_tuple = PyTuple_New(4);
482 PyTuple_SetItem(py_tuple, 0, PyInt_FromLong(major));
483 PyTuple_SetItem(py_tuple, 1, PyInt_FromLong(minor));
484 PyTuple_SetItem(py_tuple, 2, PyInt_FromLong(micro));
485 PyTuple_SetItem(py_tuple, 3, PyInt_FromLong(nano));
495 ges_formatter_set_data
496 ges_formatter_set_data