VLC  4.0.0-dev
Data Structures | Macros | Functions | Variables
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)
 
#define IGNORE_ES   DATA_ES
 

Functions

static void EsOutDelLocked (es_out_t *, es_out_id_t *)
 
static void EsOutDel (es_out_t *, es_out_id_t *)
 
static void EsOutTerminate (es_out_t *)
 
static void EsOutSelect (es_out_t *out, 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) More...
 
static void EsOutSelectList (es_out_t *, enum es_format_category_e cat, vlc_es_id_t *const *es_id_list)
 
static void EsOutUpdateInfo (es_out_t *, es_out_id_t *es, const vlc_meta_t *)
 
static int EsOutSetRecord (es_out_t *, bool b_record)
 
static bool EsIsSelected (es_out_id_t *es)
 
static void EsOutSelectEs (es_out_t *out, es_out_id_t *es, bool b_force)
 
static void EsOutDeleteInfoEs (es_out_t *, es_out_id_t *es)
 
static void EsOutUnselectEs (es_out_t *out, es_out_id_t *es, bool b_update)
 
static void EsOutDecoderChangeDelay (es_out_t *out, es_out_id_t *p_es)
 
static void EsOutDecodersChangePause (es_out_t *out, bool b_paused, vlc_tick_t i_date)
 
static void EsOutProgramChangePause (es_out_t *out, bool b_paused, vlc_tick_t i_date)
 
static void EsOutProgramsChangeRate (es_out_t *out)
 
static void EsOutDecodersStopBuffering (es_out_t *out, bool b_forced)
 
static void EsOutGlobalMeta (es_out_t *p_out, const vlc_meta_t *p_meta)
 
static void EsOutMeta (es_out_t *p_out, const vlc_meta_t *p_meta, const vlc_meta_t *p_progmeta)
 
static int EsOutEsUpdateFmt (es_out_t *out, es_out_id_t *es, const es_format_t *fmt)
 
static int EsOutControlLocked (es_out_t *out, input_source_t *, int i_query,...)
 
static int EsOutPrivControlLocked (es_out_t *out, 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 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 int EsOutGetClosedCaptionsChannel (const es_format_t *p_fmt)
 
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_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 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 es_out_policy_e e_default_policy, const char *psz_trackidvar, const char *psz_trackvar, const char *psz_langvar, const char *psz_debug)
 
es_out_tinput_EsOutNew (input_thread_t *p_input, input_source_t *main_source, float rate)
 
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_t *out)
 
static es_out_id_tEsOutGetSelectedCat (es_out_t *out, enum es_format_category_e cat)
 
static bool EsOutDecodersIsEmpty (es_out_t *out)
 
static void EsOutSetEsDelay (es_out_t *out, es_out_id_t *es, vlc_tick_t delay)
 
static void EsOutSetDelay (es_out_t *out, int i_cat, vlc_tick_t i_delay)
 
static void EsOutChangePause (es_out_t *out, bool b_paused, vlc_tick_t i_date)
 
static void EsOutChangeRate (es_out_t *out, float rate)
 
static void EsOutChangePosition (es_out_t *out, bool b_flush)
 
static void EsOutStopFreeVout (es_out_t *out)
 
static bool EsOutIsExtraBufferingAllowed (es_out_t *out)
 
static void EsOutFrameNext (es_out_t *out)
 
static vlc_tick_t EsOutGetBuffering (es_out_t *out)
 
static void EsOutSendEsEvent (es_out_t *out, es_out_id_t *es, int action, bool forced)
 
static void EsOutProgramHandleClockSource (es_out_t *out, es_out_pgrm_t *p_pgrm)
 
static bool EsOutIsGroupSticky (es_out_t *p_out, input_source_t *source, int i_group)
 
static bool EsOutIsProgramVisible (es_out_t *out, input_source_t *source, int i_group)
 
static void EsOutProgramSelect (es_out_t *out, es_out_pgrm_t *p_pgrm)
 
