]> git.sesse.net Git - vlc/commitdiff
Add a default implementation for pf_readdir for StreamFilter. Use it in stream_filter...
authorJulien 'Lta' BALLET <contact@lta.io>
Sat, 21 Jun 2014 13:55:11 +0000 (15:55 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 24 Jun 2014 08:58:17 +0000 (10:58 +0200)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
include/vlc_stream.h
modules/stream_filter/record.c
src/input/stream_filter.c

index db247bccc96e056f56b936c8a75346499a87d8c2..37e6b2d96c5d19c285686a49c28e1873d548e438 100644 (file)
@@ -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;
+
 /**
  * @}
  */
index 538d506c6714b9e9cde24e6a569b9a664e677885..8bcef68c585c6ba05935b5e320c1d2ee83003b21 100644 (file)
@@ -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;
 }
index adcfb5891769e01494e5dcf2253eb76317f9c8e2..47fc514741fa132019ed6a10873705757e76099d 100644 (file)
@@ -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;
+}