bindings now wrap the gstreamer extra libs (adapter, controller,...)
authorEdward Hervey <bilboed@bilboed.com>
Wed, 3 Aug 2005 16:54:57 +0000 (16:54 +0000)
committerEdward Hervey <bilboed@bilboed.com>
Wed, 3 Aug 2005 16:54:57 +0000 (16:54 +0000)
Original commit message from CVS:
* configure.ac:
* gst/Makefile.am:
* gst/gstlibs.override:
* gst/gst.defs:
* gst/libs.defs:
* gst/gst.override:
* gst/gstlibs.override:
bindings now wrap the gstreamer extra libs (adapter, controller,...)

ChangeLog
configure.ac
gst/Makefile.am
gst/gst.defs
gst/gst.override
gst/gstlibs.override [new file with mode: 0644]
gst/libs.defs [new file with mode: 0644]

index d0f3676..15a206a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-08-03  Edward Hervey  <edward@fluendo.com>
+
+       * configure.ac:
+       * gst/Makefile.am:
+       * gst/gstlibs.override:
+       * gst/gst.defs:
+       * gst/libs.defs:
+       * gst/gst.override:
+       * gst/gstlibs.override:
+       bindings now wrap the gstreamer extra libs (adapter, controller,...)
+
 2005-08-03  Andy Wingo  <wingo@pobox.com>
 
        * gst/gstmessage.override (_wrap_gst_message_parse_error): Always
index 1d5f894..6a53bb5 100644 (file)
@@ -58,6 +58,29 @@ PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= $GST_REQ)
 AC_SUBST(GST_CFLAGS)
 AC_SUBST(GST_LIBS)
 
+dnl check for gstreamer-base; uninstalled is selected preferentially
+PKG_CHECK_MODULES(GST_BASE, gstreamer-base-$GST_MAJORMINOR >= $GST_REQ,
+  HAVE_GST_BASE="yes", HAVE_GST_BASE="no")
+
+if test "x$HAVE_GST_BASE" = "xno"; then
+  AC_MSG_ERROR(no GStreamer Base Libs found)
+fi
+
+AC_SUBST(GST_BASE_LIBS)
+AC_SUBST(GST_BASE_CFLAGS)
+
+dnl check for gstreamer-controller
+PKG_CHECK_MODULES(GST_CONTROLLER, gstreamer-controller-$GST_MAJORMINOR >= $GST_REQ,
+  HAVE_GST_CONTROLLER="yes", HAVE_GST_CONTROLLER="no")
+
+if test "x$HAVE_GST_CONTROLLER" = "xno"; then
+  AC_MSG_ERROR(no GStreamer Controller Libs found)
+fi
+
+AC_SUBST(GST_CONTROLLER_LIBS)
+AC_SUBST(GST_CONTROLLER_CFLAGS)
+
+
 dnl check for pygtk
 PKG_CHECK_MODULES(PYGTK, pygtk-2.0 >= $PYGTK_REQ)
 AC_SUBST(PYGTK_CFLAGS)
index a26cb38..7b05818 100644 (file)
@@ -18,7 +18,8 @@ interface_lib =
 endif
 
 defs_DATA = gst-types.defs \
-       gst-extrafuncs.defs
+       gst-extrafuncs.defs \
+       libs.defs
 defsdir = $(pkgdatadir)/2.0/defs
 
 noinst_HEADERS = common.h pygstvalue.h pygstminiobject.h
@@ -26,12 +27,12 @@ noinst_HEADERS = common.h pygstvalue.h pygstminiobject.h
 INCLUDES = $(PYTHON_INCLUDES)
 EXTRA_DIST = $(defs_DATA) common.h arg-types.py
 PYGTK_DEFSDIR = @PYGTK_DEFSDIR@
-GEN_FILES = arg-types.py gst-types.defs
+GEN_FILES = arg-types.py gst-types.defs libs.defs
 
 # GStreamer bindings
 _gst_la_CFLAGS = $(common_cflags)
 _gst_la_LIBADD = $(common_libadd)
