Commit bb036be6 authored by Laurent Aimar's avatar Laurent Aimar

* stream_output.c: some sanity checks and bypass default behavour of

module_Need (when I ask for udp I want udp or an error, but not file
or something else) by adding ",none" when a module name is specified.
 I will clean up that by adding a flag to module_Need or something like
that.
parent b89d3e6d
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* stream_output.c : stream output module * stream_output.c : stream output module
***************************************************************************** *****************************************************************************
* Copyright (C) 2002 VideoLAN * Copyright (C) 2002 VideoLAN
* $Id: stream_output.c,v 1.27 2003/04/29 21:32:21 fenrir Exp $ * $Id: stream_output.c,v 1.28 2003/04/29 22:38:56 fenrir Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr> * Laurent Aimar <fenrir@via.ecp.fr>
...@@ -40,6 +40,9 @@ ...@@ -40,6 +40,9 @@
#define sout_stream_url_to_chain( p, s ) _sout_stream_url_to_chain( VLC_OBJECT(p), s ) #define sout_stream_url_to_chain( p, s ) _sout_stream_url_to_chain( VLC_OBJECT(p), s )
static char *_sout_stream_url_to_chain( vlc_object_t *, char * ); static char *_sout_stream_url_to_chain( vlc_object_t *, char * );
#define module_NeedStrict(a,b,c) __module_NeedStrict(VLC_OBJECT(a),b,c)
static module_t *__module_NeedStrict( vlc_object_t *, const char *, const char * );
/* /*
* Generic MRL parser * Generic MRL parser
* *
...@@ -248,9 +251,8 @@ sout_access_out_t *sout_AccessOutNew( sout_instance_t *p_sout, ...@@ -248,9 +251,8 @@ sout_access_out_t *sout_AccessOutNew( sout_instance_t *p_sout,
p_access->pf_seek = NULL; p_access->pf_seek = NULL;
p_access->pf_write = NULL; p_access->pf_write = NULL;
p_access->p_module = module_Need( p_access, p_access->p_module =
"sout access", module_NeedStrict( p_access, "sout access", p_access->psz_access );
p_access->psz_access );;
if( !p_access->p_module ) if( !p_access->p_module )
{ {
...@@ -324,9 +326,9 @@ sout_mux_t * sout_MuxNew ( sout_instance_t *p_sout, ...@@ -324,9 +326,9 @@ sout_mux_t * sout_MuxNew ( sout_instance_t *p_sout,
p_mux->p_sys = NULL; p_mux->p_sys = NULL;
p_mux->p_module = module_Need( p_mux, p_mux->p_module =
"sout mux", module_NeedStrict( p_mux, "sout mux", p_mux->psz_mux );
p_mux->psz_mux );
if( p_mux->p_module == NULL ) if( p_mux->p_module == NULL )
{ {
FREE( p_mux->psz_mux ); FREE( p_mux->psz_mux );
...@@ -938,7 +940,7 @@ char * sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain ) ...@@ -938,7 +940,7 @@ char * sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain )
*ppsz_name = _strndup( psz_chain, p - psz_chain ); *ppsz_name = _strndup( psz_chain, p - psz_chain );
//fprintf( stderr, "name=%s - rest=%s\n", *ppsz_name, p ); /* fprintf( stderr, "name=%s - rest=%s\n", *ppsz_name, p ); */
SKIPSPACE( p ); SKIPSPACE( p );
...@@ -961,7 +963,7 @@ char * sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain ) ...@@ -961,7 +963,7 @@ char * sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain )
p++; p++;
} }
//fprintf( stderr, "name=%s - rest=%s\n", psz_name, p ); /* fprintf( stderr, "name=%s - rest=%s\n", psz_name, p ); */
if( p == psz_name ) if( p == psz_name )
{ {
fprintf( stderr, "invalid options (empty)" ); fprintf( stderr, "invalid options (empty)" );
...@@ -989,7 +991,7 @@ char * sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain ) ...@@ -989,7 +991,7 @@ char * sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain )
if( end ) if( end )
{ {
// fprintf( stderr, "##%s -- %s\n", p, end ); /* fprintf( stderr, "##%s -- %s\n", p, end ); */
cfg.psz_value = _strndup( p, end - p ); cfg.psz_value = _strndup( p, end - p );
p = end + 1; p = end + 1;
} }
...@@ -1090,6 +1092,12 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout, ...@@ -1090,6 +1092,12 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout,
{ {
sout_stream_t *p_stream; sout_stream_t *p_stream;
if( !psz_chain )
{
msg_Err( p_sout, "invalid chain" );
return NULL;
}
p_stream = vlc_object_create( p_sout, sizeof( sout_stream_t ) ); p_stream = vlc_object_create( p_sout, sizeof( sout_stream_t ) );
if( !p_stream ) if( !p_stream )
...@@ -1105,7 +1113,7 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout, ...@@ -1105,7 +1113,7 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout,
msg_Dbg( p_sout, "stream=`%s'", p_stream->psz_name ); msg_Dbg( p_sout, "stream=`%s'", p_stream->psz_name );
p_stream->p_module = p_stream->p_module =
module_Need( p_stream, "sout stream", p_stream->psz_name ); module_NeedStrict( p_stream, "sout stream", p_stream->psz_name );
if( !p_stream->p_module ) if( !p_stream->p_module )
{ {
...@@ -1208,3 +1216,27 @@ static char *_sout_stream_url_to_chain( vlc_object_t *p_this, char *psz_url ) ...@@ -1208,3 +1216,27 @@ static char *_sout_stream_url_to_chain( vlc_object_t *p_this, char *psz_url )
return( psz_chain ); return( psz_chain );
} }
/*****************************************************************************/
static module_t *__module_NeedStrict( vlc_object_t *p_obj, const char *psz_capacity, const char *psz_name )
{
module_t *p_module;
if( !psz_name || !*psz_name )
{
p_module = module_Need( p_obj, psz_capacity, psz_name );
}
else
{
char *psz_name_strict = malloc( strlen( psz_name ) + 6 );
strcpy( psz_name_strict, psz_name );
strcat( psz_name_strict, ",none" );
p_module = module_Need( p_obj, psz_capacity, psz_name_strict );
free( psz_name_strict );
}
return p_module;
}
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