libdvdcss: Sync some minor changes from upstream, up to r237
[mplayer/glamo.git] / libdvdcss / libdvdcss.h
blob6db228c1ca3152b84d85286c176ad8c8c14a7803
1 /*****************************************************************************
2 * libdvdcss.h: private DVD reading library data
3 *****************************************************************************
4 * Copyright (C) 1998-2001 VideoLAN
5 * $Id$
7 * Authors: Stéphane Borel <stef@via.ecp.fr>
8 * Sam Hocevar <sam@zoy.org>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License along
21 * with libdvdcss; if not, write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 *****************************************************************************/
25 #ifndef DVDCSS_LIBDVDCSS_H
26 #define DVDCSS_LIBDVDCSS_H
28 #include "dvdcss/dvdcss.h"
29 #include "css.h"
31 struct iovec;
33 /*****************************************************************************
34 * The libdvdcss structure
35 *****************************************************************************/
36 struct dvdcss_s
38 /* File descriptor */
39 char * psz_device;
40 int i_fd;
41 int i_read_fd;
42 int i_pos;
44 /* File handling */
45 int ( * pf_seek ) ( dvdcss_t, int );
46 int ( * pf_read ) ( dvdcss_t, void *, int );
47 int ( * pf_readv ) ( dvdcss_t, struct iovec *, int );
49 /* Decryption stuff */
50 int i_method;
51 css_t css;
52 int b_ioctls;
53 int b_scrambled;
54 dvd_title_t *p_titles;
56 /* Key cache directory and pointer to the filename */
57 char psz_cachefile[PATH_MAX];
58 char * psz_block;
60 /* Error management */
61 char * psz_error;
62 int b_errors;
63 int b_debug;
65 #ifdef WIN32
66 int b_file;
67 char * p_readv_buffer;
68 int i_readv_buf_size;
69 #endif
71 #if !defined(WIN32) && !defined(SYS_OS2)
72 int i_raw_fd;
73 #endif
76 /*****************************************************************************
77 * libdvdcss method: used like init flags
78 *****************************************************************************/
79 #define DVDCSS_METHOD_KEY 0
80 #define DVDCSS_METHOD_DISC 1
81 #define DVDCSS_METHOD_TITLE 2
83 /*****************************************************************************
84 * Functions used across the library
85 *****************************************************************************/
86 #define print_error(dvdcss,msg) _print_error(dvdcss,msg)
87 #if defined( _MSC_VER )
88 #include <stdarg.h>
89 __forceinline void print_debug(dvdcss_t dvdcss, const char *msg,...)
91 va_list args;
93 fprintf( stderr, "libdvdcss debug: " );
94 va_start( args, msg );
95 vfprintf( stderr, msg, args );
96 va_end( args );
97 fprintf( stderr, "\n" );
99 #else
100 #define print_debug(dvdcss,msg,args...) \
101 if( dvdcss->b_debug ) \
103 fprintf( stderr, "libdvdcss debug: " ); \
104 fprintf( stderr, msg, ##args ); \
105 fprintf( stderr, "\n" ); \
107 #endif
109 void _print_error ( dvdcss_t, char * );
111 #endif /* DVDCSS_LIBDVDCSS_H */