[vlc-devel] [PATCH 3/6] Add a default implementation for pf_readdir for StreamFilter. Use it in stream_filter/record.c

Rémi Denis-Courmont remi at remlab.net
Sat Jun 21 10:54:34 CEST 2014


Le vendredi 20 juin 2014, 19:53:05 Julien 'Lta' BALLET a écrit :
> From: Julien 'Lta' BALLET <contact at lta.io>
> 
> ---
>  include/vlc_stream.h           |  7 +++++++
>  modules/stream_filter/record.c |  1 +
>  src/input/stream_filter.c      | 14 ++++++++++++++
>  3 files changed, 22 insertions(+)
> 
> diff --git a/include/vlc_stream.h b/include/vlc_stream.h
> index db247bc..88153ee 100644
> --- a/include/vlc_stream.h
> +++ b/include/vlc_stream.h
> @@ -225,6 +225,13 @@ VLC_API stream_t * stream_UrlNew(vlc_object_t *p_this,
> const char *psz_url ); * @return New stream to use, or NULL if the filter
> could not be added. **/
>  VLC_API stream_t* stream_FilterNew( stream_t *p_source, const char
> *psz_stream_filter ); +
> +/**
> + * This function sets the default ReadDir implementation for stream Filter.
> This + * implementation just forward the pf_readdir call to the p_source
> stream. + */
> +VLC_API void stream_FilterSetDefaultReadDir( stream_t *s );

Is there a reason why you define a setter instead of exposing a common callback 
directly?

> +
>  /**
>   * @}
>   */
> diff --git a/modules/stream_filter/record.c b/modules/stream_filter/record.c
> index 538d506..8bcef68 100644
> --- a/modules/stream_filter/record.c
> +++ b/modules/stream_filter/record.c
> @@ -91,6 +91,7 @@ static int Open ( vlc_object_t *p_this )
>      s->pf_read = Read;
>      s->pf_peek = Peek;
>      s->pf_control = Control;
> +    stream_FilterSetDefaultReadDir( s );
> 
>      return VLC_SUCCESS;
>  }
> diff --git a/src/input/stream_filter.c b/src/input/stream_filter.c
> index adcfb58..9a969c5 100644
> --- a/src/input/stream_filter.c
> +++ b/src/input/stream_filter.c
> @@ -127,3 +127,17 @@ static void StreamDelete( stream_t *s )
> 
>      stream_CommonDelete( s );
>  }
> +
> +static int stream_FilterDefaultReadDir( stream_t *s, input_item_node_t
> *p_node ) +{
> +    if( s != NULL )
> +        return stream_ReadDir( s->p_source, p_node );
> +    else
> +        return VLC_ENOITEM;
> +}
> +
> +VLC_API void stream_FilterSetDefaultReadDir( stream_t *s )
> +{
> +    if( s != NULL )
> +        s->pf_readdir = stream_FilterDefaultReadDir;
> +}

-- 
Rémi Denis-Courmont
http://www.remlab.net/




More information about the vlc-devel mailing list