-_gst_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gst
+_gst_la_LDFLAGS = $(common_ldflags) -export-symbols-regex init_gst $(GST_BASE_LIBS) $(GST_CONTROLLER_LIBS)
 _gst_la_SOURCES = gst-argtypes.c gstmodule.c pygstvalue.c pygstminiobject.c
 nodist__gst_la_SOURCES = gst.c
 GST_OVERRIDES =                \
@@ -45,9 +46,10 @@ GST_OVERRIDES =              \
        gstmessage.override     \
        gstquery.override       \
        gstpad.override         \
-       gststructure.override
+       gststructure.override   \
+       gstlibs.override
 
-GST_DEFS = gst.defs gst-types.defs gst-extrafuncs.defs
+GST_DEFS = gst.defs gst-types.defs gst-extrafuncs.defs libs.defs
 CLEANFILES = gst.c
 EXTRA_DIST += $(GST_DEFS) $(GST_OVERRIDES)
 gst.c: $(GST_DEFS) $(GST_OVERRIDES) $(GEN_FILES)
index e95f101..30642a6 100644 (file)
@@ -2,6 +2,7 @@
 
 (include "gst-extrafuncs.defs")
 (include "gst-types.defs")
+(include "libs.defs")
 
 ;; From ../gstreamer/gst/gst.h
 
index 2c1c93f..57ee103 100644 (file)
@@ -39,6 +39,10 @@ headers
 #include <gst/gsttag.h>
 #include <gst/gsttaginterface.h>
 
+#include <gst/controller/gst-controller.h>
+#include <gst/dataprotocol/dataprotocol.h>
+#include <gst/base/gstadapter.h>
+
 #include "pygstvalue.h"
 #include "pygstminiobject.h"
 
@@ -225,6 +229,7 @@ include
   gstquery.override
   gstpad.override
   gststructure.override
