[COMP] Perl DVD decoder
- From: John Madden <weez@xxxxxxxxxxxxx>
- To: <computers@xxxxxxxxxxxxx>
- Date: Wed, 7 Mar 2001 08:42:57 -0500 (EST)
This was on Slashdot this morning - I feel it's worthy of a repost (the
archive will make a nice mirror ;)). It's a perl script that does DVD
decoding, and it's something the movie industry feels we shouldn't have--
that makes it even better. :)
"A rewrite, using an extra six bytes (!) of perl code, caches
a table, which apparently makes the program fast enough to decode a movie
in realtime: "
$_='while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^=$c^=(
$m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12*($_%16
-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C*",$_)[20]&48){$h
=5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$
d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=$t&($d>>12^$d>>4^
$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9,$_=$t[$_]^
(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
As Touretzky writes on his Gallery page, typical usage is
just: cat /mnt/dvd/VOB_FILE_NAME | qrpff 153 2 8 105 225 | extract_mpeg2
| mpeg2dec -
...
# John Madden weez@xxxxxxxxxxxxxx ICQ: 2EB9EA
# FreeLists, Free mailing lists for all: http://www.freelists.org
# UNIX Systems Engineer, Ivy Tech State College: http://www.ivy.tec.in.us
# Linux, Apache, Perl and C: All the best things in life are free!
========================================
Avenir Web's Computers Mailing List
List Modes, Subscription, and General Info:
Go to http://www.freelists.org/cgi-bin/webpage?webpage_id=11
List Archives: http://www.freelists.org/archives/computers
Administrative Contact: weez@xxxxxxxxxxxxxx
Get computer help: http://avenir.dhs.org
========================================
Other related posts:
- » [COMP] Perl DVD decoder