annotate dvdread/nav_types.h @ 249:5d643668f1e3 src

I added this code myself a long time ago, but now I am quite convinced that it is wrong: Why would we filter out SPU stream change events that switch SPUs off? This breaks watching the trailer on the RC2 of "Girl, interrupted", because you always get unwanted subtitles. When I added this code, it fixed a problem with the RC2 of "Terminator", but I cannot reproduce this problem any more. Back then, the menu highlights would not show up, but they do now. I assume the problem really got fixed with proper support for forced subtitles in xine, so this crappy workaround here can go away. After all, this way it is more symmetric to audio stream change events, because these are not filtered.
author mroi
date Sun, 12 Sep 2004 15:12:43 +0000
parents 9b1b740e3fc9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
225
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
1 #ifndef NAV_TYPES_H_INCLUDED
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
2 #define NAV_TYPES_H_INCLUDED
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
3
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
4 /*
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
5 * Copyright (C) 2000, 2001, 2002 Håkan Hjort <d95hjort@dtek.chalmers.se>
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
6 *
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
7 * The data structures in this file should represent the layout of the
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
8 * pci and dsi packets as they are stored in the stream. Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
9 * found by reading the source to VOBDUMP is the base for the structure
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
10 * and names of these data types.
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
11 *
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
12 * VOBDUMP: a program for examining DVD .VOB files.
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
13 * Copyright 1998, 1999 Eric Smith <eric@brouhaha.com>
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
14 *
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
15 * VOBDUMP is free software; you can redistribute it and/or modify it
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
16 * under the terms of the GNU General Public License version 2 as
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
17 * published by the Free Software Foundation. Note that I am not
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
18 * granting permission to redistribute or modify VOBDUMP under the terms
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
19 * of any later version of the General Public License.
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
20 *
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
21 * This program is distributed in the hope that it will be useful (or at
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
22 * least amusing), but WITHOUT ANY WARRANTY; without even the implied
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
23 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
24 * the GNU General Public License for more details.
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
25 *
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
26 * You should have received a copy of the GNU General Public License
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
27 * along with this program; if not, write to the Free Software
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
29 * USA
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
30 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
31
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
32 #include <inttypes.h>
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
33 #include "ifo_types.h" /* only dvd_time_t, vm_cmd_t and user_ops_t */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
34
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
35
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
36 #undef ATTRIBUTE_PACKED
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
37 #undef PRAGMA_PACK_BEGIN
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
38 #undef PRAGMA_PACK_END
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
39
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
40 #if defined(__GNUC__)
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
41 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
42 #define ATTRIBUTE_PACKED __attribute__ ((packed))
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
43 #define PRAGMA_PACK 0
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
44 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
45 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
46
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
47 #if !defined(ATTRIBUTE_PACKED)
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
48 #define ATTRIBUTE_PACKED
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
49 #define PRAGMA_PACK 1
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
50 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
51
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
52
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
53 /* The length including the substream id byte. */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
54 #define PCI_BYTES 0x3d4
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
55 #define DSI_BYTES 0x3fa
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
56
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
57 #define PS2_PCI_SUBSTREAM_ID 0x00
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
58 #define PS2_DSI_SUBSTREAM_ID 0x01
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
59
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
60 /* Remove this */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
61 #define DSI_START_BYTE 1031
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
62
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
63
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
64 #if PRAGMA_PACK
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
65 #pragma pack(1)
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
66 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
67
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
68
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
69 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
70 * PCI General Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
71 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
72 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
73 uint32_t nv_pck_lbn; /**< sector address of this nav pack */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
74 uint16_t vobu_cat; /**< 'category' of vobu */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
75 uint16_t zero1; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
76 user_ops_t vobu_uop_ctl; /**< UOP of vobu */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
77 uint32_t vobu_s_ptm; /**< start presentation time of vobu */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
78 uint32_t vobu_e_ptm; /**< end presentation time of vobu */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
79 uint32_t vobu_se_e_ptm; /**< end ptm of sequence end in vobu */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
80 dvd_time_t e_eltm; /**< Cell elapsed time */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
81 char vobu_isrc[32];
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
82 } ATTRIBUTE_PACKED pci_gi_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
83
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
84 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
85 * Non Seamless Angle Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
86 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
87 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
88 uint32_t nsml_agl_dsta[9]; /**< address of destination vobu in AGL_C#n */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
89 } ATTRIBUTE_PACKED nsml_agli_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
90
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
91 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
92 * Highlight General Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
93 *
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
94 * For btngrX_dsp_ty the bits have the following meaning:
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
95 * 000b: normal 4/3 only buttons
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
96 * XX1b: wide (16/9) buttons
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
97 * X1Xb: letterbox buttons
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
98 * 1XXb: pan&scan buttons
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
99 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
100 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
101 uint16_t hli_ss; /**< status, only low 2 bits 0: no buttons, 1: different 2: equal 3: eual except for button cmds */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
102 uint32_t hli_s_ptm; /**< start ptm of hli */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
103 uint32_t hli_e_ptm; /**< end ptm of hli */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
104 uint32_t btn_se_e_ptm; /**< end ptm of button select */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
105 unsigned int zero1 : 2; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
106 unsigned int btngr_ns : 2; /**< number of button groups 1, 2 or 3 with 36/18/12 buttons */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
107 unsigned int zero2 : 1; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
108 unsigned int btngr1_dsp_ty : 3; /**< display type of subpic stream for button group 1 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
109 unsigned int zero3 : 1; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
110 unsigned int btngr2_dsp_ty : 3; /**< display type of subpic stream for button group 2 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
111 unsigned int zero4 : 1; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
112 unsigned int btngr3_dsp_ty : 3; /**< display type of subpic stream for button group 3 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
113 uint8_t btn_ofn; /**< button offset number range 0-255 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
114 uint8_t btn_ns; /**< number of valid buttons <= 36/18/12 (low 6 bits) */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
115 uint8_t nsl_btn_ns; /**< number of buttons selectable by U_BTNNi (low 6 bits) nsl_btn_ns <= btn_ns */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
116 uint8_t zero5; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
117 uint8_t fosl_btnn; /**< forcedly selected button (low 6 bits) */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
118 uint8_t foac_btnn; /**< forcedly activated button (low 6 bits) */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
119 } ATTRIBUTE_PACKED hl_gi_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
120
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
121
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
122 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
123 * Button Color Information Table
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
124 * Each entry beeing a 32bit word that contains the color indexs and alpha
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
125 * values to use. They are all represented by 4 bit number and stored
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
126 * like this [Ci3, Ci2, Ci1, Ci0, A3, A2, A1, A0]. The actual palette
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
127 * that the indexes reference is in the PGC.
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
128 * @TODO split the uint32_t into a struct
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
129 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
130 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
131 uint32_t btn_coli[3][2]; /**< [button color number-1][select:0/action:1] */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
132 } ATTRIBUTE_PACKED btn_colit_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
133
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
134 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
135 * Button Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
136 *
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
137 * NOTE: I've had to change the structure from the disk layout to get
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
138 * the packing to work with Sun's Forte C compiler.
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
139 * The 4 and 7 bytes are 'rotated' was: ABC DEF GHIJ is: ABCG DEFH IJ
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
140 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
141 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
142 unsigned int btn_coln : 2; /**< button color number */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
143 unsigned int x_start : 10; /**< x start offset within the overlay */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
144 unsigned int zero1 : 2; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
145 unsigned int x_end : 10; /**< x end offset within the overlay */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
146
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
147 unsigned int auto_action_mode : 2; /**< 0: no, 1: activated if selected */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
148 unsigned int y_start : 10; /**< y start offset within the overlay */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
149 unsigned int zero2 : 2; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
150 unsigned int y_end : 10; /**< y end offset within the overlay */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
151
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
152 unsigned int zero3 : 2; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
153 unsigned int up : 6; /**< button index when pressing up */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
154 unsigned int zero4 : 2; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
155 unsigned int down : 6; /**< button index when pressing down */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
156 unsigned int zero5 : 2; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
157 unsigned int left : 6; /**< button index when pressing left */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
158 unsigned int zero6 : 2; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
159 unsigned int right : 6; /**< button index when pressing right */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
160 vm_cmd_t cmd;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
161 } ATTRIBUTE_PACKED btni_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
162
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
163 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
164 * Highlight Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
165 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
166 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
167 hl_gi_t hl_gi;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
168 btn_colit_t btn_colit;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
169 btni_t btnit[36];
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
170 } ATTRIBUTE_PACKED hli_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
171
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
172 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
173 * PCI packet
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
174 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
175 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
176 pci_gi_t pci_gi;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
177 nsml_agli_t nsml_agli;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
178 hli_t hli;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
179 uint8_t zero1[189];
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
180 } ATTRIBUTE_PACKED pci_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
181
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
182
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
183
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
184
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
185 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
186 * DSI General Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
187 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
188 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
189 uint32_t nv_pck_scr;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
190 uint32_t nv_pck_lbn; /**< sector address of this nav pack */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
191 uint32_t vobu_ea; /**< end address of this VOBU */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
192 uint32_t vobu_1stref_ea; /**< end address of the 1st reference image */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
193 uint32_t vobu_2ndref_ea; /**< end address of the 2nd reference image */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
194 uint32_t vobu_3rdref_ea; /**< end address of the 3rd reference image */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
195 uint16_t vobu_vob_idn; /**< VOB Id number that this VOBU is part of */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
196 uint8_t zero1; /**< reserved */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
197 uint8_t vobu_c_idn; /**< Cell Id number that this VOBU is part of */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
198 dvd_time_t c_eltm; /**< Cell elapsed time */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
199 } ATTRIBUTE_PACKED dsi_gi_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
200
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
201 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
202 * Seamless Playback Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
203 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
204 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
205 uint16_t category; /**< 'category' of seamless VOBU */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
206 uint32_t ilvu_ea; /**< end address of interleaved Unit */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
207 uint32_t ilvu_sa; /**< start address of next interleaved unit */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
208 uint16_t size; /**< size of next interleaved unit */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
209 uint32_t vob_v_s_s_ptm; /**< video start ptm in vob */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
210 uint32_t vob_v_e_e_ptm; /**< video end ptm in vob */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
211 struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
212 uint32_t stp_ptm1;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
213 uint32_t stp_ptm2;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
214 uint32_t gap_len1;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
215 uint32_t gap_len2;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
216 } vob_a[8];
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
217 } ATTRIBUTE_PACKED sml_pbi_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
218
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
219 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
220 * Seamless Angle Infromation for one angle
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
221 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
222 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
223 uint32_t address; /**< offset to next ILVU, high bit is before/after */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
224 uint16_t size; /**< byte size of the ILVU pointed to by address */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
225 } ATTRIBUTE_PACKED sml_agl_data_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
226
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
227 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
228 * Seamless Angle Infromation
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
229 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
230 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
231 sml_agl_data_t data[9];
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
232 } ATTRIBUTE_PACKED sml_agli_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
233
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
234 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
235 * VOBU Search Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
236 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
237 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
238 uint32_t next_video; /**< Next vobu that contains video */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
239 uint32_t fwda[19]; /**< Forwards, time */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
240 uint32_t next_vobu;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
241 uint32_t prev_vobu;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
242 uint32_t bwda[19]; /**< Backwards, time */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
243 uint32_t prev_video;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
244 } ATTRIBUTE_PACKED vobu_sri_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
245
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
246 #define SRI_END_OF_CELL 0x3fffffff
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
247
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
248 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
249 * Synchronous Information
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
250 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
251 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
252 uint16_t a_synca[8]; /**< offset to first audio packet for this VOBU */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
253 uint32_t sp_synca[32]; /**< offset to first subpicture packet */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
254 } ATTRIBUTE_PACKED synci_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
255
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
256 /**
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
257 * DSI packet
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
258 */
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
259 typedef struct {
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
260 dsi_gi_t dsi_gi;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
261 sml_pbi_t sml_pbi;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
262 sml_agli_t sml_agli;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
263 vobu_sri_t vobu_sri;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
264 synci_t synci;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
265 uint8_t zero1[471];
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
266 } ATTRIBUTE_PACKED dsi_t;
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
267
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
268
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
269 #if PRAGMA_PACK
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
270 #pragma pack()
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
271 #endif
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
272
9b1b740e3fc9 big build system changes
mroi
parents:
diff changeset
273 #endif /* NAV_TYPES_H_INCLUDED */