Mercurial > libdvdnav.hg
comparison dvdread/ifo_read.c @ 362:3d8edef37c7e src
added read_pgci_srp() and removed another conditional bitfield
author | nicodvb |
---|---|
date | Sun, 11 May 2008 09:43:48 +0000 |
parents | 4cc7655e7b30 |
children | abca84921371 |
comparison
equal
deleted
inserted
replaced
361:4cc7655e7b30 | 362:3d8edef37c7e |
---|---|
210 uo->go_up = dvdread_getbits(&state, 1); | 210 uo->go_up = dvdread_getbits(&state, 1); |
211 uo->stop = dvdread_getbits(&state, 1); | 211 uo->stop = dvdread_getbits(&state, 1); |
212 uo->title_play = dvdread_getbits(&state, 1); | 212 uo->title_play = dvdread_getbits(&state, 1); |
213 uo->chapter_search_or_play = dvdread_getbits(&state, 1); | 213 uo->chapter_search_or_play = dvdread_getbits(&state, 1); |
214 uo->title_or_time_play = dvdread_getbits(&state, 1); | 214 uo->title_or_time_play = dvdread_getbits(&state, 1); |
215 } | |
216 | |
217 static void read_pgci_srp(pgci_srp_t *ps) { | |
218 getbits_state_t state; | |
219 uint8_t buf[sizeof(pgci_srp_t)]; | |
220 | |
221 memcpy(buf, ps, sizeof(pgci_srp_t)); | |
222 if (!dvdread_getbits_init(&state, buf)) abort(); | |
223 ps->entry_id = dvdread_getbits(&state, 8); | |
224 ps->block_mode = dvdread_getbits(&state, 2); | |
225 ps->block_type = dvdread_getbits(&state, 2); | |
226 ps->unknown1 = dvdread_getbits(&state, 4); | |
227 ps->ptl_id_mask = dvdread_getbits(&state, 16); | |
228 ps->pgc_start_byte = dvdread_getbits(&state, 32); | |
215 } | 229 } |
216 | 230 |
217 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { | 231 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { |
218 ifo_handle_t *ifofile; | 232 ifo_handle_t *ifofile; |
219 | 233 |
1750 } | 1764 } |
1751 ptr = data; | 1765 ptr = data; |
1752 for(i = 0; i < pgcit->nr_of_pgci_srp; i++) { | 1766 for(i = 0; i < pgcit->nr_of_pgci_srp; i++) { |
1753 memcpy(&pgcit->pgci_srp[i], ptr, PGCI_SRP_SIZE); | 1767 memcpy(&pgcit->pgci_srp[i], ptr, PGCI_SRP_SIZE); |
1754 ptr += PGCI_SRP_SIZE; | 1768 ptr += PGCI_SRP_SIZE; |
1755 B2N_16(pgcit->pgci_srp[i].ptl_id_mask); | 1769 read_pgci_srp(&pgcit->pgci_srp[i]); |
1756 B2N_32(pgcit->pgci_srp[i].pgc_start_byte); | |
1757 CHECK_VALUE(pgcit->pgci_srp[i].unknown1 == 0); | 1770 CHECK_VALUE(pgcit->pgci_srp[i].unknown1 == 0); |
1758 } | 1771 } |
1759 free(data); | 1772 free(data); |
1760 | 1773 |
1761 for(i = 0; i < pgcit->nr_of_pgci_srp; i++) | 1774 for(i = 0; i < pgcit->nr_of_pgci_srp; i++) |