diff options
author | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-12-08 21:34:05 +0000 |
---|---|---|
committer | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-12-08 21:34:05 +0000 |
commit | 922162fb5d99604e8c7fdb72b09f626c6d9f087e (patch) | |
tree | 634bc568df4e64038251148ebf459dcba24bb615 /libmpdemux | |
parent | a5766ca031aba607b687e230c4eea0130aae5e68 (diff) | |
download | mpv-922162fb5d99604e8c7fdb72b09f626c6d9f087e.tar.bz2 mpv-922162fb5d99604e8c7fdb72b09f626c6d9f087e.tar.xz |
removed the historic libcss support
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11593 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/Makefile | 2 | ||||
-rw-r--r-- | libmpdemux/demux_mpg.c | 15 | ||||
-rw-r--r-- | libmpdemux/dvdauth.c | 323 | ||||
-rw-r--r-- | libmpdemux/dvdauth.h | 17 |
4 files changed, 1 insertions, 356 deletions
diff --git a/libmpdemux/Makefile b/libmpdemux/Makefile index 05fd7f0cb9..3fce03fc7a 100644 --- a/libmpdemux/Makefile +++ b/libmpdemux/Makefile @@ -3,7 +3,7 @@ LIBNAME = libmpdemux.a include ../config.mak -SRCS = mp3_hdr.c video.c mpeg_hdr.c cache2.c asfheader.c aviheader.c aviprint.c muxer.c muxer_avi.c muxer_mpeg.c demux_asf.c demux_avi.c demux_mov.c parse_mp4.c demux_mpg.c demux_ty.c demux_ty_osd.c demux_pva.c demux_viv.c demuxer.c dvdauth.c dvdnav_stream.c open.c parse_es.c stream.c stream_file.c stream_netstream.c stream_vcd.c stream_null.c stream_ftp.c tv.c tvi_dummy.c tvi_v4l.c tvi_v4l2.c tvi_bsdbt848.c frequencies.c demux_fli.c demux_real.c demux_y4m.c yuv4mpeg.c yuv4mpeg_ratio.c demux_nuv.c demux_film.c demux_roq.c mf.c demux_mf.c demux_audio.c demux_demuxers.c demux_ogg.c demux_bmp.c cdda.c demux_rawaudio.c demux_rawvideo.c cddb.c cdinfo.c demux_rawdv.c ai_alsa.c ai_oss.c audio_in.c demux_smjpeg.c demux_lmlm4.c cue_read.c extension.c demux_gif.c demux_ts.c demux_realaud.c url.c +SRCS = mp3_hdr.c video.c mpeg_hdr.c cache2.c asfheader.c aviheader.c aviprint.c muxer.c muxer_avi.c muxer_mpeg.c demux_asf.c demux_avi.c demux_mov.c parse_mp4.c demux_mpg.c demux_ty.c demux_ty_osd.c demux_pva.c demux_viv.c demuxer.c dvdnav_stream.c open.c parse_es.c stream.c stream_file.c stream_netstream.c stream_vcd.c stream_null.c stream_ftp.c tv.c tvi_dummy.c tvi_v4l.c tvi_v4l2.c tvi_bsdbt848.c frequencies.c demux_fli.c demux_real.c demux_y4m.c yuv4mpeg.c yuv4mpeg_ratio.c demux_nuv.c demux_film.c demux_roq.c mf.c demux_mf.c demux_audio.c demux_demuxers.c demux_ogg.c demux_bmp.c cdda.c demux_rawaudio.c demux_rawvideo.c cddb.c cdinfo.c demux_rawdv.c ai_alsa.c ai_oss.c audio_in.c demux_smjpeg.c demux_lmlm4.c cue_read.c extension.c demux_gif.c demux_ts.c demux_realaud.c url.c ifeq ($(XMMS_PLUGINS),yes) SRCS += demux_xmms.c endif diff --git a/libmpdemux/demux_mpg.c b/libmpdemux/demux_mpg.c index 1a240d3d29..8ce4cfdc6b 100644 --- a/libmpdemux/demux_mpg.c +++ b/libmpdemux/demux_mpg.c @@ -14,8 +14,6 @@ #include "stheader.h" #include "mp3_hdr.h" -#include "dvdauth.h" - //#define MAX_PS_PACKETSIZE 2048 #define MAX_PS_PACKETSIZE (224*1024) @@ -38,9 +36,6 @@ static unsigned int read_mpeg_timestamp(stream_t *s,int c){ static int demux_mpg_read_packet(demuxer_t *demux,int id){ int d; int len; -#ifdef HAVE_LIBCSS - int css=0; -#endif unsigned char c=0; unsigned int pts=0; unsigned int dts=0; @@ -96,11 +91,7 @@ static int demux_mpg_read_packet(demuxer_t *demux,int id){ int hdrlen; // System-2 (.VOB) stream: if((c>>4)&3) { -#ifdef HAVE_LIBCSS - css=1; -#else mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_EncryptedVOB); -#endif } c=stream_read_char(demux->stream); pts_flags=c>>6; c=stream_read_char(demux->stream); hdrlen=c; @@ -230,12 +221,6 @@ static int demux_mpg_read_packet(demuxer_t *demux,int id){ if(ds){ mp_dbg(MSGT_DEMUX,MSGL_DBG2,"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) { - if (descrambling) dvd_css_descramble(demux->stream->buffer,key_title); else - mp_msg(MSGT_DEMUX,MSGL_WARN,MSGTR_EncryptedVOBauth); - } -#endif ds_read_packet(ds,demux->stream,len,pts/90000.0f,demux->filepos,0); // if(ds==demux->sub) parse_dvdsub(ds->last->buffer,ds->last->len); return 1; diff --git a/libmpdemux/dvdauth.c b/libmpdemux/dvdauth.c deleted file mode 100644 index bf3b0ff3ed..0000000000 --- a/libmpdemux/dvdauth.c +++ /dev/null @@ -1,323 +0,0 @@ -/* (C)2001,2002 by LGB (Gabor Lenart), based on example programs in libcss - lgb@lgb.hu - - This source is part of MPlayer project. This source is copyrighted by - the author according to rules declared in GNU/GPL license. - - 2001 Inital version (LGB) - 2001 fibmap_mplayer to avoid uid=0 mplayer need (LGB) - 2001 Support for libcss with the new API (by ???) - 2002/Jan/04 Use dlopen to access libcss.so to avoid conflict with - libdvdread [now with only libcss with old API (LGB) - 2002/Sep/21 Fix a bug which caused segmentation fault when using - -dvdkey option, since css.so was only loaded by -dvdauth. - (LGB, reported and suggested by sbmpost <wortelsapje@hotmail.com>) - Also some cosmetic fix with return value of dvd_css_descramble(). - 2002/Sep/21 Try to load css syms with AND without underscore at their - names, probably not only OpenBSD requires this so it's a - better solution (LGB). - - TODO: - support for libcss libraries with new API */ - -/* don't do anything with this source if css support was not requested */ -#include "config.h" -#ifdef HAVE_LIBCSS - -#warning FIXME: Dynamic loading of libcss.so with newer (ver>0.1) libcss API is not supported in this version! - -#include <stdio.h> -#include <stdlib.h> -//#include <string.h> // FIXME: conflicts with fs.h -#include <errno.h> -#include <unistd.h> -#include <fcntl.h> -#include <sys/types.h> -#include <sys/ioctl.h> -#include <sys/stat.h> -#include <sys/wait.h> -// #include <css.h> - -#if defined(__FreeBSD__) || defined(__NetBSD__) -# include <sys/dvdio.h> -#elif defined(__OpenBSD__) -# include <sys/cdio.h> -# define RTLD_NOW RTLD_LAZY -#elif defined(__linux__) -# include <linux/cdrom.h> -#elif defined(__sun) -# include <sun/dvdio.h> -#elif defined(hpux) -# include <sun/scsi.h> -#elif defined(__bsdi__) -# include <dvd.h> -#else -# error "Need the DVD ioctls" -#endif - -#include <dlfcn.h> -#include "dvdauth.h" - - -// #if OLD_CSS_API -/* - * provide some backward compatibiliy macros to compile this - * code using the old libcss-0.1 - */ -#define DVDHandle int -#define DVDOpenFailed (-1) - -#define DVDAuth(hdl, s) ioctl(hdl, DVD_AUTH, s) -#define DVDOpenDevice(path) open(path, O_RDONLY) -#define DVDCloseDevice(hdl) close(hdl) -// #define CSSDVDisEncrypted(hdl) CSSisEncrypted(hdl) -// #define CSSDVDAuthDisc CSSAuthDisc - - -char *dvd_auth_device=NULL; -extern char *dvd_device; -char *dvd_raw_device=NULL; -char *css_so=NULL; -unsigned char key_disc[2048]; -unsigned char key_title[5]; -unsigned char *dvdimportkey=NULL; -int descrambling=0; - - -static int css_so_is_loaded=0; - -static void *dlid; -static int (*dl_CSSisEncrypted)(int); -static int (*dl_CSSAuthDisc)(int,char *); -static int (*dl_CSSAuthTitle)(int, char *,int); -static int (*dl_CSSGetASF)(int); -static int (*dl_CSSDecryptTitleKey)(char *, char *); -static void (*dl_CSSDescramble)(u_char *, u_char *); - - -void dvd_css_descramble ( u_char *sec , u_char *key ) -{ - (*dl_CSSDescramble)(sec,key); -} - - -#ifdef __linux__ -#include <linux/fs.h> - -#ifndef FIBMAP -#define FIBMAP 1 -#endif - - -static int path_to_lba (char *path) -{ - int lba = 0; - char cmd[100]; - FILE *fp; - - snprintf(cmd,sizeof(cmd),"fibmap_mplayer %s",path); - fp=popen(cmd,"r"); - if (fp) { - int ret; - memset(cmd,0,sizeof(cmd)); - fgets(cmd,99,fp); -// printf("DVD: cmd: %s\n",cmd); - if ((ret=pclose(fp))) - fprintf(stderr,"DVD: fibmap_mplayer: %s\n",*cmd?cmd:"no error info"); - if (cmd[0]<'0'||cmd[0]>'9') fp=NULL; else { - if(WIFEXITED(ret) && !WEXITSTATUS(ret)) { - lba=atoi(cmd); - printf("DVD: fibmap_mplayer is being used\n"); - } else - fp=NULL; - } - } - if (!fp) { - int fd; - printf("DVD: fibmap_mplayer could not run, trying with ioctl() ...\n"); - if ((fd = open(path, O_RDONLY)) == -1) { - fprintf(stderr, "DVD: Cannot open file %s: %s", - path ? path : "(NULL)", strerror(errno)); - return -1; - } - if (ioctl(fd, FIBMAP, &lba) != 0) { - perror("DVD: ioctl FIBMAP"); - fprintf(stderr," Hint: run mplayer as root (or better to install fibmap_mplayer as suid root)!\n"); - close(fd); - return -1; - } - close(fd); - } - printf("DVD: LBA: %d\n",lba); - return lba; -} - -#else /*linux*/ - -static int path_to_lba (char *path) -{ -#warning translating pathname to iso9660 LBA is not supported on this platform - fprintf(stderr, "DVD: Translating pathname to iso9660 LBA is not supported on this platform\n"); - return -1; -} - -#endif /*linux*/ - - -static int CSSDVDAuthTitlePath(DVDHandle hdl,unsigned char *key_title,char *path) -{ - int lba=path_to_lba(path); - if (lba==-1) return -1; - return (*dl_CSSAuthTitle)(hdl,key_title,lba); -} - - - -static void reset_agids ( DVDHandle dvd ) -{ -#if !defined(DVD_AUTH) && defined(DVDIOCREPORTKEY) - struct dvd_authinfo ai; - int i; - for (i = 0; i < 4; i++) { - memset(&ai, 0, sizeof(ai)); - ai.format = DVD_INVALIDATE_AGID; - ai.agid = i; - ioctl(dvd, DVDIOCREPORTKEY, &ai); - } -#else -#if defined(__OpenBSD__) - union -#endif - dvd_authinfo ai; - int i; - for (i = 0; i < 4; i++) { - memset(&ai, 0, sizeof(ai)); - ai.type = DVD_INVALIDATE_AGID; - ai.lsa.agid = i; - DVDAuth(dvd, &ai); - } -#endif -} - - -static int dvd_load_css_so ( void ) -{ - if (css_so_is_loaded) { - printf("DVD: warning: attempt to load css.so twice, ignoring.\n"); - return 0; - } - if (!css_so) css_so=strdup("libcss.so"); - printf("DVD: opening libcss.so as %s ...\n",css_so); - dlid=dlopen(css_so,RTLD_NOW); - if (!dlid) { - printf("DVD: dlopen: %s\n",dlerror()); - return 1; - } printf("DVD: dlopen OK!\n"); - -/* #ifdef __OpenBSD__ -#define CSS_DLSYM(v,s) if (!(v=dlsym(dlid,"_" s))) {\ -fprintf(stderr,"DVD: %s\n Hint: use libcss version 0.1!\n",dlerror());\ -return 1; } -#else -#define CSS_DLSYM(v,s) if (!(v=dlsym(dlid,s))) {\ -fprintf(stderr,"DVD: %s\n Hint: use libcss version 0.1!\n",dlerror());\ -return 1; } -#endif */ - -#define CSS_DLSYM(v,s) \ -if (!(v=dlsym(dlid,s))) {\ - if (!(v=dlsym(dlid,"_" s))) {\ - fprintf(stderr,"DVD: %s\n Hint: use libcss version 0.1!\n",dlerror());\ - return 1;\ - }\ -} - - - CSS_DLSYM(dl_CSSisEncrypted,"CSSisEncrypted"); - CSS_DLSYM(dl_CSSAuthDisc,"CSSAuthDisc"); - CSS_DLSYM(dl_CSSAuthTitle,"CSSAuthTitle"); - CSS_DLSYM(dl_CSSGetASF,"CSSGetASF"); - CSS_DLSYM(dl_CSSDecryptTitleKey,"CSSDecryptTitleKey"); - CSS_DLSYM(dl_CSSDescramble,"CSSDescramble"); - -#undef CSS_DLSYM - - css_so_is_loaded=1; - printf("DVD: shared object %s is loaded normally.\n",css_so); - return 0; -} - - -int dvd_import_key ( unsigned char *hexkey ) -{ - unsigned char *t=key_title; - int digit=4,len; - memset(key_title,0,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)<<digit; - else if (*hexkey>='0'&&*hexkey<='9') *t|=(*hexkey-'0')<<digit; - else return 1; - if (digit) digit=0; else { - digit=4; - t++; - } - hexkey++; - } - if (*hexkey) return 1; - printf("DVD: DVD key (requested): %02X%02X%02X%02X%02X\n",key_title[0],key_title[1],key_title[2],key_title[3],key_title[4]); - if (dvd_load_css_so()) return 1; - descrambling=1; - return 0; -} - - - -int dvd_auth ( char *dev , char *filename ) -{ - DVDHandle dvd; /* DVD device handle */ - - if (dvd_load_css_so()) return 1; - - if ((dvd=DVDOpenDevice(dev)) == DVDOpenFailed) { - fprintf(stderr,"DVD: cannot open DVD device \"%s\": %s.\n", - dev, strerror(errno)); - return 1; - } - - if (!(*dl_CSSisEncrypted)(dvd)) { - printf("DVD: DVD is not encrypted! Skipping authentication!\n(Note: You should not use the -dvdauth switch for discs without encryption!)\n"); - DVDCloseDevice(dvd); - return 0; - } else printf("DVD: DVD is encrypted, issuing authentication ...\n"); - /* reset AGIDs */ - reset_agids(dvd); - /* authenticate disc */ - if ((*dl_CSSAuthDisc)(dvd,key_disc)) { - fprintf(stderr,"DVD: CSSDVDAuthDisc() failed.\n"); - DVDCloseDevice(dvd); - return 1; - } - if (CSSDVDAuthTitlePath(dvd,key_title,filename)) { - fprintf(stderr,"DVD: CSSDVDAuthTitle() failed.\n"); - DVDCloseDevice(dvd); - return 1; - } - - /* decrypting title */ - if ((*dl_CSSDecryptTitleKey)(key_title, key_disc) < 0) { - fprintf(stderr,"DVD: CSSDecryptTitleKey() failed.\n"); - DVDCloseDevice(dvd); - return 1; - } - - DVDCloseDevice(dvd); - printf("DVD: DVD title key is: %02X%02X%02X%02X%02X\n",key_title[0],key_title[1],key_title[2],key_title[3],key_title[4]); - descrambling=1; - return 0; -} - - -#endif diff --git a/libmpdemux/dvdauth.h b/libmpdemux/dvdauth.h deleted file mode 100644 index 9691c1e829..0000000000 --- a/libmpdemux/dvdauth.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef HAVE_LIBCSS -#ifndef _MPLAYER_CSS_H -#define _MPLAYER_CSS_H - -extern char *dvd_auth_device; -extern unsigned char key_disc[]; -extern unsigned char key_title[]; -extern unsigned char *dvdimportkey; -extern int descrambling; -extern char *css_so; - -int dvd_auth ( char *, char * ); -int dvd_import_key ( unsigned char * ); -void dvd_css_descramble ( u_char *, u_char * ); - -#endif -#endif |