2004-03-16 Johan Dahlin <johan@gnome.org>
+ * gst/Makefile.am: Move the gstplay bindings over here
+
+ * Makefile.am, configure.ac: Remove examples/ and put them in
+ EXTRA_DIST here
+
* gst/gst.defs (element_make_from_uri): Remove const from enum
here, should be fixed upstream too.
SUBDIRS_DOCS =
endif
-#PLAYDIR = gstplay
-PLAYDIR =
-
-UNCONDDIRS = gst pkgconfig examples testsuite
+UNCONDDIRS = gst pkgconfig testsuite
SUBDIRS = \
$(UNCONDDIRS) \
- $(PLAYDIR) \
$(SUBDIRS_DOCS)
DIST_SUBDIRS = $(UNCONDDIRS) docs $(PLAYDIR)
EXTRA_DIST = \
- gst-python.spec.in gst-python.spec README-docs
+ gst-python.spec.in \
+ gst-python.spec \
+ README-docs
+ examples/gst/bps.py \
+ examples/gst/cp.py \
+ examples/gst/dvdplay.py \
+ examples/gst/f2f.py \
+ examples/gst/identity.py \
+ examples/gst/ilat.py \
+ examples/gst/lat.py \
+ examples/gst/rot13.py \
+ examples/gst/vorbisplay.py \
+ examples/gstplay/player.py
snap:
$(MAKE) dist distdir=$(PACKAGE)-`date +"%Y%m%d"`
-Subproject commit 5557aa074c4836b2cc9eac0e1519323df1cb876f
+Subproject commit 581b12ce0812d391c32f212b9887be333bcdb420
#dnl check to make sure we can find gtk
#AM_PATH_GTK_2_0(gtk_required_version,,[AC_MSG_ERROR(maybe you want the gtk-gnome-1-2 branch?)],$extra_mods)
-AC_MSG_CHECKING(for GStreamer include dir)
-GST_INCLUDEDIR=`$PKG_CONFIG --variable=includedir gstreamer-$GST_MAJORMINOR`
-AC_MSG_RESULT($GST_INCLUDEDIR)
-if test "x$GST_INCLUDEDIR" = "x"; then
- AC_MSG_ERROR(no GStreamer include dir found)
-fi
-AC_SUBST(GST_INCLUDEDIR)
-
AC_MSG_CHECKING(for GStreamer interfaces include dir)
PKG_CHECK_MODULES(GST_INTERFACES, gstreamer-interfaces-$GST_MAJORMINOR)
-GST_INTERFACES_INCLUDEDIR=`$PKG_CONFIG --variable=includedir gstreamer-interfaces-$GST_MAJORMINOR`
-AC_MSG_RESULT($GST_INTERFACES_INCLUDEDIR)
-if test "x$GST_INTERFACES_INCLUDEDIR" = "x"; then
- AC_MSG_ERROR(no GStreamer interfaces include dir found)
-fi
-AC_SUBST(GST_INTERFACES_INCLUDEDIR)
+AC_SUBST(GST_INTERFACES_CFLAGS)
+AC_SUBST(GST_INTERFACES_INCLUDES)
AC_MSG_CHECKING(for GStreamer play include dir)
PKG_CHECK_MODULES(GST_PLAY, gstreamer-play-$GST_MAJORMINOR)
-GST_PLAY_INCLUDEDIR=`$PKG_CONFIG --variable=includedir gstreamer-play-$GST_MAJORMINOR`
-AC_MSG_RESULT($GST_PLAY_INCLUDEDIR)
-if test "x$GST_PLAY_INCLUDEDIR" = "x"; then
- AC_MSG_ERROR(no GStreamer play include dir found)
-fi
-AC_SUBST(GST_PLAY_INCLUDEDIR)
+AC_SUBST(GST_PLAY_CFLAGS)
+AC_SUBST(GST_PLAY_INCLUDES)
AC_CHECK_PROG(HAVE_XMLTO, xmlto, true, false)
AC_CHECK_PROG(HAVE_XMLCATALOG, xmlcatalog, true, false)
AC_OUTPUT([
Makefile
gst/Makefile
- gstplay/Makefile
pkgconfig/Makefile
pkgconfig/gst-python.pc
pkgconfig/gst-python-uninstalled.pc
- examples/Makefile
- examples/gst/Makefile
docs/Makefile
docs/gst-python.ent
testsuite/Makefile
gst.c
gen-*.c
interfaces.c
+play.c
defs_DATA =
defsdir = $(pkgdatadir)/2.0/defs
-EXTRA_DIST = $(defs_DATA)
+EXTRA_DIST = $(defs_DATA) arg-types.py
pkgpythondir = $(pythondir)/gst
pkgpyexecdir = $(pyexecdir)/gst
_gst_la_SOURCES = gst-argtypes.c gstmodule.c
nodist__gst_la_SOURCES = gst.c
CLEANFILES = gst.c
-EXTRA_DIST += $(GST_OVERRIDES) arg-types.py
+EXTRA_DIST += $(GST_OVERRIDES)
defs_DATA += $(GST_DEFS)
gst.c: $(GST_DEFS) $(GST_OVERRIDES)
+# gst-play bindings
+
+# FIXEME: configure.ac
+PLAY_OVERRIDES = play.override
+PLAY_DEFS = play.defs
+
+#if BUILD_PLAY
+pygstexec_LTLIBRARIES += play.la
+#endif
+play_la_CFLAGS = $(GST_CFLAGS) $(GST_PLAY_CFLAGS) -fno-strict-aliasing
+play_la_LIBADD = $(GST_LIBS) $(GST_PLAY_LIBS)
+play_la_LDFLAGS = $(common_ldflags) -export-symbols-regex initplay
+play_la_SOURCES = playmodule.c
+nodist_play_la_SOURCES = play.c
+CLEANFILES += play.c
+EXTRA_DIST += $(PLAY_OVERRIDES)
+defs_DATA += $(PLAY_DEFS)
+play.c: $(PLAY_DEFS) $(PLAY_OVERRIDES)
+
# GStreamer interfaces bindings
INTERFACES_OVERRIDES = interfaces.override xoverlay.override
INTERFACES_DEFS = interfaces.defs xoverlay.defs xwindowlistener.defs
-GST_INTERFACES_INCLUDES=
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/colorbalance/colorbalance.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/colorbalance/colorbalancechannel.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/mixer/mixer.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/mixer/mixertrack.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/navigation/navigation.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/propertyprobe/propertyprobe.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/tuner/tuner.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/tuner/tunerchannel.h
-GST_INTERFACES_INCLUDES += $(GST_INTERFACES_INCLUDEDIR)/gst/tuner/tunernorm.h
-
-# FIXME: configure.ac
-#if USE_X
-GST_INTERFACES_INCLUDES+=$(GST_INTERFACES_INCLUDEDIR)/gst/xoverlay/xoverlay.h
-GST_INTERFACES_INCLUDES+=$(GST_INTERFACES_INCLUDEDIR)/gst/xwindowlistener/xwindowlistener.h
-#endif
-
# FIXEME: configure.ac
#if BUILD_INTERFACES
pygstexec_LTLIBRARIES += interfaces.la
interfaces_la_SOURCES = interfacesmodule.c
nodist_interfaces_la_SOURCES = interfaces.c
CLEANFILES += interfaces.c
-EXTRA_DIST += $(INTERFACES_OVERRIDES) arg-types.py
+EXTRA_DIST += $(INTERFACES_OVERRIDES)
defs_DATA += $(INTERFACES_DEFS)
interfaces.c: $(INTERFACES_DEFS) $(INTERFACES_OVERRIDES)
#include <gst/xwindowlistener/xwindowlistener.h>
%%
-modulename gstinterfaces
+modulename gst.interfaces
%%
import gobject.GObject as PyGObject_Type
import gst.Object as PyGstObject_Type
%%
%%
override gst_tuner_make kwargs
-
static PyObject *
_wrap_gst_tuner_make(PyObject *self, PyObject *args, PyObject *kwargs)
{
Py_INCREF(Py_None);
return Py_None;
}
-%%
-override gst_structure_new kwargs
-
-static int
-_wrap_gst_structure_new(PyGBoxed *self, PyObject *args, PyObject *kwargs)
-{
- static char *kwlist[] = { "name", NULL };
- char *name;
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:GstStructure.__init__", kwlist, &name))
- return -1;
- self->gtype = GST_TYPE_STRUCTURE;
- self->free_on_dealloc = FALSE;
- self->boxed = gst_structure_new(name, NULL);
-
- if (!self->boxed) {
- PyErr_SetString(PyExc_RuntimeError, "could not create GstStructure object");
- return -1;
- }
- self->free_on_dealloc = TRUE;
- return 0;
-}
-%%
-override gst_structure_set_value kwargs
-
-static PyObject *
-_wrap_gst_structure_set_value(PyObject *self, PyObject *args, PyObject *kwargs)
-{
- static char *kwlist[] = { "field", "value", NULL };
- char *field;
- PyObject *py_value = NULL;
- GValue value = { 0 };
-
- 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;
- }
- gst_structure_set_value(pyg_boxed_get(self, GstStructure), field, &value);
-
- Py_INCREF(Py_None);
- return Py_None;
-}
--- /dev/null
+;; -*- scheme -*-
+; object definitions ...
+(define-object Play
+ (in-module "Gst")
+ (parent "GstPipeline")
+ (c-name "GstPlay")
+ (gtype-id "GST_TYPE_PLAY")
+)
+
+;; Enumerations and flags ...
+
+(define-enum PlaySinkType
+ (in-module "Gst")
+ (c-name "GstPlaySinkType")
+ (gtype-id "GST_TYPE_PLAY_SINK_TYPE")
+ (values
+ '("audio" "GST_PLAY_SINK_TYPE_AUDIO")
+ '("video" "GST_PLAY_SINK_TYPE_VIDEO")
+ '("any" "GST_PLAY_SINK_TYPE_ANY")
+ )
+)
+
+
+;; From /opt/gnome/include/gstreamer-0.7/gst/play/play.h
+
+(define-function gst_play_get_type
+ (c-name "gst_play_get_type")
+ (return-type "GType")
+)
+
+(define-function gst_play_new
+ (c-name "gst_play_new")
+ (is-constructor-of "GstPlay")
+ (return-type "GstPlay*")
+ (parameters
+ '("GError**" "error")
+ )
+)
+
+(define-method set_data_src
+ (of-object "GstPlay")
+ (c-name "gst_play_set_data_src")
+ (return-type "gboolean")
+ (parameters
+ '("GstElement*" "data_src")
+ )
+)
+
+(define-method set_video_sink
+ (of-object "GstPlay")
+ (c-name "gst_play_set_video_sink")
+ (return-type "gboolean")
+ (parameters
+ '("GstElement*" "video_sink")
+ )
+)
+
+(define-method set_audio_sink
+ (of-object "GstPlay")
+ (c-name "gst_play_set_audio_sink")
+ (return-type "gboolean")
+ (parameters
+ '("GstElement*" "audio_sink")
+ )
+)
+
+(define-method set_visualization
+ (of-object "GstPlay")
+ (c-name "gst_play_set_visualization")
+ (return-type "gboolean")
+ (parameters
+ '("GstElement*" "element")
+ )
+)
+
+(define-method connect_visualization
+ (of-object "GstPlay")
+ (c-name "gst_play_connect_visualization")
+ (return-type "gboolean")
+ (parameters
+ '("gboolean" "connect")
+ )
+)
+
+(define-method set_location
+ (of-object "GstPlay")
+ (c-name "gst_play_set_location")
+ (return-type "gboolean")
+ (parameters
+ '("const-char*" "location")
+ )
+)
+
+(define-method get_location
+ (of-object "GstPlay")
+ (c-name "gst_play_get_location")
+ (return-type "char*")
+)
+
+(define-method seek_to_time
+ (of-object "GstPlay")
+ (c-name "gst_play_seek_to_time")
+ (return-type "gboolean")
+ (parameters
+ '("gint64" "time_nanos")
+ )
+)
+
+(define-method get_sink_element
+ (of-object "GstPlay")
+ (c-name "gst_play_get_sink_element")
+ (return-type "GstElement*")
+ (parameters
+ '("GstElement*" "element")
+ '("GstPlaySinkType" "sink_type")
+ )
+)
+
+
+;;
+;; interface definitions
+;;
--- /dev/null
+/* -*- Mode: C; c-basic-offset: 4 -*- */
+/* gst-python
+ * Copyright (C) 2004 David I. Lehn
+ *
+ * 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: David I. Lehn <dlehn@users.sourceforge.net>
+ */
+%%
+headers
+#include <Python.h>
+
+#include "pygobject.h"
+#include <gst/gst.h>
+#include <gst/play/play.h>
+
+%%
+modulename gst.play
+%%
+import gobject.GObject as PyGObject_Type
+import gst.Element as PyGstElement_Type
+import gst.Pipeline as PyGstPipeline_Type
+%%
+ignore-glob
+ _*
+ gstplay_*init
+ *_get_type
--- /dev/null
+/* -*- Mode: C; c-basic-offset: 4 -*- */
+/* gst-python
+ * Copyright (C) 2004 David I. Lehn
+ *
+ * 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: David I. Lehn <dlehn@users.sourceforge.net>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* include this first, before NO_IMPORT_PYGOBJECT is defined */
+#include <pygobject.h>
+#include <gst/gst.h>
+
+void pyplay_register_classes (PyObject *d);
+void pyplay_add_constants(PyObject *module, const gchar *strip_prefix);
+
+extern PyMethodDef pyplay_functions[];
+
+DL_EXPORT(void)
+initplay (void)
+{
+ PyObject *m, *d;
+
+ m = Py_InitModule ("play", pyplay_functions);
+ d = PyModule_GetDict (m);
+
+ pyplay_register_classes (d);
+ pyplay_add_constants (m, "GST_");
+
+ if (PyErr_Occurred ()) {
+ Py_FatalError ("can't initialize module gst.play");
+ }
+}