How DVD Motion Menus Highlight Selected Buttons
DVD motion menus highlight active buttons by combining an underlying MPEG-2 motion video with a separate subpicture overlay layer, driven in real time by the DVD player's navigation engine. Rather than altering the video stream itself, the player reads button coordinates and color-mapping rules stored in Presentation Control Information (PCI) packets inside the VOB file. When a user selects a button, the player dynamically applies specified color and transparency values from a Color Look-Up Table (CLUT) to the subpicture layer within that button's defined bounding box, rendering the highlight seamlessly over the playing video.
The Multiplexed Streams in a VOB
A DVD Video Object (VOB) file is an MPEG-2 Program Stream containing multiplexed elements: video, audio, subpicture data, and private navigation streams. In a motion menu, the visual background and any unhighlighted button artwork are typically encoded directly into the main MPEG-2 video stream.
Because re-encoding the video for every possible button state would consume excessive disc space, the DVD specification isolates interactivity into two additional components:
- The Subpicture Stream: A 2-bit graphical overlay running concurrently with the video.
- Navigation Packs (NAV_PCK): Specialized data packets interleaved throughout the VOB stream roughly every 0.5 seconds (the length of a Video Object Unit, or VOBU).
The Role of the Subpicture Overlay
The subpicture stream contains run-length encoded (RLE) bitmaps with a bit depth of only 2 bits per pixel. This allows a subpicture frame to store up to four distinct pixel values: typically designated as background, pattern, emphasis 1, and emphasis 2.
In a menu context, these four values represent the shapes, underlines, borders, or text masks that constitute the button highlights. Under normal circumstances, this subpicture layer is set to fully transparent so the moving background video remains completely visible.
Button Definitions via PCI Packets
Inside every NAV pack resides a Presentation Control Information (PCI) packet. The PCI packet includes the Presentation Control Information Highlight General Information (PCI_HLI) table, which governs menu interactivity.
The PCI_HLI defines:
- Button Bounding Boxes: The exact pixel coordinates (X-start, Y-start, X-end, Y-end) that define the rectangular boundary for each button on the screen (supporting up to 36 buttons for 4:3 menus, or 18 for 16:9 widescreen menus).
- Color and Contrast Sets: The specific color indices and transparency (contrast) levels assigned to each of the three button states: Normal (unselected), Selected (navigated to/focused), and Activated (pressed/triggered).
The Color Look-Up Table (CLUT)
The colors used for button highlights are not stored as direct RGB or YUV values within the subpicture itself. Instead, the disc's IFO file defines a 16-color Palette or Color Look-Up Table (CLUT).
The PCI packet dictates which color from this 16-color palette maps to each of the four pixel types in the subpicture bitmap, along with a contrast value ranging from 0 (completely transparent) to 15 (fully opaque).
The Real-Time Rendering Process
When a DVD player loads a motion menu VOBU:
- Decoding: The player continuously decodes the MPEG-2 video stream and routes it to the display buffer, providing the moving background.
- Overlay Mapping: The player aligns the 2-bit subpicture bitmap over the video frame.
- State Evaluation: The player tracks which button index currently holds focus. For unselected buttons, contrast levels are typically set to 0, leaving those regions invisible.
- Highlight Application: For the bounding box assigned to the Selected button, the hardware graphics chip switches the color and contrast mapping of the subpicture pixels to the "Selected" state defined in the PCI packet.
- Compositing: The graphics processor blends the subpicture highlight over the running video frame according to the defined opacity levels.
If the user presses an arrow key on the remote, the DVD player immediately updates its internal state register, shifts the active bounding box to the adjacent button coordinates, and changes the overlay rendering in real time without interrupting the continuous playback of the background video.