Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
vmgi [2014/05/17 01:12] – beandog | vmgi [2015/01/16 06:29] (current) – beandog | ||
---|---|---|---|
Line 4: | Line 4: | ||
* [[VMG]] | * [[VMG]] | ||
- | The VMGI is the primary IFO containing all the metadata about the entire DVD. Or, aka IFO zero. | + | The VMGI is the primary |
Files are a normal IFO file, the first one on the disc, being '' | Files are a normal IFO file, the first one on the disc, being '' | ||
- | Here are the headers | + | * [[http:// |
+ | * [[http:// | ||
- | And here is some data that is specific to the VMG IFO: [[http:// | ||
- | ==== libdvdread ==== | + | |
+ | ==== VMG IFO Contents: | ||
See '' | See '' | ||
See '' | See '' | ||
+ | |||
+ | |||
+ | < | ||
+ | ifo_handle_t *ifo_zero; | ||
+ | ifo_zero = ifoOpen(dvdread_dvd, | ||
+ | </ | ||
+ | |||
+ | ** 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 ** | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | < | ||
+ | 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). | ||
+ | |||
+ | < | ||
+ | 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-> | ||
+ | </ |