[vlc-commits] Add a default implementation for pf_readdir for StreamFilter. Use it in stream_filter /record.c
Julien 'Lta' BALLET
git at videolan.org
Tue Jun 24 11:02:09 CEST 2014
vlc | branch: master | Julien 'Lta' BALLET <contact at lta.io> | Sat Jun 21 15:55:11 2014 +0200| [8eb065ff63e7454fc2aa9331452cca98a8497cf1] | committer: Jean-Baptiste Kempf
Add a default implementation for pf_readdir for StreamFilter. Use it in stream_filter/record.c
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8eb065ff63e7454fc2aa9331452cca98a8497cf1
---
include/vlc_stream.h | 15 ++++++++++++++-
modules/stream_filter/record.c | 1 +
src/input/stream_filter.c | 8 ++++++++
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/include/vlc_stream.h b/include/vlc_stream.h
index db247bc..37e6b2d 100644
--- a/include/vlc_stream.h
+++ b/include/vlc_stream.h
@@ -101,7 +101,7 @@ enum stream_query_e
STREAM_GET_SIZE, /**< arg1= uint64_t * res=cannot fail (0 if no sense)*/
- /* You should update size of source if any and then update size
+ /* You should update size of source if any and then update size
* FIXME find a way to avoid it */
STREAM_UPDATE_SIZE,
@@ -225,6 +225,19 @@ 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 );
+
+/**
+ * Default ReadDir implementation for stream Filter. This implementation just
+ * forward the pf_readdir call to the p_source stream.
+ */
+VLC_API int stream_FilterDefaultReadDir( stream_t *s, input_item_node_t *p_node );
+
+/**
+ * Sets stream_FilterDefaultReadDir as the pf_readdir callback for this stream filter
+ */
+#define stream_FilterSetDefaultReadDir(p_stream) \
+ p_stream->pf_readdir = stream_FilterDefaultReadDir;
+
/**
* @}
*/
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..47fc514 100644
--- a/src/input/stream_filter.c
+++ b/src/input/stream_filter.c
@@ -127,3 +127,11 @@ static void StreamDelete( stream_t *s )
stream_CommonDelete( s );
}
+
+int stream_FilterDefaultReadDir( stream_t *s, input_item_node_t *p_node )
+{
+ if( s != NULL && s->p_source != NULL )
+ return stream_ReadDir( s->p_source, p_node );
+ else
+ return VLC_ENOITEM;
+}
More information about the vlc-commits
mailing list