00001 /* 00002 * Copyright (C) 2000, 2001 Björn Englund <d4bjorn@dtek.chalmers.se>, 00003 * Håkan Hjort <d95hjort@dtek.chalmers.se> 00004 * 00005 * This file is part of libdvdread. 00006 * 00007 * libdvdread is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 2 of the License, or 00010 * (at your option) any later version. 00011 * 00012 * libdvdread is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License along 00018 * with libdvdread; if not, write to the Free Software Foundation, Inc., 00019 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00020 */ 00021 00022 #ifndef LIBDVDREAD_IFO_TYPES_H 00023 #define LIBDVDREAD_IFO_TYPES_H 00024 00025 #include <inttypes.h> 00026 #include "dvdread/dvd_reader.h" 00027 00028 00029 #undef ATTRIBUTE_PACKED 00030 #undef PRAGMA_PACK_BEGIN 00031 #undef PRAGMA_PACK_END 00032 00033 #if defined(__GNUC__) 00034 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) 00035 #define ATTRIBUTE_PACKED __attribute__ ((packed)) 00036 #define PRAGMA_PACK 0 00037 #endif 00038 #endif 00039 00040 #if !defined(ATTRIBUTE_PACKED) 00041 #define ATTRIBUTE_PACKED 00042 #define PRAGMA_PACK 1 00043 #endif 00044 00045 #if PRAGMA_PACK 00046 #pragma pack(1) 00047 #endif 00048 00049 00060 typedef struct { 00061 uint8_t hour; 00062 uint8_t minute; 00063 uint8_t second; 00064 uint8_t frame_u; /* The two high bits are the frame rate. */ 00065 } ATTRIBUTE_PACKED dvd_time_t; 00066 00070 typedef struct { 00071 uint8_t bytes[8]; 00072 } ATTRIBUTE_PACKED vm_cmd_t; 00073 #define COMMAND_DATA_SIZE 8U 00074 00075 00079 typedef struct { 00080 unsigned char mpeg_version : 2; 00081 unsigned char video_format : 2; 00082 unsigned char display_aspect_ratio : 2; 00083 unsigned char permitted_df : 2; 00084 00085 unsigned char line21_cc_1 : 1; 00086 unsigned char line21_cc_2 : 1; 00087 unsigned char unknown1 : 1; 00088 unsigned char bit_rate : 1; 00089 00090 unsigned char picture_size : 2; 00091 unsigned char letterboxed : 1; 00092 unsigned char film_mode : 1; 00093 } ATTRIBUTE_PACKED video_attr_t; 00094 00098 typedef struct { 00099 unsigned char audio_format : 3; 00100 unsigned char multichannel_extension : 1; 00101 unsigned char lang_type : 2; 00102 unsigned char application_mode : 2; 00103 00104 unsigned char quantization : 2; 00105 unsigned char sample_frequency : 2; 00106 unsigned char unknown1 : 1; 00107 unsigned char channels : 3; 00108 uint16_t lang_code; 00109 uint8_t lang_extension; 00110 uint8_t code_extension; 00111 uint8_t unknown3; 00112 union { 00113 struct ATTRIBUTE_PACKED { 00114 unsigned char unknown4 : 1; 00115 unsigned char channel_assignment : 3; 00116 unsigned char version : 2; 00117 unsigned char mc_intro : 1; /* probably 0: true, 1:false */ 00118 unsigned char mode : 1; /* Karaoke mode 0: solo 1: duet */ 00119 } karaoke; 00120 struct ATTRIBUTE_PACKED { 00121 unsigned char unknown5 : 4; 00122 unsigned char dolby_encoded : 1; /* suitable for surround decoding */ 00123 unsigned char unknown6 : 3; 00124 } surround; 00125 } ATTRIBUTE_PACKED app_info; 00126 } ATTRIBUTE_PACKED audio_attr_t; 00127 00128 00132 typedef struct { 00133 unsigned int zero1 : 7; 00134 unsigned int ach0_gme : 1; 00135 00136 unsigned int zero2 : 7; 00137 unsigned int ach1_gme : 1; 00138 00139 unsigned int zero3 : 4; 00140 unsigned int ach2_gv1e : 1; 00141 unsigned int ach2_gv2e : 1; 00142 unsigned int ach2_gm1e : 1; 00143 unsigned int ach2_gm2e : 1; 00144 00145 unsigned int zero4 : 4; 00146 unsigned int ach3_gv1e : 1; 00147 unsigned int ach3_gv2e : 1; 00148 unsigned int ach3_gmAe : 1; 00149 unsigned int ach3_se2e : 1; 00150 00151 unsigned int zero5 : 4; 00152 unsigned int ach4_gv1e : 1; 00153 unsigned int ach4_gv2e : 1; 00154 unsigned int ach4_gmBe : 1; 00155 unsigned int ach4_seBe : 1; 00156 uint8_t zero6[19]; 00157 } ATTRIBUTE_PACKED multichannel_ext_t; 00158 00159 00163 typedef struct { 00164 /* 00165 * type: 0 not specified 00166 * 1 language 00167 * 2 other 00168 * coding mode: 0 run length 00169 * 1 extended 00170 * 2 other 00171 * language: indicates language if type == 1 00172 * lang extension: if type == 1 contains the lang extension 00173 */ 00174 unsigned char code_mode : 3; 00175 unsigned char zero1 : 3; 00176 unsigned char type : 2; 00177 uint8_t zero2; 00178 uint16_t lang_code; 00179 uint8_t lang_extension; 00180 uint8_t code_extension; 00181 } ATTRIBUTE_PACKED subp_attr_t; 00182 00183 00184 00188 typedef struct { 00189 uint16_t nr_of_pre; 00190 uint16_t nr_of_post; 00191 uint16_t nr_of_cell; 00192 uint16_t zero_1; 00193 vm_cmd_t *pre_cmds; 00194 vm_cmd_t *post_cmds; 00195 vm_cmd_t *cell_cmds; 00196 } ATTRIBUTE_PACKED pgc_command_tbl_t; 00197 #define PGC_COMMAND_TBL_SIZE 8U 00198 00202 typedef uint8_t pgc_program_map_t; 00203 00207 typedef struct { 00208 unsigned int block_mode : 2; 00209 unsigned int block_type : 2; 00210 unsigned int seamless_play : 1; 00211 unsigned int interleaved : 1; 00212 unsigned int stc_discontinuity: 1; 00213 unsigned int seamless_angle : 1; 00214 00215 unsigned int playback_mode : 1; 00216 unsigned int restricted : 1; 00217 unsigned int unknown2 : 6; 00218 uint8_t still_time; 00219 uint8_t cell_cmd_nr; 00220 dvd_time_t playback_time; 00221 uint32_t first_sector; 00222 uint32_t first_ilvu_end_sector; 00223 uint32_t last_vobu_start_sector; 00224 uint32_t last_sector; 00225 } ATTRIBUTE_PACKED cell_playback_t; 00226 00227 #define BLOCK_TYPE_NONE 0x0 00228 #define BLOCK_TYPE_ANGLE_BLOCK 0x1 00229 00230 #define BLOCK_MODE_NOT_IN_BLOCK 0x0 00231 #define BLOCK_MODE_FIRST_CELL 0x1 00232 #define BLOCK_MODE_IN_BLOCK 0x2 00233 #define BLOCK_MODE_LAST_CELL 0x3 00234 00238 typedef struct { 00239 uint16_t vob_id_nr; 00240 uint8_t zero_1; 00241 uint8_t cell_nr; 00242 } ATTRIBUTE_PACKED cell_position_t; 00243 00247 typedef struct { 00248 unsigned int zero : 7; /* 25-31 */ 00249 unsigned int video_pres_mode_change : 1; /* 24 */ 00250 00251 unsigned int karaoke_audio_pres_mode_change : 1; /* 23 */ 00252 unsigned int angle_change : 1; 00253 unsigned int subpic_stream_change : 1; 00254 unsigned int audio_stream_change : 1; 00255 unsigned int pause_on : 1; 00256 unsigned int still_off : 1; 00257 unsigned int button_select_or_activate : 1; 00258 unsigned int resume : 1; /* 16 */ 00259 00260 unsigned int chapter_menu_call : 1; /* 15 */ 00261 unsigned int angle_menu_call : 1; 00262 unsigned int audio_menu_call : 1; 00263 unsigned int subpic_menu_call : 1; 00264 unsigned int root_menu_call : 1; 00265 unsigned int title_menu_call : 1; 00266 unsigned int backward_scan : 1; 00267 unsigned int forward_scan : 1; /* 8 */ 00268 00269 unsigned int next_pg_search : 1; /* 7 */ 00270 unsigned int prev_or_top_pg_search : 1; 00271 unsigned int time_or_chapter_search : 1; 00272 unsigned int go_up : 1; 00273 unsigned int stop : 1; 00274 unsigned int title_play : 1; 00275 unsigned int chapter_search_or_play : 1; 00276 unsigned int title_or_time_play : 1; /* 0 */ 00277 } ATTRIBUTE_PACKED user_ops_t; 00278 00282 typedef struct { 00283 uint16_t zero_1; 00284 uint8_t nr_of_programs; 00285 uint8_t nr_of_cells; 00286 dvd_time_t playback_time; 00287 user_ops_t prohibited_ops; 00288 uint16_t audio_control[8]; /* New type? */ 00289 uint32_t subp_control[32]; /* New type? */ 00290 uint16_t next_pgc_nr; 00291 uint16_t prev_pgc_nr; 00292 uint16_t goup_pgc_nr; 00293 uint8_t still_time; 00294 uint8_t pg_playback_mode; 00295 uint32_t palette[16]; /* New type struct {zero_1, Y, Cr, Cb} ? */ 00296 uint16_t command_tbl_offset; 00297 uint16_t program_map_offset; 00298 uint16_t cell_playback_offset; 00299 uint16_t cell_position_offset; 00300 pgc_command_tbl_t *command_tbl; 00301 pgc_program_map_t *program_map; 00302 cell_playback_t *cell_playback; 00303 cell_position_t *cell_position; 00304 } ATTRIBUTE_PACKED pgc_t; 00305 #define PGC_SIZE 236U 00306 00310 typedef struct { 00311 uint8_t entry_id; 00312 unsigned int block_mode : 2; 00313 unsigned int block_type : 2; 00314 unsigned int unknown1 : 4; 00315 uint16_t ptl_id_mask; 00316 uint32_t pgc_start_byte; 00317 pgc_t *pgc; 00318 } ATTRIBUTE_PACKED pgci_srp_t; 00319 #define PGCI_SRP_SIZE 8U 00320 00324 typedef struct { 00325 uint16_t nr_of_pgci_srp; 00326 uint16_t zero_1; 00327 uint32_t last_byte; 00328 pgci_srp_t *pgci_srp; 00329 } ATTRIBUTE_PACKED pgcit_t; 00330 #define PGCIT_SIZE 8U 00331 00335 typedef struct { 00336 uint16_t lang_code; 00337 uint8_t lang_extension; 00338 uint8_t exists; 00339 uint32_t lang_start_byte; 00340 pgcit_t *pgcit; 00341 } ATTRIBUTE_PACKED pgci_lu_t; 00342 #define PGCI_LU_SIZE 8U 00343 00347 typedef struct { 00348 uint16_t nr_of_lus; 00349 uint16_t zero_1; 00350 uint32_t last_byte; 00351 pgci_lu_t *lu; 00352 } ATTRIBUTE_PACKED pgci_ut_t; 00353 #define PGCI_UT_SIZE 8U 00354 00358 typedef struct { 00359 uint16_t vob_id; 00360 uint8_t cell_id; 00361 uint8_t zero_1; 00362 uint32_t start_sector; 00363 uint32_t last_sector; 00364 } ATTRIBUTE_PACKED cell_adr_t; 00365 00369 typedef struct { 00370 uint16_t nr_of_vobs; /* VOBs */ 00371 uint16_t zero_1; 00372 uint32_t last_byte; 00373 cell_adr_t *cell_adr_table; /* No explicit size given. */ 00374 } ATTRIBUTE_PACKED c_adt_t; 00375 #define C_ADT_SIZE 8U 00376 00380 typedef struct { 00381 uint32_t last_byte; 00382 uint32_t *vobu_start_sectors; 00383 } ATTRIBUTE_PACKED vobu_admap_t; 00384 #define VOBU_ADMAP_SIZE 4U 00385 00386 00387 00388 00398 typedef struct { 00399 char vmg_identifier[12]; 00400 uint32_t vmg_last_sector; 00401 uint8_t zero_1[12]; 00402 uint32_t vmgi_last_sector; 00403 uint8_t zero_2; 00404 uint8_t specification_version; 00405 uint32_t vmg_category; 00406 uint16_t vmg_nr_of_volumes; 00407 uint16_t vmg_this_volume_nr; 00408 uint8_t disc_side; 00409 uint8_t zero_3[19]; 00410 uint16_t vmg_nr_of_title_sets; /* Number of VTSs. */ 00411 char provider_identifier[32]; 00412 uint64_t vmg_pos_code; 00413 uint8_t zero_4[24]; 00414 uint32_t vmgi_last_byte; 00415 uint32_t first_play_pgc; 00416 uint8_t zero_5[56]; 00417 uint32_t vmgm_vobs; /* sector */ 00418 uint32_t tt_srpt; /* sector */ 00419 uint32_t vmgm_pgci_ut; /* sector */ 00420 uint32_t ptl_mait; /* sector */ 00421 uint32_t vts_atrt; /* sector */ 00422 uint32_t txtdt_mgi; /* sector */ 00423 uint32_t vmgm_c_adt; /* sector */ 00424 uint32_t vmgm_vobu_admap; /* sector */ 00425 uint8_t zero_6[32]; 00426 00427 video_attr_t vmgm_video_attr; 00428 uint8_t zero_7; 00429 uint8_t nr_of_vmgm_audio_streams; /* should be 0 or 1 */ 00430 audio_attr_t vmgm_audio_attr; 00431 audio_attr_t zero_8[7]; 00432 uint8_t zero_9[17]; 00433 uint8_t nr_of_vmgm_subp_streams; /* should be 0 or 1 */ 00434 subp_attr_t vmgm_subp_attr; 00435 subp_attr_t zero_10[27]; /* XXX: how much 'padding' here? */ 00436 } ATTRIBUTE_PACKED vmgi_mat_t; 00437 00438 typedef struct { 00439 unsigned int zero_1 : 1; 00440 unsigned int multi_or_random_pgc_title : 1; /* 0: one sequential pgc title */ 00441 unsigned int jlc_exists_in_cell_cmd : 1; 00442 unsigned int jlc_exists_in_prepost_cmd : 1; 00443 unsigned int jlc_exists_in_button_cmd : 1; 00444 unsigned int jlc_exists_in_tt_dom : 1; 00445 unsigned int chapter_search_or_play : 1; /* UOP 1 */ 00446 unsigned int title_or_time_play : 1; /* UOP 0 */ 00447 } ATTRIBUTE_PACKED playback_type_t; 00448 00452 typedef struct { 00453 playback_type_t pb_ty; 00454 uint8_t nr_of_angles; 00455 uint16_t nr_of_ptts; 00456 uint16_t parental_id; 00457 uint8_t title_set_nr; 00458 uint8_t vts_ttn; 00459 uint32_t title_set_sector; 00460 } ATTRIBUTE_PACKED title_info_t; 00461 00465 typedef struct { 00466 uint16_t nr_of_srpts; 00467 uint16_t zero_1; 00468 uint32_t last_byte; 00469 title_info_t *title; 00470 } ATTRIBUTE_PACKED tt_srpt_t; 00471 #define TT_SRPT_SIZE 8U 00472 00473 00478 #define PTL_MAIT_NUM_LEVEL 8 00479 typedef uint16_t pf_level_t[PTL_MAIT_NUM_LEVEL]; 00480 00484 typedef struct { 00485 uint16_t country_code; 00486 uint16_t zero_1; 00487 uint16_t pf_ptl_mai_start_byte; 00488 uint16_t zero_2; 00489 pf_level_t *pf_ptl_mai; /* table of (nr_of_vtss + 1), video_ts is first */ 00490 } ATTRIBUTE_PACKED ptl_mait_country_t; 00491 #define PTL_MAIT_COUNTRY_SIZE 8U 00492 00496 typedef struct { 00497 uint16_t nr_of_countries; 00498 uint16_t nr_of_vtss; 00499 uint32_t last_byte; 00500 ptl_mait_country_t *countries; 00501 } ATTRIBUTE_PACKED ptl_mait_t; 00502 #define PTL_MAIT_SIZE 8U 00503 00507 typedef struct { 00508 uint32_t last_byte; 00509 uint32_t vts_cat; 00510 00511 video_attr_t vtsm_vobs_attr; 00512 uint8_t zero_1; 00513 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */ 00514 audio_attr_t vtsm_audio_attr; 00515 audio_attr_t zero_2[7]; 00516 uint8_t zero_3[16]; 00517 uint8_t zero_4; 00518 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */ 00519 subp_attr_t vtsm_subp_attr; 00520 subp_attr_t zero_5[27]; 00521 00522 uint8_t zero_6[2]; 00523 00524 video_attr_t vtstt_vobs_video_attr; 00525 uint8_t zero_7; 00526 uint8_t nr_of_vtstt_audio_streams; 00527 audio_attr_t vtstt_audio_attr[8]; 00528 uint8_t zero_8[16]; 00529 uint8_t zero_9; 00530 uint8_t nr_of_vtstt_subp_streams; 00531 subp_attr_t vtstt_subp_attr[32]; 00532 } ATTRIBUTE_PACKED vts_attributes_t; 00533 #define VTS_ATTRIBUTES_SIZE 542U 00534 #define VTS_ATTRIBUTES_MIN_SIZE 356U 00535 00539 typedef struct { 00540 uint16_t nr_of_vtss; 00541 uint16_t zero_1; 00542 uint32_t last_byte; 00543 vts_attributes_t *vts; 00544 uint32_t *vts_atrt_offsets; /* offsets table for each vts_attributes */ 00545 } ATTRIBUTE_PACKED vts_atrt_t; 00546 #define VTS_ATRT_SIZE 8U 00547 00551 typedef struct { 00552 uint32_t last_byte; /* offsets are relative here */ 00553 uint16_t offsets[100]; /* == nr_of_srpts + 1 (first is disc title) */ 00554 #if 0 00555 uint16_t unknown; /* 0x48 ?? 0x48 words (16bit) info following */ 00556 uint16_t zero_1; 00557 00558 uint8_t type_of_info; /* ?? 01 == disc, 02 == Title, 04 == Title part */ 00559 uint8_t unknown1; 00560 uint8_t unknown2; 00561 uint8_t unknown3; 00562 uint8_t unknown4; /* ?? allways 0x30 language?, text format? */ 00563 uint8_t unknown5; 00564 uint16_t offset; /* from first */ 00565 00566 char text[12]; /* ended by 0x09 */ 00567 #endif 00568 } ATTRIBUTE_PACKED txtdt_t; 00569 00573 typedef struct { 00574 uint16_t lang_code; 00575 uint16_t unknown; /* 0x0001, title 1? disc 1? side 1? */ 00576 uint32_t txtdt_start_byte; /* prt, rel start of vmg_txtdt_mgi */ 00577 txtdt_t *txtdt; 00578 } ATTRIBUTE_PACKED txtdt_lu_t; 00579 #define TXTDT_LU_SIZE 8U 00580 00584 typedef struct { 00585 char disc_name[14]; /* how many bytes?? */ 00586 uint16_t nr_of_language_units; /* 32bit?? */ 00587 uint32_t last_byte; 00588 txtdt_lu_t *lu; 00589 } ATTRIBUTE_PACKED txtdt_mgi_t; 00590 #define TXTDT_MGI_SIZE 20U 00591 00592 00602 typedef struct { 00603 char vts_identifier[12]; 00604 uint32_t vts_last_sector; 00605 uint8_t zero_1[12]; 00606 uint32_t vtsi_last_sector; 00607 uint8_t zero_2; 00608 uint8_t specification_version; 00609 uint32_t vts_category; 00610 uint16_t zero_3; 00611 uint16_t zero_4; 00612 uint8_t zero_5; 00613 uint8_t zero_6[19]; 00614 uint16_t zero_7; 00615 uint8_t zero_8[32]; 00616 uint64_t zero_9; 00617 uint8_t zero_10[24]; 00618 uint32_t vtsi_last_byte; 00619 uint32_t zero_11; 00620 uint8_t zero_12[56]; 00621 uint32_t vtsm_vobs; /* sector */ 00622 uint32_t vtstt_vobs; /* sector */ 00623 uint32_t vts_ptt_srpt; /* sector */ 00624 uint32_t vts_pgcit; /* sector */ 00625 uint32_t vtsm_pgci_ut; /* sector */ 00626 uint32_t vts_tmapt; /* sector */ 00627 uint32_t vtsm_c_adt; /* sector */ 00628 uint32_t vtsm_vobu_admap; /* sector */ 00629 uint32_t vts_c_adt; /* sector */ 00630 uint32_t vts_vobu_admap; /* sector */ 00631 uint8_t zero_13[24]; 00632 00633 video_attr_t vtsm_video_attr; 00634 uint8_t zero_14; 00635 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */ 00636 audio_attr_t vtsm_audio_attr; 00637 audio_attr_t zero_15[7]; 00638 uint8_t zero_16[17]; 00639 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */ 00640 subp_attr_t vtsm_subp_attr; 00641 subp_attr_t zero_17[27]; 00642 uint8_t zero_18[2]; 00643 00644 video_attr_t vts_video_attr; 00645 uint8_t zero_19; 00646 uint8_t nr_of_vts_audio_streams; 00647 audio_attr_t vts_audio_attr[8]; 00648 uint8_t zero_20[17]; 00649 uint8_t nr_of_vts_subp_streams; 00650 subp_attr_t vts_subp_attr[32]; 00651 uint16_t zero_21; 00652 multichannel_ext_t vts_mu_audio_attr[8]; 00653 /* XXX: how much 'padding' here, if any? */ 00654 } ATTRIBUTE_PACKED vtsi_mat_t; 00655 00659 typedef struct { 00660 uint16_t pgcn; 00661 uint16_t pgn; 00662 } ATTRIBUTE_PACKED ptt_info_t; 00663 00667 typedef struct { 00668 uint16_t nr_of_ptts; 00669 ptt_info_t *ptt; 00670 } ATTRIBUTE_PACKED ttu_t; 00671 00675 typedef struct { 00676 uint16_t nr_of_srpts; 00677 uint16_t zero_1; 00678 uint32_t last_byte; 00679 ttu_t *title; 00680 uint32_t *ttu_offset; /* offset table for each ttu */ 00681 } ATTRIBUTE_PACKED vts_ptt_srpt_t; 00682 #define VTS_PTT_SRPT_SIZE 8U 00683 00684 00688 /* Should this be bit field at all or just the uint32_t? */ 00689 typedef uint32_t map_ent_t; 00690 00694 typedef struct { 00695 uint8_t tmu; /* Time unit, in seconds */ 00696 uint8_t zero_1; 00697 uint16_t nr_of_entries; 00698 map_ent_t *map_ent; 00699 } ATTRIBUTE_PACKED vts_tmap_t; 00700 #define VTS_TMAP_SIZE 4U 00701 00705 typedef struct { 00706 uint16_t nr_of_tmaps; 00707 uint16_t zero_1; 00708 uint32_t last_byte; 00709 vts_tmap_t *tmap; 00710 uint32_t *tmap_offset; /* offset table for each tmap */ 00711 } ATTRIBUTE_PACKED vts_tmapt_t; 00712 #define VTS_TMAPT_SIZE 8U 00713 00714 00715 #if PRAGMA_PACK 00716 #pragma pack() 00717 #endif 00718 00719 00726 typedef struct { 00727 dvd_file_t *file; 00728 00729 /* VMGI */ 00730 vmgi_mat_t *vmgi_mat; 00731 tt_srpt_t *tt_srpt; 00732 pgc_t *first_play_pgc; 00733 ptl_mait_t *ptl_mait; 00734 vts_atrt_t *vts_atrt; 00735 txtdt_mgi_t *txtdt_mgi; 00736 00737 /* Common */ 00738 pgci_ut_t *pgci_ut; 00739 c_adt_t *menu_c_adt; 00740 vobu_admap_t *menu_vobu_admap; 00741 00742 /* VTSI */ 00743 vtsi_mat_t *vtsi_mat; 00744 vts_ptt_srpt_t *vts_ptt_srpt; 00745 pgcit_t *vts_pgcit; 00746 vts_tmapt_t *vts_tmapt; 00747 c_adt_t *vts_c_adt; 00748 vobu_admap_t *vts_vobu_admap; 00749 } ifo_handle_t; 00750 00751 #endif /* LIBDVDREAD_IFO_TYPES_H */
1.6.3