diff options
-rwxr-xr-x | tools/gst-launch-ext | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/tools/gst-launch-ext b/tools/gst-launch-ext index 7a5dc124..e0445482 100755 --- a/tools/gst-launch-ext +++ b/tools/gst-launch-ext @@ -9,6 +9,7 @@ use File::Basename; +my %pipes; sub extension { @@ -51,11 +52,28 @@ sub read_config if (!defined $cfg{CVS_PATH}) { $cfg{CVS_PATH} = `echo -n ~`."/gst/cvs"; } } +sub playfile($$) +{ + my ($file, $ext) = @_; + + my $pipe; + if ($pipe = $pipes{$ext}) + { + $command = "gst-launch filesrc location=\"$file\" ! $pipe"; + print "Running $command\n"; + system ("PATH=\$PATH:".$cfg{CVS_PATH}."/gstreamer/tools $command"); + } + else + { + print "No suitable pipe found for extension $ext.\n"; + } +} + ### main read_config (); -my %pipes = ( +%pipes = ( "mp3", "mad ! $cfg{AUDIOSINK}", "ogg", "vorbisdec ! $cfg{AUDIOSINK}", "mpg", "mpegdemux video_00! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } mpegdemux0.audio_00! { queue ! mad ! $cfg{AUDIOSINK} }", @@ -64,17 +82,26 @@ my %pipes = ( "wav", "wavparse ! $cfg{AUDIOSINK}", ); -my $file = shift @ARGV or die "Please give a file name !"; - -my $ext = extension ($file); -if ($pipe = $pipes{$ext}) -{ - $command = "gst-launch filesrc location=\"$file\" ! $pipe"; - print "Running $command\n"; - system ("PATH=\$PATH:".$cfg{CVS_PATH}."/gstreamer/tools $command"); +if ($#ARGV == -1) { + print STDERR "Usage: gst-launch-ext filename[s]\n"; + exit 1; } -else -{ - print "No suitable pipe found for extension $ext.\n"; + +my $file; +while ($file = shift @ARGV) { + my $ext = extension ($file); + if ($ext eq 'm3u') + { + open (PLAYLIST, '<', $file); + my $file2; + while ($file2 = <PLAYLIST>) { + chomp $file2; + my $ext2 = extension ($file2); + playfile($file2, $ext2); + } + close PLAYLIST; + } else { + playfile($file, $ext); + } } |