summaryrefslogtreecommitdiffstats
path: root/tools/gst-launch-ext
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gst-launch-ext')
-rwxr-xr-xtools/gst-launch-ext48
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/gst-launch-ext b/tools/gst-launch-ext
new file mode 100755
index 00000000..909438f6
--- /dev/null
+++ b/tools/gst-launch-ext
@@ -0,0 +1,48 @@
+#!/usr/bin/perl -w
+
+# launch a gst-launch pipeline for the supplied media file
+# use the extension to determine the gst-launch pipeline
+# make use of default output sinks
+
+### packages
+
+use File::Basename;
+
+### defaults
+my $VIDEOSINK = "xvideosink";
+my $AUDIOSINK = "osssink";
+my $GST_CVS_PATH = "~/gst/cvs";
+
+my %pipes = (
+ "mp3", "mad ! $AUDIOSINK",
+ "ogg", "vorbisdec ! $AUDIOSINK",
+ "mpg", "mpegdemux video_00! { queue ! mpeg2dec ! $VIDEOSINK } audio_00! { queue ! mad ! $AUDIOSINK }",
+ "avi", "avidemux video_00! { queue ! windec ! $VIDEOSINK }",
+ "vob", "mpegdemux video_00! { queue ! mpeg2dec ! $VIDEOSINK }",
+
+);
+
+sub extension
+{
+ my $path = shift;
+ my $ext = (fileparse ($path, '\..*'))[2];
+ $ext =~ s/^\.//;
+ return $ext;
+}
+
+### main
+
+my $file = shift @ARGV or die "Please give a file name !";
+
+my $ext = extension ($file);
+
+if ($pipe = $pipes{$ext})
+{
+ $command = "$GST_CVS_PATH/gstreamer/tools/gst-launch filesrc location=\"$file\" ! $pipe";
+ print "Running $command\n";
+ system ($command);
+}
+else
+{
+ print "No suitable pipe found for extension $ext.\n";
+}