Mercurial > libdvdnav.hg
comparison dvdread/ifo_read.c @ 364:23607807ff65 src
read_playback_type() finally removes the last conditional bitfield struct
author | nicodvb |
---|---|
date | Sun, 11 May 2008 20:35:22 +0000 |
parents | abca84921371 |
children | 5b8539cacebf |
comparison
equal
deleted
inserted
replaced
363:abca84921371 | 364:23607807ff65 |
---|---|
253 | 253 |
254 cp->first_sector = dvdread_getbits(&state, 32); | 254 cp->first_sector = dvdread_getbits(&state, 32); |
255 cp->first_ilvu_end_sector = dvdread_getbits(&state, 32); | 255 cp->first_ilvu_end_sector = dvdread_getbits(&state, 32); |
256 cp->last_vobu_start_sector = dvdread_getbits(&state, 32); | 256 cp->last_vobu_start_sector = dvdread_getbits(&state, 32); |
257 cp->last_sector = dvdread_getbits(&state, 32); | 257 cp->last_sector = dvdread_getbits(&state, 32); |
258 } | |
259 | |
260 static void read_playback_type(playback_type_t *pt) { | |
261 getbits_state_t state; | |
262 uint8_t buf[sizeof(playback_type_t)]; | |
263 | |
264 memcpy(buf, pt, sizeof(playback_type_t)); | |
265 if (!dvdread_getbits_init(&state, buf)) abort(); | |
266 pt->zero_1 = dvdread_getbits(&state, 1); | |
267 pt->multi_or_random_pgc_title = dvdread_getbits(&state, 1); | |
268 pt->jlc_exists_in_cell_cmd = dvdread_getbits(&state, 1); | |
269 pt->jlc_exists_in_prepost_cmd = dvdread_getbits(&state, 1); | |
270 pt->jlc_exists_in_button_cmd = dvdread_getbits(&state, 1); | |
271 pt->jlc_exists_in_tt_dom = dvdread_getbits(&state, 1); | |
272 pt->chapter_search_or_play = dvdread_getbits(&state, 1); | |
273 pt->title_or_time_play = dvdread_getbits(&state, 1); | |
258 } | 274 } |
259 | 275 |
260 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { | 276 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { |
261 ifo_handle_t *ifofile; | 277 ifo_handle_t *ifofile; |
262 | 278 |
1011 CHECK_VALUE(tt_srpt->nr_of_srpts != 0); | 1027 CHECK_VALUE(tt_srpt->nr_of_srpts != 0); |
1012 CHECK_VALUE(tt_srpt->nr_of_srpts < 100); /* ?? */ | 1028 CHECK_VALUE(tt_srpt->nr_of_srpts < 100); /* ?? */ |
1013 CHECK_VALUE((int)tt_srpt->nr_of_srpts * sizeof(title_info_t) <= info_length); | 1029 CHECK_VALUE((int)tt_srpt->nr_of_srpts * sizeof(title_info_t) <= info_length); |
1014 | 1030 |
1015 for(i = 0; i < tt_srpt->nr_of_srpts; i++) { | 1031 for(i = 0; i < tt_srpt->nr_of_srpts; i++) { |
1032 read_playback_type(&tt_srpt->title[i].pb_ty); | |
1016 CHECK_VALUE(tt_srpt->title[i].pb_ty.zero_1 == 0); | 1033 CHECK_VALUE(tt_srpt->title[i].pb_ty.zero_1 == 0); |
1017 CHECK_VALUE(tt_srpt->title[i].nr_of_angles != 0); | 1034 CHECK_VALUE(tt_srpt->title[i].nr_of_angles != 0); |
1018 CHECK_VALUE(tt_srpt->title[i].nr_of_angles < 10); | 1035 CHECK_VALUE(tt_srpt->title[i].nr_of_angles < 10); |
1019 /* CHECK_VALUE(tt_srpt->title[i].nr_of_ptts != 0); */ | 1036 /* CHECK_VALUE(tt_srpt->title[i].nr_of_ptts != 0); */ |
1020 /* XXX: this assertion breaks Ghostbusters: */ | 1037 /* XXX: this assertion breaks Ghostbusters: */ |