mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 11:32:38 +00:00
gst/: Support GstPlay, bug fixes, updates.
Original commit message from CVS: * 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.
This commit is contained in:
parent
11e199b27c
commit
c71d66dbde
11 changed files with 202 additions and 34 deletions
32
ChangeLog
32
ChangeLog
|
@ -1,3 +1,35 @@
|
|||
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
|
||||
|
|
10
Makefile.am
10
Makefile.am
|
@ -6,13 +6,19 @@ endif
|
|||
|
||||
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
|
||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
|||
Subproject commit 0bcde342015b96d9a6ba3b9d9102e2a543399d96
|
||||
Subproject commit ab32709acc23a4a1b458823fd094327332408035
|
16
configure.ac
16
configure.ac
|
@ -58,15 +58,12 @@ if test "x$HAVE_GSTREAMER" = "xno"; then
|
|||
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)
|
||||
|
@ -98,6 +95,7 @@ AC_SUBST(GST_INCLUDEDIR)
|
|||
|
||||
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
|
||||
|
@ -106,6 +104,17 @@ if test "x$GST_MAJORMINOR" != "x0.6"; 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)
|
||||
|
@ -153,6 +162,7 @@ AC_OUTPUT([
|
|||
Makefile
|
||||
gstreamer/Makefile
|
||||
gstinterfaces/Makefile
|
||||
gstplay/Makefile
|
||||
pkgconfig/Makefile
|
||||
pkgconfig/gst-python.pc
|
||||
pkgconfig/gst-python-uninstalled.pc
|
||||
|
|
116
examples/gstplay/player.py
Executable file
116
examples/gstplay/player.py
Executable file
|
@ -0,0 +1,116 @@
|
|||
#!/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)
|
|
@ -1,10 +1,12 @@
|
|||
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 \
|
||||
|
@ -35,11 +37,9 @@ _gstreamermodule_la_LIBADD = $(GST_LIBS)
|
|||
_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
|
||||
|
@ -48,19 +48,19 @@ GST_INCLUDES=$(filter-out $(GST_EXCLUDE_INCLUDES),$(wildcard $(GST_INCLUDEDIR)/g
|
|||
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
|
||||
|
|
|
@ -37,6 +37,8 @@ del devloc, sys, os
|
|||
|
||||
from _gstreamer import *
|
||||
|
||||
#from gtk import threads_init, threads_enter, threads_leave
|
||||
|
||||
def threads_init():
|
||||
import gtk
|
||||
gtk.threads_init()
|
||||
|
|
|
@ -358,10 +358,10 @@ _wrap_gst_element_factory_make_element(PyGObject *self, PyObject *args, PyObject
|
|||
return 0;
|
||||
}
|
||||
%%
|
||||
override gst_version
|
||||
override gst_version noargs
|
||||
|
||||
static PyObject *
|
||||
_wrap_gst_version(PyGObject *self)
|
||||
_wrap_gst_version(void)
|
||||
{
|
||||
guint major, minor, micro;
|
||||
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
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 \
|
||||
|
@ -35,11 +37,9 @@ _gstreamermodule_la_LIBADD = $(GST_LIBS)
|
|||
_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
|
||||
|
@ -48,19 +48,19 @@ GST_INCLUDES=$(filter-out $(GST_EXCLUDE_INCLUDES),$(wildcard $(GST_INCLUDEDIR)/g
|
|||
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
|
||||
|
|
|
@ -37,6 +37,8 @@ del devloc, sys, os
|
|||
|
||||
from _gstreamer import *
|
||||
|
||||
#from gtk import threads_init, threads_enter, threads_leave
|
||||
|
||||
def threads_init():
|
||||
import gtk
|
||||
gtk.threads_init()
|
||||
|
|
|
@ -358,10 +358,10 @@ _wrap_gst_element_factory_make_element(PyGObject *self, PyObject *args, PyObject
|
|||
return 0;
|
||||
}
|
||||
%%
|
||||
override gst_version
|
||||
override gst_version noargs
|
||||
|
||||
static PyObject *
|
||||
_wrap_gst_version(PyGObject *self)
|
||||
_wrap_gst_version(void)
|
||||
{
|
||||
guint major, minor, micro;
|
||||
|
||||
|
|
Loading…
Reference in a new issue