This commit may eat your domestic pets.
27 files changed:
/* eg informative but needed (we can have access+demux) */
char *psz_access;
char *psz_demux;
/* eg informative but needed (we can have access+demux) */
char *psz_access;
char *psz_demux;
+ char *psz_location;
+ char *psz_file;
/* input stream */
stream_t *s; /* NULL in case of a access+demux in one */
/* input stream */
stream_t *s; /* NULL in case of a access+demux in one */
LIBVLC_USED
static inline bool demux_IsPathExtension( demux_t *p_demux, const char *psz_extension )
{
LIBVLC_USED
static inline bool demux_IsPathExtension( demux_t *p_demux, const char *psz_extension )
{
- const char *psz_ext = strrchr ( p_demux->psz_path, '.' );
+ if( !p_demux->psz_file )
+ return false;
+
+ const char *psz_ext = strrchr ( p_demux->psz_file, '.' );
if( !psz_ext || strcasecmp( psz_ext, psz_extension ) )
return false;
return true;
if( !psz_ext || strcasecmp( psz_ext, psz_extension ) )
return false;
return true;
p_sys->i_next_demux_date = -1;
const char *psz_device = NULL;
p_sys->i_next_demux_date = -1;
const char *psz_device = NULL;
- if( p_demux->psz_path && *p_demux->psz_path )
- psz_device = p_demux->psz_path;
+ if( p_demux->psz_location && *p_demux->psz_location )
+ psz_device = p_demux->psz_location;
else
ListAvailableDevices( p_demux, false );
if( FindMainDevice( p_demux, psz_device ) != VLC_SUCCESS )
{
else
ListAvailableDevices( p_demux, false );
if( FindMainDevice( p_demux, psz_device ) != VLC_SUCCESS )
{
- if( p_demux->psz_path && *p_demux->psz_path )
+ if( p_demux->psz_location && *p_demux->psz_location )
ListAvailableDevices( p_demux, false );
DemuxClose( p_this );
return VLC_EGENERIC;
ListAvailableDevices( p_demux, false );
DemuxClose( p_this );
return VLC_EGENERIC;
demux_t *p_demux = (demux_t*)p_this;
demux_sys_t *p_sys;
demux_t *p_demux = (demux_t*)p_this;
demux_sys_t *p_sys;
+ if( p_demux->psz_file == NULL )
+ return VLC_EGENERIC;
if( *p_demux->psz_access &&
strcmp( p_demux->psz_access, "bd" ) &&
strcmp( p_demux->psz_access, "file" ) )
if( *p_demux->psz_access &&
strcmp( p_demux->psz_access, "bd" ) &&
strcmp( p_demux->psz_access, "file" ) )
- char *psz_base = FindPathBase( p_demux->psz_path, &b_shortname );
+ char *psz_base = FindPathBase( p_demux->psz_file, &b_shortname );
if( !psz_base )
return VLC_EGENERIC;
if( !psz_base )
return VLC_EGENERIC;
{
msg_Err( p_demux, "Bad MRL, please check the option line "
"(MRL was: %s)",
{
msg_Err( p_demux, "Bad MRL, please check the option line "
"(MRL was: %s)",
+ p_demux->psz_location );
free( p_sys );
return VLC_EGENERIC;
}
free( p_sys );
return VLC_EGENERIC;
}
const char *in_fmt = NULL;
float rate_f;
const char *in_fmt = NULL;
float rate_f;
- psz_dup = strdup( p_demux->psz_path );
+ psz_dup = strdup( p_demux->psz_location );
psz_parser = psz_dup;
for( token = strtok_r( psz_parser,":",&state); token;
token = strtok_r( NULL, ":", &state ) )
psz_parser = psz_dup;
for( token = strtok_r( psz_parser,":",&state); token;
token = strtok_r( NULL, ":", &state ) )
char *psz_name;
char *psz_code;
char *psz_name;
char *psz_code;
- if( !p_demux->psz_path || !*p_demux->psz_path )
+ if( !p_demux->psz_file || !*p_demux->psz_file )
{
/* Only when selected */
if( !p_demux->psz_access || !*p_demux->psz_access )
{
/* Only when selected */
if( !p_demux->psz_access || !*p_demux->psz_access )
- psz_name = ToLocaleDup( p_demux->psz_path );
+ psz_name = ToLocaleDup( p_demux->psz_file );
#ifdef WIN32
/* Remove trailing backslash, otherwise dvdnav_open will fail */
#ifdef WIN32
/* Remove trailing backslash, otherwise dvdnav_open will fail */
dvd_reader_t *p_dvdread;
ifo_handle_t *p_vmg_file;
dvd_reader_t *p_dvdread;
ifo_handle_t *p_vmg_file;
- if( !p_demux->psz_path || !*p_demux->psz_path )
+ if( !p_demux->psz_file || !*p_demux->psz_file )
{
/* Only when selected */
if( !p_demux->psz_access || !*p_demux->psz_access )
{
/* Only when selected */
if( !p_demux->psz_access || !*p_demux->psz_access )
- psz_name = ToLocaleDup( p_demux->psz_path );
+ psz_name = ToLocaleDup( p_demux->psz_file );
#ifdef WIN32
if( psz_name[0] && psz_name[1] == ':' &&
#ifdef WIN32
if( psz_name[0] && psz_name[1] == ':' &&
demux_t *demux = (demux_t *)object;
imem_sys_t *sys;
demux_t *demux = (demux_t *)object;
imem_sys_t *sys;
- if (OpenCommon(object, &sys, demux->psz_path))
+ if (OpenCommon(object, &sys, demux->psz_location))
return VLC_EGENERIC;
/* ES format */
return VLC_EGENERIC;
/* ES format */
static void Parse( demux_t *p_demux )
{
demux_sys_t *p_sys = p_demux->p_sys;
static void Parse( demux_t *p_demux )
{
demux_sys_t *p_sys = p_demux->p_sys;
- char *psz_dup = strdup( p_demux->psz_path );
+ char *psz_dup = strdup( p_demux->psz_location );
char *psz_parser = psz_dup;
if( !strncmp( psz_parser, "channels=", strlen( "channels=" ) ) )
char *psz_parser = psz_dup;
if( !strncmp( psz_parser, "channels=", strlen( "channels=" ) ) )
p_sys->p_block = NULL;
p_sys->i_next_demux_date = -1;
p_sys->p_block = NULL;
p_sys->i_next_demux_date = -1;
- if( p_demux->psz_path && *p_demux->psz_path )
- p_sys->psz_device = p_demux->psz_path;
+ if( p_demux->psz_location && *p_demux->psz_location )
+ p_sys->psz_device = p_demux->psz_location;
else
p_sys->psz_device = OSS_DEFAULT;
else
p_sys->psz_device = OSS_DEFAULT;
else
return VLC_EGENERIC;
else
return VLC_EGENERIC;
- char *tmp = strdup (demux->psz_path);
+ char *tmp = strdup (demux->psz_location);
if (tmp == NULL)
return VLC_ENOMEM;
if (tmp == NULL)
return VLC_ENOMEM;
if (!strcmp (demux->psz_access, "window"))
{
char *end;
if (!strcmp (demux->psz_access, "window"))
{
char *end;
- unsigned long ul = strtoul (demux->psz_path, &end, 0);
+ unsigned long ul = strtoul (demux->psz_location, &end, 0);
if (*end || ul > 0xffffffff)
{
if (*end || ul > 0xffffffff)
{
- msg_Err (obj, "bad X11 drawable %s", demux->psz_path);
+ msg_Err (obj, "bad X11 drawable %s", demux->psz_location);
goto error;
}
p_sys->window = ul;
goto error;
}
p_sys->window = ul;
{
demux_sys_t *p_sys = p_demux->p_sys;
{
demux_sys_t *p_sys = p_demux->p_sys;
- char *psz_dup = strdup( p_demux->psz_path );
+ char *psz_dup = strdup( p_demux->psz_location );
char *psz_parser = psz_dup;
while( *psz_parser && *psz_parser != ':' )
char *psz_parser = psz_dup;
while( *psz_parser && *psz_parser != ':' )
GetV4L2Params(p_sys, (vlc_object_t *) p_demux);
GetV4L2Params(p_sys, (vlc_object_t *) p_demux);
- ParseMRL( p_sys, p_demux->psz_path, (vlc_object_t *) p_demux );
+ ParseMRL( p_sys, p_demux->psz_location, (vlc_object_t *) p_demux );
#ifdef HAVE_LIBV4L2
if( !var_InheritBool( p_this, CFG_PREFIX "use-libv4l2" ) )
#ifdef HAVE_LIBV4L2
if( !var_InheritBool( p_this, CFG_PREFIX "use-libv4l2" ) )
bool b_can_seek;
/* Init Probe data */
bool b_can_seek;
/* Init Probe data */
- pd.filename = p_demux->psz_path;
+ pd.filename = p_demux->psz_file;
if( ( pd.buf_size = stream_Peek( p_demux->s, &pd.buf, 2048 + 213 ) ) <= 0 )
{
msg_Warn( p_demux, "cannot peek" );
if( ( pd.buf_size = stream_Peek( p_demux->s, &pd.buf, 2048 + 213 ) ) <= 0 )
{
msg_Warn( p_demux, "cannot peek" );
- if( !p_demux->psz_path ) return VLC_EGENERIC;
+ if( !p_demux->psz_file ) return VLC_EGENERIC;
- i_len = strlen( p_demux->psz_path );
+ i_len = strlen( p_demux->psz_file );
if( i_len < 4 ) return VLC_EGENERIC;
if( i_len < 4 ) return VLC_EGENERIC;
- if( strcasecmp( &p_demux->psz_path[i_len - 4], ".str" ) &&
- strcasecmp( &p_demux->psz_path[i_len - 4], ".xai" ) &&
- strcasecmp( &p_demux->psz_path[i_len - 3], ".xa" ) )
+ if( strcasecmp( &p_demux->psz_file[i_len - 4], ".str" ) &&
+ strcasecmp( &p_demux->psz_file[i_len - 4], ".xai" ) &&
+ strcasecmp( &p_demux->psz_file[i_len - 3], ".xa" ) )
- if( av_open_input_stream( &p_sys->ic, &p_sys->io, p_demux->psz_path,
+ if( av_open_input_stream( &p_sys->ic, &p_sys->io, p_demux->psz_file,
p_sys->fmt, NULL ) )
{
msg_Err( p_demux, "av_open_input_stream failed" );
p_sys->fmt, NULL ) )
{
msg_Err( p_demux, "av_open_input_stream failed" );
/* We accept file based on extention match */
if( !p_demux->b_force )
{
/* We accept file based on extention match */
if( !p_demux->b_force )
{
- if( ( ext = strrchr( p_demux->psz_path, '.' ) ) == NULL ||
+ if( p_demux->psz_file == NULL
+ || ( ext = strrchr( p_demux->psz_file, '.' ) ) == NULL ||
stream_Size( p_demux->s ) == 0 ) return VLC_EGENERIC;
ext++; /* skip . */
stream_Size( p_demux->s ) == 0 ) return VLC_EGENERIC;
ext++; /* skip . */
p_sys->b_timeout_call = false;
p_sys->b_multicast = false;
p_sys->b_real = false;
p_sys->b_timeout_call = false;
p_sys->b_multicast = false;
p_sys->b_real = false;
- p_sys->psz_path = strdup( p_demux->psz_path );
+ p_sys->psz_path = strdup( p_demux->psz_location );
p_sys->b_force_mcast = var_CreateGetBool( p_demux, "rtsp-mcast" );
p_sys->b_get_param = false;
p_sys->b_paused = false;
p_sys->b_force_mcast = var_CreateGetBool( p_demux, "rtsp-mcast" );
p_sys->b_get_param = false;
p_sys->b_paused = false;
if (var_InheritBool( p_demux, "mkv-preload-local-dir" ))
{
/* get the files from the same dir from the same family (based on p_demux->psz_path) */
if (var_InheritBool( p_demux, "mkv-preload-local-dir" ))
{
/* get the files from the same dir from the same family (based on p_demux->psz_path) */
- if (p_demux->psz_path[0] != '\0' && !strcmp(p_demux->psz_access, ""))
+ if (p_demux->psz_file && !strcmp(p_demux->psz_access, ""))
{
// assume it's a regular file
// get the directory path
{
// assume it's a regular file
// get the directory path
- s_path = p_demux->psz_path;
+ s_path = p_demux->psz_file;
if (s_path.at(s_path.length() - 1) == DIR_SEP_CHAR)
{
s_path = s_path.substr(0,s_path.length()-1);
if (s_path.at(s_path.length() - 1) == DIR_SEP_CHAR)
{
s_path = s_path.substr(0,s_path.length()-1);
s_filename = s_path + DIR_SEP_CHAR + psz_file;
#ifdef WIN32
s_filename = s_path + DIR_SEP_CHAR + psz_file;
#ifdef WIN32
- if (!strcasecmp(s_filename.c_str(), p_demux->psz_path))
+ if (!strcasecmp(s_filename.c_str(), p_demux->psz_file))
- if (!s_filename.compare(p_demux->psz_path))
+ if (!s_filename.compare(p_demux->psz_file))
#endif
{
free (psz_file);
#endif
{
free (psz_file);
/* We accept file based on extension match */
if( !p_demux->b_force )
{
/* We accept file based on extension match */
if( !p_demux->b_force )
{
- const char *psz_ext = strrchr( p_demux->psz_path, '.' );
+ if( !p_demux->psz_file )
+ return VLC_EGENERIC;
+ const char *psz_ext = strrchr( p_demux->psz_file, '.' );
else
{
char *psz_absolute;
else
{
char *psz_absolute;
- char *psz_path = strdup( p_demux->psz_path );
+ char *psz_path = strdup( p_demux->psz_location );
char *end = strrchr( psz_path, '/' );
if( end ) end[1] = '\0';
else *psz_path = '\0';
char *end = strrchr( psz_path, '/' );
if( end ) end[1] = '\0';
else *psz_path = '\0';
{
demux_t *p_demux = (demux_t *)p_this;
{
demux_t *p_demux = (demux_t *)p_this;
- size_t len = strlen( p_demux->psz_path );
+ if( !p_demux->psz_file )
+ return VLC_EGENERIC;
+
+ size_t len = strlen( p_demux->psz_file );
- char *psz_file = p_demux->psz_path + len - strlen( "VIDEO_TS.IFO" );
+ char *psz_file = p_demux->psz_file + len - strlen( "VIDEO_TS.IFO" );
/* Valid filenames are :
* - VIDEO_TS.IFO
* - VTS_XX_X.IFO where X are digits
/* Valid filenames are :
* - VIDEO_TS.IFO
* - VTS_XX_X.IFO where X are digits
p_demux->pf_demux = Demux;
}
/* Valid filename for DVD-VR is VR_MANGR.IFO */
p_demux->pf_demux = Demux;
}
/* Valid filename for DVD-VR is VR_MANGR.IFO */
- else if( len >= 12 && !strcmp( &p_demux->psz_path[len-12], "VR_MANGR.IFO" ) )
+ else if( len >= 12 && !strcmp( &p_demux->psz_file[len-12], "VR_MANGR.IFO" ) )
{
int i_peek;
const uint8_t *p_peek;
{
int i_peek;
const uint8_t *p_peek;
static int Demux( demux_t *p_demux )
{
static int Demux( demux_t *p_demux )
{
- size_t len = strlen( "dvd://" ) + strlen( p_demux->psz_path )
+ size_t len = strlen( "dvd://" ) + strlen( p_demux->psz_file )
- strlen( "VIDEO_TS.IFO" );
char *psz_url;
psz_url = malloc( len+1 );
if( !psz_url )
return 0;
- strlen( "VIDEO_TS.IFO" );
char *psz_url;
psz_url = malloc( len+1 );
if( !psz_url )
return 0;
- snprintf( psz_url, len+1, "dvd://%s", p_demux->psz_path );
+ snprintf( psz_url, len+1, "dvd://%s", p_demux->psz_file );
input_item_t *p_current_input = GetCurrentItem(p_demux);
input_item_t *p_input = input_item_New( p_demux, psz_url, psz_url );
input_item_t *p_current_input = GetCurrentItem(p_demux);
input_item_t *p_input = input_item_New( p_demux, psz_url, psz_url );
static int DemuxDVD_VR( demux_t *p_demux )
{
static int DemuxDVD_VR( demux_t *p_demux )
{
- char *psz_url = strdup( p_demux->psz_path );
+ char *psz_url = strdup( p_demux->psz_file );
char *psz_path;
if( p_demux->psz_access )
{
char *psz_path;
if( p_demux->psz_access )
{
- if( asprintf( &psz_path,"%s://%s", p_demux->psz_access, p_demux->psz_path ) == -1 )
+ if( asprintf( &psz_path,"%s://%s", p_demux->psz_access, p_demux->psz_location ) == -1 )
- psz_path = strdup( p_demux->psz_path );
+ psz_path = strdup( p_demux->psz_location );
if( psz_path == NULL )
return NULL;
}
if( psz_path == NULL )
return NULL;
}
demux_sys_t *p_sys;
int i_width=-1, i_height=-1;
unsigned u_fps_num=0, u_fps_den=1;
demux_sys_t *p_sys;
int i_width=-1, i_height=-1;
unsigned u_fps_num=0, u_fps_den=1;
vlc_fourcc_t i_chroma;
unsigned int i_sar_num = 0;
unsigned int i_sar_den = 0;
const struct preset_t *p_preset = NULL;
const uint8_t *p_peek;
vlc_fourcc_t i_chroma;
unsigned int i_sar_num = 0;
unsigned int i_sar_den = 0;
const struct preset_t *p_preset = NULL;
const uint8_t *p_peek;
bool b_y4m = false;
if( stream_Peek( p_demux->s, &p_peek, 9 ) == 9 )
bool b_y4m = false;
if( stream_Peek( p_demux->s, &p_peek, 9 ) == 9 )
/* http://wiki.multimedia.cx/index.php?title=YUV4MPEG2 */
if( !strncmp( (char *)p_peek, "YUV4MPEG2", 9 ) )
{
/* http://wiki.multimedia.cx/index.php?title=YUV4MPEG2 */
if( !strncmp( (char *)p_peek, "YUV4MPEG2", 9 ) )
{
- /* guess preset based on file extension */
- psz_ext = strrchr( p_demux->psz_path, '.' );
- if( psz_ext )
+ if( !p_demux->b_force )
+ /* guess preset based on file extension */
+ if( !p_demux->psz_file )
+ return VLC_EGENERIC;
+
+ const char *psz_ext = strrchr( p_demux->psz_file, '.' );
+ if( !psz_ext )
+ return VLC_EGENERIC;
- for( int i = 0; p_presets[i].psz_ext ; i++ )
+
+ for( unsigned i = 0; p_presets[i].psz_ext ; i++ )
{
if( !strcasecmp( psz_ext, p_presets[i].psz_ext ) )
{
p_preset = &p_presets[i];
{
if( !strcasecmp( psz_ext, p_presets[i].psz_ext ) )
{
p_preset = &p_presets[i];
- b_valid = true;
- break;
- }
- if( !b_valid && !p_demux->b_force )
/* Set p_input field */
p_demux->pf_demux = Demux;
p_demux->pf_control = Control;
/* Set p_input field */
p_demux->pf_demux = Demux;
p_demux->pf_control = Control;
- if( asprintf( &psz_vobname, "%s://%s", p_demux->psz_access, p_demux->psz_path ) == -1 )
+ if( asprintf( &psz_vobname, "%s://%s", p_demux->psz_access,
+ p_demux->psz_location ) == -1 )
{
free( p_sys );
return VLC_EGENERIC;
{
free( p_sys );
return VLC_EGENERIC;
demux_t* p_demux = p_demux_meta->p_demux;
vlc_meta_t* p_meta;
FileRef f;
demux_t* p_demux = p_demux_meta->p_demux;
vlc_meta_t* p_meta;
FileRef f;
- char *psz_path = decode_URI_duplicate( p_demux->psz_path );
p_demux_meta->p_meta = NULL;
p_demux_meta->p_meta = NULL;
- if( !psz_path )
- return VLC_ENOMEM;
- if( strncmp( p_demux->psz_access, "file", strlen("file") ) )
+ if( strcmp( p_demux->psz_access, "file" ) )
+ char *psz_path = decode_URI_duplicate( p_demux->psz_file );
+ if( !psz_path )
+ return VLC_ENOMEM;
#if defined(WIN32) || defined (UNDER_CE)
wchar_t wpath[MAX_PATH + 1];
#if defined(WIN32) || defined (UNDER_CE)
wchar_t wpath[MAX_PATH + 1];
int OpenDemux ( vlc_object_t *p_this )
{
demux_t *p_demux = (demux_t*)p_this;
int OpenDemux ( vlc_object_t *p_this )
{
demux_t *p_demux = (demux_t*)p_this;
- char * psz_name = p_demux->psz_path;
+ char * psz_name = p_demux->psz_location;
luaopen_stream( L );
luaopen_xml( L );
luaopen_md5( L );
luaopen_stream( L );
luaopen_xml( L );
luaopen_md5( L );
- lua_pushstring( L, p_demux->psz_path );
+ lua_pushstring( L, p_demux->psz_location );
lua_setfield( L, -2, "path" );
lua_pushstring( L, p_demux->psz_access );
lua_setfield( L, -2, "access" );
lua_setfield( L, -2, "path" );
lua_pushstring( L, p_demux->psz_access );
lua_setfield( L, -2, "access" );
#include <libvlc.h>
#include <vlc_codec.h>
#include <vlc_meta.h>
#include <libvlc.h>
#include <vlc_codec.h>
#include <vlc_meta.h>
static bool SkipID3Tag( demux_t * );
static bool SkipAPETag( demux_t *p_demux );
static bool SkipID3Tag( demux_t * );
static bool SkipAPETag( demux_t *p_demux );
+/* Decode URL (which has had its scheme stripped earlier) to a file path. */
+/* XXX: evil code duplication from access.c */
+static char *get_path(const char *location)
+{
+ char *url, *path;
+
+ /* Prepending "file://" is a bit hackish. But then again, we do not want
+ * to hard-code the list of schemes that use file paths in make_path().
+ */
+ if (asprintf(&url, "file://%s", location) == -1)
+ return NULL;
+
+ path = make_path (url);
+ free (url);
+ return path;
+}
+
+
/*****************************************************************************
* demux_New:
* if s is NULL then load a access_demux
*****************************************************************************/
demux_t *__demux_New( vlc_object_t *p_obj, input_thread_t *p_parent_input,
const char *psz_access, const char *psz_demux,
/*****************************************************************************
* demux_New:
* if s is NULL then load a access_demux
*****************************************************************************/
demux_t *__demux_New( vlc_object_t *p_obj, input_thread_t *p_parent_input,
const char *psz_access, const char *psz_demux,
+ const char *psz_location,
stream_t *s, es_out_t *out, bool b_quick )
{
static const char typename[] = "demux";
stream_t *s, es_out_t *out, bool b_quick )
{
static const char typename[] = "demux";
/* Parse URL */
p_demux->psz_access = strdup( psz_access );
p_demux->psz_demux = strdup( psz_demux );
/* Parse URL */
p_demux->psz_access = strdup( psz_access );
p_demux->psz_demux = strdup( psz_demux );
- p_demux->psz_path = strdup( psz_path );
+ p_demux->psz_location = strdup( psz_location );
+ p_demux->psz_file = get_path( psz_location );
/* Take into account "demux" to be able to do :demux=dump */
if( p_demux->psz_demux && *p_demux->psz_demux == '\0' )
/* Take into account "demux" to be able to do :demux=dump */
if( p_demux->psz_demux && *p_demux->psz_demux == '\0' )
- {
- msg_Dbg( p_obj, "creating demux: access='%s' demux='%s' path='%s'",
- p_demux->psz_access, p_demux->psz_demux, p_demux->psz_path );
- }
+ msg_Dbg( p_obj, "creating demux: access='%s' demux='%s' "
+ "location='%s' file='%s'",
+ p_demux->psz_access, p_demux->psz_demux,
+ p_demux->psz_location, p_demux->psz_file );
p_demux->s = s;
p_demux->out = out;
p_demux->s = s;
p_demux->out = out;
if( s ) psz_module = p_demux->psz_demux;
else psz_module = p_demux->psz_access;
if( s ) psz_module = p_demux->psz_demux;
else psz_module = p_demux->psz_access;
- if( s && *psz_module == '\0' && strrchr( p_demux->psz_path, '.' ) )
+ const char *psz_ext;
+
+ if( s && *psz_module == '\0'
+ && p_demux->psz_file != NULL
+ && (psz_ext = strrchr( p_demux->psz_file, '.' )) )
{
/* XXX: add only file without any problem here and with strong detection.
* - no .mp3, .a52, ... (aac is added as it works only by file ext
{
/* XXX: add only file without any problem here and with strong detection.
* - no .mp3, .a52, ... (aac is added as it works only by file ext
- const char *psz_ext = strrchr( p_demux->psz_path, '.' ) + 1;
- int i;
- for( i = 0; exttodemux[i].ext[0]; i++ )
+ for( unsigned i = 0; exttodemux[i].ext[0]; i++ )
{
if( !strcasecmp( psz_ext, exttodemux[i].ext ) )
{
{
if( !strcasecmp( psz_ext, exttodemux[i].ext ) )
{
- for( i = 0; exttodemux_quick[i].ext[0]; i++ )
+ for( unsigned i = 0; exttodemux_quick[i].ext[0]; i++ )
{
if( !strcasecmp( psz_ext, exttodemux_quick[i].ext ) )
{
{
if( !strcasecmp( psz_ext, exttodemux_quick[i].ext ) )
{
if( p_demux->p_module == NULL )
{
if( p_demux->p_module == NULL )
{
- free( p_demux->psz_path );
+ free( p_demux->psz_file );
+ free( p_demux->psz_location );
free( p_demux->psz_demux );
free( p_demux->psz_access );
vlc_object_release( p_demux );
free( p_demux->psz_demux );
free( p_demux->psz_access );
vlc_object_release( p_demux );
{
module_unneed( p_demux, p_demux->p_module );
{
module_unneed( p_demux, p_demux->p_module );
- free( p_demux->psz_path );
+ free( p_demux->psz_file );
+ free( p_demux->psz_location );
free( p_demux->psz_demux );
free( p_demux->psz_access );
free( p_demux->psz_demux );
free( p_demux->psz_access );