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)
 
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, 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 (decoder_t *decoder, vout_thread_t *vout, enum vlc_vout_order order, void *userdata)
 
static void decoder_on_vout_stopped (decoder_t *decoder, vout_thread_t *vout, void *userdata)
 
static void decoder_on_thumbnail_ready (decoder_t *decoder, picture_t *pic, void *userdata)
 
static void decoder_on_new_video_stats (decoder_t *decoder, unsigned decoded, unsigned lost, unsigned displayed, void *userdata)
 
static void decoder_on_new_audio_stats (decoder_t *decoder, unsigned decoded, unsigned lost, unsigned played, void *userdata)
 
static int decoder_get_attachments (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, 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 vlc_tick_t EsOutGetWakeup (es_out_t *out)
 
static es_out_id_tEsOutGetFromID (es_out_t *out, int i_id)
 
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)
 
static bool EsOutIsProgramVisible (es_out_t *out, 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, int i_group)
 
static int EsOutProgramDel (es_out_t *out, int i_group)
 
static es_out_pgrm_tEsOutProgramFind (es_out_t *p_out, int i_group)
 
static char * EsOutProgramGetProgramName (es_out_pgrm_t *p_pgrm)
 
static void EsOutProgramMeta (es_out_t *out, int i_group, const vlc_meta_t *p_meta)
 
static void EsOutProgramEpgEvent (es_out_t *out, int i_group, const vlc_epg_event_t *p_event)
 
