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
 

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 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, 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_t * GetPropsByCat (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_t * input_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_t * EsOutGetSelectedCat (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 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_t * EsOutProgramAdd (es_out_t *out, input_source_t *source, int i_group)
 
static es_out_pgrm_t * EsOutProgramSearch (es_out_t *p_out, input_source_t *source, int i_group)
 
static es_out_pgrm_t * EsOutProgramInsert (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_t * EsOutAddLocked (es_out_t *out, input_source_t *source, const es_format_t *fmt, es_out_id_t *p_master)
 
static es_out_id_t * EsOutAdd (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 void EsOutSelectListFromProps (es_out_t *out, enum es_format_category_e cat)
 
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_t * vlc_es_id_get_out (vlc_es_id_t *id)
 
vlc_es_id_t * vlc_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_t * vlc_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)

◆ IGNORE_ES

#define IGNORE_ES   DATA_ES

Referenced by EsOutVaControlLocked().

Function Documentation

◆ 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,
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_forced, 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, vlc_es_id_t::i_cat, es_format_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, vlc_es_id_t::i_id, es_format_t::i_id, es_format_t::i_original_fourcc, es_out_id_t::i_pos, 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_out_id_t::psz_language, es_format_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(), and VLC_SUCCESS.

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

◆ 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

◆ 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

◆ 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

◆ 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

◆ 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_can_pace_control, 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_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(), vlc_es_id_t::i_cat, 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_pgrm_t::i_id, es_format_t::i_id, 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_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, 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, var_InheritInteger(), 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_SUCCESS, VLC_TICK_FROM_MS, VLC_TICK_INVALID, and vlc_tick_now().

Referenced by EsOutControl(), EsOutControlLocked(), and EsOutDel().

◆ EsOutVaPrivControlLocked()

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

References 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(), EsOutSelect(), EsOutSelectList(), EsOutSelectListFromProps(), EsOutSetDelay(), EsOutSetEsDelay(), EsOutSetRecord(), EsOutStopFreeVout(), EsOutTerminate(), EsOutUnselectEs(), es_out_id_t::fmt, foreach_es_then_es_slaves, GetPropsByCat(), vlc_es_id_t::i_cat, 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_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

References info_category_AddInfo(), and VLC_FOURCC.

Referenced by EsOutUpdateInfo().

◆ 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

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

Referenced by EsOutPropsInit().

◆ 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 es_format_Change(), vlc_player_GetPrivTrack(), vlc_player_input_FindTrackById(), vlc_player_osd_Track(), vlc_player_SelectEsId(), vlc_player_SelectEsIdList(), 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(), ControlSetEsList(), and es_format_Change().

◆ vlc_es_id_GetSource()

const input_source_t* vlc_es_id_GetSource ( vlc_es_id_t *  id)

◆ 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 es_format_Change(), and vlc_player_input_GetSelectedTrackStringIds().

◆ 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
idpointer to the ES id
Returns
the same ES pointer, for convenience

References EsHold(), and vlc_es_id_get_out().

Referenced by es_format_Change(), 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 es_format_Change(), and 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(), es_format_Change(), 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_audio_stats(vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned played, void *userdata)
Definition: es_out.c:372
static int decoder_get_attachments(vlc_input_decoder_t *decoder, input_attachment_t ***ppp_attachment, void *userdata)
Definition: es_out.c:397
static void decoder_on_new_video_stats(vlc_input_decoder_t *decoder, unsigned decoded, unsigned lost, unsigned displayed, void *userdata)
Definition: es_out.c:347
static void decoder_on_vout_stopped(vlc_input_decoder_t *decoder, vout_thread_t *vout, void *userdata)
Definition: es_out.c:305
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:282
static void decoder_on_thumbnail_ready(vlc_input_decoder_t *decoder, picture_t *pic, void *userdata)
Definition: es_out.c:327

◆ es_cat

es_out_id_t es_cat[DATA_ES]
static

◆ 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 es_out_id_t * EsOutAdd(es_out_t *out, input_source_t *source, const es_format_t *fmt)
Definition: es_out.c:2103
static int EsOutPrivControl(es_out_t *out, int query, va_list args)
Definition: es_out.c:3774
static int EsOutControl(es_out_t *out, input_source_t *source, int i_query, va_list args)
Definition: es_out.c:3748
static void EsOutDel(es_out_t *, es_out_id_t *)
Definition: es_out.c:2901
static void EsOutDelete(es_out_t *out)
Definition: es_out.c:603
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:2714

Referenced by input_EsOutNew(), and input_EsOutSourceNew().