Cleanup, add versioning

Original commit message from CVS:
Cleanup, add versioning
This commit is contained in:
Johan Dahlin 2004-03-08 13:51:02 +00:00
parent e1aed306f9
commit 6e85edcd38
5 changed files with 356 additions and 471 deletions

2
common

@ -1 +1 @@
Subproject commit 874dab5c3461ad7487f1ae029256b6da82dddf6d
Subproject commit 4eb02711e49a6aadf900d6fd9d220c17115fec2a

View file

@ -25,8 +25,6 @@
gboolean
pygst_data_from_pyobject(PyObject *object, GstData **data)
{
g_return_val_if_fail(*data != NULL, FALSE);
if (pyg_boxed_check(object, GST_TYPE_DATA)) {
*data = pyg_boxed_get(object, GstData);
return TRUE;

View file

@ -5266,23 +5266,23 @@
(return-type "GstTagList*")
)
;; Added python method
(define-method keys
(of-object "GstTagList")
(c-name "pygst_tag_list_keys")
)
; ;; Added python method
; (define-method keys
; (of-object "GstTagList")
; (c-name "pygst_tag_list_keys")
; )
(define-method has_key
(of-object "GstTagList")
(c-name "pygst_tag_list_has_key")
(parameters '("gchar*" "key"))
)
; (define-method has_key
; (of-object "GstTagList")
; (c-name "pygst_tag_list_has_key")
; (parameters '("gchar*" "key"))
; )
(define-method get
(of-object "GstTagList")
(c-name "pygst_tag_list_get")
(parameters '("gchar*" "key"))
)
; (define-method get
; (of-object "GstTagList")
; (c-name "pygst_tag_list_get")
; (parameters '("gchar*" "key"))
; )
;; From /opt/gnome/include/gstreamer-0.7/gst/gsttaginterface.h

View file

@ -1,4 +1,4 @@
/* -*- Mode: C; c-basic-offset: 4 -*- */
/* -*- Mode: C; ; c-file-style: "python" -*- */
/* gst-python
* Copyright (C) 2002 David I. Lehn
* Copyright (C) 2004 Johan Dahlin
@ -24,6 +24,10 @@
headers
#include <Python.h>
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "pygobject.h"
#include <gst/gst.h>
#include <gst/gstqueue.h>
@ -41,13 +45,10 @@ typedef struct {
PyObject *func, *data;
} PyGstCustomNotify;
void iterate_bin_all(GstBin *bin);
guint add_iterate_bin(GstBin *bin);
void remove_iterate_bin(guint id);
extern gboolean
pygst_data_from_pyobject(PyObject *object, GstData **data);
void iterate_bin_all (GstBin *bin);
guint add_iterate_bin (GstBin *bin);
void remove_iterate_bin (guint id);
extern gboolean pygst_data_from_pyobject (PyObject *object, GstData **data);
%%
include
gstpad-handlers.override
@ -66,23 +67,18 @@ ignore-glob
*_private
gst_registry_*
gst_value_*
gst_tag_list_get_*
%%
override gst_buffer_get_data
static PyObject*
_wrap_gst_buffer_get_data(PyObject *self)
{
GstBuffer *buf;
buf = pyg_boxed_get(self, GstBuffer);
return PyString_FromStringAndSize(
GST_BUFFER_DATA(buf),
GstBuffer *buf = pyg_boxed_get(self, GstBuffer);
return PyString_FromStringAndSize(GST_BUFFER_DATA(buf),
GST_BUFFER_SIZE(buf));
}
%%
override gst_buffer_set_data kwargs
static PyObject*
_wrap_gst_buffer_set_data(PyObject *self, PyObject *args, PyObject *kwargs)
{
@ -90,7 +86,8 @@ _wrap_gst_buffer_set_data(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject *data;
GstBuffer *buf;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:GstBuffer:set_data", kwlist, &data)) {
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:GstBuffer:set_data", kwlist, &data))
{
return NULL;
}
if (!PyString_Check(data)) {
@ -114,7 +111,6 @@ _wrap_gst_buffer_set_data(PyObject *self, PyObject *args, PyObject *kwargs)
}
%%
override gst_bin_iterate
static PyObject *
_wrap_gst_bin_iterate(PyGObject *self)
{
@ -127,7 +123,6 @@ _wrap_gst_bin_iterate(PyGObject *self)
}
%%
override gst_element_set_state kwargs
static PyObject *
_wrap_gst_element_set_state(PyGObject *self, PyObject *args, PyObject *kwargs)
{
@ -147,7 +142,6 @@ _wrap_gst_element_set_state(PyGObject *self, PyObject *args, PyObject *kwargs)
}
%%
override gst_pad_query kwargs
static PyObject *
_wrap_gst_pad_query(PyGObject *self, PyObject *args, PyObject *kwargs)
{
@ -165,7 +159,6 @@ _wrap_gst_pad_query(PyGObject *self, PyObject *args, PyObject *kwargs)
}
%%
override gst_element_query kwargs
static PyObject *
_wrap_gst_element_query(PyGObject *self, PyObject *args, PyObject *kwargs)
{
@ -183,7 +176,6 @@ _wrap_gst_element_query(PyGObject *self, PyObject *args, PyObject *kwargs)
}
%%
override gst_pad_convert kwargs
static PyObject *
_wrap_gst_pad_convert(PyGObject *self, PyObject *args, PyObject *kwargs)
{
@ -202,7 +194,6 @@ _wrap_gst_pad_convert(PyGObject *self, PyObject *args, PyObject *kwargs)
}
%%
override gst_element_convert kwargs
static PyObject *
_wrap_gst_element_convert(PyGObject *self, PyObject *args, PyObject *kwargs)
{
@ -219,37 +210,22 @@ _wrap_gst_element_convert(PyGObject *self, PyObject *args, PyObject *kwargs)
ret = gst_element_convert(GST_ELEMENT(self->obj), src_format, src_value, &dest_format, &dest_value);
return Py_BuildValue("(bL)", ret, dest_value);
}
%%
override gst_version noargs
static PyObject *
_wrap_gst_version(void)
{
guint major, minor, micro;
gst_version(&major, &minor, &micro);
return Py_BuildValue("(iii)", major, minor, micro);
}
%%
override gst_bin_add_many args
static PyObject *
_wrap_gst_bin_add_many(PyGObject *self, PyObject *args)
{
PyGObject *element;
int i;
int len;
int i, len;
len = PyTuple_Size(args);
if (len == 0)
{
PyErr_SetString(PyExc_TypeError, "GstBin.add requires at least one argument");
if (len == 0) {
PyErr_SetString(PyExc_TypeError, "GstBin.add_many requires at least one argument");
return NULL;
}
for (i = 0; i < len; i++)
{
for (i = 0; i < len; i++) {
element = (PyGObject*)PyTuple_GetItem(args, i);
if (!pygobject_check(element, &PyGstElement_Type))
{
@ -258,8 +234,7 @@ _wrap_gst_bin_add_many(PyGObject *self, PyObject *args)
}
}
for (i = 0; i < len; i++)
{
for (i = 0; i < len; i++) {
element = (PyGObject*)PyTuple_GetItem(args, i);
gst_bin_add(GST_BIN(self->obj), GST_ELEMENT(element->obj));
}
@ -278,7 +253,7 @@ _wrap_gst_element_link_many(PyObject *self, PyObject *args)
len = PyTuple_Size(args);
if (len < 2)
{
PyErr_SetString(PyExc_TypeError, "gst.link_many requires at least two argument");
PyErr_SetString(PyExc_TypeError, "gst.element_link_many requires at least two argument");
return NULL;
}
@ -342,31 +317,37 @@ override gst_buffer_new kwargs
static int
_wrap_gst_buffer_new(PyGBoxed *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "data", NULL };
static char *kwlist[] = { "data", "buffer_size", NULL };
char *data = NULL;
int size;
int buf_size = 4096;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|z#:GstBuffer.__init__", kwlist, &data, &size))
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|z#s:GstBuffer.__init__", kwlist,
&data, &size, &buf_size))
return -1;
self->gtype = GST_TYPE_BUFFER;
self->free_on_dealloc = FALSE;
self->boxed = gst_buffer_new_and_alloc(size);
self->boxed = gst_buffer_new(); //_and_alloc(buf_size);
if (!self->boxed) {
PyErr_SetString(PyExc_RuntimeError, "could not create GstBuffer object");
return -1;
}
if (data)
gst_buffer_set_data (self->boxed, data, size);
// memcpy (GST_BUFFER_DATA (self->boxed), data, size);
GST_BUFFER_SIZE (self->boxed) = size;
GST_BUFFER_DATA (self->boxed) = data;
gst_buffer_ref (GST_BUFFER (self->boxed));
// if (data)
// memcpy(GST_BUFFER_DATA (self->boxed), data, size);
// gst_buffer_set_data (self->boxed, data, size);
// gst_buffer_ref (GST_BUFFER (self->boxed));
return 0;
}
%%
override pygst_tag_list_keys noargs
define GstTagList.keys noargs
void
tag_foreach_func_dict (const GstTagList *list,
const gchar *tag,
@ -406,7 +387,7 @@ tag_foreach_func_list (const GstTagList *list,
}
static PyObject*
_wrap_pygst_tag_list_keys(PyGObject *self)
_wrap_gst_tag_list_keys(PyGObject *self)
{
PyObject *dict;
@ -421,13 +402,13 @@ _wrap_pygst_tag_list_keys(PyGObject *self)
%%
override-slot GstTagList.tp_as_mapping
static int
tag_list_length(PyGObject *self)
_wrap_gst_tag_list_length(PyGObject *self)
{
return gst_structure_n_fields((GstStructure*)self->obj);
}
static PyObject *
tag_list_subscript(PyGObject *self, register PyObject *py_key)
_wrap_gst_tag_list_subscript(PyGObject *self, PyObject *py_key)
{
PyObject *v = NULL;
char *key = PyString_AsString(py_key);
@ -449,15 +430,15 @@ tag_list_subscript(PyGObject *self, register PyObject *py_key)
}
static PySequenceMethods _wrap_gst_tag_list_tp_as_mapping = {
(inquiry)tag_list_length, /*mp_length*/
(binaryfunc)tag_list_subscript, /*mp_subscript*/
(objobjargproc)NULL,
(inquiry)_wrap_gst_tag_list_length, /* mp_length */
(binaryfunc)_wrap_gst_tag_list_subscript, /* mp_subscript */
NULL,
};
%%
override pygst_tag_list_has_key args
define GstTagList.has_key args
static PyObject*
_wrap_pygst_tag_list_has_key(PyGObject *self, PyObject *args)
_wrap_gst_tag_list_has_key(PyGObject *self, PyObject *args)
{
gchar *key;
const GValue *gvalue;
@ -470,9 +451,9 @@ _wrap_pygst_tag_list_has_key(PyGObject *self, PyObject *args)
return PyInt_FromLong(gvalue != NULL);
}
%%
override pygst_tag_list_get args
define GstTagList.get
static PyObject *
_wrap_pygst_tag_list_get(PyGObject *self, PyObject *args)
_wrap_gst_tag_list_get(PyGObject *self, PyObject *args)
{
char *key;
PyObject *failobj = Py_None;
@ -524,165 +505,8 @@ py_pad_private(PyGObject *pad)
}
return private;
}
%%
override gst_bin_iterate
static PyObject *
_wrap_gst_bin_iterate(PyGObject *self)
{
int ret;
pyg_unblock_threads();
ret = gst_bin_iterate(GST_BIN(self->obj));
pyg_block_threads();
return PyInt_FromLong(ret);
}
%%
override gst_element_set_state kwargs
static PyObject *
_wrap_gst_element_set_state(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "state", NULL };
PyObject *py_state = NULL;
GstElementState state;
gint ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:GstElement.set_state", kwlist, &py_state))
return NULL;
if (pyg_flags_get_value(GST_TYPE_ELEMENT_STATE, py_state, (gint *)&state))
return NULL;
pyg_unblock_threads();
ret = gst_element_set_state(GST_ELEMENT(self->obj), state);
pyg_block_threads();
return PyInt_FromLong(ret);
}
%%
override gst_pad_query kwargs
static PyObject *
_wrap_gst_pad_query(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "type", "format", NULL };
GstQueryType type;
GstFormat format;
gint64 value;
gboolean ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:GstPad.query", kwlist, &type, &format))
return NULL;
value = 0;
ret = gst_pad_query(GST_PAD(self->obj), type, &format, &value);
return Py_BuildValue("(bL)", ret, value);
}
%%
override gst_element_query kwargs
static PyObject *
_wrap_gst_element_query(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "type", "format", NULL };
GstQueryType type;
GstFormat format;
gint64 value;
gboolean ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:GstElement.query", kwlist, &type, &format))
return NULL;
value = 0;
ret = gst_element_query(GST_ELEMENT(self->obj), type, &format, &value);
return Py_BuildValue("(bL)", ret, value);
}
%%
override gst_pad_convert kwargs
static PyObject *
_wrap_gst_pad_convert(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "src_format", "src_value", "dest_format", NULL };
GstFormat src_format, dest_format;
PyObject *src_value_obj;
gint64 src_value, dest_value;
gboolean ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iOi:GstPad.convert", kwlist, &src_format, &src_value_obj, &dest_format))
return NULL;
src_value = PyLong_AsLongLong(src_value_obj);
dest_value = 0;
ret = gst_pad_convert(GST_PAD(self->obj), src_format, src_value, &dest_format, &dest_value);
return Py_BuildValue("(bL)", ret, dest_value);
}
%%
override gst_element_convert kwargs
static PyObject *
_wrap_gst_element_convert(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "src_format", "src_value", "dest_format", NULL };
GstFormat src_format, dest_format;
PyObject *src_value_obj;
gint64 src_value, dest_value;
gboolean ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "iOi:GstElement.convert", kwlist, &src_format, &src_value_obj, &dest_format))
return NULL;
src_value = PyLong_AsLongLong(src_value_obj);
dest_value = 0;
ret = gst_element_convert(GST_ELEMENT(self->obj), src_format, src_value, &dest_format, &dest_value);
return Py_BuildValue("(bL)", ret, dest_value);
}
%%
override gst_version noargs
static PyObject *
_wrap_gst_version(void)
{
guint major, minor, micro;
gst_version(&major, &minor, &micro);
return Py_BuildValue("(iii)", major, minor, micro);
}
%%
override gst_bin_add_many args
static PyObject *
_wrap_gst_bin_add_many(PyGObject *self, PyObject *args, PyObject *kwargs)
{
PyGObject *element;
int i;
int len;
len = PyList_Size(args);
if (len == 0)
{
PyErr_SetString(PyExc_TypeError, "GstBin.add requires at least one argument");
return NULL;
}
for (i = 0; i < len; i++)
{
element = (PyGObject*)PyList_GetItem(args, i);
if (!pygobject_check(element, &PyGstElement_Type))
{
PyErr_SetString(PyExc_TypeError, "argument must be a GstElement");
return NULL;
}
}
for (i = 0; i < len; i++)
{
element = (PyGObject*)PyList_GetItem(args, i);
gst_bin_add(GST_BIN(self->obj), GST_ELEMENT(element->obj));
}
Py_INCREF(Py_None);
return Py_None;
}
%%
override gst_structure_new kwargs
static int
_wrap_gst_structure_new(PyGBoxed *self, PyObject *args, PyObject *kwargs)
{
@ -704,7 +528,6 @@ _wrap_gst_structure_new(PyGBoxed *self, PyObject *args, PyObject *kwargs)
}
%%
override gst_structure_set_value kwargs
static PyObject *
_wrap_gst_structure_set_value(PyObject *self, PyObject *args, PyObject *kwargs)
{
@ -713,8 +536,11 @@ _wrap_gst_structure_set_value(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject *py_value = NULL;
GValue value = { 0 };
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO:GstStructure.set_value", kwlist, &field, &py_value))
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"sO:GstStructure.set_value",
kwlist, &field, &py_value))
return NULL;
g_value_init(&value, G_TYPE_STRING);
if (pyg_value_from_pyobject(&value, py_value) != 0) {
return NULL;
@ -726,7 +552,6 @@ _wrap_gst_structure_set_value(PyObject *self, PyObject *args, PyObject *kwargs)
}
%%
override gst_structure_foreach kwargs
static gboolean
pygst_structure_foreach_marshal(GQuark field_id,
GValue *value,
@ -851,10 +676,8 @@ _wrap_gst_tag_list_foreach (PyGObject *self,
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"O|O:GstTagList.foreach",
kwlist,
&pyfunc, &pyarg)) {
kwlist, &pyfunc, &pyarg))
return NULL;
}
if (!PyCallable_Check(pyfunc)) {
PyErr_SetString(PyExc_TypeError, "foreach_function not callable");
@ -872,7 +695,6 @@ _wrap_gst_tag_list_foreach (PyGObject *self,
}
%%
override gst_tag_list_get_value_index kwargs
static PyObject *
_wrap_gst_tag_list_get_value_index (PyGObject *self,
PyObject *args,
@ -885,10 +707,8 @@ _wrap_gst_tag_list_get_value_index (PyGObject *self,
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"si:GstTagList.get_value_index",
kwlist,
&tag, &index)) {
kwlist, &tag, &index))
return NULL;
}
gvalue = gst_tag_list_get_value_index(pyg_boxed_get(self, GstTagList),
tag,
@ -896,3 +716,57 @@ _wrap_gst_tag_list_get_value_index (PyGObject *self,
return pyg_value_as_pyobject(gvalue, FALSE);
}
%%
override gst_pad_get_negotiated_caps noargs
static PyObject *
_wrap_gst_pad_get_negotiated_caps(PyGObject *self)
{
GstCaps *ret = (GstCaps*)gst_pad_get_negotiated_caps(GST_PAD(self->obj));
return pyg_boxed_new(GST_TYPE_CAPS, ret, TRUE, TRUE);
}
%%
override gst_pad_get_pad_template_caps noargs
static PyObject *
_wrap_gst_pad_get_pad_template_caps(PyGObject *self)
{
GstCaps *ret = (GstCaps*)gst_pad_get_pad_template_caps(GST_PAD(self->obj));
return pyg_boxed_new(GST_TYPE_CAPS, ret, TRUE, TRUE);
}
%%
override gst_pad_template_get_caps noargs
static PyObject *
_wrap_gst_pad_template_get_caps(PyGObject *self)
{
GstCaps *ret = (GstCaps*)gst_pad_template_get_caps(GST_PAD_TEMPLATE(self->obj));
return pyg_boxed_new(GST_TYPE_CAPS, ret, TRUE, TRUE);
}
%%
override gst_type_fidn_factory_get_caps noargs
static PyObject *
_wrap_gst_type_find_factory_get_caps(PyGObject *self)
{
GstCaps *ret = (GstCaps*)gst_type_find_factory_get_caps(GST_TYPE_FIND_FACTORY(self->obj));
return pyg_boxed_new(GST_TYPE_CAPS, ret, TRUE, TRUE);
}
%%
override gst_pad_template_get_caps_ny_name kwargs
static PyObject *
_wrap_gst_pad_template_get_caps_by_name(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "name", NULL };
char *name;
GstCaps *ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:GstPadTemplate.get_caps_by_name", kwlist, &name))
return NULL;
ret = (GstCaps*)gst_pad_template_get_caps_by_name(GST_PAD_TEMPLATE(self->obj), name);
return pyg_boxed_new(GST_TYPE_CAPS, ret, TRUE, TRUE);
}
%%
override gst_type_find_factory_get_caps noargs
static PyObject *
_wrap_gst_type_find_factory_get_caps(PyGObject *self)
{
GstCaps *ret = (GstCaps*)gst_type_find_factory_get_caps(GST_TYPE_FIND_FACTORY(self->obj));
return pyg_boxed_new(GST_TYPE_CAPS, ret, TRUE, TRUE);
}

