summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid I. Lehn <dlehn@users.sourceforge.net>2003-02-06 21:49:00 +0000
committerDavid I. Lehn <dlehn@users.sourceforge.net>2003-02-06 21:49:00 +0000
commit51680f933b9f516f59ef0a9ab24e1b1c68704451 (patch)
tree8cbf56ac1c9baf2e32bf261693bbafe87f16b2fe
parent9aa46e059e762815bd170ddfd9fa146e04dc6a0f (diff)
rename to vorbisplay.py print out meta/stream info
Original commit message from CVS: rename to vorbisplay.py print out meta/stream info
-rwxr-xr-xexamples/gst/oggplay.py80
-rwxr-xr-xexamples/gst/vorbisplay.py154
-rwxr-xr-xexamples/gstreamer/oggplay.py80
-rwxr-xr-xexamples/gstreamer/vorbisplay.py154
4 files changed, 308 insertions, 160 deletions
diff --git a/examples/gst/oggplay.py b/examples/gst/oggplay.py
deleted file mode 100755
index 96a8469..0000000
--- a/examples/gst/oggplay.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-#
-# gst-python
-# Copyright (C) 2002 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>
-#
-
-import sys
-from gstreamer import *
-
-def main():
- "Basic example to play an Ogg Vorbis stream through OSS"
- #gst_debug_set_categories(-1)
-
- if len(sys.argv) != 2:
- print 'usage: %s <Ogg Vorbis file>' % (sys.argv[0])
- return -1
-
- # create a new bin to hold the elements
- bin = Pipeline('pipeline')
-
- # create a disk reader
- filesrc = gst_element_factory_make ('filesrc', 'disk_source');
- if not filesrc:
- print 'could not find plugin \"filesrc\"'
- return -1
- filesrc.set_property('location', sys.argv[1])
-
- # now get the decoder
- decoder = gst_element_factory_make ('vorbisfile', 'parse');
- if not decoder:
- print 'could not find plugin \"vorbisfile\"'
- return -1
-
- # and an audio sink
- osssink = gst_element_factory_make ('osssink', 'play_audio')
- if not osssink:
- print 'could not find plugin \"osssink\"'
- return -1
-
- # add objects to the main pipeline
- for e in (filesrc, decoder, osssink):
- bin.add(e)
-
- # link the elements
- previous = None
- for e in (filesrc, decoder, osssink):
- if previous:
- previous.link(e)
- previous = e
-
- # start playing
- bin.set_state(STATE_PLAYING);
-
- while bin.iterate(): pass
-
- # stop the bin
- bin.set_state(STATE_NULL)
-
- return 0
-
-if __name__ == '__main__':
- ret = main()
- sys.exit(ret)
diff --git a/examples/gst/vorbisplay.py b/examples/gst/vorbisplay.py
new file mode 100755
index 0000000..3761c70
--- /dev/null
+++ b/examples/gst/vorbisplay.py
@@ -0,0 +1,154 @@
+#!/usr/bin/env python
+#
+# gst-python
+# Copyright (C) 2003 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>
+#
+
+import sys
+from gstreamer import *
+
+def gst_props_debug_entry(entry, level=0):
+ name = entry.get_name()
+ type = entry.get_props_type()
+ indent = ' '*level
+
+ if type == PROPS_INT_TYPE:
+ ret, val = entry.get_int()
+ assert ret
+ print '%s%s: int %d' % (indent, name, val)
+ elif type == PROPS_FLOAT_TYPE:
+ ret, val = entry.get_float()
+ assert ret
+ print '%s%s: float %f' % (indent, name, val)
+ elif type == PROPS_FOURCC_TYPE:
+ ret, val = entry.get_fourcc()
+ assert ret
+ print '%s%s: fourcc %c%c%c%c' % (indent, name,
+ (val>>0)&0xff,
+ (val>>8)&0xff,
+ (val>>16)&0xff,
+ (val>>24)&0xff)
+ elif type == PROPS_BOOLEAN_TYPE:
+ ret, val = entry.get_bool()
+ assert ret
+ print '%s%s: bool %d' % (indent, name, val)
+ elif type == PROPS_STRING_TYPE:
+ ret, val = entry.get_string()
+ assert ret
+ print '%s%s: string "%s"' % (indent, name, val)
+ elif type == PROPS_INT_RANGE_TYPE:
+ ret, min, max = entry.get_int_range()
+ assert ret
+ print '%s%s: int range %d-%d' % (indent, name, min, max)
+ elif type == PROPS_FLOAT_RANGE_TYPE:
+ ret, min, max = entry.get_float_range()
+ assert ret
+ print '%s%s: float range %f-%f' % (indent, name, min, max)
+ elif type == PROPS_LIST_TYPE:
+ ret, val = entry.get_list()
+ assert ret
+ print '[list] ('
+ for e in val:
+ gst_props_debug_entry(e, level+1)
+ print ')'
+ else:
+ print '%sWARNING: %s: unknown property type %d' % (indent, name, type)
+
+def debug_caps(caps):
+ props = caps.get_props()
+ ret, plist = props.get_list()
+ for e in plist:
+ gst_props_debug_entry(e, level=1)
+
+def streaminfo(sender, pspec):
+ assert pspec.name == 'streaminfo'
+ caps = sender.get_property(pspec.name)
+ print 'streaminfo:'
+ debug_caps(caps)
+
+def metadata(sender, pspec):
+ assert pspec.name == 'metadata'
+ caps = sender.get_property(pspec.name)
+ print 'metadata:'
+ debug_caps(caps)
+
+def decoder_notified(sender, pspec):
+ if pspec.name == 'streaminfo':
+ streaminfo(sender, pspec)
+ elif pspec.name == 'metadata':
+ metadata(sender, pspec)
+ else:
+ print 'notify:', sender, pspec
+
+def main():
+ "Basic example to play an Ogg Vorbis stream through OSS"
+ #gst_debug_set_categories(-1)
+
+ if len(sys.argv) != 2:
+ print 'usage: %s <Ogg Vorbis file>' % (sys.argv[0])
+ return -1
+
+ # create a new bin to hold the elements
+ bin = Pipeline('pipeline')
+
+ # create a disk reader
+ filesrc = gst_element_factory_make ('filesrc', 'disk_source');
+ if not filesrc:
+ print 'could not find plugin \"filesrc\"'
+ return -1
+ filesrc.set_property('location', sys.argv[1])
+
+ # now get the decoder
+ decoder = gst_element_factory_make ('vorbisfile', 'parse');
+ if not decoder:
+ print 'could not find plugin \"vorbisfile\"'
+ return -1
+ decoder.connect('notify', decoder_notified)
+
+ # and an audio sink
+ osssink = gst_element_factory_make ('osssink', 'play_audio')
+ if not osssink:
+ print 'could not find plugin \"osssink\"'
+ return -1
+
+ # add objects to the main pipeline
+ for e in (filesrc, decoder, osssink):
+ bin.add(e)
+
+ # link the elements
+ previous = None
+ for e in (filesrc, decoder, osssink):
+ if previous:
+ previous.link(e)
+ previous = e
+
+ # start playing
+ bin.set_state(STATE_PLAYING);
+
+ while bin.iterate(): pass
+
+ # stop the bin
+ bin.set_state(STATE_NULL)
+
+ return 0
+
+if __name__ == '__main__':
+ ret = main()
+ sys.exit(ret)
diff --git a/examples/gstreamer/oggplay.py b/examples/gstreamer/oggplay.py
deleted file mode 100755
index 96a8469..0000000
--- a/examples/gstreamer/oggplay.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-#
-# gst-python
-# Copyright (C) 2002 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>
-#
-
-import sys
-from gstreamer import *
-
-def main():
- "Basic example to play an Ogg Vorbis stream through OSS"
- #gst_debug_set_categories(-1)
-
- if len(sys.argv) != 2:
- print 'usage: %s <Ogg Vorbis file>' % (sys.argv[0])
- return -1
-
- # create a new bin to hold the elements
- bin = Pipeline('pipeline')
-
- # create a disk reader
- filesrc = gst_element_factory_make ('filesrc', 'disk_source');
- if not filesrc:
- print 'could not find plugin \"filesrc\"'
- return -1
- filesrc.set_property('location', sys.argv[1])
-
- # now get the decoder
- decoder = gst_element_factory_make ('vorbisfile', 'parse');
- if not decoder:
- print 'could not find plugin \"vorbisfile\"'
- return -1
-
- # and an audio sink
- osssink = gst_element_factory_make ('osssink', 'play_audio')
- if not osssink:
- print 'could not find plugin \"osssink\"'
- return -1
-
- # add objects to the main pipeline
- for e in (filesrc, decoder, osssink):
- bin.add(e)
-
- # link the elements
- previous = None
- for e in (filesrc, decoder, osssink):
- if previous:
- previous.link(e)
- previous = e
-
- # start playing
- bin.set_state(STATE_PLAYING);
-
- while bin.iterate(): pass
-
- # stop the bin
- bin.set_state(STATE_NULL)
-
- return 0
-
-if __name__ == '__main__':
- ret = main()
- sys.exit(ret)
diff --git a/examples/gstreamer/vorbisplay.py b/examples/gstreamer/vorbisplay.py
new file mode 100755
index 0000000..3761c70
--- /dev/null
+++ b/examples/gstreamer/vorbisplay.py
@@ -0,0 +1,154 @@
+#!/usr/bin/env python
+#
+# gst-python
+# Copyright (C) 2003 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>
+#
+
+import sys
+from gstreamer import *
+
+def gst_props_debug_entry(entry, level=0):
+ name = entry.get_name()
+ type = entry.get_props_type()
+ indent = ' '*level
+
+ if type == PROPS_INT_TYPE:
+ ret, val = entry.get_int()
+ assert ret
+ print '%s%s: int %d' % (indent, name, val)
+ elif type == PROPS_FLOAT_TYPE:
+ ret, val = entry.get_float()
+ assert ret
+ print '%s%s: float %f' % (indent, name, val)
+ elif type == PROPS_FOURCC_TYPE:
+ ret, val = entry.get_fourcc()
+ assert ret
+ print '%s%s: fourcc %c%c%c%c' % (indent, name,
+ (val>>0)&0xff,
+ (val>>8)&0xff,
+ (val>>16)&0xff,
+ (val>>24)&0xff)
+ elif type == PROPS_BOOLEAN_TYPE:
+ ret, val = entry.get_bool()
+ assert ret
+ print '%s%s: bool %d' % (indent, name, val)
+ elif type == PROPS_STRING_TYPE:
+ ret, val = entry.get_string()
+ assert ret
+ print '%s%s: string "%s"' % (indent, name, val)
+ elif type == PROPS_INT_RANGE_TYPE:
+ ret, min, max = entry.get_int_range()
+ assert ret
+ print '%s%s: int range %d-%d' % (indent, name, min, max)
+ elif type == PROPS_FLOAT_RANGE_TYPE:
+ ret, min, max = entry.get_float_range()
+ assert ret
+ print '%s%s: float range %f-%f' % (indent, name, min, max)
+ elif type == PROPS_LIST_TYPE:
+ ret, val = entry.get_list()
+ assert ret
+ print '[list] ('
+ for e in val:
+ gst_props_debug_entry(e, level+1)
+ print ')'
+ else:
+ print '%sWARNING: %s: unknown property type %d' % (indent, name, type)
+
+def debug_caps(caps):
+ props = caps.get_props()
+ ret, plist = props.get_list()
+ for e in plist:
+ gst_props_debug_entry(e, level=1)
+
+def streaminfo(sender, pspec):
+ assert pspec.name == 'streaminfo'
+ caps = sender.get_property(pspec.name)
+ print 'streaminfo:'
+ debug_caps(caps)
+
+def metadata(sender, pspec):
+ assert pspec.name == 'metadata'
+ caps = sender.get_property(pspec.name)
+ print 'metadata:'
+ debug_caps(caps)
+
+def decoder_notified(sender, pspec):
+ if pspec.name == 'streaminfo':
+ streaminfo(sender, pspec)
+ elif pspec.name == 'metadata':
+ metadata(sender, pspec)
+ else:
+ print 'notify:', sender, pspec
+
+def main():
+ "Basic example to play an Ogg Vorbis stream through OSS"
+ #gst_debug_set_categories(-1)
+
+ if len(sys.argv) != 2:
+ print 'usage: %s <Ogg Vorbis file>' % (sys.argv[0])
+ return -1
+
+ # create a new bin to hold the elements
+ bin = Pipeline('pipeline')
+
+ # create a disk reader
+ filesrc = gst_element_factory_make ('filesrc', 'disk_source');
+ if not filesrc:
+ print 'could not find plugin \"filesrc\"'
+ return -1
+ filesrc.set_property('location', sys.argv[1])
+
+ # now get the decoder
+ decoder = gst_element_factory_make ('vorbisfile', 'parse');
+ if not decoder:
+ print 'could not find plugin \"vorbisfile\"'
+ return -1
+ decoder.connect('notify', decoder_notified)
+
+ # and an audio sink
+ osssink = gst_element_factory_make ('osssink', 'play_audio')
+ if not osssink:
+ print 'could not find plugin \"osssink\"'
+ return -1
+
+ # add objects to the main pipeline
+ for e in (filesrc, decoder, osssink):
+ bin.add(e)
+
+ # link the elements
+ previous = None
+ for e in (filesrc, decoder, osssink):
+ if previous:
+ previous.link(e)
+ previous = e
+
+ # start playing
+ bin.set_state(STATE_PLAYING);
+
+ while bin.iterate(): pass
+
+ # stop the bin
+ bin.set_state(STATE_NULL)
+
+ return 0
+
+if __name__ == '__main__':
+ ret = main()
+ sys.exit(ret)