gst/: Use Py_BuildValue to construct tuples.

Original commit message from CVS:
reviewed by: Edward Hervey  <edward@fluendo.com>
* gst/gstelement.override:
* gst/gstevent.override:
* gst/gstmessage.override:
* gst/gstpad.override:
* gst/gstquery.override:
Use Py_BuildValue to construct tuples.
Use tuples for collection of different objects.
See http://www.python.org/doc/faq/general/#why-are-there-separate-tuple-and-list-data-types
* testsuite/test_event.py:
[message|query|event].parse_* now return tuples and not list.
Fixes #334548
This commit is contained in:
Edward Hervey 2006-07-03 09:01:18 +00:00
parent 1c5a18e82c
commit c52a37cd82
8 changed files with 85 additions and 163 deletions

View file

@ -1,3 +1,20 @@
2006-07-03 Johan Dahlin <jdahlin@async.com.br>
reviewed by: Edward Hervey <edward@fluendo.com>
* gst/gstelement.override:
* gst/gstevent.override:
* gst/gstmessage.override:
* gst/gstpad.override:
* gst/gstquery.override:
Use Py_BuildValue to construct tuples.
Use tuples for collection of different objects.
See http://www.python.org/doc/faq/general/#why-are-there-separate-tuple-and-list-data-types
* testsuite/test_event.py:
[message|query|event].parse_* now return tuples and not list.
Fixes #334548
2006-07-02 Edward Hervey <edward@fluendo.com>
Removal of all glib < 2.8 cruft since GStreamer core now requires

2
common

@ -1 +1 @@
Subproject commit 9eb7943282c38c815cfbac34cff4062a94e72e62
Subproject commit a98b370bd49bc3f3225bbd9013cda5a53789f53d

View file

@ -370,7 +370,6 @@ _wrap_gst_element_query_position (PyGObject *self, PyObject *args)
gint64 cur;
gint format;
PyObject *pformat;
PyObject *ret;
pformat = (PyObject*)PyTuple_GetItem(args, 0);
if (pyg_enum_get_value (GST_TYPE_FORMAT, pformat, &format)) {
@ -384,11 +383,9 @@ _wrap_gst_element_query_position (PyGObject *self, PyObject *args)
return NULL;
}
ret = PyList_New(2);
PyList_SetItem(ret, 0, PyLong_FromLongLong(cur));
PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format ));
return ret;
return Py_BuildValue("(OO)",
PyLong_FromLongLong(cur),
pyg_enum_from_gtype(GST_TYPE_FORMAT, format));
}
%%
override gst_element_query_duration args
@ -398,7 +395,6 @@ _wrap_gst_element_query_duration (PyGObject *self, PyObject *args)
gint64 cur;
gint format;
PyObject *pformat;
PyObject *ret;
pformat = (PyObject*)PyTuple_GetItem(args, 0);
if (pyg_enum_get_value (GST_TYPE_FORMAT, pformat, &format)) {
@ -412,11 +408,8 @@ _wrap_gst_element_query_duration (PyGObject *self, PyObject *args)
return NULL;
}
ret = PyList_New(2);
PyList_SetItem(ret, 0, PyLong_FromLongLong(cur));
PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format ));
return ret;
return Py_BuildValue("(OO)", PyLong_FromLongLong(cur),
pyg_enum_from_gtype(GST_TYPE_FORMAT, format));
}
%%
override gst_element_query_convert kwargs
@ -427,7 +420,6 @@ _wrap_gst_element_query_convert (PyGObject *self, PyObject *args, PyObject *kwar
PyObject *pfromformat, *pdestformat;
GstFormat srcformat, destformat;
gint64 fromval, dstval;
PyObject *ret;
/* Input : src_format, src_val, dst_format */
/* Returns : dst_format, dst_val OR None */
@ -453,11 +445,9 @@ _wrap_gst_element_query_convert (PyGObject *self, PyObject *args, PyObject *kwar
return Py_None;
}
ret = PyList_New(2);
PyList_SetItem(ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, destformat));
PyList_SetItem(ret, 1, PyLong_FromLongLong(dstval));
return ret;
return Py_BuildValue("(OO)",
pyg_enum_from_gtype(GST_TYPE_FORMAT, destformat),
PyLong_FromLongLong(dstval));
}
%%
override gst_element_get_query_types noargs

