Timecode definitions. More...
Data Structures | |
struct | gavl_timecode_format_t |
Timecode format. More... | |
Defines | |
#define | GAVL_TIMECODE_SIGN_MASK (0x1LL<<62) |
If 1, timecode is negative. | |
#define | GAVL_TIMECODE_INVALID_MASK (0x1LL<<63) |
If 1, timecode is invalid. | |
#define | GAVL_TIMECODE_DROP_FRAME (1<<0) |
NTSC drop frame is used. | |
#define | GAVL_TIMECODE_UNDEFINED GAVL_TIMECODE_INVALID_MASK |
Convenience macro. | |
#define | GAVL_TIMECODE_STRING_LEN 26 |
#define | GAVL_TIMECODE_STRING_LEN_SHORT 13 |
Typedefs | |
typedef uint64_t | gavl_timecode_t |
Typedef for timecodes. | |
Functions | |
GAVL_PUBLIC void | gavl_timecode_format_copy (gavl_timecode_format_t *dst, const gavl_timecode_format_t *src) |
Copy one timecode format to another. | |
GAVL_PUBLIC void | gavl_timecode_to_hmsf (gavl_timecode_t tc, int *hours, int *minutes, int *seconds, int *frames) |
Extract the time part of the timecode. | |
GAVL_PUBLIC void | gavl_timecode_to_ymd (gavl_timecode_t tc, int *year, int *month, int *day) |
Extract the date part of the timecode. | |
GAVL_PUBLIC void | gavl_timecode_from_hmsf (gavl_timecode_t *tc, int hours, int minutes, int seconds, int frames) |
Set the time part of the timecode. | |
GAVL_PUBLIC void | gavl_timecode_from_ymd (gavl_timecode_t *tc, int year, int month, int day) |
Set the date part of the timecode. | |
GAVL_PUBLIC int64_t | gavl_timecode_to_framecount (const gavl_timecode_format_t *tf, gavl_timecode_t tc) |
Get the frame count from the timecode. | |
GAVL_PUBLIC gavl_timecode_t | gavl_timecode_from_framecount (const gavl_timecode_format_t *tf, int64_t fc) |
Get a timecode from the frame count. | |
GAVL_PUBLIC void | gavl_timecode_dump (const gavl_timecode_format_t *tf, gavl_timecode_t tc) |
Dump a timecode to stderr. | |
GAVL_PUBLIC void | gavl_timecode_prettyprint (const gavl_timecode_format_t *tf, gavl_timecode_t tc, char str[GAVL_TIMECODE_STRING_LEN]) |
Print a full timecode into a string. | |
GAVL_PUBLIC void | gavl_timecode_prettyprint_short (gavl_timecode_t tc, char str[GAVL_TIMECODE_STRING_LEN_SHORT]) |
Print a short timecode into a string. |
Timecode definitions.
Timecodes are usually associated with video frames and represent a unique time (e.g. Wall clock time) within the whole footage.
Since 1.1.0
#define GAVL_TIMECODE_SIGN_MASK (0x1LL<<62) |
If 1, timecode is negative.
#define GAVL_TIMECODE_INVALID_MASK (0x1LL<<63) |
If 1, timecode is invalid.
#define GAVL_TIMECODE_DROP_FRAME (1<<0) |
NTSC drop frame is used.
#define GAVL_TIMECODE_UNDEFINED GAVL_TIMECODE_INVALID_MASK |
Convenience macro.
#define GAVL_TIMECODE_STRING_LEN 26 |
Length for a string into which a timecode will be printed
#define GAVL_TIMECODE_STRING_LEN_SHORT 13 |
Length for a string into which a short timecode will be printed
typedef uint64_t gavl_timecode_t |
Typedef for timecodes.
GAVL_PUBLIC void gavl_timecode_format_copy | ( | gavl_timecode_format_t * | dst, | |
const gavl_timecode_format_t * | src | |||
) |
Copy one timecode format to another.
dst | Destination format | |
src | Source format |
GAVL_PUBLIC void gavl_timecode_to_hmsf | ( | gavl_timecode_t | tc, | |
int * | hours, | |||
int * | minutes, | |||
int * | seconds, | |||
int * | frames | |||
) |
Extract the time part of the timecode.
tc | A timecode | |
hours | If non NULL, returns the hours | |
minutes | If non NULL, returns the minutes | |
seconds | If non NULL, returns the seconds | |
frames | If non NULL, returns the frames |
GAVL_PUBLIC void gavl_timecode_to_ymd | ( | gavl_timecode_t | tc, | |
int * | year, | |||
int * | month, | |||
int * | day | |||
) |
Extract the date part of the timecode.
tc | A timecode | |
year | If non NULL, returns the year | |
month | If non NULL, returns the month | |
day | If non NULL, returns the day |
GAVL_PUBLIC void gavl_timecode_from_hmsf | ( | gavl_timecode_t * | tc, | |
int | hours, | |||
int | minutes, | |||
int | seconds, | |||
int | frames | |||
) |
Set the time part of the timecode.
tc | A timecode | |
hours | The hours | |
minutes | The minutes | |
seconds | The seconds | |
frames | The frames |
GAVL_PUBLIC void gavl_timecode_from_ymd | ( | gavl_timecode_t * | tc, | |
int | year, | |||
int | month, | |||
int | day | |||
) |
Set the date part of the timecode.
tc | A timecode | |
year | The year | |
month | The month | |
day | The day |
GAVL_PUBLIC int64_t gavl_timecode_to_framecount | ( | const gavl_timecode_format_t * | tf, | |
gavl_timecode_t | tc | |||
) |
Get the frame count from the timecode.
tf | The timecode format | |
tc | A timecode |
If the time is larger than 24 hours, the framecount is calculated from 00:00:00, January 1, 1970
GAVL_PUBLIC gavl_timecode_t gavl_timecode_from_framecount | ( | const gavl_timecode_format_t * | tf, | |
int64_t | fc | |||
) |
Get a timecode from the frame count.
tf | The timecode format | |
fc | The frame count |
If the date fields are non-zero, the framecount is calculated from 00:00:00, January 1, 1970
GAVL_PUBLIC void gavl_timecode_dump | ( | const gavl_timecode_format_t * | tf, | |
gavl_timecode_t | tc | |||
) |
Dump a timecode to stderr.
tf | The timecode format | |
tc | A timecode |
This is used mainly for debugging
GAVL_PUBLIC void gavl_timecode_prettyprint | ( | const gavl_timecode_format_t * | tf, | |
gavl_timecode_t | tc, | |||
char | str[GAVL_TIMECODE_STRING_LEN] | |||
) |
Print a full timecode into a string.
tf | The timecode format | |
tc | A timecode | |
str | String where the timecode will be printed |
This prints the full timecode (including calendar date if available). For real-life applications, you might want to try gavl_timecode_prettyprint_short instead.
GAVL_PUBLIC void gavl_timecode_prettyprint_short | ( | gavl_timecode_t | tc, | |
char | str[GAVL_TIMECODE_STRING_LEN_SHORT] | |||
) |
Print a short timecode into a string.
tc | A timecode | |
str | String where the timecode will be printed |
Since 1.1.1