Mercurial > mplayer.hg
annotate dvdread/nav_read.c @ 27409:e2de11109139
If (has outline) blur(outline) else blur(glyph).
If there is an outline, the glyph itself should not be blurred. Keeps
the border between glyph and outline clear (unblurred), which is
probably how it should be.
Patch by Diogo Franco (diogomfranco gmail com).
author | eugeni |
---|---|
date | Thu, 07 Aug 2008 22:20:58 +0000 |
parents | fc9f44db5fcd |
children |
rev | line source |
---|---|
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1 /* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */ |
7029 | 2 /* |
15874 | 3 * Copyright (C) 2000, 2001, 2002, 2003 Håkan Hjort <d95hjort@dtek.chalmers.se> |
14938
25df9508f9a8
Mark modified files as such to comply more closely with GPL ¡ø2a.
diego
parents:
8257
diff
changeset
|
4 * |
7029 | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License as published by | |
7 * the Free Software Foundation; either version 2 of the License, or | |
8 * (at your option) any later version. | |
9 * | |
10 * This program is distributed in the hope that it will be useful, | |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 * GNU General Public License for more details. | |
14 * | |
15 * You should have received a copy of the GNU General Public License | |
16 * along with this program; if not, write to the Free Software | |
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 */ | |
19 | |
15874 | 20 #include "config.h" |
21 | |
7029 | 22 #include <stdio.h> |
23 #include <string.h> | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
24 #if defined(HAVE_INTTYPES_H) |
7029 | 25 #include <inttypes.h> |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
26 #elif defined(HAVE_STDINT_H) |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
27 #include <stdint.h> |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
28 #endif |
7029 | 29 |
30 #include "bswap.h" | |
31 #include "nav_types.h" | |
32 #include "nav_read.h" | |
15874 | 33 #include "dvdread_internal.h" |
7029 | 34 |
24081
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
35 typedef struct { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
36 uint8_t *start; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
37 uint32_t byte_position; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
38 uint32_t bit_position; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
39 uint8_t byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
40 } getbits_state_t; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
41 |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
42 static int getbits_init(getbits_state_t *state, uint8_t *start) { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
43 if ((state == NULL) || (start == NULL)) return 0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
44 state->start = start; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
45 state->bit_position = 0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
46 state->byte_position = 0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
47 state->byte = start[0]; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
48 return 1; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
49 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
50 |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
51 /* Non-optimized getbits. */ |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
52 /* This can easily be optimized for particular platforms. */ |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
53 static uint32_t getbits(getbits_state_t *state, uint32_t number_of_bits) { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
54 uint32_t result=0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
55 uint8_t byte=0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
56 if (number_of_bits > 32) { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
57 printf("Number of bits > 32 in getbits\n"); |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
58 abort(); |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
59 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
60 |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
61 if ((state->bit_position) > 0) { /* Last getbits left us in the middle of a byte. */ |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
62 if (number_of_bits > (8-state->bit_position)) { /* this getbits will span 2 or more bytes. */ |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
63 byte = state->byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
64 byte = byte >> (state->bit_position); |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
65 result = byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
66 number_of_bits -= (8-state->bit_position); |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
67 state->bit_position = 0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
68 state->byte_position++; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
69 state->byte = state->start[state->byte_position]; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
70 } else { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
71 byte=state->byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
72 state->byte = state->byte << number_of_bits; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
73 byte = byte >> (8 - number_of_bits); |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
74 result = byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
75 state->bit_position += number_of_bits; /* Here it is impossible for bit_position > 8 */ |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
76 if (state->bit_position == 8) { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
77 state->bit_position = 0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
78 state->byte_position++; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
79 state->byte = state->start[state->byte_position]; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
80 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
81 number_of_bits = 0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
82 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
83 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
84 if ((state->bit_position) == 0) { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
85 while (number_of_bits > 7) { |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
86 result = (result << 8) + state->byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
87 state->byte_position++; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
88 state->byte = state->start[state->byte_position]; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
89 number_of_bits -= 8; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
90 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
91 if (number_of_bits > 0) { /* number_of_bits < 8 */ |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
92 byte = state->byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
93 state->byte = state->byte << number_of_bits; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
94 state->bit_position += number_of_bits; /* Here it is impossible for bit_position > 7 */ |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
95 byte = byte >> (8 - number_of_bits); |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
96 result = (result << number_of_bits) + byte; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
97 number_of_bits = 0; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
98 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
99 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
100 |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
101 return result; |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
102 } |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
103 |
b3bc18ea5878
added from dvdnav's dvdread getbits() code to be used in forthcoming patch to read correctly NAV data
nicodvb
parents:
24050
diff
changeset
|
104 |
7029 | 105 void navRead_PCI(pci_t *pci, unsigned char *buffer) { |
15874 | 106 int i, j; |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
107 getbits_state_t state; |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
108 if (!getbits_init(&state, buffer)) abort(); /* Passed NULL pointers */ |
7029 | 109 |
110 /* pci pci_gi */ | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
111 pci->pci_gi.nv_pck_lbn = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
112 pci->pci_gi.vobu_cat = getbits(&state, 16 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
113 pci->pci_gi.zero1 = getbits(&state, 16 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
114 pci->pci_gi.vobu_uop_ctl.zero = getbits(&state, 7 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
115 pci->pci_gi.vobu_uop_ctl.video_pres_mode_change = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
116 |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
117 pci->pci_gi.vobu_uop_ctl.karaoke_audio_pres_mode_change = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
118 pci->pci_gi.vobu_uop_ctl.angle_change = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
119 pci->pci_gi.vobu_uop_ctl.subpic_stream_change = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
120 pci->pci_gi.vobu_uop_ctl.audio_stream_change = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
121 pci->pci_gi.vobu_uop_ctl.pause_on = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
122 pci->pci_gi.vobu_uop_ctl.still_off = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
123 pci->pci_gi.vobu_uop_ctl.button_select_or_activate = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
124 pci->pci_gi.vobu_uop_ctl.resume = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
125 |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
126 pci->pci_gi.vobu_uop_ctl.chapter_menu_call = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
127 pci->pci_gi.vobu_uop_ctl.angle_menu_call = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
128 pci->pci_gi.vobu_uop_ctl.audio_menu_call = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
129 pci->pci_gi.vobu_uop_ctl.subpic_menu_call = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
130 pci->pci_gi.vobu_uop_ctl.root_menu_call = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
131 pci->pci_gi.vobu_uop_ctl.title_menu_call = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
132 pci->pci_gi.vobu_uop_ctl.backward_scan = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
133 pci->pci_gi.vobu_uop_ctl.forward_scan = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
134 |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
135 pci->pci_gi.vobu_uop_ctl.next_pg_search = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
136 pci->pci_gi.vobu_uop_ctl.prev_or_top_pg_search = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
137 pci->pci_gi.vobu_uop_ctl.time_or_chapter_search = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
138 pci->pci_gi.vobu_uop_ctl.go_up = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
139 pci->pci_gi.vobu_uop_ctl.stop = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
140 pci->pci_gi.vobu_uop_ctl.title_play = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
141 pci->pci_gi.vobu_uop_ctl.chapter_search_or_play = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
142 pci->pci_gi.vobu_uop_ctl.title_or_time_play = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
143 pci->pci_gi.vobu_s_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
144 pci->pci_gi.vobu_e_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
145 pci->pci_gi.vobu_se_e_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
146 pci->pci_gi.e_eltm.hour = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
147 pci->pci_gi.e_eltm.minute = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
148 pci->pci_gi.e_eltm.second = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
149 pci->pci_gi.e_eltm.frame_u = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
150 for(i = 0; i < 32; i++) |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
151 pci->pci_gi.vobu_isrc[i] = getbits(&state, 8 ); |
7029 | 152 |
153 /* pci nsml_agli */ | |
154 for(i = 0; i < 9; i++) | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
155 pci->nsml_agli.nsml_agl_dsta[i] = getbits(&state, 32 ); |
7029 | 156 |
157 /* pci hli hli_gi */ | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
158 pci->hli.hl_gi.hli_ss = getbits(&state, 16 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
159 pci->hli.hl_gi.hli_s_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
160 pci->hli.hl_gi.hli_e_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
161 pci->hli.hl_gi.btn_se_e_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
162 pci->hli.hl_gi.zero1 = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
163 pci->hli.hl_gi.btngr_ns = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
164 pci->hli.hl_gi.zero2 = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
165 pci->hli.hl_gi.btngr1_dsp_ty = getbits(&state, 3 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
166 pci->hli.hl_gi.zero3 = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
167 pci->hli.hl_gi.btngr2_dsp_ty = getbits(&state, 3 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
168 pci->hli.hl_gi.zero4 = getbits(&state, 1 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
169 pci->hli.hl_gi.btngr3_dsp_ty = getbits(&state, 3 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
170 pci->hli.hl_gi.btn_ofn = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
171 pci->hli.hl_gi.btn_ns = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
172 pci->hli.hl_gi.nsl_btn_ns = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
173 pci->hli.hl_gi.zero5 = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
174 pci->hli.hl_gi.fosl_btnn = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
175 pci->hli.hl_gi.foac_btnn = getbits(&state, 8 ); |
7029 | 176 |
177 /* pci hli btn_colit */ | |
178 for(i = 0; i < 3; i++) | |
179 for(j = 0; j < 2; j++) | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
180 pci->hli.btn_colit.btn_coli[i][j] = getbits(&state, 32 ); |
7029 | 181 |
182 /* pci hli btni */ | |
183 for(i = 0; i < 36; i++) { | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
184 pci->hli.btnit[i].btn_coln = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
185 pci->hli.btnit[i].x_start = getbits(&state, 10 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
186 pci->hli.btnit[i].zero1 = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
187 pci->hli.btnit[i].x_end = getbits(&state, 10 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
188 |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
189 pci->hli.btnit[i].auto_action_mode = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
190 pci->hli.btnit[i].y_start = getbits(&state, 10 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
191 pci->hli.btnit[i].zero2 = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
192 pci->hli.btnit[i].y_end = getbits(&state, 10 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
193 |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
194 pci->hli.btnit[i].zero3 = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
195 pci->hli.btnit[i].up = getbits(&state, 6 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
196 pci->hli.btnit[i].zero4 = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
197 pci->hli.btnit[i].down = getbits(&state, 6 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
198 pci->hli.btnit[i].zero5 = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
199 pci->hli.btnit[i].left = getbits(&state, 6 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
200 pci->hli.btnit[i].zero6 = getbits(&state, 2 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
201 pci->hli.btnit[i].right = getbits(&state, 6 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
202 /* pci vm_cmd */ |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
203 for(j = 0; j < 8; j++) |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
204 pci->hli.btnit[i].cmd.bytes[j] = getbits(&state, 8 ); |
7029 | 205 } |
206 | |
207 | |
15874 | 208 #ifndef NDEBUG |
7029 | 209 /* Asserts */ |
210 | |
211 /* pci pci gi */ | |
15874 | 212 CHECK_VALUE(pci->pci_gi.zero1 == 0); |
7029 | 213 |
214 /* pci hli hli_gi */ | |
15874 | 215 CHECK_VALUE(pci->hli.hl_gi.zero1 == 0); |
216 CHECK_VALUE(pci->hli.hl_gi.zero2 == 0); | |
217 CHECK_VALUE(pci->hli.hl_gi.zero3 == 0); | |
218 CHECK_VALUE(pci->hli.hl_gi.zero4 == 0); | |
219 CHECK_VALUE(pci->hli.hl_gi.zero5 == 0); | |
7029 | 220 |
221 /* Are there buttons defined here? */ | |
222 if((pci->hli.hl_gi.hli_ss & 0x03) != 0) { | |
15874 | 223 CHECK_VALUE(pci->hli.hl_gi.btn_ns != 0); |
224 CHECK_VALUE(pci->hli.hl_gi.btngr_ns != 0); | |
7029 | 225 } else { |
15874 | 226 CHECK_VALUE((pci->hli.hl_gi.btn_ns != 0 && pci->hli.hl_gi.btngr_ns != 0) |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
227 || (pci->hli.hl_gi.btn_ns == 0 && pci->hli.hl_gi.btngr_ns == 0)); |
7029 | 228 } |
229 | |
230 /* pci hli btnit */ | |
231 for(i = 0; i < pci->hli.hl_gi.btngr_ns; i++) { | |
232 for(j = 0; j < (36 / pci->hli.hl_gi.btngr_ns); j++) { | |
8257
635df9d22d38
100l patch by (Dominik Mierzejewski <dominik at rangers dot eu dot org>)
michael
parents:
8254
diff
changeset
|
233 int n = (36 / pci->hli.hl_gi.btngr_ns) * i + j; |
15874 | 234 CHECK_VALUE(pci->hli.btnit[n].zero1 == 0); |
235 CHECK_VALUE(pci->hli.btnit[n].zero2 == 0); | |
236 CHECK_VALUE(pci->hli.btnit[n].zero3 == 0); | |
237 CHECK_VALUE(pci->hli.btnit[n].zero4 == 0); | |
238 CHECK_VALUE(pci->hli.btnit[n].zero5 == 0); | |
239 CHECK_VALUE(pci->hli.btnit[n].zero6 == 0); | |
7029 | 240 |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
241 if (j < pci->hli.hl_gi.btn_ns) { |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
242 CHECK_VALUE(pci->hli.btnit[n].x_start <= pci->hli.btnit[n].x_end); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
243 CHECK_VALUE(pci->hli.btnit[n].y_start <= pci->hli.btnit[n].y_end); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
244 CHECK_VALUE(pci->hli.btnit[n].up <= pci->hli.hl_gi.btn_ns); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
245 CHECK_VALUE(pci->hli.btnit[n].down <= pci->hli.hl_gi.btn_ns); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
246 CHECK_VALUE(pci->hli.btnit[n].left <= pci->hli.hl_gi.btn_ns); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
247 CHECK_VALUE(pci->hli.btnit[n].right <= pci->hli.hl_gi.btn_ns); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
248 //vmcmd_verify(pci->hli.btnit[n].cmd); |
7029 | 249 } else { |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
250 int k; |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
251 CHECK_VALUE(pci->hli.btnit[n].btn_coln == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
252 CHECK_VALUE(pci->hli.btnit[n].auto_action_mode == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
253 CHECK_VALUE(pci->hli.btnit[n].x_start == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
254 CHECK_VALUE(pci->hli.btnit[n].y_start == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
255 CHECK_VALUE(pci->hli.btnit[n].x_end == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
256 CHECK_VALUE(pci->hli.btnit[n].y_end == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
257 CHECK_VALUE(pci->hli.btnit[n].up == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
258 CHECK_VALUE(pci->hli.btnit[n].down == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
259 CHECK_VALUE(pci->hli.btnit[n].left == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
260 CHECK_VALUE(pci->hli.btnit[n].right == 0); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
261 for (k = 0; k < 8; k++) |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
262 CHECK_VALUE(pci->hli.btnit[n].cmd.bytes[k] == 0); //CHECK_ZERO? |
7029 | 263 } |
264 } | |
265 } | |
15874 | 266 #endif /* !NDEBUG */ |
7029 | 267 } |
268 | |
269 void navRead_DSI(dsi_t *dsi, unsigned char *buffer) { | |
270 int i; | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
271 getbits_state_t state; |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
272 if (!getbits_init(&state, buffer)) abort(); /* Passed NULL pointers */ |
7029 | 273 |
274 /* dsi dsi gi */ | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
275 dsi->dsi_gi.nv_pck_scr = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
276 dsi->dsi_gi.nv_pck_lbn = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
277 dsi->dsi_gi.vobu_ea = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
278 dsi->dsi_gi.vobu_1stref_ea = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
279 dsi->dsi_gi.vobu_2ndref_ea = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
280 dsi->dsi_gi.vobu_3rdref_ea = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
281 dsi->dsi_gi.vobu_vob_idn = getbits(&state, 16 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
282 dsi->dsi_gi.zero1 = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
283 dsi->dsi_gi.vobu_c_idn = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
284 dsi->dsi_gi.c_eltm.hour = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
285 dsi->dsi_gi.c_eltm.minute = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
286 dsi->dsi_gi.c_eltm.second = getbits(&state, 8 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
287 dsi->dsi_gi.c_eltm.frame_u = getbits(&state, 8 ); |
7029 | 288 |
289 /* dsi sml pbi */ | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
290 dsi->sml_pbi.category = getbits(&state, 16 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
291 dsi->sml_pbi.ilvu_ea = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
292 dsi->sml_pbi.ilvu_sa = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
293 dsi->sml_pbi.size = getbits(&state, 16 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
294 dsi->sml_pbi.vob_v_s_s_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
295 dsi->sml_pbi.vob_v_e_e_ptm = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
296 for(i = 0; i < 8; i++) { |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
297 dsi->sml_pbi.vob_a[i].stp_ptm1 = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
298 dsi->sml_pbi.vob_a[i].stp_ptm2 = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
299 dsi->sml_pbi.vob_a[i].gap_len1 = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
300 dsi->sml_pbi.vob_a[i].gap_len2 = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
301 } |
7029 | 302 |
303 /* dsi sml agli */ | |
304 for(i = 0; i < 9; i++) { | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
305 dsi->sml_agli.data[ i ].address = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
306 dsi->sml_agli.data[ i ].size = getbits(&state, 16 ); |
7029 | 307 } |
308 | |
309 /* dsi vobu sri */ | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
310 dsi->vobu_sri.next_video = getbits(&state, 32 ); |
7029 | 311 for(i = 0; i < 19; i++) |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
312 dsi->vobu_sri.fwda[i] = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
313 dsi->vobu_sri.next_vobu = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
314 dsi->vobu_sri.prev_vobu = getbits(&state, 32 ); |
7029 | 315 for(i = 0; i < 19; i++) |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
316 dsi->vobu_sri.bwda[i] = getbits(&state, 32 ); |
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
317 dsi->vobu_sri.prev_video = getbits(&state, 32 ); |
7029 | 318 |
319 /* dsi synci */ | |
320 for(i = 0; i < 8; i++) | |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
321 dsi->synci.a_synca[i] = getbits(&state, 16 ); |
7029 | 322 for(i = 0; i < 32; i++) |
24088
fc9f44db5fcd
reimplemented nav_read_PCI() and nav_read_DSI() using getbits() rather than relying on bitfields layout in memory
nicodvb
parents:
24081
diff
changeset
|
323 dsi->synci.sp_synca[i] = getbits(&state, 32 ); |
7029 | 324 |
325 | |
326 /* Asserts */ | |
327 | |
328 /* dsi dsi gi */ | |
15874 | 329 CHECK_VALUE(dsi->dsi_gi.zero1 == 0); |
7029 | 330 } |
331 |