Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 225891 Details for
Bug 211174
net-im/emesene ebuild request
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
libmimic's python binding patch
libmimic-1.0.4-add-python-bindings.patch (text/plain), 10.69 KB, created by
Carlos Silva
on 2010-03-31 00:03:29 UTC
(
hide
)
Description:
libmimic's python binding patch
Filename:
MIME Type:
Creator:
Carlos Silva
Created:
2010-03-31 00:03:29 UTC
Size:
10.69 KB
patch
obsolete
>diff -Nur -x '*.orig' -x '*~' libmimic-1.0.4/acinclude.m4 libmimic-1.0.4.new/acinclude.m4 >--- libmimic-1.0.4/acinclude.m4 1970-01-01 01:00:00.000000000 +0100 >+++ libmimic-1.0.4.new/acinclude.m4 2009-07-09 19:59:15.000000000 +0200 >@@ -0,0 +1,32 @@ >+dnl From msw. >+dnl >+dnl a macro to check for ability to create python extensions >+dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) >+dnl function also defines PYTHON_INCLUDES >+AC_DEFUN([AM_CHECK_PYTHON_HEADERS], >+[AC_REQUIRE([AM_PATH_PYTHON]) >+AC_MSG_CHECKING(for headers required to compile python extensions) >+dnl deduce PYTHON_INCLUDES >+py_prefix=`$PYTHON -c "import sys; print sys.prefix"` >+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` >+if test -x "$PYTHON-config"; then >+ PYTHON_INCLUDES=`$PYTHON-config --includes 2>/dev/null` >+else >+ PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" >+ if test "$py_prefix" != "$py_exec_prefix"; then >+ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" >+ fi >+fi >+PYTHON_LIBS="-L${py_prefix}/libs -lpython${PYTHON_VERSION}" >+AC_SUBST(PYTHON_INCLUDES) >+AC_SUBST(PYTHON_LIBS) >+dnl check if the headers exist: >+save_CPPFLAGS="$CPPFLAGS" >+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" >+AC_TRY_CPP([#include <Python.h>],dnl >+[AC_MSG_RESULT(found) >+$1],dnl >+[AC_MSG_RESULT(not found) >+$2]) >+CPPFLAGS="$save_CPPFLAGS" >+]) >diff -Nur -x '*.orig' -x '*~' libmimic-1.0.4/configure.ac libmimic-1.0.4.new/configure.ac >--- libmimic-1.0.4/configure.ac 2009-07-09 19:59:14.000000000 +0200 >+++ libmimic-1.0.4.new/configure.ac 2009-07-09 19:59:24.000000000 +0200 >@@ -29,6 +29,32 @@ > AC_PROG_CC > AC_PROG_INSTALL > >+dnl Python bindings >+AC_ARG_ENABLE(python, [ --enable-python build python bindings],enable_python=$enableval,enable_python=auto) >+ >+AC_MSG_CHECKING([whether to build python bindings]) >+ >+BUILD_PYTHON=false >+if test x$enable_python != xno; then >+ AM_PATH_PYTHON >+ if test -n "$PYTHON"; then >+ BUILD_PYTHON=true >+ fi >+fi >+ >+if $BUILD_PYTHON; then >+ AM_CHECK_PYTHON_HEADERS(,BUILD_PYTHON=false) >+fi >+ >+if ! $BUILD_PYTHON; then >+ AC_MSG_RESULT([Python bindings disabled]) >+fi >+ >+AC_SUBST(PYTHONREV) >+AC_SUBST(PYTHON_MODULES) >+AM_CONDITIONAL(BUILD_PYTHON_MODULES, $BUILD_PYTHON) >+ >+ > dnl Documentation. > AC_ARG_ENABLE(doxygen-docs, [ --enable-doxygen-docs build Doxygen documentation],enable_doxygen_docs=$enableval,enable_doxygen_docs=auto) > >@@ -74,6 +100,7 @@ > Makefile > doc/Makefile > doc/Doxyfile >+python/Makefile > src/Makefile > ]) > >diff -Nur -x '*.orig' -x '*~' libmimic-1.0.4/Makefile.am libmimic-1.0.4.new/Makefile.am >--- libmimic-1.0.4/Makefile.am 2006-02-07 10:53:40.000000000 +0100 >+++ libmimic-1.0.4.new/Makefile.am 2009-07-09 19:59:15.000000000 +0200 >@@ -1,4 +1,4 @@ >-SUBDIRS = src doc >+SUBDIRS = src python doc > > ### all of the standard pc files we need to generate > pcfiles = \ >diff -Nur -x '*.orig' -x '*~' libmimic-1.0.4/python/Makefile.am libmimic-1.0.4.new/python/Makefile.am >--- libmimic-1.0.4/python/Makefile.am 1970-01-01 01:00:00.000000000 +0100 >+++ libmimic-1.0.4.new/python/Makefile.am 2009-07-09 19:59:15.000000000 +0200 >@@ -0,0 +1,14 @@ >+PYTHON_MODULES = libmimic.la >+ >+if BUILD_PYTHON_MODULES >+ >+pythonsiteexecdir = $(pyexecdir) >+pythonsiteexec_LTLIBRARIES = $(PYTHON_MODULES) >+ >+libmimic_la_SOURCES = py_libmimic.c >+libmimic_la_CPPFLAGS = -I$(top_srcdir)/src $(AM_CPPFLAGS) >+libmimic_la_CFLAGS = $(PYTHON_INCLUDES) $(AM_CFLAGS) $(GLIB_CFLAGS) >+libmimic_la_LDFLAGS = -module -avoid-version $(PYTHON_LIBS) $(PYTHON_LDFLAGS) $(AM_LDFLAGS) >+libmimic_la_LIBADD = $(top_builddir)/src/libmimic.la $(LIBS) >+ >+endif >diff -Nur -x '*.orig' -x '*~' libmimic-1.0.4/python/py_libmimic.c libmimic-1.0.4.new/python/py_libmimic.c >--- libmimic-1.0.4/python/py_libmimic.c 1970-01-01 01:00:00.000000000 +0100 >+++ libmimic-1.0.4.new/python/py_libmimic.c 2009-07-09 19:59:15.000000000 +0200 >@@ -0,0 +1,172 @@ >+/* >+ * This file is part of emesene. >+ * >+ * Emesene is free software; you can redistribute it and/or modify >+ * it under the terms of the GNU General Public License as published by >+ * the Free Software Foundation; either version 2 of the License, or >+ * (at your option) any later version. >+ * >+ * Emesene is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+ * GNU General Public License for more details. >+ * >+ * You should have received a copy of the GNU General Public License >+ * along with this program; if not, write to the Free Software >+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, >+ * MA 02110-1301, USA. >+ * >+ * TODO: >+ * - set useful exception messages >+ */ >+ >+#include <Python.h> >+#include "py_libmimic.h" >+ >+/* init module */ >+PyMODINIT_FUNC >+initlibmimic(void) >+{ >+ PyObject* m; >+ m = Py_InitModule("libmimic", LibmimicMethods); >+} >+static void close_decoder(void* ptr) { >+ MimicDecoder* decoder; >+ decoder = (MimicDecoder*)ptr; >+ mimic_close(decoder->codec); >+ free(decoder); >+} >+static PyObject* libmimic_new_decoder(PyObject *self, PyObject *args) { >+ MimicDecoder* decoder; >+ >+ /* accept no arguments */ >+ if(!PyArg_ParseTuple(args, "")) >+ return NULL; >+ >+ decoder = (MimicDecoder*)malloc(sizeof(MimicDecoder)); >+ if(!decoder) { >+ PyErr_NoMemory(); >+ return NULL; >+ } >+ >+ decoder->codec = mimic_open(); >+ decoder->is_init = 0; >+ >+ return PyCObject_FromVoidPtr(decoder, close_decoder); >+} >+static PyObject* libmimic_new_encoder(PyObject *self, PyObject *args) { >+ MimicEncoder* encoder; >+ unsigned char arg_resolution; >+ MimicResEnum resolution; >+ >+ /* accept one argument, resolution: 0 = low, 1 = high */ >+ if(!PyArg_ParseTuple(args, "b", &arg_resolution)) >+ return NULL; >+ >+ encoder = (MimicEncoder*)malloc(sizeof(MimicEncoder)); >+ if(!encoder) { >+ PyErr_NoMemory(); >+ return NULL; >+ } >+ >+ encoder->codec = mimic_open(); >+ encoder->num_frames = 0; >+ >+ resolution = arg_resolution ? MIMIC_RES_HIGH : MIMIC_RES_LOW; >+ mimic_encoder_init(encoder->codec, resolution); >+ >+ return PyCObject_FromVoidPtr(encoder, close_decoder); >+} >+static PyObject* libmimic_decode(PyObject *self, PyObject *args) { >+ MimicDecoder* decoder; >+ BYTE* output; >+ unsigned int width, height, length; >+ >+ /* parameters */ >+ PyObject* pyobj = NULL; >+ BYTE* input; >+ int inputsize; >+ >+ if(!PyArg_ParseTuple(args, "Os#", &pyobj, &input, &inputsize)) >+ return NULL; >+ >+ decoder = PyCObject_AsVoidPtr(pyobj); >+ if(!decoder) { >+ /* TODO: ERROR */ >+ return NULL; >+ } >+ >+ if (!decoder->is_init) { >+ if (!mimic_decoder_init(decoder->codec, input + HEADER_SIZE)) { >+ /* TODO: ERROR */ >+ return NULL; >+ } else { >+ decoder->is_init = 1; >+ } >+ } >+ >+ mimic_get_property(decoder->codec, "buffer_size", &length); >+ mimic_get_property(decoder->codec, "width", &width); >+ mimic_get_property(decoder->codec, "height", &height); >+ >+ output = (BYTE*)malloc(length); >+ if(!output) { >+ PyErr_NoMemory(); >+ return NULL; >+ } >+ >+ if (!mimic_decode_frame(decoder->codec, input + HEADER_SIZE, output)) { >+ /* TODO: ERROR */ >+ free(output); >+ return NULL; >+ } >+ >+ PyObject* val = Py_BuildValue("iis#", width, height, output, length); >+ free(output); >+ return val; >+} >+ >+static PyObject* libmimic_encode(PyObject *self, PyObject *args) { >+ MimicEncoder* encoder; >+ BYTE* output; >+ int length, width, height; >+ >+ /* parameters */ >+ PyObject* pyobj = NULL; >+ BYTE* input; >+ int inputsize; >+ >+ if(!PyArg_ParseTuple(args, "Os#", &pyobj, &input, &inputsize)) >+ return NULL; >+ >+ encoder = PyCObject_AsVoidPtr(pyobj); >+ if(!encoder) { >+ /* TODO: ERROR */ >+ return NULL; >+ } >+ >+ mimic_get_property(encoder->codec, "buffer_size", &length); >+ >+ output = (BYTE*)malloc(length * 3); >+ if(!output) { >+ PyErr_NoMemory(); >+ return NULL; >+ } >+ >+ if (!mimic_encode_frame(encoder->codec, input, output, &length, >+ encoder->num_frames % 10 == 0)) { >+ /* TODO: ERROR */ >+ free(output); >+ return NULL; >+ } >+ >+ encoder->num_frames++; >+ >+ mimic_get_property(encoder->codec, "width", &width); >+ mimic_get_property(encoder->codec, "height", &height); >+ PyObject* val = Py_BuildValue("s#ii", output, length, width, height); >+ free(output); >+ >+ return val; >+} >+ >diff -Nur -x '*.orig' -x '*~' libmimic-1.0.4/python/py_libmimic.h libmimic-1.0.4.new/python/py_libmimic.h >--- libmimic-1.0.4/python/py_libmimic.h 1970-01-01 01:00:00.000000000 +0100 >+++ libmimic-1.0.4.new/python/py_libmimic.h 2009-07-09 19:59:15.000000000 +0200 >@@ -0,0 +1,59 @@ >+/* >+ * This file is part of emesene. >+ * >+ * Emesene is free software; you can redistribute it and/or modify >+ * it under the terms of the GNU General Public License as published by >+ * the Free Software Foundation; either version 2 of the License, or >+ * (at your option) any later version. >+ * >+ * Emesene is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+ * GNU General Public License for more details. >+ * >+ * You should have received a copy of the GNU General Public License >+ * along with this program; if not, write to the Free Software >+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, >+ * MA 02110-1301, USA. >+ */ >+ >+#ifndef _LIBMIMIC_PYLIBMIMIC_H >+#define _LIBMIMIC_PYLIBMIMIC_H >+ >+#include <Python.h> >+#include "mimic.h" >+ >+#define HEADER_SIZE 24 >+ >+typedef unsigned char BYTE; >+typedef unsigned short WORD; >+typedef unsigned int DWORD; >+ >+typedef struct MimicDecoder { >+ MimCtx* codec; >+ unsigned char is_init; >+} MimicDecoder; >+ >+typedef struct MimicEncoder { >+ MimCtx* codec; >+ unsigned int num_frames; >+} MimicEncoder; >+ >+PyMODINIT_FUNC initlibmimic(void); >+ >+static PyObject* libmimic_new_decoder(PyObject* self, PyObject* args); >+static PyObject* libmimic_new_encoder(PyObject* self, PyObject* args); >+ >+static PyObject* libmimic_decode(PyObject* self, PyObject* args); >+static PyObject* libmimic_encode(PyObject* self, PyObject* args); >+ >+/* method table */ >+static PyMethodDef LibmimicMethods[] = { >+ {"new_decoder", libmimic_new_decoder, METH_VARARGS, "New decoder"}, >+ {"new_encoder", libmimic_new_encoder, METH_VARARGS, "New encoder"}, >+ {"decode", libmimic_decode, METH_VARARGS, "Decode a frame"}, >+ {"encode", libmimic_encode, METH_VARARGS, "Encode a frame"}, >+ {NULL, NULL, 0, NULL} /* Sentinel */ >+}; >+ >+#endif /* _LIBMIMIC_PYLIBMIMIC_H */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 211174
:
144496
|
147513
|
161463
|
161474
|
202207
|
220437
|
225889
| 225891 |
225893
|
226899
|
234035
|
256386
|
256410