This is an old revision of the document!
libdvdread
- VMG - Video Manager Group
ifo_handle_t
ifofile
dvd_file_t
file-
vmg_identifier[12]
-DVDVIDEO-VMG
vmg_last_sector
- last sector of VMG set (last sector ofVIDEO_TS.BUP
)zero_1[12]
- reserved / unknownvmgi_last_sector
last sector ofVIDEO_TS.IFO
zero_2
- reserved / unknownspecification_version
- version numbervmg_category
- VMG category; byte1=prohibited region maskvmg_nr_of_volumes
- number of volumes, as in physical sets of discs (metadata)vmg_this_volume_nr
- volume number this disc belongs to (metadata)disc_side
- physical side of this disc (metadata)zero_3[19]
- reserved / unknownvmg_nr_of_title_sets
- number of title sets (VTS, or non-VMG IFOs)provider_identifier
- 32 character string of provider id (metadata), usually blankvmg_pos_code
- VMG POS (?)zero_4[24]
- reserved / unknownvmgi_last_byte
- end byte address ofVMGI_MAT
first_play_pgc
- start address ofFP_PGC
, the first, and only, and optional PGC for this (VMG) IFOzero_5[56]
- reserved / unknownvmgm_vobs
- starting sector of Menu VOBtt_srpt
- starting sector of table of titles,TT_SRPT
vmgm_pgci_ut
- starting sector of menu program chain table,VMGM_PGCI_UT
ptl_mait
- starting sector of parental management masks,VMG_PTL_MAIT
vts_atrt
- starting sector of audio, subtitle attributes,VMG_VTS_ATRT
txtdt_mgi
- starting sector of text data,VMG_TXTDT_MG
vmgm_c_adt
- starting sector of menu cell address table,VMGM_C_ADT
vmgm_vobu_admap
- starting sector of menu VOBU address map,VMGM_VOBU_ADMAP
zero_6[32]
- reserved / unknownvideo_attr_t
vmgm_video_attr
- VMG VOBs video attributesmpeg_version
- MPEG version- 0: MPEG-1
- 1: MPEG-2
video_format
- Video format- 0: NTSC
- 2: PAL
display_aspect_ratio
- aspect ratio- 0: 4:3
- 1: reserved
- 2: reserved
- 3: 16:9
permitted_df
- permitted display formats (?)line21_cc_1
- CC for line 21 field 1 in GOP (NTSC only)line21_cc_2
- CC for line 22 field 1 in GOP (NTSC only)unknown1
- reserved / unknownbit_rate
- ?picture_size
- video resolution- If format is NTSC:
- 0: 720×480
- 1: 704×480
- 2: 352×480
- 3: 352×240
- If format is PAL:
- 0: 720×576
- 1: 704×576
- 2: 352×576
- 3: 352×288
letterboxed
- 0: no
- 1: yes
film_mode
(if PAL)- 0: camera
- 1: film
zero_7
- reserved / unknownnr_of_vmgm_audio_streams
- number of audio streams in VMG VOBS, must be 0 or 1audio_attr_t
vmgm_audio_attr
- VMG VOBs audio attributesaudio_format
- audio codec- 0: AC3 (Dolby Digital)
- 1: unknown
- 2: MPEG-1
- 3: MPEG-2EXT
- 4: LPCM
- 5: unknown
- 6: DTS
- 7: unknown
multichannel_extension
- multichannel extension exists or not for karaoke modelang_type
- language type (?)- 0: unspecified
- 1: “per bytes 2&3” (DVD info spec)
application_mode
(?)- 0: unspecified
- 1: karaoke
- 2: surround
quantization
- quantization / dynamic range control (DRC)- If audio codec is MPEG-1 (2) or MPEG2-EXT (3), then
- 0: No DRC
- 1: DRC
- If audio codec is LPCM (4), then
- 0: 16 bps
- 1: 20 bps
- 2: 24 bps
sample_frequency
- sample rate- 0: 48 Kbps
unknown1
- reserved / unknownchannels
- number of audio channels, 6 (5.1 surround sound) is maximumlang_code
- language codelang_extension
- reserved for language code extensioncode_extension
- code extension- 0: unspecified
- 1: normal
- 2: for visually impaired
- 3: director's comments
- 4: alternate director's comments
unknown3
- reserved / unknown
audio_attr_t
zero_8[7]
- reserved for audio streams, max 8zero_9[17]
- reserved / unknownnr_of_vmgm_subp_streams
- number of sub-picture streams in VMG VOBS, must be 0 or 1subp_attr_t
vmgm_subp_attr
- VMG VOBs sub-picture attributescode_mode
- coding mode- 0: run length
- 1: extended
- 2: other
zero1
- reserved / unknown / ignoredtype
- language type- 0: unspecified
- 1: language
- 2: other
zero2
- reserved / unknown / ignoredlang_code
- language codelang_extension
- language code extensioncode_extension
- code extension
subp_attr_t
zero_10[27]
- reserved / unknown
tt_srpt_t
tt_srpt
- VMG IFO ONLY, pointers to all the tables on the disknr_of_srpts
- number of titleszero_1
- reservedlast_byte
- end address, last byte of last entrytitle_info_t
title
playback_type_t
pb_ty
zero_1
multi_or_random_pgc_title
jlc_exists_in_cell_cmd
jlc_exists_in_prepost_cmd
jlc_exists_in_button_cmd
jlc_exists_in_tt_dom
chapter_search_or_play
title_or_time_play
nr_of_angles
- number of anglesnr_of_ptts
- number of chapters (PTTs)parental_id
- parental management masktitle_set_nr
- VTS number (VTSN)vts_ttn
- title number within VTS, VTS_TTNtitle_set_sector
- starting sector for VTS
pgc_t
first_play_pgc
- first (and only possible) PGC for VMG IFOzero_1
- reserved / unusednr_of_programs
- number of programsnr_of_cells
number of cellsdvd_time_t
playback_time
hour
minute
second
frame_u
- the two high bits are the framerate
user_ops_t
prohibited_ops
- (skipping display of
user_ops_t
here, see source code)
audio_control[8]
- audio stream controlsubp_control[32]
- sub-picture stream controlnext_pgc_nr
- next PGCNprev_pgc_nr
- previous PGCNgoup_pgc_nr
- group PGCNstill_time
- PGC still time, 255 = infinitepg_playback_mode
- PG playback mode, 0=sequential, otherwise bit7 indicates random (0) or shuffle (1), and the program count is in bits6-0palette[16]
- palette (0, Y, Cr, Cb)command_tbl_offset
- offset within PGC to commandsprogram_map_offset
- offset within PGC to program mapcell_playback_offset
- offset within PGC to cell playback information tablecell_position_offset
- offset within PGC to cell position information tablepgc_command_tbl_t
command_tbl
nr_of_pre
- number of pre commandsnr_of_post
- number of post commandsnr_of_cell
- number of cell commandszero_1
- end address relative to command tablevm_cmd_t
pre_cmds
bytes[8]
vm_cmd_t
post_cmds
bytes[8]
vm_cmd_t
cell_cmds
bytes[8]
ptl_mait_t
ptl_mait
- parental management information tablenr_of_countries
- number of countriesnr_of_vtss
- number of title setslast_byte
- end address, last byte of PTL_MAITptl_mait_country_t
countries
country_code
zero_1
pf_ptl_mai_start_byte
zero_2
pf_level_t
pf_ptl_mai
vts_atrt_t
vts_atrt
- VTS Attribution Tablenr_of_vtss
- number of title setszero_1
last_byte
- end address (last byte of last VTS_ATRT)vts_attributes_t
vts
- VTS attributeslast_byte
- end addressvts_cat
video_attr_t
vtsm_vobs_attr
- video attributes (see above)nr_of_vtsm_audio_streams
- limited to maximum of 1 for VMG IFOaudio_attr_t
vtsm_audio_attr
- audio attributes (see above)audio_attr_t
zero_2[7]
zero_3[16]
zero_4
nr_of_vtsm_subp_streams
- number of sub-picture streamssubp_attr_t
vtsm_subp_attr
-
VIDEO_TS.VOB
-
- vmgi_mat_t
- playback_type_t
- title_info_t
- tt_srpt_t
- pf_level_t
- ptl_mait_country_t
- ptl_mait_t
- vts_attributes_t
- vts_atrt_t
- txtdt_t
- txtdt_lu_t
- txtdt_mgi_t
-
- vtsi_mat_t
- ptt_info_t
- ttu_t
- vts_ptt_srpt_t
- map_ent_t
- vts_tmap_t
- vts_tmapt_t
- All IFOs
- ifo_handle_t
typedef struct { dvd_file_t *file; /* VMGI */ vmgi_mat_t *vmgi_mat; tt_srpt_t *tt_srpt; pgc_t *first_play_pgc; ptl_mait_t *ptl_mait; vts_atrt_t *vts_atrt; txtdt_mgi_t *txtdt_mgi; /* Common */ pgci_ut_t *pgci_ut; c_adt_t *menu_c_adt; vobu_admap_t *menu_vobu_admap; /* VTSI */ vtsi_mat_t *vtsi_mat; vts_ptt_srpt_t *vts_ptt_srpt; pgcit_t *vts_pgcit; vts_tmapt_t *vts_tmapt; c_adt_t *vts_c_adt; vobu_admap_t *vts_vobu_admap; } ifo_handle_t;