VLC  3.0.0-git
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Files | Data Structures | Macros | Typedefs | Enumerations | Functions
Demultiplexer

Demultiplexers (file format parsers) More...

Collaboration diagram for Demultiplexer:

Files

file  vlc_demux.h
 Demultiplexer modules interface.
 

Data Structures

struct  demux_t
 
struct  demux_meta_t
 

Macros

#define VLC_DEMUXER_EOF   0
 
#define VLC_DEMUXER_EGENERIC   -1
 
#define VLC_DEMUXER_SUCCESS   1
 
#define INPUT_UPDATE_TITLE   0x0010
 
#define INPUT_UPDATE_SEEKPOINT   0x0020
 
#define INPUT_UPDATE_META   0x0040
 
#define INPUT_UPDATE_TITLE_LIST   0x0100
 
#define DEMUX_INIT_COMMON()
 

Typedefs

typedef struct demux_meta_t demux_meta_t
 

Enumerations

enum  demux_query_e {
  DEMUX_CAN_SEEK, DEMUX_CAN_PAUSE = 0x002, DEMUX_CAN_CONTROL_PACE, DEMUX_GET_PTS_DELAY = 0x101,
  DEMUX_GET_META = 0x105, DEMUX_GET_SIGNAL = 0x107, DEMUX_SET_PAUSE_STATE = 0x200, DEMUX_SET_TITLE,
  DEMUX_SET_SEEKPOINT, DEMUX_GET_POSITION = 0x300, DEMUX_SET_POSITION, DEMUX_GET_LENGTH,
  DEMUX_GET_TIME, DEMUX_SET_TIME, DEMUX_GET_TITLE_INFO, DEMUX_SET_GROUP,
  DEMUX_SET_ES, DEMUX_SET_NEXT_DEMUX_TIME, DEMUX_GET_FPS, DEMUX_HAS_UNSUPPORTED_META,
  DEMUX_GET_ATTACHMENTS, DEMUX_CAN_RECORD, DEMUX_SET_RECORD_STATE, DEMUX_CAN_CONTROL_RATE,
  DEMUX_SET_RATE, DEMUX_IS_PLAYLIST, DEMUX_NAV_ACTIVATE, DEMUX_NAV_UP,
  DEMUX_NAV_DOWN, DEMUX_NAV_LEFT, DEMUX_NAV_RIGHT, DEMUX_NAV_POPUP
}
 Control query identifiers for use with demux_t.pf_control. More...
 

Functions

demux_tdemux_New (vlc_object_t *p_obj, const char *psz_name, const char *psz_path, stream_t *s, es_out_t *out)
 
void demux_Delete (demux_t *)
 
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 int demux_Demux (demux_t *p_demux)
 
int demux_vaControl (demux_t *p_demux, int i_query, va_list args)
 
static int demux_Control (demux_t *p_demux, int i_query,...)
 
static void demux_UpdateTitleFromStream (demux_t *demux)
 
static bool demux_IsPathExtension (demux_t *p_demux, const char *psz_extension)
 
static bool demux_IsContentType (demux_t *demux, const char *type)
 
static bool demux_IsForced (demux_t *p_demux, const char *psz_name)
 
decoder_tdemux_PacketizerNew (demux_t *p_demux, es_format_t *p_fmt, const char *psz_msg)
 This function will create a packetizer suitable for a demuxer that parses elementary stream. More...
 
void demux_PacketizerDestroy (decoder_t *p_packetizer)
 This function will destroy a packetizer create by demux_PacketizerNew. More...
 

Detailed Description

Demultiplexers (file format parsers)

Macro Definition Documentation

#define DEMUX_INIT_COMMON ( )
Value:
do { \
p_demux->pf_control = Control; \
p_demux->pf_demux = Demux; \
p_demux->p_sys = calloc( 1, sizeof( demux_sys_t ) ); \
if( !p_demux->p_sys ) return VLC_ENOMEM;\
} while(0)
struct demux_sys_t demux_sys_t
Definition: vlc_common.h:229
static int Control(es_out_t *, int i_query, va_list)
Definition: es_out_timeshift.c:746
#define VLC_ENOMEM
Not enough memory.
Definition: vlc_common.h:361
#define INPUT_UPDATE_META   0x0040

Referenced by UpdateGenericFromDemux().

#define INPUT_UPDATE_SEEKPOINT   0x0020
#define INPUT_UPDATE_TITLE   0x0010
#define INPUT_UPDATE_TITLE_LIST   0x0100

Referenced by MainLoopDemux().

#define VLC_DEMUXER_EGENERIC   -1
#define VLC_DEMUXER_EOF   0
#define VLC_DEMUXER_SUCCESS   1

Typedef Documentation

typedef struct demux_meta_t demux_meta_t

Enumeration Type Documentation

Control query identifiers for use with demux_t.pf_control.

In the individual identifier description, the input stream refers to demux_t.s if non-NULL, and the output refers to demux_t.out.

A demuxer is synchronous if it only accesses its input stream and the output from within its demux_t callbacks, i.e. demux.pf_demux and demux_t.pf_control.

A demuxer is threaded if it accesses either or both input and output asynchronously.

An access-demuxer is a demuxer without input, i.e. demux_t.s == NULL).

Enumerator
DEMUX_CAN_SEEK 

Checks whether the stream supports seeking.

Can fail if seeking is not supported (same as returning false).

Bug:
Failing should not be allowed.

arg1 = bool *

DEMUX_CAN_PAUSE 

Checks whether (long) pause then stream resumption is supported.

