# HG changeset patch # User lgb # Date 987777129 0 # Node ID 22ed5f5821e268f978df309dfe3202615b4994ce # Parent 142dd5a2631f9d4d05f0821b2252a2a292aaa0e6 command line requested DVD key support for Arpi :) diff -r 142dd5a2631f -r 22ed5f5821e2 cfg-mplayer.h --- a/cfg-mplayer.h Fri Apr 20 12:09:32 2001 +0000 +++ b/cfg-mplayer.h Fri Apr 20 14:32:09 2001 +0000 @@ -25,6 +25,7 @@ {"master", &mixer_usemaster, CONF_TYPE_FLAG, 0, 0, 1}, #ifdef HAVE_LIBCSS {"dvd", &dvd_device, CONF_TYPE_STRING, 0, 0, 0}, + {"dvdkey", &dvdimportkey, CONF_TYPE_STRING, 0, 0, 0}, #else {"dvd", "DVD support was not compiled in. See file DOCS/DVD.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0 , 0}, diff -r 142dd5a2631f -r 22ed5f5821e2 demux_mpg.c --- a/demux_mpg.c Fri Apr 20 12:09:32 2001 +0000 +++ b/demux_mpg.c Fri Apr 20 14:32:09 2001 +0000 @@ -180,7 +180,10 @@ if(verbose>=2) printf("DEMUX_MPG: Read %d data bytes from packet %04X\n",len,id); // printf("packet start = 0x%X \n",stream_tell(demux->stream)-packet_start_pos); #ifdef HAVE_LIBCSS - if (css) CSSDescramble(demux->stream->buffer,key_title); + if (css) { + if (descrambling) CSSDescramble(demux->stream->buffer,key_title); else + printf("Encrypted stream but authentication was not requested by you!!\n"); + } #endif ds_read_packet(ds,demux->stream,len,pts/90000.0f,0); return 1; diff -r 142dd5a2631f -r 22ed5f5821e2 dvdauth.c --- a/dvdauth.c Fri Apr 20 12:09:32 2001 +0000 +++ b/dvdauth.c Fri Apr 20 14:32:09 2001 +0000 @@ -23,6 +23,8 @@ char *dvd_device=NULL; unsigned char key_disc[2048]; unsigned char key_title[5]; +unsigned char *dvdimportkey=NULL; +int descrambling=0; #include @@ -59,6 +61,30 @@ } +int dvd_import_key ( unsigned char *hexkey ) +{ + unsigned char *t=key_title; + int digit=4,len; + bzero(key_title,sizeof(key_title)); +// printf("DVD key: %s\n",hexkey); + for (len=0;len<10;len++) { +// printf("-> %c\n",*hexkey); + if (!*hexkey) return 1; + if (*hexkey>='A'&&*hexkey<='F') *t|=(*hexkey-'A'+10)<='0'&&*hexkey<='9') *t|=(*hexkey-'0')<