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 12: | Line 39: | ||
{{:: | {{:: | ||
+ | |||
+ | === 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'es | ||
+ | * 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 === |