Can fail only if synchronous and not an access-demuxer. The underlying input stream then determines if pause is supported.

Bug:
Failing should not be allowed.

arg1= bool *

DEMUX_CAN_CONTROL_PACE 

Whether the stream can be read at an arbitrary pace.

Cannot fail.

arg1= bool *

DEMUX_GET_PTS_DELAY 

Retrieves the PTS delay (roughly the default buffer duration).

Can fail only if synchronous and not an access-demuxer. The underlying input stream then determines the PTS delay.

arg1= int64_t *

DEMUX_GET_META 

Retrieves stream meta-data.

Should fail if no meta-data were retrieved.

arg1= vlc_meta_t *

DEMUX_GET_SIGNAL 

Retrieves an estimate of signal quality and strength.

Can fail.

arg1=double *quality, arg2=double *strength

DEMUX_SET_PAUSE_STATE 

Sets the paused or playing/resumed state.

Streams are initially in playing state. The control always specifies a change from paused to playing (false) or from playing to paused (true) and streams are initially playing; a no-op cannot be requested.

The control is never used if DEMUX_CAN_PAUSE fails. Can fail.

arg1= bool

DEMUX_SET_TITLE 

Seeks to the beginning of a title.

The control is never used if DEMUX_GET_TITLE_INFO fails. Can fail.

arg1= int

DEMUX_SET_SEEKPOINT 

Seeks to the beginning of a chapter of the current title.

The control is never used if DEMUX_GET_TITLE_INFO fails. Can fail.

arg1= int

DEMUX_GET_POSITION 
DEMUX_SET_POSITION 
DEMUX_GET_LENGTH 
DEMUX_GET_TIME 
DEMUX_SET_TIME 
DEMUX_GET_TITLE_INFO 
Todo:
Document
Warning
The prototype is different from STREAM_GET_TITLE_INFO

Can fail, meaning there is only one title and one chapter.

arg1= input_title_t ***, arg2=int *, arg3=int *pi_title_offset(0), arg4= int *pi_seekpoint_offset(0)

DEMUX_SET_GROUP 
DEMUX_SET_ES 
DEMUX_SET_NEXT_DEMUX_TIME 
DEMUX_GET_FPS 
DEMUX_HAS_UNSUPPORTED_META 
DEMUX_GET_ATTACHMENTS 
DEMUX_CAN_RECORD 
DEMUX_SET_RECORD_STATE 
Todo:
Document
Warning
The prototype is different from STREAM_SET_RECORD_STATE

The control is never used if DEMUX_CAN_RECORD fails or returns false. Can fail.

arg1= bool

DEMUX_CAN_CONTROL_RATE 
DEMUX_SET_RATE 
DEMUX_IS_PLAYLIST 

Checks whether the stream is actually a playlist, rather than a real stream.

Warning
The prototype is different from STREAM_IS_DIRECTORY.

Can fail if the stream is not a playlist (same as returning false).

arg1= bool *

DEMUX_NAV_ACTIVATE 

Activate the navigation item selected.

Can fail

DEMUX_NAV_UP 

Use the up arrow to select a navigation item above.

Can fail

DEMUX_NAV_DOWN 

Use the down arrow to select a navigation item under.

Can fail

DEMUX_NAV_LEFT 

Use the left arrow to select a navigation item on the left.

Can fail

DEMUX_NAV_RIGHT 

Use the right arrow to select a navigation item on the right.

Can fail

DEMUX_NAV_POPUP 

Activate the popup Menu (for BD).

Can fail

Function Documentation

static int demux_Control ( demux_t p_demux,
int  i_query,
  ... 
)
inlinestatic
void demux_Delete ( demux_t )
static int demux_Demux ( demux_t p_demux)
inlinestatic
static bool demux_IsContentType ( demux_t demux,
const char *  type 
)
inlinestatic

References demux_t::s, and stream_ContentType().

static bool demux_IsForced ( demux_t p_demux,
const char *  psz_name 
)
inlinestatic

References demux_t::psz_demux.

static bool demux_IsPathExtension ( demux_t p_demux,
const char *  psz_extension 
)
inlinestatic
demux_t* demux_New ( vlc_object_t p_obj,
const char *  psz_name,
const char *  psz_path,
stream_t s,
es_out_t out 
)

References demux_NewAdvanced().

void demux_PacketizerDestroy ( decoder_t p_packetizer)

This function will destroy a packetizer create by demux_PacketizerNew.

References es_format_Clean(), decoder_t::fmt_in, decoder_t::fmt_out, module_unneed, decoder_t::p_description, decoder_t::p_module, vlc_meta_Delete(), and vlc_object_release.

decoder_t* demux_PacketizerNew ( demux_t p_demux,
es_format_t p_fmt,
const char *  psz_msg 
)

This function will create a packetizer suitable for a demuxer that parses elementary stream.

The provided es_format_t will be cleaned on error or by demux_PacketizerDestroy.

References es_format_t::b_packetized, es_format_Clean(), es_format_Init(), decoder_t::fmt_in, decoder_t::fmt_out, module_need, msg_Err, decoder_t::p_module, decoder_t::pf_decode_audio, decoder_t::pf_decode_sub, decoder_t::pf_decode_video, decoder_t::pf_packetize, UNKNOWN_ES, vlc_custom_create, and vlc_object_release.

static void demux_UpdateTitleFromStream ( demux_t demux)
inlinestatic
int demux_vaControl ( demux_t p_demux,
int  i_query,
va_list  args 
)
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 
)