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++)