Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
vmgi [2014/05/17 01:12] beandogvmgi [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 [[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]] 
  
-==== libdvdread ====+ 
 +==== VMG IFO Contents: libdvdread ====
  
 See ''ifoOpenVMGI()'' in ''ifo_read.h''. See ''ifoOpenVMGI()'' in ''ifo_read.h''.
  
 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>

Navigation