Vertical interval timecode
Vertical Interval TimeCode (VITC, pronounced "vitsee") is a form of SMPTE timecode embedded as a pair of black-and-white bars in a video signal. These lines are typically inserted into the vertical blanking interval of the video signal. There can be more than one VITC pair in a single frame of video: this can be used to encode extra data that will not fit in a standard timecode frame.
VITC contains the same payload as SMPTE linear timecode frame embedded in a new frame structure with extra synchronization bits and an error-detection checksum. The VITC code is always repeated on two adjacent video lines, one in each field. This internal redundancy is exploited by VITC readers, in addition to the standard timecode "flywheel" algorithm.
A video frame may contain more than one VITC code if necessary, recorded on different line-pairs. This is often used in production, where different entities may want to encode different sets of time-code metadata on the same tape.
As a practical matter, VITC can be more 'frame-accurate' than Linear timecode (LTC), particularly at very slow tape speeds on analog formats. LTC readers can lose track of code at slow jog speeds whereas VITC can be read frame-by-frame if need be. At high speeds (FF/REW), the VITC is often unreadable due to image distortions, so the LTC is often used instead. Some VCRs have an auto selection between the two formats to provide the highest accuracy.
VITC is 90 bits long: 32 bits of time code, 32 bits of user data, 18 synchronization bits, and 8 bits of checksum:
Bit | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 |
---|---|---|---|---|---|---|---|---|---|---|
0x | 1 | 0 | 1 | 2 | 4 | 8 | User bits 1 | |||
Frame number (0–23, 24, or 29) | ||||||||||
1x | 1 | 0 | User bits 2 | |||||||
10 | 20 | D | C | |||||||
2x | 1 | 0 | 1 | 2 | 4 | 8 | User bits 3 | |||
Seconds (0–59) | ||||||||||
3x | 1 | 0 | User bits 4 | |||||||
10 | 20 | 40 | P | |||||||
4x | 1 | 0 | 1 | 2 | 4 | 8 | User bits 5 | |||
Minutes (0–59) | ||||||||||
5x | 1 | 0 | User bits 6 | |||||||
10 | 20 | 40 | F1 | |||||||
6x | 1 | 0 | 1 | 2 | 4 | 8 | User bits 7 | |||
Hours (0–23) | ||||||||||
7x | 1 | 0 | User bits 8 | |||||||
10 | 20 | 0 | F2 | |||||||
8x | 1 | 0 | Vertical parity (g(x) = x8+1) | |||||||
Sync | Timecode | User bits |
- Bit 14 is set to 1 if drop frame numbering is in use; frame numbers 0 and 1 are skipped during the first second of every minute, except multiples of 10 minutes. This converts 30 frame/second time code to the 29.97 frame/second NTSC standard.
- Bit 15 is set to 1 if the time code is synchronized to a (color) video signal.
- Bit 35, the "bi-phase mark-correction bit" is set the same as in linear timecode, providing odd parity over the 64 time code and user bits.
- Bits 55 and 75, the "binary group flag" bits, indicate the format of the user bits. Their weighted sum is a number from 0 to 3. 0 indicates no (or unspecified) format, while 1 indicates 4 8-bit characters. Values of 2 and 3 (i.e. bit 75 set) are reserved.
- Bit 74 is unassigned, should always be transmitted as zero, and ignored on reception.
- The CRC in bits 82–89 is a simple bytewise XOR of the previous 82 bits (including the sync bits), which can be described as a CRC with generator polynomial x8+1.
See also
Related technologies and standards
- Linear timecode
- Burnt-in timecode
- CTL timecode
- MIDI timecode
- AES-EBU embedded timecode
- Rewritable consumer timecode
References
- ^ Timecode bit assignment table, Charles Poynton
- ^ Timecode, Barney Wol