View file

@ -1,4 +1,4 @@
/* -*- Mode: C; c-basic-offset: 4 -*- */
/* -*- Mode: C; ; c-file-style: "k&r"; c-basic-offset: 4 -*- */
/* gst-python
* Copyright (C) 2002 David I. Lehn
*
@ -27,6 +27,7 @@
/* include this first, before NO_IMPORT_PYGOBJECT is defined */
#include <pygobject.h>
#include <gst/gst.h>
#include <gst/gstversion.h>
void pygst_register_classes (PyObject *d);
void pygst_add_constants(PyObject *module, const gchar *strip_prefix);
@ -37,7 +38,7 @@ DL_EXPORT(void)
init_gst (void)
{
PyObject *m, *d;
PyObject *av;
PyObject *av, *tuple;
int argc, i;
char **argv;
@ -73,6 +74,18 @@ init_gst (void)
m = Py_InitModule ("_gst", pygst_functions);
d = PyModule_GetDict (m);
/* gst+ version */
tuple = Py_BuildValue ("(iii)", GST_VERSION_MAJOR, GST_VERSION_MINOR,
GST_VERSION_MICRO);
PyDict_SetItemString(d, "gst_version", tuple);
Py_DECREF(tuple);
/* gst-python version */
tuple = Py_BuildValue ("(iii)", PYGST_MAJOR_VERSION, PYGST_MINOR_VERSION,
PYGST_MICRO_VERSION);
PyDict_SetItemString(d, "pygst_version", tuple);
Py_DECREF(tuple);
pygst_register_classes (d);
pygst_add_constants (m, "GST_");