Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vmgi [2014/05/16 14:09]
beandog
vmgi [2015/01/15 23:29]
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 ​[[IFO]] containing all the metadata about the entire DVD.  Or as I often call it, IFO zero.
  
 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''​.
  
-Here are the headers ​that are generic to all IFOs[[http://​stnsoft.com/​DVD/​ifo.html]]+  * [[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
  
-And here is some data that is specific to the VMG IFO: [[http://​stnsoft.com/​DVD/​ifo_vmg.html]]+ 
 + 
 +==== VMG IFO Contents: libdvdread ==== 
 + 
 +See ''​ifoOpenVMGI()''​ in ''​ifo_read.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>​

Navigation