[vlc-devel] [PATCH 01/10] Add pf_readdir callback to acces_t
Julien 'Lta' BALLET
elthariel at gmail.com
Mon Jun 16 14:41:03 CEST 2014
From: Julien 'Lta' BALLET <contact at lta.io>
---
include/vlc_access.h | 20 +++++++++++---------
src/input/access.c | 1 +
2 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/include/vlc_access.h b/include/vlc_access.h
index 8a8f1fa..d7df927 100644
--- a/include/vlc_access.h
+++ b/include/vlc_access.h
@@ -88,10 +88,11 @@ struct access_t
* (if you fail, this value won't be reseted */
char *psz_demux;
- /* pf_read/pf_block is used to read data.
+ /* pf_read/pf_block/pf_readdir is used to read data.
* XXX A access should set one and only one of them */
- ssize_t (*pf_read) ( access_t *, uint8_t *, size_t ); /* Return -1 if no data yet, 0 if no more data, else real data read */
- block_t *(*pf_block)( access_t * ); /* return a block of data in his 'natural' size, NULL if not yet data or eof */
+ ssize_t (*pf_read) ( access_t *, uint8_t *, size_t ); /* Return -1 if no data yet, 0 if no more data, else real data read */
+ block_t *(*pf_block) ( access_t * ); /* Return a block of data in his 'natural' size, NULL if not yet data or eof */
+ input_item_t *(*pf_readdir)( access_t * ); /* Return an input_item_t */
/* Called for each seek.
* XXX can be null */
@@ -150,18 +151,19 @@ static inline void access_InitFields( access_t *p_a )
*/
VLC_API input_thread_t * access_GetParentInput( access_t *p_access ) VLC_USED;
-#define ACCESS_SET_CALLBACKS( read, block, control, seek ) \
+#define ACCESS_SET_CALLBACKS( read, block, readdir, control, seek ) \
do { \
- p_access->pf_read = (read); \
- p_access->pf_block = (block); \
+ p_access->pf_read = (read); \
+ p_access->pf_block = (block); \
+ p_access->pf_readdir = (readdir); \
p_access->pf_control = (control); \
- p_access->pf_seek = (seek); \
+ p_access->pf_seek = (seek); \
} while(0)
#define STANDARD_READ_ACCESS_INIT \
do { \
access_InitFields( p_access ); \
- ACCESS_SET_CALLBACKS( Read, NULL, Control, Seek ); \
+ ACCESS_SET_CALLBACKS( Read, NULL, NULL, Control, Seek ); \
p_sys = p_access->p_sys = calloc( 1, sizeof( access_sys_t ) ); \
if( !p_sys ) return VLC_ENOMEM;\
} while(0);
@@ -169,7 +171,7 @@ VLC_API input_thread_t * access_GetParentInput( access_t *p_access ) VLC_USED;
#define STANDARD_BLOCK_ACCESS_INIT \
do { \
access_InitFields( p_access ); \
- ACCESS_SET_CALLBACKS( NULL, Block, Control, Seek ); \
+ ACCESS_SET_CALLBACKS( NULL, Block, NULL, Control, Seek ); \
p_sys = p_access->p_sys = calloc( 1, sizeof( access_sys_t ) ); \
if( !p_sys ) return VLC_ENOMEM; \
} while(0);
diff --git a/src/input/access.c b/src/input/access.c
index 850fccd..a9b2804 100644
--- a/src/input/access.c
+++ b/src/input/access.c
@@ -78,6 +78,7 @@ access_t *access_New( vlc_object_t *p_obj, input_thread_t *p_parent_input,
p_access->pf_read = NULL;
p_access->pf_block = NULL;
+ p_access->pf_readdir = NULL;
p_access->pf_seek = NULL;
p_access->pf_control = NULL;
p_access->p_sys = NULL;
--
1.9.3
More information about the vlc-devel
mailing list