View file

@ -54,7 +54,6 @@ override gst_event_parse_new_segment noargs
static PyObject *
_wrap_gst_event_parse_new_segment (PyGstMiniObject *self)
{
PyObject *ret;
gboolean update;
gdouble rate;
GstFormat format;
@ -67,16 +66,11 @@ _wrap_gst_event_parse_new_segment (PyGstMiniObject *self)
gst_event_parse_new_segment (GST_EVENT(self->obj), &update, &rate, &format,
&start_value, &stop_value, &base);
ret = PyList_New (6);
PyList_SetItem (ret, 0, PyBool_FromLong(update));
PyList_SetItem (ret, 1, PyFloat_FromDouble(rate));
PyList_SetItem (ret, 2, pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
PyList_SetItem (ret, 3, PyLong_FromUnsignedLongLong(start_value));
PyList_SetItem (ret, 4, PyLong_FromUnsignedLongLong(stop_value));
PyList_SetItem (ret, 5, PyLong_FromUnsignedLongLong(base));
return ret;
return Py_BuildValue("(OfOKKK)",
PyBool_FromLong(update),
rate, pyg_enum_from_gtype (GST_TYPE_FORMAT, format),
start_value, stop_value, base);
}
%%
override gst_event_parse_tag noargs
@ -102,7 +96,6 @@ override gst_event_parse_qos noargs
static PyObject *
_wrap_gst_event_parse_qos (PyGstMiniObject *self)
{
PyObject *ret;
gdouble proportion;
GstClockTimeDiff diff;
GstClockTime timestamp;
@ -115,19 +108,13 @@ _wrap_gst_event_parse_qos (PyGstMiniObject *self)
gst_event_parse_qos (GST_EVENT(self->obj), &proportion,
&diff, &timestamp);
ret = PyList_New (3);
PyList_SetItem (ret, 0, PyFloat_FromDouble(proportion));
PyList_SetItem (ret, 1, PyLong_FromLongLong(diff));
PyList_SetItem (ret, 2, PyLong_FromUnsignedLongLong(timestamp));
return ret;
return Py_BuildValue("(fLK)", proportion, diff, timestamp);
}
%%
override gst_event_parse_seek noargs
static PyObject *
_wrap_gst_event_parse_seek (PyGstMiniObject *self)
{
PyObject *ret;
gdouble rate;
GstFormat format;
GstSeekFlags flags;
@ -144,24 +131,20 @@ _wrap_gst_event_parse_seek (PyGstMiniObject *self)
gst_event_parse_seek (GST_EVENT(self->obj), &rate, &format, &flags,
&cur_type, &cur, &stop_type, &stop);
ret = PyList_New (7);
PyList_SetItem (ret, 0, PyFloat_FromDouble(rate));
PyList_SetItem (ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
PyList_SetItem (ret, 2, pyg_flags_from_gtype (GST_TYPE_SEEK_FLAGS, flags));
PyList_SetItem (ret, 3, pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, cur_type));
PyList_SetItem (ret, 4, PyLong_FromUnsignedLongLong (cur));
PyList_SetItem (ret, 5,
pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, stop_type));
PyList_SetItem (ret, 6, PyLong_FromUnsignedLongLong (stop));
return ret;
return Py_BuildValue("(fOOOKOK)",
rate,
pyg_enum_from_gtype (GST_TYPE_FORMAT, format),
pyg_flags_from_gtype (GST_TYPE_SEEK_FLAGS, flags),
pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, cur_type),
cur,
pyg_enum_from_gtype (GST_TYPE_SEEK_TYPE, stop_type),
stop);
}
%%
override gst_event_parse_buffer_size noargs
static PyObject *
_wrap_gst_event_parse_buffer_size (PyGstMiniObject *self)
{
PyObject *ret;
GstFormat format;
gint64 minsize;
gint64 maxsize;
@ -176,11 +159,8 @@ _wrap_gst_event_parse_buffer_size (PyGstMiniObject *self)
&format, &minsize,
&maxsize, &async);
ret = PyList_New (4);
PyList_SetItem (ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
PyList_SetItem (ret, 1, PyLong_FromLongLong (minsize));
PyList_SetItem (ret, 2, PyLong_FromLongLong (maxsize));
PyList_SetItem (ret, 3, PyBool_FromLong (async));
return ret;
return Py_BuildValue("(OLLO)",
pyg_enum_from_gtype(GST_TYPE_FORMAT, format),
minsize, maxsize,
PyBool_FromLong(async));
}

