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).


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.