mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
Improve support GstBuffer attributes, r/w support for timestamp.
Original commit message from CVS: * gst/gst-types.defs: * gst/gstbuffer.override: * testsuite/test_buffer.py: Improve support GstBuffer attributes, r/w support for timestamp.
This commit is contained in:
parent
563d5b9533
commit
f51f43e1d9
5 changed files with 67 additions and 23 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2004-12-14 Johan Dahlin <johan@gnome.org>
|
||||||
|
|
||||||
|
* gst/gst-types.defs:
|
||||||
|
* gst/gstbuffer.override:
|
||||||
|
* testsuite/test_buffer.py:
|
||||||
|
|
||||||
|
Improve support GstBuffer attributes, r/w support for timestamp.
|
||||||
|
|
||||||
2004-11-29 Johan Dahlin <johan@gnome.org>
|
2004-11-29 Johan Dahlin <johan@gnome.org>
|
||||||
|
|
||||||
* configure.ac: Post release version bump
|
* configure.ac: Post release version bump
|
||||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
||||||
Subproject commit ded6dc5186cb7f8c64cb06a8591b9f787122c6f1
|
Subproject commit b2638c100721f67b280c3b43b21f1ce1c9b5e316
|
|
@ -162,10 +162,16 @@
|
||||||
(copy-func "gst_buffer_copy")
|
(copy-func "gst_buffer_copy")
|
||||||
(release-func "gst_data_unref")
|
(release-func "gst_data_unref")
|
||||||
(fields
|
(fields
|
||||||
|
;; GstData fields
|
||||||
|
'("GType" "data_type")
|
||||||
|
'("guint16" "flags")
|
||||||
|
|
||||||
|
;; GstBuffer fields
|
||||||
'("guint" "size")
|
'("guint" "size")
|
||||||
'("guint" "maxsize")
|
'("guint" "maxsize")
|
||||||
'("guint64" "offset")
|
'("guint64" "offset")
|
||||||
'("guint64" "offset_end")
|
'("guint64" "offset_end")
|
||||||
|
'("GstClockTime" "timestamp")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -117,28 +117,18 @@ _wrap_gst_buffer_set_data(PyObject *self, PyObject *args, PyObject *kwargs)
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
override-slot GstBuffer.tp_getattr
|
override-attr GstBuffer.data_type
|
||||||
PyObject *
|
static PyObject*
|
||||||
_wrap_gst_buffer_tp_getattr(PyGObject *self, char *attr)
|
_wrap_gst_buffer__get_data_type(PyGObject *self, void *closure)
|
||||||
{
|
{
|
||||||
/* We have some GstData methods since it's not a subclass */
|
return pyg_type_wrapper_new(GST_DATA_TYPE(self->obj));
|
||||||
if (!strcmp(attr, "type"))
|
}
|
||||||
return pyg_type_wrapper_new(GST_DATA_TYPE(self->obj));
|
%%
|
||||||
else if (!strcmp(attr, "flags"))
|
override-attr GstBuffer.flags
|
||||||
return PyInt_FromLong(GST_DATA_FLAGS(self->obj));
|
static PyObject*
|
||||||
#if 0
|
_wrap_gst_buffer__get_flags(PyGObject *self, void *closure)
|
||||||
else if (!strcmp(attr, "size"))
|
{
|
||||||
return PyInt_FromLong(GST_BUFFER_SIZE(self->obj));
|
return PyInt_FromLong(GST_DATA_FLAGS(self->obj));
|
||||||
#endif
|
|
||||||
else if (!strcmp(attr, "maxsize"))
|
|
||||||
return PyInt_FromLong(GST_BUFFER_MAXSIZE(self->obj));
|
|
||||||
/* XXX: timestamp and duration */
|
|
||||||
else if (!strcmp(attr, "offset"))
|
|
||||||
return PyInt_FromLong(GST_BUFFER_OFFSET(self->obj));
|
|
||||||
else if (!strcmp(attr, "offset_end"))
|
|
||||||
return PyInt_FromLong(GST_BUFFER_OFFSET_END(self->obj));
|
|
||||||
|
|
||||||
return Py_FindMethod(_PyGstBuffer_methods, (PyObject*)self, attr);
|
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
override-attr GstBuffer.size
|
override-attr GstBuffer.size
|
||||||
|
@ -169,6 +159,25 @@ _wrap_gst_buffer__get_offset_end(PyGObject *self, void *closure)
|
||||||
return PyInt_FromLong(GST_BUFFER_OFFSET_END(self->obj));
|
return PyInt_FromLong(GST_BUFFER_OFFSET_END(self->obj));
|
||||||
}
|
}
|
||||||
%%
|
%%
|
||||||
|
override-attr GstBuffer.timestamp
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_buffer__get_timestamp(PyGObject *self, void *closure)
|
||||||
|
{
|
||||||
|
return PyInt_FromLong(GST_BUFFER(self->obj)->timestamp);
|
||||||
|
}
|
||||||
|
static int
|
||||||
|
_wrap_gst_buffer__set_timestamp(PyGBoxed *self, PyObject *value, void *closure)
|
||||||
|
{
|
||||||
|
gint val;
|
||||||
|
|
||||||
|
val = PyInt_AsLong(value);
|
||||||
|
if (PyErr_Occurred())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
pyg_boxed_get(self, GstBuffer)->timestamp = val;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
%%
|
||||||
override-slot GstBuffer.tp_str
|
override-slot GstBuffer.tp_str
|
||||||
static PyObject *
|
static PyObject *
|
||||||
_wrap_gst_buffer_tp_str(PyGObject *self)
|
_wrap_gst_buffer_tp_str(PyGObject *self)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import sys
|
import sys
|
||||||
from common import gst, unittest
|
from common import gobject, gst, unittest
|
||||||
|
|
||||||
class BufferTest(unittest.TestCase):
|
class BufferTest(unittest.TestCase):
|
||||||
def testBufferBuffer(self):
|
def testBufferBuffer(self):
|
||||||
|
@ -80,5 +80,26 @@ class BufferTest(unittest.TestCase):
|
||||||
buffer.flag_unset(gst.BUFFER_IN_CAPS)
|
buffer.flag_unset(gst.BUFFER_IN_CAPS)
|
||||||
assert not buffer.flag_is_set(gst.BUFFER_IN_CAPS)
|
assert not buffer.flag_is_set(gst.BUFFER_IN_CAPS)
|
||||||
|
|
||||||
|
def testAttrType(self):
|
||||||
|
buffer = gst.Buffer()
|
||||||
|
assert hasattr(buffer, "data_type")
|
||||||
|
# XXX: Expose this in gobject
|
||||||
|
#assert isinstance(buffer.data_type, gobject.GType)
|
||||||
|
assert buffer.data_type == buffer.__gtype__
|
||||||
|
|
||||||
|
def testAttrFlags(self):
|
||||||
|
buffer = gst.Buffer()
|
||||||
|
assert hasattr(buffer, "flags")
|
||||||
|
assert isinstance(buffer.flags, int)
|
||||||
|
|
||||||
|
def testAttrTimestamp(self):
|
||||||
|
buffer = gst.Buffer()
|
||||||
|
assert hasattr(buffer, "timestamp")
|
||||||
|
assert isinstance(buffer.timestamp, int)
|
||||||
|
|
||||||
|
assert buffer.timestamp == -1
|
||||||
|
buffer.timestamp = 0
|
||||||
|
assert buffer.timestamp == 0
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in a new issue