VLC  4.0.0-dev
Data Structures | Macros | Typedefs | Functions
vlc_tick.h File Reference
Include dependency graph for vlc_tick.h:

Go to the source code of this file.

Data Structures

struct  date_t
 Timestamps without long-term rounding errors. More...


#define VLC_TICK_FROM_SEC(sec)   (CLOCK_FREQ * (sec))
#define SEC_FROM_VLC_TICK(vtk)   ((vtk) / CLOCK_FREQ)
#define vlc_tick_from_sec(sec)
#define VLC_TICK_FROM_MS(ms)   ((CLOCK_FREQ / INT64_C(1000)) * (ms))
#define MS_FROM_VLC_TICK(vtk)   ((vtk) / (CLOCK_FREQ / INT64_C(1000)))
#define VLC_TICK_FROM_US(us)   ((CLOCK_FREQ / INT64_C(1000000)) * (us))
#define US_FROM_VLC_TICK(vtk)   ((vtk) / (CLOCK_FREQ / INT64_C(1000000)))
#define VLC_TICK_FROM_NS(ns)   ((ns) * (CLOCK_FREQ / (INT64_C(1000000000))))
#define NS_FROM_VLC_TICK(vtk)   ((vtk) / (CLOCK_FREQ / (INT64_C(1000000000))))
#define MSFTIME_FROM_SEC(sec)   (INT64_C(10000000) * (sec)) /* seconds in msftime_t */
#define MSFTIME_FROM_MS(sec)   (INT64_C(10000) * (sec)) /* milliseconds in msftime_t */
#define VLC_TICK_FROM_MSFTIME(msft)   ((msft) * (CLOCK_FREQ / INT64_C(10000000))
#define MSFTIME_FROM_VLC_TICK(vtk)   ((vtk) / (CLOCK_FREQ / INT64_C(10000000))
#define vlc_tick_from_timeval(tv)   (vlc_tick_from_sec( (tv)->tv_sec ) + VLC_TICK_FROM_US( (tv)->tv_usec ))
#define vlc_tick_from_timespec(tv)   (vlc_tick_from_sec( (tv)->tv_sec ) + VLC_TICK_FROM_NS( (tv)->tv_nsec ))
#define MSTRTIME_MAX_SIZE   22


typedef int64_t vlc_tick_t
 High precision date or time interval. More...
typedef vlc_tick_t mtime_t
typedef int64_t msftime_t


static vlc_tick_t vlc_tick_from_seci (int64_t sec)
static vlc_tick_t vlc_tick_from_secf (double secf)
static double secf_from_vlc_tick (vlc_tick_t vtk)
static vlc_tick_t vlc_tick_rate_duration (float frame_rate)
static vlc_tick_t vlc_tick_from_samples (int64_t samples, int samp_rate)
static int64_t samples_from_vlc_tick (vlc_tick_t t, int samp_rate)
static vlc_tick_t vlc_tick_from_frac (uint64_t num, uint64_t den)
struct timespec timespec_from_vlc_tick (vlc_tick_t date)
VLC_EXPORT char * secstotimestr (char *psz_buffer, int32_t secs)
 Convert seconds to a time in the format h:mm:ss. More...
VLC_EXPORT void date_Init (date_t *restrict date, uint32_t num, uint32_t den)
 Initializes a date_t. More...
VLC_EXPORT void date_Change (date_t *restrict date, uint32_t num, uint32_t den)
 Changes the rate of a date_t. More...
static void date_Set (date_t *restrict date, vlc_tick_t value)
 Sets the exact timestamp of a date_t. More...
static vlc_tick_t date_Get (const date_t *restrict date)
 Gets the current timestamp from a date_t. More...
VLC_EXPORT vlc_tick_t date_Increment (date_t *restrict date, uint32_t count)
 Increments a date. More...
VLC_EXPORT vlc_tick_t date_Decrement (date_t *restrict date, uint32_t count)
 Decrements a date. More...
VLC_EXPORT uint64_t NTPtime64 (void)

Macro Definition Documentation


#define MS_FROM_VLC_TICK (   vtk)    ((vtk) / (CLOCK_FREQ / INT64_C(1000)))


#define MSFTIME_FROM_MS (   sec)    (INT64_C(10000) * (sec)) /* milliseconds in msftime_t */


#define MSFTIME_FROM_SEC (   sec)    (INT64_C(10000000) * (sec)) /* seconds in msftime_t */


#define MSFTIME_FROM_VLC_TICK (   vtk)    ((vtk) / (CLOCK_FREQ / INT64_C(10000000))


