VLC 4.0.0-dev
Loading...
Searching...
No Matches
es_out.c File Reference
Include dependency graph for es_out.c:

Data Structures

struct  es_out_pgrm_t
struct  vlc_es_id_t
 Opaque structure representing an ES (Elementary Stream) track. More...
struct  es_out_id_t
struct  es_out_es_props_t
struct  es_out_sys_t
struct  clock_source_mapping

Macros

#define foreach_es_then_es_slaves(pos)

Functions

static void EsOutDelLocked (es_out_sys_t *, es_out_id_t *)
static void EsOutDel (es_out_t *, es_out_id_t *)
static void EsOutTerminate (es_out_sys_t *)
static void EsOutSelect (es_out_sys_t *p_sys, es_out_id_t *es, bool b_force)
 Select an ES given the current mode XXX: you need to take a the lock before (stream.stream_lock).
static void EsOutSelectList (es_out_sys_t *, enum es_format_category_e cat, vlc_es_id_t *const *es_id_list)
static void EsOutUpdateInfo (es_out_sys_t *, es_out_id_t *es, const vlc_meta_t *)
static int EsOutSetRecord (es_out_sys_t *, bool b_record, const char *dir_path)
static bool EsIsSelected (es_out_id_t *es)
static void EsOutSelectEs (es_out_sys_t *out, es_out_id_t *es, bool b_force, enum vlc_vout_order vout_order)
static void EsOutDeleteInfoEs (es_out_sys_t *, es_out_id_t *es)
static void EsOutUnselectEs (es_out_sys_t *out, es_out_id_t *es, bool b_update)
static void EsOutDecoderChangeDelay (es_out_sys_t *out, es_out_id_t *p_es)
static void EsOutDecodersChangePause (es_out_sys_t *out, bool b_paused, vlc_tick_t i_date)
static void EsOutChangePosition (es_out_sys_t *out, es_out_id_t *p_next_frame_es)
static void EsOutProgramChangePause (es_out_sys_t *out, bool b_paused, vlc_tick_t i_date)
static void EsOutProgramsChangeRate (es_out_sys_t *out)
static void EsOutDecodersStopBuffering (es_out_sys_t *out, bool b_forced)
static void EsOutDrainDecoder (es_out_sys_t *p_sys, es_out_id_t *es, bool wait)
static void EsOutGlobalMeta (es_out_sys_t *p_out, const vlc_meta_t *p_meta)
static void EsOutMeta (es_out_sys_t *p_out, const vlc_meta_t *p_meta, const vlc_meta_t *p_progmeta)
static void EsOutSetJitter (es_out_sys_t *p_sys, vlc_tick_t i_pts_delay, vlc_tick_t i_pts_jitter, vlc_tick_t i_cr_average)
static int EsOutEsUpdateFmt (es_out_id_t *es, const es_format_t *fmt)
static int EsOutPrivControlLocked (es_out_sys_t *out, input_source_t *, int i_query,...)
static int EsOutControlLocked (es_out_sys_t *out, input_source_t *, int i_query,...)
static char * LanguageGetName (const char *psz_code)
static char * LanguageGetCode (const char *psz_lang)
static char ** LanguageSplit (const char *psz_langs)
static int LanguageArrayIndex (char **ppsz_langs, const char *psz_lang)
static char * EsOutProgramGetMetaName (es_out_pgrm_t *p_pgrm)
static char * EsInfoCategoryName (es_out_id_t *es)
static es_out_sys_tPRIV (es_out_t *out)
static int clock_source_mapping_cmp (const void *key, const void *val)
static enum vlc_clock_master_source clock_source_Inherit (vlc_object_t *obj)
static void MouseEventCb (const vlc_mouse_t *newmouse, void *userdata)
static void decoder_on_vout_started (vlc_input_decoder_t *decoder, vout_thread_t *vout, enum vlc_vout_order order, void *userdata)
static void decoder_on_vout_stopped (vlc_input_decoder_t *decoder, vout_thread_t *vout, void *userdata)
static void decoder_on_output_paused (vlc_input_decoder_t *decoder, bool paused, vlc_tick_t paused_date, void *userdata)
static void decoder_on_thumbnail_ready (vlc_input_decoder_t *decoder, picture_t *pic, void *userdata)
static void decoder_on_new_video_stats (vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned displayed, unsigned late, void *userdata)
static void decoder_on_new_audio_stats (vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned played, void *userdata)
static void decoder_frame_next_status (vlc_input_decoder_t *decoder, int status, void *userdata)
static void decoder_frame_next_need_data (vlc_input_decoder_t *decoder, bool need_data, void *userdata)
static void decoder_frame_previous_status (vlc_input_decoder_t *decoder, int status, void *userdata)
static void decoder_frame_previous_seek (vlc_input_decoder_t *decoder, vlc_tick_t pts, unsigned frame_rate, unsigned frame_rate_base, int steps, bool failed, void *userdata)
static int decoder_get_attachments (vlc_input_decoder_t *decoder, input_attachment_t ***ppp_attachment, void *userdata)
static es_out_es_props_tGetPropsByCat (es_out_sys_t *p_sys, int i_cat)
static void EsOutPropsCleanup (es_out_es_props_t *p_props)
static void EsOutPropsInit (es_out_es_props_t *p_props, bool autoselect, input_thread_t *p_input, enum input_type input_type, enum es_out_policy_e e_default_policy, const char *psz_trackidvar, const char *psz_trackvar, const char *psz_langvar, const char *psz_debug)
static void EsTerminate (es_out_id_t *es)
static char * EsGetTitle (es_out_id_t *es)
static void EsRelease (es_out_id_t *es)
static void EsHold (es_out_id_t *es)
static void EsOutDelete (es_out_t *out)
static void ProgramDelete (es_out_pgrm_t *p_pgrm)
static vlc_tick_t EsOutGetWakeup (es_out_sys_t *p_sys)
static bool EsOutIsEmpty (es_out_sys_t *p_sys)
static int EsOutDrain (es_out_sys_t *p_sys)
static void EsOutUpdateDelayJitter (es_out_sys_t *p_sys)
static void EsOutSetEsDelay (es_out_sys_t *p_sys, es_out_id_t *es, vlc_tick_t delay)
static void EsOutSetDelay (es_out_sys_t *p_sys, int i_cat, vlc_tick_t i_delay)
static es_out_id_tEsOutStopNextFrame (es_out_sys_t *p_sys)
static void EsOutResumeFromNextFrame (es_out_sys_t *p_sys)
static void EsOutChangePause (es_out_sys_t *p_sys, bool b_paused, vlc_tick_t i_date)
static void EsOutChangeRate (es_out_sys_t *p_sys, float rate)
static void EsOutStopFreeVout (es_out_sys_t *p_sys)
static bool EsOutIsExtraBufferingAllowed (es_out_sys_t *p_sys)
static void EsOutFrameNext (es_out_sys_t *p_sys, bool previous)
static vlc_tick_t EsOutGetBuffering (es_out_sys_t *p_sys)
static void EsOutSendEsEvent (es_out_sys_t *p_sys, es_out_id_t *es, int action, bool forced, enum vlc_vout_order vout_order)
static vlc_tick_t ClockListenerUpdate (void *opaque, vlc_tick_t ck_system, vlc_tick_t ck_stream, double rate, bool discontinuity)
static void ClockListenerReset (void *opaque)
static void EsOutProgramHandleClockSource (es_out_sys_t *p_sys, es_out_pgrm_t *p_pgrm)
static bool EsOutIsGroupSticky (es_out_sys_t *p_sys, input_source_t *source, int i_group)
static bool EsOutIsProgramVisible (es_out_sys_t *p_sys, input_source_t *source, int i_group)
static void EsOutProgramSelect (es_out_sys_t *p_sys, es_out_pgrm_t *p_pgrm)
static es_out_pgrm_tEsOutProgramAdd (es_out_sys_t *p_sys, input_source_t *source, int i_group)
static es_out_pgrm_tEsOutProgramSearch (es_out_sys_t *p_sys, input_source_t *source, int i_group)
static es_out_pgrm_tEsOutProgramInsert (es_out_sys_t *p_sys, input_source_t *source, int i_group)
static int EsOutProgramDel (es_out_sys_t *p_sys, input_source_t *source, int i_group)
static char * EsOutProgramGetProgramName (es_out_pgrm_t *p_pgrm)
static void EsOutProgramMeta (es_out_sys_t *p_sys, input_source_t *source, int i_group, const vlc_meta_t *p_meta)
static void EsOutProgramEpgEvent (es_out_sys_t *p_sys, input_source_t *source, int i_group, const vlc_epg_event_t *p_event)
static void EsOutProgramEpg (es_out_sys_t *p_sys, input_source_t *source, int i_group, const vlc_epg_t *p_epg)
static void EsOutEpgTime (es_out_sys_t *p_sys, int64_t time)
static void EsOutProgramUpdateScrambled (es_out_sys_t *p_sys, es_out_pgrm_t *p_pgrm)
static void EsOutUpdateEsLanguageTitle (es_out_id_t *es, const es_format_t *fmt)
static void EsOutFillEsFmt (es_out_sys_t *p_sys, es_format_t *fmt)
static char * EsOutCreateStrId (es_out_id_t *es, bool stable, const char *id, es_out_id_t *p_master)
static es_out_id_tEsOutAddLocked (es_out_sys_t *p_sys, input_source_t *source, const es_format_t *fmt, es_out_id_t *p_master)
static es_out_id_tEsOutAdd (es_out_t *out, input_source_t *source, const es_format_t *fmt)
static void ClockUpdate (vlc_tick_t system_ts, vlc_tick_t ts, double rate, unsigned frame_rate, unsigned frame_rate_base, void *data)
static void EsOutCreateDecoder (es_out_sys_t *p_sys, es_out_id_t *p_es)
static void EsOutDeleteSubESes (es_out_sys_t *sys, es_out_id_t *parent)
static void EsOutDestroyDecoder (es_out_sys_t *sys, es_out_id_t *p_es)
static void EsOutDrainSubESes (es_out_id_t *parent)
static bool EsOutSelectMatchPrioritized (const es_out_es_props_t *p_esprops, const es_out_id_t *es)
static bool EsOutSelectHasExplicitParams (const es_out_es_props_t *p_esprops)
static bool EsOutIdMatchStrIds (const es_out_id_t *es, char *str_ids)
static bool EsOutSelectMatchExplicitParams (const es_out_es_props_t *p_esprops, const es_out_id_t *es)
static void EsOutSelectListFromProps (es_out_sys_t *p_sys, enum es_format_category_e cat)
static bool EsOutIdMatchEsList (const es_out_id_t *es, vlc_es_id_t *const *es_id_list)
static void EsOutCreateSubESes (es_out_sys_t *sys, struct vlc_subdec_desc *desc, es_out_id_t *parent)
static int EsOutSend (es_out_t *out, es_out_id_t *es, block_t *p_block)
 Send a block for the given es_out.
