comparison dvdread/ifo_read.c @ 350:950749fdce4a src

read_multichannel_ext() uses getbits() instead of relying on endianness-specific bitfields
author nicodvb
date Sat, 03 May 2008 08:04:34 +0000
parents 8a711d89e294
children c2218d2a9387
comparison
equal deleted inserted replaced
349:8a711d89e294 350:950749fdce4a
136 aa->app_info.karaoke.version = dvdread_getbits(&state, 2); 136 aa->app_info.karaoke.version = dvdread_getbits(&state, 2);
137 aa->app_info.karaoke.mc_intro = dvdread_getbits(&state, 1); 137 aa->app_info.karaoke.mc_intro = dvdread_getbits(&state, 1);
138 aa->app_info.karaoke.mode = dvdread_getbits(&state, 1); 138 aa->app_info.karaoke.mode = dvdread_getbits(&state, 1);
139 fprintf(stderr, "\r\nLANG: %c%c, x: %x\r\n", aa->lang_code>>8, aa->lang_code&0xFF, aa->lang_code); 139 fprintf(stderr, "\r\nLANG: %c%c, x: %x\r\n", aa->lang_code>>8, aa->lang_code&0xFF, aa->lang_code);
140 } 140 }
141
142 static void read_multichannel_ext(multichannel_ext_t *me) {
143 getbits_state_t state;
144 uint8_t buf[sizeof(multichannel_ext_t)];
145
146 memcpy(buf, me, sizeof(multichannel_ext_t));
147 if (!dvdread_getbits_init(&state, buf)) abort();
148 me->zero1 = dvdread_getbits(&state, 7);
149 me->ach0_gme = dvdread_getbits(&state, 1);
150 me->zero2 = dvdread_getbits(&state, 7);
151 me->ach1_gme = dvdread_getbits(&state, 1);
152 me->zero3 = dvdread_getbits(&state, 4);
153 me->ach2_gv1e = dvdread_getbits(&state, 1);
154 me->ach2_gv2e = dvdread_getbits(&state, 1);
155 me->ach2_gm1e = dvdread_getbits(&state, 1);
156 me->ach2_gm2e = dvdread_getbits(&state, 1);
157 me->zero4 = dvdread_getbits(&state, 4);
158 me->ach3_gv1e = dvdread_getbits(&state, 1);
159 me->ach3_gv2e = dvdread_getbits(&state, 1);
160 me->ach3_gmAe = dvdread_getbits(&state, 1);
161 me->ach3_se2e = dvdread_getbits(&state, 1);
162 me->zero5 = dvdread_getbits(&state, 4);
163 me->ach4_gv1e = dvdread_getbits(&state, 1);
164 me->ach4_gv2e = dvdread_getbits(&state, 1);
165 me->ach4_gmBe = dvdread_getbits(&state, 1);
166 me->ach4_seBe = dvdread_getbits(&state, 1);
167 }
168
141 169
142 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) { 170 ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) {
143 ifo_handle_t *ifofile; 171 ifo_handle_t *ifofile;
144 172
145 ifofile = (ifo_handle_t *)malloc(sizeof(ifo_handle_t)); 173 ifofile = (ifo_handle_t *)malloc(sizeof(ifo_handle_t));
508 CHECK_VALUE(vtsi_mat->nr_of_vts_subp_streams <= 32); 536 CHECK_VALUE(vtsi_mat->nr_of_vts_subp_streams <= 32);
509 for(i = vtsi_mat->nr_of_vts_subp_streams; i < 32; i++) 537 for(i = vtsi_mat->nr_of_vts_subp_streams; i < 32; i++)
510 CHECK_ZERO(vtsi_mat->vts_subp_attr[i]); 538 CHECK_ZERO(vtsi_mat->vts_subp_attr[i]);
511 539
512 for(i = 0; i < 8; i++) { 540 for(i = 0; i < 8; i++) {
541 read_multichannel_ext(&vtsi_mat->vts_mu_audio_attr[i]);
513 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero1); 542 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero1);
514 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero2); 543 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero2);
515 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero3); 544 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero3);
516 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero4); 545 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero4);
517 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero5); 546 CHECK_ZERO0(vtsi_mat->vts_mu_audio_attr[i].zero5);