static es_out_pgrm_tEsOutProgramAdd (es_out_t *out, input_source_t *source, int i_group)
 
static es_out_pgrm_tEsOutProgramSearch (es_out_t *p_out, input_source_t *source, int i_group)
 
static es_out_pgrm_tEsOutProgramInsert (es_out_t *p_out, input_source_t *source, int i_group)
 
static int EsOutProgramDel (es_out_t *out, input_source_t *source, int i_group)
 
static char * EsOutProgramGetProgramName (es_out_pgrm_t *p_pgrm)
 
static void EsOutProgramMeta (es_out_t *out, input_source_t *source, int i_group, const vlc_meta_t *p_meta)
 
static void EsOutProgramEpgEvent (es_out_t *out, input_source_t *source, int i_group, const vlc_epg_event_t *p_event)
 
static void EsOutProgramEpg (es_out_t *out, input_source_t *source, int i_group, const vlc_epg_t *p_epg)
 
static void EsOutEpgTime (es_out_t *out, int64_t time)
 
static void EsOutProgramUpdateScrambled (es_out_t *p_out, es_out_pgrm_t *p_pgrm)
 
static void EsOutUpdateEsLanguageTitle (es_out_id_t *es, const es_format_t *fmt)
 
static void EsOutFillEsFmt (es_out_t *out, 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_t *out, 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_t *out, es_out_id_t *p_es)
 
static void EsOutDestroyDecoder (es_out_t *out, es_out_id_t *p_es)
 
static void EsOutDrainCCChannels (es_out_id_t *parent)
 
