Penguin
Note: You are viewing an old revision of this page. View the current version.

Some of the more esoteric terms and concepts you may come across in DVDVideo.

A packetized elementary stream (PES) is just an MPEG stream. "Packetized" simply means that the data for each stream is broken up into blocks (which seem to be called both "packets" and "packs") which are interleaved (multiplexed) together in the file. The minimum unit of interleaving is called the "VOBU" (Video Object Unit): this always begins with data for the navigation stream, followed by data for the other streams in some arbitrary order.

One or more consecutive VOBUs make up a cell. This is the basic unit of playback in DVD-Video. A cell can have associated program instructions in the virtual machine language, for example telling the player to keep looping the same cell, or jump to another cell.

The cell structure is used, among other things, to define parts of titles (PTTs), which ordinary users know as "chapters". Why they couldn't just call them chapters in the spec, I don't know...

A program chain (PGC) defines a sequence of cells and the program instructions associated with them. It also defines the palette of 16 colours available for use in subpictures. Typically one PGC defines one title (or menu) on the disc, though it is possible to chain multiple PGCs together (hence the name) to make up a title. PGCs are kept in the IFO file.

A PGC can also specify prohibited operations--that is, the user is not allowed to use controls like the fast-forward button to skip over this PGC. This is used to do things like display those obnoxious copyright warnings, and distributor logos. Some discs in the US even have ads that the viewer is forced to watch before getting to the content that they bought the disc for.

The first program chain (FPC) is a special PGC that contains commands that are executed when the disc is inserted into the player. This typically contains a command like "jump to main menu", or perhaps "jump to copyright warning sequence", which in turn jumps to the main menu.

Navigation Stream

The navigation stream contains two kinds of packets: presentation control information (PCI) and data search information (DSI).

The PCI contains button and action definitions and subpicture highlight settings--remember that the subpictures themselves are stored in their own streams.

The DSI contains offsets to preceding and following VOBUs at various predefined time differences, used for trick play (scan forward/backward) functions.

More on Subpictures

The palette of 16 available colours (from which the subpicture uses 4) is defined in the header of the PGC.

A subpicture stream actually consists of a series of drawing commands. These commands do not make up a programming language--there are no variables or conditionals etc. They are simply interpreted in linear sequence. Commands do things like "set colours", "set contrast (transparency)" and "draw pixels into this rectangular area". Thus, transparent areas of the subpicture are defined simply by not drawing into them.

Subpicture pixels are run-length compressed, and the complete subpicture image must fit into less than 65536 bytes. Any image that cannot be compressed to fit within this restriction (in the worst case, an image could take up to 103680 bytes for PAL or 86400 bytes for NTSC) is simply not allowed.

More on Menus

Menus are implemented as subpictures superimposed on top of a video background. There is a single subpicture defining the appearance of all menu buttons, with a set of 4 colours appropriate to their default (non-selected) state. Two additional sets of 4 colours each, to be used in the highlighted and selected (when the user presses the "OK" or "Enter" button on the remote with a menu button selected) states respectively, are specified in PCI packets in the navigation stream. The actual area of each button is defined as a rectangle in a field in the PCI packet; this is what selects what portion of the subpicture to show in which colours when a button is in a particular state.

More on Buttons

Buttons are built in terms of subpictures, but have additional constraints. Every button must belong to a button group, of which there can be no more than three in a menu. All buttons in the same group share the same colour scheme.

Each button definition in the PCI packet also lists the adjacent buttons (if any) in each of the up, down, left and right directions. This is used to switch the button selection when the user presses the corresponding key on the remote.

A button can be defined as an auto-action button. That is, the button function is invoked as soon as it is selected by the user, without having to press the "OK" key on the remote. This is used, for example, for "next page" and "previous page" options to implement multi-page menus.

dvdauthor doesn't bother defining any visible on-screen bounds or subpicture graphics for auto-action buttons. Presumably this is because any highlighting of such regions would never remain on-screen to be visible to the user for any length of time. However, the menu background can still provide on-screen graphics in the appropriate places (e.g. right-pointing-arrow/left-pointing-arrow for next-page/previous-page) that the user can interpret as indicating the presence of such buttons.