examples/: New tool, runs the discoverer on a file and prints out what we get.
authorAndy Wingo <wingo@pobox.com>
Tue, 7 Nov 2006 11:47:26 +0000 (11:47 +0000)
committerAndy Wingo <wingo@pobox.com>
Tue, 7 Nov 2006 11:47:26 +0000 (11:47 +0000)
Original commit message from CVS:
2006-11-07  Andy Wingo  <wingo@pobox.com>

* examples/Makefile.am (examples_DATA):
* examples/gst-discover: New tool, runs the discoverer on a file
and prints out what we get.

ChangeLog
examples/Makefile.am
examples/gst-discover [new file with mode: 0755]

index 3907f58..655d40e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-11-07  Andy Wingo  <wingo@pobox.com>
+
+       * examples/Makefile.am (examples_DATA): 
+       * examples/gst-discover: New tool, runs the discoverer on a file
+       and prints out what we get.
+
 2006-11-03  Edward Hervey  <edward@fluendo.com>
 
        * gst/gst.override:
index 01f2b53..e7decea 100644 (file)
@@ -8,6 +8,7 @@ examples_DATA =         \
        f2f.py          \
        filesrc.py      \
        fvumeter.py     \
+       gst-discover    \
        gstfile.py      \
        play.py         \
        pipeline-tester \
diff --git a/examples/gst-discover b/examples/gst-discover
new file mode 100755 (executable)
index 0000000..13793a2
--- /dev/null
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+# gst-python
+# Copyright (C) 2006 Andy Wingo <wingo at pobox.com>
+#
+# 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.
+
+
+import os
+import sys
+
+import pygtk
+pygtk.require('2.0')
+import gobject
+gobject.threads_init()
+import pygst
+pygst.require('0.10')
+import gst
+from gst.extend import discoverer
+
+def fail(path):
+    print "error: %r does not appear to be a media file" % path
+    sys.exit(1)
+
+def succeed(d):
+    def pp(prop, val):
+        print '%s: %s' % (prop, val)
+    pp('media type', d.mimetype)
+
+    pp('has video', d.is_video)
+    if d.is_video:
+        pp('video caps', d.videocaps)
+        pp('video width', d.videowidth)
+        pp('video height', d.videoheight)
+        pp('framerate', '%s/%s' % (d.videorate.num, d.videorate.denom))
+
+    pp('has audio', d.is_audio)
+    if d.is_audio:
+        pp('audio caps', d.audiocaps)
+        pp('audio format', d.audiofloat and 'floating-point' or 'integer')
+        pp('sample rate', d.audiorate)
+        pp('sample width', d.audiowidth)
+        pp('sample depth', d.audiodepth)
+        pp('audio channels', d.audiochannels)
+    
+    sys.exit(0)
+
+def discover(path):
+    def discovered(d, is_media):
+        if is_media:
+            succeed(d)
+        else:
+            fail(path)
+
+    d = discoverer.Discoverer(path)
+    d.connect('discovered', discovered)
+    d.discover()
+    gobject.MainLoop().run()
+
+def usage():
+    print >>sys.stderr, "usage: gst-discover PATH-TO-MEDIA-FILE"
+    sys.exit(1)
+
+def main(argv):
+    if len(argv) != 2:
+        usage()
+    path = argv.pop()
+    if not os.path.isfile(path):
+        print >>sys.stderr, "error: file %r does not exist" % path
+        usage()
+
+    return discover(path)
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv))