[DVDnav-discuss] r1038 - in trunk/libdvdnav/src/dvdread: ifo_read.c ifo_types.h
nicodvb
subversion at mplayerhq.hu
Sun May 11 11:27:42 CEST 2008
Author: nicodvb
Date: Sun May 11 11:27:42 2008
New Revision: 1038
Log:
added read_user_ops() and removed conditional bitfield
Modified:
trunk/libdvdnav/src/dvdread/ifo_read.c
trunk/libdvdnav/src/dvdread/ifo_types.h
Modified: trunk/libdvdnav/src/dvdread/ifo_read.c
==============================================================================
--- trunk/libdvdnav/src/dvdread/ifo_read.c (original)
+++ trunk/libdvdnav/src/dvdread/ifo_read.c Sun May 11 11:27:42 2008
@@ -180,6 +180,40 @@ static void read_subp_attr(subp_attr_t *
sa->code_extension = dvdread_getbits(&state, 8);
}
+static void read_user_ops(user_ops_t *uo) {
+ getbits_state_t state;
+ uint8_t buf[sizeof(user_ops_t)];
+
+ memcpy(buf, uo, sizeof(user_ops_t));
+ if (!dvdread_getbits_init(&state, buf)) abort();
+ uo->zero = dvdread_getbits(&state, 7);
+ uo->video_pres_mode_change = dvdread_getbits(&state, 1);
+ uo->karaoke_audio_pres_mode_change = dvdread_getbits(&state, 1);
+ uo->angle_change = dvdread_getbits(&state, 1);
+ uo->subpic_stream_change = dvdread_getbits(&state, 1);
+ uo->audio_stream_change = dvdread_getbits(&state, 1);
+ uo->pause_on = dvdread_getbits(&state, 1);
+ uo->still_off = dvdread_getbits(&state, 1);
+ uo->button_select_or_activate = dvdread_getbits(&state, 1);
+ uo->resume = dvdread_getbits(&state, 1);
+ uo->chapter_menu_call = dvdread_getbits(&state, 1);
+ uo->angle_menu_call = dvdread_getbits(&state, 1);
+ uo->audio_menu_call = dvdread_getbits(&state, 1);
+ uo->subpic_menu_call = dvdread_getbits(&state, 1);
+ uo->root_menu_call = dvdread_getbits(&state, 1);
+ uo->title_menu_call = dvdread_getbits(&state, 1);
+ uo->backward_scan = dvdread_getbits(&state, 1);
+ uo->forward_scan = dvdread_getbits(&state, 1);
+ uo->next_pg_search = dvdread_getbits(&state, 1);
+ uo->prev_or_top_pg_search = dvdread_getbits(&state, 1);
+ uo->time_or_chapter_search = dvdread_getbits(&state, 1);
+ uo->go_up = dvdread_getbits(&state, 1);
+ uo->stop = dvdread_getbits(&state, 1);
+ uo->title_play = dvdread_getbits(&state, 1);
+ uo->chapter_search_or_play = dvdread_getbits(&state, 1);
+ uo->title_or_time_play = dvdread_getbits(&state, 1);
+}
+
ifo_handle_t *ifoOpen(dvd_reader_t *dvd, int title) {
ifo_handle_t *ifofile;
@@ -721,6 +755,7 @@ static int ifoRead_PGC(ifo_handle_t *ifo
if(!(DVDReadBytes(ifofile->file, pgc, PGC_SIZE)))
return 0;
+ read_user_ops(&pgc->prohibited_ops);
B2N_16(pgc->next_pgc_nr);
B2N_16(pgc->prev_pgc_nr);
B2N_16(pgc->goup_pgc_nr);
Modified: trunk/libdvdnav/src/dvdread/ifo_types.h
==============================================================================
--- trunk/libdvdnav/src/dvdread/ifo_types.h (original)
+++ trunk/libdvdnav/src/dvdread/ifo_types.h Sun May 11 11:27:42 2008
@@ -256,7 +256,6 @@ typedef struct {
* User Operations.
*/
typedef struct {
-#ifdef WORDS_BIGENDIAN
unsigned int zero : 7; /* 25-31 */
unsigned int video_pres_mode_change : 1; /* 24 */
@@ -286,37 +285,6 @@ typedef struct {
unsigned int title_play : 1;
unsigned int chapter_search_or_play : 1;
unsigned int title_or_time_play : 1; /* 0 */
-#else
- unsigned int video_pres_mode_change : 1; /* 24 */
- unsigned int zero : 7; /* 25-31 */
-
- unsigned int resume : 1; /* 16 */
- unsigned int button_select_or_activate : 1;
- unsigned int still_off : 1;
- unsigned int pause_on : 1;
- unsigned int audio_stream_change : 1;
- unsigned int subpic_stream_change : 1;
- unsigned int angle_change : 1;
- unsigned int karaoke_audio_pres_mode_change : 1; /* 23 */
-
- unsigned int forward_scan : 1; /* 8 */
- unsigned int backward_scan : 1;
- unsigned int title_menu_call : 1;
- unsigned int root_menu_call : 1;
- unsigned int subpic_menu_call : 1;
- unsigned int audio_menu_call : 1;
- unsigned int angle_menu_call : 1;
- unsigned int chapter_menu_call : 1; /* 15 */
-
- unsigned int title_or_time_play : 1; /* 0 */
- unsigned int chapter_search_or_play : 1;
- unsigned int title_play : 1;
- unsigned int stop : 1;
- unsigned int go_up : 1;
- unsigned int time_or_chapter_search : 1;
- unsigned int prev_or_top_pg_search : 1;
- unsigned int next_pg_search : 1; /* 7 */
-#endif
} ATTRIBUTE_PACKED user_ops_t;
/**
More information about the DVDnav-discuss
mailing list