Commit c37287da authored by Damien Fouilleul's avatar Damien Fouilleul

dvdnav: support for new incarnation hosted in mplayerhq

parent 3828287d
......@@ -1142,7 +1142,9 @@ DISTCLEAN_PKG += libdvdcss-$(LIBDVDCSS_VERSION).tar.gz
# ***************************************************************************
.dvdread: .dvdnav
$(INSTALL_NAME)
(install_name_tool -change $(PREFIX)/lib/libdvdread.0.dylib @executable_path/lib/vlc_libdvdread.dylib $(PREFIX)/vlc-lib/vlc_libdvdnav.dylib)
ifdef HAVE_DARWIN_OS
install_name_tool -change $(PREFIX)/lib/libdvdread.4.dylib @executable_path/lib/vlc_libdvdread.dylib $(PREFIX)/vlc-lib/vlc_libdvdnav.dylib
endif
touch $@
CLEAN_FILE += .dvdread
......@@ -1151,14 +1153,20 @@ CLEAN_FILE += .dvdread
# libdvdnav
# ***************************************************************************
ifdef SVN
libdvdnav:
$(SVN) export $(LIBDVDNAV_SVN) libdvdnav
patch -p0 < Patches/libdvdnav.patch
(cd $@; ./autogen.sh noconfig)
else
libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2:
$(WGET) $(LIBDVDNAV_URL)
libdvdnav: libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2
$(EXTRACT_BZ2)
patch -p0 < Patches/dvdnav.patch
patch -p0 < Patches/libdvdnav-mactel.patch
patch -p0 < Patches/libdvdnav.patch
(cd $@; ./autogen.sh noconfig)
endif
.dvdnav: libdvdnav .dvdcss
ifdef HAVE_WIN32
......
Index: configure.ac
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/configure.ac,v
retrieving revision 1.22
diff -u -r1.22 configure.ac
--- configure.ac 3 Jan 2005 20:24:21 -0000 1.22
+++ configure.ac 11 Feb 2005 11:08:09 -0000
@@ -171,6 +171,12 @@
esac
dnl ---------------------------------------------
+dnl enable builtin libdvdread
+dnl ---------------------------------------------
+AC_ARG_ENABLE(builtin-dvdread,
+[ --disable-builtin-dvdread use external libdvdread (default builtin)])
+
+dnl ---------------------------------------------
dnl cflags
dnl ---------------------------------------------
dnl Common cflags for all platforms
@@ -218,13 +224,20 @@
fi
AC_SUBST(DEPCOMP)
+if test "${enable_builtin_dvdread}" != "no"; then
+ BUILTIN_DVDREAD=dvdread
+ BUILTIN_DVDREAD_LIB='$(top_builddir)/src/dvdread/libdvdread.la'
+ AC_SUBST(BUILTIN_DVDREAD)
+ AC_SUBST(BUILTIN_DVDREAD_LIB)
+ AC_OUTPUT([src/dvdread/Makefile])
+fi
+
dnl ---------------------------------------------
dnl Output configuration files
dnl ---------------------------------------------
AC_OUTPUT([
Makefile
src/Makefile
-src/dvdread/Makefile
src/vm/Makefile
misc/Makefile
misc/dvdnav-config
Index: src/Makefile.am
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/Makefile.am,v
retrieving revision 1.28
diff -u -r1.28 Makefile.am
--- src/Makefile.am 3 Jan 2005 20:24:21 -0000 1.28
+++ src/Makefile.am 11 Feb 2005 11:08:09 -0000
@@ -1,6 +1,6 @@
include $(top_srcdir)/misc/Makefile.common
-SUBDIRS = dvdread vm
+SUBDIRS = $(BUILTIN_DVDREAD) vm
includedir = ${prefix}/include/dvdnav
@@ -17,7 +17,7 @@
dvdnav_internal.h read_cache.h remap.h
libdvdnav_la_LIBADD = $(THREAD_LIBS) \
- $(top_builddir)/src/dvdread/libdvdread.la \
+ $(BUILTIN_DVDREAD_LIB) \
$(top_builddir)/src/vm/libdvdvm.la
libdvdnav_la_LDFLAGS = \
Index: src/dvdnav.c
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/dvdnav.c,v
retrieving revision 1.65
diff -u -r1.65 dvdnav.c
--- src/dvdnav.c 15 Dec 2004 21:16:58 -0000 1.65
+++ src/dvdnav.c 11 Feb 2005 11:08:09 -0000
@@ -31,7 +31,6 @@
#include "dvdnav_internal.h"
#include "read_cache.h"
-#include "nav_read.h"
#include <stdlib.h>
#include <stdio.h>
Index: src/dvdnav.h
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/dvdnav.h,v
retrieving revision 1.31
diff -u -r1.31 dvdnav.h
--- src/dvdnav.h 9 Jun 2003 15:17:44 -0000 1.31
+++ src/dvdnav.h 11 Feb 2005 11:08:10 -0000
@@ -33,16 +33,19 @@
extern "C" {
#endif
+#include <inttypes.h>
+
+#include <dvdread/dvd_reader.h>
+#include <dvdread/nav_types.h>
+#include <dvdread/nav_read.h>
+#include <dvdread/ifo_types.h> /* For vm_cmd_t */
+
#ifdef DVDNAV_COMPILE
# include "dvdnav_events.h"
# include "dvd_types.h"
-# include "dvd_reader.h"
-# include "ifo_types.h" /* For vm_cmd_t */
#else
# include <dvdnav/dvdnav_events.h>
# include <dvdnav/dvd_types.h>
-# include <dvdnav/dvd_reader.h>
-# include <dvdnav/ifo_types.h> /* For vm_cmd_t */
#endif
Index: src/dvdnav_events.h
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/dvdnav_events.h,v
retrieving revision 1.12
diff -u -r1.12 dvdnav_events.h
--- src/dvdnav_events.h 27 Apr 2003 01:26:18 -0000 1.12
+++ src/dvdnav_events.h 11 Feb 2005 11:08:10 -0000
@@ -28,10 +28,6 @@
#ifndef DVDNAV_EVENTS_H_INCLUDED
#define DVDNAV_EVENTS_H_INCLUDED
-#include "ifo_types.h"
-#include "dvd_reader.h"
-#include "nav_types.h"
-
/*
* DVDNAV_BLOCK_OK
Index: src/highlight.c
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/highlight.c,v
retrieving revision 1.32
diff -u -r1.32 highlight.c
--- src/highlight.c 20 Jan 2004 01:22:24 -0000 1.32
+++ src/highlight.c 11 Feb 2005 11:08:10 -0000
@@ -26,7 +26,6 @@
#endif
#include <assert.h>
-#include "nav_types.h"
#include "dvdnav_internal.h"
/*
Index: src/remap.c
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/remap.c,v
retrieving revision 1.4
diff -u -r1.4 remap.c
--- src/remap.c 27 Aug 2003 13:54:19 -0000 1.4
+++ src/remap.c 11 Feb 2005 11:08:10 -0000
@@ -189,7 +189,11 @@
remap_t *map;
/* Build the map filename */
- home = getenv("HOME"); assert(home);
+ home = getenv("HOME");
+ if (!home) {
+ fprintf(MSG_OUT, "libdvdnav: Unable to find map for title '%s'\n", title);
+ return NULL;
+ }
strncpy(fname, home, sizeof(fname));
strncat(fname, "/.dvdnav/", sizeof(fname));
strncat(fname, title, sizeof(fname));
Index: src/vm/decoder.c
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/vm/decoder.c,v
retrieving revision 1.2
diff -u -r1.2 decoder.c
--- src/vm/decoder.c 3 Mar 2004 16:50:42 -0000 1.2
+++ src/vm/decoder.c 11 Feb 2005 11:08:10 -0000
@@ -31,7 +31,6 @@
#include <stdlib.h>
#include <inttypes.h>
#include <string.h> /* For memset */
-#include "ifo_types.h" /* vm_cmd_t */
#include "dvdnav_internal.h"
Index: src/vm/decoder.h
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/vm/decoder.h,v
retrieving revision 1.1
diff -u -r1.1 decoder.h
--- src/vm/decoder.h 11 Jan 2004 21:43:13 -0000 1.1
+++ src/vm/decoder.h 11 Feb 2005 11:08:10 -0000
@@ -28,7 +28,7 @@
#include <inttypes.h>
#include <sys/time.h>
-#include "ifo_types.h" /* vm_cmd_t */
+#include <dvdread/ifo_types.h> /* vm_cmd_t */
#include "dvdnav_internal.h"
/* link command types */
Index: src/vm/vm.c
===================================================================
RCS file: /cvsroot/dvd/libdvdnav/src/vm/vm.c,v
retrieving revision 1.11
diff -u -r1.11 vm.c
--- src/vm/vm.c 16 Jan 2005 16:47:05 -0000 1.11
+++ src/vm/vm.c 11 Feb 2005 11:08:11 -0000
@@ -38,13 +38,17 @@
#include <sys/stat.h>
#include <fcntl.h>
-#include "ifo_types.h"
-#include "ifo_read.h"
+/* from dvdread */
+#include <dvdread/ifo_types.h>
+#include <dvdread/ifo_read.h>
#include "dvdnav_internal.h"
#ifdef _MSC_VER
#include <io.h> /* read() */
+#elif defined(WIN32)
+# define lseek _lseeki64
+# define off_t int64_t
#endif /* _MSC_VER */
/*
diff -Naur Makefile.am Makefile.am
--- Makefile.am 2004-10-26 19:26:07.000000000 +0200
+++ Makefile.am 2005-09-02 15:05:20.000000000 +0200
@@ -2,7 +2,7 @@
AUTOMAKE_OPTIONS = 1.3
-SUBDIRS = src examples doc misc m4
+SUBDIRS = src misc m4
EXTRA_DIST = autogen.sh \
AUTHORS \
--- misc/dvdnav-config.in 2003-04-27 03:26:17.000000000 +0200
+++ misc/dvdnav-config.in 2005-09-21 20:27:06.000000000 +0200
@@ -76,5 +76,5 @@
fi
if test "$echo_libs" = "yes"; then
- echo -L@libdir@ -ldvdnav @THREAD_LIBS@
+ echo -L@libdir@ -ldvdnav @THREAD_LIBS@ -ldvdread -ldvdcss
fi
diff -puriN libdvdnav-orig/src/dvdread/bswap.h libdvdnav/src/dvdread/bswap.h
--- libdvdnav-orig/src/dvdread/bswap.h 2006-01-26 23:26:43.000000000 +0100
+++ libdvdnav/src/dvdread/bswap.h 2006-01-26 23:27:57.000000000 +0100
@@ -59,6 +59,12 @@
#define B2N_32(x) x = be32toh(x)
#define B2N_64(x) x = be64toh(x)
+#elif defined(__APPLE__)
+#include <libkern/OSByteOrder.h>
+#define B2N_16(x) x = OSSwapBigToHostConstInt16(x)
+#define B2N_32(x) x = OSSwapBigToHostConstInt32(x)
+#define B2N_64(x) x = OSSwapBigToHostConstInt64(x)
+
/* This is a slow but portable implementation, it has multiple evaluation
* problems so beware.
* Old FreeBSD's and Solaris don't have <byteswap.h> or any other such
diff -r -u libdvdnav-4.1.1/configure.ac libdvdnav/configure.ac
--- libdvdnav-4.1.1/configure.ac 2007-05-01 11:11:52.000000000 +0100
+++ libdvdnav/configure.ac 2007-11-12 11:40:20.406250000 +0000
@@ -130,6 +130,11 @@
AC_C_BIGENDIAN
dnl ---------------------------------------------
+dnl Check for basic *nix fonction that we may emulate on other OS
+dnl ---------------------------------------------
+AC_CHECK_FUNCS(gettimeofday)
+
+dnl ---------------------------------------------
dnl threads
dnl ---------------------------------------------
case $host in
@@ -150,25 +155,61 @@
AC_SUBST(THREAD_CFLAGS)
dnl ---------------------------------------------
-dnl dynamic linker
+dnl dvdcss checking
dnl ---------------------------------------------
-case $host in
- *mingw32*)
- CFLAGS="-idirafter \$(top_srcdir)/msvc/include $CFLAGS"
- LDFLAGS="-no-undefined $LDFLAGS"
- ;;
- *cygwin*)
- LDFLAGS="-no-undefined $LDFLAGS"
- ;;
- *)
- AC_CHECK_LIB(c, dlopen,
- DYNAMIC_LD_LIBS="",
- AC_CHECK_LIB(dl, dlopen,
- DYNAMIC_LD_LIBS="-ldl",
- AC_MSG_ERROR(dynamic linker needed)))
- AC_SUBST(DYNAMIC_LD_LIBS)
- ;;
-esac
+AC_ARG_WITH( [libdvdcss],
+ [ --with-libdvdcss[=PATH] force linking against libdvdcss],
+ [if test x"$withval" != xno; then
+ link_dvdcss=yes
+ fi
+ if test x"$withval" != xyes; then
+ dvdcss_path=$withval
+ fi])
+
+if test x"$link_dvdcss" != xyes; then
+dnl dlopen libdvdcss
+ AC_CHECK_FUNC( dlopen,
+ [DL_LIBS="" ],
+ AC_CHECK_LIB( dl, dlopen,
+ [DL_LIBS=-ld ],
+ AC_MSG_ERROR(You need libdl (dlopen))
+ )
+ )
+else
+dnl link with libdvdcss
+ if test -z "$dvdcss_path"; then
+ AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
+ [ CSS_LIBS=-ldvdcss ],
+ AC_MSG_ERROR(You need libdvdcss.so.2 or later)
+ )
+ AC_CHECK_HEADERS(dvdcss/dvdcss.h,
+ [ ],
+ AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
+ )
+ else
+ saved_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -L$dvdcss_path/lib"
+ AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
+ [ CSS_LIBS="-L$dvdcss_path/lib -R$dvdcss_path/lib -ldvdcss"
+ CSS_CFLAGS=-I$dvdcss_path/include ],
+ AC_MSG_ERROR(You need libdvdcss.so.2 or later)
+ )
+ CFLAGS=$saved_CFLAGS
+ dnl -w added to shutup GCC3.1's cpp warning about -I/usr/local
+ saved_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="-w $CPPFLAGS -I$dvdcss_path/include"
+ AC_CHECK_HEADERS(dvdcss/dvdcss.h,
+ [ ],
+ AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
+ )
+ CPPFLAGS=$saved_CPPFLAGS
+ fi
+fi
+
+AC_SUBST(DL_LIBS)
+AC_SUBST(CSS_LIBS)
+AC_SUBST(CSS_CFLAGS)
+
dnl ---------------------------------------------
dnl cflags
diff -r -u libdvdnav-4.1.1/src/dvdnav_internal.h libdvdnav/src/dvdnav_internal.h
--- libdvdnav-4.1.1/src/dvdnav_internal.h 2007-04-21 12:56:41.000000000 +0100
+++ libdvdnav/src/dvdnav_internal.h 2007-11-12 11:42:26.046875000 +0000
@@ -39,6 +39,7 @@
#define pthread_mutex_unlock(a) LeaveCriticalSection(a)
#define pthread_mutex_destroy(a)
+#ifndef HAVE_GETTIMEOFDAY
/* replacement gettimeofday implementation */
#include <sys/timeb.h>
static inline int _private_gettimeofday( struct timeval *tv, void *tz )
@@ -50,6 +51,8 @@
return 0;
}
#define gettimeofday(TV, TZ) _private_gettimeofday((TV), (TZ))
+#endif
+
#include <io.h> /* read() */
#define lseek64 _lseeki64
diff -r -u libdvdnav-4.1.1/src/dvdread/bswap.h libdvdnav/src/dvdread/bswap.h
--- libdvdnav-4.1.1/src/dvdread/bswap.h 2007-05-05 11:32:13.000000000 +0100
+++ libdvdnav/src/dvdread/bswap.h 2007-11-12 11:17:38.343750000 +0000
@@ -81,14 +81,14 @@
(((x) & 0x0000ff00) << 8) | \
(((x) & 0x000000ff) << 24))
#define B2N_64(x) \
- x = ((((x) & 0xff00000000000000) >> 56) | \
- (((x) & 0x00ff000000000000) >> 40) | \
- (((x) & 0x0000ff0000000000) >> 24) | \
- (((x) & 0x000000ff00000000) >> 8) | \
- (((x) & 0x00000000ff000000) << 8) | \
- (((x) & 0x0000000000ff0000) << 24) | \
- (((x) & 0x000000000000ff00) << 40) | \
- (((x) & 0x00000000000000ff) << 56))
+ x = ((((x) & 0xff00000000000000LL) >> 56) | \
+ (((x) & 0x00ff000000000000LL) >> 40) | \
+ (((x) & 0x0000ff0000000000LL) >> 24) | \
+ (((x) & 0x000000ff00000000LL) >> 8) | \
+ (((x) & 0x00000000ff000000LL) << 8) | \
+ (((x) & 0x0000000000ff0000LL) << 24) | \
+ (((x) & 0x000000000000ff00LL) << 40) | \
+ (((x) & 0x00000000000000ffLL) << 56))
#else
diff -r -u libdvdnav-4.1.1/src/dvdread/dvd_input.c libdvdnav/src/dvdread/dvd_input.c
--- libdvdnav-4.1.1/src/dvdread/dvd_input.c 2007-04-19 16:45:30.000000000 +0100
+++ libdvdnav/src/dvdread/dvd_input.c 2007-11-12 11:19:57.984375000 +0000
@@ -27,6 +27,11 @@
#include "dvd_reader.h"
#include "dvd_input.h"
+#ifdef WIN32
+# define lseek _lseeki64
+# undef off_t
+# define off_t int64_t
+#endif
/* The function pointers that is the exported interface of this file. */
dvd_input_t (*dvdinput_open) (const char *);
diff -r -u libdvdnav-4.1.1/src/vm/vm.c libdvdnav/src/vm/vm.c
--- libdvdnav-4.1.1/src/vm/vm.c 2007-04-25 00:06:22.000000000 +0100
+++ libdvdnav/src/vm/vm.c 2007-11-12 11:35:55.859375000 +0000
@@ -135,24 +135,25 @@
}
#endif
+#include <dvdread/dvd_input.h>
+
static void dvd_read_name(char *name, const char *device) {
/* Because we are compiling with _FILE_OFFSET_BITS=64
* all off_t are 64bit.
*/
off_t off;
- int fd, i;
+ dvd_input_t fd; int i;
uint8_t data[DVD_VIDEO_LB_LEN];
/* Read DVD name */
- fd = open(device, O_RDONLY);
+ fd = dvdinput_open(device);
if (fd > 0) {
- off = lseek( fd, 32 * (off_t) DVD_VIDEO_LB_LEN, SEEK_SET );
- if( off == ( 32 * (off_t) DVD_VIDEO_LB_LEN ) ) {
- off = read( fd, data, DVD_VIDEO_LB_LEN );
- close(fd);
- if (off == ( (off_t) DVD_VIDEO_LB_LEN )) {
+ off = dvdinput_seek( fd, 16 );
+ if( off == 16 ) {
+ off = dvdinput_read( fd, data, 1, DVDINPUT_NOFLAGS );
+ if (off == 1 ) {
fprintf(MSG_OUT, "libdvdnav: DVD Title: ");
- for(i=25; i < 73; i++ ) {
+ for(i=40; i < 73; i++ ) {
if((data[i] == 0)) break;
if((data[i] > 32) && (data[i] < 127)) {
fprintf(MSG_OUT, "%c", data[i]);
@@ -160,10 +161,12 @@
fprintf(MSG_OUT, " ");
}
}
- strncpy(name, &data[25], 48);
- name[48] = 0;
+ strncpy(name, &data[40], 32);
+ i=31;
+ while( (i >= 0) && (name[i] <= ' ')) --i;
+ name[i+1] = '\0';
fprintf(MSG_OUT, "\nlibdvdnav: DVD Serial Number: ");
- for(i=73; i < 89; i++ ) {
+ for(i=813; i < 829; i++ ) {
if((data[i] == 0)) break;
if((data[i] > 32) && (data[i] < 127)) {
fprintf(MSG_OUT, "%c", data[i]);
@@ -187,7 +190,7 @@
} else {
fprintf(MSG_OUT, "libdvdnav: Can't seek to block %u\n", 32 );
}
- close(fd);
+ dvdinput_close(fd);
} else {
fprintf(MSG_OUT, "NAME OPEN FAILED\n");
}
--- libdvdnav-4.1.1/examples/Makefile.am 2004-01-11 21:43:13.000000000 +0000
+++ libdvdnav/examples/Makefile.am 2007-11-12 12:44:09.328125000 +0000
@@ -8,7 +8,7 @@
menus_SOURCES = menus.c
menus_LDFLAGS = -L$(top_srcdir)/src/
-menus_LDADD = $(DVDNAV_LIB)
+menus_LDADD = $(DVDNAV_LIB) $(CSS_LIBS)
$(DVDNAV_LIB):
@cd $(top_builddir)/src/ && $(MAKE) libdvdnav.la
? winwx.sh
Index: configure.in
===================================================================
RCS file: /cvsroot/ogle/libdvdread/configure.in,v
retrieving revision 1.24
diff -u -r1.24 configure.in
--- configure.in 5 Jul 2003 18:30:25 -0000 1.24
+++ configure.in 2 Sep 2004 13:43:23 -0000
@@ -77,6 +77,11 @@
[ ],
AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
)
+ case "x${host}" in
+ x*mingw32* | x*cygwin*)
+ CSS_LIBS=-ldvdcss
+ ;;
+ x*)
AC_MSG_CHECKING([for dvdcss_interface_2 in -ldvdcss])
saved_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -ldvdcss"
@@ -88,6 +93,8 @@
] )
LDFLAGS=$saved_LDFLAGS
AC_MSG_RESULT([yes])
+ ;;
+ esac
else
dnl -w added to shutup GCC3.1's cpp warning about -I/usr/local
saved_CPPFLAGS=$CPPFLAGS
@@ -99,6 +106,12 @@
CPPFLAGS=$saved_CPPFLAGS
saved_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -I$dvdcss_path/include -L$dvdcss_path/lib -ldvdcss"
+ case "x${host}" in
+ x*mingw32* | x*cygwin*)
+ CSS_LIBS="-L$dvdcss_path/lib -R$dvdcss_path/lib -ldvdcss"
+ CSS_CFLAGS=-I$dvdcss_path/include
+ ;;
+ x*)
AC_MSG_CHECKING([for dvdcss_interface_2 in -ldvdcss])
AC_TRY_LINK([#include <dvdcss/dvdcss.h>],
[if(!dvdcss_interface_2) { return 1; }],
@@ -109,6 +122,8 @@
] )
CFLAGS=$saved_CFLAGS
AC_MSG_RESULT([yes])
+ ;;
+ esac
fi
fi
Index: dvdread/bswap.h
===================================================================
RCS file: /cvsroot/ogle/libdvdread/dvdread/bswap.h,v
retrieving revision 1.10
diff -u -r1.10 bswap.h
--- dvdread/bswap.h 18 Jun 2003 13:35:03 -0000 1.10
+++ dvdread/bswap.h 2 Sep 2004 13:43:25 -0000
@@ -85,14 +85,14 @@
(((x) & 0x0000ff00) << 8) | \
(((x) & 0x000000ff) << 24))
#define B2N_64(x) \
- x = ((((x) & 0xff00000000000000) >> 56) | \
- (((x) & 0x00ff000000000000) >> 40) | \
- (((x) & 0x0000ff0000000000) >> 24) | \
- (((x) & 0x000000ff00000000) >> 8) | \
- (((x) & 0x00000000ff000000) << 8) | \
- (((x) & 0x0000000000ff0000) << 24) | \
- (((x) & 0x000000000000ff00) << 40) | \
- (((x) & 0x00000000000000ff) << 56))
+ x = ((((x) & 0xff00000000000000LL) >> 56) | \
+ (((x) & 0x00ff000000000000LL) >> 40) | \
+ (((x) & 0x0000ff0000000000LL) >> 24) | \
+ (((x) & 0x000000ff00000000LL) >> 8) | \
+ (((x) & 0x00000000ff000000LL) << 8) | \
+ (((x) & 0x0000000000ff0000LL) << 24) | \
+ (((x) & 0x000000000000ff00LL) << 40) | \
+ (((x) & 0x00000000000000ffLL) << 56))
#else
Index: dvdread/dvd_input.c
===================================================================
RCS file: /cvsroot/ogle/libdvdread/dvdread/dvd_input.c,v
retrieving revision 1.8
diff -u -r1.8 dvd_input.c
--- dvdread/dvd_input.c 4 Apr 2004 20:02:27 -0000 1.8
+++ dvdread/dvd_input.c 2 Sep 2004 13:43:25 -0000
@@ -21,11 +21,23 @@
#include <stdio.h>
#include <stdlib.h>
+
+#if defined(HAVE_INTTYPES_H)
+#include <inttypes.h>
+#elif defined(HAVE_STDINT_H)
+#include <stdint.h>
+#endif
+
#include <fcntl.h>
#include <unistd.h>
#include "dvd_reader.h"
#include "dvd_input.h"
+
+#ifdef WIN32
+# define lseek _lseeki64
+# define off_t int64_t
+#endif
/* The function pointers that is the exported interface of this file. */
dvd_input_t (*dvdinput_open) (const char *);
diff -ru libdvdread-0.9.4/dvdread/bswap.h libdvdread/dvdread/bswap.h
--- libdvdread-0.9.4/dvdread/bswap.h 2002-12-15 01:09:12.000000000 +0100
+++ libdvdread/dvdread/bswap.h 2005-08-31 19:24:57.000000000 +0200
@@ -65,7 +65,7 @@
* functionality!
*/
-#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32)
+#elif defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined( __BEOS__ )
#define B2N_16(x) \
x = ((((x) & 0xff00) >> 8) | \
(((x) & 0x00ff) << 8))
diff -ru libdvdread-0.9.4/dvdread/dvd_reader.c libdvdread/dvdread/dvd_reader.c
--- libdvdread-0.9.4/dvdread/dvd_reader.c 2003-02-13 23:31:21.000000000 +0100
+++ libdvdread/dvdread/dvd_reader.c 2005-08-31 19:24:57.000000000 +0200
@@ -324,8 +324,7 @@
else
#endif
{
- ret = stat( path, &fileinfo );
- if( ret < 0 ) {
+ if( *path && (ret = stat( path, &fileinfo ) < 0) ) {
/* If we can't stat the file, give up */
fprintf( stderr, "libdvdread: Can't stat %s\n", path );
perror("");
@@ -315,7 +314,7 @@
have_css = dvdinput_setup();
/* First check if this is a block/char device or a file*/
- if( S_ISBLK( fileinfo.st_mode ) ||
+ if( !*path || S_ISBLK( fileinfo.st_mode ) ||
S_ISCHR( fileinfo.st_mode ) ||
S_ISREG( fileinfo.st_mode ) ) {
@@ -344,14 +343,16 @@
/* Resolve any symlinks and get the absolut dir name. */
{
+ char *current_path;
char *new_path;
- int cdir = open( ".", O_RDONLY );
-
- if( cdir >= 0 ) {
+
+ current_path = getcwd( NULL, PATH_MAX );
+ if( current_path ) {
chdir( path_copy );
new_path = getcwd( NULL, PATH_MAX );
- fchdir( cdir );
- close( cdir );
+ chdir( current_path );
+ free( current_path );
+
if( new_path ) {
free( path_copy );
path_copy = new_path;
@@ -504,10 +505,12 @@
sprintf( filename, "%s%s%s", path,
( ( path[ strlen( path ) - 1 ] == '/' ) ? "" : "/" ),
ent->d_name );
+ closedir( dir );
return 0;
}
}
+ closedir( dir );
return -1;
}
......@@ -97,8 +97,9 @@ FFMPEG_URL=$(SF)/ffmpeg/ffmpeg-$(FFMPEG_VERSION).tar.gz
FFMPEG_SVN=svn://svn.mplayerhq.hu/ffmpeg/trunk
LIBDVDCSS_VERSION=1.2.9
LIBDVDCSS_URL=$(VIDEOLAN)/libdvdcss/$(LIBDVDCSS_VERSION)/libdvdcss-$(LIBDVDCSS_VERSION).tar.gz
LIBDVDNAV_VERSION=20050211
LIBDVDNAV_URL=$(VIDEOLAN)/testing/contrib/libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2
LIBDVDNAV_VERSION=4.1.1
LIBDVDNAV_URL=http://www1.mplayerhq.hu/MPlayer/releases/dvdnav/libdvdnav-$(LIBDVDNAV_VERSION).tar.gz
LIBDVDNAV_SVN=svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav
LIBDVBPSI_VERSION=0.1.6
LIBDVBPSI_URL=$(VIDEOLAN)/libdvbpsi/$(LIBDVBPSI_VERSION)/libdvbpsi5-$(LIBDVBPSI_VERSION).tar.gz
LIVEDOTCOM_VERSION=latest
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment