Mercurial > libdvdread4.hg
comparison ifo_types.h @ 20:fce16251755c src
Remove all trailing whitespace,
patch by Erik Hovland *erik$hovland dot org%
author | rathann |
---|---|
date | Sat, 06 Sep 2008 21:55:51 +0000 |
parents | fdbae45c30fc |
children | 4aa618ae094f |
comparison
equal
deleted
inserted
replaced
19:7f7e87bd7536 | 20:fce16251755c |
---|---|
23 #include <inttypes.h> | 23 #include <inttypes.h> |
24 #include "dvd_reader.h" | 24 #include "dvd_reader.h" |
25 | 25 |
26 | 26 |
27 #undef ATTRIBUTE_PACKED | 27 #undef ATTRIBUTE_PACKED |
28 #undef PRAGMA_PACK_BEGIN | 28 #undef PRAGMA_PACK_BEGIN |
29 #undef PRAGMA_PACK_END | 29 #undef PRAGMA_PACK_END |
30 | 30 |
31 #if defined(__GNUC__) | 31 #if defined(__GNUC__) |
32 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) | 32 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) |
33 #define ATTRIBUTE_PACKED __attribute__ ((packed)) | 33 #define ATTRIBUTE_PACKED __attribute__ ((packed)) |
77 typedef struct { | 77 typedef struct { |
78 unsigned char mpeg_version : 2; | 78 unsigned char mpeg_version : 2; |
79 unsigned char video_format : 2; | 79 unsigned char video_format : 2; |
80 unsigned char display_aspect_ratio : 2; | 80 unsigned char display_aspect_ratio : 2; |
81 unsigned char permitted_df : 2; | 81 unsigned char permitted_df : 2; |
82 | 82 |
83 unsigned char line21_cc_1 : 1; | 83 unsigned char line21_cc_1 : 1; |
84 unsigned char line21_cc_2 : 1; | 84 unsigned char line21_cc_2 : 1; |
85 unsigned char unknown1 : 1; | 85 unsigned char unknown1 : 1; |
86 unsigned char bit_rate : 1; | 86 unsigned char bit_rate : 1; |
87 | 87 |
88 unsigned char picture_size : 2; | 88 unsigned char picture_size : 2; |
89 unsigned char letterboxed : 1; | 89 unsigned char letterboxed : 1; |
90 unsigned char film_mode : 1; | 90 unsigned char film_mode : 1; |
91 } ATTRIBUTE_PACKED video_attr_t; | 91 } ATTRIBUTE_PACKED video_attr_t; |
92 | 92 |
96 typedef struct { | 96 typedef struct { |
97 unsigned char audio_format : 3; | 97 unsigned char audio_format : 3; |
98 unsigned char multichannel_extension : 1; | 98 unsigned char multichannel_extension : 1; |
99 unsigned char lang_type : 2; | 99 unsigned char lang_type : 2; |
100 unsigned char application_mode : 2; | 100 unsigned char application_mode : 2; |
101 | 101 |
102 unsigned char quantization : 2; | 102 unsigned char quantization : 2; |
103 unsigned char sample_frequency : 2; | 103 unsigned char sample_frequency : 2; |
104 unsigned char unknown1 : 1; | 104 unsigned char unknown1 : 1; |
105 unsigned char channels : 3; | 105 unsigned char channels : 3; |
106 uint16_t lang_code; | 106 uint16_t lang_code; |
180 | 180 |
181 | 181 |
182 | 182 |
183 /** | 183 /** |
184 * PGC Command Table. | 184 * PGC Command Table. |
185 */ | 185 */ |
186 typedef struct { | 186 typedef struct { |
187 uint16_t nr_of_pre; | 187 uint16_t nr_of_pre; |
188 uint16_t nr_of_post; | 188 uint16_t nr_of_post; |
189 uint16_t nr_of_cell; | 189 uint16_t nr_of_cell; |
190 uint16_t zero_1; | 190 uint16_t zero_1; |
195 #define PGC_COMMAND_TBL_SIZE 8U | 195 #define PGC_COMMAND_TBL_SIZE 8U |
196 | 196 |
197 /** | 197 /** |
198 * PGC Program Map | 198 * PGC Program Map |
199 */ | 199 */ |
200 typedef uint8_t pgc_program_map_t; | 200 typedef uint8_t pgc_program_map_t; |
201 | 201 |
202 /** | 202 /** |
203 * Cell Playback Information. | 203 * Cell Playback Information. |
204 */ | 204 */ |
205 typedef struct { | 205 typedef struct { |
242 * User Operations. | 242 * User Operations. |
243 */ | 243 */ |
244 typedef struct { | 244 typedef struct { |
245 unsigned int zero : 7; /* 25-31 */ | 245 unsigned int zero : 7; /* 25-31 */ |
246 unsigned int video_pres_mode_change : 1; /* 24 */ | 246 unsigned int video_pres_mode_change : 1; /* 24 */ |
247 | 247 |
248 unsigned int karaoke_audio_pres_mode_change : 1; /* 23 */ | 248 unsigned int karaoke_audio_pres_mode_change : 1; /* 23 */ |
249 unsigned int angle_change : 1; | 249 unsigned int angle_change : 1; |
250 unsigned int subpic_stream_change : 1; | 250 unsigned int subpic_stream_change : 1; |
251 unsigned int audio_stream_change : 1; | 251 unsigned int audio_stream_change : 1; |
252 unsigned int pause_on : 1; | 252 unsigned int pause_on : 1; |
253 unsigned int still_off : 1; | 253 unsigned int still_off : 1; |
254 unsigned int button_select_or_activate : 1; | 254 unsigned int button_select_or_activate : 1; |
255 unsigned int resume : 1; /* 16 */ | 255 unsigned int resume : 1; /* 16 */ |
256 | 256 |
257 unsigned int chapter_menu_call : 1; /* 15 */ | 257 unsigned int chapter_menu_call : 1; /* 15 */ |
258 unsigned int angle_menu_call : 1; | 258 unsigned int angle_menu_call : 1; |
259 unsigned int audio_menu_call : 1; | 259 unsigned int audio_menu_call : 1; |
260 unsigned int subpic_menu_call : 1; | 260 unsigned int subpic_menu_call : 1; |
261 unsigned int root_menu_call : 1; | 261 unsigned int root_menu_call : 1; |
262 unsigned int title_menu_call : 1; | 262 unsigned int title_menu_call : 1; |
263 unsigned int backward_scan : 1; | 263 unsigned int backward_scan : 1; |
264 unsigned int forward_scan : 1; /* 8 */ | 264 unsigned int forward_scan : 1; /* 8 */ |
265 | 265 |
266 unsigned int next_pg_search : 1; /* 7 */ | 266 unsigned int next_pg_search : 1; /* 7 */ |
267 unsigned int prev_or_top_pg_search : 1; | 267 unsigned int prev_or_top_pg_search : 1; |
268 unsigned int time_or_chapter_search : 1; | 268 unsigned int time_or_chapter_search : 1; |
269 unsigned int go_up : 1; | 269 unsigned int go_up : 1; |
270 unsigned int stop : 1; | 270 unsigned int stop : 1; |
418 uint32_t vts_atrt; /* sector */ | 418 uint32_t vts_atrt; /* sector */ |
419 uint32_t txtdt_mgi; /* sector */ | 419 uint32_t txtdt_mgi; /* sector */ |
420 uint32_t vmgm_c_adt; /* sector */ | 420 uint32_t vmgm_c_adt; /* sector */ |
421 uint32_t vmgm_vobu_admap; /* sector */ | 421 uint32_t vmgm_vobu_admap; /* sector */ |
422 uint8_t zero_6[32]; | 422 uint8_t zero_6[32]; |
423 | 423 |
424 video_attr_t vmgm_video_attr; | 424 video_attr_t vmgm_video_attr; |
425 uint8_t zero_7; | 425 uint8_t zero_7; |
426 uint8_t nr_of_vmgm_audio_streams; /* should be 0 or 1 */ | 426 uint8_t nr_of_vmgm_audio_streams; /* should be 0 or 1 */ |
427 audio_attr_t vmgm_audio_attr; | 427 audio_attr_t vmgm_audio_attr; |
428 audio_attr_t zero_8[7]; | 428 audio_attr_t zero_8[7]; |
501 * Video Title Set Attributes. | 501 * Video Title Set Attributes. |
502 */ | 502 */ |
503 typedef struct { | 503 typedef struct { |
504 uint32_t last_byte; | 504 uint32_t last_byte; |
505 uint32_t vts_cat; | 505 uint32_t vts_cat; |
506 | 506 |
507 video_attr_t vtsm_vobs_attr; | 507 video_attr_t vtsm_vobs_attr; |
508 uint8_t zero_1; | 508 uint8_t zero_1; |
509 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */ | 509 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */ |
510 audio_attr_t vtsm_audio_attr; | 510 audio_attr_t vtsm_audio_attr; |
511 audio_attr_t zero_2[7]; | 511 audio_attr_t zero_2[7]; |
512 uint8_t zero_3[16]; | 512 uint8_t zero_3[16]; |
513 uint8_t zero_4; | 513 uint8_t zero_4; |
514 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */ | 514 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */ |
515 subp_attr_t vtsm_subp_attr; | 515 subp_attr_t vtsm_subp_attr; |
516 subp_attr_t zero_5[27]; | 516 subp_attr_t zero_5[27]; |
517 | 517 |
518 uint8_t zero_6[2]; | 518 uint8_t zero_6[2]; |
519 | 519 |
520 video_attr_t vtstt_vobs_video_attr; | 520 video_attr_t vtstt_vobs_video_attr; |
521 uint8_t zero_7; | 521 uint8_t zero_7; |
522 uint8_t nr_of_vtstt_audio_streams; | 522 uint8_t nr_of_vtstt_audio_streams; |
523 audio_attr_t vtstt_audio_attr[8]; | 523 audio_attr_t vtstt_audio_attr[8]; |
524 uint8_t zero_8[16]; | 524 uint8_t zero_8[16]; |
545 * Text Data. (Incomplete) | 545 * Text Data. (Incomplete) |
546 */ | 546 */ |
547 typedef struct { | 547 typedef struct { |
548 uint32_t last_byte; /* offsets are relative here */ | 548 uint32_t last_byte; /* offsets are relative here */ |
549 uint16_t offsets[100]; /* == nr_of_srpts + 1 (first is disc title) */ | 549 uint16_t offsets[100]; /* == nr_of_srpts + 1 (first is disc title) */ |
550 #if 0 | 550 #if 0 |
551 uint16_t unknown; /* 0x48 ?? 0x48 words (16bit) info following */ | 551 uint16_t unknown; /* 0x48 ?? 0x48 words (16bit) info following */ |
552 uint16_t zero_1; | 552 uint16_t zero_1; |
553 | 553 |
554 uint8_t type_of_info; /* ?? 01 == disc, 02 == Title, 04 == Title part */ | 554 uint8_t type_of_info; /* ?? 01 == disc, 02 == Title, 04 == Title part */ |
555 uint8_t unknown1; | 555 uint8_t unknown1; |
556 uint8_t unknown2; | 556 uint8_t unknown2; |
557 uint8_t unknown3; | 557 uint8_t unknown3; |
558 uint8_t unknown4; /* ?? allways 0x30 language?, text format? */ | 558 uint8_t unknown4; /* ?? allways 0x30 language?, text format? */ |
559 uint8_t unknown5; | 559 uint8_t unknown5; |
560 uint16_t offset; /* from first */ | 560 uint16_t offset; /* from first */ |
561 | 561 |
562 char text[12]; /* ended by 0x09 */ | 562 char text[12]; /* ended by 0x09 */ |
563 #endif | 563 #endif |
564 } ATTRIBUTE_PACKED txtdt_t; | 564 } ATTRIBUTE_PACKED txtdt_t; |
565 | 565 |
566 /** | 566 /** |
567 * Text Data Language Unit. (Incomplete) | 567 * Text Data Language Unit. (Incomplete) |
568 */ | 568 */ |
569 typedef struct { | 569 typedef struct { |
570 uint16_t lang_code; | 570 uint16_t lang_code; |
571 uint16_t unknown; /* 0x0001, title 1? disc 1? side 1? */ | 571 uint16_t unknown; /* 0x0001, title 1? disc 1? side 1? */ |
572 uint32_t txtdt_start_byte; /* prt, rel start of vmg_txtdt_mgi */ | 572 uint32_t txtdt_start_byte; /* prt, rel start of vmg_txtdt_mgi */ |
573 txtdt_t *txtdt; | 573 txtdt_t *txtdt; |
623 uint32_t vtsm_c_adt; /* sector */ | 623 uint32_t vtsm_c_adt; /* sector */ |
624 uint32_t vtsm_vobu_admap; /* sector */ | 624 uint32_t vtsm_vobu_admap; /* sector */ |
625 uint32_t vts_c_adt; /* sector */ | 625 uint32_t vts_c_adt; /* sector */ |
626 uint32_t vts_vobu_admap; /* sector */ | 626 uint32_t vts_vobu_admap; /* sector */ |
627 uint8_t zero_13[24]; | 627 uint8_t zero_13[24]; |
628 | 628 |
629 video_attr_t vtsm_video_attr; | 629 video_attr_t vtsm_video_attr; |
630 uint8_t zero_14; | 630 uint8_t zero_14; |
631 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */ | 631 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */ |
632 audio_attr_t vtsm_audio_attr; | 632 audio_attr_t vtsm_audio_attr; |
633 audio_attr_t zero_15[7]; | 633 audio_attr_t zero_15[7]; |
634 uint8_t zero_16[17]; | 634 uint8_t zero_16[17]; |
635 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */ | 635 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */ |
636 subp_attr_t vtsm_subp_attr; | 636 subp_attr_t vtsm_subp_attr; |
637 subp_attr_t zero_17[27]; | 637 subp_attr_t zero_17[27]; |
638 uint8_t zero_18[2]; | 638 uint8_t zero_18[2]; |
639 | 639 |
640 video_attr_t vts_video_attr; | 640 video_attr_t vts_video_attr; |
641 uint8_t zero_19; | 641 uint8_t zero_19; |
642 uint8_t nr_of_vts_audio_streams; | 642 uint8_t nr_of_vts_audio_streams; |
643 audio_attr_t vts_audio_attr[8]; | 643 audio_attr_t vts_audio_attr[8]; |
644 uint8_t zero_20[17]; | 644 uint8_t zero_20[17]; |
719 * VIDEO_TS.[IFO,BUP] file, and the VTSI, or Video Title Set Information, which | 719 * VIDEO_TS.[IFO,BUP] file, and the VTSI, or Video Title Set Information, which |
720 * is read in from the VTS_XX_0.[IFO,BUP] files. | 720 * is read in from the VTS_XX_0.[IFO,BUP] files. |
721 */ | 721 */ |
722 typedef struct { | 722 typedef struct { |
723 dvd_file_t *file; | 723 dvd_file_t *file; |
724 | 724 |
725 /* VMGI */ | 725 /* VMGI */ |
726 vmgi_mat_t *vmgi_mat; | 726 vmgi_mat_t *vmgi_mat; |
727 tt_srpt_t *tt_srpt; | 727 tt_srpt_t *tt_srpt; |
728 pgc_t *first_play_pgc; | 728 pgc_t *first_play_pgc; |
729 ptl_mait_t *ptl_mait; | 729 ptl_mait_t *ptl_mait; |
730 vts_atrt_t *vts_atrt; | 730 vts_atrt_t *vts_atrt; |
731 txtdt_mgi_t *txtdt_mgi; | 731 txtdt_mgi_t *txtdt_mgi; |
732 | 732 |
733 /* Common */ | 733 /* Common */ |
734 pgci_ut_t *pgci_ut; | 734 pgci_ut_t *pgci_ut; |
735 c_adt_t *menu_c_adt; | 735 c_adt_t *menu_c_adt; |
736 vobu_admap_t *menu_vobu_admap; | 736 vobu_admap_t *menu_vobu_admap; |
737 | 737 |
738 /* VTSI */ | 738 /* VTSI */ |
739 vtsi_mat_t *vtsi_mat; | 739 vtsi_mat_t *vtsi_mat; |
740 vts_ptt_srpt_t *vts_ptt_srpt; | 740 vts_ptt_srpt_t *vts_ptt_srpt; |
741 pgcit_t *vts_pgcit; | 741 pgcit_t *vts_pgcit; |
742 vts_tmapt_t *vts_tmapt; | 742 vts_tmapt_t *vts_tmapt; |