1 diff -ur libdvdnav/Makefile.am libdvdnav.new/Makefile.am
2 --- libdvdnav/Makefile.am 2004-10-26 18:26:07.000000000 +0100
3 +++ libdvdnav.new/Makefile.am 2005-11-28 16:19:13.343750000 +0000
8 -SUBDIRS = src examples doc misc m4
11 EXTRA_DIST = autogen.sh \
13 diff -ur libdvdnav/src/dvdnav.c libdvdnav.new/src/dvdnav.c
14 --- libdvdnav/src/dvdnav.c 2005-02-11 12:33:19.000000000 +0000
15 +++ libdvdnav.new/src/dvdnav.c 2005-11-28 16:19:13.328125000 +0000
18 #include "dvdnav_internal.h"
19 #include "read_cache.h"
20 -#include "nav_read.h"
24 diff -ur libdvdnav/src/dvdnav.h libdvdnav.new/src/dvdnav.h
25 --- libdvdnav/src/dvdnav.h 2005-02-11 12:33:19.000000000 +0000
26 +++ libdvdnav.new/src/dvdnav.h 2005-11-28 16:19:13.328125000 +0000
31 +#include <inttypes.h>
33 +#include <dvdread/dvd_reader.h>
34 +#include <dvdread/nav_types.h>
35 +#include <dvdread/nav_read.h>
36 +#include <dvdread/ifo_types.h> /* For vm_cmd_t */
39 # include "dvdnav_events.h"
40 # include "dvd_types.h"
41 -# include "dvd_reader.h"
42 -# include "ifo_types.h" /* For vm_cmd_t */
44 # include <dvdnav/dvdnav_events.h>
45 # include <dvdnav/dvd_types.h>
46 -# include <dvdnav/dvd_reader.h>
47 -# include <dvdnav/ifo_types.h> /* For vm_cmd_t */
51 diff -ur libdvdnav/src/dvdnav_events.h libdvdnav.new/src/dvdnav_events.h
52 --- libdvdnav/src/dvdnav_events.h 2005-02-11 12:33:19.000000000 +0000
53 +++ libdvdnav.new/src/dvdnav_events.h 2005-11-28 16:19:13.328125000 +0000
55 #ifndef DVDNAV_EVENTS_H_INCLUDED
56 #define DVDNAV_EVENTS_H_INCLUDED
58 -#include "ifo_types.h"
59 -#include "dvd_reader.h"
60 -#include "nav_types.h"
65 diff -ur libdvdnav/src/dvdread/Makefile.am libdvdnav.new/src/dvdread/Makefile.am
66 --- libdvdnav/src/dvdread/Makefile.am 2004-05-19 19:31:11.000000000 +0100
67 +++ libdvdnav.new/src/dvdread/Makefile.am 2005-12-01 22:26:05.078125000 +0000
69 include $(top_srcdir)/misc/Makefile.common
71 -includedir = ${prefix}/include/dvdnav
72 +includedir = ${prefix}/include/dvdread
74 AM_CPPFLAGS = -DDVDNAV_COMPILE -I$(top_srcdir)/src/vm
76 -noinst_LTLIBRARIES = libdvdread.la
77 +lib_LTLIBRARIES = libdvdread.la
79 libdvdread_la_SOURCES = dvd_reader.c nav_read.c ifo_read.c \
80 dvd_input.c dvd_udf.c md5.c nav_print.c ifo_print.c \
81 diff -ur libdvdnav/src/dvdread/bswap.h libdvdnav.new/src/dvdread/bswap.h
82 --- libdvdnav/src/dvdread/bswap.h 2004-01-11 21:43:13.000000000 +0000
83 +++ libdvdnav.new/src/dvdread/bswap.h 2005-12-01 21:55:20.328125000 +0000
88 -#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__CYGWIN__)
89 +#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__CYGWIN__) || defined(__BEOS__)
91 x = ((((x) & 0xff00) >> 8) | \
92 (((x) & 0x00ff) << 8))
94 (((x) & 0x0000ff00) << 8) | \
95 (((x) & 0x000000ff) << 24))
97 - x = ((((x) & 0xff00000000000000) >> 56) | \
98 - (((x) & 0x00ff000000000000) >> 40) | \
99 - (((x) & 0x0000ff0000000000) >> 24) | \
100 - (((x) & 0x000000ff00000000) >> 8) | \
101 - (((x) & 0x00000000ff000000) << 8) | \
102 - (((x) & 0x0000000000ff0000) << 24) | \
103 - (((x) & 0x000000000000ff00) << 40) | \
104 - (((x) & 0x00000000000000ff) << 56))
105 + x = ((((x) & 0xff00000000000000LL) >> 56) | \
106 + (((x) & 0x00ff000000000000LL) >> 40) | \
107 + (((x) & 0x0000ff0000000000LL) >> 24) | \
108 + (((x) & 0x000000ff00000000LL) >> 8) | \
109 + (((x) & 0x00000000ff000000LL) << 8) | \
110 + (((x) & 0x0000000000ff0000LL) << 24) | \
111 + (((x) & 0x000000000000ff00LL) << 40) | \
112 + (((x) & 0x00000000000000ffLL) << 56))
116 diff -ur libdvdnav/src/dvdread/dvd_input.c libdvdnav.new/src/dvdread/dvd_input.c
117 --- libdvdnav/src/dvdread/dvd_input.c 2004-04-09 13:15:26.000000000 +0100
118 +++ libdvdnav.new/src/dvdread/dvd_input.c 2005-11-30 23:07:47.140625000 +0000
124 +#if defined(HAVE_INTTYPES_H)
125 +#include <inttypes.h>
126 +#elif defined(HAVE_STDINT_H)
133 #include "dvd_reader.h"
134 #include "dvd_input.h"
137 +# define lseek _lseeki64
139 +# define off_t int64_t
142 /* The function pointers that is the exported interface of this file. */
143 dvd_input_t (*dvdinput_open) (const char *);
144 diff -ur libdvdnav/src/dvdread/dvd_reader.c libdvdnav.new/src/dvdread/dvd_reader.c
145 --- libdvdnav/src/dvdread/dvd_reader.c 2004-09-12 16:18:16.000000000 +0100
146 +++ libdvdnav.new/src/dvdread/dvd_reader.c 2005-12-01 22:19:07.750000000 +0000
151 - ret = stat( path, &fileinfo );
154 + if( *path && (ret = stat( path, &fileinfo ) < 0) ) {
156 /* maybe "host:port" url? try opening it with acCeSS library */
157 if( strchr(path,':') ) {
161 /* First check if this is a block/char device or a file*/
162 - if( S_ISBLK( fileinfo.st_mode ) ||
163 + if( !*path || S_ISBLK( fileinfo.st_mode ) ||
164 S_ISCHR( fileinfo.st_mode ) ||
165 S_ISREG( fileinfo.st_mode ) ) {
167 @@ -404,14 +402,15 @@
169 /* Resolve any symlinks and get the absolut dir name. */
171 + char *current_path;
173 - int cdir = open( ".", O_RDONLY );
177 + current_path = getcwd( NULL, PATH_MAX );
178 + if( current_path ) {
180 new_path = getcwd( NULL, PATH_MAX );
183 + chdir( current_path );
184 + free( current_path );
187 path_copy = new_path;
188 @@ -586,10 +585,12 @@
189 sprintf( filename, "%s%s%s", path,
190 ( ( path[ strlen( path ) - 1 ] == '/' ) ? "" : "/" ),
201 diff -ur libdvdnav/src/highlight.c libdvdnav.new/src/highlight.c
202 --- libdvdnav/src/highlight.c 2005-02-11 12:33:19.000000000 +0000
203 +++ libdvdnav.new/src/highlight.c 2005-11-28 16:19:13.343750000 +0000
208 -#include "nav_types.h"
209 #include "dvdnav_internal.h"
212 diff -ur libdvdnav/src/remap.c libdvdnav.new/src/remap.c
213 --- libdvdnav/src/remap.c 2005-02-11 12:33:19.000000000 +0000
214 +++ libdvdnav.new/src/remap.c 2005-11-28 16:19:13.343750000 +0000
218 /* Build the map filename */
219 - home = getenv("HOME"); assert(home);
220 + home = getenv("HOME");
222 + fprintf(MSG_OUT, "libdvdnav: Unable to find map for title '%s'\n", title);
225 strncpy(fname, home, sizeof(fname));
226 strncat(fname, "/.dvdnav/", sizeof(fname));
227 strncat(fname, title, sizeof(fname));
228 diff -ur libdvdnav/src/vm/decoder.c libdvdnav.new/src/vm/decoder.c
229 --- libdvdnav/src/vm/decoder.c 2005-02-11 12:33:19.000000000 +0000
230 +++ libdvdnav.new/src/vm/decoder.c 2005-11-28 16:19:13.343750000 +0000
233 #include <inttypes.h>
234 #include <string.h> /* For memset */
235 -#include "ifo_types.h" /* vm_cmd_t */
237 #include "dvdnav_internal.h"
239 diff -ur libdvdnav/src/vm/decoder.h libdvdnav.new/src/vm/decoder.h
240 --- libdvdnav/src/vm/decoder.h 2005-02-11 12:33:19.000000000 +0000
241 +++ libdvdnav.new/src/vm/decoder.h 2005-11-28 16:19:13.343750000 +0000
243 #include <inttypes.h>
244 #include <sys/time.h>
246 -#include "ifo_types.h" /* vm_cmd_t */
247 +#include <dvdread/ifo_types.h> /* vm_cmd_t */
248 #include "dvdnav_internal.h"
250 /* link command types */
251 diff -ur libdvdnav/src/vm/vm.c libdvdnav.new/src/vm/vm.c
252 --- libdvdnav/src/vm/vm.c 2005-02-11 12:33:19.000000000 +0000
253 +++ libdvdnav.new/src/vm/vm.c 2005-11-28 16:19:13.343750000 +0000
255 #include <sys/stat.h>
258 -#include "ifo_types.h"
259 -#include "ifo_read.h"
261 +#include <dvdread/ifo_types.h>
262 +#include <dvdread/ifo_read.h>
264 #include "dvdnav_internal.h"
267 #include <io.h> /* read() */
268 +#elif defined(WIN32)
269 +# define lseek _lseeki64
270 +# define off_t int64_t
271 #endif /* _MSC_VER */
274 @@ -126,24 +130,25 @@
278 +#include <dvdread/dvd_input.h>
280 static void dvd_read_name(char *name, const char *device) {
281 /* Because we are compiling with _FILE_OFFSET_BITS=64
282 * all off_t are 64bit.
286 + dvd_input_t fd; int i;
287 uint8_t data[DVD_VIDEO_LB_LEN];
290 - fd = open(device, O_RDONLY);
291 + fd = dvdinput_open(device);
293 - off = lseek( fd, 32 * (off_t) DVD_VIDEO_LB_LEN, SEEK_SET );
294 - if( off == ( 32 * (off_t) DVD_VIDEO_LB_LEN ) ) {
295 - off = read( fd, data, DVD_VIDEO_LB_LEN );
297 - if (off == ( (off_t) DVD_VIDEO_LB_LEN )) {
298 + off = dvdinput_seek( fd, 16 );
300 + off = dvdinput_read( fd, data, 1, DVDINPUT_NOFLAGS );
302 fprintf(MSG_OUT, "libdvdnav: DVD Title: ");
303 - for(i=25; i < 73; i++ ) {
304 + for(i=40; i < 73; i++ ) {
305 if((data[i] == 0)) break;
306 if((data[i] > 32) && (data[i] < 127)) {
307 fprintf(MSG_OUT, "%c", data[i]);
308 @@ -151,10 +156,12 @@
309 fprintf(MSG_OUT, " ");
312 - strncpy(name, &data[25], 48);
314 + strncpy(name, &data[40], 32);
316 + while( (i >= 0) && (name[i] <= ' ')) --i;
318 fprintf(MSG_OUT, "\nlibdvdnav: DVD Serial Number: ");
319 - for(i=73; i < 89; i++ ) {
320 + for(i=813; i < 829; i++ ) {
321 if((data[i] == 0)) break;
322 if((data[i] > 32) && (data[i] < 127)) {
323 fprintf(MSG_OUT, "%c", data[i]);
326 fprintf(MSG_OUT, "libdvdnav: Can't seek to block %u\n", 32 );
329 + dvdinput_close(fd);
331 fprintf(MSG_OUT, "NAME OPEN FAILED\n");
333 --- libdvdnav/misc/dvdnav-config.in 2003-04-27 02:26:17.000000000 +0100
334 +++ libdvdnav.new/misc/dvdnav-config.in 2005-12-02 09:29:48.265625000 +0000
338 if test "$echo_libs" = "yes"; then
339 - echo -L@libdir@ -ldvdnav @THREAD_LIBS@
340 + echo -L@libdir@ -ldvdnav -ldvdread @THREAD_LIBS@
342 --- libdvdnav/configure.ac 2005-02-11 12:33:19.000000000 +0000
343 +++ libdvdnav.new/configure.ac 2005-12-02 15:23:13.921875000 +0000
346 dnl AC_CHECK_TYPES([ptrdiff_t])
349 +dnl ---------------------------------------------
350 +dnl Check for basic *nix fonction that we may emulate on other OS
351 +dnl ---------------------------------------------
352 +AC_CHECK_FUNCS(gettimeofday)
353 dnl ---------------------------------------------
355 dnl ---------------------------------------------
357 THREAD_CFLAGS="-I/usr/local/include -D_THREAD_SAFE"
358 CFLAGS="$THREAD_CFLAGS $CFLAGS"
360 - *mingw32* | *cygwin*)
361 + *mingw32* | *cygwin* | *beos*)
364 AC_CHECK_LIB(pthread, pthread_create,
365 @@ -149,26 +149,63 @@
366 AC_SUBST(THREAD_LIBS)
367 AC_SUBST(THREAD_CFLAGS)
371 dnl ---------------------------------------------
374 dnl ---------------------------------------------
377 - CFLAGS="-idirafter \$(top_srcdir)/msvc/include $CFLAGS"
378 - LDFLAGS="-no-undefined $LDFLAGS"
381 - LDFLAGS="-no-undefined $LDFLAGS"
384 - AC_CHECK_LIB(c, dlopen,
385 - DYNAMIC_LD_LIBS="",
386 - AC_CHECK_LIB(dl, dlopen,
387 - DYNAMIC_LD_LIBS="-ldl",
388 - AC_MSG_ERROR(dynamic linker needed)))
389 - AC_SUBST(DYNAMIC_LD_LIBS)
392 +AC_ARG_WITH( [libdvdcss],
393 + [ --with-libdvdcss[=PATH] force linking against libdvdcss],
394 + [if test x"$withval" != xno; then
397 + if test x"$withval" != xyes; then
398 + dvdcss_path=$withval
401 +if test x"$link_dvdcss" != xyes; then
402 +dnl dlopen libdvdcss
403 + AC_CHECK_FUNC( dlopen,
405 + AC_CHECK_LIB( dl, dlopen,
407 + AC_MSG_ERROR(You need libdl (dlopen))
411 +dnl link with libdvdcss
412 + if test -z "$dvdcss_path"; then
413 + AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
414 + [ CSS_LIBS=-ldvdcss ],
415 + AC_MSG_ERROR(You need libdvdcss.so.2 or later)
417 + AC_CHECK_HEADERS(dvdcss/dvdcss.h,
419 + AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
422 + saved_CFLAGS=$CFLAGS
423 + CFLAGS="$CFLAGS -L$dvdcss_path/lib"
424 + AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
425 + [ CSS_LIBS="-L$dvdcss_path/lib -R$dvdcss_path/lib -ldvdcss"
426 + CSS_CFLAGS=-I$dvdcss_path/include ],
427 + AC_MSG_ERROR(You need libdvdcss.so.2 or later)
429 + CFLAGS=$saved_CFLAGS
430 + dnl -w added to shutup GCC3.1's cpp warning about -I/usr/local
431 + saved_CPPFLAGS=$CPPFLAGS
432 + CPPFLAGS="-w $CPPFLAGS -I$dvdcss_path/include"
433 + AC_CHECK_HEADERS(dvdcss/dvdcss.h,
435 + AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
437 + CPPFLAGS=$saved_CPPFLAGS
443 +AC_SUBST(CSS_CFLAGS)
445 dnl ---------------------------------------------
447 --- libdvdnav/src/dvdnav_internal.h 2005-02-11 12:25:11.000000000 +0000
448 +++ libdvdnav.new/src/dvdnav_internal.h 2005-12-02 15:29:35.250000000 +0000
450 #include <io.h> /* read() */
451 #define lseek64 _lseeki64
453 +#elif defined(__BEOS__)
456 +typedef sem_id pthread_mutex_t;
457 +#define pthread_mutex_init(a, b) (*a) = create_sem( 1,"" )
458 +#define pthread_mutex_lock(a) acquire_sem( *a )
459 +#define pthread_mutex_unlock(a) release_sem( *a )
460 +#define pthread_mutex_destroy(a) delete_sem( *a )
465 --- libdvdnav/examples/Makefile.am 2004-01-11 21:43:12.000000000 +0000
466 +++ libdvdnav.new/examples/Makefile.am 2005-12-02 15:24:58.671875000 +0000
468 noinst_PROGRAMS = menus
470 menus_SOURCES = menus.c
471 -menus_LDFLAGS = -L$(top_srcdir)/src/
472 +menus_LDFLAGS = -L$(top_srcdir)/src/ $(CSS_LIBS)
473 menus_LDADD = $(DVDNAV_LIB)
476 --- libdvdnav/src/dvdnav_internal.h.orig 2007-02-19 18:41:27.784456800 +0000
477 +++ libdvdnav/src/dvdnav_internal.h 2007-02-19 18:41:50.706478500 +0000
479 #define pthread_mutex_unlock(a) LeaveCriticalSection(a)
480 #define pthread_mutex_destroy(a)
482 +#ifndef HAVE_GETTIMEOFDAY
483 /* replacement gettimeofday implementation */
484 #include <sys/timeb.h>
485 static inline int _private_gettimeofday( struct timeval *tv, void *tz )
489 #define gettimeofday(TV, TZ) _private_gettimeofday((TV), (TZ))
492 #include <io.h> /* read() */
493 #define lseek64 _lseeki64