static void EsDeleteCCChannels (es_out_t *out, 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_t *out, 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 EsOutCreateCCChannels (es_out_t *out, vlc_fourcc_t codec, uint64_t i_bitmap, const char *psz_descfmt, 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. More...
 
static void EsOutDrainDecoder (es_out_t *out, es_out_id_t *es)
 
static int EsOutVaControlLocked (es_out_t *out, input_source_t *source, int i_query, va_list args)
 Control query handler. More...
 
static vlc_tick_t EsOutGetTracksDelay (es_out_t *out)
 
static int EsOutVaPrivControlLocked (es_out_t *out, 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 (es_out_t *out, int query, va_list args)
 
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. More...
 
void vlc_es_id_Release (vlc_es_id_t *id)
 Decrease the ES track id reference count. More...
 
int vlc_es_id_GetInputId (vlc_es_id_t *id)
 Get the ES track input id. More...
 
bool vlc_es_id_IsStrIdStable (vlc_es_id_t *id)
 Return whether the ES track identifier is stable. More...
 
const char * vlc_es_id_GetStrId (vlc_es_id_t *id)
 Get the unique string identifier. More...
 
enum es_format_category_e vlc_es_id_GetCat (vlc_es_id_t *id)
 Get the ES category. More...
 
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
 
static es_out_id_t es_cat [DATA_ES]
 

Macro Definition Documentation

◆ foreach_es_then_es_slaves

#define foreach_es_then_es_slaves (   pos)
Value:
for( int fetes_i=0; fetes_i<2; fetes_i++ ) \
vlc_list_foreach( pos, (!fetes_i ? &p_sys->es : &p_sys->es_slaves), node )
#define vlc_list_foreach(pos, head, member)
List iteration macro.
Definition: vlc_list.h:263

◆ IGNORE_ES

#define IGNORE_ES   DATA_ES

Function Documentation

◆ clock_source_Inherit()

static enum vlc_clock_master_source clock_source_Inherit ( vlc_object_t obj)
static

◆ clock_source_mapping_cmp()

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

◆ ClockUpdate()

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

◆ decoder_get_attachments()

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

◆ decoder_on_new_audio_stats()

static 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()

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

◆ decoder_on_thumbnail_ready()

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

◆ decoder_on_vout_started()

static void decoder_on_vout_started ( vlc_input_decoder_t decoder,
vout_thread_t vout,
enum vlc_vout_order  order,
void *  userdata 
)
static

◆ decoder_on_vout_stopped()

static void decoder_on_vout_stopped ( vlc_input_decoder_t decoder,
vout_thread_t vout,
void *  userdata 
)
static

◆ EsDeleteCCChannels()

static void EsDeleteCCChannels ( es_out_t out,
es_out_id_t parent 
)
static

◆ EsGetTitle()

static char* EsGetTitle ( es_out_id_t es)
static

◆ EsHold()

static 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()

static char * EsInfoCategoryName ( es_out_id_t es)
static

◆ EsIsSelected()

static bool EsIsSelected ( es_out_id_t es)
static

◆ EsOutAdd()

static es_out_id_t* EsOutAdd ( es_out_t out,
input_source_t source,
const es_format_t fmt 
)
static

◆ EsOutAddLocked()

static es_out_id_t* EsOutAddLocked ( es_out_t out,
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::cc, container_of, 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, EsGetTitle(), EsOutCreateStrId(), EsOutFillEsFmt(), EsOutIsGroupSticky(), EsOutProgramInsert(), EsOutSelect(), EsOutSendEsEvent(), EsOutUpdateInfo(), es_out_id_t::fmt, es_out_id_t::fmt_out, foreach_es_then_es_slaves, es_out_id_t::i_bitmap, 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(), LanguageGetCode(), LanguageGetName(), es_out_id_t::master, es_out_id_t::mouse_event_cb, es_out_id_t::mouse_event_userdata, msg_Err, es_out_id_t::node, es_out_id_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_format_t::psz_language, 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::type, UNKNOWN_ES, es_out_sys_t::video, VIDEO_ES, vlc_atomic_rc_init(), vlc_list_append(), VLC_SUCCESS, VLC_TICK_INVALID, and VLC_TICK_MAX.

Referenced by EsOutAdd(), and EsOutCreateCCChannels().

◆ EsOutChangePause()

static void EsOutChangePause ( es_out_t out,
bool  b_paused,
vlc_tick_t  i_date 
)
static

◆ EsOutChangePosition()

static void EsOutChangePosition ( es_out_t out,
bool  b_flush 
)
static

◆ EsOutChangeRate()

static void EsOutChangeRate ( es_out_t out,
float  rate 
)
static

◆ EsOutControl()

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

◆ EsOutControlLocked()

static int EsOutControlLocked ( es_out_t out,
input_source_t source,
int  i_query,
  ... 
)
static

◆ EsOutCreateCCChannels()

static void EsOutCreateCCChannels ( es_out_t out,
vlc_fourcc_t  codec,
uint64_t  i_bitmap,
const char *  psz_descfmt,
es_out_id_t parent 
)
static

◆ EsOutCreateDecoder()

static void EsOutCreateDecoder ( es_out_t out,
es_out_id_t p_es 
)
static

◆ EsOutCreateStrId()

static char* EsOutCreateStrId ( es_out_id_t es,
bool  stable,
const char *  id,
es_out_id_t p_master 
)
static

◆ EsOutDecoderChangeDelay()

static void EsOutDecoderChangeDelay ( es_out_t out,
es_out_id_t p_es 
)
static

◆ EsOutDecodersChangePause()

static void EsOutDecodersChangePause ( es_out_t out,
bool  b_paused,
vlc_tick_t  i_date 
)
static

◆ EsOutDecodersIsEmpty()

static bool EsOutDecodersIsEmpty ( es_out_t out)
static

◆ EsOutDecodersStopBuffering()

static void EsOutDecodersStopBuffering ( es_out_t out,
bool  b_forced 
)
static

◆ EsOutDel()

static void EsOutDel ( es_out_t out,
es_out_id_t es 
)
static

◆ EsOutDelete()

static void EsOutDelete ( es_out_t out)
static

◆ EsOutDeleteInfoEs()

static void EsOutDeleteInfoEs ( es_out_t out,
es_out_id_t es 
)
static

◆ EsOutDelLocked()

static void EsOutDelLocked ( es_out_t out,
es_out_id_t es 
)
static

◆ EsOutDestroyDecoder()

static void EsOutDestroyDecoder ( es_out_t out,
es_out_id_t p_es 
)
static

◆ EsOutDrainCCChannels()

static void EsOutDrainCCChannels ( es_out_id_t parent)
static

◆ EsOutDrainDecoder()

static void EsOutDrainDecoder ( es_out_t out,
es_out_id_t es 
)
static

◆ EsOutEpgTime()

static void EsOutEpgTime ( es_out_t out,
int64_t  time 
)
static

◆ EsOutEsUpdateFmt()

static int EsOutEsUpdateFmt ( es_out_t out,
es_out_id_t es,
const es_format_t fmt 
)
static

◆ EsOutFillEsFmt()

static void EsOutFillEsFmt ( es_out_t out,
es_format_t fmt 
)
static

◆ EsOutFrameNext()

static void EsOutFrameNext ( es_out_t out)
static

◆ EsOutGetBuffering()

static vlc_tick_t EsOutGetBuffering ( es_out_t out)
static

◆ EsOutGetClosedCaptionsChannel()

static int EsOutGetClosedCaptionsChannel ( const es_format_t p_fmt)
inlinestatic

◆ EsOutGetSelectedCat()

static es_out_id_t* EsOutGetSelectedCat ( es_out_t out,
enum es_format_category_e  cat 
)
static

◆ EsOutGetTracksDelay()

static vlc_tick_t EsOutGetTracksDelay ( es_out_t out)
static

◆ EsOutGetWakeup()

static vlc_tick_t EsOutGetWakeup ( es_out_t out)
static

◆ EsOutGlobalMeta()

static void EsOutGlobalMeta ( es_out_t p_out,
const vlc_meta_t p_meta 
)
static

◆ EsOutIdMatchEsList()

static 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()

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

◆ EsOutIsExtraBufferingAllowed()

static bool EsOutIsExtraBufferingAllowed ( es_out_t out)
static

◆ EsOutIsGroupSticky()

static bool EsOutIsGroupSticky ( es_out_t p_out,
input_source_t source,
int  i_group 
)
inlinestatic

◆ EsOutIsProgramVisible()

static bool EsOutIsProgramVisible ( es_out_t out,
input_source_t source,
int  i_group 
)
static

◆ EsOutMeta()

static void EsOutMeta ( es_out_t p_out,
const vlc_meta_t p_meta,
const vlc_meta_t p_progmeta 
)
static

◆ EsOutPrivControl()

static int EsOutPrivControl ( es_out_t out,
int  query,
va_list  args 
)
static

◆ EsOutPrivControlLocked()

static int EsOutPrivControlLocked ( es_out_t out,
int  i_query,
  ... 
)
static

◆ EsOutProgramAdd()

static es_out_pgrm_t* EsOutProgramAdd ( es_out_t out,
input_source_t source,
int  i_group 
)
static

◆ EsOutProgramChangePause()

static void EsOutProgramChangePause ( es_out_t out,
bool  b_paused,
vlc_tick_t  i_date 
)
static

◆ EsOutProgramDel()

static int EsOutProgramDel ( es_out_t out,
input_source_t source,
int  i_group 
)
static

◆ EsOutProgramEpg()

static void EsOutProgramEpg ( es_out_t out,
input_source_t source,
int  i_group,
const vlc_epg_t p_epg 
)
static

◆ EsOutProgramEpgEvent()

static void EsOutProgramEpgEvent ( es_out_t out,
input_source_t source,
int  i_group,
const vlc_epg_event_t p_event 
)
static

◆ EsOutProgramGetMetaName()

static char * EsOutProgramGetMetaName ( es_out_pgrm_t p_pgrm)
static

◆ EsOutProgramGetProgramName()

static char* EsOutProgramGetProgramName ( es_out_pgrm_t p_pgrm)
static

◆ EsOutProgramHandleClockSource()

static void EsOutProgramHandleClockSource ( es_out_t out,
es_out_pgrm_t p_pgrm 
)
static

◆ EsOutProgramInsert()

static es_out_pgrm_t* EsOutProgramInsert ( es_out_t p_out,
input_source_t source,
int  i_group 
)
static

◆ EsOutProgramMeta()

static void EsOutProgramMeta ( es_out_t out,
input_source_t source,
int  i_group,
const vlc_meta_t p_meta 
)
static

◆ EsOutProgramsChangeRate()

static void EsOutProgramsChangeRate ( es_out_t out)
static

◆ EsOutProgramSearch()

static es_out_pgrm_t* EsOutProgramSearch ( es_out_t p_out,
input_source_t source,
int  i_group 
)
static

◆ EsOutProgramSelect()

static void EsOutProgramSelect ( es_out_t out,
es_out_pgrm_t p_pgrm 
)
static

◆ EsOutProgramUpdateScrambled()

static void EsOutProgramUpdateScrambled ( es_out_t p_out,
es_out_pgrm_t p_pgrm 
)
static

◆ EsOutPropsCleanup()

static void EsOutPropsCleanup ( es_out_es_props_t p_props)
static

◆ EsOutPropsInit()

static void EsOutPropsInit ( es_out_es_props_t p_props,
bool  autoselect,
input_thread_t p_input,
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

Referenced by input_EsOutNew().

◆ EsOutSelect()

static void EsOutSelect ( es_out_t out,
es_out_id_t es,
bool  b_force 
)
static

◆ EsOutSelectEs()

static void EsOutSelectEs ( es_out_t out,
es_out_id_t es,
bool  b_force 
)
static

◆ EsOutSelectHasExplicitParams()

static bool EsOutSelectHasExplicitParams ( const es_out_es_props_t p_esprops)
static

◆ EsOutSelectList()

static void EsOutSelectList ( es_out_t out,
enum es_format_category_e  cat,
vlc_es_id_t *const *  es_id_list 
)
static

◆ EsOutSelectListFromProps()

static void EsOutSelectListFromProps ( es_out_t out,
enum es_format_category_e  cat 
)
static

◆ EsOutSelectMatchExplicitParams()

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

◆ EsOutSelectMatchPrioritized()

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

◆ EsOutSend()

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

◆ EsOutSendEsEvent()

static void EsOutSendEsEvent ( es_out_t out,
es_out_id_t es,
int  action,
bool  forced 
)
static

◆ EsOutSetDelay()

static void EsOutSetDelay ( es_out_t out,
int  i_cat,
vlc_tick_t  i_delay 
)
static

◆ EsOutSetEsDelay()

static void EsOutSetEsDelay ( es_out_t out,
es_out_id_t es,
vlc_tick_t  delay 
)
static

◆ EsOutSetRecord()

static int EsOutSetRecord ( es_out_t out,
bool  b_record 
)
static

◆ EsOutStopFreeVout()

static void EsOutStopFreeVout ( es_out_t out)
static

◆ EsOutTerminate()

static void EsOutTerminate ( es_out_t out)
static

◆ EsOutUnselectEs()

static void EsOutUnselectEs ( es_out_t out,
es_out_id_t es,
bool  b_update 
)
static

◆ EsOutUpdateEsLanguageTitle()

static void EsOutUpdateEsLanguageTitle ( es_out_id_t es,
const es_format_t fmt 
)
static

◆ EsOutUpdateInfo()

static void EsOutUpdateInfo ( es_out_t out,
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, container_of, 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, 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, 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, vlc_viewpoint_t::pitch, 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, vlc_viewpoint_t::roll, video_format_t::space, SPU_ES, static_assert, 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, video_format_t::white_point, and vlc_viewpoint_t::yaw.

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

◆ EsOutVaControlLocked()

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

Control query handler.

Parameters
outthe es_out to control
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 AUDIO_ES, 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, container_of, es_out_es_props_t::e_policy, es_cat, es_format_Clean(), es_format_Copy(), ES_OUT_DEL_GROUP, ES_OUT_GET_EMPTY, ES_OUT_GET_ES_STATE, ES_OUT_GET_PCR_SYSTEM, ES_OUT_MODIFY_PCR_SYSTEM, 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, EsDeleteCCChannels(), EsIsSelected(), EsOutChangePosition(), EsOutControlLocked(), EsOutCreateDecoder(), EsOutDecodersIsEmpty(), EsOutDecodersStopBuffering(), EsOutDestroyDecoder(), EsOutDrainDecoder(), EsOutEpgTime(), EsOutFillEsFmt(), EsOutGlobalMeta(), EsOutIsExtraBufferingAllowed(), EsOutPrivControlLocked(), EsOutProgramAdd(), EsOutProgramDel(), EsOutProgramEpg(), EsOutProgramEpgEvent(), EsOutProgramInsert(), EsOutProgramMeta(), EsOutProgramSelect(), EsOutProgramUpdateScrambled(), EsOutSelect(), EsOutSelectEs(), EsOutSendEsEvent(), EsOutStopFreeVout(), EsOutUnselectEs(), EsOutUpdateEsLanguageTitle(), 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_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_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, IGNORE_ES, input_CanPaceControl(), input_clock_ChangeSystemOrigin(), input_clock_GetJitter(), input_clock_GetSystemOrigin(), input_clock_Update(), input_item_node_Delete(), input_priv(), INPUT_PTS_DELAY_MAX, input_SendEventParsing(), es_out_id_t::mouse_event_cb, es_out_id_t::mouse_event_userdata, 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_id_t::p_pgrm, es_out_sys_t::p_pgrm, input_thread_private_t::p_sout, es_out_sys_t::programs, SPU_ES, es_out_sys_t::sub, UNKNOWN_ES, VIDEO_ES, vlc_assert_unreachable, VLC_EGENERIC, vlc_input_decoder_AddVoutOverlay(), vlc_input_decoder_DelVoutOverlay(), vlc_input_decoder_SetSpuHighlight(), vlc_input_decoder_SetVoutMouseEvent(), vlc_list_foreach, VLC_OBJECT, vlc_object_get_tracer(), VLC_SUCCESS, VLC_TICK_INVALID, vlc_tick_now(), and vlc_tracer_TracePCR().

Referenced by EsOutControl(), and EsOutControlLocked().

◆ EsOutVaPrivControlLocked()

static int EsOutVaPrivControlLocked ( es_out_t out,
int  query,
va_list  args 
)
static

References es_out_pgrm_t::active_clock_source, es_out_sys_t::b_active, es_out_sys_t::b_buffering, input_thread_private_t::b_out_pace_control, container_of, 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_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_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(), EsOutChangeRate(), EsOutControlLocked(), EsOutCreateDecoder(), EsOutDestroyDecoder(), EsOutFrameNext(), EsOutGetBuffering(), EsOutGetTracksDelay(), EsOutGetWakeup(), EsOutProgramHandleClockSource(), EsOutSelect(), EsOutSelectList(), EsOutSelectListFromProps(), EsOutSetDelay(), EsOutSetEsDelay(), 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_mode, es_out_sys_t::i_pts_delay, es_out_sys_t::i_pts_jitter, es_out_sys_t::i_tracks_pts_delay, es_out_id_t::id, input_clock_SetJitter(), input_priv(), input_SendEventTimes(), input_SendEventVbiPage(), input_SendEventVbiTransparency(), es_out_sys_t::main_source, es_out_id_t::p_dec, es_out_sys_t::p_input, es_out_pgrm_t::p_input_clock, es_out_pgrm_t::p_main_clock, es_out_id_t::p_pgrm, es_out_sys_t::p_pgrm, input_thread_private_t::p_sout, es_out_sys_t::programs, es_out_es_props_t::str_ids, strdup(), VIDEO_ES, vlc_alloc(), vlc_assert_unreachable, vlc_clock_main_SetInputDejitter(), VLC_CLOCK_MASTER_AUTO, VLC_EGENERIC, VLC_ENOMEM, vlc_es_id_get_out(), vlc_es_id_Hold(), vlc_es_id_Release(), vlc_input_decoder_Drain(), vlc_input_decoder_SetVbiOpaque(), vlc_input_decoder_SetVbiPage(), vlc_list_foreach, vlc_list_is_empty(), VLC_SUCCESS, VLC_TICK_0, and VLC_TICK_INVALID.

Referenced by EsOutPrivControl(), and EsOutPrivControlLocked().

◆ EsRelease()

static void EsRelease ( es_out_id_t es)
static

◆ EsTerminate()

static void EsTerminate ( es_out_id_t es)
static

◆ GetPropsByCat()

static es_out_es_props_t* GetPropsByCat ( es_out_sys_t p_sys,
int  i_cat 
)
static

◆ info_category_AddCodecInfo()

static 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()

es_out_t* input_EsOutNew ( input_thread_t p_input,
input_source_t main_source,
float  rate 
)

◆ LanguageArrayIndex()

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

References strcasecmp().

Referenced by EsOutSelect().

◆ LanguageGetCode()

static char * LanguageGetCode ( const char *  psz_lang)
static

◆ LanguageGetName()

static char * LanguageGetName ( const char *  psz_code)
static

◆ LanguageSplit()

static char ** LanguageSplit ( const char *  psz_langs)
static

◆ ProgramDelete()

static void ProgramDelete ( es_out_pgrm_t p_pgrm)
static

◆ 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)

Get the ES category.

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

Referenced by vlc_player_GetPrivTrack(), vlc_player_input_FindTrackById(), vlc_player_osd_Track(), vlc_player_osd_Tracks(), vlc_player_SelectEsId(), vlc_player_SelectEsIdList(), vlc_player_UnselectEsId(), and vlc_player_UpdateTimer().

◆ 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_thumbnail_ready = decoder_on_thumbnail_ready,
.on_new_video_stats = decoder_on_new_video_stats,
.on_new_audio_stats = decoder_on_new_audio_stats,
.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:394
static void decoder_on_vout_stopped(vlc_input_decoder_t *decoder, vout_thread_t *vout, void *userdata)
Definition: es_out.c:352
static int decoder_get_attachments(vlc_input_decoder_t *decoder, input_attachment_t ***ppp_attachment, void *userdata)
Definition: es_out.c:446
static void decoder_on_thumbnail_ready(vlc_input_decoder_t *decoder, picture_t *pic, void *userdata)
Definition: es_out.c:374
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:329
static void decoder_on_new_audio_stats(vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned played, void *userdata)
Definition: es_out.c:421

Referenced by EsOutCreateDecoder(), and EsOutSetRecord().

◆ es_cat

es_out_id_t es_cat[DATA_ES]
static

Referenced by EsOutVaControlLocked().

◆ es_out_cbs

static const struct es_out_callbacks es_out_cbs
static
Initial value:
=
{
.add = EsOutAdd,
.send = EsOutSend,
.del = EsOutDel,
.control = EsOutControl,
.destroy = EsOutDelete,
.priv_control = EsOutPrivControl,
}
static int EsOutPrivControl(es_out_t *out, int query, va_list args)
Definition: es_out.c:4004
static int EsOutControl(es_out_t *out, input_source_t *source, int i_query, va_list args)
Definition: es_out.c:3978
static void EsOutDel(es_out_t *, es_out_id_t *)
Definition: es_out.c:3109
static es_out_id_t * EsOutAdd(es_out_t *out, input_source_t *source, const es_format_t *fmt)
Definition: es_out.c:2242
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:2899
static void EsOutDelete(es_out_t *out)
Definition: es_out.c:643

Referenced by input_EsOutNew(), and input_EsOutSourceNew().