View file

@ -56,7 +56,6 @@ _wrap_gst_message_parse_state_changed (PyGstMiniObject *self)
GstState old;
GstState new;
GstState pen;
PyObject *ret;
/* Should raise an exception if it's not a state-changed message */
if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_STATE_CHANGED) {
@ -64,12 +63,11 @@ _wrap_gst_message_parse_state_changed (PyGstMiniObject *self)
return NULL;
}
gst_message_parse_state_changed (GST_MESSAGE(self->obj), &old, &new, &pen);
/* Return this as a tuple */
ret = PyList_New(3);
PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype(GST_TYPE_STATE, old));
PyList_SET_ITEM(ret, 1, pyg_enum_from_gtype(GST_TYPE_STATE, new));
PyList_SET_ITEM(ret, 2, pyg_enum_from_gtype(GST_TYPE_STATE, pen));
return ret;
return Py_BuildValue("(OOO)",
pyg_enum_from_gtype(GST_TYPE_STATE, old),
pyg_enum_from_gtype(GST_TYPE_STATE, new),
pyg_enum_from_gtype(GST_TYPE_STATE, pen));
}
%%
override gst_message_parse_segment_start noargs
@ -78,7 +76,6 @@ _wrap_gst_message_parse_segment_start (PyGstMiniObject *self)
{
gint64 position;
GstFormat format;
PyObject *ret;
/* Should raise an exception if it's not a segment start message */
if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_SEGMENT_START) {
@ -87,12 +84,9 @@ _wrap_gst_message_parse_segment_start (PyGstMiniObject *self)
}
gst_message_parse_segment_start (GST_MESSAGE(self->obj), &format, &position);
/* Return this as a tuple */
ret = PyList_New(2);
PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format));
PyList_SET_ITEM(ret, 1, PyLong_FromLongLong(position));
return ret;
return Py_BuildValue("(OL)",
pyg_enum_from_gtype(GST_TYPE_FORMAT, format),
PyLong_FromLongLong(position));
}
%%
@ -102,7 +96,6 @@ _wrap_gst_message_parse_segment_done (PyGstMiniObject *self)
{
gint64 position;
GstFormat format;
PyObject *ret;
/* Should raise an exception if it's not a segment done message */
if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_SEGMENT_DONE) {
@ -111,12 +104,9 @@ _wrap_gst_message_parse_segment_done (PyGstMiniObject *self)
}
gst_message_parse_segment_done (GST_MESSAGE(self->obj), &format, &position);
/* Return this as a tuple */
ret = PyList_New(2);
PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format));
PyList_SET_ITEM(ret, 1, PyLong_FromLongLong(position));
return ret;
return Py_BuildValue("(OL)",
pyg_enum_from_gtype(GST_TYPE_FORMAT, format),
PyLong_FromLongLong(position));
}
%%
@ -197,7 +187,6 @@ _wrap_gst_message_parse_clock_provide (PyGstMiniObject *self)
{
GstClock *clock;
gboolean ready;
PyObject *ret;
if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_CLOCK_PROVIDE) {
PyErr_SetString(PyExc_TypeError, "Message is not a 'clock provide' message");
@ -206,11 +195,9 @@ _wrap_gst_message_parse_clock_provide (PyGstMiniObject *self)
gst_message_parse_clock_provide (GST_MESSAGE(self->obj), &clock, &ready);
ret = PyList_New(2);
PyList_SET_ITEM(ret, 0, pygobject_new(G_OBJECT (clock)));
PyList_SET_ITEM(ret, 1, PyBool_FromLong(ready));
return ret;
return Py_BuildValue("(OO)",
pygobject_new(G_OBJECT (clock)),
PyBool_FromLong(ready));
}
%%
override gst_message_parse_clock_lost noargs
@ -251,7 +238,6 @@ _wrap_gst_message_parse_duration (PyGstMiniObject *self)
{
GstFormat format;
gint64 duration;
PyObject *ret;
if (GST_MESSAGE(self->obj)->type != GST_MESSAGE_DURATION) {
PyErr_SetString(PyExc_TypeError, "Message is not a 'duration' message");
@ -260,9 +246,7 @@ _wrap_gst_message_parse_duration (PyGstMiniObject *self)
gst_message_parse_duration (GST_MESSAGE(self->obj), &format, &duration);
ret = PyList_New(2);
PyList_SET_ITEM(ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
PyList_SET_ITEM(ret, 1, PyLong_FromLongLong(duration));
return ret;
return Py_BuildValue("(OL)",
pyg_enum_from_gtype (GST_TYPE_FORMAT, format),
PyLong_FromLongLong(duration));
}

View file

@ -680,36 +680,8 @@ _wrap_gst_pad_query_position (PyGObject *self, PyObject *args)
}
if ((gst_pad_query_position(GST_PAD (self->obj), (GstFormat*) &format, &cur))) {
ret = PyList_New(2);
PyList_SetItem(ret, 0, PyLong_FromLongLong(cur));
PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format ));
} else {
Py_INCREF(Py_None);
ret = Py_None;
}
return ret;
}
%%
override gst_pad_query_duration args
static PyObject *
_wrap_gst_pad_query_duration (PyGObject *self, PyObject *args)
{
gint64 cur;
gint format;
PyObject *pformat;
PyObject *ret;
pformat = (PyObject*)PyTuple_GetItem(args, 0);
if (pyg_enum_get_value (GST_TYPE_FORMAT, pformat, &format)) {
PyErr_SetString(PyExc_TypeError, "argument should be a GstFormat");
return NULL;
}
if ((gst_pad_query_duration(GST_PAD (self->obj), (GstFormat*) &format, &cur))) {
ret = PyList_New(2);
PyList_SetItem(ret, 0, PyLong_FromLongLong(cur));
PyList_SetItem(ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format ));
ret = Py_BuildValue("(LO)", cur,
pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
} else {
Py_INCREF(Py_None);
ret = Py_None;
@ -726,7 +698,6 @@ _wrap_gst_pad_query_convert (PyGObject *self, PyObject *args, PyObject *kwargs)
PyObject *pfromformat, *pdestformat;
GstFormat srcformat, destformat;
gint64 fromval, dstval;
PyObject *ret;
/* Input : src_format, src_val, dst_format */
/* Returns : dst_format, dst_val OR None */
@ -751,11 +722,9 @@ _wrap_gst_pad_query_convert (PyGObject *self, PyObject *args, PyObject *kwargs)
return Py_None;
}
ret = PyList_New(2);
PyList_SetItem(ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, destformat));
PyList_SetItem(ret, 1, PyLong_FromLongLong(dstval));
return ret;
return Py_BuildValue("(OL)",
pyg_enum_from_gtype (GST_TYPE_FORMAT, destformat),
dstval);
}
%%
override gst_pad_alloc_buffer kwargs

