CORE I/O displays video positions and durations as SMPTE timecode in the format HH:MM:SS:FF. The FF field counts from 00 to one frame below the nominal frame rate.
How timecode is displayed
CORE I/O stores positions as frame indices and formats them as HH:MM:SS:FF for display. Stepping one frame therefore changes the final field by one.
Timecode wraps at midnight. For example, a recording that begins at 23:59:56:00 can continue at 00:00:02:00. CORE I/O calculates a duration across midnight using the shorter interval.
Durations are inclusive. The duration from an IN point to an OUT point counts both marked frames: OUT minus IN plus one. The Loop Segment Exporter uses this convention.
Enter timecode values in the same format, for example 00:10:00:00. CORE I/O rejects a value if its minutes, seconds, or frames field is outside the valid range.
Drop-frame and non-drop-frame
At the NTSC rates of 29.97, 59.94, and 119.88 frames per second, counting as exactly 30, 60, or 120 frames per second would make the timecode drift from clock time by approximately 3.6 seconds per hour.
Drop-frame timecode compensates by omitting frame numbers, not video frames. It omits the first 2, 4, or 8 frame numbers of every minute except minutes 00, 10, 20, 30, 40, and 50.
CORE I/O follows the SMPTE convention and places a semicolon before the frame field in drop-frame timecode, for example 01:00:00;02. A colon, as in 01:00:00:02, always indicates non-drop-frame timecode. When you enter a timecode, the separator determines how CORE I/O interprets it.
Drop-frame notation applies only to the 30, 60, and 120 frame-rate families. At any other rate, CORE I/O uses non-drop-frame timecode even if the file contains a drop-frame flag.
Supported frame rates
CORE I/O interprets the following frame rates precisely so that frame counts remain accurate:
| Written as | Understood as |
|---|---|
| 23.976, 23.98 | 24000/1001 |
| 29.97 | 30000/1001 |
| 47.952 | 48000/1001 |
| 59.94 | 60000/1001 |
| 119.88 | 120000/1001 |
| 60000/1001 and other fractions | The exact fraction |
| 24, 25, 30, 50, 60, and other whole numbers | The whole number |
If the frame rate is missing or unreadable, CORE I/O uses 25 fps. Timecode uses the corresponding nominal rate of 24, 30, 48, 60, or 120 and applies the drop-frame rule described above. Calculations that convert seconds to frames use the exact rate.
Why durations can differ
The File Browser displays Original Duration and Duration for each file. Duration represents the marked range after you set IN and OUT points. Both values come from the server, which counts the frames in the file.
A player such as the Single Player receives a file length in seconds together with its start and end timecodes. A container's length is rarely an exact multiple of the frame duration, and its end timecode is derived from that length. Recalculating the frame count from either value can therefore differ from the server count by a few frames. A difference of approximately three frames has been observed with a 1080p59.94 clip.
To prevent this difference for the full clip, the server also sends the duration as a formatted timecode. The player uses this value unchanged for Clip Duration and the full-clip Duration, so these values match the File Browser. If the player calculates a duration from custom IN and OUT points, it counts frames between its own positions. Another tool can calculate a slightly different duration for the same range.
Good to know
- A timecode entered or displayed in a widget refers to that widget's file or flow and its frame rate. The same timecode represents a different number of frames at different rates.
- The Record Viewer receives recording timecode from the flow's Timecode Source: computer time, LTC over audio, capture card LTC, or SDI embedded.
- The Record Timeline displays wall-clock time in your time zone, not timecode. See Record Timeline.