Mercurial > libdvdnav.hg
comparison dvdread/ifo_read.c @ 361:4cc7655e7b30 src
added read_user_ops() and removed conditional bitfield
author | nicodvb |
---|---|
date | Sun, 11 May 2008 09:27:42 +0000 |
parents | 0dae99f22e60 |
children | 3d8edef37c7e |
comparison
equal
deleted
inserted
replaced
360:b6fa98f690ee | 361:4cc7655e7b30 |
---|---|
176 sa->type = dvdread_getbits(&state, 2); | 176 sa->type = dvdread_getbits(&state, 2); |
177 sa->zero2 = dvdread_getbits(&state, 8); | 177 sa->zero2 = dvdread_getbits(&state, 8); |
178 sa->lang_code = dvdread_getbits(&state, 16); | 178 sa->lang_code = dvdread_getbits(&state, 16); |
179 sa->lang_extension = dvdread_getbits(&state, 8); | 179 sa->lang_extension = dvdread_getbits(&state, 8); |
180 sa->code_extension = dvdread_getbits(&state, 8); | 180 sa->code_extension = dvdread_getbits(&state, 8); |
181 } | |
182 | |
183 static void read_user_ops(user_ops_t *uo) { | |
184 getbits_state_t state; | |
185 uint8_t buf[sizeof(user_ops_t)]; | |
186 | |
187 memcpy(buf, uo, sizeof(user_ops_t)); | |
188 if (!dvdread_getbits_init(&state, buf)) abort(); | |
189 uo->zero = dvdread_getbits(&state, 7); | |
190 uo->video_pres_mode_change = dvdread_getbits(&state, 1); | |
191 uo->karaoke_audio_pres_mode_change = dvdread_getbits(&state, 1); | |
192 uo->angle_change = dvdread_getbits(&state, 1); | |
193 uo->subpic_stream_change = dvdread_getbits(&state, 1); | |
194 uo->audio_stream_change = dvdread_getbits(&state, 1); | |
195 uo->pause_on = dvdread_getbits(&state, 1); | |
196 uo->still_off = dvdread_getbits(&state, 1); | |
197 uo->button_select_or_activate = dvdread_getbits(&state, 1); | |
198 uo->resume = dvdread_getbits(&state, 1); | |
199 uo->chapter_menu_call = dvdread_getbits(&state, 1); | |
200 uo->angle_menu_call = dvdread_getbits(&state, 1); | |
201 uo->audio_menu_call = dvdread_getbits(&state, 1); | |
202 uo->subpic_menu_call = dvdread_getbits(&state, 1); | |
203 uo->root_menu_call = dvdread_getbits(&state, 1); | |
204 uo->title_menu_call = dvdread_getbits(&state, 1); | |
205 uo->backward_scan = dvdread_getbits(&state, 1); | |
206 uo->forward_scan = dvdread_getbits(&state, 1); | |
207 uo->next_pg_search = dvdread_getbits(&state, 1); | |
208 uo->prev_or_top_pg_search = dvdread_getbits(&state, 1); | |
209 uo->time_or_chapter_search = dvdread_getbits(&state, 1); | |
210 uo->go_up = dvdread_getbits(&state, 1); | |
211 uo->stop = dvdread_getbits(&state, 1); | |
212 uo->title_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); | |
181 } | 215 } |
182 | 216 |
183 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { | 217 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { |
184 ifo_handle_t *ifofile; | 218 ifo_handle_t *ifofile; |
185 | 219 |
719 return 0; | 753 return 0; |
720 | 754 |
721 if(!(DVDReadBytes(ifofile->file, pgc, PGC_SIZE))) | 755 if(!(DVDReadBytes(ifofile->file, pgc, PGC_SIZE))) |
722 return 0; | 756 return 0; |
723 | 757 |
758 read_user_ops(&pgc->prohibited_ops); | |
724 B2N_16(pgc->next_pgc_nr); | 759 B2N_16(pgc->next_pgc_nr); |
725 B2N_16(pgc->prev_pgc_nr); | 760 B2N_16(pgc->prev_pgc_nr); |
726 B2N_16(pgc->goup_pgc_nr); | 761 B2N_16(pgc->goup_pgc_nr); |
727 B2N_16(pgc->command_tbl_offset); | 762 B2N_16(pgc->command_tbl_offset); |
728 B2N_16(pgc->program_map_offset); | 763 B2N_16(pgc->program_map_offset); |