| VLC
    3.0.18
    | 

| Data Structures | |
| struct | average_t | 
| This structure holds long term average.  More... | |
| struct | clock_point_t | 
| struct | input_clock_t | 
| Macros | |
| #define | CR_MAX_GAP (60 * CLOCK_FREQ) | 
| #define | CR_MEAN_PTS_GAP (300000) | 
| #define | CR_BUFFERING_RATE (48) | 
| #define | CR_BUFFERING_TARGET (100000) | 
| #define | INPUT_CLOCK_LATE_COUNT (3) | 
| Functions | |
| static void | AvgInit (average_t *, int i_divider) | 
| static void | AvgClean (average_t *) | 
| static void | AvgReset (average_t *) | 
| static void | AvgUpdate (average_t *, mtime_t i_value) | 
| static mtime_t | AvgGet (average_t *) | 
| static void | AvgRescale (average_t *, int i_divider) | 
| static clock_point_t | clock_point_Create (mtime_t i_stream, mtime_t i_system) | 
| static mtime_t | ClockStreamToSystem (input_clock_t *, mtime_t i_stream) | 
| static mtime_t | ClockSystemToStream (input_clock_t *, mtime_t i_system) | 
| static mtime_t | ClockGetTsOffset (input_clock_t *cl) | 
| It returns timestamp display offset due to ref/last modfied on rate changes It ensures that currently converted dates are not changed.  More... | |
| input_clock_t * | input_clock_New (int i_rate) | 
| This function creates a new input_clock_t.  More... | |
| void | input_clock_Delete (input_clock_t *cl) | 
| This function destroys a input_clock_t created by input_clock_New.  More... | |
| void | input_clock_Update (input_clock_t *cl, vlc_object_t *p_log, bool *pb_late, bool b_can_pace_control, bool b_buffering_allowed, mtime_t i_ck_stream, mtime_t i_ck_system) | 
| This function will update a input_clock_t with a new clock reference point.  More... | |
| void | input_clock_Reset (input_clock_t *cl) | 
| This function will reset the drift of a input_clock_t.  More... | |
| void | input_clock_ChangeRate (input_clock_t *cl, int i_rate) | 
| This functions allows changing the actual reading speed.  More... | |
| void | input_clock_ChangePause (input_clock_t *cl, bool b_paused, mtime_t i_date) | 
| This function allows changing the pause status.  More... | |
| mtime_t | input_clock_GetWakeup (input_clock_t *cl) | 
| This functions will return a deadline used to control the reading speed.  More... | |
| int | input_clock_ConvertTS (vlc_object_t *p_object, input_clock_t *cl, int *pi_rate, mtime_t *pi_ts0, mtime_t *pi_ts1, mtime_t i_ts_bound) | 
| This function converts a pair of timestamp from stream clock to system clock.  More... | |
| int | input_clock_GetRate (input_clock_t *cl) | 
| This function returns the current rate.  More... | |
| int | input_clock_GetState (input_clock_t *cl, mtime_t *pi_stream_start, mtime_t *pi_system_start, mtime_t *pi_stream_duration, mtime_t *pi_system_duration) | 
| This function returns current clock state or VLC_EGENERIC if there is not a reference point.  More... | |
| void | input_clock_ChangeSystemOrigin (input_clock_t *cl, bool b_absolute, mtime_t i_system) | 
| This function allows rebasing the original system value date (a valid reference point must have been set).  More... | |
| void | input_clock_GetSystemOrigin (input_clock_t *cl, mtime_t *pi_system, mtime_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_SetJitter (input_clock_t *cl, mtime_t i_pts_delay, int i_cr_average) | 
| This function allows the set the minimal configuration for the jitter estimation algo.  More... | |
| mtime_t | input_clock_GetJitter (input_clock_t *cl) | 
| This function returns an estimation of the pts_delay needed to avoid rebufferization.  More... | |
| #define CR_BUFFERING_RATE (48) | 
| #define CR_BUFFERING_TARGET (100000) | 
| #define CR_MAX_GAP (60 * CLOCK_FREQ) | 
| #define CR_MEAN_PTS_GAP (300000) | 
| #define INPUT_CLOCK_LATE_COUNT (3) | 
| 
 | static | 
References input_clock_t::i_pts_delay, input_clock_t::i_rate, and INPUT_RATE_DEFAULT.
Referenced by input_clock_Delete().
Referenced by input_clock_Update().
| 
 | static | 
Referenced by input_clock_New().
| 
 | static | 
| 
 | static | 
Referenced by AvgUpdate(), and input_clock_Update().
References AvgReset(), and average_t::i_divider.
Referenced by input_clock_Update().
| 
 | inlinestatic | 
Referenced by input_clock_New(), and input_clock_Update().
| 
 | static | 
It returns timestamp display offset due to ref/last modfied on rate changes It ensures that currently converted dates are not changed.
References input_clock_t::b_has_reference, input_clock_t::i_rate, clock_point_t::i_stream, clock_point_t::i_system, INPUT_RATE_DEFAULT, and input_clock_t::ref.
| 
 | static | 
Referenced by input_clock_Update().
| 
 | static | 
References input_clock_t::b_has_reference, input_clock_t::i_rate, clock_point_t::i_stream, clock_point_t::i_system, INPUT_RATE_DEFAULT, input_clock_t::ref, and VLC_TS_INVALID.
Referenced by input_clock_Update().
| void input_clock_ChangePause | ( | input_clock_t * | cl, | 
| bool | b_paused, | ||
| mtime_t | i_date | ||
| ) | 
This function allows changing the pause status.
Referenced by EsOutProgramAdd().
| void input_clock_ChangeRate | ( | input_clock_t * | cl, | 
| int | i_rate | ||
| ) | 
This functions allows changing the actual reading speed.
| void input_clock_ChangeSystemOrigin | ( | input_clock_t * | , | 
| bool | b_absolute, | ||
| mtime_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.
Referenced by EsOutControlLocked().
| int input_clock_ConvertTS | ( | vlc_object_t * | , | 
| input_clock_t * | , | ||
| int * | pi_rate, | ||
| mtime_t * | pi_ts0, | ||
| mtime_t * | pi_ts1, | ||
| mtime_t | i_ts_bound | ||
| ) | 
This function converts a pair of timestamp from stream clock to system clock.
If pi_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 mdate() + 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.
< Unspecified error
< Unspecified error
< No error
Referenced by DecoderGetDisplayDate().
| void input_clock_Delete | ( | input_clock_t * | cl | ) | 
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 EsOutProgramDel().
| mtime_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.
Referenced by EsOutControlLocked().
| int input_clock_GetRate | ( | input_clock_t * | cl | ) | 
This function returns the current rate.
Referenced by DecoderGetDisplayRate().
| int input_clock_GetState | ( | input_clock_t * | cl, | 
| mtime_t * | pi_stream_start, | ||
| mtime_t * | pi_system_start, | ||
| mtime_t * | pi_stream_duration, | ||
| mtime_t * | pi_system_duration | ||
| ) | 
This function returns current clock state or VLC_EGENERIC if there is not a reference point.
< Unspecified error
< No error
References input_clock_t::i_rate, input_clock_t::lock, vlc_mutex_lock(), and vlc_mutex_unlock().
| void input_clock_GetSystemOrigin | ( | input_clock_t * | cl, | 
| mtime_t * | pi_system, | ||
| mtime_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).
Referenced by EsOutControlLocked().
| mtime_t input_clock_GetWakeup | ( | input_clock_t * | cl | ) | 
This functions will return a deadline used to control the reading speed.
| input_clock_t* input_clock_New | ( | int | i_rate | ) | 
This function creates a new input_clock_t.
You must use input_clock_Delete to delete it once unused.
References AvgInit(), input_clock_t::b_has_external_clock, input_clock_t::b_has_reference, input_clock_t::b_paused, clock_point_Create(), input_clock_t::drift, input_clock_t::i_buffering_duration, input_clock_t::i_index, input_clock_t::i_next_drift_update, input_clock_t::i_pause_date, input_clock_t::i_pts_delay, input_clock_t::i_rate, input_clock_t::i_ts_max, INPUT_CLOCK_LATE_COUNT, input_clock_t::last, input_clock_t::late, input_clock_t::lock, input_clock_t::pi_value, input_clock_t::ref, vlc_mutex_init(), and VLC_TS_INVALID.
Referenced by EsOutProgramAdd().
| void input_clock_Reset | ( | input_clock_t * | ) | 
This function will reset the drift of a input_clock_t.
The actual jitter estimation will not be reseted by it.
Referenced by EsOutControlLocked().
| void input_clock_SetJitter | ( | input_clock_t * | cl, | 
| mtime_t | i_pts_delay, | ||
| int | i_cr_average | ||
| ) | 
This function allows the set the minimal configuration for the jitter estimation algo.
Referenced by EsOutControlLocked(), and EsOutProgramAdd().
| void input_clock_Update | ( | input_clock_t * | , | 
| vlc_object_t * | p_log, | ||
| bool * | pb_late, | ||
| bool | b_can_pace_control, | ||
| bool | b_buffering_allowed, | ||
| mtime_t | i_clock, | ||
| mtime_t | i_system | ||
| ) | 
This function will update a input_clock_t with a new clock reference point.
It will also tell if the clock point is late regarding our buffering.
| b_buffering_allowed | tells if we are allowed to bufferize more data in advanced (if possible). | 
References AvgGet(), AvgReset(), AvgUpdate(), input_clock_t::b_has_external_clock, input_clock_t::b_has_reference, CLOCK_FREQ, clock_point_Create(), ClockStreamToSystem(), ClockSystemToStream(), CR_BUFFERING_RATE, CR_BUFFERING_TARGET, CR_MAX_GAP, CR_MEAN_PTS_GAP, input_clock_t::drift, input_clock_t::i_buffering_duration, input_clock_t::i_index, input_clock_t::i_next_drift_update, input_clock_t::i_pts_delay, clock_point_t::i_stream, input_clock_t::i_ts_max, INPUT_CLOCK_LATE_COUNT, input_clock_t::last, input_clock_t::late, input_clock_t::lock, msg_Warn, input_clock_t::pi_value, input_clock_t::ref, vlc_mutex_lock(), and VLC_TS_INVALID.
Referenced by EsOutControlLocked().
 1.8.16
 1.8.16