|
gavl
|
Timecode definitions. More...
Data Structures | |
| struct | gavl_timecode_format_t |
| Timecode format. More... | |
Macros | |
| #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
Referenced by gavl_timecode_prettyprint().
| #define GAVL_TIMECODE_STRING_LEN_SHORT 13 |
Length for a string into which a short timecode will be printed
Referenced by gavl_timecode_prettyprint_short().
| 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.
References GAVL_TIMECODE_STRING_LEN.
| 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
References GAVL_TIMECODE_STRING_LEN_SHORT.