[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