static int EsOutVaControlLocked (es_out_sys_t *p_sys, input_source_t *source, int i_query, va_list args)
 Control query handler.
static vlc_tick_t EsOutGetTracksDelay (es_out_sys_t *p_sys)
static int EsOutVaPrivControlLocked (es_out_sys_t *p_sys, input_source_t *source, int query, va_list args)
static int EsOutControl (es_out_t *out, input_source_t *source, int i_query, va_list args)
static int EsOutPrivControl (struct vlc_input_es_out *out, input_source_t *source, int query, va_list args)
struct vlc_input_es_outinput_EsOutNew (input_thread_t *p_input, input_source_t *main_source, float rate, enum input_type input_type)
static void info_category_AddCodecInfo (info_category_t *p_cat, const char *psz_info, vlc_fourcc_t i_fourcc, const char *psz_description)
es_out_id_tvlc_es_id_get_out (vlc_es_id_t *id)
vlc_es_id_tvlc_es_id_Hold (vlc_es_id_t *id)
 Increase the ES track id reference count.
void vlc_es_id_Release (vlc_es_id_t *id)
 Decrease the ES track id reference count.
int vlc_es_id_GetInputId (vlc_es_id_t *id)
 Get the ES track input id.
bool vlc_es_id_IsStrIdStable (vlc_es_id_t *id)
 Return whether the ES track identifier is stable.
