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