annotate dvdread/ifo_types.h @ 64:70c34d162e6e src

Replaces the hard-coded values The parental management structure has ratings levels. The size of the bit mask is constant but magic values were being used instead of named constants. This commit changes them to named constants. This is based on a patch submitted by Frederic Marchal, fmarchal at perso dot be. Thanks for this tidy cleanup.
author erik
date Sun, 30 Jan 2011 23:44:13 +0000
parents c743d79f187b
children 8e12b8e01713
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
1 /*
22
447c5319a522 Convert all ISO8859-1 sequences to proper UTF-8.
diego
parents: 21
diff changeset
2 * Copyright (C) 2000, 2001 Björn Englund <d4bjorn@dtek.chalmers.se>,
447c5319a522 Convert all ISO8859-1 sequences to proper UTF-8.
diego
parents: 21
diff changeset
3 * Håkan Hjort <d95hjort@dtek.chalmers.se>
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
4 *
21
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
5 * This file is part of libdvdread.
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
6 *
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
7 * libdvdread is free software; you can redistribute it and/or modify
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
10 * (at your option) any later version.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
11 *
21
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
12 * libdvdread is distributed in the hope that it will be useful,
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
15 * GNU General Public License for more details.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
16 *
21
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
17 * You should have received a copy of the GNU General Public License along
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
18 * with libdvdread; if not, write to the Free Software Foundation, Inc.,
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
20 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
21
23
ac07d427fbc6 Use consistent multiple inclusion guards everywhere:
diego
parents: 22
diff changeset
22 #ifndef LIBDVDREAD_IFO_TYPES_H
ac07d427fbc6 Use consistent multiple inclusion guards everywhere:
diego
parents: 22
diff changeset
23 #define LIBDVDREAD_IFO_TYPES_H
ac07d427fbc6 Use consistent multiple inclusion guards everywhere:
diego
parents: 22
diff changeset
24
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
25 #include <inttypes.h>
33
c743d79f187b Move installed headers into dvdread directory to make them easier to
reimar
parents: 32
diff changeset
26 #include "dvdread/dvd_reader.h"
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
27
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
28
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
29 #undef ATTRIBUTE_PACKED
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
30 #undef PRAGMA_PACK_BEGIN
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
31 #undef PRAGMA_PACK_END
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
32
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
33 #if defined(__GNUC__)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
34 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
35 #define ATTRIBUTE_PACKED __attribute__ ((packed))
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
36 #define PRAGMA_PACK 0
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
37 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
38 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
39
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
40 #if !defined(ATTRIBUTE_PACKED)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
41 #define ATTRIBUTE_PACKED
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
42 #define PRAGMA_PACK 1
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
43 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
44
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
45 #if PRAGMA_PACK
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
46 #pragma pack(1)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
47 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
48
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
49
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
50 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
51 * Common
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
52 *
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
53 * The following structures are used in both the VMGI and VTSI.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
54 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
55
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
56
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
57 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
58 * DVD Time Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
59 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
60 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
61 uint8_t hour;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
62 uint8_t minute;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
63 uint8_t second;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
64 uint8_t frame_u; /* The two high bits are the frame rate. */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
65 } ATTRIBUTE_PACKED dvd_time_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
66
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
67 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
68 * Type to store per-command data.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
69 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
70 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
71 uint8_t bytes[8];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
72 } ATTRIBUTE_PACKED vm_cmd_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
73 #define COMMAND_DATA_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
74
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
75
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
76 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
77 * Video Attributes.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
78 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
79 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
80 unsigned char mpeg_version : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
81 unsigned char video_format : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
82 unsigned char display_aspect_ratio : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
83 unsigned char permitted_df : 2;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
84
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
85 unsigned char line21_cc_1 : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
86 unsigned char line21_cc_2 : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
87 unsigned char unknown1 : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
88 unsigned char bit_rate : 1;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
89
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
90 unsigned char picture_size : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
91 unsigned char letterboxed : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
92 unsigned char film_mode : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
93 } ATTRIBUTE_PACKED video_attr_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
94
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
95 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
96 * Audio Attributes.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
97 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
98 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
99 unsigned char audio_format : 3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
100 unsigned char multichannel_extension : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
101 unsigned char lang_type : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
102 unsigned char application_mode : 2;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
103
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
104 unsigned char quantization : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
105 unsigned char sample_frequency : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
106 unsigned char unknown1 : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
107 unsigned char channels : 3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
108 uint16_t lang_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
109 uint8_t lang_extension;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
110 uint8_t code_extension;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
111 uint8_t unknown3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
112 union {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
113 struct ATTRIBUTE_PACKED {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
114 unsigned char unknown4 : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
115 unsigned char channel_assignment : 3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
116 unsigned char version : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
117 unsigned char mc_intro : 1; /* probably 0: true, 1:false */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
118 unsigned char mode : 1; /* Karaoke mode 0: solo 1: duet */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
119 } karaoke;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
120 struct ATTRIBUTE_PACKED {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
121 unsigned char unknown5 : 4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
122 unsigned char dolby_encoded : 1; /* suitable for surround decoding */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
123 unsigned char unknown6 : 3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
124 } surround;
32
6698620c1477 Because of ARM memory alignment issues the struct app_info has to be
rathann
parents: 27
diff changeset
125 } ATTRIBUTE_PACKED app_info;
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
126 } ATTRIBUTE_PACKED audio_attr_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
127
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
128
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
129 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
130 * MultiChannel Extension
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
131 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
132 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
133 unsigned int zero1 : 7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
134 unsigned int ach0_gme : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
135
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
136 unsigned int zero2 : 7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
137 unsigned int ach1_gme : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
138
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
139 unsigned int zero3 : 4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
140 unsigned int ach2_gv1e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
141 unsigned int ach2_gv2e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
142 unsigned int ach2_gm1e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
143 unsigned int ach2_gm2e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
144
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
145 unsigned int zero4 : 4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
146 unsigned int ach3_gv1e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
147 unsigned int ach3_gv2e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
148 unsigned int ach3_gmAe : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
149 unsigned int ach3_se2e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
150
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
151 unsigned int zero5 : 4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
152 unsigned int ach4_gv1e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
153 unsigned int ach4_gv2e : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
154 unsigned int ach4_gmBe : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
155 unsigned int ach4_seBe : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
156 uint8_t zero6[19];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
157 } ATTRIBUTE_PACKED multichannel_ext_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
158
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
159
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
160 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
161 * Subpicture Attributes.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
162 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
163 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
164 /*
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
165 * type: 0 not specified
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
166 * 1 language
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
167 * 2 other
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
168 * coding mode: 0 run length
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
169 * 1 extended
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
170 * 2 other
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
171 * language: indicates language if type == 1
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
172 * lang extension: if type == 1 contains the lang extension
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
173 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
174 unsigned char code_mode : 3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
175 unsigned char zero1 : 3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
176 unsigned char type : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
177 uint8_t zero2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
178 uint16_t lang_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
179 uint8_t lang_extension;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
180 uint8_t code_extension;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
181 } ATTRIBUTE_PACKED subp_attr_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
182
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
183
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
184
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
185 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
186 * PGC Command Table.
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
187 */
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
188 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
189 uint16_t nr_of_pre;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
190 uint16_t nr_of_post;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
191 uint16_t nr_of_cell;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
192 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
193 vm_cmd_t *pre_cmds;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
194 vm_cmd_t *post_cmds;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
195 vm_cmd_t *cell_cmds;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
196 } ATTRIBUTE_PACKED pgc_command_tbl_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
197 #define PGC_COMMAND_TBL_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
198
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
199 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
200 * PGC Program Map
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
201 */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
202 typedef uint8_t pgc_program_map_t;
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
203
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
204 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
205 * Cell Playback Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
206 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
207 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
208 unsigned int block_mode : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
209 unsigned int block_type : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
210 unsigned int seamless_play : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
211 unsigned int interleaved : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
212 unsigned int stc_discontinuity: 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
213 unsigned int seamless_angle : 1;
27
98951f8ec89c cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents: 23
diff changeset
214
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
215 unsigned int playback_mode : 1; /**< When set, enter StillMode after each VOBU */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
216 unsigned int restricted : 1; /**< ?? drop out of fastforward? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
217 unsigned int unknown2 : 6;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
218 uint8_t still_time;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
219 uint8_t cell_cmd_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
220 dvd_time_t playback_time;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
221 uint32_t first_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
222 uint32_t first_ilvu_end_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
223 uint32_t last_vobu_start_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
224 uint32_t last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
225 } ATTRIBUTE_PACKED cell_playback_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
226
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
227 #define BLOCK_TYPE_NONE 0x0
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
228 #define BLOCK_TYPE_ANGLE_BLOCK 0x1
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
229
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
230 #define BLOCK_MODE_NOT_IN_BLOCK 0x0
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
231 #define BLOCK_MODE_FIRST_CELL 0x1
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
232 #define BLOCK_MODE_IN_BLOCK 0x2
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
233 #define BLOCK_MODE_LAST_CELL 0x3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
234
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
235 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
236 * Cell Position Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
237 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
238 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
239 uint16_t vob_id_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
240 uint8_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
241 uint8_t cell_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
242 } ATTRIBUTE_PACKED cell_position_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
243
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
244 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
245 * User Operations.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
246 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
247 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
248 unsigned int zero : 7; /* 25-31 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
249 unsigned int video_pres_mode_change : 1; /* 24 */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
250
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
251 unsigned int karaoke_audio_pres_mode_change : 1; /* 23 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
252 unsigned int angle_change : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
253 unsigned int subpic_stream_change : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
254 unsigned int audio_stream_change : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
255 unsigned int pause_on : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
256 unsigned int still_off : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
257 unsigned int button_select_or_activate : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
258 unsigned int resume : 1; /* 16 */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
259
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
260 unsigned int chapter_menu_call : 1; /* 15 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
261 unsigned int angle_menu_call : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
262 unsigned int audio_menu_call : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
263 unsigned int subpic_menu_call : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
264 unsigned int root_menu_call : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
265 unsigned int title_menu_call : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
266 unsigned int backward_scan : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
267 unsigned int forward_scan : 1; /* 8 */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
268
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
269 unsigned int next_pg_search : 1; /* 7 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
270 unsigned int prev_or_top_pg_search : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
271 unsigned int time_or_chapter_search : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
272 unsigned int go_up : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
273 unsigned int stop : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
274 unsigned int title_play : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
275 unsigned int chapter_search_or_play : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
276 unsigned int title_or_time_play : 1; /* 0 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
277 } ATTRIBUTE_PACKED user_ops_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
278
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
279 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
280 * Program Chain Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
281 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
282 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
283 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
284 uint8_t nr_of_programs;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
285 uint8_t nr_of_cells;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
286 dvd_time_t playback_time;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
287 user_ops_t prohibited_ops;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
288 uint16_t audio_control[8]; /* New type? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
289 uint32_t subp_control[32]; /* New type? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
290 uint16_t next_pgc_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
291 uint16_t prev_pgc_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
292 uint16_t goup_pgc_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
293 uint8_t still_time;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
294 uint8_t pg_playback_mode;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
295 uint32_t palette[16]; /* New type struct {zero_1, Y, Cr, Cb} ? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
296 uint16_t command_tbl_offset;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
297 uint16_t program_map_offset;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
298 uint16_t cell_playback_offset;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
299 uint16_t cell_position_offset;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
300 pgc_command_tbl_t *command_tbl;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
301 pgc_program_map_t *program_map;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
302 cell_playback_t *cell_playback;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
303 cell_position_t *cell_position;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
304 } ATTRIBUTE_PACKED pgc_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
305 #define PGC_SIZE 236U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
306
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
307 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
308 * Program Chain Information Search Pointer.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
309 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
310 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
311 uint8_t entry_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
312 unsigned int block_mode : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
313 unsigned int block_type : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
314 unsigned int unknown1 : 4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
315 uint16_t ptl_id_mask;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
316 uint32_t pgc_start_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
317 pgc_t *pgc;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
318 } ATTRIBUTE_PACKED pgci_srp_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
319 #define PGCI_SRP_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
320
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
321 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
322 * Program Chain Information Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
323 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
324 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
325 uint16_t nr_of_pgci_srp;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
326 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
327 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
328 pgci_srp_t *pgci_srp;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
329 } ATTRIBUTE_PACKED pgcit_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
330 #define PGCIT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
331
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
332 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
333 * Menu PGCI Language Unit.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
334 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
335 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
336 uint16_t lang_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
337 uint8_t lang_extension;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
338 uint8_t exists;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
339 uint32_t lang_start_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
340 pgcit_t *pgcit;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
341 } ATTRIBUTE_PACKED pgci_lu_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
342 #define PGCI_LU_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
343
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
344 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
345 * Menu PGCI Unit Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
346 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
347 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
348 uint16_t nr_of_lus;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
349 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
350 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
351 pgci_lu_t *lu;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
352 } ATTRIBUTE_PACKED pgci_ut_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
353 #define PGCI_UT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
354
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
355 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
356 * Cell Address Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
357 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
358 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
359 uint16_t vob_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
360 uint8_t cell_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
361 uint8_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
362 uint32_t start_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
363 uint32_t last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
364 } ATTRIBUTE_PACKED cell_adr_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
365
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
366 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
367 * Cell Address Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
368 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
369 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
370 uint16_t nr_of_vobs; /* VOBs */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
371 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
372 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
373 cell_adr_t *cell_adr_table; /* No explicit size given. */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
374 } ATTRIBUTE_PACKED c_adt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
375 #define C_ADT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
376
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
377 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
378 * VOBU Address Map.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
379 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
380 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
381 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
382 uint32_t *vobu_start_sectors;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
383 } ATTRIBUTE_PACKED vobu_admap_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
384 #define VOBU_ADMAP_SIZE 4U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
385
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
386
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
387
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
388
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
389 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
390 * VMGI
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
391 *
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
392 * The following structures relate to the Video Manager.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
393 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
394
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
395 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
396 * Video Manager Information Management Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
397 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
398 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
399 char vmg_identifier[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
400 uint32_t vmg_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
401 uint8_t zero_1[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
402 uint32_t vmgi_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
403 uint8_t zero_2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
404 uint8_t specification_version;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
405 uint32_t vmg_category;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
406 uint16_t vmg_nr_of_volumes;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
407 uint16_t vmg_this_volume_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
408 uint8_t disc_side;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
409 uint8_t zero_3[19];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
410 uint16_t vmg_nr_of_title_sets; /* Number of VTSs. */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
411 char provider_identifier[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
412 uint64_t vmg_pos_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
413 uint8_t zero_4[24];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
414 uint32_t vmgi_last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
415 uint32_t first_play_pgc;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
416 uint8_t zero_5[56];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
417 uint32_t vmgm_vobs; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
418 uint32_t tt_srpt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
419 uint32_t vmgm_pgci_ut; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
420 uint32_t ptl_mait; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
421 uint32_t vts_atrt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
422 uint32_t txtdt_mgi; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
423 uint32_t vmgm_c_adt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
424 uint32_t vmgm_vobu_admap; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
425 uint8_t zero_6[32];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
426
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
427 video_attr_t vmgm_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
428 uint8_t zero_7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
429 uint8_t nr_of_vmgm_audio_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
430 audio_attr_t vmgm_audio_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
431 audio_attr_t zero_8[7];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
432 uint8_t zero_9[17];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
433 uint8_t nr_of_vmgm_subp_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
434 subp_attr_t vmgm_subp_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
435 subp_attr_t zero_10[27]; /* XXX: how much 'padding' here? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
436 } ATTRIBUTE_PACKED vmgi_mat_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
437
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
438 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
439 unsigned int zero_1 : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
440 unsigned int multi_or_random_pgc_title : 1; /* 0: one sequential pgc title */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
441 unsigned int jlc_exists_in_cell_cmd : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
442 unsigned int jlc_exists_in_prepost_cmd : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
443 unsigned int jlc_exists_in_button_cmd : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
444 unsigned int jlc_exists_in_tt_dom : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
445 unsigned int chapter_search_or_play : 1; /* UOP 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
446 unsigned int title_or_time_play : 1; /* UOP 0 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
447 } ATTRIBUTE_PACKED playback_type_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
448
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
449 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
450 * Title Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
451 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
452 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
453 playback_type_t pb_ty;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
454 uint8_t nr_of_angles;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
455 uint16_t nr_of_ptts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
456 uint16_t parental_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
457 uint8_t title_set_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
458 uint8_t vts_ttn;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
459 uint32_t title_set_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
460 } ATTRIBUTE_PACKED title_info_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
461
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
462 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
463 * PartOfTitle Search Pointer Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
464 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
465 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
466 uint16_t nr_of_srpts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
467 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
468 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
469 title_info_t *title;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
470 } ATTRIBUTE_PACKED tt_srpt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
471 #define TT_SRPT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
472
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
473
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
474 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
475 * Parental Management Information Unit Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
476 * Level 1 (US: G), ..., 7 (US: NC-17), 8
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
477 */
64
70c34d162e6e Replaces the hard-coded values
erik
parents: 33
diff changeset
478 #define PTL_MAIT_NUM_LEVEL 8
70c34d162e6e Replaces the hard-coded values
erik
parents: 33
diff changeset
479 typedef uint16_t pf_level_t[PTL_MAIT_NUM_LEVEL];
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
480
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
481 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
482 * Parental Management Information Unit Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
483 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
484 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
485 uint16_t country_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
486 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
487 uint16_t pf_ptl_mai_start_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
488 uint16_t zero_2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
489 pf_level_t *pf_ptl_mai; /* table of (nr_of_vtss + 1), video_ts is first */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
490 } ATTRIBUTE_PACKED ptl_mait_country_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
491 #define PTL_MAIT_COUNTRY_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
492
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
493 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
494 * Parental Management Information Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
495 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
496 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
497 uint16_t nr_of_countries;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
498 uint16_t nr_of_vtss;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
499 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
500 ptl_mait_country_t *countries;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
501 } ATTRIBUTE_PACKED ptl_mait_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
502 #define PTL_MAIT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
503
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
504 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
505 * Video Title Set Attributes.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
506 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
507 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
508 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
509 uint32_t vts_cat;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
510
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
511 video_attr_t vtsm_vobs_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
512 uint8_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
513 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
514 audio_attr_t vtsm_audio_attr;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
515 audio_attr_t zero_2[7];
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
516 uint8_t zero_3[16];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
517 uint8_t zero_4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
518 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
519 subp_attr_t vtsm_subp_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
520 subp_attr_t zero_5[27];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
521
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
522 uint8_t zero_6[2];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
523
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
524 video_attr_t vtstt_vobs_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
525 uint8_t zero_7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
526 uint8_t nr_of_vtstt_audio_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
527 audio_attr_t vtstt_audio_attr[8];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
528 uint8_t zero_8[16];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
529 uint8_t zero_9;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
530 uint8_t nr_of_vtstt_subp_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
531 subp_attr_t vtstt_subp_attr[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
532 } ATTRIBUTE_PACKED vts_attributes_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
533 #define VTS_ATTRIBUTES_SIZE 542U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
534 #define VTS_ATTRIBUTES_MIN_SIZE 356U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
535
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
536 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
537 * Video Title Set Attribute Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
538 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
539 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
540 uint16_t nr_of_vtss;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
541 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
542 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
543 vts_attributes_t *vts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
544 uint32_t *vts_atrt_offsets; /* offsets table for each vts_attributes */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
545 } ATTRIBUTE_PACKED vts_atrt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
546 #define VTS_ATRT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
547
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
548 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
549 * Text Data. (Incomplete)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
550 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
551 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
552 uint32_t last_byte; /* offsets are relative here */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
553 uint16_t offsets[100]; /* == nr_of_srpts + 1 (first is disc title) */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
554 #if 0
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
555 uint16_t unknown; /* 0x48 ?? 0x48 words (16bit) info following */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
556 uint16_t zero_1;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
557
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
558 uint8_t type_of_info; /* ?? 01 == disc, 02 == Title, 04 == Title part */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
559 uint8_t unknown1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
560 uint8_t unknown2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
561 uint8_t unknown3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
562 uint8_t unknown4; /* ?? allways 0x30 language?, text format? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
563 uint8_t unknown5;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
564 uint16_t offset; /* from first */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
565
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
566 char text[12]; /* ended by 0x09 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
567 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
568 } ATTRIBUTE_PACKED txtdt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
569
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
570 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
571 * Text Data Language Unit. (Incomplete)
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
572 */
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
573 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
574 uint16_t lang_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
575 uint16_t unknown; /* 0x0001, title 1? disc 1? side 1? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
576 uint32_t txtdt_start_byte; /* prt, rel start of vmg_txtdt_mgi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
577 txtdt_t *txtdt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
578 } ATTRIBUTE_PACKED txtdt_lu_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
579 #define TXTDT_LU_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
580
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
581 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
582 * Text Data Manager Information. (Incomplete)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
583 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
584 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
585 char disc_name[14]; /* how many bytes?? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
586 uint16_t nr_of_language_units; /* 32bit?? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
587 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
588 txtdt_lu_t *lu;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
589 } ATTRIBUTE_PACKED txtdt_mgi_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
590 #define TXTDT_MGI_SIZE 20U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
591
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
592
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
593 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
594 * VTS
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
595 *
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
596 * Structures relating to the Video Title Set (VTS).
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
597 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
598
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
599 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
600 * Video Title Set Information Management Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
601 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
602 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
603 char vts_identifier[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
604 uint32_t vts_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
605 uint8_t zero_1[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
606 uint32_t vtsi_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
607 uint8_t zero_2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
608 uint8_t specification_version;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
609 uint32_t vts_category;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
610 uint16_t zero_3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
611 uint16_t zero_4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
612 uint8_t zero_5;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
613 uint8_t zero_6[19];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
614 uint16_t zero_7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
615 uint8_t zero_8[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
616 uint64_t zero_9;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
617 uint8_t zero_10[24];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
618 uint32_t vtsi_last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
619 uint32_t zero_11;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
620 uint8_t zero_12[56];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
621 uint32_t vtsm_vobs; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
622 uint32_t vtstt_vobs; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
623 uint32_t vts_ptt_srpt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
624 uint32_t vts_pgcit; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
625 uint32_t vtsm_pgci_ut; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
626 uint32_t vts_tmapt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
627 uint32_t vtsm_c_adt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
628 uint32_t vtsm_vobu_admap; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
629 uint32_t vts_c_adt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
630 uint32_t vts_vobu_admap; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
631 uint8_t zero_13[24];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
632
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
633 video_attr_t vtsm_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
634 uint8_t zero_14;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
635 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
636 audio_attr_t vtsm_audio_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
637 audio_attr_t zero_15[7];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
638 uint8_t zero_16[17];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
639 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
640 subp_attr_t vtsm_subp_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
641 subp_attr_t zero_17[27];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
642 uint8_t zero_18[2];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
643
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
644 video_attr_t vts_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
645 uint8_t zero_19;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
646 uint8_t nr_of_vts_audio_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
647 audio_attr_t vts_audio_attr[8];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
648 uint8_t zero_20[17];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
649 uint8_t nr_of_vts_subp_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
650 subp_attr_t vts_subp_attr[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
651 uint16_t zero_21;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
652 multichannel_ext_t vts_mu_audio_attr[8];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
653 /* XXX: how much 'padding' here, if any? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
654 } ATTRIBUTE_PACKED vtsi_mat_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
655
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
656 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
657 * PartOfTitle Unit Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
658 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
659 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
660 uint16_t pgcn;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
661 uint16_t pgn;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
662 } ATTRIBUTE_PACKED ptt_info_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
663
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
664 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
665 * PartOfTitle Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
666 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
667 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
668 uint16_t nr_of_ptts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
669 ptt_info_t *ptt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
670 } ATTRIBUTE_PACKED ttu_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
671
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
672 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
673 * PartOfTitle Search Pointer Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
674 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
675 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
676 uint16_t nr_of_srpts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
677 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
678 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
679 ttu_t *title;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
680 uint32_t *ttu_offset; /* offset table for each ttu */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
681 } ATTRIBUTE_PACKED vts_ptt_srpt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
682 #define VTS_PTT_SRPT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
683
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
684
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
685 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
686 * Time Map Entry.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
687 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
688 /* Should this be bit field at all or just the uint32_t? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
689 typedef uint32_t map_ent_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
690
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
691 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
692 * Time Map.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
693 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
694 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
695 uint8_t tmu; /* Time unit, in seconds */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
696 uint8_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
697 uint16_t nr_of_entries;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
698 map_ent_t *map_ent;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
699 } ATTRIBUTE_PACKED vts_tmap_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
700 #define VTS_TMAP_SIZE 4U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
701
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
702 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
703 * Time Map Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
704 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
705 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
706 uint16_t nr_of_tmaps;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
707 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
708 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
709 vts_tmap_t *tmap;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
710 uint32_t *tmap_offset; /* offset table for each tmap */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
711 } ATTRIBUTE_PACKED vts_tmapt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
712 #define VTS_TMAPT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
713
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
714
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
715 #if PRAGMA_PACK
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
716 #pragma pack()
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
717 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
718
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
719
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
720 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
721 * The following structure defines an IFO file. The structure is divided into
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
722 * two parts, the VMGI, or Video Manager Information, which is read from the
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
723 * VIDEO_TS.[IFO,BUP] file, and the VTSI, or Video Title Set Information, which
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
724 * is read in from the VTS_XX_0.[IFO,BUP] files.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
725 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
726 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
727 dvd_file_t *file;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
728
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
729 /* VMGI */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
730 vmgi_mat_t *vmgi_mat;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
731 tt_srpt_t *tt_srpt;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
732 pgc_t *first_play_pgc;
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
733 ptl_mait_t *ptl_mait;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
734 vts_atrt_t *vts_atrt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
735 txtdt_mgi_t *txtdt_mgi;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
736
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
737 /* Common */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
738 pgci_ut_t *pgci_ut;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
739 c_adt_t *menu_c_adt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
740 vobu_admap_t *menu_vobu_admap;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
741
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
742 /* VTSI */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
743 vtsi_mat_t *vtsi_mat;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
744 vts_ptt_srpt_t *vts_ptt_srpt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
745 pgcit_t *vts_pgcit;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
746 vts_tmapt_t *vts_tmapt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
747 c_adt_t *vts_c_adt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
748 vobu_admap_t *vts_vobu_admap;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
749 } ifo_handle_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
750
23
ac07d427fbc6 Use consistent multiple inclusion guards everywhere:
diego
parents: 22
diff changeset
751 #endif /* LIBDVDREAD_IFO_TYPES_H */