]> git.sesse.net Git - vlc/blob - extras/contrib/src/Patches/dvdnav.patch
* ALL: Do no longer assume a default DVD drive. If no DVD drive is
[vlc] / extras / contrib / src / Patches / dvdnav.patch
1 diff -ru libdvdnav-0.1.10/configure.ac libdvdnav/configure.ac
2 --- libdvdnav-0.1.10/configure.ac       2004-06-10 23:13:02.000000000 +0200
3 +++ libdvdnav/configure.ac      2005-08-31 19:56:21.000000000 +0200
4 @@ -8,7 +8,7 @@
5  dnl --------------------------------------------------------------
6  dnl Require autoconf version 2.53
7  dnl --------------------------------------------------------------
8 -AC_PREREQ(2.53)
9 +AC_PREREQ(2.52)
10  
11  dnl --------------------------------------------------------------
12  dnl Making releases: DVDNAV_SUB += 1; change LT_* accordingly
13 @@ -113,6 +113,8 @@
14  fi
15  AC_SUBST(STATIC)
16  
17 +
18 +
19  dnl --------------------------------------------------------------
20  dnl Checks for header files.
21  dnl --------------------------------------------------------------
22 @@ -139,7 +141,7 @@
23      THREAD_CFLAGS="-I/usr/local/include -D_THREAD_SAFE"
24      CFLAGS="$THREAD_CFLAGS $CFLAGS"
25      ;;
26 -  *mingw32* | *cygwin*)
27 +  *mingw32* | *cygwin* | *beos*)
28      ;;
29    *)
30      AC_CHECK_LIB(pthread, pthread_create,
31 @@ -150,26 +152,63 @@
32  AC_SUBST(THREAD_LIBS)
33  AC_SUBST(THREAD_CFLAGS)
34  
35 +link_dvdcss=no
36 +dvdcss_path=""
37  dnl ---------------------------------------------
38 -dnl dynamic linker
39 +dnl dvdcss checking
40  dnl ---------------------------------------------
41 -case $host in
42 -  *mingw32*)
43 -    CFLAGS="-idirafter \$(top_srcdir)/msvc/include $CFLAGS"
44 -    LDFLAGS="-no-undefined $LDFLAGS"
45 -    ;;
46 -  *cygwin*)
47 -    LDFLAGS="-no-undefined $LDFLAGS"
48 -    ;;
49 -  *)
50 -    AC_CHECK_LIB(c, dlopen,
51 -                DYNAMIC_LD_LIBS="",
52 -                AC_CHECK_LIB(dl, dlopen,
53 -                             DYNAMIC_LD_LIBS="-ldl",
54 -                             AC_MSG_ERROR(dynamic linker needed)))
55 -    AC_SUBST(DYNAMIC_LD_LIBS)
56 -    ;;
57 -esac
58 +AC_ARG_WITH( [libdvdcss],
59 +    [ --with-libdvdcss[=PATH]    force linking against libdvdcss],
60 +    [if test x"$withval" != xno; then
61 +       link_dvdcss=yes
62 +     fi
63 +     if test x"$withval" != xyes; then
64 +       dvdcss_path=$withval
65 +     fi])
66 +
67 +if test x"$link_dvdcss" != xyes; then
68 +dnl dlopen libdvdcss
69 +  AC_CHECK_FUNC( dlopen,
70 +    [DL_LIBS="" ].
71 +    AC_CHECK_LIB( dl, dlopen,
72 +      [DL_LIBS=-ld ],
73 +      AC_MSG_ERROR(You need libdl (dlopen))
74 +    )
75 +  )
76 +else
77 +dnl link with libdvdcss
78 +  if test -z "$dvdcss_path"; then
79 +    AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
80 +      [ CSS_LIBS=-ldvdcss ],
81 +      AC_MSG_ERROR(You need libdvdcss.so.2 or later)
82 +    )
83 +    AC_CHECK_HEADERS(dvdcss/dvdcss.h,
84 +      [ ],
85 +      AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
86 +    )
87 +  else
88 +    saved_CFLAGS=$CFLAGS
89 +    CFLAGS="$CFLAGS -L$dvdcss_path/lib"
90 +    AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
91 +      [ CSS_LIBS="-L$dvdcss_path/lib -R$dvdcss_path/lib -ldvdcss"
92 +        CSS_CFLAGS=-I$dvdcss_path/include ],
93 +      AC_MSG_ERROR(You need libdvdcss.so.2 or later)
94 +    )
95 +    CFLAGS=$saved_CFLAGS
96 +    dnl -w added to shutup GCC3.1's cpp warning about -I/usr/local
97 +    saved_CPPFLAGS=$CPPFLAGS
98 +    CPPFLAGS="-w $CPPFLAGS -I$dvdcss_path/include"
99 +    AC_CHECK_HEADERS(dvdcss/dvdcss.h,
100 +      [ ],
101 +      AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
102 +    )
103 +    CPPFLAGS=$saved_CPPFLAGS
104 +  fi
105 +fi
106 +
107 +AC_SUBST(DL_LIBS)
108 +AC_SUBST(CSS_LIBS)
109 +AC_SUBST(CSS_CFLAGS)
110  
111  dnl ---------------------------------------------
112  dnl cflags
113 diff -ru libdvdnav-0.1.10/examples/Makefile.am libdvdnav/examples/Makefile.am
114 --- libdvdnav-0.1.10/examples/Makefile.am       2004-01-11 22:43:12.000000000 +0100
115 +++ libdvdnav/examples/Makefile.am      2005-08-31 19:56:21.000000000 +0200
116 @@ -7,7 +7,7 @@
117  noinst_PROGRAMS = menus
118  
119  menus_SOURCES = menus.c
120 -menus_LDFLAGS = -L$(top_srcdir)/src/
121 +menus_LDFLAGS = -L$(top_srcdir)/src/ $(CSS_LIBS)
122  menus_LDADD   = $(DVDNAV_LIB)
123  
124  $(DVDNAV_LIB):
125 diff -ru libdvdnav-0.1.10/src/dvdnav_internal.h libdvdnav/src/dvdnav_internal.h
126 --- libdvdnav-0.1.10/src/dvdnav_internal.h      2004-02-13 20:16:17.000000000 +0100
127 +++ libdvdnav/src/dvdnav_internal.h     2005-08-31 19:56:21.000000000 +0200
128 @@ -58,6 +58,15 @@
129  #include <io.h> /* read() */
130  #define lseek64 _lseeki64
131  
132 +#elif defined(__BEOS__)
133 +
134 +#include <OS.h>
135 +typedef sem_id pthread_mutex_t;
136 +#define pthread_mutex_init(a, b) (*a) = create_sem( 1,"" )
137 +#define pthread_mutex_lock(a)    acquire_sem( *a )
138 +#define pthread_mutex_unlock(a)  release_sem( *a )
139 +#define pthread_mutex_destroy(a) delete_sem( *a )
140 +
141  #else
142  
143  #include <pthread.h>
144 diff -ru libdvdnav-0.1.10/src/dvdread/bswap.h libdvdnav/src/dvdread/bswap.h
145 --- libdvdnav-0.1.10/src/dvdread/bswap.h        2004-01-11 22:43:13.000000000 +0100
146 +++ libdvdnav/src/dvdread/bswap.h       2005-08-31 19:56:21.000000000 +0200
147 @@ -65,7 +65,7 @@
148   * functionality! 
149   */
150  
151 -#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__CYGWIN__)
152 +#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__CYGWIN__) || defined(__BEOS__)
153  #define B2N_16(x) \
154   x = ((((x) & 0xff00) >> 8) | \
155        (((x) & 0x00ff) << 8))
156 diff -ru libdvdnav-0.1.10/src/dvdread/dvd_input.h libdvdnav/src/dvdread/dvd_input.h
157 --- libdvdnav-0.1.10/src/dvdread/dvd_input.h    2004-01-11 22:43:13.000000000 +0100
158 +++ libdvdnav/src/dvdread/dvd_input.h   2005-08-31 19:56:21.000000000 +0200
159 @@ -20,6 +20,8 @@
160   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
161   */
162  
163 +#define dvdinput_setup dvdnav_dvdinput_setup
164 +
165  /**
166   * Defines and flags.  Make sure they fit the libdvdcss API!
167   */
168 diff -ru libdvdnav-0.1.10/src/dvdread/dvd_reader.c libdvdnav/src/dvdread/dvd_reader.c
169 --- libdvdnav-0.1.10/src/dvdread/dvd_reader.c   2004-03-03 17:48:36.000000000 +0100
170 +++ libdvdnav/src/dvdread/dvd_reader.c  2005-08-31 19:58:34.000000000 +0200
171 @@ -346,9 +346,7 @@
172         }
173  #endif
174      
175 -    ret = stat( path, &fileinfo );
176 -
177 -    if( ret < 0 ) {
178 +    if( *path && (ret = stat( path, &fileinfo )) < 0 ) {
179  
180          /* maybe "host:port" url? try opening it with acCeSS library */
181          if( strchr(path,':') ) {
182 @@ -365,7 +363,7 @@
183      }
184  
185      /* First check if this is a block/char device or a file*/
186 -    if( S_ISBLK( fileinfo.st_mode ) || 
187 +    if( !*path || S_ISBLK( fileinfo.st_mode ) || 
188         S_ISCHR( fileinfo.st_mode ) || 
189         S_ISREG( fileinfo.st_mode ) ) {
190  
191 @@ -403,14 +401,16 @@
192  
193         /* Resolve any symlinks and get the absolut dir name. */
194         {
195 +           char *current_path;
196             char *new_path;
197 -           int cdir = open( ".", O_RDONLY );
198             
199 -           if( cdir >= 0 ) {
200 +           current_path = getcwd( NULL, PATH_MAX );
201 +           if( current_path ) {
202                 chdir( path_copy );
203                 new_path = getcwd( NULL, PATH_MAX );
204 -               fchdir( cdir );
205 -               close( cdir );
206 +               chdir( current_path );
207 +               free( current_path );
208 +
209                 if( new_path ) {
210                     free( path_copy );
211                     path_copy = new_path;
212 @@ -585,10 +585,12 @@
213              sprintf( filename, "%s%s%s", path,
214                       ( ( path[ strlen( path ) - 1 ] == '/' ) ? "" : "/" ),
215                       ent->d_name );
216 +            closedir( dir );
217              return 0;
218          }
219      }
220  
221 +    closedir( dir );
222      return -1;
223  }
224  
225 diff -ru libdvdnav-0.1.10/src/dvdread/dvd_reader.h libdvdnav/src/dvdread/dvd_reader.h
226 --- libdvdnav-0.1.10/src/dvdread/dvd_reader.h   2004-02-01 18:55:19.000000000 +0100
227 +++ libdvdnav/src/dvdread/dvd_reader.h  2005-08-31 19:56:21.000000000 +0200
228 @@ -21,6 +21,20 @@
229   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
230   */
231  
232 +#define UDFReadBlocksRaw    dvdnav_UDFReadBlocksRaw
233 +#define DVDUDFCacheLevel    dvdnav_DVDUDFCacheLevel
234 +#define DVDOpen             dvdnav_DVDOpen
235 +#define DVDClose            dvdnav_DVDClose
236 +#define DVDOpenFile         dvdnav_DVDOpenFile
237 +#define DVDCloseFile        dvdnav_DVDCloseFile
238 +#define DVDReadBlocks       dvdnav_DVDReadBlocks
239 +#define DVDFileSeek         dvdnav_DVDFileSeek
240 +#define DVDReadBytes        dvdnav_DVDReadBytes
241 +#define DVDFileSize         dvdnav_DVDFileSize
242 +#define DVDDiscID           dvdnav_DVDDiscID
243 +#define DVDISOVolumeInfo    dvdnav_DVDISOVolumeInfo
244 +#define DVDUDFVolumeInfo    dvdnav_DVDUDFVolumeInfo
245 +
246  #ifdef _MSC_VER
247  #include <config.h>
248  
249 diff -ru libdvdnav-0.1.10/src/dvdread/dvd_udf.h libdvdnav/src/dvdread/dvd_udf.h
250 --- libdvdnav-0.1.10/src/dvdread/dvd_udf.h      2004-01-11 22:43:13.000000000 +0100
251 +++ libdvdnav/src/dvdread/dvd_udf.h     2005-08-31 19:56:21.000000000 +0200
252 @@ -31,6 +31,13 @@
253   * http://www.gnu.org/copyleft/gpl.html
254   */
255  
256 +#define GetUDFCacheHandle           dvdnav_GetUDFCacheHandle
257 +#define SetUDFCacheHandle           dvdnav_SetUDFCacheHandle
258 +#define FreeUDFCache                dvdnav_FreeUDFCache
259 +#define UDFFindFile                 dvdnav_UDFFindFile
260 +#define UDFGetVolumeIdentifier      dvdnav_UDFGetVolumeIdentifier
261 +#define UDFGetVolumeSetIdentifier   dvdnav_UDFGetVolumeSetIdentifier
262 +
263  #include <inttypes.h>
264  
265  #include "dvd_reader.h"
266 diff -ru libdvdnav-0.1.10/src/dvdread/ifo_print.h libdvdnav/src/dvdread/ifo_print.h
267 --- libdvdnav-0.1.10/src/dvdread/ifo_print.h    2004-01-11 22:43:13.000000000 +0100
268 +++ libdvdnav/src/dvdread/ifo_print.h   2005-08-31 19:56:21.000000000 +0200
269 @@ -20,6 +20,21 @@
270  #ifndef IFO_PRINT_H_INCLUDED
271  #define IFO_PRINT_H_INCLUDED
272  
273 +#define ifo_print_VMGI_MAT      dvdnav_ifo_print_VMGI_MAT
274 +#define ifo_print_VTSI_MAT      dvdnav_ifo_print_VTSI_MAT
275 +#define ifo_print_PGC           dvdnav_ifo_print_PGC
276 +#define ifo_print_TT_SRPT       dvdnav_ifo_print_TT_SRPT
277 +#define ifo_print_VTS_PTT_SRPT  dvdnav_ifo_print_VTS_PTT_SRPT
278 +#define ifo_print_PTL_MAIT      dvdnav_ifo_print_PTL_MAIT
279 +#define ifo_print_VTS_TMAPT     dvdnav_ifo_print_VTS_TMAPT
280 +#define ifo_print_C_ADT         dvdnav_ifo_print_C_ADT
281 +#define ifo_print_VOBU_ADMAP    dvdnav_ifo_print_VOBU_ADMAP
282 +#define ifo_print_menu_name     dvdnav_ifo_print_menu_name
283 +#define ifo_print_PGCIT         dvdnav_ifo_print_PGCIT
284 +#define ifo_print_PGCI_UT       dvdnav_ifo_print_PGCI_UT
285 +#define ifo_print_VTS_ATRT      dvdnav_ifo_print_VTS_ATRT
286 +#define ifo_print               dvdnav_ifo_print
287 +
288  #include <inttypes.h>
289  #ifdef DVDNAV_COMPILE
290  #  include "ifo_types.h"
291 diff -ru libdvdnav-0.1.10/src/dvdread/ifo_read.h libdvdnav/src/dvdread/ifo_read.h
292 --- libdvdnav-0.1.10/src/dvdread/ifo_read.h     2004-01-11 22:43:13.000000000 +0100
293 +++ libdvdnav/src/dvdread/ifo_read.h    2005-08-31 19:56:21.000000000 +0200
294 @@ -20,6 +20,37 @@
295   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
296   */
297  
298 +#define ifoOpen                     dvdnav_ifoOpen
299 +#define ifoOpenVMGI                 dvdnav_ifoOpenVMGI
300 +#define ifoOpenVTSI                 dvdnav_ifoOpenVTSI
301 +#define ifoClose                    dvdnav_ifoClose
302 +#define ifoRead_FP_PGC              dvdnav_ifoRead_FP_PGC
303 +#define ifoFree_FP_PGC              dvdnav_ifoFree_FP_PGC
304 +#define ifoRead_TT_SRPT             dvdnav_ifoRead_TT_SRPT
305 +#define ifoFree_TT_SRPT             dvdnav_ifoFree_TT_SRPT
306 +#define ifoRead_VTS_PTT_SRPT        dvdnav_ifoRead_VTS_PTT_SRPT
307 +#define ifoFree_VTS_PTT_SRPT        dvdnav_ifoFree_VTS_PTT_SRPT
308 +#define ifoRead_PTL_MAIT            dvdnav_ifoRead_PTL_MAIT
309 +#define ifoFree_PTL_MAIT            dvdnav_ifoFree_PTL_MAIT
310 +#define ifoRead_VTS_TMAPT           dvdnav_ifoRead_VTS_TMAPT
311 +#define ifoFree_VTS_TMAPT           dvdnav_ifoFree_VTS_TMAPT
312 +#define ifoRead_TITLE_C_ADT         dvdnav_ifoRead_TITLE_C_ADT
313 +#define ifoRead_C_ADT               dvdnav_ifoRead_C_ADT
314 +#define ifoFree_C_ADT               dvdnav_ifoFree_C_ADT
315 +#define ifoFree_TITLE_C_ADT         dvdnav_ifoFree_TITLE_C_ADT
316 +#define ifoRead_TITLE_VOBU_ADMAP    dvdnav_ifoRead_TITLE_VOBU_ADMAP
317 +#define ifoRead_VOBU_ADMAP          dvdnav_ifoRead_VOBU_ADMAP
318 +#define ifoFree_VOBU_ADMAP          dvdnav_ifoFree_VOBU_ADMAP
319 +#define ifoFree_TITLE_VOBU_ADMAP    dvdnav_ifoFree_TITLE_VOBU_ADMAP
320 +#define ifoRead_PGCIT               dvdnav_ifoRead_PGCIT
321 +#define ifoFree_PGCIT               dvdnav_ifoFree_PGCIT
322 +#define ifoRead_PGCI_UT             dvdnav_ifoRead_PGCI_UT
323 +#define ifoFree_PGCI_UT             dvdnav_ifoFree_PGCI_UT
324 +#define ifoRead_VTS_ATRT            dvdnav_ifoRead_VTS_ATRT
325 +#define ifoFree_VTS_ATRT            dvdnav_ifoFree_VTS_ATRT
326 +#define ifoRead_TXTDT_MGI           dvdnav_ifoRead_TXTDT_MGI
327 +#define ifoFree_TXTDT_MGI           dvdnav_ifoFree_TXTDT_MGI
328 +
329  #include "ifo_types.h"
330  #include "dvd_reader.h"
331  
332 diff -ru libdvdnav-0.1.10/src/dvdread/md5.h libdvdnav/src/dvdread/md5.h
333 --- libdvdnav-0.1.10/src/dvdread/md5.h  2004-01-11 22:43:13.000000000 +0100
334 +++ libdvdnav/src/dvdread/md5.h 2005-08-31 19:56:21.000000000 +0200
335 @@ -21,6 +21,14 @@
336  #ifndef _MD5_H
337  #define _MD5_H 1
338  
339 +#define md5_init_ctx      dvdnav_md5_init_ctx
340 +#define md5_read_ctx      dvdnav_md5_read_ctx
341 +#define md5_finish_ctx    dvdnav_md5_finish_ctx
342 +#define md5_stream        dvdnav_md5_stream
343 +#define md5_buffer        dvdnav_md5_buffer
344 +#define md5_process_block dvdnav_md5_process_block
345 +#define md5_process_bytes dvdnav_md5_process_bytes
346 +
347  #include <stdio.h>
348  
349  #if defined HAVE_LIMITS_H || _LIBC