Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| dvd_structure [2014/02/16 21:37] – beandog | dvd_structure [2023/04/10 03:45] (current) – [DVD Structure / Metadata] beandog | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== DVD Structure / Metadata ====== | ====== DVD Structure / Metadata ====== | ||
| - | * [[DVD Audio]] | + | * [[libdvdread]] |
| - | * [[DVD Tracks]] | + | |
| - | * [[DVD Title]] | + | * [[https:// |
| - | * [[DVD Video]] | + | |
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | * [[VMG|Video Manager Group]] (VMG) | ||
| + | * [[VMGI|Video Manager Group IFO]] (VMGI): '' | ||
| + | * [[VMGM|Video Manager Group Menu]] (VMGM): '' | ||
| + | * [[VTS|Video Title Set]] (VTS) | ||
| + | * [[VTSI|Video Title Set IFO]] (VTSI): '' | ||
| + | * [[VTSM|Video Title Set Menu]] (VTSM): '' | ||
| + | ==== Cosmic Voyage ==== | ||
| + | |||
| + | * [[VMG]] | ||
| + | * [[VMGI]] | ||
| + | * VIDEO_TS.BUP | ||
| + | * VIDEO_TS.IFO | ||
| + | * [[VMGM]] | ||
| + | * None | ||
| + | * [[VTS]] | ||
| + | * [[VTSI]] | ||
| + | * VTS_01_0.BUP | ||
| + | * VTS_01_0.IFO | ||
| + | * [[VTSM]] | ||
| + | * VTS_01_0.VOB | ||
| + | * [[VOB|VOBs]] | ||
| + | * VTS_01_1.VOB | ||
| + | * VTS_01_2.VOB | ||
| === DVD Specifications === | === DVD Specifications === | ||
| Line 11: | Line 38: | ||
| * [[http:// | * [[http:// | ||
| - | {{:: | + | {{:: |
| + | |||
| + | === dvdnav === | ||
| + | |||
| + | Taken from '' | ||
| + | |||
| + | <code text> | ||
| + | a DVD. I collected this info over time from various sources, the most | ||
| + | valuable being an article in the German c't computer magazine. | ||
| + | Some of the info might be wrong according to the DVD standard (which I do | ||
| + | not know), but they are practically proven in libdvdnav. | ||
| + | |||
| + | Michael Roitzsch | ||
| + | |||
| + | |||
| + | 0. storage structure | ||
| + | - sector | ||
| + | * smallest addressable unit on disc | ||
| + | * data is stored on disc with a Reed-Solomon error correction | ||
| + | - file | ||
| + | * the storage entity in the underlying filesystem (usually UDF) | ||
| + | * on DVD-Video, files are stored consecutively | ||
| + | 1. MPEG stream structure | ||
| + | - blocks | ||
| + | * a file system driver (usually UDF) is needed to map the VOBS-local | ||
| + | block numbers to global disc sectors | ||
| + | - GOP (group of pictures) | ||
| + | * contains multiple sectors | ||
| + | * smallest self-contained MPEG unit | ||
| + | - VOBU (video object unit) | ||
| + | * contains multiple GOPs + audio and SPU blocks + NAV packet | ||
| + | * smallest unit in seek and resume operations, always starts with a | ||
| + | NAV packet used for menu button highlight and command information | ||
| + | and to detect PTS discontinuities | ||
| + | - ILVU (interleaved video unit) | ||
| + | * contains multiple VOBUs (ususally only one) | ||
| + | * blocking multiple VOBUs of multiple interleaved MPEG streams for | ||
| + | | ||
| + | - VOB (video object) | ||
| + | * contains multiple ILVUs (usually quite a lot) | ||
| + | * each NAV packet has a CellID, so VOBs are divided into stream Cells | ||
| + | which do not necessarily correspond to the navigation Cells below | ||
| + | - VOBS (video object set) | ||
| + | * contains multiple VOBs (addressed by VOB_ID) | ||
| + | * a VOBS is the storage analogy to the playback domains below, | ||
| + | therefore, a VMGM_VOBS, a VTSM_VOBS and a VTS_VOBS exist | ||
| + | * all block addressing is done within the scope of the VOBS | ||
| + | 2. navigational structure - logical playback control | ||
| + | - Cell | ||
| + | * smallest unit which is layed out in sequence | ||
| + | * points to a first and last VOBU (by sector) | ||
| + | * also points to the corresponding CellID and VOB_ID | ||
| + | * smallest unit to execute VM commands (cell_post commands) | ||
| + | * smallest unit accesible by VM commands (apart from LinkRSM) | ||
| + | - PG (program) | ||
| + | * points to a Cell | ||
| + | * usually the mapping between PG and Cells is 1:1, but not always | ||
| + | (multiple Cells inside one PG can occur when special VM commands | ||
| + | have to be executed in the middle of a PG, for example to switch | ||
| + | SPU channels or to provide a branching target for special | ||
| + | features that need access to parts of the movie) | ||
| + | * unit for user skip operations | ||
| + | * libdvdnav' | ||
| + | - PGC (program chain) | ||
| + | * contains multiple programs and cells | ||
| + | * logical playback chain | ||
| + | * VM commands at start and stop (PGC_pre and PGC_post commands) | ||
| + | * might be used for seeking (see dvdnav_set_PGC_positioning()) | ||
| + | 3. title structure - high level navigation | ||
| + | - PTT (part of title track) | ||
| + | * points to a PG in a PGC | ||
| + | * usually what you select in a " | ||
| + | * usually the mapping between PTT and PG is 1:1, but not always | ||
| + | (this is similar to the distinction between track and index marks | ||
| + | on audio CDs: PTT = track mark, PG = index mark) | ||
| + | - TT (title track) | ||
| + | * contains multiple PTTs | ||
| + | * logical partitioning of the content | ||
| + | | ||
| + | * the display of DVD players show title and part number | ||
| + | - VTS (video title set) | ||
| + | * contains multiple TTs with a local numbering (to emphasize the | ||
| + | local scope of the number, these are also called VTS_TT) | ||
| + | * high level partitioning of the content (movie / bonus material) | ||
| + | * video, audio and spu attributes are common inside a whole VTS | ||
| + | 4. domain structure - bringing it all together | ||
| + | - FP (first play) | ||
| + | * one special PGC in the VMGM domain run on start of the disc | ||
| + | - VMGM (video manager menu) - files video_ts.{vob, | ||
| + | * the menu which allows you to select between title sets | ||
| + | * corresponds to the VMGM_VOBS (video_ts.vob) and | ||
| + | the VMGI (video_ts.ifo) | ||
| + | * contains sets of PGCs, differentiated by language | ||
| + | * contains a global table of TTs each pointing to a VTS and a local VTS_TT | ||
| + | * contains parental management information | ||
| + | * contains attribute lists for the VTS' | ||
| + | * contains text data (?) | ||
| + | * contains a Cell and a VOBU lists with local sector info (for seeking) | ||
| + | - VTSM (video title set menu) - files vts_< | ||
| + | * the menu which allows you to select between the TTs of a VTS | ||
| + | * corresponds to the VTSM_VOBS (vts_< | ||
| + | the VTSI (vts_< | ||
| + | * contains sets of PGCs, differentiated by language | ||
| + | * contains a Cell and a VOBU lists with local sector info (for seeking) | ||
| + | - VTS (video title set) - files vts_< | ||
| + | * regular playback domain | ||
| + | * corresponds to the VTS_VOBS (vts_< | ||
| + | the VTSI (vts_< | ||
| + | * contains one VTS with its VTS_TTs and PGCs | ||
| + | * contains a time map (for time-based seeking) | ||
| + | * contains a Cell and a VOBU lists with local sector info (for seeking) | ||
| + | - STOP | ||
| + | * 'nuff said</ | ||
| === lsdvd === | === lsdvd === | ||