const char * vlc_es_id_GetStrId (vlc_es_id_t *id)
 Get the unique string identifier.
enum es_format_category_e vlc_es_id_GetCat (vlc_es_id_t *id)
 Get the ES category.
const input_source_tvlc_es_id_GetSource (vlc_es_id_t *id)

Variables

static const struct vlc_input_decoder_callbacks decoder_cbs
static const struct es_out_callbacks es_out_cbs

Macro Definition Documentation

◆ foreach_es_then_es_slaves

#define foreach_es_then_es_slaves ( pos)

Function Documentation

◆ clock_source_Inherit()

◆ clock_source_mapping_cmp()

int clock_source_mapping_cmp ( const void * key,
const void * val )
static

◆ ClockListenerReset()

void ClockListenerReset ( void * opaque)
static

◆ ClockListenerUpdate()

vlc_tick_t ClockListenerUpdate ( void * opaque,
vlc_tick_t ck_system,
vlc_tick_t ck_stream,
double rate,
bool discontinuity )
static

◆ ClockUpdate()

void ClockUpdate ( vlc_tick_t system_ts,
vlc_tick_t ts,
double rate,
unsigned frame_rate,
unsigned frame_rate_base,
void * data )
static

◆ decoder_frame_next_need_data()

void decoder_frame_next_need_data ( vlc_input_decoder_t * decoder,
bool need_data,
void * userdata )
static

◆ decoder_frame_next_status()

void decoder_frame_next_status ( vlc_input_decoder_t * decoder,
int status,
void * userdata )
static

◆ decoder_frame_previous_seek()

void decoder_frame_previous_seek ( vlc_input_decoder_t * decoder,
vlc_tick_t pts,
unsigned frame_rate,
unsigned frame_rate_base,
int steps,
bool failed,
void * userdata )
static

◆ decoder_frame_previous_status()

void decoder_frame_previous_status ( vlc_input_decoder_t * decoder,
int status,
void * userdata )
static

◆ decoder_get_attachments()

int decoder_get_attachments ( vlc_input_decoder_t * decoder,
input_attachment_t *** ppp_attachment,
void * userdata )
static

◆ decoder_on_new_audio_stats()

void decoder_on_new_audio_stats ( vlc_input_decoder_t * decoder,
unsigned decoded,
unsigned lost,
unsigned played,
void * userdata )
static

◆ decoder_on_new_video_stats()

void decoder_on_new_video_stats ( vlc_input_decoder_t * decoder,
unsigned decoded,
unsigned lost,
unsigned displayed,
unsigned late,
void * userdata )
static

◆ decoder_on_output_paused()

◆ decoder_on_thumbnail_ready()

void decoder_on_thumbnail_ready ( vlc_input_decoder_t * decoder,
picture_t * pic,
void * userdata )
static

◆ decoder_on_vout_started()

◆ decoder_on_vout_stopped()

◆ EsGetTitle()

◆ EsHold()

void EsHold ( es_out_id_t * es)
static

References es_out_id_t::rc, and vlc_atomic_rc_inc().

Referenced by vlc_es_id_Hold().

◆ EsInfoCategoryName()

char * EsInfoCategoryName ( es_out_id_t * es)
static

◆ EsIsSelected()

◆ EsOutAdd()

◆ EsOutAddLocked()

es_out_id_t * EsOutAddLocked ( es_out_sys_t * p_sys,
input_source_t * source,
const es_format_t * fmt,
es_out_id_t * p_master )
static

References es_out_sys_t::audio, AUDIO_ES, es_out_id_t::b_scrambled, es_out_id_t::b_terminated, es_out_id_t::delay, es_out_sys_t::es, es_format_Clean(), es_format_Copy(), es_format_Init(), es_out_sys_t::es_slaves, EsOutCreateStrId(), EsOutFillEsFmt(), EsOutIsGroupSticky(), EsOutProgramInsert(), EsOutSelect(), EsOutSendEsEvent(), EsOutUpdateEsLanguageTitle(), EsOutUpdateInfo(), es_out_id_t::fmt, es_out_id_t::fmt_out, es_out_id_t::forced, foreach_es_then_es_slaves, es_format_t::i_cat, vlc_es_id_t::i_cat, es_out_id_t::i_channel, es_format_t::i_codec, es_out_es_props_t::i_count, es_out_pgrm_t::i_es, es_format_t::i_group, es_format_t::i_id, vlc_es_id_t::i_id, es_format_t::i_original_fourcc, es_out_id_t::i_pos, es_out_id_t::i_pts_level, es_out_id_t::id, input_source_GetNewAutoId(), input_source_GetStrId(), input_source_Hold(), input_source_Release(), es_out_id_t::master, es_out_id_t::mouse_being_dragged, es_out_id_t::mouse_event_cb, es_out_id_t::mouse_event_userdata, MouseEventCb(), msg_Err, es_out_id_t::node, es_out_id_t::oldmouse, es_out_id_t::out, es_out_sys_t::out, es_out_id_t::p_clock, es_out_id_t::p_dec, es_out_id_t::p_dec_record, es_out_sys_t::p_input, es_out_id_t::p_master, es_out_id_t::p_pgrm, es_out_sys_t::p_pgrm, es_out_id_t::psz_language, es_out_id_t::psz_language_code, es_out_id_t::psz_title, es_out_id_t::rc, es_out_pgrm_t::source, vlc_es_id_t::source, SPU_ES, vlc_es_id_t::stable, vlc_es_id_t::str_id, es_out_sys_t::sub, es_out_id_t::sub_es_vec, UNKNOWN_ES, es_out_sys_t::video, VIDEO_ES, vlc_atomic_rc_init(), vlc_list_append(), vlc_mouse_Init(), VLC_SUCCESS, VLC_TICK_INVALID, VLC_TICK_MAX, vlc_vector_init, and VLC_VOUT_ORDER_PRIMARY.

