mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 16:08:51 +00:00
gst/Makefile.am: gst.pbutils also needs to handle miniobjects
Original commit message from CVS: * gst/Makefile.am: gst.pbutils also needs to handle miniobjects * gst/pbutils.defs: Add new InstallPluginsContext boxed definition. All the *_new() functions should be accessible (and not act as constructors). * gst/pbutils.override: Add override for install_plugins_sync(). * gst/pbutilsmodule.c: Add pygst_debug debug category in this module too. * testsuite/test_pbutils.py: Test existence of new API. Needs more tests.
This commit is contained in:
parent
cb1a86176d
commit
f6bd62ac46
7 changed files with 94 additions and 12 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
||||||
|
2008-01-11 Edward Hervey <edward.hervey@collabora.co.uk>
|
||||||
|
|
||||||
|
* gst/Makefile.am:
|
||||||
|
gst.pbutils also needs to handle miniobjects
|
||||||
|
* gst/pbutils.defs:
|
||||||
|
Add new InstallPluginsContext boxed definition.
|
||||||
|
All the *_new() functions should be accessible (and not act as
|
||||||
|
constructors).
|
||||||
|
* gst/pbutils.override:
|
||||||
|
Add override for install_plugins_sync().
|
||||||
|
* gst/pbutilsmodule.c:
|
||||||
|
Add pygst_debug debug category in this module too.
|
||||||
|
* testsuite/test_pbutils.py:
|
||||||
|
Test existence of new API. Needs more tests.
|
||||||
|
|
||||||
2008-01-10 Sebastian Dröge <slomo@circular-chaos.org>
|
2008-01-10 Sebastian Dröge <slomo@circular-chaos.org>
|
||||||
|
|
||||||
* autogen.sh:
|
* autogen.sh:
|
||||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
||||||
Subproject commit 49c2fc5c9bff0e9858e89978bd98164a386de51d
|
Subproject commit bd02d788384b40ff511cac0e32aa77f51a68912d
|
|
@ -100,7 +100,7 @@ pbutils_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS)
|
||||||
pbutils_la_LIBADD = $(common_libadd) $(GST_PLUGINS_BASE_LIBS) -lgstpbutils-0.10
|
pbutils_la_LIBADD = $(common_libadd) $(GST_PLUGINS_BASE_LIBS) -lgstpbutils-0.10
|
||||||
pbutils_la_LDFLAGS = $(common_ldflags) \
|
pbutils_la_LDFLAGS = $(common_ldflags) \
|
||||||
-export-symbols-regex "^(initpbutils|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
|
-export-symbols-regex "^(initpbutils|_PyGObject_API).*" $(GST_PLUGINS_BASE_LIBS)
|
||||||
pbutils_la_SOURCES = pbutilsmodule.c gst-argtypes.c
|
pbutils_la_SOURCES = pbutilsmodule.c gst-argtypes.c pygstminiobject.c
|
||||||
nodist_pbutils_la_SOURCES = pbutils.c
|
nodist_pbutils_la_SOURCES = pbutils.c
|
||||||
PBUTILS_OVERRIDES = pbutils.override
|
PBUTILS_OVERRIDES = pbutils.override
|
||||||
PBUTILS_DEFS = pbutils.defs
|
PBUTILS_DEFS = pbutils.defs
|
||||||
|
|
|
@ -2,6 +2,12 @@
|
||||||
; object definitions ...
|
; object definitions ...
|
||||||
;; Enumerations and flags ...
|
;; Enumerations and flags ...
|
||||||
|
|
||||||
|
(define-boxed InstallPluginsContext
|
||||||
|
(in-module "Gst")
|
||||||
|
(c-name "GstInstallPluginsContext")
|
||||||
|
(gtype-id "GST_TYPE_INSTALL_PLUGINS_CONTEXT")
|
||||||
|
)
|
||||||
|
|
||||||
(define-enum InstallPluginsReturn
|
(define-enum InstallPluginsReturn
|
||||||
(in-module "Gst")
|
(in-module "Gst")
|
||||||
(c-name "GstInstallPluginsReturn")
|
(c-name "GstInstallPluginsReturn")
|
||||||
|
@ -149,7 +155,6 @@
|
||||||
|
|
||||||
(define-function missing_uri_source_message_new
|
(define-function missing_uri_source_message_new
|
||||||
(c-name "gst_missing_uri_source_message_new")
|
(c-name "gst_missing_uri_source_message_new")
|
||||||
(is-constructor-of "GstMissingUriSourceMessage")
|
|
||||||
(return-type "GstMessage*")
|
(return-type "GstMessage*")
|
||||||
(parameters
|
(parameters
|
||||||
'("GstElement*" "element")
|
'("GstElement*" "element")
|
||||||
|
@ -159,7 +164,6 @@
|
||||||
|
|
||||||
(define-function missing_uri_sink_message_new
|
(define-function missing_uri_sink_message_new
|
||||||
(c-name "gst_missing_uri_sink_message_new")
|
(c-name "gst_missing_uri_sink_message_new")
|
||||||
(is-constructor-of "GstMissingUriSinkMessage")
|
|
||||||
(return-type "GstMessage*")
|
(return-type "GstMessage*")
|
||||||
(parameters
|
(parameters
|
||||||
'("GstElement*" "element")
|
'("GstElement*" "element")
|
||||||
|
@ -169,7 +173,6 @@
|
||||||
|
|
||||||
(define-function missing_element_message_new
|
(define-function missing_element_message_new
|
||||||
(c-name "gst_missing_element_message_new")
|
(c-name "gst_missing_element_message_new")
|
||||||
(is-constructor-of "GstMissingElementMessage")
|
|
||||||
(return-type "GstMessage*")
|
(return-type "GstMessage*")
|
||||||
(parameters
|
(parameters
|
||||||
'("GstElement*" "element")
|
'("GstElement*" "element")
|
||||||
|
@ -179,7 +182,6 @@
|
||||||
|
|
||||||
(define-function missing_decoder_message_new
|
(define-function missing_decoder_message_new
|
||||||
(c-name "gst_missing_decoder_message_new")
|
(c-name "gst_missing_decoder_message_new")
|
||||||
(is-constructor-of "GstMissingDecoderMessage")
|
|
||||||
(return-type "GstMessage*")
|
(return-type "GstMessage*")
|
||||||
(parameters
|
(parameters
|
||||||
'("GstElement*" "element")
|
'("GstElement*" "element")
|
||||||
|
@ -189,7 +191,6 @@
|
||||||
|
|
||||||
(define-function missing_encoder_message_new
|
(define-function missing_encoder_message_new
|
||||||
(c-name "gst_missing_encoder_message_new")
|
(c-name "gst_missing_encoder_message_new")
|
||||||
(is-constructor-of "GstMissingEncoderMessage")
|
|
||||||
(return-type "GstMessage*")
|
(return-type "GstMessage*")
|
||||||
(parameters
|
(parameters
|
||||||
'("GstElement*" "element")
|
'("GstElement*" "element")
|
||||||
|
@ -223,7 +224,6 @@
|
||||||
|
|
||||||
(define-function missing_uri_source_installer_detail_new
|
(define-function missing_uri_source_installer_detail_new
|
||||||
(c-name "gst_missing_uri_source_installer_detail_new")
|
(c-name "gst_missing_uri_source_installer_detail_new")
|
||||||
(is-constructor-of "GstMissingUriSourceInstallerDetail")
|
|
||||||
(return-type "gchar*")
|
(return-type "gchar*")
|
||||||
(parameters
|
(parameters
|
||||||
'("const-gchar*" "protocol")
|
'("const-gchar*" "protocol")
|
||||||
|
@ -232,7 +232,6 @@
|
||||||
|
|
||||||
(define-function missing_uri_sink_installer_detail_new
|
(define-function missing_uri_sink_installer_detail_new
|
||||||
(c-name "gst_missing_uri_sink_installer_detail_new")
|
(c-name "gst_missing_uri_sink_installer_detail_new")
|
||||||
(is-constructor-of "GstMissingUriSinkInstallerDetail")
|
|
||||||
(return-type "gchar*")
|
(return-type "gchar*")
|
||||||
(parameters
|
(parameters
|
||||||
'("const-gchar*" "protocol")
|
'("const-gchar*" "protocol")
|
||||||
|
@ -241,7 +240,6 @@
|
||||||
|
|
||||||
(define-function missing_element_installer_detail_new
|
(define-function missing_element_installer_detail_new
|
||||||
(c-name "gst_missing_element_installer_detail_new")
|
(c-name "gst_missing_element_installer_detail_new")
|
||||||
(is-constructor-of "GstMissingElementInstallerDetail")
|
|
||||||
(return-type "gchar*")
|
(return-type "gchar*")
|
||||||
(parameters
|
(parameters
|
||||||
'("const-gchar*" "factory_name")
|
'("const-gchar*" "factory_name")
|
||||||
|
@ -250,7 +248,6 @@
|
||||||
|
|
||||||
(define-function missing_decoder_installer_detail_new
|
(define-function missing_decoder_installer_detail_new
|
||||||
(c-name "gst_missing_decoder_installer_detail_new")
|
(c-name "gst_missing_decoder_installer_detail_new")
|
||||||
(is-constructor-of "GstMissingDecoderInstallerDetail")
|
|
||||||
(return-type "gchar*")
|
(return-type "gchar*")
|
||||||
(parameters
|
(parameters
|
||||||
'("const-GstCaps*" "decode_caps")
|
'("const-GstCaps*" "decode_caps")
|
||||||
|
@ -259,7 +256,6 @@
|
||||||
|
|
||||||
(define-function missing_encoder_installer_detail_new
|
(define-function missing_encoder_installer_detail_new
|
||||||
(c-name "gst_missing_encoder_installer_detail_new")
|
(c-name "gst_missing_encoder_installer_detail_new")
|
||||||
(is-constructor-of "GstMissingEncoderInstallerDetail")
|
|
||||||
(return-type "gchar*")
|
(return-type "gchar*")
|
||||||
(parameters
|
(parameters
|
||||||
'("const-GstCaps*" "encode_caps")
|
'("const-GstCaps*" "encode_caps")
|
||||||
|
|
|
@ -28,6 +28,9 @@ headers
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
#include <gst/pbutils/pbutils.h>
|
#include <gst/pbutils/pbutils.h>
|
||||||
|
#include "pygstminiobject.h"
|
||||||
|
GST_DEBUG_CATEGORY_EXTERN (pygst_debug);
|
||||||
|
#define GST_CAT_DEFAULT pygst_debug
|
||||||
|
|
||||||
%%
|
%%
|
||||||
modulename gst.pbutils
|
modulename gst.pbutils
|
||||||
|
@ -44,5 +47,66 @@ include
|
||||||
ignore-glob
|
ignore-glob
|
||||||
_*
|
_*
|
||||||
*init
|
*init
|
||||||
|
*_free
|
||||||
*_get_type
|
*_get_type
|
||||||
%%
|
%%
|
||||||
|
override gst_install_plugins_sync kwargs
|
||||||
|
static PyObject *
|
||||||
|
_wrap_gst_install_plugins_sync(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||||
|
{
|
||||||
|
static char *kwlist[] = { "details", "context", NULL };
|
||||||
|
PyObject *py_ctx;
|
||||||
|
GstInstallPluginsContext *ctx;
|
||||||
|
GstInstallPluginsReturn ret;
|
||||||
|
gchar **details;
|
||||||
|
gint len;
|
||||||
|
PyObject *py_ret;
|
||||||
|
PyObject *py_details;
|
||||||
|
Py_ssize_t i;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:install_plugins_async",
|
||||||
|
kwlist, &py_details, &py_ctx))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!pyg_boxed_check(py_ctx, GST_TYPE_INSTALL_PLUGINS_CONTEXT)) {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "Argument 2 must be a gst.pbutils.InstallPluginsContext");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
len = PySequence_Size(py_details);
|
||||||
|
if ((!PySequence_Check(py_details)) || (len < 1)) {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "Details need to be a non-empty list or tuple of strings");
|
||||||
|
Py_DECREF(py_details);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
details = g_new0(gchar*, len+1);
|
||||||
|
|
||||||
|
/* Check all items in py_details are strings */
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
PyObject *py_str = PySequence_GetItem(py_details, i);
|
||||||
|
gchar *str;
|
||||||
|
|
||||||
|
if (!PyString_Check(py_str)) {
|
||||||
|
PyErr_SetString(PyExc_TypeError, "Details need to be a non-empty list or tuple of strings");
|
||||||
|
Py_DECREF(py_str);
|
||||||
|
Py_DECREF(py_details);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (!(str = PyString_AsString(py_str))) {
|
||||||
|
Py_DECREF(py_str);
|
||||||
|
Py_DECREF(py_details);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
details[i] = g_strdup(str);
|
||||||
|
Py_DECREF(py_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx = (GstInstallPluginsContext *) pyg_boxed_get(py_ctx, GstInstallPluginsContext);
|
||||||
|
ret = gst_install_plugins_sync(details, ctx);
|
||||||
|
|
||||||
|
g_strfreev(details);
|
||||||
|
|
||||||
|
py_ret = pyg_enum_from_gtype(GST_TYPE_INSTALL_PLUGINS_RETURN, ret);
|
||||||
|
return py_ret;
|
||||||
|
}
|
||||||
|
|
|
@ -32,6 +32,8 @@ void pypbutils_add_constants(PyObject *module, const gchar *strip_prefix);
|
||||||
|
|
||||||
extern PyMethodDef pypbutils_functions[];
|
extern PyMethodDef pypbutils_functions[];
|
||||||
|
|
||||||
|
GST_DEBUG_CATEGORY (pygst_debug); /* for python code */
|
||||||
|
|
||||||
DL_EXPORT(void)
|
DL_EXPORT(void)
|
||||||
initpbutils (void)
|
initpbutils (void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,6 +55,11 @@ class Descriptions(TestCase):
|
||||||
def testAddCodecDescription(self):
|
def testAddCodecDescription(self):
|
||||||
assert hasattr(gst.pbutils, 'add_codec_description_to_tag_list')
|
assert hasattr(gst.pbutils, 'add_codec_description_to_tag_list')
|
||||||
|
|
||||||
|
class InstallPlugins(TestCase):
|
||||||
|
|
||||||
|
def testPluginsContext(self):
|
||||||
|
assert hasattr(gst.pbutils, "InstallPluginsContext")
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
# Add tests for the other parts of pbutils:
|
# Add tests for the other parts of pbutils:
|
||||||
# * missing-plugins
|
# * missing-plugins
|
||||||
|
|
Loading…
Reference in a new issue