Data Fields | |
uint8_t | hour |
uint8_t | minute |
uint8_t | second |
uint8_t | frame_u |
uint8_t | bytes [8] |
unsigned char | mpeg_version: 2 |
unsigned char | video_format: 2 |
unsigned char | display_aspect_ratio: 2 |
unsigned char | permitted_df: 2 |
unsigned char | line21_cc_1: 1 |
unsigned char | line21_cc_2: 1 |
unsigned char | unknown1: 1 |
unsigned char | bit_rate: 1 |
unsigned char | picture_size: 2 |
unsigned char | letterboxed: 1 |
unsigned char | film_mode: 1 |
unsigned char | audio_format: 3 |
unsigned char | multichannel_extension: 1 |
unsigned char | lang_type: 2 |
unsigned char | application_mode: 2 |
unsigned char | quantization: 2 |
unsigned char | sample_frequency: 2 |
unsigned char | channels: 3 |
uint16_t | lang_code |
uint8_t | lang_extension |
uint8_t | code_extension |
uint8_t | unknown3 |
union { | |
struct ATTRIBUTE_PACKED { | |
unsigned char unknown4: 1 | |
unsigned char channel_assignment: 3 | |
unsigned char version: 2 | |
unsigned char mc_intro: 1 | |
unsigned char mode: 1 | |
unsigned char unknown5: 4 | |
unsigned char dolby_encoded: 1 | |
unsigned char unknown6: 3 | |
} karaoke | |
struct ATTRIBUTE_PACKED { | |
unsigned char unknown4: 1 | |
unsigned char channel_assignment: 3 | |
unsigned char version: 2 | |
unsigned char mc_intro: 1 | |
unsigned char mode: 1 | |
unsigned char unknown5: 4 | |
unsigned char dolby_encoded: 1 | |
unsigned char unknown6: 3 | |
} surround | |
} | app_info |
unsigned int | zero1: 7 |
unsigned int | ach0_gme: 1 |
unsigned int | zero2: 7 |
unsigned int | ach1_gme: 1 |
unsigned int | zero3: 4 |
unsigned int | ach2_gv1e: 1 |
unsigned int | ach2_gv2e: 1 |
unsigned int | ach2_gm1e: 1 |
unsigned int | ach2_gm2e: 1 |
unsigned int | zero4: 4 |
unsigned int | ach3_gv1e: 1 |
unsigned int | ach3_gv2e: 1 |
unsigned int | ach3_gmAe: 1 |
unsigned int | ach3_se2e: 1 |
unsigned int | zero5: 4 |
unsigned int | ach4_gv1e: 1 |
unsigned int | ach4_gv2e: 1 |
unsigned int | ach4_gmBe: 1 |
unsigned int | ach4_seBe: 1 |
uint8_t | zero6 [19] |
unsigned char | code_mode: 3 |
unsigned char | zero1: 3 |
unsigned char | type: 2 |
uint8_t | zero2 |
uint16_t | nr_of_pre |
uint16_t | nr_of_post |
uint16_t | nr_of_cell |
uint16_t | zero_1 |
vm_cmd_t * | pre_cmds |
vm_cmd_t * | post_cmds |
vm_cmd_t * | cell_cmds |
unsigned int | block_mode: 2 |
unsigned int | block_type: 2 |
unsigned int | seamless_play: 1 |
unsigned int | interleaved: 1 |
unsigned int | stc_discontinuity: 1 |
unsigned int | seamless_angle: 1 |
unsigned int | playback_mode: 1 |
unsigned int | restricted: 1 |
unsigned int | unknown2: 6 |
uint8_t | still_time |
uint8_t | cell_cmd_nr |
dvd_time_t | playback_time |
uint32_t | first_sector |
uint32_t | first_ilvu_end_sector |
uint32_t | last_vobu_start_sector |
uint32_t | last_sector |
uint16_t | vob_id_nr |
uint8_t | zero_1 |
uint8_t | cell_nr |
unsigned int | zero: 7 |
unsigned int | video_pres_mode_change: 1 |
unsigned int | karaoke_audio_pres_mode_change: 1 |
unsigned int | angle_change: 1 |
unsigned int | subpic_stream_change: 1 |
unsigned int | audio_stream_change: 1 |
unsigned int | pause_on: 1 |
unsigned int | still_off: 1 |
unsigned int | button_select_or_activate: 1 |
unsigned int | resume: 1 |
unsigned int | chapter_menu_call: 1 |
unsigned int | angle_menu_call: 1 |
unsigned int | audio_menu_call: 1 |
unsigned int | subpic_menu_call: 1 |
unsigned int | root_menu_call: 1 |
unsigned int | title_menu_call: 1 |
unsigned int | backward_scan: 1 |
unsigned int | forward_scan: 1 |
unsigned int | next_pg_search: 1 |
unsigned int | prev_or_top_pg_search: 1 |
unsigned int | time_or_chapter_search: 1 |
unsigned int | go_up: 1 |
unsigned int | stop: 1 |
unsigned int | title_play: 1 |
unsigned int | chapter_search_or_play: 1 |
unsigned int | title_or_time_play: 1 |
uint8_t | nr_of_programs |
uint8_t | nr_of_cells |
user_ops_t | prohibited_ops |
uint16_t | audio_control [8] |
uint32_t | subp_control [32] |
uint16_t | next_pgc_nr |
uint16_t | prev_pgc_nr |
uint16_t | goup_pgc_nr |
uint8_t | pg_playback_mode |
uint32_t | palette [16] |
uint16_t | command_tbl_offset |
uint16_t | program_map_offset |
uint16_t | cell_playback_offset |
uint16_t | cell_position_offset |
pgc_command_tbl_t * | command_tbl |
pgc_program_map_t * | program_map |
cell_playback_t * | cell_playback |
cell_position_t * | cell_position |
int | ref_count |
uint8_t | entry_id |
unsigned int | unknown1: 4 |
uint16_t | ptl_id_mask |
uint32_t | pgc_start_byte |
pgc_t * | pgc |
uint16_t | nr_of_pgci_srp |
uint32_t | last_byte |
pgci_srp_t * | pgci_srp |
uint8_t | exists |
uint32_t | lang_start_byte |
pgcit_t * | pgcit |
uint16_t | nr_of_lus |
pgci_lu_t * | lu |
uint16_t | vob_id |
uint8_t | cell_id |
uint32_t | start_sector |
uint16_t | nr_of_vobs |
cell_adr_t * | cell_adr_table |
uint32_t * | vobu_start_sectors |
char | vmg_identifier [12] |
uint32_t | vmg_last_sector |
uint32_t | vmgi_last_sector |
uint8_t | zero_2 |
uint8_t | specification_version |
uint32_t | vmg_category |
uint16_t | vmg_nr_of_volumes |
uint16_t | vmg_this_volume_nr |
uint8_t | disc_side |
uint8_t | zero_3 [19] |
uint16_t | vmg_nr_of_title_sets |
char | provider_identifier [32] |
uint64_t | vmg_pos_code |
uint8_t | zero_4 [24] |
uint32_t | vmgi_last_byte |
uint32_t | first_play_pgc |
uint8_t | zero_5 [56] |
uint32_t | vmgm_vobs |
uint32_t | tt_srpt |
uint32_t | vmgm_pgci_ut |
uint32_t | ptl_mait |
uint32_t | vts_atrt |
uint32_t | txtdt_mgi |
uint32_t | vmgm_c_adt |
uint32_t | vmgm_vobu_admap |
uint8_t | zero_6 [32] |
video_attr_t | vmgm_video_attr |
uint8_t | zero_7 |
uint8_t | nr_of_vmgm_audio_streams |
audio_attr_t | vmgm_audio_attr |
audio_attr_t | zero_8 [7] |
uint8_t | zero_9 [17] |
uint8_t | nr_of_vmgm_subp_streams |
subp_attr_t | vmgm_subp_attr |
subp_attr_t | zero_10 [27] |
unsigned int | zero_1: 1 |
unsigned int | multi_or_random_pgc_title: 1 |
unsigned int | jlc_exists_in_cell_cmd: 1 |
unsigned int | jlc_exists_in_prepost_cmd: 1 |
unsigned int | jlc_exists_in_button_cmd: 1 |
unsigned int | jlc_exists_in_tt_dom: 1 |
playback_type_t | pb_ty |
uint8_t | nr_of_angles |
uint16_t | nr_of_ptts |
uint16_t | parental_id |
uint8_t | title_set_nr |
uint8_t | vts_ttn |
uint32_t | title_set_sector |
uint16_t | nr_of_srpts |
title_info_t * | title |
uint16_t | country_code |
uint16_t | pf_ptl_mai_start_byte |
uint16_t | zero_2 |
pf_level_t * | pf_ptl_mai |
uint16_t | nr_of_countries |
uint16_t | nr_of_vtss |
ptl_mait_country_t * | countries |
uint32_t | vts_cat |
video_attr_t | vtsm_vobs_attr |
uint8_t | nr_of_vtsm_audio_streams |
audio_attr_t | vtsm_audio_attr |
audio_attr_t | zero_2 [7] |
uint8_t | nr_of_vtsm_subp_streams |
subp_attr_t | vtsm_subp_attr |
subp_attr_t | zero_5 [27] |
video_attr_t | vtstt_vobs_video_attr |
uint8_t | nr_of_vtstt_audio_streams |
audio_attr_t | vtstt_audio_attr [8] |
uint8_t | zero_8 [16] |
uint8_t | nr_of_vtstt_subp_streams |
subp_attr_t | vtstt_subp_attr [32] |
vts_attributes_t * | vts |
uint32_t * | vts_atrt_offsets |
uint16_t | offsets [100] |
uint16_t | unknown |
uint32_t | txtdt_start_byte |
txtdt_t * | txtdt |
char | disc_name [14] |
uint16_t | nr_of_language_units |
txtdt_lu_t * | lu |
char | vts_identifier [12] |
uint32_t | vts_last_sector |
uint32_t | vtsi_last_sector |
uint32_t | vts_category |
uint16_t | zero_3 |
uint16_t | zero_4 |
uint16_t | zero_7 |
uint64_t | zero_9 |
uint8_t | zero_10 [24] |
uint32_t | vtsi_last_byte |
uint32_t | zero_11 |
uint8_t | zero_12 [56] |
uint32_t | vtsm_vobs |
uint32_t | vtstt_vobs |
uint32_t | vts_ptt_srpt |
uint32_t | vts_pgcit |
uint32_t | vtsm_pgci_ut |
uint32_t | vts_tmapt |
uint32_t | vtsm_c_adt |
uint32_t | vtsm_vobu_admap |
uint32_t | vts_c_adt |
uint32_t | vts_vobu_admap |
uint8_t | zero_13 [24] |
video_attr_t | vtsm_video_attr |
uint8_t | zero_14 |
audio_attr_t | zero_15 [7] |
uint8_t | zero_16 [17] |
subp_attr_t | zero_17 [27] |
uint8_t | zero_18 [2] |
video_attr_t | vts_video_attr |
uint8_t | zero_19 |
uint8_t | nr_of_vts_audio_streams |
audio_attr_t | vts_audio_attr [8] |
uint8_t | zero_20 [17] |
uint8_t | nr_of_vts_subp_streams |
subp_attr_t | vts_subp_attr [32] |
uint16_t | zero_21 |
multichannel_ext_t | vts_mu_audio_attr [8] |
uint16_t | pgcn |
uint16_t | pgn |
ptt_info_t * | ptt |
ttu_t * | title |
uint32_t * | ttu_offset |
uint8_t | tmu |
uint16_t | nr_of_entries |
map_ent_t * | map_ent |
uint16_t | nr_of_tmaps |
vts_tmap_t * | tmap |
uint32_t * | tmap_offset |
uint32_t | nv_pck_lbn |
uint16_t | vobu_cat |
uint16_t | zero1 |
user_ops_t | vobu_uop_ctl |
uint32_t | vobu_s_ptm |
uint32_t | vobu_e_ptm |
uint32_t | vobu_se_e_ptm |
dvd_time_t | e_eltm |
char | vobu_isrc [32] |
uint32_t | nsml_agl_dsta [9] |
uint16_t | hli_ss |
uint32_t | hli_s_ptm |
uint32_t | hli_e_ptm |
uint32_t | btn_se_e_ptm |
unsigned int | btngr_ns: 2 |
unsigned int | btngr1_dsp_ty: 3 |
unsigned int | btngr2_dsp_ty: 3 |
unsigned int | btngr3_dsp_ty: 3 |
uint8_t | btn_ofn |
uint8_t | btn_ns |
uint8_t | nsl_btn_ns |
uint8_t | zero5 |
uint8_t | fosl_btnn |
uint8_t | foac_btnn |
uint32_t | btn_coli [3][2] |
unsigned int | btn_coln: 2 |
unsigned int | x_start: 10 |
unsigned int | x_end: 10 |
unsigned int | auto_action_mode: 2 |
unsigned int | y_start: 10 |
unsigned int | y_end: 10 |
unsigned int | up: 6 |
unsigned int | down: 6 |
unsigned int | left: 6 |
unsigned int | zero6: 2 |
unsigned int | right: 6 |
vm_cmd_t | cmd |
hl_gi_t | hl_gi |
btn_colit_t | btn_colit |
btni_t | btnit [36] |
pci_gi_t | pci_gi |
nsml_agli_t | nsml_agli |
hli_t | hli |
uint8_t | zero1 [189] |
uint32_t | nv_pck_scr |
uint32_t | vobu_ea |
uint32_t | vobu_1stref_ea |
uint32_t | vobu_2ndref_ea |
uint32_t | vobu_3rdref_ea |
uint16_t | vobu_vob_idn |
uint8_t | vobu_c_idn |
dvd_time_t | c_eltm |
uint16_t | category |
uint32_t | ilvu_ea |
uint32_t | ilvu_sa |
uint16_t | size |
uint32_t | vob_v_s_s_ptm |
uint32_t | vob_v_e_e_ptm |
struct { | |
uint32_t stp_ptm1 | |
uint32_t stp_ptm2 | |
uint32_t gap_len1 | |
uint32_t gap_len2 | |
} | vob_a [8] |
uint32_t | address |
sml_agl_data_t | data [9] |
uint32_t | next_video |
uint32_t | fwda [19] |
uint32_t | next_vobu |
uint32_t | prev_vobu |
uint32_t | bwda [19] |
uint32_t | prev_video |
uint16_t | a_synca [8] |
uint32_t | sp_synca [32] |
dsi_gi_t | dsi_gi |
sml_pbi_t | sml_pbi |
sml_agli_t | sml_agli |
vobu_sri_t | vobu_sri |
synci_t | synci |
Common
The following structures are used in both the VMGI and VTSI. DVD Time Information.
Type to store per-command data.
Video Attributes.
Audio Attributes.
MultiChannel Extension
Subpicture Attributes.
PGC Command Table.
Cell Playback Information.
Cell Position Information.
User Operations.
Program Chain Information.
Program Chain Information Search Pointer.
Program Chain Information Table.
Menu PGCI Language Unit.
Menu PGCI Unit Table.
Cell Address Information.
Cell Address Table.
VOBU Address Map.
VMGI
The following structures relate to the Video Manager. Video Manager Information Management Table.
Title Information.
PartOfTitle Search Pointer Table.
Parental Management Information Unit Table.
Parental Management Information Table.
Video Title Set Attributes.
Video Title Set Attribute Table.
Text Data. (Incomplete)
Text Data Language Unit. (Incomplete)
Text Data Manager Information. (Incomplete)
VTS
Structures relating to the Video Title Set (VTS). Video Title Set Information Management Table.
PartOfTitle Unit Information.
PartOfTitle Information.
Time Map.
Time Map Table.
PCI General Information
Non Seamless Angle Information
Highlight General Information
For btngrX_dsp_ty the bits have the following meaning: 000b: normal 4/3 only buttons XX1b: wide (16/9) buttons X1Xb: letterbox buttons 1XXb: pan&scan buttons
Button Color Information Table Each entry beeing a 32bit word that contains the color indexs and alpha values to use. They are all represented by 4 bit number and stored like this [Ci3, Ci2, Ci1, Ci0, A3, A2, A1, A0]. The actual palette that the indexes reference is in the PGC. split the uint32_t into a struct
Button Information
NOTE: I've had to change the structure from the disk layout to get the packing to work with Sun's Forte C compiler. The 4 and 7 bytes are 'rotated' was: ABC DEF GHIJ is: ABCG DEFH IJ
Highlight Information
PCI packet
DSI General Information
Seamless Playback Information
Seamless Angle Information for one angle
Seamless Angle Information
VOBU Search Information
Synchronous Information
DSI packet
uint16_t ATTRIBUTE_PACKED::a_synca[8] |
offset to first audio packet for this VOBU
uint32_t ATTRIBUTE_PACKED::address |
offset to next ILVU, high bit is before/after
unsigned int ATTRIBUTE_PACKED::auto_action_mode |
0: no, 1: activated if selected
uint32_t ATTRIBUTE_PACKED::btn_coli[3][2] |
[button color number-1][select:0/action:1]
unsigned int ATTRIBUTE_PACKED::btn_coln |
button color number
uint8_t ATTRIBUTE_PACKED::btn_ns |
number of valid buttons <= 36/18/12 (low 6 bits)
uint8_t ATTRIBUTE_PACKED::btn_ofn |
button offset number range 0-255
uint32_t ATTRIBUTE_PACKED::btn_se_e_ptm |
end ptm of button select
unsigned int ATTRIBUTE_PACKED::btngr1_dsp_ty |
display type of subpic stream for button group 1
unsigned int ATTRIBUTE_PACKED::btngr2_dsp_ty |
display type of subpic stream for button group 2
unsigned int ATTRIBUTE_PACKED::btngr3_dsp_ty |
display type of subpic stream for button group 3
unsigned int ATTRIBUTE_PACKED::btngr_ns |
number of button groups 1, 2 or 3 with 36/18/12 buttons
uint32_t ATTRIBUTE_PACKED::bwda[19] |
Backwards, time
dvd_time_t ATTRIBUTE_PACKED::c_eltm |
Cell elapsed time
uint16_t ATTRIBUTE_PACKED::category |
'category' of seamless VOBU
unsigned int ATTRIBUTE_PACKED::down |
button index when pressing down
dvd_time_t ATTRIBUTE_PACKED::e_eltm |
Cell elapsed time
uint8_t ATTRIBUTE_PACKED::foac_btnn |
forcedly activated button (low 6 bits)
uint8_t ATTRIBUTE_PACKED::fosl_btnn |
forcedly selected button (low 6 bits)
uint32_t ATTRIBUTE_PACKED::fwda[19] |
Forwards, time
uint32_t ATTRIBUTE_PACKED::hli_e_ptm |
end ptm of hli
uint32_t ATTRIBUTE_PACKED::hli_s_ptm |
start ptm of hli
uint16_t ATTRIBUTE_PACKED::hli_ss |
status, only low 2 bits 0: no buttons, 1: different 2: equal 3: eual except for button cmds
uint32_t ATTRIBUTE_PACKED::ilvu_ea |
end address of interleaved Unit
uint32_t ATTRIBUTE_PACKED::ilvu_sa |
start address of next interleaved unit
unsigned int ATTRIBUTE_PACKED::left |
button index when pressing left
uint32_t ATTRIBUTE_PACKED::next_video |
Next vobu that contains video
uint8_t ATTRIBUTE_PACKED::nsl_btn_ns |
number of buttons selectable by U_BTNNi (low 6 bits) nsl_btn_ns <= btn_ns
uint32_t ATTRIBUTE_PACKED::nsml_agl_dsta[9] |
address of destination vobu in AGL_C::n
uint32_t ATTRIBUTE_PACKED::nv_pck_lbn |
sector address of this nav pack
unsigned int ATTRIBUTE_PACKED::playback_mode |
When set, enter StillMode after each VOBU
unsigned int ATTRIBUTE_PACKED::restricted |
?? drop out of fastforward?
unsigned int ATTRIBUTE_PACKED::right |
button index when pressing right
uint16_t ATTRIBUTE_PACKED::size |
size of next interleaved unit
byte size of the ILVU pointed to by address
uint32_t ATTRIBUTE_PACKED::sp_synca[32] |
offset to first subpicture packet
unsigned int ATTRIBUTE_PACKED::up |
button index when pressing up
uint32_t ATTRIBUTE_PACKED::vob_v_e_e_ptm |
video end ptm in vob
uint32_t ATTRIBUTE_PACKED::vob_v_s_s_ptm |
video start ptm in vob
uint32_t ATTRIBUTE_PACKED::vobu_1stref_ea |
end address of the 1st reference image
uint32_t ATTRIBUTE_PACKED::vobu_2ndref_ea |
end address of the 2nd reference image
uint32_t ATTRIBUTE_PACKED::vobu_3rdref_ea |
end address of the 3rd reference image
uint8_t ATTRIBUTE_PACKED::vobu_c_idn |
Cell Id number that this VOBU is part of
uint16_t ATTRIBUTE_PACKED::vobu_cat |
'category' of vobu
uint32_t ATTRIBUTE_PACKED::vobu_e_ptm |
end presentation time of vobu
uint32_t ATTRIBUTE_PACKED::vobu_ea |
end address of this VOBU
uint32_t ATTRIBUTE_PACKED::vobu_s_ptm |
start presentation time of vobu
uint32_t ATTRIBUTE_PACKED::vobu_se_e_ptm |
end ptm of sequence end in vobu
user_ops_t ATTRIBUTE_PACKED::vobu_uop_ctl |
UOP of vobu
uint16_t ATTRIBUTE_PACKED::vobu_vob_idn |
VOB Id number that this VOBU is part of
unsigned int ATTRIBUTE_PACKED::x_end |
x end offset within the overlay
unsigned int ATTRIBUTE_PACKED::x_start |
x start offset within the overlay
unsigned int ATTRIBUTE_PACKED::y_end |
y end offset within the overlay
unsigned int ATTRIBUTE_PACKED::y_start |
y start offset within the overlay
uint16_t ATTRIBUTE_PACKED::zero1 |
reserved
uint8_t ATTRIBUTE_PACKED::zero1 |
reserved
uint8_t ATTRIBUTE_PACKED::zero1[471] |
reserved
unsigned int ATTRIBUTE_PACKED::zero2 |
reserved
unsigned int ATTRIBUTE_PACKED::zero3 |
reserved
unsigned int ATTRIBUTE_PACKED::zero4 |
reserved
uint8_t ATTRIBUTE_PACKED::zero5 |
reserved
unsigned int ATTRIBUTE_PACKED::zero5 |
reserved
unsigned int ATTRIBUTE_PACKED::zero6 |
reserved