annotate nav_read.c @ 46:4f40782ab5fc src

Expose the dvd_stat_t struct. The commits that brought in the DVDFileStat() function from libdvdread 0.9.7 incorrectly made the stat struct opaque. This can't be done because the API does not use any allocation or deallocation code. So callers of DVDFileStat cannot declare stat structs. Since we are attempting to maintain the API compatibility w/ those releases of libdvdread, the struct has been brought into the header. Thanks again to Rathann for bringing this issue to the dvdnav list. And thanks to the original bug reportera(O. Rolland) to fedora.
author erik
date Mon, 07 Dec 2009 03:50:20 +0000
parents c743d79f187b
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, 2002, 2003 HÃ¥kan Hjort <d95hjort@dtek.chalmers.se>
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
3 *
21
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
4 * This file is part of libdvdread.
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
5 *
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
6 * libdvdread is free software; you can redistribute it and/or modify
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
9 * (at your option) any later version.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
10 *
21
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
11 * libdvdread is distributed in the hope that it will be useful,
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
14 * GNU General Public License for more details.
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
15 *
21
4aa618ae094f Use consistent license headers everywhere: Fix FSF address and boilerplate.
diego
parents: 20
diff changeset
16 * 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
17 * 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
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
19 */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
20
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
21 #include "config.h"
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
22
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
23 #include <stdio.h>
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
24 #include <stdlib.h>
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
25 #include <string.h>
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
26 #include <inttypes.h>
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
27
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
28 #include "bswap.h"
33
c743d79f187b Move installed headers into dvdread directory to make them easier to
reimar
parents: 27
diff changeset
29 #include "dvdread/nav_types.h"
c743d79f187b Move installed headers into dvdread directory to make them easier to
reimar
parents: 27
diff changeset
30 #include "dvdread/nav_read.h"
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
31 #include "dvdread_internal.h"
33
c743d79f187b Move installed headers into dvdread directory to make them easier to
reimar
parents: 27
diff changeset
32 #include "dvdread/bitreader.h"
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
33
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
34 #define getbits_init dvdread_getbits_init
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
35 #define getbits dvdread_getbits
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
36
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
37 void navRead_PCI(pci_t *pci, unsigned char *buffer) {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
38 int32_t i, j;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
39 getbits_state_t state;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
40 if (!getbits_init(&state, buffer)) abort(); /* Passed NULL pointers */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
41
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
42 /* pci pci_gi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
43 pci->pci_gi.nv_pck_lbn = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
44 pci->pci_gi.vobu_cat = getbits(&state, 16 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
45 pci->pci_gi.zero1 = getbits(&state, 16 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
46 pci->pci_gi.vobu_uop_ctl.zero = getbits(&state, 7 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
47 pci->pci_gi.vobu_uop_ctl.video_pres_mode_change = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
48
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
49 pci->pci_gi.vobu_uop_ctl.karaoke_audio_pres_mode_change = getbits(&state, 1 );
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
50 pci->pci_gi.vobu_uop_ctl.angle_change = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
51 pci->pci_gi.vobu_uop_ctl.subpic_stream_change = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
52 pci->pci_gi.vobu_uop_ctl.audio_stream_change = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
53 pci->pci_gi.vobu_uop_ctl.pause_on = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
54 pci->pci_gi.vobu_uop_ctl.still_off = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
55 pci->pci_gi.vobu_uop_ctl.button_select_or_activate = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
56 pci->pci_gi.vobu_uop_ctl.resume = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
57
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
58 pci->pci_gi.vobu_uop_ctl.chapter_menu_call = getbits(&state, 1 );
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
59 pci->pci_gi.vobu_uop_ctl.angle_menu_call = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
60 pci->pci_gi.vobu_uop_ctl.audio_menu_call = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
61 pci->pci_gi.vobu_uop_ctl.subpic_menu_call = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
62 pci->pci_gi.vobu_uop_ctl.root_menu_call = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
63 pci->pci_gi.vobu_uop_ctl.title_menu_call = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
64 pci->pci_gi.vobu_uop_ctl.backward_scan = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
65 pci->pci_gi.vobu_uop_ctl.forward_scan = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
66
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
67 pci->pci_gi.vobu_uop_ctl.next_pg_search = getbits(&state, 1 );
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
68 pci->pci_gi.vobu_uop_ctl.prev_or_top_pg_search = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
69 pci->pci_gi.vobu_uop_ctl.time_or_chapter_search = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
70 pci->pci_gi.vobu_uop_ctl.go_up = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
71 pci->pci_gi.vobu_uop_ctl.stop = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
72 pci->pci_gi.vobu_uop_ctl.title_play = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
73 pci->pci_gi.vobu_uop_ctl.chapter_search_or_play = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
74 pci->pci_gi.vobu_uop_ctl.title_or_time_play = getbits(&state, 1 );
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
75 pci->pci_gi.vobu_s_ptm = getbits(&state, 32 );
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
76 pci->pci_gi.vobu_e_ptm = getbits(&state, 32 );
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
77 pci->pci_gi.vobu_se_e_ptm = getbits(&state, 32 );
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
78 pci->pci_gi.e_eltm.hour = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
79 pci->pci_gi.e_eltm.minute = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
80 pci->pci_gi.e_eltm.second = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
81 pci->pci_gi.e_eltm.frame_u = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
82 for(i = 0; i < 32; i++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
83 pci->pci_gi.vobu_isrc[i] = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
84
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
85 /* pci nsml_agli */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
86 for(i = 0; i < 9; i++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
87 pci->nsml_agli.nsml_agl_dsta[i] = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
88
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
89 /* pci hli hli_gi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
90 pci->hli.hl_gi.hli_ss = getbits(&state, 16 );
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
91 pci->hli.hl_gi.hli_s_ptm = getbits(&state, 32 );
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
92 pci->hli.hl_gi.hli_e_ptm = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
93 pci->hli.hl_gi.btn_se_e_ptm = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
94 pci->hli.hl_gi.zero1 = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
95 pci->hli.hl_gi.btngr_ns = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
96 pci->hli.hl_gi.zero2 = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
97 pci->hli.hl_gi.btngr1_dsp_ty = getbits(&state, 3 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
98 pci->hli.hl_gi.zero3 = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
99 pci->hli.hl_gi.btngr2_dsp_ty = getbits(&state, 3 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
100 pci->hli.hl_gi.zero4 = getbits(&state, 1 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
101 pci->hli.hl_gi.btngr3_dsp_ty = getbits(&state, 3 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
102 pci->hli.hl_gi.btn_ofn = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
103 pci->hli.hl_gi.btn_ns = getbits(&state, 8 );
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
104 pci->hli.hl_gi.nsl_btn_ns = getbits(&state, 8 );
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
105 pci->hli.hl_gi.zero5 = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
106 pci->hli.hl_gi.fosl_btnn = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
107 pci->hli.hl_gi.foac_btnn = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
108
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
109 /* pci hli btn_colit */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
110 for(i = 0; i < 3; i++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
111 for(j = 0; j < 2; j++)
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
112 pci->hli.btn_colit.btn_coli[i][j] = getbits(&state, 32 );
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
113
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
114 /* NOTE: I've had to change the structure from the disk layout to get
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
115 * the packing to work with Sun's Forte C compiler. */
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
116
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
117 /* pci hli btni */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
118 for(i = 0; i < 36; i++) {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
119 pci->hli.btnit[i].btn_coln = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
120 pci->hli.btnit[i].x_start = getbits(&state, 10 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
121 pci->hli.btnit[i].zero1 = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
122 pci->hli.btnit[i].x_end = getbits(&state, 10 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
123
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
124 pci->hli.btnit[i].auto_action_mode = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
125 pci->hli.btnit[i].y_start = getbits(&state, 10 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
126 pci->hli.btnit[i].zero2 = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
127 pci->hli.btnit[i].y_end = getbits(&state, 10 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
128
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
129 pci->hli.btnit[i].zero3 = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
130 pci->hli.btnit[i].up = getbits(&state, 6 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
131 pci->hli.btnit[i].zero4 = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
132 pci->hli.btnit[i].down = getbits(&state, 6 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
133 pci->hli.btnit[i].zero5 = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
134 pci->hli.btnit[i].left = getbits(&state, 6 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
135 pci->hli.btnit[i].zero6 = getbits(&state, 2 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
136 pci->hli.btnit[i].right = getbits(&state, 6 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
137 /* pci vm_cmd */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
138 for(j = 0; j < 8; j++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
139 pci->hli.btnit[i].cmd.bytes[j] = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
140 }
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
141
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
142
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
143 #ifndef NDEBUG
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
144 /* Asserts */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
145
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
146 /* pci pci gi */
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
147 CHECK_VALUE(pci->pci_gi.zero1 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
148
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
149 /* pci hli hli_gi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
150 CHECK_VALUE(pci->hli.hl_gi.zero1 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
151 CHECK_VALUE(pci->hli.hl_gi.zero2 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
152 CHECK_VALUE(pci->hli.hl_gi.zero3 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
153 CHECK_VALUE(pci->hli.hl_gi.zero4 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
154 CHECK_VALUE(pci->hli.hl_gi.zero5 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
155
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
156 /* Are there buttons defined here? */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
157 if((pci->hli.hl_gi.hli_ss & 0x03) != 0) {
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
158 CHECK_VALUE(pci->hli.hl_gi.btn_ns != 0);
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
159 CHECK_VALUE(pci->hli.hl_gi.btngr_ns != 0);
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
160 } else {
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
161 CHECK_VALUE((pci->hli.hl_gi.btn_ns != 0 && pci->hli.hl_gi.btngr_ns != 0)
27
98951f8ec89c cosmetics: Sync indentation and similar changes from libdvdread 0.9.5.
diego
parents: 26
diff changeset
162 || (pci->hli.hl_gi.btn_ns == 0 && pci->hli.hl_gi.btngr_ns == 0));
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
163 }
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
164
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
165 /* pci hli btnit */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
166 for(i = 0; i < pci->hli.hl_gi.btngr_ns; i++) {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
167 for(j = 0; j < (36 / pci->hli.hl_gi.btngr_ns); j++) {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
168 int n = (36 / pci->hli.hl_gi.btngr_ns) * i + j;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
169 CHECK_VALUE(pci->hli.btnit[n].zero1 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
170 CHECK_VALUE(pci->hli.btnit[n].zero2 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
171 CHECK_VALUE(pci->hli.btnit[n].zero3 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
172 CHECK_VALUE(pci->hli.btnit[n].zero4 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
173 CHECK_VALUE(pci->hli.btnit[n].zero5 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
174 CHECK_VALUE(pci->hli.btnit[n].zero6 == 0);
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
175
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
176 if (j < pci->hli.hl_gi.btn_ns) {
26
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
177 CHECK_VALUE(pci->hli.btnit[n].x_start <= pci->hli.btnit[n].x_end);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
178 CHECK_VALUE(pci->hli.btnit[n].y_start <= pci->hli.btnit[n].y_end);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
179 CHECK_VALUE(pci->hli.btnit[n].up <= pci->hli.hl_gi.btn_ns);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
180 CHECK_VALUE(pci->hli.btnit[n].down <= pci->hli.hl_gi.btn_ns);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
181 CHECK_VALUE(pci->hli.btnit[n].left <= pci->hli.hl_gi.btn_ns);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
182 CHECK_VALUE(pci->hli.btnit[n].right <= pci->hli.hl_gi.btn_ns);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
183 /* vmcmd_verify(pci->hli.btnit[n].cmd); */
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
184 } else {
26
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
185 int k;
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
186 CHECK_VALUE(pci->hli.btnit[n].btn_coln == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
187 CHECK_VALUE(pci->hli.btnit[n].auto_action_mode == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
188 CHECK_VALUE(pci->hli.btnit[n].x_start == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
189 CHECK_VALUE(pci->hli.btnit[n].y_start == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
190 CHECK_VALUE(pci->hli.btnit[n].x_end == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
191 CHECK_VALUE(pci->hli.btnit[n].y_end == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
192 CHECK_VALUE(pci->hli.btnit[n].up == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
193 CHECK_VALUE(pci->hli.btnit[n].down == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
194 CHECK_VALUE(pci->hli.btnit[n].left == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
195 CHECK_VALUE(pci->hli.btnit[n].right == 0);
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
196 for (k = 0; k < 8; k++)
0d82d0f30c98 cosmetics: Convert all tabs to spaces.
diego
parents: 22
diff changeset
197 CHECK_VALUE(pci->hli.btnit[n].cmd.bytes[k] == 0); /* CHECK_ZERO? */
3
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 }
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
201 #endif /* !NDEBUG */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
202 }
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
203
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
204 void navRead_DSI(dsi_t *dsi, unsigned char *buffer) {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
205 int i;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
206 getbits_state_t state;
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
207 if (!getbits_init(&state, buffer)) abort(); /* Passed NULL pointers */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
208
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
209 /* dsi dsi gi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
210 dsi->dsi_gi.nv_pck_scr = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
211 dsi->dsi_gi.nv_pck_lbn = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
212 dsi->dsi_gi.vobu_ea = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
213 dsi->dsi_gi.vobu_1stref_ea = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
214 dsi->dsi_gi.vobu_2ndref_ea = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
215 dsi->dsi_gi.vobu_3rdref_ea = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
216 dsi->dsi_gi.vobu_vob_idn = getbits(&state, 16 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
217 dsi->dsi_gi.zero1 = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
218 dsi->dsi_gi.vobu_c_idn = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
219 dsi->dsi_gi.c_eltm.hour = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
220 dsi->dsi_gi.c_eltm.minute = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
221 dsi->dsi_gi.c_eltm.second = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
222 dsi->dsi_gi.c_eltm.frame_u = getbits(&state, 8 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
223
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
224 /* dsi sml pbi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
225 dsi->sml_pbi.category = getbits(&state, 16 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
226 dsi->sml_pbi.ilvu_ea = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
227 dsi->sml_pbi.ilvu_sa = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
228 dsi->sml_pbi.size = getbits(&state, 16 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
229 dsi->sml_pbi.vob_v_s_s_ptm = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
230 dsi->sml_pbi.vob_v_e_e_ptm = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
231 for(i = 0; i < 8; i++) {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
232 dsi->sml_pbi.vob_a[i].stp_ptm1 = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
233 dsi->sml_pbi.vob_a[i].stp_ptm2 = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
234 dsi->sml_pbi.vob_a[i].gap_len1 = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
235 dsi->sml_pbi.vob_a[i].gap_len2 = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
236 }
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
237
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
238 /* dsi sml agli */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
239 for(i = 0; i < 9; i++) {
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
240 dsi->sml_agli.data[ i ].address = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
241 dsi->sml_agli.data[ i ].size = getbits(&state, 16 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
242 }
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
243
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
244 /* dsi vobu sri */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
245 dsi->vobu_sri.next_video = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
246 for(i = 0; i < 19; i++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
247 dsi->vobu_sri.fwda[i] = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
248 dsi->vobu_sri.next_vobu = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
249 dsi->vobu_sri.prev_vobu = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
250 for(i = 0; i < 19; i++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
251 dsi->vobu_sri.bwda[i] = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
252 dsi->vobu_sri.prev_video = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
253
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
254 /* dsi synci */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
255 for(i = 0; i < 8; i++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
256 dsi->synci.a_synca[i] = getbits(&state, 16 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
257 for(i = 0; i < 32; i++)
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
258 dsi->synci.sp_synca[i] = getbits(&state, 32 );
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
259
20
fce16251755c Remove all trailing whitespace,
rathann
parents: 3
diff changeset
260
3
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
261 /* Asserts */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
262
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
263 /* dsi dsi gi */
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
264 CHECK_VALUE(dsi->dsi_gi.zero1 == 0);
fdbae45c30fc moved to src/ the sources files
nicodvb
parents:
diff changeset
265 }