+2004-02-03 David I. Lehn <dlehn@users.sourceforge.net>
+
+ * gstinterfaces/.cvsignore:
+ * gstinterfaces/0.7.defs:
+ * gstinterfaces/Makefile.am:
+ * gstinterfaces/common.defs:
+ * gstinterfaces/common.override:
+ * gstinterfaces/gstinterfacesmodule.c: (init_gstinterfaces):
+ * gstplay/.cvsignore:
+ * gstplay/0.7.c:
+ * gstplay/0.7.defs:
+ * gstplay/0.7.h:
+ * gstplay/0.7.override:
+ * gstplay/Makefile.am:
+ * gstplay/__init__.py:
+ * gstplay/arg-types.py:
+ * gstplay/common.c:
+ * gstplay/common.h:
+ * gstplay/common.override:
+ * gstplay/gstplaymodule.c: (init_gstplay):
+ * gstreamer/Makefile.am:
+ * gstreamer/__init__.py:
+ * gstreamer/common.override:
+ Support GstPlay, bug fixes, updates.
+ * examples/gstplay/player.py:
+ GstPlay example.
+ * Makefile.am:
+ Support GstPlay build.
+ * configure.ac:
+ Support GstPlay build, remove AC_SUBST() calls that
+ PKG_CHECK_MODULES does automagically.
+
2004-01-27 David I. Lehn <dlehn@users.sourceforge.net>
* Makefile.am: add gstinterfaces dir
if GST_0_6
INTERFACESDIR =
+PLAYDIR =
else
INTERFACESDIR = gstinterfaces
+PLAYDIR = gstplay
endif
UNCONDDIRS = gstreamer pkgconfig examples testsuite
-SUBDIRS = $(UNCONDDIRS) $(SUBDIRS_DOCS) $(INTERFACESDIR)
-DIST_SUBDIRS = $(UNCONDDIRS) docs gstinterfaces
+SUBDIRS = \
+ $(UNCONDDIRS) \
+ $(INTERFACESDIR) \
+ $(PLAYDIR) \
+ $(SUBDIRS_DOCS)
+DIST_SUBDIRS = $(UNCONDDIRS) docs gstinterfaces gstplay
EXTRA_DIST = \
gst-python.spec.in gst-python.spec README-docs
-Subproject commit 0bcde342015b96d9a6ba3b9d9102e2a543399d96
+Subproject commit ab32709acc23a4a1b458823fd094327332408035
AC_MSG_ERROR(you need gstreamer development packages installed !)
fi
-AC_SUBST(GST_LIBS)
-AC_SUBST(GST_CFLAGS)
AC_SUBST(GST_MAJORMINOR)
AM_CONDITIONAL(GST_0_6, test $GST_MAJORMINOR = 0.6)
AM_CONDITIONAL(GST_0_7, test $GST_MAJORMINOR = 0.7)
dnl check for pygtk
PKG_CHECK_MODULES(PYGTK, pygtk-2.0 >= $PYGTK_REQ)
-AC_SUBST(PYGTK_CFLAGS)
AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no)
if test "x$PYGTK_CODEGEN" = xno; then
AC_MSG_ERROR(could not find pygtk-codegen-2.0 script)
if test "x$GST_MAJORMINOR" != "x0.6"; then
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_SUBST(GST_INTERFACES_INCLUDEDIR)
fi
+if test "x$GST_MAJORMINOR" != "x0.6"; then
+ 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)
+fi
+
AC_CHECK_PROG(HAVE_XMLTO, xmlto, true, false)
AC_CHECK_PROG(HAVE_XMLCATALOG, xmlcatalog, true, false)
Makefile
gstreamer/Makefile
gstinterfaces/Makefile
+ gstplay/Makefile
pkgconfig/Makefile
pkgconfig/gst-python.pc
pkgconfig/gst-python-uninstalled.pc
--- /dev/null
+#!/usr/bin/env python
+#
+# 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>
+#
+
+#
+# GstPlay wrapper demo
+#
+
+import sys
+import gobject
+from gstreamer import *
+from gstplay import Play
+
+#threads_init()
+
+def nano_time_string(nanos):
+ ts = nanos / 1000000000
+ h = ts / 3600
+ m = ts / 60
+ s = ts % 60
+ us = nanos % 1000000000
+ return '%02d:%02d:%02d.%06d' % (h, m, s, us)
+
+def got_time_tick(sender, nanos):
+ print 'time tick %s (%d)' % (nano_time_string(nanos), nanos)
+
+def got_stream_length(sender, nanos):
+ print 'stream length %s (%d)' % (nano_time_string(nanos), nanos)
+
+def got_have_video_size(sender, w, h):
+ print 'video size %d %d' % (w, h)
+
+def got_found_tag(sender, src, tags, *args):
+ print 'found tag', src, tags, args
+
+def got_eos(sender, *args):
+ print 'eos', args
+
+def idle_iterate(sender):
+ #threads_enter()
+ return sender.iterate()
+ #threads_leave()
+ #return sender.get_state() == STATE_PLAYING
+
+def main():
+ "Basic example to play a media stream with GstPlay"
+ #gst_debug_set_default_threshold(LEVEL_INFO)
+
+ if len(sys.argv) != 2:
+ print 'usage: %s <media file>' % (sys.argv[0])
+ return -1
+
+ #threads_enter()
+
+ loop = gobject.MainLoop()
+
+ # the player
+ play = Play ()
+ play.connect('time_tick', got_time_tick)
+ play.connect('stream_length', got_stream_length)
+ play.connect('have_video_size', got_have_video_size)
+ play.connect('found_tag', got_found_tag)
+ play.connect('eos', got_eos)
+
+ data_src = Element ('gnomevfssrc', 'data_src')
+ #audio_sink = Element ('osssink', 'audio_sink')
+ audio_sink = Element ('fakesink', 'audio_sink')
+ video_sink = Element ('fakesink', 'video_sink')
+ #video_sink = Element ('aasink', 'video_sink')
+ #video_sink.set_property('driver', 4)
+ #vis_sink = Element ('fakesink', 'vis_sink')
+
+ # setup the player
+ play.set_data_src(data_src)
+ play.set_audio_sink(audio_sink)
+ play.set_video_sink(video_sink)
+ #play.set_visualization(vis_sink)
+ play.set_location(sys.argv[1])
+
+ # start playing
+ play.set_state(STATE_PLAYING);
+
+ #while play.iterate(): pass
+ #while play.iterate(): print '.'
+ gobject.idle_add(idle_iterate, play)
+ loop.run()
+
+ #threads_leave()
+
+ # stop the bin
+ play.set_state(STATE_NULL)
+
+ return 0
+
+if __name__ == '__main__':
+ ret = main()
+ sys.exit(ret)
+MODULE = gstreamer
+
INCLUDES = $(PYTHON_INCLUDES) $(PYGTK_CFLAGS)
PYGTK_DEFSDIR = @PYGTK_DEFSDIR@
-pygstreamerdir = $(pythondir)/gstreamer
+pygstreamerdir = $(pythondir)/$(MODULE)
pygstreamer_PYTHON = __init__.py
-pygstreamerexecdir = $(pyexecdir)/gstreamer
+pygstreamerexecdir = $(pyexecdir)/$(MODULE)
GST_OVERRIDES = common.override \
0.6.override \
_gstreamermodule_la_LDFLAGS = -module -avoid-version -export-symbols-regex init_gstreamer
nodist__gstreamermodule_la_SOURCES = gstreamer.c
-CLEANFILES = gstreamer.c core.defs gstreamer.defs gstreamer.override
+CLEANFILES = $(MODULE).c h2def.defs $(MODULE).defs $(MODULE).override
EXTRA_DIST = $(GST_OVERRIDES) $(GST_DEFS) $(GST_CODE) arg-types.py
-gstreamer.c: gstreamer.defs gstreamer.override
-
GST_EXCLUDE_INCLUDES=\
$(GST_INCLUDEDIR)/gst/gstatomic_impl.h \
$(GST_INCLUDEDIR)/gst/gstcompat.h
gstreamer.override: common.override $(GST_MAJORMINOR).override
cat $+ > $@
-core.defs: $(GST_INCLUDES)
+h2def.defs: $(GST_INCLUDES)
$(PYTHON) $(PYGTK_H2DEF) $(GST_INCLUDES) > $@
-gstreamer.defs: core.defs common.defs $(GST_MAJORMINOR).defs
+gstreamer.defs: h2def.defs common.defs $(GST_MAJORMINOR).defs
cat $+ > $@
-gstreamer.c: gstreamer.defs arg-types.py gstreamer.override
+gstreamer.c: $(MODULE).defs arg-types.py $(MODULE).override
$(PYGTK_CODEGEN) \
--load-types $(srcdir)/arg-types.py \
- --override $(srcdir)/gstreamer.override \
- --prefix pygstreamer gstreamer.defs > gen-gstreamer.c \
- && cp gen-gstreamer.c gstreamer.c \
- && rm -f gen-gstreamer.c
+ --override $(srcdir)/$(MODULE).override \
+ --prefix py$(MODULE) $(MODULE).defs > gen-$(MODULE).c \
+ && cp gen-$(MODULE).c $(MODULE).c \
+ && rm -f gen-$(MODULE).c
# --register $(PYGTK_DEFSDIR)/gtk-types.defs
# --register $(top_srcdir)/blah/blah-types.defs
from _gstreamer import *
+#from gtk import threads_init, threads_enter, threads_leave
+
def threads_init():
import gtk
gtk.threads_init()
return 0;
}
%%
-override gst_version
+override gst_version noargs
static PyObject *
-_wrap_gst_version(PyGObject *self)
+_wrap_gst_version(void)
{
guint major, minor, micro;
+MODULE = gstreamer
+
INCLUDES = $(PYTHON_INCLUDES) $(PYGTK_CFLAGS)
PYGTK_DEFSDIR = @PYGTK_DEFSDIR@
-pygstreamerdir = $(pythondir)/gstreamer
+pygstreamerdir = $(pythondir)/$(MODULE)
pygstreamer_PYTHON = __init__.py
-pygstreamerexecdir = $(pyexecdir)/gstreamer
+pygstreamerexecdir = $(pyexecdir)/$(MODULE)
GST_OVERRIDES = common.override \
0.6.override \
_gstreamermodule_la_LDFLAGS = -module -avoid-version -export-symbols-regex init_gstreamer
nodist__gstreamermodule_la_SOURCES = gstreamer.c
-CLEANFILES = gstreamer.c core.defs gstreamer.defs gstreamer.override
+CLEANFILES = $(MODULE).c h2def.defs $(MODULE).defs $(MODULE).override
EXTRA_DIST = $(GST_OVERRIDES) $(GST_DEFS) $(GST_CODE) arg-types.py
-gstreamer.c: gstreamer.defs gstreamer.override
-
GST_EXCLUDE_INCLUDES=\
$(GST_INCLUDEDIR)/gst/gstatomic_impl.h \
$(GST_INCLUDEDIR)/gst/gstcompat.h
gstreamer.override: common.override $(GST_MAJORMINOR).override
cat $+ > $@
-core.defs: $(GST_INCLUDES)
+h2def.defs: $(GST_INCLUDES)
$(PYTHON) $(PYGTK_H2DEF) $(GST_INCLUDES) > $@
-gstreamer.defs: core.defs common.defs $(GST_MAJORMINOR).defs
+gstreamer.defs: h2def.defs common.defs $(GST_MAJORMINOR).defs
cat $+ > $@
-gstreamer.c: gstreamer.defs arg-types.py gstreamer.override
+gstreamer.c: $(MODULE).defs arg-types.py $(MODULE).override
$(PYGTK_CODEGEN) \
--load-types $(srcdir)/arg-types.py \
- --override $(srcdir)/gstreamer.override \
- --prefix pygstreamer gstreamer.defs > gen-gstreamer.c \
- && cp gen-gstreamer.c gstreamer.c \
- && rm -f gen-gstreamer.c
+ --override $(srcdir)/$(MODULE).override \
+ --prefix py$(MODULE) $(MODULE).defs > gen-$(MODULE).c \
+ && cp gen-$(MODULE).c $(MODULE).c \
+ && rm -f gen-$(MODULE).c
# --register $(PYGTK_DEFSDIR)/gtk-types.defs
# --register $(top_srcdir)/blah/blah-types.defs
from _gstreamer import *
+#from gtk import threads_init, threads_enter, threads_leave
+
def threads_init():
import gtk
gtk.threads_init()
return 0;
}
%%
-override gst_version
+override gst_version noargs
static PyObject *
-_wrap_gst_version(PyGObject *self)
+_wrap_gst_version(void)
{
guint major, minor, micro;