[vlc-devel] [PATCH] input: input_source_t doesn't need to be a vlc_object
Rémi Denis-Courmont
remi at remlab.net
Wed Oct 17 12:17:47 CEST 2018
Ok as of now, but don't we want to support different variables for different sources in the same input?
Le 17 octobre 2018 10:33:00 GMT+03:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>---
> src/input/input.c | 31 +++++++++++++++----------------
> src/input/input_internal.h | 2 --
> 2 files changed, 15 insertions(+), 18 deletions(-)
>
>diff --git a/src/input/input.c b/src/input/input.c
>index a21111ff32..cd8e34db44 100644
>--- a/src/input/input.c
>+++ b/src/input/input.c
>@@ -2456,20 +2456,20 @@ static void UpdateTitleListfromDemux(
>input_thread_t *p_input )
> }
>
> static int
>-InputStreamHandleAnchor( input_source_t *source, stream_t **stream,
>- char const *anchor )
>+InputStreamHandleAnchor( input_thread_t *p_input, input_source_t
>*source,
>+ stream_t **stream, char const *anchor )
> {
> char const* extra;
> if( stream_extractor_AttachParsed( stream, anchor, &extra ) )
> {
>- msg_Err( source, "unable to attach stream-extractors for %s",
>+ msg_Err( p_input, "unable to attach stream-extractors for %s",
> (*stream)->psz_url );
>
> return VLC_EGENERIC;
> }
>
> if( vlc_stream_directory_Attach( stream, NULL ) )
>- msg_Dbg( source, "attachment of directory-extractor failed for
>%s",
>+ msg_Dbg( p_input, "attachment of directory-extractor failed
>for %s",
> (*stream)->psz_url );
>
> MRLSections( extra ? extra : "",
>@@ -2484,7 +2484,7 @@ static demux_t *InputDemuxNew( input_thread_t
>*p_input,
> const char *psz_demux, const char *psz_anchor )
> {
> input_thread_private_t *priv = input_priv(p_input );
>- vlc_object_t *obj = VLC_OBJECT(p_source);
>+ vlc_object_t *obj = VLC_OBJECT(p_input);
>
> /* create the underlying access stream */
> stream_t *p_stream = stream_AccessNew( obj, p_input, priv->p_es_out,
>@@ -2504,7 +2504,7 @@ static demux_t *InputDemuxNew( input_thread_t
>*p_input,
> }
>
> /* attach explicit stream filters to stream */
>- char *psz_filters = var_InheritString( obj, "stream-filter" );
>+ char *psz_filters = var_InheritString( p_input, "stream-filter" );
> if( psz_filters )
> {
> p_stream = stream_FilterChainNew( p_stream, psz_filters );
>@@ -2512,11 +2512,11 @@ static demux_t *InputDemuxNew( input_thread_t
>*p_input,
> }
>
> /* handle anchors */
>- if( InputStreamHandleAnchor( p_source, &p_stream, psz_anchor ) )
>+ if( InputStreamHandleAnchor( p_input, p_source, &p_stream,
>psz_anchor ) )
> goto error;
>
> /* attach conditional record stream-filter */
>- if( var_InheritBool( obj, "input-record-native" ) )
>+ if( var_InheritBool( p_input, "input-record-native" ) )
> p_stream = stream_FilterChainNew( p_stream, "record" );
>
> /* create a regular demux with the access stream created */
>@@ -2542,8 +2542,7 @@ static input_source_t *InputSourceNew(
>input_thread_t *p_input,
> bool b_in_can_fail )
> {
> input_thread_private_t *priv = input_priv(p_input);
>- input_source_t *in = vlc_custom_create( p_input, sizeof( *in ),
>- "input source" );
>+ input_source_t *in = calloc(1, sizeof(*in) );
> if( unlikely(in == NULL) )
> return NULL;
>
>@@ -2555,7 +2554,7 @@ static input_source_t *InputSourceNew(
>input_thread_t *p_input,
>
> if( psz_dup == NULL )
> {
>- vlc_object_release( in );
>+ free( in );
> return NULL;
> }
>
>@@ -2563,7 +2562,7 @@ static input_source_t *InputSourceNew(
>input_thread_t *p_input,
>input_SplitMRL( &psz_access, &psz_demux, &psz_path, &psz_anchor,
>psz_dup );
>
> if( psz_demux == NULL || psz_demux[0] == '\0' )
>- psz_demux = psz_demux_var = var_InheritString( in, "demux" );
>+ psz_demux = psz_demux_var = var_InheritString( p_input,
>"demux" );
>
> if( psz_forced_demux != NULL )
> psz_demux = psz_forced_demux;
>@@ -2644,7 +2643,7 @@ static input_source_t *InputSourceNew(
>input_thread_t *p_input,
> vlc_dialog_display_error( p_input, _("Your input can't be opened"),
> _("VLC is unable to open the MRL '%s'."
> " Check the log for details."), psz_mrl );
>- vlc_object_release( in );
>+ free( in );
> return NULL;
> }
>
>@@ -2666,7 +2665,7 @@ static input_source_t *InputSourceNew(
>input_thread_t *p_input,
> if( in->p_demux == NULL )
> {
> msg_Err(p_input, "Failed to create demux filter");
>- vlc_object_release( in );
>+ free( in );
> return NULL;
> }
> }
>@@ -2784,7 +2783,7 @@ static void InputSourceDestroy( input_source_t
>*in )
> TAB_CLEAN( in->i_title, in->title );
> }
>
>- vlc_object_release( in );
>+ free( in );
> }
>
>/*****************************************************************************
>@@ -2814,7 +2813,7 @@ static void InputSourceMeta( input_thread_t
>*p_input,
> return;
>
> demux_meta_t *p_demux_meta =
>- vlc_custom_create( p_source, sizeof( *p_demux_meta ), "demux
>meta" );
>+ vlc_custom_create( p_input, sizeof( *p_demux_meta ), "demux
>meta" );
> if( unlikely(p_demux_meta == NULL) )
> return;
> p_demux_meta->p_item = input_priv(p_input)->p_item;
>diff --git a/src/input/input_internal.h b/src/input/input_internal.h
>index d1eaa2911e..bcc8f06a91 100644
>--- a/src/input/input_internal.h
>+++ b/src/input/input_internal.h
>@@ -46,8 +46,6 @@ struct input_stats;
> /* input_source_t: gathers all information per input source */
> typedef struct
> {
>- struct vlc_common_members obj;
>-
> demux_t *p_demux; /**< Demux object (most downstream) */
>
> /* Title infos for that input */
>--
>2.19.1
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20181017/22a9bdc7/attachment.html>
More information about the vlc-devel
mailing list