+  gstlibs.override
 %%
 init
 {
diff --git a/gst/gstlibs.override b/gst/gstlibs.override
new file mode 100644 (file)
index 0000000..798ae58
--- /dev/null
@@ -0,0 +1,68 @@
+/* -*- Mode: C; ; c-file-style: "python" -*- */
+/* gst-python
+ * Copyright (C) 2005 Edward Hervey
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ * 
+ * Author: Johan Dahlin <johan@gnome.org>
+ */
+%%
+override gst_controller_set args
+static PyObject *
+_wrap_gst_controller_set (PyGObject *self, PyObject *args)
+{
+  GstController        *controller = (GstController *) self->obj;
+  gchar                *param_name;
+  GstClockTime timestamp;
+  GValue       value = { 0, };
+  PyObject     *pvalue;
+  GType                type = 0;
+  GList                *tmp;
+  gboolean     res;
+
+  if (!PyArg_ParseTuple(args, "sLO:GstController.set",
+                       &param_name, &timestamp, &pvalue))
+    return NULL;
+
+  /* We need to find the GType to convert to */
+  for (tmp = controller->properties; tmp; tmp = g_list_next (tmp)) {
+    GstControlledProperty      *prop = (GstControlledProperty *) tmp->data;
+    if (!strcmp (prop->name, param_name))
+      type = prop->type;
+  }
+
+  if (!type) {
+    PyErr_SetString (PyExc_TypeError,
+                    "The controller doesn't handle the given property");
+    return NULL;
+  }
+
+  g_value_init (&value, type);
+
+  if (pyg_value_from_pyobject (&value, pvalue)) {
+    PyErr_SetString (PyExc_TypeError,
+                    "Couldn't convert the given value to the good type");
+    return NULL;
+  }
+
+  res = gst_controller_set (controller, param_name, timestamp, &value);
+  if (res) {
+    Py_INCREF (Py_True);
+    return Py_True;
+  }
+  Py_INCREF (Py_False);
+  return Py_False;
+}
diff --git a/gst/libs.defs b/gst/libs.defs
new file mode 100644 (file)
index 0000000..72a85ac
--- /dev/null
@@ -0,0 +1,430 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object Adapter
+  (in-module "Gst")
+  (parent "GObject")
+  (c-name "GstAdapter")
+  (gtype-id "GST_TYPE_ADAPTER")
+)
+
+(define-object Controller
+  (in-module "Gst")
+  (parent "GObject")
+  (c-name "GstController")
+  (gtype-id "GST_TYPE_CONTROLLER")
+)
+
+;; Enumerations and flags ...
+
+(define-enum InterpolateMode
+  (in-module "Gst")
+  (c-name "GstInterpolateMode")
+  (values
+    '("none" "GST_INTERPOLATE_NONE")
+    '("trigger" "GST_INTERPOLATE_TRIGGER")
+    '("linear" "GST_INTERPOLATE_LINEAR")
+    '("quadratic" "GST_INTERPOLATE_QUADRATIC")
+    '("cubic" "GST_INTERPOLATE_CUBIC")
+    '("user" "GST_INTERPOLATE_USER")
+  )
+)
+
+(define-flags DPHeaderFlag
+  (in-module "Gst")
+  (c-name "GstDPHeaderFlag")
+  (values
+    '("none" "GST_DP_HEADER_FLAG_NONE")
+    '("crc-header" "GST_DP_HEADER_FLAG_CRC_HEADER")
+    '("crc-payload" "GST_DP_HEADER_FLAG_CRC_PAYLOAD")
+    '("crc" "GST_DP_HEADER_FLAG_CRC")
+  )
+)
+
+(define-enum DPPayloadType
+  (in-module "Gst")
+  (c-name "GstDPPayloadType")
+  (values
+    '("none" "GST_DP_PAYLOAD_NONE")
+    '("buffer" "GST_DP_PAYLOAD_BUFFER")
+    '("caps" "GST_DP_PAYLOAD_CAPS")
+    '("event-none" "GST_DP_PAYLOAD_EVENT_NONE")
+  )
+)
+
+
+;; From ../gstreamer/libs/gst/bytestream/adapter.h
+
+(define-function gst_adapter_new
+  (c-name "gst_adapter_new")
+  (is-constructor-of "GstAdapter")
+  (return-type "GstAdapter*")
+)
+
+(define-method clear
+  (of-object "GstAdapter")
+  (c-name "gst_adapter_clear")
+  (return-type "none")
+)
+
+(define-method push
+  (of-object "GstAdapter")
+  (c-name "gst_adapter_push")
+  (return-type "none")
+  (parameters
+    '("GstBuffer*" "buf")
+  )
+)
+
+(define-method peek
+  (of-object "GstAdapter")
+  (c-name "gst_adapter_peek")
+  (return-type "const-guint8*")
+  (parameters
+    '("guint" "size")
+  )
+)
+
+(define-method flush
+  (of-object "GstAdapter")
+  (c-name "gst_adapter_flush")
+  (return-type "none")
+  (parameters
+    '("guint" "flush")
+  )
+)
+
+(define-method available
+  (of-object "GstAdapter")
+  (c-name "gst_adapter_available")
+  (return-type "guint")
+)
+
+(define-method available_fast
+  (of-object "GstAdapter")
+  (c-name "gst_adapter_available_fast")
+  (return-type "guint")
+)
+
+
+
+;; From ../gstreamer/libs/gst/controller/gst-controller.h
+
+(define-function gst_controller_get_type
+  (c-name "gst_controller_get_type")
+  (return-type "GType")
+)
+
+(define-function gst_controller_new_valist
+  (c-name "gst_controller_new_valist")
+  (return-type "GstController*")
+  (parameters
+    '("GObject*" "object")
+    '("va_list" "var_args")
+  )
+)
+
+(define-function gst_controller_new
+  (c-name "gst_controller_new")
+  (is-constructor-of "GstController")
+  (return-type "GstController*")
+  (parameters
+    '("GObject*" "object")
+  )
+  (varargs #t)
+)
+
+(define-method remove_properties_valist
+  (of-object "GstController")
+  (c-name "gst_controller_remove_properties_valist")
+  (return-type "gboolean")
+  (parameters
+    '("va_list" "var_args")
+  )
+)
+
+(define-method remove_properties
+  (of-object "GstController")
+  (c-name "gst_controller_remove_properties")
+  (return-type "gboolean")
+  (parameters
+  )
+  (varargs #t)
+)
+
+(define-method set
+  (of-object "GstController")
+  (c-name "gst_controller_set")
+  (return-type "gboolean")
+  (parameters
+    '("gchar*" "property_name")
+    '("GstClockTime" "timestamp")
+    '("GValue*" "value")
+  )
+)
+
+(define-method set_from_list
+  (of-object "GstController")
+  (c-name "gst_controller_set_from_list")
+  (return-type "gboolean")
+  (parameters
+    '("gchar*" "property_name")
+    '("GSList*" "timedvalues")
+  )
+)
+
+(define-method unset
+  (of-object "GstController")
+  (c-name "gst_controller_unset")
+  (return-type "gboolean")
+  (parameters
+    '("gchar*" "property_name")
+    '("GstClockTime" "timestamp")
+  )
+)
+
+(define-method get
+  (of-object "GstController")
+  (c-name "gst_controller_get")
+  (return-type "GValue*")
+  (parameters
+    '("gchar*" "property_name")
+    '("GstClockTime" "timestamp")
+  )
+)
+
+(define-method get_all
+  (of-object "GstController")
+  (c-name "gst_controller_get_all")
+  (return-type "const-GList*")
+  (parameters
+    '("gchar*" "property_name")
+  )
+)
+
+(define-method sink_values
+  (of-object "GstController")
+  (c-name "gst_controller_sink_values")
+  (return-type "gboolean")
+  (parameters
+    '("GstClockTime" "timestamp")
+  )
+)
+
+(define-method get_value_arrays
+  (of-object "GstController")
+  (c-name "gst_controller_get_value_arrays")
+  (return-type "gboolean")
+  (parameters
+    '("GstClockTime" "timestamp")
+    '("GSList*" "value_arrays")
+  )
+)
+
+(define-method get_value_array
+  (of-object "GstController")
+  (c-name "gst_controller_get_value_array")
+  (return-type "gboolean")
+  (parameters
+    '("GstClockTime" "timestamp")
+    '("GstValueArray*" "value_array")
+  )
+)
+
+(define-method set_interpolation_mode
+  (of-object "GstController")
+  (c-name "gst_controller_set_interpolation_mode")
+  (return-type "gboolean")
+  (parameters
+    '("gchar*" "property_name")
+    '("GstInterpolateMode" "mode")
+  )
+)
+
+(define-method control_properties
+  (of-object "GObject")
+  (c-name "g_object_control_properties")
+  (return-type "GstController*")
+  (parameters
+  )
+  (varargs #t)
+)
+
+(define-method uncontrol_properties
+  (of-object "GObject")
+  (c-name "g_object_uncontrol_properties")
+  (return-type "gboolean")
+  (parameters
+  )
+  (varargs #t)
+)
+
+(define-method get_controller
+  (of-object "GObject")
+  (c-name "g_object_get_controller")
+  (return-type "GstController*")
+)
+
+(define-method set_controller
+  (of-object "GObject")
+  (c-name "g_object_set_controller")
+  (return-type "gboolean")
+  (parameters
+    '("GstController*" "controller")
+  )
+)
+
+(define-method sink_values
+  (of-object "GObject")
+  (c-name "g_object_sink_values")
+  (return-type "gboolean")
+  (parameters
+    '("GstClockTime" "timestamp")
+  )
+)
+
+(define-method get_value_arrays
+  (of-object "GObject")
+  (c-name "g_object_get_value_arrays")
+  (return-type "gboolean")
+  (parameters
+    '("GstClockTime" "timestamp")
+    '("GSList*" "value_arrays")
+  )
+)
+
+(define-method get_value_array
+  (of-object "GObject")
+  (c-name "g_object_get_value_array")
+  (return-type "gboolean")
+  (parameters
+    '("GstClockTime" "timestamp")
+    '("GstValueArray*" "value_array")
+  )
+)
+
+(define-function gst_controller_init
+  (c-name "gst_controller_init")
+  (return-type "gboolean")
+  (parameters
+    '("int*" "argc")
+    '("char***" "argv")
+  )
+)
+
+
+
+;; From ../gstreamer/libs/gst/dataprotocol/dataprotocol.h
+
+(define-function gst_dp_init
+  (c-name "gst_dp_init")
+  (return-type "none")
+)
+
+(define-function gst_dp_header_payload_length
+  (c-name "gst_dp_header_payload_length")
+  (return-type "guint32")
+  (parameters
+    '("const-guint8*" "header")
+  )
+)
+
+(define-function gst_dp_header_payload_type
+  (c-name "gst_dp_header_payload_type")
+  (return-type "GstDPPayloadType")
+  (parameters
+    '("const-guint8*" "header")
+  )
+)
+
+(define-function gst_dp_header_from_buffer
+  (c-name "gst_dp_header_from_buffer")
+  (return-type "gboolean")
+  (parameters
+    '("const-GstBuffer*" "buffer")
+    '("GstDPHeaderFlag" "flags")
+    '("guint*" "length")
+    '("guint8**" "header")
+  )
+)
+
+(define-function gst_dp_packet_from_caps
+  (c-name "gst_dp_packet_from_caps")
+  (return-type "gboolean")
+  (parameters
+    '("const-GstCaps*" "caps")
+    '("GstDPHeaderFlag" "flags")
+    '("guint*" "length")
+    '("guint8**" "header")
+    '("guint8**" "payload")
+  )
+)
+
+(define-function gst_dp_packet_from_event
+  (c-name "gst_dp_packet_from_event")
+  (return-type "gboolean")
+  (parameters
+    '("const-GstEvent*" "event")
+    '("GstDPHeaderFlag" "flags")
+    '("guint*" "length")
+    '("guint8**" "header")
+    '("guint8**" "payload")
+  )
+)
+
+(define-function gst_dp_buffer_from_header
+  (c-name "gst_dp_buffer_from_header")
+  (return-type "GstBuffer*")
+  (parameters
+    '("guint" "header_length")
+    '("const-guint8*" "header")
+  )
+)
+
+(define-function gst_dp_caps_from_packet
+  (c-name "gst_dp_caps_from_packet")
+  (return-type "GstCaps*")
+  (parameters
+    '("guint" "header_length")
+    '("const-guint8*" "header")
+    '("const-guint8*" "payload")
+  )
+)
+
+(define-function gst_dp_event_from_packet
+  (c-name "gst_dp_event_from_packet")
+  (return-type "GstEvent*")
+  (parameters
+    '("guint" "header_length")
+    '("const-guint8*" "header")
+    '("const-guint8*" "payload")
+  )
+)
+
+(define-function gst_dp_validate_header
+  (c-name "gst_dp_validate_header")
+  (return-type "gboolean")
+  (parameters
+    '("guint" "header_length")
+    '("const-guint8*" "header")
+  )
+)
+
+(define-function gst_dp_validate_payload
+  (c-name "gst_dp_validate_payload")
+  (return-type "gboolean")
+  (parameters
+    '("guint" "header_length")
+    '("const-guint8*" "header")
+    '("const-guint8*" "payload")
+  )
+)
+
+(define-function gst_dp_validate_packet
+  (c-name "gst_dp_validate_packet")
+  (return-type "gboolean")
+  (parameters
+    '("guint" "header_length")
+    '("const-guint8*" "header")
+    '("const-guint8*" "payload")
+  )
+)