3:2 Pulldown in MPEG-2 NTSC VOB Headers Explained
This article explains the mechanism of 3:2 pulldown and details how
standard-definition NTSC DVD Video Object (VOB) files implement it
through MPEG-2 stream metadata. You will learn the mathematics behind
converting 24 fps film to 29.97 fps television video, the difference
between hard and soft telecine, and the specific syntax elements within
the MPEG-2 picture_coding_extension() header—principally
repeat_first_field and top_field_first—that
instruct playback devices to construct an interlaced output on the
fly.
What is 3:2 Pulldown?
Standard cinematic film is shot at 24 frames per second (fps). The NTSC television standard, however, operates at 29.97 frames per second, displayed as 59.94 interlaced fields per second. To display 24 fps content on an NTSC display, the frame rate must be converted through a process known as telecine, or 3:2 pulldown (often referred to interchangeably as 2:3 pulldown).
The process begins by slowing the film slightly by 0.1% to 23.976 fps to match the NTSC time base. To distribute 24 progressive frames across 30 frame intervals (60 fields), every group of four film frames is converted into five video frames (ten fields).
Each progressive frame is split into two fields: the Top field (odd lines) and the Bottom field (even lines). These fields are repeated in an alternating 3-field, 2-field cadence:
- Film Frame A: Displayed across 2 fields (Top, Bottom).
- Film Frame B: Displayed across 3 fields (Top, Bottom, Top).
- Film Frame C: Displayed across 2 fields (Bottom, Top).
- Film Frame D: Displayed across 3 fields (Bottom, Top, Bottom).
This 2-3-2-3 pattern maps four original frames across ten fields, resulting in a smooth, continuous 59.94 fields per second output.
Hard Telecine vs. Soft Telecine
In MPEG-2 NTSC VOB files, 3:2 pulldown can be applied in two ways:
- Hard Telecine: The pulldown is applied before encoding. The encoder records 29.97 interlaced frames directly onto the disc. Because redundant fields are compressed into the stream, this approach wastes bit budget and makes reverse telecine (detelicining) computationally difficult.
- Soft Telecine: The video is encoded natively at 23.976 progressive frames per second. Instead of physically storing duplicate fields, the stream contains metadata flags that instruct the MPEG-2 decoder to execute the 3:2 pulldown during playback. Soft telecine maximizes image quality by allocating bits only to unique progressive frames.
How 3:2 Pulldown is Signaled in MPEG-2 Headers
Soft telecine is signaled inside the MPEG-2 video elementary stream
(ISO/IEC 13818-2) encapsulated within the VOB's Program
Stream. Specifically, the flags reside within the Picture Coding
Extension header (picture_coding_extension()),
which immediately follows the Picture Header for every
coded frame.
Three fields inside this extension govern the pulldown behavior:
progressive_frame(1 bit): Set to1, signaling that the underlying coded frame is progressive rather than interlaced.repeat_first_field(RFF, 1 bit): Indicates whether the decoder must repeat the first displayed field of the frame to generate an extra field.top_field_first(TFF, 1 bit): Specifies whether the top field or the bottom field must be output first.
The 4-Frame Cadence Sequence
To execute soft 3:2 pulldown, the encoder alternates
repeat_first_field and top_field_first across
successive progressive frames in a strict four-frame cycle:
| Coded Frame | progressive_frame |
top_field_first (TFF) |
repeat_first_field (RFF) |
Fields Output by Decoder | Field Count |
|---|---|---|---|---|---|
| Frame 0 | 1 | 1 | 0 | Top, Bottom | 2 |
| Frame 1 | 1 | 1 | 1 | Top, Bottom, Top | 3 |
| Frame 2 | 1 | 0 | 0 | Bottom, Top | 2 |
| Frame 3 | 1 | 0 | 1 | Bottom, Top, Bottom | 3 |
When the decoder encounters repeat_first_field = 1, it
holds the frame in memory and re-displays its first field (as determined
by top_field_first) after the second field has been
shown.
Because an odd number of fields (3) was output for Frame 1, the field
parity flips for Frame 2: the next chronological field on an interlaced
display must be a Bottom field. Therefore, Frame 2 sets
top_field_first = 0. After Frame 3 outputs three fields
(Bottom, Top, Bottom), the cycle completes, returning to
top_field_first = 1 for the next sequence.
Through this header signaling, the playback device outputs standard 59.94i NTSC video over analog connections, while modern progressive displays can ignore the flags and render the underlying 23.976p source directly.