VLC  4.0.0-dev
Typedefs | Functions
input_clock.h File Reference
Include dependency graph for input_clock.h:

Go to the source code of this file.

Typedefs

typedef struct input_clock_t input_clock_t
 

Functions

input_clock_tinput_clock_New (float rate)
 This function creates a new input_clock_t. More...
 
void input_clock_Delete (input_clock_t *)
 This function destroys a input_clock_t created by input_clock_New. More...
 
vlc_tick_t input_clock_Update (input_clock_t *, vlc_object_t *p_log, bool b_can_pace_control, bool b_buffering_allowed, vlc_tick_t i_clock, vlc_tick_t i_system)
 This function will update a input_clock_t with a new clock reference point. More...
 
void input_clock_Reset (input_clock_t *)
 This function will reset the drift of a input_clock_t. More...
 
vlc_tick_t input_clock_GetWakeup (input_clock_t *)
 This functions will return a deadline used to control the reading speed. More...
 
void input_clock_ChangeRate (input_clock_t *, float rate)
 This functions allows changing the actual reading speed. More...
 
void input_clock_ChangePause (input_clock_t *, bool b_paused, vlc_tick_t i_date)
 This function allows changing the pause status. More...
 
void input_clock_GetSystemOrigin (input_clock_t *, vlc_tick_t *pi_system, vlc_tick_t *pi_delay)
 This function returns the original system value date and the delay for the current reference point (a valid reference point must have been set). More...
 
void input_clock_ChangeSystemOrigin (input_clock_t *, bool b_absolute, vlc_tick_t i_system)
 This function allows rebasing the original system value date (a valid reference point must have been set). More...
 
int input_clock_ConvertTS (vlc_object_t *, input_clock_t *, float *p_rate, vlc_tick_t *pi_ts0, vlc_tick_t *pi_ts1, vlc_tick_t i_ts_bound)
 This function converts a pair of timestamp from stream clock to system clock. More...
 
float input_clock_GetRate (input_clock_t *)
 This function returns the current rate. More...
 
int input_clock_GetState (input_clock_t *, vlc_tick_t *pi_stream_start, vlc_tick_t *pi_system_start, vlc_tick_t *pi_stream_duration, vlc_tick_t *pi_system_duration)
 This function returns current clock state or VLC_EGENERIC if there is not a reference point. More...
 
void input_clock_SetJitter (input_clock_t *, vlc_tick_t i_pts_delay, int i_cr_average)
 This function allows the set the minimal configuration for the jitter estimation algo. More...
 
vlc_tick_t input_clock_GetJitter (input_clock_t *)
 This function returns an estimation of the pts_delay needed to avoid rebufferization. More...
 

Typedef Documentation

◆ input_clock_t

typedef struct input_clock_t input_clock_t

Function Documentation

◆ input_clock_ChangePause()

void input_clock_ChangePause ( input_clock_t ,
bool  b_paused,
vlc_tick_t  i_date 
)

◆ input_clock_ChangeRate()

void input_clock_ChangeRate ( input_clock_t ,
float  rate 
)

◆ input_clock_ChangeSystemOrigin()

void input_clock_ChangeSystemOrigin ( input_clock_t ,
bool  b_absolute,
vlc_tick_t  i_system 
)

This function allows rebasing the original system value date (a valid reference point must have been set).

When using the absolute mode, it will create a discontinuity unless called imediatly after a input_clock_Update.

References input_clock_t::b_has_external_clock, input_clock_t::b_has_reference, ClockGetTsOffset(), input_clock_t::i_external_clock, input_clock_t::last, input_clock_t::lock, input_clock_t::ref, clock_point_t::system, vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by EsOutDecodersStopBuffering(), and EsOutVaControlLocked().

◆ input_clock_ConvertTS()

int input_clock_ConvertTS ( vlc_object_t ,
input_clock_t ,
float *  p_rate,
vlc_tick_t pi_ts0,
vlc_tick_t pi_ts1,
vlc_tick_t  i_ts_bound 
)

This function converts a pair of timestamp from stream clock to system clock.

If p_rate is provided it will be filled with the rate value used for the conversion. p_ts0 is a pointer to a timestamp to be converted (in place) and must be non NULL. p_ts1 is a pointer to a timestamp to be converted (in place) and can be NULL.

It will return VLC_EGENERIC if i_ts_bound is not INT64_MAX and if the value *p_ts0 after conversion is not before the deadline vlc_tick_now() + i_pts_delay + i_ts_bound. It will also return VLC_EGENERIC if the conversion cannot be done successfully. In this case, *p_ts0 and *p_ts1 will hold an invalid timestamp. Otherwise it will return VLC_SUCCESS.

References AvgGet(), input_clock_t::b_has_reference, ClockGetTsOffset(), ClockStreamToSystem(), input_clock_t::drift, input_clock_t::i_buffering_duration, input_clock_t::i_pts_delay, input_clock_t::i_ts_max, input_clock_t::lock, msg_Err, input_clock_t::rate, VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_SUCCESS, VLC_TICK_INVALID, and vlc_tick_now().

◆ input_clock_Delete()

void input_clock_Delete ( input_clock_t )

This function destroys a input_clock_t created by input_clock_New.

References AvgClean(), input_clock_t::drift, input_clock_t::lock, and vlc_mutex_destroy().

Referenced by EsOutProgramAdd(), EsOutProgramDel(), and EsOutTerminate().

◆ input_clock_GetJitter()

vlc_tick_t input_clock_GetJitter ( input_clock_t )

This function returns an estimation of the pts_delay needed to avoid rebufferization.

XXX in the current implementation, the pts_delay will never be decreased.

References input_clock_t::i_pts_delay, input_clock_t::late, input_clock_t::lock, p, input_clock_t::pi_value, vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by EsOutVaControlLocked().

◆ input_clock_GetRate()

float input_clock_GetRate ( input_clock_t )

This function returns the current rate.

References input_clock_t::lock, input_clock_t::rate, vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by EsOutFrameNext().

◆ input_clock_GetState()

int input_clock_GetState ( input_clock_t ,
vlc_tick_t pi_stream_start,
vlc_tick_t pi_system_start,
vlc_tick_t pi_stream_duration,
vlc_tick_t pi_system_duration 
)

◆ input_clock_GetSystemOrigin()

void input_clock_GetSystemOrigin ( input_clock_t ,
vlc_tick_t pi_system,
vlc_tick_t pi_delay 
)

This function returns the original system value date and the delay for the current reference point (a valid reference point must have been set).

References input_clock_t::b_has_reference, input_clock_t::i_pts_delay, input_clock_t::lock, input_clock_t::ref, clock_point_t::system, vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by EsOutVaControlLocked().

◆ input_clock_GetWakeup()

vlc_tick_t input_clock_GetWakeup ( input_clock_t )

◆ input_clock_New()

input_clock_t* input_clock_New ( float  rate)

◆ input_clock_Reset()

void input_clock_Reset ( input_clock_t )

◆ input_clock_SetJitter()

void input_clock_SetJitter ( input_clock_t ,
vlc_tick_t  i_pts_delay,
int  i_cr_average 
)

◆ input_clock_Update()

vlc_tick_t input_clock_Update ( input_clock_t ,
vlc_object_t p_log,
bool  b_can_pace_control,
bool  b_buffering_allowed,
vlc_tick_t  i_clock,
vlc_tick_t  i_system 
)