#define MSTRTIME_MAX_SIZE   22


#define NS_FROM_VLC_TICK (   vtk)    ((vtk) / (CLOCK_FREQ / (INT64_C(1000000000))))


#define SEC_FROM_VLC_TICK (   vtk)    ((vtk) / CLOCK_FREQ)


#define US_FROM_VLC_TICK (   vtk)    ((vtk) / (CLOCK_FREQ / INT64_C(1000000)))


#define VLC_TICK_FROM_MS (   ms)    ((CLOCK_FREQ / INT64_C(1000)) * (ms))


#define VLC_TICK_FROM_MSFTIME (   msft)    ((msft) * (CLOCK_FREQ / INT64_C(10000000))


#define VLC_TICK_FROM_NS (   ns)    ((ns) * (CLOCK_FREQ / (INT64_C(1000000000))))


#define VLC_TICK_FROM_SEC (   sec)    (CLOCK_FREQ * (sec))

◆ vlc_tick_from_sec

#define vlc_tick_from_sec (   sec)
_Generic((sec), \
double: vlc_tick_from_secf(sec), \
float: vlc_tick_from_secf(sec), \
default: vlc_tick_from_seci(sec) )

◆ vlc_tick_from_timespec

#define vlc_tick_from_timespec (   tv)    (vlc_tick_from_sec( (tv)->tv_sec ) + VLC_TICK_FROM_NS( (tv)->tv_nsec ))

◆ vlc_tick_from_timeval

#define vlc_tick_from_timeval (   tv)    (vlc_tick_from_sec( (tv)->tv_sec ) + VLC_TICK_FROM_US( (tv)->tv_usec ))


#define VLC_TICK_FROM_US (   us)    ((CLOCK_FREQ / INT64_C(1000000)) * (us))

Typedef Documentation

◆ msftime_t

typedef int64_t msftime_t

◆ mtime_t

◆ vlc_tick_t

typedef int64_t vlc_tick_t

High precision date or time interval.

Store a high precision date or time interval. The maximum precision is the microsecond, and a 64 bits integer is used to avoid overflows (maximum time interval is then 292271 years, which should be long enough for any video). Dates are stored as microseconds since a common date (usually the epoch). Note that date and time intervals can be manipulated using regular arithmetic operators, and that no special functions are required.

Function Documentation

◆ NTPtime64()

VLC_EXPORT uint64_t NTPtime64 ( void  )
NTP 64-bits timestamp in host byte order.

References TIME_UTC, timespec_get(), timespec::tv_nsec, and timespec::tv_sec.

Referenced by vlc_rand_bytes().

◆ samples_from_vlc_tick()

static int64_t samples_from_vlc_tick ( vlc_tick_t  t,
int  samp_rate 

◆ secf_from_vlc_tick()

static double secf_from_vlc_tick ( vlc_tick_t  vtk)

References CLOCK_FREQ.

◆ secstotimestr()

VLC_EXPORT char* secstotimestr ( char *  psz_buffer,
int32_t  secs 

Convert seconds to a time in the format h:mm:ss.

This function is provided for any interface function which need to print a time string in the format h:mm:ss date.

secsthe date to be converted
psz_buffershould be a buffer at least MSTRTIME_MAX_SIZE characters
psz_buffer is returned so this can be used as printf parameter.

References MSTRTIME_MAX_SIZE, secstotimestr(), and unlikely.

Referenced by input_title_GetName(), secstotimestr(), and vlc_player_osd_Position().

◆ timespec_from_vlc_tick()

struct timespec timespec_from_vlc_tick ( vlc_tick_t  date)

◆ vlc_tick_from_frac()

static vlc_tick_t vlc_tick_from_frac ( uint64_t  num,
uint64_t  den 

◆ vlc_tick_from_samples()

static vlc_tick_t vlc_tick_from_samples ( int64_t  samples,
int  samp_rate 

◆ vlc_tick_from_secf()

static vlc_tick_t vlc_tick_from_secf ( double  secf)

References CLOCK_FREQ.

◆ vlc_tick_from_seci()

static vlc_tick_t vlc_tick_from_seci ( int64_t  sec)

References CLOCK_FREQ.

◆ vlc_tick_rate_duration()

static vlc_tick_t vlc_tick_rate_duration ( float  frame_rate)

References CLOCK_FREQ.

static vlc_tick_t vlc_tick_from_secf(double secf)
Definition: vlc_tick.h:76
static vlc_tick_t vlc_tick_from_seci(int64_t sec)
Definition: vlc_tick.h:71