Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
vmg [2014/05/17 01:01] – beandog | vmg [2015/01/16 16:49] (current) – beandog | ||
---|---|---|---|
Line 4: | Line 4: | ||
* [[libdvdread]] | * [[libdvdread]] | ||
- | * Video Manager Group (VMG) | + | The VMG is the collection of both the primary |
- | * [[VMGI|Video Manager Group IFO]] (VMGI): '' | + | |
- | * [[VMGM|Video Manager Group Menu]] (VMGM): '' | + | |
- | * [[http://stnsoft.com/DVD/ifo.html]] | + | * [[VMGI|Video Manager Group IFO]] (VMGI): '' |
+ | * [[VMGM|Video Manager Group Menu]] (VMGM): '' | ||
- | Using above link, '' | + | |
- | + | * [[VMGI]] | |
- | < | + | * '' |
- | ifo_handle_t *ifo_zero; | + | * '' |
- | ifo_zero = ifoOpen(dvdread_dvd, | + | * [[VMGM]] |
- | </ | + | * '' |
- | + | ||
- | ** VMG ID ** | + | |
- | + | ||
- | * Example: DVDVIDEO-VMG | + | |
- | + | ||
- | < | + | |
- | char *id; | + | |
- | id = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Last sector of VMG set ** | + | |
- | + | ||
- | The last sector of the BUP. | + | |
- | + | ||
- | < | + | |
- | uint32t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Last sector of IFO ** | + | |
- | + | ||
- | Current IFO? Not sure... | + | |
- | + | ||
- | < | + | |
- | uint32t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Version number ** | + | |
- | + | ||
- | | + | |
- | + | ||
- | < | + | |
- | uint8t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** VMG category ** | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Number of volumes ** | + | |
- | + | ||
- | Not sure if I've seen this one yet, where it is positvely set (todo: search IFOs). It's the number of volumes for an entire set of the DVDs that this one is a part of a collection. | + | |
- | + | ||
- | < | + | |
- | uint16_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Volume number ** | + | |
- | + | ||
- | < | + | |
- | uint16_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Disc side ** | + | |
- | + | ||
- | This should obviously be a 1 or a 2. | + | |
- | + | ||
- | < | + | |
- | uint8t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Number of title sets ** | + | |
- | + | ||
- | Number of VTSs, aka IFOs. **For debugging**, | + | |
- | + | ||
- | < | + | |
- | uint16_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Provider ID ** | + | |
- | + | ||
- | Example: | + | |
- | + | ||
- | < | + | |
- | char *id; | + | |
- | id = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** VMG POS ** | + | |
- | + | ||
- | Dunno what this one is. 8-bytes. | + | |
- | + | ||
- | < | + | |
- | uint64_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Last byte of VMG IFO (IFO Zero) ** | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Start address of first PGC ** | + | |
- | + | ||
- | First Play program chain. | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Start sector of menu VOB ** | + | |
- | + | ||
- | Dunno what this is yet. | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Sector pointer to TT_SRPT, table of titles ** | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Sector pointer to Menu Program Chain Table (VMGM_PGCI_UT) ** | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Sector pointer to Parental Management masks (VMG_PTL_MAIT) ** | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Sector pointer to copies of VTS audio/ | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Sector pointer to VMG_TXTDT_MG ** | + | |
- | + | ||
- | Text data. No idea what this one is. | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Sector pointer to menu cell address table (VMGM_C_ADT) ** | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Sector pointer to menu VOBU address map (VMGM_VOBU_ADMAP) ** | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | uint32_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Video attributes of menu VOBs (VMGM_VOBS) ** | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | < | + | |
- | video_attr_t *a; | + | |
- | a = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Number of audio streams in menu VOBs (VMGM_VOBS) ** | + | |
- | + | ||
- | Should be 0 or 1 (**debugging checks**). | + | |
- | + | ||
- | < | + | |
- | uint8_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Audio attributes of menu VOBs (VMGM_VOBS) ** | + | |
- | + | ||
- | * [[http:// | + | |
- | + | ||
- | For // | + | |
- | + | ||
- | < | + | |
- | audio_attr_t *a; | + | |
- | a = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Number of subpicture streams in menu VOBs (VMGM_VOBS) ** | + | |
- | + | ||
- | Should be 0 or 1 (**debugging checks**). | + | |
- | + | ||
- | < | + | |
- | uint8_t i; | + | |
- | i = ifo_zero-> | + | |
- | </ | + | |
- | + | ||
- | ** Subpicture attributes of menu VOBs (VMGM_VOBS) ** | + | |
- | + | ||
- | < | + | |
- | subp_attr_t *a; | + | |
- | a = ifo_zero-> | + | |
- | </ | + |