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 | ||
vmg [2014/05/16 19:01] beandog |
vmg [2015/01/16 09:48] beandog |
||
---|---|---|---|
Line 4: | Line 4: | ||
* [[libdvdread]] | * [[libdvdread]] | ||
- | * Video Manager Group (VMG) | + | The VMG is the collection of both the primary IFO and VOB. It is the first IFO on the disc. |
- | * [[VMGI|Video Manager Group IFO]] (VMGI): ''VIDEO_TS.IFO'', ''VIDEO_TS.BUP'' | + | |
- | * [[VMGM|Video Manager Group Menu]] (VMGM): ''VIDEO_TS.VOB'' | + | |
- | * [[http://stnsoft.com/DVD/ifo.html]] | + | * [[VMGI|Video Manager Group IFO]] (VMGI): ''VIDEO_TS.IFO'', ''VIDEO_TS.BUP'' |
+ | * [[VMGM|Video Manager Group Menu]] (VMGM): ''VIDEO_TS.VOB'' | ||
- | Using above link, ''ifo_types.h'' and ''ifo_print.c'' as references. | + | * [[VMG]] |
- | + | * [[VMGI|Video Manager Group IFO]] | |
- | <code> | + | * ''VIDEO_TS.BUP'' |
- | ifo_handle_t *ifo_zero; | + | * ''VIDEO_TS.IFO'' |
- | ifo_zero = ifoOpen(dvdread_dvd, 0); | + | * [[VMGM]] |
- | </code> | + | * None |
- | + | ||
- | ** 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> | + |