static void EsOutProgramEpg (es_out_t *out, 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 es_out_id_tEsOutAddSlaveLocked (es_out_t *out, const es_format_t *fmt, es_out_id_t *p_master)
 
static es_out_id_tEsOutAdd (es_out_t *out, 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 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, int i_query, va_list args)
 Control query handler. More...
 
static vlc_tick_t EsOutGetTracksDelay (es_out_t *out)
 
static int EsOutControl (es_out_t *out, int i_query, va_list args)
 
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...
 
enum es_format_category_e vlc_es_id_GetCat (vlc_es_id_t *id)
 Get the ES category. More...
 

Variables

static const struct 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:260

Referenced by EsOutAddSlaveLocked(), EsOutChangePosition(), EsOutChangeRate(), EsOutDecodersChangePause(), EsOutDecodersIsEmpty(), EsOutDecodersStopBuffering(), EsOutDelLocked(), EsOutFrameNext(), EsOutGetFromID(), EsOutGetSelectedCat(), EsOutGetTracksDelay(), EsOutIsExtraBufferingAllowed(), EsOutProgramSelect(), EsOutSelectList(), EsOutSetDelay(), EsOutTerminate(), and EsOutVaControlLocked().

◆ 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 ( decoder_t decoder,
input_attachment_t ***  ppp_attachment,
void *  userdata 
)
static

◆ decoder_on_new_audio_stats()

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

◆ decoder_on_new_video_stats()

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

◆ decoder_on_thumbnail_ready()

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

◆ decoder_on_vout_started()

static void decoder_on_vout_started ( 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 ( 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,
const es_format_t fmt 
)
static

◆ EsOutAddSlaveLocked()

static es_out_id_t* EsOutAddSlaveLocked ( es_out_t out,
const es_format_t fmt,
es_out_id_t p_master 
)
static

◆ 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,
int  i_query,
va_list  args 
)
static

◆ EsOutControlLocked()

static int EsOutControlLocked ( es_out_t out,
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

◆ 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

◆ EsOutGetFromID()

static es_out_id_t* EsOutGetFromID ( es_out_t out,
int  i_id 
)
static

◆ 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

◆ EsOutIsProgramVisible()

static bool EsOutIsProgramVisible ( es_out_t out,
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

◆ EsOutProgramAdd()

static es_out_pgrm_t* EsOutProgramAdd ( es_out_t out,
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,
int  i_group 
)
static

◆ EsOutProgramEpg()

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

◆ EsOutProgramEpgEvent()

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

◆ EsOutProgramFind()

static es_out_pgrm_t* EsOutProgramFind ( es_out_t p_out,
int  i_group 
)
static

◆ EsOutProgramGetMetaName()

static char * EsOutProgramGetMetaName ( es_out_pgrm_t p_pgrm)
static

◆ EsOutProgramGetProgramName()

static char* EsOutProgramGetProgramName ( es_out_pgrm_t p_pgrm)
static

◆ EsOutProgramMeta()

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

◆ EsOutProgramsChangeRate()

static void EsOutProgramsChangeRate ( es_out_t out)
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

References es_out_es_props_t::ppsz_language.

Referenced by EsOutDelete().

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

◆ EsOutSelectList()

static void EsOutSelectList ( es_out_t out,
enum es_format_category_e  cat,
vlc_es_id_t *const *  es_id_list 
)
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 
)
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, video_format_t::i_frame_rate, video_format_t::i_frame_rate_base, video_format_t::i_height, es_format_t::i_id, es_out_id_t::i_meta_id, 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_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, 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, 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 EsOutAddSlaveLocked(), EsOutProgramSelect(), and EsOutSend().

◆ EsOutVaControlLocked()

static int EsOutVaControlLocked ( es_out_t out,
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 es_out_sys_t::audio, AUDIO_ES, es_out_sys_t::b_active, es_out_es_props_t::b_autoselect, es_out_sys_t::b_buffering, input_thread_private_t::b_can_pace_control, es_out_id_t::b_forced, 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, count, es_out_es_props_t::e_policy, es_out_sys_t::es, es_format_Clean(), es_format_Copy(), ES_OUT_DEL_GROUP, ES_OUT_GET_BUFFERING, ES_OUT_GET_EMPTY, ES_OUT_GET_ES_STATE, ES_OUT_GET_GROUP_FORCED, ES_OUT_GET_PCR_SYSTEM, ES_OUT_GET_WAKE_UP, ES_OUT_MODE_ALL, ES_OUT_MODE_AUTO, ES_OUT_MODE_END, ES_OUT_MODE_NONE, ES_OUT_MODE_PARTIAL, ES_OUT_MODIFY_PCR_SYSTEM, ES_OUT_POST_SUBNODE, ES_OUT_RESET_PCR, ES_OUT_RESTART_ES, ES_OUT_RESTART_ES_BY_ID, ES_OUT_SET_AUTOSELECT, ES_OUT_SET_DELAY, ES_OUT_SET_EOS, ES_OUT_SET_EPG_TIME, ES_OUT_SET_ES, ES_OUT_SET_ES_BY_ID, ES_OUT_SET_ES_CAT_POLICY, ES_OUT_SET_ES_DEFAULT, ES_OUT_SET_ES_DEFAULT_BY_ID, ES_OUT_SET_ES_DELAY, ES_OUT_SET_ES_FMT, ES_OUT_SET_ES_LIST, ES_OUT_SET_ES_SCRAMBLED_STATE, ES_OUT_SET_ES_STATE, ES_OUT_SET_FRAME_NEXT, 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_JITTER, ES_OUT_SET_META, ES_OUT_SET_MODE, ES_OUT_SET_NEXT_DISPLAY_TIME, ES_OUT_SET_PAUSE_STATE, ES_OUT_SET_PCR, ES_OUT_SET_RATE, ES_OUT_SET_RECORD_STATE, ES_OUT_SET_TIMES, ES_OUT_SET_VBI_PAGE, ES_OUT_SET_VBI_TRANSPARENCY, ES_OUT_SPU_SET_HIGHLIGHT, ES_OUT_START_ALL_ES, ES_OUT_STOP_ALL_ES, ES_OUT_UNSET_ES, ES_OUT_VOUT_ADD_OVERLAY, ES_OUT_VOUT_DEL_OVERLAY, ES_OUT_VOUT_SET_MOUSE_EVENT, EsDeleteCCChannels(), EsIsSelected(), EsOutChangePause(), EsOutChangePosition(), EsOutChangeRate(), EsOutControlLocked(), EsOutCreateDecoder(), EsOutDecodersIsEmpty(), EsOutDecodersStopBuffering(), EsOutDestroyDecoder(), EsOutDrainDecoder(), EsOutEpgTime(), EsOutFillEsFmt(), EsOutFrameNext(), EsOutGetBuffering(), EsOutGetFromID(), EsOutGetTracksDelay(), EsOutGetWakeup(), EsOutGlobalMeta(), EsOutIsExtraBufferingAllowed(), EsOutProgramAdd(), EsOutProgramDel(), EsOutProgramEpg(), EsOutProgramEpgEvent(), EsOutProgramFind(), EsOutProgramMeta(), EsOutProgramSelect(), EsOutProgramUpdateScrambled(), EsOutSelect(), EsOutSelectEs(), EsOutSelectList(), EsOutSendEsEvent(), EsOutSetDelay(), EsOutSetEsDelay(), EsOutSetRecord(), EsOutStopFreeVout(), EsOutTerminate(), 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_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_out_pgrm_t::i_id, vlc_es_id_t::i_id, es_format_t::i_id, es_out_sys_t::i_mode, 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_SetJitter(), input_clock_Update(), input_DecoderAddVoutOverlay(), input_DecoderDelVoutOverlay(), input_DecoderDrain(), input_DecoderSetSpuHighlight(), input_DecoderSetVoutMouseEvent(), input_item_node_Delete(), input_priv(), INPUT_PTS_DELAY_MAX, input_SendEventParsing(), input_SendEventTimes(), input_SendEventVbiPage(), input_SendEventVbiTransparency(), 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_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, SPU_ES, es_out_sys_t::sub, UNKNOWN_ES, var_InheritInteger(), var_SetBool(), var_SetInteger(), es_out_sys_t::video, VIDEO_ES, vlc_alloc(), vlc_assert_unreachable, vlc_clock_main_SetInputDejitter(), VLC_CODEC_TELETEXT, VLC_EGENERIC, VLC_ENOMEM, vlc_list_foreach, vlc_list_is_empty(), VLC_OBJECT, VLC_SUCCESS, VLC_TICK_0, VLC_TICK_FROM_MS, VLC_TICK_INVALID, and vlc_tick_now().

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

◆ 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

◆ input_EsOutNew()

es_out_t* input_EsOutNew ( input_thread_t p_input,
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().

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

◆ 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(), input_ControlPushEsHelper(), vlc_player_SelectEsIdList(), and vlc_player_track_priv_New().

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

Variable Documentation

◆ decoder_cbs

const struct 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_thumbnail_ready(decoder_t *decoder, picture_t *pic, void *userdata)
Definition: es_out.c:318
static int decoder_get_attachments(decoder_t *decoder, input_attachment_t ***ppp_attachment, void *userdata)
Definition: es_out.c:388
static void decoder_on_vout_started(decoder_t *decoder, vout_thread_t *vout, enum vlc_vout_order order, void *userdata)
Definition: es_out.c:273
static void decoder_on_new_video_stats(decoder_t *decoder, unsigned decoded, unsigned lost, unsigned displayed, void *userdata)
Definition: es_out.c:338
static void decoder_on_vout_stopped(decoder_t *decoder, vout_thread_t *vout, void *userdata)
Definition: es_out.c:296
static void decoder_on_new_audio_stats(decoder_t *decoder, unsigned decoded, unsigned lost, unsigned played, void *userdata)
Definition: es_out.c:363

◆ 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,
}
static void EsOutDel(es_out_t *, es_out_id_t *)
Definition: es_out.c:2682
static int EsOutControl(es_out_t *out, int i_query, va_list args)
Definition: es_out.c:3545
static es_out_id_t * EsOutAdd(es_out_t *out, const es_format_t *fmt)
Definition: es_out.c:1979
static void EsOutDelete(es_out_t *out)
Definition: es_out.c:590
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:2494

Referenced by input_EsOutNew().