annotate dvdread/ifo_types.h @ 75:8e12b8e01713 src

Accommodate duplicate language units and pgcs. Many dvd's are showing up that have titles that have numerous repeated language unit tables and pgc's. The new release "Up" is an example. I believe "Dark Knight" also exhibits this. When scanning such discs with lsdvd (and other programs that scan all titles), libdvdread will consume many GB of data for these repeated elements and gets very slow (e.g hours to read all titles) on OS X due to reading the duplicate data from uncached raw devices. This patch detects duplicates and reference counts pgc's and pgcit's. When a duplicate is detected, a reference count is incremented instead of allocating new memory and re-reading the data. Patch by John Stebbins.
author rathann
date Sun, 09 Dec 2012 21:07:59 +0000
parents 70c34d162e6e
children
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;
75
8e12b8e01713 Accommodate duplicate language units and pgcs.
rathann
parents: 64
diff changeset
304 int ref_count;
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
305 } ATTRIBUTE_PACKED pgc_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
306 #define PGC_SIZE 236U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
307
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
308 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
309 * Program Chain Information Search Pointer.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
310 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
311 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
312 uint8_t entry_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
313 unsigned int block_mode : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
314 unsigned int block_type : 2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
315 unsigned int unknown1 : 4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
316 uint16_t ptl_id_mask;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
317 uint32_t pgc_start_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
318 pgc_t *pgc;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
319 } ATTRIBUTE_PACKED pgci_srp_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
320 #define PGCI_SRP_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
321
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
322 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
323 * Program Chain Information Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
324 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
325 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
326 uint16_t nr_of_pgci_srp;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
327 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
328 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
329 pgci_srp_t *pgci_srp;
75
8e12b8e01713 Accommodate duplicate language units and pgcs.
rathann
parents: 64
diff changeset
330 int ref_count;
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
331 } ATTRIBUTE_PACKED pgcit_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
332 #define PGCIT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
333
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
334 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
335 * Menu PGCI Language Unit.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
336 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
337 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
338 uint16_t lang_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
339 uint8_t lang_extension;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
340 uint8_t exists;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
341 uint32_t lang_start_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
342 pgcit_t *pgcit;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
343 } ATTRIBUTE_PACKED pgci_lu_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
344 #define PGCI_LU_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
345
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
346 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
347 * Menu PGCI Unit Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
348 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
349 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
350 uint16_t nr_of_lus;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
351 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
352 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
353 pgci_lu_t *lu;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
354 } ATTRIBUTE_PACKED pgci_ut_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
355 #define PGCI_UT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
356
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
357 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
358 * Cell Address Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
359 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
360 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
361 uint16_t vob_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
362 uint8_t cell_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
363 uint8_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
364 uint32_t start_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
365 uint32_t last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
366 } ATTRIBUTE_PACKED cell_adr_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
367
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
368 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
369 * Cell Address Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
370 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
371 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
372 uint16_t nr_of_vobs; /* VOBs */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
373 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
374 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
375 cell_adr_t *cell_adr_table; /* No explicit size given. */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
376 } ATTRIBUTE_PACKED c_adt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
377 #define C_ADT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
378
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
379 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
380 * VOBU Address Map.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
381 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
382 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
383 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
384 uint32_t *vobu_start_sectors;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
385 } ATTRIBUTE_PACKED vobu_admap_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
386 #define VOBU_ADMAP_SIZE 4U
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
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
391 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
392 * VMGI
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
393 *
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
394 * The following structures relate to the Video Manager.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
395 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
396
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
397 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
398 * Video Manager Information Management Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
399 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
400 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
401 char vmg_identifier[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
402 uint32_t vmg_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
403 uint8_t zero_1[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
404 uint32_t vmgi_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
405 uint8_t zero_2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
406 uint8_t specification_version;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
407 uint32_t vmg_category;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
408 uint16_t vmg_nr_of_volumes;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
409 uint16_t vmg_this_volume_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
410 uint8_t disc_side;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
411 uint8_t zero_3[19];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
412 uint16_t vmg_nr_of_title_sets; /* Number of VTSs. */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
413 char provider_identifier[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
414 uint64_t vmg_pos_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
415 uint8_t zero_4[24];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
416 uint32_t vmgi_last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
417 uint32_t first_play_pgc;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
418 uint8_t zero_5[56];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
419 uint32_t vmgm_vobs; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
420 uint32_t tt_srpt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
421 uint32_t vmgm_pgci_ut; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
422 uint32_t ptl_mait; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
423 uint32_t vts_atrt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
424 uint32_t txtdt_mgi; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
425 uint32_t vmgm_c_adt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
426 uint32_t vmgm_vobu_admap; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
427 uint8_t zero_6[32];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
428
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
429 video_attr_t vmgm_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
430 uint8_t zero_7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
431 uint8_t nr_of_vmgm_audio_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
432 audio_attr_t vmgm_audio_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
433 audio_attr_t zero_8[7];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
434 uint8_t zero_9[17];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
435 uint8_t nr_of_vmgm_subp_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
436 subp_attr_t vmgm_subp_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
437 subp_attr_t zero_10[27]; /* XXX: how much 'padding' here? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
438 } ATTRIBUTE_PACKED vmgi_mat_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
439
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
440 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
441 unsigned int zero_1 : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
442 unsigned int multi_or_random_pgc_title : 1; /* 0: one sequential pgc title */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
443 unsigned int jlc_exists_in_cell_cmd : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
444 unsigned int jlc_exists_in_prepost_cmd : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
445 unsigned int jlc_exists_in_button_cmd : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
446 unsigned int jlc_exists_in_tt_dom : 1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
447 unsigned int chapter_search_or_play : 1; /* UOP 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
448 unsigned int title_or_time_play : 1; /* UOP 0 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
449 } ATTRIBUTE_PACKED playback_type_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
450
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
451 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
452 * Title Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
453 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
454 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
455 playback_type_t pb_ty;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
456 uint8_t nr_of_angles;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
457 uint16_t nr_of_ptts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
458 uint16_t parental_id;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
459 uint8_t title_set_nr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
460 uint8_t vts_ttn;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
461 uint32_t title_set_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
462 } ATTRIBUTE_PACKED title_info_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
463
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
464 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
465 * PartOfTitle Search Pointer Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
466 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
467 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
468 uint16_t nr_of_srpts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
469 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
470 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
471 title_info_t *title;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
472 } ATTRIBUTE_PACKED tt_srpt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
473 #define TT_SRPT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
474
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
475
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
476 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
477 * Parental Management Information Unit Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
478 * Level 1 (US: G), ..., 7 (US: NC-17), 8
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
479 */
64
70c34d162e6e Replaces the hard-coded values
erik
parents: 33
diff changeset
480 #define PTL_MAIT_NUM_LEVEL 8
70c34d162e6e Replaces the hard-coded values
erik
parents: 33
diff changeset
481 typedef uint16_t pf_level_t[PTL_MAIT_NUM_LEVEL];
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
482
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
483 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
484 * Parental Management Information Unit Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
485 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
486 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
487 uint16_t country_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
488 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
489 uint16_t pf_ptl_mai_start_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
490 uint16_t zero_2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
491 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
492 } ATTRIBUTE_PACKED ptl_mait_country_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
493 #define PTL_MAIT_COUNTRY_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
494
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
495 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
496 * Parental Management Information Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
497 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
498 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
499 uint16_t nr_of_countries;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
500 uint16_t nr_of_vtss;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
501 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
502 ptl_mait_country_t *countries;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
503 } ATTRIBUTE_PACKED ptl_mait_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
504 #define PTL_MAIT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
505
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
506 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
507 * Video Title Set Attributes.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
508 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
509 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
510 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
511 uint32_t vts_cat;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
512
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
513 video_attr_t vtsm_vobs_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
514 uint8_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
515 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
516 audio_attr_t vtsm_audio_attr;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
517 audio_attr_t zero_2[7];
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
518 uint8_t zero_3[16];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
519 uint8_t zero_4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
520 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
521 subp_attr_t vtsm_subp_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
522 subp_attr_t zero_5[27];
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 uint8_t zero_6[2];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
525
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
526 video_attr_t vtstt_vobs_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
527 uint8_t zero_7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
528 uint8_t nr_of_vtstt_audio_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
529 audio_attr_t vtstt_audio_attr[8];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
530 uint8_t zero_8[16];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
531 uint8_t zero_9;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
532 uint8_t nr_of_vtstt_subp_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
533 subp_attr_t vtstt_subp_attr[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
534 } ATTRIBUTE_PACKED vts_attributes_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
535 #define VTS_ATTRIBUTES_SIZE 542U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
536 #define VTS_ATTRIBUTES_MIN_SIZE 356U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
537
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
538 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
539 * Video Title Set Attribute Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
540 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
541 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
542 uint16_t nr_of_vtss;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
543 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
544 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
545 vts_attributes_t *vts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
546 uint32_t *vts_atrt_offsets; /* offsets table for each vts_attributes */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
547 } ATTRIBUTE_PACKED vts_atrt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
548 #define VTS_ATRT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
549
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
550 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
551 * Text Data. (Incomplete)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
552 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
553 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
554 uint32_t last_byte; /* offsets are relative here */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
555 uint16_t offsets[100]; /* == nr_of_srpts + 1 (first is disc title) */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
556 #if 0
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
557 uint16_t unknown; /* 0x48 ?? 0x48 words (16bit) info following */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
558 uint16_t zero_1;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
559
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
560 uint8_t type_of_info; /* ?? 01 == disc, 02 == Title, 04 == Title part */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
561 uint8_t unknown1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
562 uint8_t unknown2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
563 uint8_t unknown3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
564 uint8_t unknown4; /* ?? allways 0x30 language?, text format? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
565 uint8_t unknown5;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
566 uint16_t offset; /* from first */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
567
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
568 char text[12]; /* ended by 0x09 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
569 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
570 } ATTRIBUTE_PACKED txtdt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
571
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
572 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
573 * Text Data Language Unit. (Incomplete)
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
574 */
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
575 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
576 uint16_t lang_code;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
577 uint16_t unknown; /* 0x0001, title 1? disc 1? side 1? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
578 uint32_t txtdt_start_byte; /* prt, rel start of vmg_txtdt_mgi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
579 txtdt_t *txtdt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
580 } ATTRIBUTE_PACKED txtdt_lu_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
581 #define TXTDT_LU_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
582
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
583 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
584 * Text Data Manager Information. (Incomplete)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
585 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
586 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
587 char disc_name[14]; /* how many bytes?? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
588 uint16_t nr_of_language_units; /* 32bit?? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
589 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
590 txtdt_lu_t *lu;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
591 } ATTRIBUTE_PACKED txtdt_mgi_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
592 #define TXTDT_MGI_SIZE 20U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
593
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
594
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
595 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
596 * 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 * Structures relating to the Video Title Set (VTS).
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
599 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
600
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
601 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
602 * Video Title Set Information Management Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
603 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
604 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
605 char vts_identifier[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
606 uint32_t vts_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
607 uint8_t zero_1[12];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
608 uint32_t vtsi_last_sector;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
609 uint8_t zero_2;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
610 uint8_t specification_version;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
611 uint32_t vts_category;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
612 uint16_t zero_3;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
613 uint16_t zero_4;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
614 uint8_t zero_5;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
615 uint8_t zero_6[19];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
616 uint16_t zero_7;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
617 uint8_t zero_8[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
618 uint64_t zero_9;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
619 uint8_t zero_10[24];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
620 uint32_t vtsi_last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
621 uint32_t zero_11;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
622 uint8_t zero_12[56];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
623 uint32_t vtsm_vobs; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
624 uint32_t vtstt_vobs; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
625 uint32_t vts_ptt_srpt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
626 uint32_t vts_pgcit; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
627 uint32_t vtsm_pgci_ut; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
628 uint32_t vts_tmapt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
629 uint32_t vtsm_c_adt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
630 uint32_t vtsm_vobu_admap; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
631 uint32_t vts_c_adt; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
632 uint32_t vts_vobu_admap; /* sector */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
633 uint8_t zero_13[24];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
634
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
635 video_attr_t vtsm_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
636 uint8_t zero_14;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
637 uint8_t nr_of_vtsm_audio_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
638 audio_attr_t vtsm_audio_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
639 audio_attr_t zero_15[7];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
640 uint8_t zero_16[17];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
641 uint8_t nr_of_vtsm_subp_streams; /* should be 0 or 1 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
642 subp_attr_t vtsm_subp_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
643 subp_attr_t zero_17[27];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
644 uint8_t zero_18[2];
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
645
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
646 video_attr_t vts_video_attr;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
647 uint8_t zero_19;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
648 uint8_t nr_of_vts_audio_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
649 audio_attr_t vts_audio_attr[8];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
650 uint8_t zero_20[17];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
651 uint8_t nr_of_vts_subp_streams;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
652 subp_attr_t vts_subp_attr[32];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
653 uint16_t zero_21;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
654 multichannel_ext_t vts_mu_audio_attr[8];
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
655 /* XXX: how much 'padding' here, if any? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
656 } ATTRIBUTE_PACKED vtsi_mat_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
657
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
658 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
659 * PartOfTitle Unit Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
660 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
661 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
662 uint16_t pgcn;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
663 uint16_t pgn;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
664 } ATTRIBUTE_PACKED ptt_info_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
665
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
666 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
667 * PartOfTitle Information.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
668 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
669 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
670 uint16_t nr_of_ptts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
671 ptt_info_t *ptt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
672 } ATTRIBUTE_PACKED ttu_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
673
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
674 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
675 * PartOfTitle Search Pointer Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
676 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
677 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
678 uint16_t nr_of_srpts;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
679 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
680 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
681 ttu_t *title;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
682 uint32_t *ttu_offset; /* offset table for each ttu */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
683 } ATTRIBUTE_PACKED vts_ptt_srpt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
684 #define VTS_PTT_SRPT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
685
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
686
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
687 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
688 * Time Map Entry.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
689 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
690 /* Should this be bit field at all or just the uint32_t? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
691 typedef uint32_t map_ent_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
692
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
693 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
694 * Time Map.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
695 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
696 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
697 uint8_t tmu; /* Time unit, in seconds */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
698 uint8_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
699 uint16_t nr_of_entries;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
700 map_ent_t *map_ent;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
701 } ATTRIBUTE_PACKED vts_tmap_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
702 #define VTS_TMAP_SIZE 4U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
703
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
704 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
705 * Time Map Table.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
706 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
707 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
708 uint16_t nr_of_tmaps;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
709 uint16_t zero_1;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
710 uint32_t last_byte;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
711 vts_tmap_t *tmap;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
712 uint32_t *tmap_offset; /* offset table for each tmap */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
713 } ATTRIBUTE_PACKED vts_tmapt_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
714 #define VTS_TMAPT_SIZE 8U
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
715
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
716
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
717 #if PRAGMA_PACK
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
718 #pragma pack()
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
719 #endif
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
720
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
721
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
722 /**
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
723 * The following structure defines an IFO file. The structure is divided into
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
724 * two parts, the VMGI, or Video Manager Information, which is read from the
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
725 * 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
726 * is read in from the VTS_XX_0.[IFO,BUP] files.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
727 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
728 typedef struct {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
729 dvd_file_t *file;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
730
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
731 /* VMGI */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
732 vmgi_mat_t *vmgi_mat;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
733 tt_srpt_t *tt_srpt;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
734 pgc_t *first_play_pgc;
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
735 ptl_mait_t *ptl_mait;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
736 vts_atrt_t *vts_atrt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
737 txtdt_mgi_t *txtdt_mgi;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
738
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
739 /* Common */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
740 pgci_ut_t *pgci_ut;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
741 c_adt_t *menu_c_adt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
742 vobu_admap_t *menu_vobu_admap;
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
743
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
744 /* VTSI */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
745 vtsi_mat_t *vtsi_mat;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
746 vts_ptt_srpt_t *vts_ptt_srpt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
747 pgcit_t *vts_pgcit;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
748 vts_tmapt_t *vts_tmapt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
749 c_adt_t *vts_c_adt;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
750 vobu_admap_t *vts_vobu_admap;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
751 } ifo_handle_t;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
752
23
ac07d427fbc6 Use consistent multiple inclusion guards everywhere:
diego
parents: 22
diff changeset
753 #endif /* LIBDVDREAD_IFO_TYPES_H */