22 #ifndef LIBDVDREAD_IFO_TYPES_H
23 #define LIBDVDREAD_IFO_TYPES_H
26 #include "dvdread/dvd_reader.h"
29 #undef ATTRIBUTE_PACKED
30 #undef PRAGMA_PACK_BEGIN
31 #undef PRAGMA_PACK_END
34 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
35 #define ATTRIBUTE_PACKED __attribute__ ((packed))
40 #if !defined(ATTRIBUTE_PACKED)
41 #define ATTRIBUTE_PACKED
73 #define COMMAND_DATA_SIZE 8U
80 unsigned char mpeg_version : 2;
81 unsigned char video_format : 2;
82 unsigned char display_aspect_ratio : 2;
83 unsigned char permitted_df : 2;
85 unsigned char line21_cc_1 : 1;
86 unsigned char line21_cc_2 : 1;
87 unsigned char unknown1 : 1;
88 unsigned char bit_rate : 1;
90 unsigned char picture_size : 2;
91 unsigned char letterboxed : 1;
92 unsigned char film_mode : 1;
99 unsigned char audio_format : 3;
100 unsigned char multichannel_extension : 1;
101 unsigned char lang_type : 2;
102 unsigned char application_mode : 2;
104 unsigned char quantization : 2;
105 unsigned char sample_frequency : 2;
106 unsigned char unknown1 : 1;
107 unsigned char channels : 3;
109 uint8_t lang_extension;
110 uint8_t code_extension;
114 unsigned char unknown4 : 1;
115 unsigned char channel_assignment : 3;
116 unsigned char version : 2;
117 unsigned char mc_intro : 1;
118 unsigned char mode : 1;
121 unsigned char unknown5 : 4;
122 unsigned char dolby_encoded : 1;
123 unsigned char unknown6 : 3;
133 unsigned int zero1 : 7;
134 unsigned int ach0_gme : 1;
136 unsigned int zero2 : 7;
137 unsigned int ach1_gme : 1;
139 unsigned int zero3 : 4;
140 unsigned int ach2_gv1e : 1;
141 unsigned int ach2_gv2e : 1;
142 unsigned int ach2_gm1e : 1;
143 unsigned int ach2_gm2e : 1;
145 unsigned int zero4 : 4;
146 unsigned int ach3_gv1e : 1;
147 unsigned int ach3_gv2e : 1;
148 unsigned int ach3_gmAe : 1;
149 unsigned int ach3_se2e : 1;
151 unsigned int zero5 : 4;
152 unsigned int ach4_gv1e : 1;
153 unsigned int ach4_gv2e : 1;
154 unsigned int ach4_gmBe : 1;
155 unsigned int ach4_seBe : 1;
174 unsigned char code_mode : 3;
175 unsigned char zero1 : 3;
176 unsigned char type : 2;
179 uint8_t lang_extension;
180 uint8_t code_extension;
197 #define PGC_COMMAND_TBL_SIZE 8U
202 typedef uint8_t pgc_program_map_t;
208 unsigned int block_mode : 2;
209 unsigned int block_type : 2;
210 unsigned int seamless_play : 1;
211 unsigned int interleaved : 1;
212 unsigned int stc_discontinuity: 1;
213 unsigned int seamless_angle : 1;
215 unsigned int playback_mode : 1;
216 unsigned int restricted : 1;
217 unsigned int unknown2 : 6;
220 dvd_time_t playback_time;
221 uint32_t first_sector;
222 uint32_t first_ilvu_end_sector;
223 uint32_t last_vobu_start_sector;
224 uint32_t last_sector;
227 #define BLOCK_TYPE_NONE 0x0
228 #define BLOCK_TYPE_ANGLE_BLOCK 0x1
230 #define BLOCK_MODE_NOT_IN_BLOCK 0x0
231 #define BLOCK_MODE_FIRST_CELL 0x1
232 #define BLOCK_MODE_IN_BLOCK 0x2
233 #define BLOCK_MODE_LAST_CELL 0x3
248 unsigned int zero : 7;
249 unsigned int video_pres_mode_change : 1;
251 unsigned int karaoke_audio_pres_mode_change : 1;
252 unsigned int angle_change : 1;
253 unsigned int subpic_stream_change : 1;
254 unsigned int audio_stream_change : 1;
255 unsigned int pause_on : 1;
256 unsigned int still_off : 1;
257 unsigned int button_select_or_activate : 1;
258 unsigned int resume : 1;
260 unsigned int chapter_menu_call : 1;
261 unsigned int angle_menu_call : 1;
262 unsigned int audio_menu_call : 1;
263 unsigned int subpic_menu_call : 1;
264 unsigned int root_menu_call : 1;
265 unsigned int title_menu_call : 1;
266 unsigned int backward_scan : 1;
267 unsigned int forward_scan : 1;
269 unsigned int next_pg_search : 1;
270 unsigned int prev_or_top_pg_search : 1;
271 unsigned int time_or_chapter_search : 1;
272 unsigned int go_up : 1;
273 unsigned int stop : 1;
274 unsigned int title_play : 1;
275 unsigned int chapter_search_or_play : 1;
276 unsigned int title_or_time_play : 1;
284 uint8_t nr_of_programs;
286 dvd_time_t playback_time;
287 user_ops_t prohibited_ops;
288 uint16_t audio_control[8];
289 uint32_t subp_control[32];
290 uint16_t next_pgc_nr;
291 uint16_t prev_pgc_nr;
292 uint16_t goup_pgc_nr;
294 uint8_t pg_playback_mode;
295 uint32_t palette[16];
296 uint16_t command_tbl_offset;
297 uint16_t program_map_offset;
298 uint16_t cell_playback_offset;
299 uint16_t cell_position_offset;
300 pgc_command_tbl_t *command_tbl;
301 pgc_program_map_t *program_map;
302 cell_playback_t *cell_playback;
303 cell_position_t *cell_position;
306 #define PGC_SIZE 236U
313 unsigned int block_mode : 2;
314 unsigned int block_type : 2;
315 unsigned int unknown1 : 4;
316 uint16_t ptl_id_mask;
317 uint32_t pgc_start_byte;
320 #define PGCI_SRP_SIZE 8U
326 uint16_t nr_of_pgci_srp;
329 pgci_srp_t *pgci_srp;
332 #define PGCIT_SIZE 8U
339 uint8_t lang_extension;
341 uint32_t lang_start_byte;
344 #define PGCI_LU_SIZE 8U
355 #define PGCI_UT_SIZE 8U
364 uint32_t start_sector;
365 uint32_t last_sector;
375 cell_adr_t *cell_adr_table;
377 #define C_ADT_SIZE 8U
384 uint32_t *vobu_start_sectors;
386 #define VOBU_ADMAP_SIZE 4U
401 char vmg_identifier[12];
402 uint32_t vmg_last_sector;
404 uint32_t vmgi_last_sector;
406 uint8_t specification_version;
407 uint32_t vmg_category;
408 uint16_t vmg_nr_of_volumes;
409 uint16_t vmg_this_volume_nr;
412 uint16_t vmg_nr_of_title_sets;
413 char provider_identifier[32];
414 uint64_t vmg_pos_code;
416 uint32_t vmgi_last_byte;
417 uint32_t first_play_pgc;
421 uint32_t vmgm_pgci_ut;
426 uint32_t vmgm_vobu_admap;
429 video_attr_t vmgm_video_attr;
431 uint8_t nr_of_vmgm_audio_streams;
432 audio_attr_t vmgm_audio_attr;
433 audio_attr_t zero_8[7];
435 uint8_t nr_of_vmgm_subp_streams;
436 subp_attr_t vmgm_subp_attr;
437 subp_attr_t zero_10[27];
441 unsigned int zero_1 : 1;
442 unsigned int multi_or_random_pgc_title : 1;
443 unsigned int jlc_exists_in_cell_cmd : 1;
444 unsigned int jlc_exists_in_prepost_cmd : 1;
445 unsigned int jlc_exists_in_button_cmd : 1;
446 unsigned int jlc_exists_in_tt_dom : 1;
447 unsigned int chapter_search_or_play : 1;
448 unsigned int title_or_time_play : 1;
455 playback_type_t pb_ty;
456 uint8_t nr_of_angles;
458 uint16_t parental_id;
459 uint8_t title_set_nr;
461 uint32_t title_set_sector;
468 uint16_t nr_of_srpts;
473 #define TT_SRPT_SIZE 8U
480 #define PTL_MAIT_NUM_LEVEL 8
481 typedef uint16_t pf_level_t[PTL_MAIT_NUM_LEVEL];
487 uint16_t country_code;
489 uint16_t pf_ptl_mai_start_byte;
491 pf_level_t *pf_ptl_mai;
493 #define PTL_MAIT_COUNTRY_SIZE 8U
499 uint16_t nr_of_countries;
502 ptl_mait_country_t *countries;
504 #define PTL_MAIT_SIZE 8U
513 video_attr_t vtsm_vobs_attr;
515 uint8_t nr_of_vtsm_audio_streams;
516 audio_attr_t vtsm_audio_attr;
517 audio_attr_t zero_2[7];
520 uint8_t nr_of_vtsm_subp_streams;
521 subp_attr_t vtsm_subp_attr;
522 subp_attr_t zero_5[27];
526 video_attr_t vtstt_vobs_video_attr;
528 uint8_t nr_of_vtstt_audio_streams;
529 audio_attr_t vtstt_audio_attr[8];
532 uint8_t nr_of_vtstt_subp_streams;
533 subp_attr_t vtstt_subp_attr[32];
535 #define VTS_ATTRIBUTES_SIZE 542U
536 #define VTS_ATTRIBUTES_MIN_SIZE 356U
545 vts_attributes_t *vts;
546 uint32_t *vts_atrt_offsets;
548 #define VTS_ATRT_SIZE 8U
555 uint16_t offsets[100];
560 uint8_t type_of_info;
578 uint32_t txtdt_start_byte;
581 #define TXTDT_LU_SIZE 8U
588 uint16_t nr_of_language_units;
592 #define TXTDT_MGI_SIZE 20U
605 char vts_identifier[12];
606 uint32_t vts_last_sector;
608 uint32_t vtsi_last_sector;
610 uint8_t specification_version;
611 uint32_t vts_category;
620 uint32_t vtsi_last_byte;
625 uint32_t vts_ptt_srpt;
627 uint32_t vtsm_pgci_ut;
630 uint32_t vtsm_vobu_admap;
632 uint32_t vts_vobu_admap;
635 video_attr_t vtsm_video_attr;
637 uint8_t nr_of_vtsm_audio_streams;
638 audio_attr_t vtsm_audio_attr;
639 audio_attr_t zero_15[7];
641 uint8_t nr_of_vtsm_subp_streams;
642 subp_attr_t vtsm_subp_attr;
643 subp_attr_t zero_17[27];
646 video_attr_t vts_video_attr;
648 uint8_t nr_of_vts_audio_streams;
649 audio_attr_t vts_audio_attr[8];
651 uint8_t nr_of_vts_subp_streams;
652 subp_attr_t vts_subp_attr[32];
654 multichannel_ext_t vts_mu_audio_attr[8];
678 uint16_t nr_of_srpts;
682 uint32_t *ttu_offset;
684 #define VTS_PTT_SRPT_SIZE 8U
691 typedef uint32_t map_ent_t;
699 uint16_t nr_of_entries;
702 #define VTS_TMAP_SIZE 4U
708 uint16_t nr_of_tmaps;
712 uint32_t *tmap_offset;
714 #define VTS_TMAPT_SIZE 8U
732 vmgi_mat_t *vmgi_mat;
734 pgc_t *first_play_pgc;
735 ptl_mait_t *ptl_mait;
736 vts_atrt_t *vts_atrt;
737 txtdt_mgi_t *txtdt_mgi;
742 vobu_admap_t *menu_vobu_admap;
745 vtsi_mat_t *vtsi_mat;
746 vts_ptt_srpt_t *vts_ptt_srpt;
748 vts_tmapt_t *vts_tmapt;
750 vobu_admap_t *vts_vobu_admap;
Definition: dvd_reader.c:104
Definition: ifo_types.h:728
Definition: ifo_types.h:60