Is Playing a DVD Harder Than Rocket Science?
dacut writes "After successfully repairing the Hubble Space Telescope, astronauts aboard the shuttle Atlantis found themselves with a free day due to thunderstorms which delayed their return. They attempted to pass the time by watching movies, only to find that their laptops did not have the proper software, and Houston was unable to help. No word, alas, on what software was involved, though we can assume that software/codec updates are a tad difficult when you're orbiting the planet at 17,200MPH."
Too bad vlc wasn't part of their default software.
VLC isn't supported very well and should be your last-resort if all else fails.
Media Player Classic Home Cinema is a much superior player that also has built-in playback codecs.
What does "isn't supported very well" mean? VLC's got a lot more active a community behind it - just compare the size of the forums for each.
The big thing that VLC has over MPC and most other DVD players on windows is that it is completely independent of Microsoft's DirectShow filter system which is pretty much the equivalent of DLL hell, but for codecs.
VLC may not have the slickest user interface and it may not be the most efficient media player since it has virtually no support for hardware acceleration, but it in its current form it is pretty much bullet proof - no matter what kind of system configuration problems you've got, it usually "just works." It isn't my player of choice, but it is my last ditch player because it pretty much plays anything.
When information is power, privacy is freedom.
Same reason that linux doesn't playback MP3, DVDs and h.264 by default. US-only software patents covering the codecs. Without paying the fee, and getting the licences to use the patents, it's illegal to ship it in your US product.
XP added limited MP3 playback, Windows Vista added built in MPEG2 playback, and 7 adds h.264 playback. Yes, XP should have had MPEG2 playback built in, it came out three years after DVD became widely available.
Linux at least has the excuse that free distros can't pay the patent fees and thus can't ship them in the default package to US users (so usually have a 'download it now' option when you first need it, where you promise you don't live in the US, and download from a mirror elsewhere in the world). This is annoying when you do live outside the US, and have to put up with software patent bullshit in everything, even non-US software projects, because they don't want to get sued.
Remember kids, it's all fun and games until someone commits wholesale galactic genocide.
"and further given that DeCSS is pretty damn short, when you come right down to it"
To clarify:
#include<stdlib.h>
typedef unsigned int uint;
char ctb[512]="33733b2663236b763e7e362b6e2e667bd393db0643034b96de9ed60b4e0e4\
69b57175f82c787cf125a1a528fca8ac21fd999d10049094190d898d001480840913d7d35246\
d2d65743c7c34256c2c6475dd9dd5044d0d4594dc9cd4054c0c449559195180c989c11058185\
081c888c011d797df0247074f92da9ad20f4a0a429f53135b86c383cb165e1e568bce8ec61bb\
3f3bba6e3a3ebf6befeb6abeeaee6fb37773f2267276f723a7a322f6a2a627fb9f9b1a0e9a9e\
1f0b8f8b0a1e8a8e0f15d1d5584cd8dc5145c1c5485cc8cc415bdfdb5a4edade5f4bcfcb4a5e\
cace4f539793120692961703878302168286071b7f7bfa2e7a7eff2bafab2afeaaae2ff";
typedef unsigned char uchar;uint tb0[11]={5,0,1,2,3,4,0,1,2,3,4};uchar* F=NULL;
uint lf0,lf1,out;void ReadKey(uchar* key){int i;char hst[3]; hst[2]=0;if(F==\
NULL){F=malloc(256);for(i=0;i<256;i++){hst[0]=ctb[2*i];hst[1]=ctb[2*i+1];F[i]=\
strtol(hst,NULL,16);}}out=0;lf0=(key[1]<<9)|key[0]|0x100;lf1=(key[4]<<16)|(key\
[3]<<8)|key[2];lf1=((lf1&0xfffff8)<<1)|(lf1&0x7)|0x8;}uchar Cipher(int sw1,\
int sw2){int i,a,b,x=0,y=0;for(i=0;i<8;i++){a=((lf0>>2)^(lf0>>16))&1;b=((lf1\
>>12)^(lf1>>20)^(lf1>>21)^(lf1>>24))&1;lf0=(lf0<<1)|a;lf1=(lf1<<1)|b;x=(x>>1)\
|(a<<7);y=(y>>1)|(b<<7);}x^=sw1;y^=sw2;return out=(out>>8)+x+y;} void \
CSSdescramble(uchar *sec,uchar *key){uint i;uchar *end=sec+0x800;uchar KEY[5];
for(i=0;i<5;i++)KEY[i]=key[i]^sec[0x54+i];ReadKey(KEY);sec+=0x80;while(sec!=\
end)*sec++=F[*sec]^Cipher(255,0);}void CSStitlekey1(uchar *key,uchar *im)
{uchar k[5];int i; ReadKey(im);for(i=0;i<5;i++)k[i]=Cipher(0,0);for(i=9;i>=0;\
i--)key[tb0[i+1]]=k[tb0[i+1]]^F[key[tb0[i+1]]]^key[tb0[i]];}void CSStitlekey2\
(uchar *key,uchar *im){uchar k[5];int i;ReadKey(im);for(i=0;i<5;i++)k[i]=\
Cipher(0,255);for(i=9;i>=0;i--)key[tb0[i+1]]=k[tb0[i+1]]^F[key[tb0[i+1]]]^key\
[tb0[i]];}void CSSdecrypttitlekey(uchar *tkey,uchar *dkey){int i;uchar im1[6];
uchar im2[6]={0x51,0x67,0x67,0xc5,0xe0,0x00};for(i=0;i<6;i++)im1[i]=dkey[i];
CSStitlekey1(im1,im2);CSStitlekey2(tkey,im1);}