]> git.sesse.net Git - vlc/blobdiff - modules/access/vcdx/access.c
Merge commit 'origin/1.0-bugfix'
[vlc] / modules / access / vcdx / access.c
index d28ad46d8daaa43bbb89bce94be2707b4125fe10..e0eb969905501c05958fc1e42557d4f2d130fcea 100644 (file)
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 #include <vlc_interface.h>
 #include <vlc_input.h>
 #include <vlc_access.h>
+#include <vlc_charset.h>
 #include "vlc_keys.h"
 
 #include <cdio/cdio.h>
 #include <libvcd/logging.h>
 #include "vcd.h"
 #include "info.h"
-#include "intf.h"
-
-extern void VCDSetOrigin( access_t *p_access, lsn_t i_lsn, track_t i_track,
-                          const vcdinfo_itemid_t *p_itemid );
+#include "access.h"
 
 /*****************************************************************************
  * Local prototypes
@@ -106,8 +104,8 @@ cdio_log_handler (cdio_log_level_t level, const char message[])
     break;
   default:
     msg_Warn( p_vcd_access, "%s\n%s %d", message,
-            _("The above message had unknown log level"),
-            level);
+              "The above message had unknown log level",
+              level);
   }
   return;
 }
@@ -132,8 +130,8 @@ vcd_log_handler (vcd_log_level_t level, const char message[])
     break;
   default:
     msg_Warn( p_vcd_access, "%s\n%s %d", message,
-            _("The above message had unknown vcdimager log level"),
-            level);
+              "The above message had unknown vcdimager log level",
+              level);
   }
   return;
 }
@@ -511,7 +509,7 @@ VCDLIDs( access_t * p_access )
 
       vcdinfo_visit_lot (p_vcdplayer->vcd, false);
 
-#if FIXED
+#ifdef FIXED
     /*
        We need to change libvcdinfo to be more robust when there are
        problems reading the extended PSD. Given that area-highlighting and
@@ -543,7 +541,7 @@ VCDLIDs( access_t * p_access )
         TAB_APPEND( t->i_seekpoint, t->seekpoint, s );
     }
 
-#if DYNAMICALLY_ALLOCATED
+#ifdef DYNAMICALLY_ALLOCATED
     TAB_APPEND( p_vcdplayer->i_titles, p_vcdplayer->p_title, t );
 #else
     p_vcdplayer->p_title[p_vcdplayer->i_titles] = t;
@@ -650,6 +648,7 @@ VCDParse( access_t * p_access, /*out*/ vcdinfo_itemid_t * p_itemid,
       psz_source = config_GetPsz( p_access, "vcd" );
 
       if( !psz_source || 0==strlen(psz_source) ) {
+        free( psz_source );
         /* Scan for a CD-ROM drive with a VCD in it. */
         char **cd_drives = cdio_get_devices_with_cap( NULL,
                             ( CDIO_FS_ANAL_SVCD | CDIO_FS_ANAL_CVD
@@ -759,7 +758,7 @@ vcd_Open( vlc_object_t *p_this, const char *psz_dev )
 
     if( !psz_dev ) return NULL;
 
-    actual_dev=strdup(psz_dev);
+    actual_dev= ToLocaleDup(psz_dev);
     if ( vcdinfo_open(&p_vcdobj, &actual_dev, DRIVER_UNKNOWN, NULL) !=
          VCDINFO_OPEN_VCD) {
       free(actual_dev);
@@ -872,10 +871,7 @@ VCDOpen ( vlc_object_t *p_this )
     p_vcdplayer = malloc( sizeof(vcdplayer_t) );
 
     if( p_vcdplayer == NULL )
-    {
-        LOG_ERR ("out of memory" );
         return VLC_ENOMEM;
-    }
 
     p_vcdplayer->i_debug = config_GetInt( p_this, MODULE_STRING "-debug" );
     p_access->p_sys = (access_sys_t *) p_vcdplayer;
@@ -956,30 +952,28 @@ VCDOpen ( vlc_object_t *p_this )
 
     vcdplayer_play( p_access, itemid );
 
+    free( p_access->psz_demux );
     p_access->psz_demux = strdup( "ps" );
 
-#if FIXED
+#ifdef FIXED
     if (play_single_item)
       VCDFixupPlayList( p_access, p_vcd, psz_source, &itemid,
                         play_single_item );
 #endif
 
-#if FIXED
+#ifdef FIXED
     p_vcdplayer->p_intf = intf_Create( p_access, "vcdx" );
     p_vcdplayer->p_intf->b_block = false;
 #endif
     p_vcdplayer->p_access = p_access;
 
-#ifdef FIXED
-    intf_RunThread( p_vcdplayer->p_intf );
-#endif
-
     free( psz_source );
 
     return VLC_SUCCESS;
  err_exit:
     if( p_vcdplayer->p_input ) vlc_object_release( p_vcdplayer->p_input );
     free( psz_source );
+    free( p_vcdplayer->psz_source );
     free( p_vcdplayer );
     return VLC_EGENERIC;
 }
@@ -1038,12 +1032,12 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
          */
         case ACCESS_GET_META:
         {
-            vlc_meta_t **pp_meta = (vlc_meta_t**)va_arg( args, vlc_meta_t** );
-
             dbg_print( INPUT_DBG_EVENT, "get meta info" );
 #if 0
             if( p_vcdplayer->p_meta )
             {
+                vlc_meta_t **pp_meta = (vlc_meta_t**)va_arg(args,vlc_meta_t**);
+
                 *pp_meta = vlc_meta_Duplicate( p_vcdplayer->p_meta );
                 dbg_print( INPUT_DBG_META, "%s", "Meta copied" );
             }
@@ -1070,12 +1064,6 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
           }
 
         /* */
-        case ACCESS_GET_MTU:
-            pi_int = (int*)va_arg( args, int * );
-            *pi_int = (p_vcdplayer->i_blocks_per_read * M2F2_SECTOR_SIZE);
-            dbg_print( INPUT_DBG_EVENT, "GET MTU: %d", *pi_int );
-            break;
-
         case ACCESS_GET_PTS_DELAY:
         {
             int64_t *pi_64 = (int64_t*)va_arg( args, int64_t * );
@@ -1106,9 +1094,8 @@ static int VCDControl( access_t *p_access, int i_query, va_list args )
             dbg_print( INPUT_DBG_EVENT, "GET TITLE: i_titles %d",
                        p_vcdplayer->i_titles );
 
-            if( psz_mrl == NULL ) {
-               msg_Warn( p_access, "out of memory" );
-            } else {
+            if( psz_mrl  )
+            {
                snprintf(psz_mrl, psz_mrl_max, "%s%s",
                         VCD_MRL_PREFIX, p_vcdplayer->psz_source);
                VCDMetaInfo( p_access, psz_mrl );