Referenced by EsOutAdd(), and EsOutCreateSubESes().

◆ EsOutChangePause()

◆ EsOutChangePosition()

◆ EsOutChangeRate()

◆ EsOutControl()

int EsOutControl ( es_out_t * out,
input_source_t * source,
int i_query,
va_list args )
static

◆ EsOutControlLocked()

int EsOutControlLocked ( es_out_sys_t * out,
input_source_t * source,
int i_query,
... )
static

◆ EsOutCreateDecoder()

◆ EsOutCreateStrId()

◆ EsOutCreateSubESes()

◆ EsOutDecoderChangeDelay()

◆ EsOutDecodersChangePause()

void EsOutDecodersChangePause ( es_out_sys_t * out,
bool b_paused,
vlc_tick_t i_date )
static

◆ EsOutDecodersStopBuffering()

◆ EsOutDel()

void EsOutDel ( es_out_t * out,
es_out_id_t * es )
static

◆ EsOutDelete()

◆ EsOutDeleteInfoEs()

◆ EsOutDeleteSubESes()

void EsOutDeleteSubESes ( es_out_sys_t * sys,
es_out_id_t * parent )
static

◆ EsOutDelLocked()

◆ EsOutDestroyDecoder()

◆ EsOutDrain()

◆ EsOutDrainDecoder()

◆ EsOutDrainSubESes()

◆ EsOutEpgTime()

void EsOutEpgTime ( es_out_sys_t * p_sys,
int64_t time )
static

◆ EsOutEsUpdateFmt()

◆ EsOutFillEsFmt()

◆ EsOutFrameNext()

◆ EsOutGetBuffering()

◆ EsOutGetTracksDelay()

◆ EsOutGetWakeup()

◆ EsOutGlobalMeta()

void EsOutGlobalMeta ( es_out_sys_t * p_out,
const vlc_meta_t * p_meta )
static

◆ EsOutIdMatchEsList()

bool EsOutIdMatchEsList ( const es_out_id_t * es,
vlc_es_id_t *const * es_id_list )
static

References es_out_id_t::id.

Referenced by EsOutSelectList().

◆ EsOutIdMatchStrIds()

bool EsOutIdMatchStrIds ( const es_out_id_t * es,
char * str_ids )
static

◆ EsOutIsEmpty()

◆ EsOutIsExtraBufferingAllowed()

bool EsOutIsExtraBufferingAllowed ( es_out_sys_t * p_sys)
static

◆ EsOutIsGroupSticky()

bool EsOutIsGroupSticky ( es_out_sys_t * p_sys,
input_source_t * source,
int i_group )
inlinestatic

◆ EsOutIsProgramVisible()

bool EsOutIsProgramVisible ( es_out_sys_t * p_sys,
input_source_t * source,
int i_group )
static

◆ EsOutMeta()

◆ EsOutPrivControl()

int EsOutPrivControl ( struct vlc_input_es_out * out,
input_source_t * source,
int query,
va_list args )
static

◆ EsOutPrivControlLocked()

int EsOutPrivControlLocked ( es_out_sys_t * out,
input_source_t * source,
int i_query,
... )
static

◆ EsOutProgramAdd()

◆ EsOutProgramChangePause()

◆ EsOutProgramDel()

◆ EsOutProgramEpg()

◆ EsOutProgramEpgEvent()

void EsOutProgramEpgEvent ( es_out_sys_t * p_sys,
input_source_t * source,
int i_group,
const vlc_epg_event_t * p_event )
static

◆ EsOutProgramGetMetaName()

char * EsOutProgramGetMetaName ( es_out_pgrm_t * p_pgrm)
static

◆ EsOutProgramGetProgramName()

char * EsOutProgramGetProgramName ( es_out_pgrm_t * p_pgrm)
static

◆ EsOutProgramHandleClockSource()

◆ EsOutProgramInsert()

es_out_pgrm_t * EsOutProgramInsert ( es_out_sys_t * p_sys,
input_source_t * source,
int i_group )
static

◆ EsOutProgramMeta()

◆ EsOutProgramsChangeRate()

◆ EsOutProgramSearch()

es_out_pgrm_t * EsOutProgramSearch ( es_out_sys_t * p_sys,
input_source_t * source,
int i_group )
static

◆ EsOutProgramSelect()

◆ EsOutProgramUpdateScrambled()

◆ EsOutPropsCleanup()

void EsOutPropsCleanup ( es_out_es_props_t * p_props)
static

◆ EsOutPropsInit()

void EsOutPropsInit ( es_out_es_props_t * p_props,
bool autoselect,
input_thread_t * p_input,
enum input_type input_type,
enum es_out_policy_e e_default_policy,
const char * psz_trackidvar,
const char * psz_trackvar,
const char * psz_langvar,
const char * psz_debug )
static

◆ EsOutResumeFromNextFrame()

◆ EsOutSelect()

◆ EsOutSelectEs()

◆ EsOutSelectHasExplicitParams()

bool EsOutSelectHasExplicitParams ( const es_out_es_props_t * p_esprops)
static

◆ EsOutSelectList()

◆ EsOutSelectListFromProps()

◆ EsOutSelectMatchExplicitParams()

bool EsOutSelectMatchExplicitParams ( const es_out_es_props_t * p_esprops,
const es_out_id_t * es )
static

◆ EsOutSelectMatchPrioritized()

bool EsOutSelectMatchPrioritized ( const es_out_es_props_t * p_esprops,
const es_out_id_t * es )
static

◆ EsOutSend()

int EsOutSend ( es_out_t * out,
es_out_id_t * es,
block_t * p_block )
static

