From e3e9c13799fc03656fe36f9646b77030aff2626c Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Tue, 2 Oct 2007 16:05:13 +0000 Subject: [PATCH] Pass content-type from access to stream --- include/vlc_stream.h | 18 +++++++++++++++++- src/input/demux.c | 1 + src/input/mem_stream.c | 1 + src/input/stream.c | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/include/vlc_stream.h b/include/vlc_stream.h index b2a8666149..34fcace598 100644 --- a/include/vlc_stream.h +++ b/include/vlc_stream.h @@ -60,8 +60,10 @@ enum stream_query_e /* Special for direct access control from demuxer. * XXX: avoid using it by all means */ - STREAM_CONTROL_ACCESS /* arg1= int i_access_query, args res: can fail + STREAM_CONTROL_ACCESS, /* arg1= int i_access_query, args res: can fail if access unreachable or access control answer */ + + STREAM_GET_CONTENT_TYPE, /**< arg1= char ** res=can file */ }; VLC_EXPORT( int, stream_Read, ( stream_t *s, void *p_read, int i_read ) ); @@ -91,17 +93,31 @@ static inline int64_t stream_Size( stream_t *s ) stream_Control( s, STREAM_GET_SIZE, &i_pos ); return i_pos; } + static inline int stream_MTU( stream_t *s ) { int i_mtu; stream_Control( s, STREAM_GET_MTU, &i_mtu ); return i_mtu; } + static inline int stream_Seek( stream_t *s, int64_t i_pos ) { return stream_Control( s, STREAM_SET_POSITION, i_pos ); } +/** + * Get the Content-Type of a stream, or NULL if unknown. + * Result must be free()'d. + */ +static inline char *stream_ContentType( stream_t *s ) +{ + char *res; + if( stream_Control( s, STREAM_GET_CONTENT_TYPE, &res ) ) + return NULL; + return res; +} + /** * Create a special stream and a demuxer, this allows chaining demuxers */ diff --git a/src/input/demux.c b/src/input/demux.c index 712bfd2276..50613df838 100644 --- a/src/input/demux.c +++ b/src/input/demux.c @@ -508,6 +508,7 @@ static int DStreamControl( stream_t *s, int i_query, va_list args ) return VLC_SUCCESS; case STREAM_CONTROL_ACCESS: + case STREAM_GET_CONTENT_TYPE: return VLC_EGENERIC; default: diff --git a/src/input/mem_stream.c b/src/input/mem_stream.c index 775d80f368..f8ea83747d 100644 --- a/src/input/mem_stream.c +++ b/src/input/mem_stream.c @@ -123,6 +123,7 @@ static int Control( stream_t *s, int i_query, va_list args ) break; case STREAM_GET_MTU: + case STREAM_GET_CONTENT_TYPE: return VLC_EGENERIC; case STREAM_CONTROL_ACCESS: diff --git a/src/input/stream.c b/src/input/stream.c index 8b831246c6..403c32461c 100644 --- a/src/input/stream.c +++ b/src/input/stream.c @@ -556,6 +556,10 @@ static int AStreamControl( stream_t *s, int i_query, va_list args ) } return access2_vaControl( p_access, i_int, args ); + case STREAM_GET_CONTENT_TYPE: + return access2_Control( p_access, ACCESS_GET_CONTENT_TYPE, + va_arg( args, char ** ) ); + default: msg_Err( s, "invalid stream_vaControl query=0x%x", i_query ); return VLC_EGENERIC; -- 2.39.2