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
Last revision Both sides next revision
vmgi [2014/05/16 14:05]
beandog
vmgi [2014/05/16 19:15]
beandog [Video Manager Group IFO (VMGI)]
Line 4: Line 4:
   * [[VMG]]   * [[VMG]]
  
-Data found in ''​VIDEO_TS.IFO''​ and ''​VIDEO_TS.BUP'' ​files.+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''​. 
 + 
 +  * [[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 
 + 
 + 
 + 
 +==== 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