SMPTE timecode
SMPTE timecode is a standardized timing synchronization system developed by the Society of Motion Picture and Television Engineers (SMPTE) to label individual frames or fields of video and audio material with a numeric code in the format hours:minutes:seconds:frames (HH:MM:SS:FF), facilitating precise identification and editing in production workflows.[1] Defined primarily in SMPTE ST 12, it supports a range of frame rates including 23.98, 24, 25, 29.97, 30, 47.95, 48, 50, 59.94, and 60 frames per second (fps), with extensions in ST 12-3 for high frame rates up to 120 fps.[1] The system includes two main transmission formats: Longitudinal Timecode (LTC), an audio-like signal recorded on separate tracks, and Vertical Interval Timecode (VITC), embedded within the video signal's vertical blanking interval for readability during paused playback.[2][3] Originating in the late 1960s amid the rise of electronic videotape editing, SMPTE timecode evolved from earlier mechanical counters and control track pulses to address the need for frame-accurate synchronization in broadcast and film production.[4] Its development began in 1967 when EECO introduced a basic "hours:minutes:seconds:frames" method for 2-inch helical scan quad tapes, which was proposed as an industry standard in the SMPTE Journal in March 1970 and formally approved by the American National Standards Institute on April 2, 1975.[5] Over the decades, it has been updated to accommodate new technologies, such as non-drop-frame and drop-frame modes for NTSC's 29.97 fps to align with real-time clock accuracy by omitting specific frame numbers periodically.[3][4] At its core, SMPTE timecode uses an 80-bit binary coded decimal (BCD) structure per frame, featuring a 16-bit synchronization word for frame detection, 26 bits for the time-of-day value (supporting up to 24 hours), and 32 user bits for custom metadata like reel numbers or binary group flags.[3] Encoded via bi-phase mark modulation, LTC operates at frequencies around 1-2 kHz depending on frame rate, allowing devices to "chase" and lock to the signal for automation in editing suites, cameras, and lighting consoles.[3] VITC, meanwhile, employs a 90-bit format with error-checking CRC for robustness in video streams.[3] These elements ensure interoperability across professional equipment, from legacy analog systems to modern digital workflows, though ongoing efforts like the TLX project aim to extend capabilities for ultra-high frame rates and longer durations beyond 24 hours.[1][5] Widely adopted since the 1970s, SMPTE timecode revolutionized post-production by replacing imprecise cueing methods with repeatable frame references, enabling efficient synchronization of audio, video, and effects in television, film, and live events.[2][4] Today, it remains a foundational standard in the industry, supporting ancillary data transmission in ST 12-2 and high-frame-rate applications in ST 12-3, while user bits allow integration of additional production data for enhanced metadata management.[1]Core Principles
Timecode Format
SMPTE timecode represents time in a binary-coded decimal (BCD) format using the structure HH:MM:SS:FF, where HH denotes hours from 00 to 23 (encoded in 8 bits), MM and SS denote minutes and seconds from 00 to 59 (each in 8 bits), and FF denotes frames from 00 to 39 (in 6 BCD bits plus 2 flag bits, though the maximum value varies by frame rate).[3] This 32-bit time address allows precise labeling of media frames, with each BCD digit occupying 4 bits to represent decimal values, padding higher bits to zero where the maximum is less than 9 (e.g., hours tens uses only the lowest 2 bits for 0-2).[6] The bits are distributed non-contiguously within the word to interleave with user data, specifically: frames units (bits 0-3), frames tens (bits 8-9), seconds units (bits 16-19), seconds tens (bits 24-26), minutes units (bits 32-35), minutes tens (bits 40-42), hours units (bits 48-51), and hours tens (bits 56-57), totaling 26 bits for the digits plus integrated flag positions to reach 32 bits.[3] Within the time address allocation, specific flag bits provide operational metadata: the drop-frame flag at bit 10 signals whether frame dropping is active for non-integer frame rates, the color frame flag at bit 11 indicates color frame identification for certain video systems, and the bi-phase mark phase correction bit at position 27 ensures even parity in the encoded signal for error detection.[7] The binary group flag bits (BGF0 at bit 43, BGF1 at bit 59) define the format and interpretation of user bits, such as indicating an 8-bit character set or binary group start for metadata like dates or custom identifiers.[7] Complementing the time address, 32 user bits (organized as eight 4-bit binary groups at positions 4-7, 12-15, 20-23, 28-31, 36-39, 44-47, 52-55, and 60-63) allow for frame-specific metadata, including date codes, binary group identifiers, or application-defined data, often formatted as hexadecimal or ASCII characters.[3] The full 80-bit timecode word, as defined in the linear timecode (LTC) implementation, combines these elements: 32 bits for the time address (including flags), 32 user bits, and 16 synchronization bits (positions 64-79, fixed pattern 0011111111111101 binary) to mark word boundaries and enable direction detection in audio tracks.[6] This structure supports robust transmission, with the phase correction bit aiding error detection during biphase mark encoding, though no overall word parity is included.[3]| Component | Bit Positions | Description |
|---|---|---|
| Time Address (BCD + Flags) | 0-3, 8-11, 16-19, 24-27, 32-35, 40-43, 48-51, 56-59 | 26 BCD bits for HH:MM:SS:FF + 6 flags (drop-frame, color frame, phase correction, BGF0-1, reserved) |
| User Bits | 4-7, 12-15, 20-23, 28-31, 36-39, 44-47, 52-55, 60-63 | 32 bits (8 × 4-bit groups) for metadata |
| Sync Bits | 64-79 | 16 fixed bits for synchronization and phase inversion detection |