Commit 9ee43240 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

input: make source an object

This groups the demuxer with its stream and stream filters. This is
also required (but not sufficient) to supply separate options to slave
sources than the master source.
parent 12ee3312
...@@ -2089,7 +2089,8 @@ static input_source_t *InputSourceNew( input_thread_t *p_input, ...@@ -2089,7 +2089,8 @@ static input_source_t *InputSourceNew( input_thread_t *p_input,
const char *psz_forced_demux, const char *psz_forced_demux,
bool b_in_can_fail ) bool b_in_can_fail )
{ {
input_source_t *in = calloc( 1, sizeof( *in ) ); input_source_t *in = vlc_custom_create( p_input, sizeof( *in ),
"input source" );
if( unlikely(in == NULL) ) if( unlikely(in == NULL) )
return NULL; return NULL;
...@@ -2171,7 +2172,7 @@ static input_source_t *InputSourceNew( input_thread_t *p_input, ...@@ -2171,7 +2172,7 @@ static input_source_t *InputSourceNew( input_thread_t *p_input,
TAB_CLEAN( count, tab ); TAB_CLEAN( count, tab );
} }
in->p_demux = input_DemuxNew( VLC_OBJECT(p_input), psz_access, psz_demux, in->p_demux = input_DemuxNew( VLC_OBJECT(in), psz_access, psz_demux,
psz_path, p_input->p->p_es_out, psz_path, p_input->p->p_es_out,
p_input->b_preparsing, p_input ); p_input->b_preparsing, p_input );
free( psz_dup ); free( psz_dup );
...@@ -2182,7 +2183,7 @@ static input_source_t *InputSourceNew( input_thread_t *p_input, ...@@ -2182,7 +2183,7 @@ static input_source_t *InputSourceNew( input_thread_t *p_input,
dialog_Fatal( p_input, _("Your input can't be opened"), dialog_Fatal( p_input, _("Your input can't be opened"),
_("VLC is unable to open the MRL '%s'." _("VLC is unable to open the MRL '%s'."
" Check the log for details."), psz_mrl ); " Check the log for details."), psz_mrl );
free( in ); vlc_object_release( in );
return NULL; return NULL;
} }
...@@ -2301,7 +2302,7 @@ static void InputSourceDestroy( input_source_t *in ) ...@@ -2301,7 +2302,7 @@ static void InputSourceDestroy( input_source_t *in )
TAB_CLEAN( in->i_title, in->title ); TAB_CLEAN( in->i_title, in->title );
} }
free( in ); vlc_object_release( in );
} }
/***************************************************************************** /*****************************************************************************
...@@ -2331,7 +2332,7 @@ static void InputSourceMeta( input_thread_t *p_input, ...@@ -2331,7 +2332,7 @@ static void InputSourceMeta( input_thread_t *p_input,
return; return;
demux_meta_t *p_demux_meta = demux_meta_t *p_demux_meta =
vlc_custom_create( p_input, sizeof( *p_demux_meta ), "demux meta" ); vlc_custom_create( p_source, sizeof( *p_demux_meta ), "demux meta" );
if( unlikely(p_demux_meta == NULL) ) if( unlikely(p_demux_meta == NULL) )
return; return;
p_demux_meta->p_item = p_input->p->p_item; p_demux_meta->p_item = p_input->p->p_item;
......
...@@ -40,6 +40,8 @@ ...@@ -40,6 +40,8 @@
/* input_source_t: gathers all information per input source */ /* input_source_t: gathers all information per input source */
typedef struct typedef struct
{ {
VLC_COMMON_MEMBERS;
demux_t *p_demux; /**< Demux plugin instance */ demux_t *p_demux; /**< Demux plugin instance */
/* Title infos for that input */ /* Title infos for that input */
......
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