Timecode is an electronic signal which labels video frames on video tape. The ideas for the format were invented by NASA for telemetry tapes tracking space missions. The concept was adopted by EECO in 1967 for video editing, and, after many folks had built similar (but in-compatible) systems, SMPTE created the standard in 1969. The European Broadcasting Union adopted the standard and it is now called SMPTE/EBU (referred to simply as "timecode").
Timecode may be recorded on tape in two ways:
Longitudinal Time Code, or LTC, is recorded on an audio channel or a dedicated "address" channel.
Vertical Interval Time Code or VITC, is recorded in the vertical interval of the video signal itself.
These two formats are similar as far as the edit information they contain.
Longitudinal Time Code (LTC) is an electronic signal that switches from one voltage to another, forming a string of pulses, or bits. Each one-second long chunk of this signal is "sliced" into 2400 parts (for NTSC) or 2000 parts (for PAL/SECAM). This makes 80 time code bits for each video frame:
NTSC 2400 bits/sec divided by 30 frames/sec = 80 bits/frame PAL/SECAM 2000 bits/sec divided by 25 frames/sec = 80 bits/frame
These 80 bits are given certain assignments according to the standard. There are these important groups of information:
The hours/minutes/seconds/frames
Drop-frame flag - Whether this timecode is Drop-frame
Color-frame Flag - Whether color-framing is intended
User bits - "leftover" bits available for user assignment.
"Sync word" - Tells an electronic reader where the frame information begins & ends and which direction the tape is moving.
"Sync bits" - Help verify (together with the sync word) the position of the data as the tape moves.
VITC (Vertical Interval Time Code) format adds 10 extra bits to each frame label. These add the following to the LTC list, above:
Additional "sync" bits between data bit groups.
Field bit (allows video-field indexing accuracy).
Cyclical Redundancy Check Code (CRC), used for error detection.
The hours/minutes/seconds/frames is the primary information we are interested in. This data is Drop-frame, Non-drop frame or EBU (25 frames/sec, PAL/SECAM) as indicated by the "drop-frame" flag.
The "sync word" and "sync bits" are the heart of how timecode works. As the tape moves, these bits instruct the electronic reader which direction the tape is moving, where the hours/minutes/seconds/frames, drop-frame bit, etc. are located and (if properly aligned on the tape) where the video frames themselves are located with respect to the timecode stream.
All of this is pretty clever, when you think about it. The tape is moving at an unknown speed in either direction as the machine is used, yet the timecode can be read at all times (given a good recording and properly functioning equipment). Note that, at microscopic levels, the tape is jumping and jittering across the reader heads, stopping, reversing direction, going into fast-forward, etc. The sync words and the design of the readers makes it all work! Cool.
NTSC timecode comes in two flavors - Non-drop frame and Drop-frame, and there is only one PAL/SECAM, sometimes called "EBU". These are usually displayed as:
Non-dropframe: 1:00:00:00 - colon in last position
Dropframe: 1:00:00;00 - semicolon in last position
PAL/SECAM: 1:00:00:00 - colon in last position
Non-dropframe: 1:00:00.00 - period in last position
Dropframe: 1:00:00,00 - comma in last position
PAL/SECAM: 1:00:00.00 - period in last position
NTSC - DROP Frame versus NON-DROP, and PAL (EBU)
NTSC video actually runs at 29.97 frames per second, not 30 fps, as is usually implied. If you label all the NTSC frames incrementally, as with NON-DROP FRAME, a 01:00:00:00 label (a colon in the last position indicates non-drop frame) will represent 108,000 video frames (from zero). 108,000 NTSC video frames actually takes 01:00:03:18 to play back. In other words, 01:00:00:00 in NON-DROP frame is not truly 1 hour, but 1 hour and 3 seconds, 18 frames.
This leads to the inconvenient fact that timecode calculations do not represent real-time. 2:00:00:00 minus 1:00:00:00 equals 1:00:00:00 in non-drop frame, BUT the running time of this duration is really 1:00:03:18.
Many people are very concerned with the actual running time. (Imagine a network making a 3 second & 18 frame error when broadcasting the Superbowl with advertisers paying $33,333 per second! (1995)) The drop-frame labeling scheme was designed to over-come the inaccuracy of non-drop frame labeling, and it is gospel in broadcasting.
The drop-frame format represents the NTSC running time accurately by "dropping out" some of the frame labels - specifically, 2 frame labels at the end of each minute except each 10th minute. This way, a display of drop-frame 01:00:00;00 (semicolon indicates drop-frame) represents 107,892 video frames, or exactly 1 hour of real time from zero.
No actual video frames are "dropped" (where could they go?) - only the timcode labels of the frames. At any point through the labeling sequence the timecode label is very close to the actual elasped time (from zero). Since the labels represent an accurate time-line, adding or subtracting drop-frame timecode results in an accurate calculation - 2:00:00;00 minus 1:00:00;00 equals 1:00:00;00 - one true hour of running time.
PAL and SECAM video run at precisely 25 frames per second so the DROP frame/NON-DROP frame issue is meaningless. 01:00:00:00 in EBU represents 90,000 PAL video frames- precisely 1 hour of running time.