Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
vmgi [2014/05/16 19:12] beandog |
vmgi [2014/05/16 19:14] beandog [Video Manager Group IFO (VMGI)] |
||
---|---|---|---|
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 [[IFO]] containing all the metadata about the entire DVD. Or as I often call it, IFO zero. |
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo.html|Video Manager and Video Title Set IFO file headers]] - data in both VMG and VTS IFOs | ||
+ | * [[http://stnsoft.com/DVD/ifo_vmg.html|Video Manager IFO]] - data specific **to the one** VMG IFO | ||
Files are a normal IFO file, the first one on the disc, being ''VIDEO_TS.IFO'' and ''VIDEO_TS.BUP''. | Files are a normal IFO file, the first one on the disc, being ''VIDEO_TS.IFO'' and ''VIDEO_TS.BUP''. | ||
Line 17: | Line 20: | ||
See ''vmgi_mat_t'' struct in ''ifo_types.h''. | See ''vmgi_mat_t'' struct in ''ifo_types.h''. | ||
+ | |||
+ | |||
+ | <code> | ||
+ | ifo_handle_t *ifo_zero; | ||
+ | ifo_zero = ifoOpen(dvdread_dvd, 0); | ||
+ | </code> | ||
+ | |||
+ | ** VMG ID ** | ||
+ | |||
+ | * Example: DVDVIDEO-VMG | ||
+ | |||
+ | <code> | ||
+ | char *id; | ||
+ | id = ifo_zero->vmgi_mat->vmg_identifier; | ||
+ | </code> | ||
+ | |||
+ | ** Last sector of VMG set ** | ||
+ | |||
+ | The last sector of the BUP. | ||
+ | |||
+ | <code> | ||
+ | uint32t i; | ||
+ | i = ifo_zero->vmgi_mat->vmg_last_sector; | ||
+ | </code> | ||
+ | |||
+ | ** Last sector of IFO ** | ||
+ | |||
+ | Current IFO? Not sure... | ||
+ | |||
+ | <code> | ||
+ | uint32t i; | ||
+ | i = ifo_zero->vmgi_mat->vmgi_last_sector; | ||
+ | </code> | ||
+ | |||
+ | ** Version number ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo.html#ver]] | ||
+ | |||
+ | <code> | ||
+ | uint8t i; | ||
+ | i = ifo_zero->vmgi_mat->specification_version; | ||
+ | </code> | ||
+ | |||
+ | ** VMG category ** | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmg_category; | ||
+ | </code> | ||
+ | |||
+ | ** 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. | ||
+ | |||
+ | <code> | ||
+ | uint16_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmg_nr_of_volumes | ||
+ | </code> | ||
+ | |||
+ | ** Volume number ** | ||
+ | |||
+ | <code> | ||
+ | uint16_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmg_this_volume_nr; | ||
+ | </code> | ||
+ | |||
+ | ** Disc side ** | ||
+ | |||
+ | This should obviously be a 1 or a 2. | ||
+ | |||
+ | <code> | ||
+ | uint8t i; | ||
+ | i = ifo_zero->vmgi_mat->disc_side; | ||
+ | </code> | ||
+ | |||
+ | ** Number of title sets ** | ||
+ | |||
+ | Number of VTSs, aka IFOs. **For debugging**, this number should match the actual amount of IFOs on a DVD. | ||
+ | |||
+ | <code> | ||
+ | uint16_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmg_nr_of_title_sets; | ||
+ | </code> | ||
+ | |||
+ | ** Provider ID ** | ||
+ | |||
+ | Example: ''DEFENDERS_OF_THE_EARTH_V2D2A''. Often blank. 32 characters not including a NULL terminator. | ||
+ | |||
+ | <code> | ||
+ | char *id; | ||
+ | id = ifo_zero->vmgi_mat->provider_identifier; | ||
+ | </code> | ||
+ | |||
+ | ** VMG POS ** | ||
+ | |||
+ | Dunno what this one is. 8-bytes. | ||
+ | |||
+ | <code> | ||
+ | uint64_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmg_pos_code; | ||
+ | </code> | ||
+ | |||
+ | ** Last byte of VMG IFO (IFO Zero) ** | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmgi_last_byte; | ||
+ | </code> | ||
+ | |||
+ | ** Start address of first PGC ** | ||
+ | |||
+ | First Play program chain. | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/pgc.html]] | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->first_play_pgc; | ||
+ | </code> | ||
+ | |||
+ | ** Start sector of menu VOB ** | ||
+ | |||
+ | Dunno what this is yet. | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmgm_vobs; | ||
+ | </code> | ||
+ | |||
+ | ** Sector pointer to TT_SRPT, table of titles ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo_vmg.html#tt]] | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->tt_srpt; | ||
+ | </code> | ||
+ | |||
+ | ** Sector pointer to Menu Program Chain Table (VMGM_PGCI_UT) ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo_vmg.html#pgciut]] | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmgm_pgci_ut; | ||
+ | </code> | ||
+ | |||
+ | ** Sector pointer to Parental Management masks (VMG_PTL_MAIT) ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo_vmg.html#mait]] | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->ptl_mait; | ||
+ | </code> | ||
+ | |||
+ | ** Sector pointer to copies of VTS audio/sub-picture attributes (VMG_VTS_ATRT) ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo_vmg.html#atrt]] | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->vts_atrt; | ||
+ | </code> | ||
+ | |||
+ | ** Sector pointer to VMG_TXTDT_MG ** | ||
+ | |||
+ | Text data. No idea what this one is. | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->txtdt_mgi; | ||
+ | </code> | ||
+ | |||
+ | ** Sector pointer to menu cell address table (VMGM_C_ADT) ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo.html#c_adt]] | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmgm_c_adt; | ||
+ | </code> | ||
+ | |||
+ | ** Sector pointer to menu VOBU address map (VMGM_VOBU_ADMAP) ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo.html#vam]] | ||
+ | |||
+ | <code> | ||
+ | uint32_t i; | ||
+ | i = ifo_zero->vmgi_mat->vmgm_vobu_admap; | ||
+ | </code> | ||
+ | |||
+ | ** Video attributes of menu VOBs (VMGM_VOBS) ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo.html#vidatt]] | ||
+ | |||
+ | <code> | ||
+ | video_attr_t *a; | ||
+ | a = ifo_zero->vmgi_mat->vmgm_video_attr; | ||
+ | </code> | ||
+ | |||
+ | ** Number of audio streams in menu VOBs (VMGM_VOBS) ** | ||
+ | |||
+ | Should be 0 or 1 (**debugging checks**). | ||
+ | |||
+ | <code> | ||
+ | uint8_t i; | ||
+ | i = ifo_zero->vmgi_mat->nr_of_vmgm_audio_streams; | ||
+ | </code> | ||
+ | |||
+ | ** Audio attributes of menu VOBs (VMGM_VOBS) ** | ||
+ | |||
+ | * [[http://stnsoft.com/DVD/ifo.html#maudatt]] | ||
+ | |||
+ | For //channels// the most common integer value (from my findings) is 0 or 1. Need to find out if that means integer + 1 (so, 0 = mono, 1 = stereo) or what. | ||
+ | |||
+ | <code> | ||
+ | audio_attr_t *a; | ||
+ | a = ifo_zero->vmgi_mat->vmgm_audio_attr; | ||
+ | </code> | ||
+ | |||
+ | ** Number of subpicture streams in menu VOBs (VMGM_VOBS) ** | ||
+ | |||
+ | Should be 0 or 1 (**debugging checks**). | ||
+ | |||
+ | <code> | ||
+ | uint8_t i; | ||
+ | i = ifo_zero->vmgi_mat->nr_of_vmgm_subp_streams; | ||
+ | </code> | ||
+ | |||
+ | ** Subpicture attributes of menu VOBs (VMGM_VOBS) ** | ||
+ | |||
+ | <code> | ||
+ | subp_attr_t *a; | ||
+ | a = ifo_zero->vmgi_mat->vmgm_subp_attr; | ||
+ | </code> |