Time¶
There are two different representations of time: scale over sampleSize, and
ticks.
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, scale / 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 scale over sampleSize. So, for
example, 30 frames with a sampleSize of 1001 have a value of 30030.
To convert value to seconds, divide by scale. To convert value to frames,
divide by sampleSize.
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).
PrTime¶
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.