Loading...
Searching...
No Matches
timecode.h File Reference

Timecode helpers header. More...

`#include <stdint.h>`
`#include "rational.h"`

Go to the source code of this file.

## Data Structures

struct | AVTimecode

## Macros

#define | AV_TIMECODE_STR_SIZE 23

## Enumerations

enum | AVTimecodeFlag { AV_TIMECODE_FLAG_DROPFRAME = 1<<0 , AV_TIMECODE_FLAG_24HOURSMAX = 1<<1 , AV_TIMECODE_FLAG_ALLOWNEGATIVE = 1<<2 }

## Functions

int | av_timecode_adjust_ntsc_framenum2 (int framenum, int fps)
| Adjust frame number for NTSC drop frame time code.
uint32_t | av_timecode_get_smpte_from_framenum (const AVTimecode *tc, int framenum)
| Convert frame number to SMPTE 12M binary representation.
uint32_t | av_timecode_get_smpte (AVRational rate, int drop, int hh, int mm, int ss, int ff)
| Convert sei info to SMPTE 12M binary representation.
char * | av_timecode_make_string (const AVTimecode *tc, char *buf, int framenum)
| Load timecode string in buf.
char * | av_timecode_make_smpte_tc_string2 (char *buf, AVRational rate, uint32_t tcsmpte, int prevent_df, int skip_field)
| Get the timecode string from the SMPTE timecode format.
char * | av_timecode_make_smpte_tc_string (char *buf, uint32_t tcsmpte, int prevent_df)
| Get the timecode string from the SMPTE timecode format.
char * | av_timecode_make_mpeg_tc_string (char *buf, uint32_t tc25bit)
| Get the timecode string from the 25-bit timecode format (MPEG GOP format).
int | av_timecode_init (AVTimecode *tc, AVRational rate, int flags, int frame_start, void *log_ctx)
| Init a timecode struct with the passed parameters.
int | av_timecode_init_from_components (AVTimecode *tc, AVRational rate, int flags, int hh, int mm, int ss, int ff, void *log_ctx)
| Init a timecode struct from the passed timecode components.
int | av_timecode_init_from_string (AVTimecode *tc, AVRational rate, const char *str, void *log_ctx)
| Parse timecode representation (hh:mm:ss[:;.
int | av_timecode_check_frame_rate (AVRational rate)
| Check if the timecode feature is available for the given frame rate.

## Detailed Description

Timecode helpers header.

Definition in file timecode.h.

## Macro Definition Documentation

## AV_TIMECODE_STR_SIZE

#define AV_TIMECODE_STR_SIZE 23

Definition at line 33 of file timecode.h.

## Enumeration Type Documentation

## AVTimecodeFlag

enum AVTimecodeFlag

Enumerator
AV_TIMECODE_FLAG_DROPFRAME | timecode is drop frame
AV_TIMECODE_FLAG_24HOURSMAX | timecode wraps after 24 hours
AV_TIMECODE_FLAG_ALLOWNEGATIVE | negative time values are allowed

Definition at line 35 of file timecode.h.

## Function Documentation

## av_timecode_adjust_ntsc_framenum2()

int av_timecode_adjust_ntsc_framenum2 | ( | int | framenum,
|  | int | fps
| ) |  |

Adjust frame number for NTSC drop frame time code.

Parameters

  framenum | frame number to adjust
  fps | frame per second, multiples of 30

Returns
  adjusted frame number

Warning
  adjustment is only valid for multiples of NTSC 29.97

## av_timecode_get_smpte_from_framenum()

uint32_t av_timecode_get_smpte_from_framenum | ( | const AVTimecode * | tc,
|  | int | framenum
| ) |  |

Convert frame number to SMPTE 12M binary representation.

Parameters

  tc | timecode data correctly initialized
  framenum | frame number

Returns
  the SMPTE binary representation

See SMPTE ST 314M-2005 Sec 4.4.2.2.1 "Time code pack (TC)" the format description as follows: bits 0-5: hours, in BCD(6bits) bits 6: BGF1 bits 7: BGF2 (NTSC) or FIELD (PAL) bits 8-14: minutes, in BCD(7bits) bits 15: BGF0 (NTSC) or BGF2 (PAL) bits 16-22: seconds, in BCD(7bits) bits 23: FIELD (NTSC) or BGF0 (PAL) bits 24-29: frames, in BCD(6bits) bits 30: drop frame flag (0: non drop, 1: drop) bits 31: color frame flag (0: unsync mode, 1: sync mode)

Note
  BCD numbers (6 or 7 bits): 4 or 5 lower bits for units, 2 higher bits for tens.
  Frame number adjustment is automatically done in case of drop timecode, you do NOT have to call av_timecode_adjust_ntsc_framenum2().
  The frame number is relative to tc->start.
  Color frame (CF) and binary group flags (BGF) bits are set to zero.

## av_timecode_get_smpte()

uint32_t av_timecode_get_smpte | ( | AVRational | rate,
|  | int | drop,
|  | int | hh,
|  | int | mm,
|  | int | ss,
|  | int | ff
| ) |  |

Convert sei info to SMPTE 12M binary representation.

Parameters

  rate | frame rate in rational form
  drop | drop flag
  hh | hour
  mm | minute
  ss | second
  ff | frame number

Returns
  the SMPTE binary representation

## av_timecode_make_string()

char * av_timecode_make_string | ( | const AVTimecode * | tc,
|  | char * | buf,
|  | int | framenum
| ) |  |

Load timecode string in buf.

Parameters

  tc | timecode data correctly initialized
  buf | destination buffer, must be at least AV_TIMECODE_STR_SIZE long
  framenum | frame number

Returns
  the buf parameter

Note
  Timecode representation can be a negative timecode and have more than 24 hours, but will only be honored if the flags are correctly set.
  The frame number is relative to tc->start.

## av_timecode_make_smpte_tc_string2()

char * av_timecode_make_smpte_tc_string2 | ( | char * | buf,
|  | AVRational | rate,
|  | uint32_t | tcsmpte,
|  | int | prevent_df,
|  | int | skip_field
| ) |  |

Get the timecode string from the SMPTE timecode format.

In contrast to av_timecode_make_smpte_tc_string this function supports 50/60 fps timecodes by using the field bit.

Parameters

  buf | destination buffer, must be at least AV_TIMECODE_STR_SIZE long
  rate | frame rate of the timecode
  tcsmpte | the 32-bit SMPTE timecode
  prevent_df | prevent the use of a drop flag when it is known the DF bit is arbitrary
  skip_field | prevent the use of a field flag when it is known the field bit is arbitrary (e.g. because it is used as PC flag)

Returns
  the buf parameter

## av_timecode_make_smpte_tc_string()

char * av_timecode_make_smpte_tc_string | ( | char * | buf,
|  | uint32_t | tcsmpte,
|  | int | prevent_df
| ) |  |

Get the timecode string from the SMPTE timecode format.

Parameters

  buf | destination buffer, must be at least AV_TIMECODE_STR_SIZE long
  tcsmpte | the 32-bit SMPTE timecode
  prevent_df | prevent the use of a drop flag when it is known the DF bit is arbitrary

Returns
  the buf parameter

## av_timecode_make_mpeg_tc_string()

char * av_timecode_make_mpeg_tc_string | ( | char * | buf,
|  | uint32_t | tc25bit
| ) |  |

Get the timecode string from the 25-bit timecode format (MPEG GOP format).

Parameters

  buf | destination buffer, must be at least AV_TIMECODE_STR_SIZE long
  tc25bit | the 25-bits timecode

Returns
  the buf parameter

## av_timecode_init()

int av_timecode_init | ( | AVTimecode * | tc,
|  | AVRational | rate,
|  | int | flags,
|  | int | frame_start,
|  | void * | log_ctx
| ) |  |

Init a timecode struct with the passed parameters.

Parameters

  tc | pointer to an allocated AVTimecode
  rate | frame rate in rational form
  flags | miscellaneous flags such as drop frame, +24 hours, ... (see AVTimecodeFlag)
  frame_start | the first frame number
  log_ctx | a pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct (used for av_log)

Returns
  0 on success, AVERROR otherwise

## av_timecode_init_from_components()

int av_timecode_init_from_components | ( | AVTimecode * | tc,
|  | AVRational | rate,
|  | int | flags,
|  | int | hh,
|  | int | mm,
|  | int | ss,
|  | int | ff,
|  | void * | log_ctx
| ) |  |

Init a timecode struct from the passed timecode components.

Parameters

  tc | pointer to an allocated AVTimecode
  rate | frame rate in rational form
  flags | miscellaneous flags such as drop frame, +24 hours, ... (see AVTimecodeFlag)
  hh | hours
  mm | minutes
  ss | seconds
  ff | frames
  log_ctx | a pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct (used for av_log)

Returns
  0 on success, AVERROR otherwise

## av_timecode_init_from_string()

int av_timecode_init_from_string | ( | AVTimecode * | tc,
|  | AVRational | rate,
|  | const char * | str,
|  | void * | log_ctx
| ) |  |

Parse timecode representation (hh:mm:ss[:;.

]ff).

Parameters

  tc | pointer to an allocated AVTimecode
  rate | frame rate in rational form
  str | timecode string which will determine the frame start
  log_ctx | a pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct (used for av_log).

Returns
  0 on success, AVERROR otherwise

## av_timecode_check_frame_rate()

int av_timecode_check_frame_rate | ( | AVRational | rate | ) |

Check if the timecode feature is available for the given frame rate.

Returns
  0 if supported, <0 otherwise