From 1b3d3aefe4748a4bb632871caa56beebaf277b90 Mon Sep 17 00:00:00 2001 From: Tomasz Melcer Date: Fri, 10 Aug 2007 00:53:30 +0000 Subject: [PATCH] Jingle: bindings for farsight, more functions wrapped --- src/common/farsight/Makefile | 5 + src/common/farsight/farsight.defs | 4 +- src/common/farsight/farsight.override | 172 +++++++++++++++++++++++++- 3 files changed, 178 insertions(+), 3 deletions(-) diff --git a/src/common/farsight/Makefile b/src/common/farsight/Makefile index 5ef6e26f6..dcd51cde4 100644 --- a/src/common/farsight/Makefile +++ b/src/common/farsight/Makefile @@ -17,3 +17,8 @@ farsight.defs: farsight/farsight-session.h \ farsight/farsight-stream.h \ >$@ + +clean: + -rm farsight.c farsightmodule.o farsight.o farsight.so + +.PHONY: clean diff --git a/src/common/farsight/farsight.defs b/src/common/farsight/farsight.defs index 71319fd21..f161042ee 100644 --- a/src/common/farsight/farsight.defs +++ b/src/common/farsight/farsight.defs @@ -182,8 +182,8 @@ (c-name "farsight_session_create_stream") (return-type "FarsightStream*") (parameters - '("FarsightMediaType" "media_type") - '("FarsightStreamDirection" "dir") + '("int" "media_type") + '("int" "dir") ) ) diff --git a/src/common/farsight/farsight.override b/src/common/farsight/farsight.override index 4c43074e9..6a6cacdcb 100644 --- a/src/common/farsight/farsight.override +++ b/src/common/farsight/farsight.override @@ -2,7 +2,13 @@ headers #include #include "pygobject.h" -#include "farsight.h" +#include +#include +#include + +#define GetString(name) PyString_AsString(PyMapping_GetItemString(item, name)) +#define GetLong(name) PyInt_AsLong(PyMapping_GetItemString(item, name)) +#define GetFloat(name) PyFloat_AsDouble(PyMapping_GetItemString(item, name)) %% modulename farsight %% @@ -34,3 +40,167 @@ static PyObject* _wrap_farsight_session_list_supported_codecs(PyGObject *self) // g_list_free(list); (a const list, we don't free it?) return ret; } +%% +override farsight_stream_get_local_codecs noargs +static PyObject* _wrap_farsight_stream_get_local_codecs(PyGObject *self) +{ + const GList *list, *tmp; + PyObject* ret; + + list=farsight_stream_get_local_codecs(FARSIGHT_STREAM(self->obj)); + + ret=PyList_New(0); + for (tmp=list; tmp!=NULL; tmp=g_list_next(tmp)) { + FarsightCodec *codec = tmp->data; + PyObject *item = pygobject_new((GObject *) codec); + + PyList_Append(ret, item); + Py_DECREF(item); + } + // g_list_free(list); (a const list, we don't free it?) + return ret; +} +%% +override farsight_stream_get_native_candidate_list noargs +static PyObject* _wrap_farsight_stream_get_native_candidate_list(PyGObject *self) +{ + const GList *list, *tmp; + PyObject* ret; + + list=farsight_stream_get_native_candidate_list(FARSIGHT_STREAM(self->obj)); + + ret=PyList_New(0); + for (tmp=list; tmp!=NULL; tmp=g_list_next(tmp)) { + FarsightCodec *codec = tmp->data; + PyObject *item = pygobject_new((GObject *) codec); + + PyList_Append(ret, item); + Py_DECREF(item); + } + // g_list_free(list); (a const list, we don't free it?) + return ret; +} +%% +override farsight_stream_set_codec_preference_list kwargs +static PyObject* _wrap_farsight_stream_set_codec_preference_list(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + /* one could try to unpack tuples right into the array */ + static char *kwlist[] = {"codec_pref", NULL}; + PyObject* list; + GArray* codec_pref_array; + FarsightCodecPreference codec_pref; + int i; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O", kwlist, &list)) + return NULL; + + codec_pref_array = g_array_sized_new(FALSE, FALSE, + sizeof(FarsightCodecPreference), PySequence_Size(list)); + + for(i=0; iobj), + (const GArray*) codec_pref_array); + + g_array_free(codec_pref_array, FALSE); + + Py_INCREF(Py_None); + return Py_None; +} +%% +override farsight_stream_set_remote_candidate_list kwargs +static PyObject* _wrap_farsight_stream_set_remote_candidate_list(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char* kwlist[] = {"remote_candidates", NULL}; + PyObject* list; + GArray* candidate_array; + GList* candidate_list=NULL; + int i, listsize; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O", kwlist, &list)) + return NULL; + + candidate_array=g_array_sized_new(FALSE, TRUE, + sizeof(FarsightTransportInfo), PySequence_Size(list)); + + listsize=PySequence_Size(list); + for(i=0;iobj), candidate_list); + + g_array_free(candidate_array, FALSE); + g_list_free(candidate_list); + + Py_INCREF(Py_None); + return Py_None; +} +%% +override farsight_stream_set_remote_codecs kwargs +static PyObject* _wrap_farsight_stream_set_remote_codecs(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char* kwlist[] = {"codecs", NULL}; + PyObject* list, * item; + GArray* codecs_array; + GList* codecs_list; + int i, listsize; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O", kwlist, &list)) + return NULL; + + codecs_array=g_array_sized_new(FALSE, TRUE, + sizeof(FarsightCodec), PySequence_Size(list)); + + listsize=PySequence_Size(list); + for(i=0;iobj), codecs_list); + + g_array_free(codecs_array, FALSE); + g_list_free(codecs_list); + + Py_INCREF(Py_None); + return Py_None; +}