view libmpdvdkit2/libdvdcss_changes.diff @ 16649:e1d6fbd607e0

Fix DVD audio and subtitle stream mapping, esp. for DVD with both 4:3 and 16:9 subtitles. Patch by Lehel Bernadt (lehel at pmc-services hu) with minor modifications.
author reimar
date Mon, 03 Oct 2005 14:29:01 +0000
parents 954cdf2171f6
children 2ab52c9b72b9
line wrap: on
line source

--- common.h	2003-06-13 19:33:35.000000000 +0200
+++ common.h	2005-03-01 07:41:41.000000000 +0100
@@ -27,21 +27,10 @@
 /*****************************************************************************
  * Basic types definitions
  *****************************************************************************/
-#if defined( HAVE_STDINT_H )
-#   include <stdint.h>
-#elif defined( HAVE_INTTYPES_H )
-#   include <inttypes.h>
-#elif defined( SYS_CYGWIN )
-#   include <sys/types.h>
-    /* Cygwin only defines half of these... */
-    typedef u_int8_t            uint8_t;
-    typedef u_int32_t           uint32_t;
-#else
-    /* Fallback types (very x86-centric, sorry) */
-    typedef unsigned char       uint8_t;
-    typedef signed char         int8_t;
-    typedef unsigned int        uint32_t;
-    typedef signed int          int32_t;
+#include <inttypes.h>
+
+#ifdef __CYGWIN__
+#define SYS_CYGWIN
 #endif
 
 #if defined( WIN32 )
--- css.c	2005-07-11 14:24:09.000000000 +0200
+++ css.c	2005-10-01 19:02:35.000000000 +0200
@@ -41,19 +41,11 @@
 #include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#endif
-#ifdef HAVE_UNISTD_H
 #   include <unistd.h>
-#endif
 #include <fcntl.h>
-
-#ifdef HAVE_LIMITS_H
 #   include <limits.h>
-#endif
 
-#include "dvdcss/dvdcss.h"
+#include "dvdcss.h"
 
 #include "common.h"
 #include "css.h"
--- device.c	2005-07-11 13:33:34.000000000 +0200
+++ device.c	2005-10-01 19:08:07.000000000 +0200
@@ -31,23 +31,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#ifdef HAVE_ERRNO_H
 #   include <errno.h>
-#endif
 #include <sys/types.h>
 #include <sys/stat.h>
-#ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#endif
 #include <fcntl.h>
-
-#ifdef HAVE_UNISTD_H
 #   include <unistd.h>
-#endif
-
-#ifdef HAVE_LIMITS_H
 #   include <limits.h>
-#endif
 
 #if defined( WIN32 ) && !defined( SYS_CYGWIN )
 #   include <io.h>                                                 /* read() */
@@ -55,7 +44,7 @@
 #   include <sys/uio.h>                                      /* struct iovec */
 #endif
 
-#include "dvdcss/dvdcss.h"
+#include "dvdcss.h"
 
 #include "common.h"
 #include "css.h"
@@ -143,8 +132,11 @@
     print_debug( dvdcss, "opening target `%s'", psz_device );
 
 #if defined( WIN32 )
-    /* If device is not "X:", we are actually opening a file. */
-    dvdcss->b_file = !psz_device[0] || psz_device[1] != ':' || psz_device[2];
+    dvdcss->b_file = 1;
+    /* If device is "X:" or "X:\", we are not actually opening a file. */
+    if (psz_device[0] && psz_device[1] == ':' &&
+       (!psz_device[2] || (psz_device[2] == '\\' && !psz_device[3])))
+        dvdcss->b_file = 0;
 
     /* Initialize readv temporary buffer */
     dvdcss->p_readv_buffer   = NULL;
--- error.c	2004-02-24 16:46:49.000000000 +0100
+++ error.c	2005-10-01 19:10:06.000000000 +0200
@@ -25,16 +25,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-
-#ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#endif
-
-#ifdef HAVE_LIMITS_H
 #   include <limits.h>
-#endif
 
-#include "dvdcss/dvdcss.h"
+#include "dvdcss.h"
 
 #include "common.h"
 #include "css.h"
--- libdvdcss.c	2004-08-13 15:40:18.000000000 +0200
+++ libdvdcss.c	2005-10-01 19:11:27.000000000 +0200
@@ -87,10 +87,7 @@
  *     values. This will speed up descrambling of DVDs which are in the
  *     cache. The DVDCSS_CACHE directory is created if it does not exist,
  *     and a subdirectory is created named after the DVD's title or
- *     manufacturing date. If DVDCSS_CACHE is not set or is empty, \e libdvdcss
- *     will use the default value which is "${HOME}/.dvdcss/" under Unix and
- *     "C:\Documents and Settings\$USER\Application Data\dvdcss\" under Win32.
- *     The special value "off" disables caching.
+ *     manufacturing date.
  */
 
 /*
@@ -103,28 +100,12 @@
 #include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#endif
-#ifdef HAVE_PWD_H
-#   include <pwd.h>
-#endif
 #include <fcntl.h>
 #include <errno.h>
-
-#ifdef HAVE_UNISTD_H
 #   include <unistd.h>
-#endif
-
-#ifdef HAVE_LIMITS_H
 #   include <limits.h>
-#endif
 
-#ifdef HAVE_DIRECT_H
-#   include <direct.h>
-#endif
-
-#include "dvdcss/dvdcss.h"
+#include "dvdcss.h"
 
 #include "common.h"
 #include "css.h"
@@ -132,6 +113,12 @@
 #include "ioctl.h"
 #include "device.h"
 
+#ifndef HAVE_MPLAYER
+ #include "get_path.c"
+#else
+ extern char * get_path( char * filename );
+#endif
+
 /**
  * \brief Symbol for version checks.
  *
@@ -233,6 +220,8 @@
         }
     }
 
+#if 0 /* MPlayer caches keys in its own configuration directory */
+
     /*
      *  If DVDCSS_CACHE was not set, try to guess a default value
      */
@@ -309,6 +298,8 @@
 #endif
     }
 
+#endif /* 0 */
+
     /*
      *  Find cache dir from the DVDCSS_CACHE environment variable
      */
@@ -326,6 +317,7 @@
             psz_cache = NULL;
         }
     }
+    else psz_cache = get_path( "DVDKeys" );
 
     /*
      *  Open device
@@ -504,9 +496,10 @@
             dvdcss->psz_cachefile[0] = '\0';
             goto nocache;
         }
+        i += sprintf( dvdcss->psz_cachefile + i, "/");
 
-        i += sprintf( dvdcss->psz_cachefile + i, "/%s-%s%s", psz_title,
-                      psz_serial, psz_key );
+//        i += sprintf( dvdcss->psz_cachefile + i, "/%s", psz_data );
+        i += sprintf( dvdcss->psz_cachefile + i, "/%s#%s", psz_title, psz_serial );
 #if !defined( WIN32 ) || defined( SYS_CYGWIN )
         i_ret = mkdir( dvdcss->psz_cachefile, 0755 );
 #else