summaryrefslogtreecommitdiffstats
path: root/TOOLS/w32codec_dl.pl
diff options
context:
space:
mode:
Diffstat (limited to 'TOOLS/w32codec_dl.pl')
-rwxr-xr-xTOOLS/w32codec_dl.pl168
1 files changed, 0 insertions, 168 deletions
diff --git a/TOOLS/w32codec_dl.pl b/TOOLS/w32codec_dl.pl
deleted file mode 100755
index c4a16b6b58..0000000000
--- a/TOOLS/w32codec_dl.pl
+++ /dev/null
@@ -1,168 +0,0 @@
-#!/usr/bin/perl
-
-## usage: w32codec_dl.pl (codec.conf location)
-
-# this script will use MS's codec dl interface as used by MS Media Player
-# to attempt to locate the codecs listed in codecs.conf. It will download
-# them to a directory "codecs/" below the current dir.
-# you will need the libwww-perl stuff and the utility "cabextract"
-# which may be found at http://www.kyz.uklinux.net/cabextract.php3
-
-# By Tom Lees, 2002. I hereby place this script into the public domain.
-
-#use LWP::Debug qw(+);
-use LWP::UserAgent;
-
-$ua = LWP::UserAgent->new;
-$ua->agent ("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
-
-# Parse the etc/codecs.conf file
-my $cconf = $ARGV[0];
-open CCONF, "<$cconf";
-
-my $codec = "(none)";
-my $mscodec = 0;
-
-my $cc, @ccl;
-
-mkdir "codecs";
-chdir "codecs";
-
-CC: while (<CCONF>)
-{
- next CC if (m/^[ \t]*\;/);
- s/\;.*//g;
- s/#.*//g;
-
- if (m/^videocodec (.*)/)
- {
- $codec = $1;
- }
- elsif (m/^[ \t]+driver (.*)/)
- {
- if ($1 eq "dshow" || $1 eq "vfw")
- {
- $mscodec = 1;
- }
- else
- {
- $mscodec = 0;
- }
- }
- elsif (m/^[ \t]+fourcc (.*)/ && $mscodec == 1)
- {
- $cclist = $1;
- chomp $cclist;
- #@ccl = ();
- do
- {
- if ($cclist =~ m/\"(....)\"[, ]*(.*)/)
- {
- $cc = $1;
- $cclist = $2;
- }
- elsif ($cclist =~ m/[, ]*(....)[, ]*(.*)/)
- {
- $cc = $1;
- $cclist = $2;
- }
- else
- {
- $cc = $cclist;
- $cclist = "";
- }
- if (!($cc =~ m/^[ \t]+/))
- {
- push @ccl, ($cc);
- }
- } while (length ($cclist) > 0);
- }
-}
-close CCONF;
-
-# Find the codecs
-open CODEC_CABS, ">codecs.locations.info";
-%fcc_try = ();
-while ($#ccl > 0)
-{
- $cc = pop (@ccl);
- if (!$fcc_try{"$cc"})
- {
- $fcc_try{"$cc"} = 1;
- if (!find_codec ($cc))
- {
- print "$cc found\n";
- }
- else
- {
- print "MS didn't find $cc\n";
- }
- }
-}
-close CODEC_CABS;
-
-%got_codecs = ();
-sub find_codec
-{
- my ($fourcc) = @_;
-
- my $guid = sprintf ("%08X", unpack ("V", $fourcc))."-0000-0010-8000-00AA00389B71";
-
- my $req = HTTP::Request->new (POST => "http://activex.microsoft.com/objects/ocget.dll");
- $req->header ('Accept', '*/*');
- $req->content_type ('application/x-www-form-urlencoded');
- $req->content ("CLSID=%7B${guid}%7D\n");
- #$req->content ('CLSID={'.${guid}.'}');
-
- my $res = $ua->request ($req);
-
- if ($res->is_success) {
- print "Lookup returned success... weird!\n";
- return 1;
- } else {
- # Codec location
- if ($res->code == 302)
- {
- my $loc = $res->headers->header ("Location");
- if (!$got_codecs{"$loc"})
- {
- print CODEC_CABS "$loc\n";
- $got_codecs{"$loc"} = 1;
- get_codec ($loc);
- }
-# else
-# {
-# print "Already have $loc\n";
-# }
- return 0;
- }
- else
- {
-# print "Lookup failed (Microsoft probably doesn't know this codec)\n";
- return 1;
- }
- }
-}
-
-sub get_codec
-{
- my ($url) = @_;
-
- my $req = HTTP::Request->new (GET => $url);
- $req->header ("Accept", "*/*");
- my $res = $ua->request ($req);
-
- if ($res->is_success)
- {
- open TMP, ">tmp.cab" or die "Unable to open tmp.cab";
- print TMP $res->content;
- close TMP;
-
- system "cabextract tmp.cab";
- unlink "tmp.cab";
- }
- else
- {
- print "No such file!\n";
- }
-}