X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_demux.h;h=93197ad3bd86fe6391289788766663864fa1d460;hb=90fc091360a6cdfcd7f2d6a244f505bdc2280b4c;hp=249291427c0439edbaeb5f5fafd70d6d44340390;hpb=d9c8170226a76420644ff1819fb3e6c4ee792e6f;p=vlc diff --git a/include/vlc_demux.h b/include/vlc_demux.h index 249291427c..93197ad3bd 100644 --- a/include/vlc_demux.h +++ b/include/vlc_demux.h @@ -77,6 +77,16 @@ struct demux_t input_thread_t *p_input; }; +/* pf_demux return values */ +#define VLC_DEMUXER_EOF 0 +#define VLC_DEMUXER_EGENERIC -1 +#define VLC_DEMUXER_SUCCESS 1 + +/* demux_t.info.i_update field */ +#define INPUT_UPDATE_TITLE 0x0010 +#define INPUT_UPDATE_SEEKPOINT 0x0020 +#define INPUT_UPDATE_META 0x0040 +#define INPUT_UPDATE_TITLE_LIST 0x0100 /* demux_meta_t is returned by "meta reader" module to the demuxer */ typedef struct demux_meta_t @@ -110,11 +120,12 @@ enum demux_query_e DEMUX_SET_TITLE, /* arg1= int can fail */ DEMUX_SET_SEEKPOINT, /* arg1= int can fail */ - /* DEMUX_SET_GROUP only a hint for demuxer (mainly DVB) to allow not + /* DEMUX_SET_GROUP/SET_ES only a hint for demuxer (mainly DVB) to allow not * reading everything (you should not use this to call es_out_Control) * if you don't know what to do with it, just IGNORE it, it is safe(r) * -1 means all group, 0 default group (first es added) */ DEMUX_SET_GROUP, /* arg1= int, arg2=const vlc_list_t * can fail */ + DEMUX_SET_ES, /* arg1= int can fail */ /* Ask the demux to demux until the given date at the next pf_demux call * but not more (and not less, at the precision available of course). @@ -138,6 +149,8 @@ enum demux_query_e DEMUX_CAN_RECORD, /* arg1=bool* res=can fail(assume false) */ DEMUX_SET_RECORD_STATE, /* arg1=bool res=can fail */ + DEMUX_GET_SIGNAL, /* arg1=double *pf_quality, arg2=double *pf_strength + res=can fail */ /* II. Specific access_demux queries */ /* PAUSE you are ensured that it is never called twice with the same state */ @@ -160,6 +173,10 @@ enum demux_query_e DEMUX_CAN_SEEK, /* arg1= bool* can fail (assume false)*/ + /* DEMUX_IS_PLAYLIST returns true if the demux is a playlist + * (an archive, a directory or a network share is also a playlist) */ + DEMUX_IS_PLAYLIST, /* arg1= bool* can fail (assume false)*/ + /* Navigation */ DEMUX_NAV_ACTIVATE, /* res=can fail */ DEMUX_NAV_UP, /* res=can fail */ @@ -170,6 +187,26 @@ enum demux_query_e VLC_API int demux_vaControlHelper( stream_t *, int64_t i_start, int64_t i_end, int64_t i_bitrate, int i_align, int i_query, va_list args ); +static inline void demux_UpdateTitleFromStream( demux_t *demux ) +{ + stream_t *s = demux->s; + unsigned title, seekpoint; + + if( stream_Control( s, STREAM_GET_TITLE, &title ) == VLC_SUCCESS + && title != (unsigned)demux->info.i_title ) + { + demux->info.i_title = title; + demux->info.i_update |= INPUT_UPDATE_TITLE; + } + + if( stream_Control( s, STREAM_GET_SEEKPOINT, &seekpoint ) == VLC_SUCCESS + && seekpoint != (unsigned)demux->info.i_seekpoint ) + { + demux->info.i_seekpoint = seekpoint; + demux->info.i_update |= INPUT_UPDATE_SEEKPOINT; + } +} + /************************************************************************* * Miscellaneous helpers for demuxers *************************************************************************/