use File::Basename;
+my %pipes;
sub extension
{
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} }",
"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);
+ }
}