There are two different representations of time:
scale over sampleSize, and
scale over sampleSize¶
The first representation of time uses value/scale/
sampleSize components, either separated, or combined in a TDB_TimeRecord structure. scale over
sampleSize defines the timebase. For example, to represent the NTSC standard of 29.97 frames per second,
sampleSize = 30000 / 1001. To represent the PAL standard of 25 frames per second, 25 / 1.
To represent the 24p standard of 23.976, 23976 / 1000, or 24000 / 1001. To represent most other timebases, use
sampleSize = 1, and scale is the frame rate (e.g. 15, 24, 30 fps, etc). Another way of thinking about scale and
sampleSize is that
sampleSize is the duration of a frame of video, and scale is that duration of a second of video.
value is the time in the timebase given by
sampleSize. So, for example, 30 frames with a sampleSize of 1001 have a value of 30030.
value to seconds, divide by scale. To convert
value to frames, divide by
Sometimes, as when handling audio-only media,
sampleSize refers to a sample of audio, and
sampleSize = 1. In this case, scale is the audio sampling rate (22050, 32000, 44100, 48000 Hz, etc).
Most newer areas of the API use a tick-based time value that is stored in a signed 64-bit integer. Variables that use this new format are of type PrTime. When a frame rate is represented as a PrTime, the frame rate is the number of ticks in a frame duration.
The current number of ticks per second must be retrieved using the callback in the Time Suite. This rate is guaranteed to be constant for the duration of the application’s run-time.