Mercurial > libdvdnav.hg
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); |