Send a block for the given es_out.

Parameters
outthe es_out to send from
esthe es_out_id
p_blockthe data block to send

References es_out_sys_t::b_draining, input_thread_private_t::b_out_pace_control, block_Duplicate, BLOCK_FLAG_CORRUPTED, BLOCK_FLAG_DISCONTINUITY, BLOCK_FLAG_PREROLL, block_Release, vlc_input_decoder_status::changed, input_stats::demux_bitrate, input_stats::demux_corrupted, input_stats::demux_discontinuity, es_format_Clean(), EsOutCreateSubESes(), EsOutEsUpdateFmt(), EsOutSendEsEvent(), EsOutUpdateInfo(), vlc_input_decoder_status::fmt, vlc_subdec_desc::fmt_count, vlc_input_decoder_status::format, vlc_frame_t::i_buffer, vlc_frame_t::i_dts, vlc_frame_t::i_flags, es_out_pgrm_t::i_last_pcr, vlc_frame_t::i_length, input_source_t::i_normal_time, es_out_sys_t::i_preroll_end, vlc_frame_t::i_pts, es_out_id_t::i_pts_level, es_out_id_t::id, input_priv(), input_rate_Add(), es_out_sys_t::lock, es_out_sys_t::main_source, vlc_input_decoder_status::meta, msg_Dbg, input_thread_t::obj, es_out_id_t::p_dec, es_out_id_t::p_dec_record, es_out_sys_t::p_input, es_out_id_t::p_master, vlc_frame_t::p_next, es_out_sys_t::p_next_frame_es, es_out_id_t::p_pgrm, PRIV(), vlc_es_id_t::source, sout_StreamIsSynchronous(), input_thread_private_t::stats, vlc_es_id_t::str_id, vlc_input_decoder_status::subdec_desc, vlc_input_decoder_Decode(), vlc_input_decoder_DecodeWithStatus(), vlc_meta_Delete(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_object_get_tracer(), vlc_subdec_desc_Clean(), VLC_SUCCESS, VLC_TICK_0, VLC_TICK_INVALID, vlc_tracer_TraceStreamDTS(), and VLC_VOUT_ORDER_PRIMARY.

◆ EsOutSendEsEvent()

◆ EsOutSetDelay()

◆ EsOutSetEsDelay()

◆ EsOutSetJitter()

◆ EsOutSetRecord()

◆ EsOutStopFreeVout()

◆ EsOutStopNextFrame()

◆ EsOutTerminate()

◆ EsOutUnselectEs()

◆ EsOutUpdateDelayJitter()

◆ EsOutUpdateEsLanguageTitle()

◆ EsOutUpdateInfo()

void EsOutUpdateInfo ( es_out_sys_t * p_sys,
es_out_id_t * es,
const vlc_meta_t * p_meta )
static

References _, aout_BitsPerSample(), aout_FormatPrintChannels(), ARRAY_SIZE, es_format_t::audio, AUDIO_ES, es_format_t::audio_replay_gain, AUDIO_REPLAY_GAIN_MAX, AUDIO_REPLAY_GAIN_TRACK, video_format_t::b_multiview_right_eye_first, video_format_t::chroma_location, CHROMA_LOCATION_BOTTOM_CENTER, CHROMA_LOCATION_BOTTOM_LEFT, CHROMA_LOCATION_CENTER, CHROMA_LOCATION_LEFT, CHROMA_LOCATION_MAX, CHROMA_LOCATION_TOP_CENTER, CHROMA_LOCATION_TOP_LEFT, CHROMA_LOCATION_UNDEF, COLOR_PRIMARIES_BT2020, COLOR_PRIMARIES_BT470_M, COLOR_PRIMARIES_BT601_525, COLOR_PRIMARIES_BT601_625, COLOR_PRIMARIES_BT709, COLOR_PRIMARIES_DCI_P3, COLOR_PRIMARIES_MAX, COLOR_PRIMARIES_UNDEF, video_format_t::color_range, COLOR_RANGE_FULL, COLOR_RANGE_LIMITED, COLOR_RANGE_MAX, COLOR_RANGE_UNDEF, COLOR_SPACE_BT2020, COLOR_SPACE_BT601, COLOR_SPACE_BT709, COLOR_SPACE_MAX, COLOR_SPACE_UNDEF, EMPTY_STR, EsInfoCategoryName(), es_out_id_t::fmt, es_out_id_t::fmt_out, vlc_viewpoint_t::fov, es_format_t::i_bitrate, audio_format_t::i_bitspersample, es_format_t::i_cat, audio_format_t::i_channels, video_format_t::i_chroma, es_format_t::i_codec, audio_format_t::i_format, video_format_t::i_frame_rate, video_format_t::i_frame_rate_base, video_format_t::i_height, es_format_t::i_original_fourcc, audio_format_t::i_physical_channels, audio_format_t::i_rate, video_format_t::i_visible_height, video_format_t::i_visible_width, video_format_t::i_width, es_out_id_t::id, info_category_AddCodecInfo(), info_category_AddInfo(), info_category_New(), input_item_ReplaceInfos(), input_item_UpdateTracksInfo(), input_priv(), input_SendEventMetaInfo(), video_format_t::lighting, video_format_t::mastering, video_format_t::max_luminance, video_format_t::MaxCLL, video_format_t::MaxFALL, video_format_t::min_luminance, MULTIVIEW_2D, video_format_t::multiview_mode, MULTIVIEW_STEREO_CHECKERBOARD, MULTIVIEW_STEREO_COL, MULTIVIEW_STEREO_FRAME, MULTIVIEW_STEREO_MAX, MULTIVIEW_STEREO_ROW, MULTIVIEW_STEREO_SBS, MULTIVIEW_STEREO_TB, N_, video_format_t::orientation, es_out_sys_t::p_input, input_thread_private_t::p_item, audio_replay_gain_t::pb_gain, audio_replay_gain_t::pf_gain, video_format_t::pose, video_format_t::primaries, video_format_t::projection_mode, PROJECTION_MODE_CUBEMAP_LAYOUT_STANDARD, PROJECTION_MODE_EQUIRECTANGULAR, PROJECTION_MODE_RECTANGULAR, es_format_t::psz_description, es_out_id_t::psz_language, psz_name, es_out_id_t::psz_title, psz_value, video_format_t::space, SPU_ES, vlc_es_id_t::stable, vlc_es_id_t::str_id, video_format_t::transfer, TRANSFER_FUNC_BT470_BG, TRANSFER_FUNC_BT470_M, TRANSFER_FUNC_BT709, TRANSFER_FUNC_HLG, TRANSFER_FUNC_LINEAR, TRANSFER_FUNC_MAX, TRANSFER_FUNC_SMPTE_240, TRANSFER_FUNC_SMPTE_ST2084, TRANSFER_FUNC_SRGB, TRANSFER_FUNC_UNDEF, UNKNOWN_ES, unlikely, es_format_t::video, VIDEO_ES, vlc_assert_unreachable, vlc_fourcc_GetDescription(), vlc_gettext(), vlc_meta_CopyExtraNames(), vlc_meta_GetExtra, vlc_pgettext, vlc_popcount, vlc_viewpoint_to_euler(), and video_format_t::white_point.

Referenced by EsOutAddLocked(), EsOutProgramSelect(), and EsOutSend().

◆ EsOutVaControlLocked()

int EsOutVaControlLocked ( es_out_sys_t * p_sys,
input_source_t * source,
int i_query,
va_list args )
static

Control query handler.

Parameters
outthe es_out to control
sourcethe input source emitting the control request
i_queryA es_out query as defined in include/ninput.h
argsa variable list of arguments for the query
Returns
VLC_SUCCESS or an error code

References es_out_pgrm_t::active_clock_source, es_out_sys_t::b_buffering, input_thread_private_t::b_low_delay, input_thread_private_t::b_out_pace_control, es_out_id_t::b_scrambled, es_out_id_t::b_terminated, es_out_es_props_t::e_policy, es_format_Clean(), es_format_Copy(), ES_OUT_DEL_GROUP, ES_OUT_DRAIN, ES_OUT_GET_ES_STATE, ES_OUT_IS_EMPTY, ES_OUT_POST_SUBNODE, ES_OUT_PRIV_SET_JITTER, ES_OUT_RESET_PCR, ES_OUT_RESTART_ES, ES_OUT_SET_EPG_TIME, ES_OUT_SET_ES, ES_OUT_SET_ES_CAT_POLICY, ES_OUT_SET_ES_DEFAULT, ES_OUT_SET_ES_FMT, ES_OUT_SET_ES_SCRAMBLED_STATE, ES_OUT_SET_ES_STATE, ES_OUT_SET_GROUP, ES_OUT_SET_GROUP_EPG, ES_OUT_SET_GROUP_EPG_EVENT, ES_OUT_SET_GROUP_META, ES_OUT_SET_GROUP_PCR, ES_OUT_SET_META, ES_OUT_SET_NEXT_DISPLAY_TIME, ES_OUT_SET_PCR, ES_OUT_SPU_SET_HIGHLIGHT, ES_OUT_UNSET_ES, ES_OUT_VOUT_ADD_OVERLAY, ES_OUT_VOUT_DEL_OVERLAY, ES_OUT_VOUT_SET_MOUSE_EVENT, EsIsSelected(), EsOutChangePosition(), EsOutControlLocked(), EsOutCreateDecoder(), EsOutDecodersStopBuffering(), EsOutDestroyDecoder(), EsOutDrain(), EsOutDrainDecoder(), EsOutEpgTime(), EsOutFillEsFmt(), EsOutGlobalMeta(), EsOutIsEmpty(), EsOutIsExtraBufferingAllowed(), EsOutPrivControlLocked(), EsOutProgramAdd(), EsOutProgramDel(), EsOutProgramEpg(), EsOutProgramEpgEvent(), EsOutProgramHandleClockSource(), EsOutProgramInsert(), EsOutProgramMeta(), EsOutProgramSelect(), EsOutProgramUpdateScrambled(), EsOutSelect(), EsOutSelectEs(), EsOutSendEsEvent(), EsOutStopFreeVout(), EsOutStopNextFrame(), EsOutUnselectEs(), EsOutUpdateEsLanguageTitle(), es_out_id_t::fmt, foreach_es_then_es_slaves, GetPropsByCat(), es_format_t::i_cat, es_format_t::i_codec, es_out_sys_t::i_cr_average, es_out_es_props_t::i_demux_id, es_format_t::i_group, es_out_sys_t::i_group_id, es_format_t::i_id, es_out_pgrm_t::i_id, input_thread_private_t::i_jitter_max, es_out_pgrm_t::i_last_pcr, es_format_t::i_original_fourcc, es_out_sys_t::i_preroll_end, es_out_sys_t::i_pts_delay, es_out_sys_t::i_pts_jitter, es_out_sys_t::i_tracks_pts_delay, input_CanPaceControl(), input_clock_GetJitter(), input_clock_Update(), input_item_node_Delete(), input_priv(), INPUT_PTS_DELAY_MAX, input_SendEventParsing(), es_out_sys_t::main_source, es_out_id_t::mouse_event_cb, es_out_id_t::mouse_event_userdata, MouseEventCb(), MS_FROM_VLC_TICK, msg_Dbg, msg_Err, input_thread_t::obj, es_out_id_t::p_dec, es_out_sys_t::p_input, es_out_pgrm_t::p_input_clock, es_out_sys_t::p_next_frame_es, es_out_id_t::p_pgrm, es_out_sys_t::p_pgrm, input_thread_private_t::p_sout, es_out_sys_t::programs, sout_StreamSetPCR(), SPU_ES, es_out_sys_t::sub, UNKNOWN_ES, VIDEO_ES, vlc_assert_unreachable, VLC_CLOCK_MASTER_AUTO, VLC_EGENERIC, vlc_input_decoder_AddVoutOverlay(), vlc_input_decoder_DelVoutOverlay(), vlc_input_decoder_SetSpuHighlight(), vlc_input_decoder_SetVoutMouseEvent(), vlc_list_foreach, vlc_object_get_tracer(), VLC_SUCCESS, VLC_TICK_INVALID, vlc_tick_now(), VLC_TRACE, VLC_TRACE_END, VLC_TRACE_TICK_NS, vlc_tracer_Trace, vlc_tracer_TracePCR(), and VLC_VOUT_ORDER_PRIMARY.

Referenced by EsOutControl(), and EsOutControlLocked().

◆ EsOutVaPrivControlLocked()

int EsOutVaPrivControlLocked ( es_out_sys_t * p_sys,
input_source_t * source,
int query,
va_list args )
static

References es_out_sys_t::b_active, es_out_sys_t::b_buffering, count, es_out_sys_t::es, ES_OUT_MODE_ALL, ES_OUT_MODE_AUTO, ES_OUT_MODE_END, ES_OUT_MODE_NONE, ES_OUT_MODE_PARTIAL, ES_OUT_PRIV_GET_BUFFERING, ES_OUT_PRIV_GET_GROUP_FORCED, ES_OUT_PRIV_GET_WAKE_UP, ES_OUT_PRIV_RESET_PCR_FRAME_PREV, ES_OUT_PRIV_RESTART_ES, ES_OUT_PRIV_SET_DELAY, ES_OUT_PRIV_SET_EOS, ES_OUT_PRIV_SET_ES, ES_OUT_PRIV_SET_ES_CAT_IDS, ES_OUT_PRIV_SET_ES_DELAY, ES_OUT_PRIV_SET_ES_LIST, ES_OUT_PRIV_SET_FRAME_NEXT, ES_OUT_PRIV_SET_FRAME_PREVIOUS, ES_OUT_PRIV_SET_JITTER, ES_OUT_PRIV_SET_MODE, ES_OUT_PRIV_SET_PAUSE_STATE, ES_OUT_PRIV_SET_RATE, ES_OUT_PRIV_SET_RECORD_STATE, ES_OUT_PRIV_SET_TIMES, ES_OUT_PRIV_SET_VBI_PAGE, ES_OUT_PRIV_SET_VBI_TRANSPARENCY, ES_OUT_PRIV_START_ALL_ES, ES_OUT_PRIV_STOP_ALL_ES, ES_OUT_PRIV_UNSET_ES, ES_OUT_RESTART_ES, ES_OUT_SET_ES, ES_OUT_UNSET_ES, EsIsSelected(), EsOutChangePause(), EsOutChangePosition(), EsOutChangeRate(), EsOutControlLocked(), EsOutCreateDecoder(), EsOutDestroyDecoder(), EsOutDrain(), EsOutFrameNext(), EsOutGetBuffering(), EsOutGetWakeup(), EsOutResumeFromNextFrame(), EsOutSelect(), EsOutSelectList(), EsOutSelectListFromProps(), EsOutSetDelay(), EsOutSetEsDelay(), EsOutSetJitter(), EsOutSetRecord(), EsOutStopFreeVout(), EsOutTerminate(), EsOutUnselectEs(), es_out_id_t::fmt, foreach_es_then_es_slaves, GetPropsByCat(), es_format_t::i_cat, es_out_sys_t::i_cr_average, es_out_sys_t::i_group_id, es_out_sys_t::i_last_pts_jitter, es_out_sys_t::i_mode, input_source_t::i_normal_time, es_out_sys_t::i_pts_delay, es_out_sys_t::i_pts_jitter, es_out_id_t::id, input_priv(), input_SendEventTimes(), input_SendEventVbiPage(), input_SendEventVbiTransparency(), es_out_sys_t::main_source, MS_FROM_VLC_TICK, msg_Warn, input_thread_t::obj, es_out_id_t::p_dec, es_out_sys_t::p_input, es_out_id_t::p_pgrm, es_out_sys_t::p_pgrm, input_thread_private_t::p_sout, es_out_es_props_t::str_ids, strdup(), VIDEO_ES, vlc_alloc(), vlc_assert_unreachable, VLC_EGENERIC, VLC_ENOMEM, vlc_es_id_get_out(), vlc_es_id_Hold(), vlc_es_id_Release(), vlc_input_decoder_SetVbiOpaque(), vlc_input_decoder_SetVbiPage(), vlc_list_is_empty(), vlc_object_get_tracer(), VLC_SUCCESS, VLC_TICK_0, VLC_TICK_INVALID, vlc_tick_now(), VLC_TRACE, VLC_TRACE_END, VLC_TRACE_TICK_NS, and vlc_tracer_Trace.

Referenced by EsOutPrivControl(), and EsOutPrivControlLocked().

◆ EsRelease()

◆ EsTerminate()

void EsTerminate ( es_out_id_t * es)
static

◆ GetPropsByCat()

◆ info_category_AddCodecInfo()

void info_category_AddCodecInfo ( info_category_t * p_cat,
const char * psz_info,
vlc_fourcc_t i_fourcc,
const char * psz_description )
static

◆ input_EsOutNew()

struct vlc_input_es_out * input_EsOutNew ( input_thread_t * p_input,
input_source_t * main_source,
float rate,
enum input_type input_type input_type  )

◆ LanguageArrayIndex()

int LanguageArrayIndex ( char ** ppsz_langs,
const char * psz_lang )
static

References strcasecmp().

Referenced by EsOutSelect().

◆ LanguageGetCode()

char * LanguageGetCode ( const char * psz_lang)
static

◆ LanguageGetName()

char * LanguageGetName ( const char * psz_code)
static

◆ LanguageSplit()

char ** LanguageSplit ( const char * psz_langs)
static

References LanguageGetCode(), strdup(), and TAB_APPEND.

Referenced by EsOutPropsInit().

◆ MouseEventCb()

◆ PRIV()

◆ ProgramDelete()

◆ vlc_es_id_get_out()

es_out_id_t * vlc_es_id_get_out ( vlc_es_id_t * id)

◆ vlc_es_id_GetCat()

enum es_format_category_e vlc_es_id_GetCat ( vlc_es_id_t * id)

◆ vlc_es_id_GetInputId()

int vlc_es_id_GetInputId ( vlc_es_id_t * id)

Get the ES track input id.

Parameters
idpointer to the ES track id
Returns
the ES track input id (always valid)

Referenced by Control(), and ControlSetEsList().

◆ vlc_es_id_GetSource()

const input_source_t * vlc_es_id_GetSource ( vlc_es_id_t * id)

Referenced by Control(), and ControlSetEsList().

◆ vlc_es_id_GetStrId()

const char * vlc_es_id_GetStrId ( vlc_es_id_t * id)

Get the unique string identifier.

This id could be used to identify a track across different playback instances. For example, it can be used to store a track selection preference in a database.

Warning
Check with vlc_es_id_IsStrIdStable() if the ES track is stable before saving it for a future usage.
Parameters
idpointer to the ES track id
Returns
the ES track string identifier, can't be NULL, valid until id is released

Referenced by vlc_player_input_GetSelectedTrackStringIds(), and vlc_player_osd_Tracks().

◆ vlc_es_id_Hold()

vlc_es_id_t * vlc_es_id_Hold ( vlc_es_id_t * es)

Increase the ES track id reference count.

Any held ES tracks must be released with vlc_es_id_Release().

Parameters
espointer to the ES id
Returns
the same ES pointer, for convenience

References EsHold(), and vlc_es_id_get_out().

Referenced by EsOutVaPrivControlLocked(), input_ControlPushEsHelper(), vlc_player_SelectEsIdList(), and vlc_player_track_priv_New().

◆ vlc_es_id_IsStrIdStable()

bool vlc_es_id_IsStrIdStable ( vlc_es_id_t * id)

Return whether the ES track identifier is stable.

An string identifier is stable when it is certified to be the same across different playback instances for the same ES track.

Parameters
idpointer to the ES track id
Returns
true if stable

Referenced by vlc_player_input_GetSelectedTrackStringIds().

◆ vlc_es_id_Release()

void vlc_es_id_Release ( vlc_es_id_t * id)

Decrease the ES track id reference count.

Parameters
idpointer to the ES track id

References EsRelease(), and vlc_es_id_get_out().

Referenced by ControlRelease(), EsOutVaPrivControlLocked(), and vlc_player_track_priv_Delete().

Variable Documentation

◆ decoder_cbs

const struct vlc_input_decoder_callbacks decoder_cbs
static
Initial value:
= {
.on_vout_started = decoder_on_vout_started,
.on_vout_stopped = decoder_on_vout_stopped,
.on_output_paused = decoder_on_output_paused,
.on_thumbnail_ready = decoder_on_thumbnail_ready,
.on_new_video_stats = decoder_on_new_video_stats,
.on_new_audio_stats = decoder_on_new_audio_stats,
.frame_next_status = decoder_frame_next_status,
.frame_next_need_data = decoder_frame_next_need_data,
.frame_previous_status = decoder_frame_previous_status,
.frame_previous_seek = decoder_frame_previous_seek,
.get_attachments = decoder_get_attachments,
}
static void decoder_on_new_video_stats(vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned displayed, unsigned late, void *userdata)
Definition es_out.c:457
static void decoder_on_vout_stopped(vlc_input_decoder_t *decoder, vout_thread_t *vout, void *userdata)
Definition es_out.c:396
static int decoder_get_attachments(vlc_input_decoder_t *decoder, input_attachment_t ***ppp_attachment, void *userdata)
Definition es_out.c:595
static void decoder_frame_previous_seek(vlc_input_decoder_t *decoder, vlc_tick_t pts, unsigned frame_rate, unsigned frame_rate_base, int steps, bool failed, void *userdata)
Definition es_out.c:569
static void decoder_on_thumbnail_ready(vlc_input_decoder_t *decoder, picture_t *pic, void *userdata)
Definition es_out.c:437
static void decoder_on_vout_started(vlc_input_decoder_t *decoder, vout_thread_t *vout, enum vlc_vout_order order, void *userdata)
Definition es_out.c:373
static void decoder_frame_next_need_data(vlc_input_decoder_t *decoder, bool need_data, void *userdata)
Definition es_out.c:530
static void decoder_frame_next_status(vlc_input_decoder_t *decoder, int status, void *userdata)
Definition es_out.c:509
static void decoder_on_new_audio_stats(vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned played, void *userdata)
Definition es_out.c:484
static void decoder_on_output_paused(vlc_input_decoder_t *decoder, bool paused, vlc_tick_t paused_date, void *userdata)
Definition es_out.c:418
static void decoder_frame_previous_status(vlc_input_decoder_t *decoder, int status, void *userdata)
Definition es_out.c:548

Referenced by EsOutCreateDecoder(), and EsOutSetRecord().

◆ es_out_cbs

const struct es_out_callbacks es_out_cbs
static
Initial value:
=
{
.add = EsOutAdd,
.send = EsOutSend,
.del = EsOutDel,
.control = EsOutControl,
.destroy = EsOutDelete,
}
static int EsOutControl(es_out_t *out, input_source_t *source, int i_query, va_list args)
Definition es_out.c:4238
static void EsOutDel(es_out_t *, es_out_id_t *)
Definition es_out.c:3329
static es_out_id_t * EsOutAdd(es_out_t *out, input_source_t *source, const es_format_t *fmt)
Definition es_out.c:2437
static int EsOutSend(es_out_t *out, es_out_id_t *es, block_t *p_block)
Send a block for the given es_out.
Definition es_out.c:3091
static void EsOutDelete(es_out_t *out)
Definition es_out.c:741

Referenced by input_EsOutNew(), and input_EsOutSourceNew().