Changeset 16bf23cb303dfa4e399d6d52336be8c8dfcbc2e3

Show
Ignore:
Timestamp:
12/06/08 02:38:22 (4 months ago)
Author:
Felix Paul Kühne <fkuehne@videolan.org>
git-committer:
Felix Paul Kühne <fkuehne@videolan.org> 1213231102 +0200
git-parent:

[a02297fea0da8febdafbec72254a0869be58d13f]

git-author:
Felix Paul Kühne <fkuehne@videolan.org> 1213231039 +0200
Message:

Fix libdvdnav in a reliable and quite clean way.

Unsure about my sanity now though.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • extras/contrib/src/Makefile

    rab9b304 r16bf23c  
    10681068ifdef SVN 
    10691069ffmpeg: 
    1070     $(SVN) co $(FFMPEG_SVN) ffmpeg  
     1070    $(SVN) co $(FFMPEG_SVN) ffmpeg -r 12920 
     1071    (cd $@; patch -p0 < ../Patches/ffmpeg-pkg-config.patch) 
    10711072ifeq ($(HOST),i586-pc-beos) 
    10721073    (cd $@; patch -p0 < ../Patches/ffmpeg-svn-beos.patch) 
     
    10901091    patch -p0 < Patches/ffmpeg-svn-libavformat.patch 
    10911092endif 
     1093    (cd $@; patch -p0 < ../Patches/ffmpeg-svn-configure.patch ) 
    10921094else 
    10931095ffmpeg-$(FFMPEG_VERSION).tar.gz: 
     
    11591161# dummy dvdread to trigger the INSTALL_NAME script 
    11601162# *************************************************************************** 
    1161 .dvdread: .dvdnav 
    1162     $(INSTALL_NAME) 
    1163     touch $@ 
    1164  
    1165 CLEAN_FILE += .dvdread 
     1163# .dvdread: .dvdnav 
     1164#   $(INSTALL_NAME) 
     1165#   touch $@ 
     1166#  
     1167# CLEAN_FILE += .dvdread 
     1168 
     1169# *************************************************************************** 
     1170# libdvdread: We use dvdnav's dvdread 
     1171# *************************************************************************** 
     1172 
     1173libdvdread-$(LIBDVDREAD_VERSION).tar.gz: 
     1174    $(WGET) $(LIBDVDREAD_URL) 
     1175 
     1176libdvdread: libdvdread-$(LIBDVDREAD_VERSION).tar.gz 
     1177    $(EXTRACT_GZ) 
     1178#   patch  -p 0 < Patches/libdvdread.patch 
     1179 
     1180.libdvdread: libdvdread .dvdcss 
     1181    (cd libdvdread; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --with-libdvdcss=$(PREFIX) && make && make install) 
     1182    $(INSTALL_NAME) 
     1183    touch $@ 
     1184 
     1185CLEAN_FILE += .libdvdread 
     1186CLEAN_PKG += libdvdread 
     1187DISTCLEAN_PKG += libdvdread-$(LIBDVDREAD_VERSION).tar.gz 
    11661188 
    11671189# *************************************************************************** 
     
    11721194libdvdnav: 
    11731195    $(SVN) co $(LIBDVDNAV_SVN)  libdvdnav 
    1174     patch -d libdvdnav -p1 < Patches/libdvdnav.patch 
    1175     $(WGET) $(LIBDVDREAD_URL) 
    1176     (cd $@/src; tar xf ../../libdvdread-$(LIBDVDREAD_VERSION).tar.gz; mv libdvdread-$(LIBDVDREAD_VERSION)/dvdread libdvdread) 
     1196    patch -d libdvdnav -p0 < Patches/libdvdnav.patch 
    11771197    (cd $@; ./autogen.sh noconfig) 
    11781198else 
     
    11891209endif 
    11901210 
    1191 .dvdnav: libdvdnav .dvdcss 
     1211.dvdnav: libdvdnav .libdvdread .dvdcss 
    11921212ifdef HAVE_WIN32     
    11931213    (cd $<; $(HOSTCC) ./configure $(HOSTCONF) --enable-static --prefix=$(PREFIX) --with-libdvdcss=$(PREFIX) && make && make install) 
  • extras/contrib/src/Patches/libdvdnav.patch

    ra690954 r16bf23c  
    1 diff --git a/configure.ac b/configure.ac 
    2 index e5ee5c4..b381093 100644 
    3 --- a/configure.ac 
    4 +++ b/configure.ac 
    5 @@ -161,25 +166,61 @@ AC_SUBST(THREAD_LIBS) 
     1Index: src/read_cache.c 
     2=================================================================== 
     3--- src/read_cache.c    (revision 1096) 
     4+++ src/read_cache.c    (working copy) 
     5@@ -37,8 +37,8 @@ 
     6 #include <sys/time.h> 
     7 #include <time.h> 
     8 #include "dvd_types.h" 
     9-#include <libdvdread/nav_types.h> 
     10-#include <libdvdread/ifo_types.h> 
     11+#include <dvdread/nav_types.h> 
     12+#include <dvdread/ifo_types.h> 
     13 #include "remap.h" 
     14 #include "vm/decoder.h" 
     15 #include "vm/vm.h" 
     16Index: src/navigation.c 
     17=================================================================== 
     18--- src/navigation.c    (revision 1096) 
     19+++ src/navigation.c    (working copy) 
     20@@ -30,8 +30,8 @@ 
     21 #include <string.h> 
     22 #include <sys/time.h> 
     23 #include "dvd_types.h" 
     24-#include <libdvdread/nav_types.h> 
     25-#include <libdvdread/ifo_types.h> 
     26+#include <dvdread/nav_types.h> 
     27+#include <dvdread/ifo_types.h> 
     28 #include "remap.h" 
     29 #include "vm/decoder.h" 
     30 #include "vm/vm.h" 
     31Index: src/settings.c 
     32=================================================================== 
     33--- src/settings.c  (revision 1096) 
     34+++ src/settings.c  (working copy) 
     35@@ -30,8 +30,8 @@ 
     36 #include <string.h> 
     37 #include <sys/time.h> 
     38 #include "dvd_types.h" 
     39-#include <libdvdread/nav_types.h> 
     40-#include <libdvdread/ifo_types.h> 
     41+#include <dvdread/nav_types.h> 
     42+#include <dvdread/ifo_types.h> 
     43 #include "remap.h" 
     44 #include "vm/decoder.h" 
     45 #include "vm/vm.h" 
     46Index: src/vm/vm.c 
     47=================================================================== 
     48--- src/vm/vm.c (revision 1096) 
     49+++ src/vm/vm.c (working copy) 
     50@@ -40,9 +40,9 @@ 
     51 #include <sys/time.h> 
     52 #include <fcntl.h> 
     53  
     54-#include <libdvdread/nav_types.h> 
     55-#include <libdvdread/ifo_types.h> 
     56-#include <libdvdread/ifo_read.h> 
     57+#include <dvdread/nav_types.h> 
     58+#include <dvdread/ifo_types.h> 
     59+#include <dvdread/ifo_read.h> 
     60 #include "dvd_types.h" 
     61  
     62 #include "decoder.h" 
     63@@ -139,19 +139,18 @@ 
     64      * all off_t are 64bit. 
     65      */ 
     66     off_t off; 
     67-    int fd, i; 
     68+    int i, fd; 
     69     uint8_t data[DVD_VIDEO_LB_LEN]; 
     70  
     71     /* Read DVD name */ 
     72     fd = open(device, O_RDONLY); 
     73     if (fd > 0) {  
     74       off = lseek( fd, 32 * (off_t) DVD_VIDEO_LB_LEN, SEEK_SET ); 
     75-      if( off == ( 32 * (off_t) DVD_VIDEO_LB_LEN ) ) { 
     76-        off = read( fd, data, DVD_VIDEO_LB_LEN );  
     77-        close(fd); 
     78+      if( off == 16 ) { 
     79+        off =  read( fd, data, DVD_VIDEO_LB_LEN ); 
     80         if (off == ( (off_t) DVD_VIDEO_LB_LEN )) { 
     81           fprintf(MSG_OUT, "libdvdnav: DVD Title: "); 
     82-          for(i=25; i < 73; i++ ) { 
     83+          for(i=40; i < 73; i++ ) { 
     84             if((data[i] == 0)) break; 
     85             if((data[i] > 32) && (data[i] < 127)) { 
     86               fprintf(MSG_OUT, "%c", data[i]); 
     87@@ -159,10 +158,12 @@ 
     88               fprintf(MSG_OUT, " "); 
     89             } 
     90           } 
     91-          strncpy(name, (char*) &data[25], 48); 
     92-          name[48] = 0; 
     93+          strncpy(name, (char*) &data[40], 32); 
     94+          i=31; 
     95+          while( (i >= 0) && (name[i] <= ' ')) --i; 
     96+          name[i+1] = '\0'; 
     97           fprintf(MSG_OUT, "\nlibdvdnav: DVD Serial Number: "); 
     98-          for(i=73; i < 89; i++ ) { 
     99+          for(i=813; i < 829; i++ ) { 
     100             if((data[i] == 0)) break; 
     101             if((data[i] > 32) && (data[i] < 127)) { 
     102               fprintf(MSG_OUT, "%c", data[i]); 
     103Index: src/vm/decoder.c 
     104=================================================================== 
     105--- src/vm/decoder.c    (revision 1096) 
     106+++ src/vm/decoder.c    (working copy) 
     107@@ -33,8 +33,8 @@ 
     108 #include <limits.h> 
     109 #include <string.h>  /* For memset */ 
     110 #include <sys/time.h> 
     111-#include <libdvdread/nav_types.h> 
     112-#include <libdvdread/ifo_types.h> /* vm_cmd_t */ 
     113+#include <dvdread/nav_types.h> 
     114+#include <dvdread/ifo_types.h> /* vm_cmd_t */ 
     115  
     116 #include "dvd_types.h" 
     117 #include "remap.h" 
     118Index: src/vm/vmcmd.c 
     119=================================================================== 
     120--- src/vm/vmcmd.c  (revision 1096) 
     121+++ src/vm/vmcmd.c  (working copy) 
     122@@ -34,8 +34,8 @@ 
     123 #include <sys/time.h> 
     124  
     125 #include "dvd_types.h" 
     126-#include <libdvdread/nav_types.h> 
     127-#include <libdvdread/ifo_types.h> 
     128+#include <dvdread/nav_types.h> 
     129+#include <dvdread/ifo_types.h> 
     130 #include "decoder.h" 
     131 #include "remap.h" 
     132 #include "vm.h" 
     133Index: src/searching.c 
     134=================================================================== 
     135--- src/searching.c (revision 1096) 
     136+++ src/searching.c (working copy) 
     137@@ -33,8 +33,8 @@ 
     138 #include <stdlib.h> 
     139 #include <sys/time.h> 
     140 #include "dvd_types.h" 
     141-#include <libdvdread/nav_types.h> 
     142-#include <libdvdread/ifo_types.h> 
     143+#include <dvdread/nav_types.h> 
     144+#include <dvdread/ifo_types.h> 
     145 #include "remap.h" 
     146 #include "vm/decoder.h" 
     147 #include "vm/vm.h" 
     148Index: src/remap.c 
     149=================================================================== 
     150--- src/remap.c (revision 1096) 
     151+++ src/remap.c (working copy) 
     152@@ -39,8 +39,8 @@ 
     153 #include <limits.h> 
     154 #include <sys/time.h> 
     155 #include "dvd_types.h" 
     156-#include <libdvdread/nav_types.h> 
     157-#include <libdvdread/ifo_types.h> 
     158+#include <dvdread/nav_types.h> 
     159+#include <dvdread/ifo_types.h> 
     160 #include "remap.h" 
     161 #include "vm/decoder.h" 
     162 #include "vm/vm.h" 
     163Index: src/highlight.c 
     164=================================================================== 
     165--- src/highlight.c (revision 1096) 
     166+++ src/highlight.c (working copy) 
     167@@ -32,7 +32,7 @@ 
     168 #include <limits.h> 
     169 #include <string.h> 
     170 #include <sys/time.h> 
     171-#include <libdvdread/nav_types.h> 
     172+#include <dvdread/nav_types.h> 
     173 #include "dvd_types.h" 
     174 #include "remap.h" 
     175 #include "vm/decoder.h" 
     176Index: src/dvdnav.c 
     177=================================================================== 
     178--- src/dvdnav.c    (revision 1096) 
     179+++ src/dvdnav.c    (working copy) 
     180@@ -37,9 +37,9 @@ 
     181 #include <string.h> 
     182 #include <sys/time.h> 
     183 #include "dvd_types.h" 
     184-#include <libdvdread/dvd_reader.h> 
     185-#include <libdvdread/nav_types.h> 
     186-#include <libdvdread/ifo_types.h> /* For vm_cmd_t */ 
     187+#include <dvdread/dvd_reader.h> 
     188+#include <dvdread/nav_types.h> 
     189+#include <dvdread/ifo_types.h> /* For vm_cmd_t */ 
     190 #include "remap.h" 
     191 #include "vm/decoder.h" 
     192 #include "vm/vm.h" 
     193@@ -47,7 +47,7 @@ 
     194 #include "dvdnav_events.h" 
     195 #include "dvdnav_internal.h" 
     196 #include "read_cache.h" 
     197-#include <libdvdread/nav_read.h> 
     198+#include <dvdread/nav_read.h> 
     199 #include "remap.h" 
     200  
     201 static dvdnav_status_t dvdnav_clear(dvdnav_t * this) { 
     202Index: src/dvdnav.h 
     203=================================================================== 
     204--- src/dvdnav.h    (revision 1096) 
     205+++ src/dvdnav.h    (working copy) 
     206@@ -37,9 +37,9 @@ 
     207  
     208 #ifndef DVDNAV_COMPILE 
     209 #  include <dvdnav/dvd_types.h> 
     210-#  include <libdvdread/dvd_reader.h> 
     211-#  include <libdvdread/nav_types.h> 
     212-#  include <libdvdread/ifo_types.h> /* For vm_cmd_t */ 
     213+#  include <dvdread/dvd_reader.h> 
     214+#  include <dvdread/nav_types.h> 
     215+#  include <dvdread/ifo_types.h> /* For vm_cmd_t */ 
     216 #  include <dvdnav/dvdnav_events.h> 
     217 #endif 
     218  
     219Index: configure.ac 
     220=================================================================== 
     221--- configure.ac    (revision 1096) 
     222+++ configure.ac    (working copy) 
     223@@ -155,26 +155,62 @@ 
    6224 AC_SUBST(THREAD_CFLAGS) 
    7225  
     
    35253+       dvdcss_path=$withval 
    36254+     fi]) 
    37 
     255  
    38256+if test x"$link_dvdcss" != xyes; then 
    39257+dnl dlopen libdvdcss 
     
    80298+AC_SUBST(CSS_CFLAGS) 
    81299+  
    82   
     300
    83301 dnl --------------------------------------------- 
    84302 dnl cflags 
    85 --- a/examples/Makefile.am.orig 2008-06-10 01:56:16.000000000 +0200 
    86 +++ b/examples/Makefile.am  2008-06-10 01:57:04.000000000 +0200 
     303 dnl --------------------------------------------- 
     304Index: examples/menus.c 
     305=================================================================== 
     306--- examples/menus.c    (revision 1096) 
     307+++ examples/menus.c    (working copy) 
     308@@ -28,9 +28,9 @@ 
     309 #include <sys/stat.h> 
     310 #include <fcntl.h> 
     311 #include "dvd_types.h" 
     312-#include <libdvdread/dvd_reader.h> 
     313-#include <libdvdread/nav_types.h> 
     314-#include <libdvdread/ifo_types.h> /* For vm_cmd_t */ 
     315+#include <dvdread/dvd_reader.h> 
     316+#include <dvdread/nav_types.h> 
     317+#include <dvdread/ifo_types.h> /* For vm_cmd_t */ 
     318 #include "dvdnav.h" 
     319 #include "dvdnav_events.h" 
     320  
     321Index: examples/Makefile.am 
     322=================================================================== 
     323--- examples/Makefile.am    (revision 1096) 
     324+++ examples/Makefile.am    (working copy) 
    87325@@ -8,7 +8,7 @@ 
    88326  
     
    94332 $(DVDNAV_LIB): 
    95333    @cd $(top_builddir)/src/ && $(MAKE) libdvdnav.la 
    96 diff --git a/src/vm/vm.c b/src/vm/vm.c 
    97 index 53bef88..db855c7 100644 
    98 --- a/src/vm/vm.c 
    99 +++ b/src/vm/vm.c 
    100 @@ -134,24 +134,25 @@ static void vm_print_current_domain_state(vm_t *vm) { 
    101  } 
    102  #endif 
    103   
    104 +#include <libdvdread/dvd_input.h> 
    105 + 
    106  static void dvd_read_name(char *name, const char *device) { 
    107      /* Because we are compiling with _FILE_OFFSET_BITS=64 
    108       * all off_t are 64bit. 
    109       */ 
    110      off_t off; 
    111 -    int fd, i; 
    112 +    dvd_input_t fd; int i; 
    113      uint8_t data[DVD_VIDEO_LB_LEN]; 
    114   
    115      /* Read DVD name */ 
    116 -    fd = open(device, O_RDONLY); 
    117 +    fd = dvdinput_open(device); 
    118      if (fd > 0) {  
    119 -      off = lseek( fd, 32 * (off_t) DVD_VIDEO_LB_LEN, SEEK_SET ); 
    120 -      if( off == ( 32 * (off_t) DVD_VIDEO_LB_LEN ) ) { 
    121 -        off = read( fd, data, DVD_VIDEO_LB_LEN );  
    122 -        close(fd); 
    123 -        if (off == ( (off_t) DVD_VIDEO_LB_LEN )) { 
    124 +      off = dvdinput_seek( fd, 16 ); 
    125 +      if( off == 16 ) { 
    126 +        off = dvdinput_read( fd, data, 1, DVDINPUT_NOFLAGS );  
    127 +        if (off == 1 ) { 
    128            fprintf(MSG_OUT, "libdvdnav: DVD Title: "); 
    129 -          for(i=25; i < 73; i++ ) { 
    130 +          for(i=40; i < 73; i++ ) { 
    131              if((data[i] == 0)) break; 
    132              if((data[i] > 32) && (data[i] < 127)) { 
    133                fprintf(MSG_OUT, "%c", data[i]); 
    134 @@ -159,10 +160,12 @@ static void dvd_read_name(char *name, const char *device) { 
    135                fprintf(MSG_OUT, " "); 
    136              } 
    137            } 
    138 -          strncpy(name, (char*) &data[25], 48); 
    139 -          name[48] = 0; 
    140 +          strncpy(name, (char*) &data[40], 32); 
    141 +          i=31; 
    142 +          while( (i >= 0) && (name[i] <= ' ')) --i; 
    143 +          name[i+1] = '\0'; 
    144            fprintf(MSG_OUT, "\nlibdvdnav: DVD Serial Number: "); 
    145 -          for(i=73; i < 89; i++ ) { 
    146 +          for(i=813; i < 829; i++ ) { 
    147              if((data[i] == 0)) break; 
    148              if((data[i] > 32) && (data[i] < 127)) { 
    149                fprintf(MSG_OUT, "%c", data[i]); 
    150 @@ -186,7 +189,7 @@ static void dvd_read_name(char *name, const char *device) { 
    151        } else { 
    152          fprintf(MSG_OUT, "libdvdnav: Can't seek to block %u\n", 32 ); 
    153        } 
    154 -      close(fd); 
    155 +      dvdinput_close(fd); 
    156      } else { 
    157      fprintf(MSG_OUT, "NAME OPEN FAILED\n"); 
    158    } 
  • extras/contrib/src/packages.mak

    ra690954 r16bf23c  
    110110LIBDVDNAV_URL=http://www1.mplayerhq.hu/MPlayer/releases/dvdnav/libdvdnav-$(LIBDVDNAV_VERSION).tar.gz 
    111111LIBDVDNAV_SVN=svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav 
    112 LIBDVDREAD_VERSION=0.9.4 
    113 LIBDVDREAD_URL=$(VIDEOLAN)/libdvdread/$(LIBDVDREAD_VERSION)/libdvdread-$(LIBDVDREAD_VERSION).tar.gz 
     112LIBDVDREAD_VERSION=0.9.7 
     113LIBDVDREAD_URL=http://www.dtek.chalmers.se/groups/dvd/dist/libdvdread-$(LIBDVDREAD_VERSION).tar.gz 
     114#LIBDVDREAD_URL=$(VIDEOLAN)/libdvdread/$(LIBDVDREAD_VERSION)/libdvdread-$(LIBDVDREAD_VERSION).tar.gz 
    114115LIBDVBPSI_VERSION=0.1.6 
    115116LIBDVBPSI_URL=$(VIDEOLAN)/libdvbpsi/$(LIBDVBPSI_VERSION)/libdvbpsi5-$(LIBDVBPSI_VERSION).tar.gz