View file

@ -29,7 +29,6 @@ _wrap_gst_query_parse_position (PyGstMiniObject *self)
{
GstFormat format;
gint64 cur;
PyObject *ret;
if (GST_QUERY_TYPE(self->obj) != GST_QUERY_POSITION) {
PyErr_SetString(PyExc_TypeError, "Query is not a 'Position' query");
@ -38,11 +37,8 @@ _wrap_gst_query_parse_position (PyGstMiniObject *self)
gst_query_parse_position (GST_QUERY(self->obj), &format, &cur);
ret = PyList_New(2);
PyList_SetItem(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format));
PyList_SetItem(ret, 1, PyLong_FromLongLong(cur));
return ret;
return Py_BuildValue("(LO)", cur,
pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
}
%%
override gst_query_parse_duration noargs
@ -51,7 +47,6 @@ _wrap_gst_query_parse_duration (PyGstMiniObject *self)
{
GstFormat format;
gint64 cur;
PyObject *ret;
if (GST_QUERY_TYPE(self->obj) != GST_QUERY_DURATION) {
PyErr_SetString(PyExc_TypeError, "Query is not a 'Duration' query");
@ -60,11 +55,8 @@ _wrap_gst_query_parse_duration (PyGstMiniObject *self)
gst_query_parse_duration (GST_QUERY(self->obj), &format, &cur);
ret = PyList_New(2);
PyList_SetItem(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, format));
PyList_SetItem(ret, 1, PyLong_FromLongLong(cur));
return ret;
return Py_BuildValue("(LO)", cur,
pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
}
%%
override gst_query_parse_convert noargs
@ -73,7 +65,6 @@ _wrap_gst_query_parse_convert (PyGstMiniObject *self)
{
GstFormat srcformat, destformat;
gint64 srcvalue, destvalue;
PyObject *ret;
if (GST_QUERY_TYPE(self->obj) != GST_QUERY_CONVERT) {
PyErr_SetString(PyExc_TypeError, "Query is not a 'Convert' query");
@ -84,20 +75,17 @@ _wrap_gst_query_parse_convert (PyGstMiniObject *self)
&srcformat, &srcvalue,
&destformat, &destvalue);
ret = PyList_New(4);
PyList_SetItem(ret, 0, pyg_enum_from_gtype(GST_TYPE_FORMAT, srcformat));
PyList_SetItem(ret, 1, PyLong_FromLongLong(srcvalue));
PyList_SetItem(ret, 2, pyg_enum_from_gtype(GST_TYPE_FORMAT, destformat));
PyList_SetItem(ret, 3, PyLong_FromLongLong(destvalue));
return ret;
return Py_BuildValue("(OLOL)",
pyg_enum_from_gtype(GST_TYPE_FORMAT, srcformat),
srcvalue,
pyg_enum_from_gtype(GST_TYPE_FORMAT, destformat),
destvalue);
}
%%
override gst_query_parse_segment noargs
static PyObject *
_wrap_gst_query_parse_segment (PyGstMiniObject *self)
{
PyObject *ret;
gdouble rate;
GstFormat format;
gint64 start_value;
@ -112,20 +100,16 @@ _wrap_gst_query_parse_segment (PyGstMiniObject *self)
&rate, &format,
&start_value, &stop_value);
ret = PyList_New(4);
PyList_SetItem (ret, 0, PyFloat_FromDouble(rate));
PyList_SetItem (ret, 1, pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
PyList_SetItem (ret, 2, PyLong_FromUnsignedLongLong(start_value));
PyList_SetItem (ret, 3, PyLong_FromUnsignedLongLong(stop_value));
return ret;
return Py_BuildValue("(fOLL)",
rate,
pyg_enum_from_gtype (GST_TYPE_FORMAT, format),
start_value, stop_value);
}
%%
override gst_query_parse_seeking noargs
static PyObject *
_wrap_gst_query_parse_seeking (PyGstMiniObject *self)
{
PyObject *ret;
GstFormat format;
gboolean seekable;
gint64 segment_start, segment_end;
@ -139,13 +123,11 @@ _wrap_gst_query_parse_seeking (PyGstMiniObject *self)
&format, &seekable,
&segment_start, &segment_end);
ret = PyList_New(4);
PyList_SetItem (ret, 0, pyg_enum_from_gtype (GST_TYPE_FORMAT, format));
PyList_SetItem (ret, 1, PyBool_FromLong (seekable));
PyList_SetItem (ret, 2, PyLong_FromLongLong(segment_start));
PyList_SetItem (ret, 3, PyLong_FromLongLong(segment_end));
return ret;
return Py_BuildValue("(OLKK)",
pyg_enum_from_gtype (GST_TYPE_FORMAT, format),
seekable,
segment_start,
segment_end);
}
%%
override gst_query_parse_formats_length noargs

View file

@ -61,8 +61,8 @@ class EventTest(TestCase):
self.sink.send_event(event)
gst.debug('sent event')
self.assertEqual(event.parse_seek(), [1.0, gst.FORMAT_BYTES, gst.SEEK_FLAG_FLUSH,
gst.SEEK_TYPE_SET, 0, gst.SEEK_TYPE_NONE, 0])
self.assertEqual(event.parse_seek(), (1.0, gst.FORMAT_BYTES, gst.SEEK_FLAG_FLUSH,
gst.SEEK_TYPE_SET, 0, gst.SEEK_TYPE_NONE, 0))
def testWrongEvent(self):
buffer = gst.Buffer()