X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finput%2Fstream.h;h=01610a8b3fe3fd0ea2f67fcf4d89250a7fdd607b;hb=470ce70b69e1530173950a8dfd6d274a70caa7bc;hp=1b8a51076df865d9bae1de338d78b28aeda7bbde;hpb=ea83a25e84bca24d045c34713ce7008ea5ce4e8a;p=vlc diff --git a/src/input/stream.h b/src/input/stream.h index 1b8a51076d..01610a8b3f 100644 --- a/src/input/stream.h +++ b/src/input/stream.h @@ -32,34 +32,49 @@ #include #include -/** - * stream_t definition - */ -struct stream_t +struct stream_text_t { - VLC_COMMON_MEMBERS - - /*block_t *(*pf_block) ( stream_t *, int i_size );*/ - int (*pf_read) ( stream_t *, void *p_read, unsigned int i_read ); - int (*pf_peek) ( stream_t *, const uint8_t **pp_peek, unsigned int i_peek ); - int (*pf_control)( stream_t *, int i_query, va_list ); - void (*pf_destroy)( stream_t *); - - stream_sys_t *p_sys; - /* UTF-16 and UTF-32 file reading */ vlc_iconv_t conv; int i_char_width; bool b_little_endian; }; -#include +/* */ +stream_t *stream_CommonNew( vlc_object_t * ); +void stream_CommonDelete( stream_t * ); -static inline stream_t *vlc_stream_create( vlc_object_t *obj ) -{ - return (stream_t *)vlc_custom_create( obj, sizeof(stream_t), - VLC_OBJECT_GENERIC, "stream" ); -} +/** + * This function creates a stream_t from a provided access_t. + * + * An optional NULL terminated list of file may be provided. The content + * of these extra files will be concatenated after to the main access. + * + * XXX ppsz_list is treated as const (I failed to avoid a warning when + * using const keywords for pointer of pointers) + */ +stream_t *stream_AccessNew( access_t *p_access, char **ppsz_list ); + +/** + * This function creates a new stream_t filter. + * + * You must release it using stream_Delete unless it is used as a + * source to another filter. + */ +stream_t *stream_FilterNew( stream_t *p_source, + const char *psz_stream_filter ); +/** + * This function creates a chain of filters: + * - first, automatic probed stream filters are inserted. + * - then, optional user filters (configured by psz_chain) are inserted. + * - finaly, an optional record filter is inserted if b_record is true. + * + * You must release the returned value using stream_Delete unless it is used as a + * source to another filter. + */ +stream_t *stream_FilterChainNew( stream_t *p_source, + const char *psz_chain, + bool b_record ); #endif