gavl: Time

# Time

## Modules
| Software timer
## Defines
#define | GAVL_TIME_SCALE 1000000
#define | GAVL_TIME_UNDEFINED 0x8000000000000000LL
#define | GAVL_TIME_MAX 0x7fffffffffffffffLL
#define | gavl_seconds_to_time(s) (gavl_time_t)((s)*(double)(GAVL_TIME_SCALE))
| Convert seconds (as double) to a gavl time.
#define | gavl_time_to_seconds(t) ((double)(t)/(double)(GAVL_TIME_SCALE))
| Convert a gavl time to seconds (as double).
#define | GAVL_TIME_STRING_LEN 11
| Length of the string passed to gavl_time_prettyprint.
## Typedefs
typedef int64_t | gavl_time_t
| Times in gavl are 64 bit signed integers.
## Functions
gavl_time_t | gavl_samples_to_time (int samplerate, int64_t samples)
| Convert a number of samples to a time for a given samplerate.
int64_t | gavl_time_to_samples (int samplerate, gavl_time_t time)
| Convert a time to a number of audio samples for a given samplerate.
gavl_time_t | gavl_frames_to_time (int rate_num, int rate_den, int64_t frames)
| Convert a number of video frames to a time for a given framerate.
int64_t | gavl_time_to_frames (int rate_num, int rate_den, gavl_time_t time)
| Convert a time to a number of video frames for a given framerate.
int64_t | gavl_time_scale (int scale, gavl_time_t time)
| Convert a gavl time to a time scaled by another base.
gavl_time_t | gavl_time_unscale (int scale, int64_t time)
| Convert a time scaled by another base to a gavl time.
int64_t | gavl_time_rescale (int scale1, int scale2, int64_t time)
| Convert a time scaled by one base to a time scaled by another base.
void | gavl_time_delay (gavl_time_t *time)
| Sleep for a specified time.
void | gavl_time_prettyprint (gavl_time_t time, char str[GAVL_TIME_STRING_LEN])
| Convert a time to a string.

## Define Documentation

#define GAVL_TIME_SCALE 1000000

Generic time scale: Microsecond tics

#define GAVL_TIME_UNDEFINED 0x8000000000000000LL

Unknown or undefined time

#define GAVL_TIME_MAX 0x7fffffffffffffffLL

Maximum possible value

#define gavl_seconds_to_time | ( | s |  | ) | (gavl_time_t)((s)*(double)(GAVL_TIME_SCALE))

Convert seconds (as double) to a gavl time.

Parameters:

  | s | Seconds as double

Returns:
  Integer time scaled by GAVL_TIME_SCALE

#define gavl_time_to_seconds | ( | t |  | ) | ((double)(t)/(double)(GAVL_TIME_SCALE))

Convert a gavl time to seconds (as double).

Parameters:

  | t | Integer time scaled by GAVL_TIME_SCALE

Returns:
  Seconds as double

#define GAVL_TIME_STRING_LEN 11

Length of the string passed to gavl_time_prettyprint.

## Typedef Documentation

typedef int64_t gavl_time_t

Times in gavl are 64 bit signed integers.

## Function Documentation

gavl_time_t gavl_samples_to_time | ( | int | samplerate,
|  | int64_t | samples |
| ) |  |  |

Convert a number of samples to a time for a given samplerate.

Todo:
  Write this as an overflow save function

int64_t gavl_time_to_samples | ( | int | samplerate,
|  | gavl_time_t | time |
| ) |  |  |

Convert a time to a number of audio samples for a given samplerate.

Parameters:

  | samplerate | Samplerate
  | time | Time

Returns:
  Number of audio samples

Todo:
  Write this as an overflow save function

gavl_time_t gavl_frames_to_time | ( | int | rate_num,
|  | int | rate_den,
|  | int64_t | frames |
| ) |  |  |

Convert a number of video frames to a time for a given framerate.

Todo:
  Write this as an overflow save function

int64_t gavl_time_to_frames | ( | int | rate_num,
|  | int | rate_den,
|  | gavl_time_t | time |
| ) |  |  |

Convert a time to a number of video frames for a given framerate.

Parameters:

  | rate_num | Numerator of the framerate
  | rate_den | Denominator of the framerate
  | time | Time

Returns:
  Number of frames

Todo:
  Write this as an overflow save function

int64_t gavl_time_scale | ( | int | scale,
|  | gavl_time_t | time |
| ) |  |  |

Convert a gavl time to a time scaled by another base.

Parameters:

  | scale | Time scale
  | time | Time scaled by GAVL_TIME_SCALE

Returns:
  Time scaled by scale

Todo:
  Write this as an overflow save function

gavl_time_t gavl_time_unscale | ( | int | scale,
|  | int64_t | time |
| ) |  |  |

Convert a time scaled by another base to a gavl time.

Parameters:

  | scale | Time scale
  | time | Time scaled by scale

Returns:
  Time scaled by GAVL_TIME_SCALE

Todo:
  Write this as an overflow save function

int64_t gavl_time_rescale | ( | int | scale1,
|  | int | scale2,
|  | int64_t | time |
| ) |  |  |

Convert a time scaled by one base to a time scaled by another base.

Parameters:

  | scale1 | Initial time base
  | scale2 | New time base
  | time | Time scaled by scale1

Returns:
  Time scaled by scale2

Todo:
  Write this as an overflow save function

void gavl_time_delay | ( | gavl_time_t * | time | ) |

Sleep for a specified time.

Parameters:

  | time | Time after which execution of the current thread is resumed

void gavl_time_prettyprint | ( | gavl_time_t | time,
|  | char | str[GAVL_TIME_STRING_LEN] |
| ) |  |  |

Convert a time to a string.

Parameters:

  | time | Time to print
  | str | String

This prints a gavl_time into ASCII string if a format suitable for player displays. The format is: -hhh:mm:ss