00001 /* 00002 * This file is part of libbluray 00003 * Copyright (C) 2010 hpi1 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library. If not, see 00017 * <http://www.gnu.org/licenses/>. 00018 */ 00019 00020 #if !defined(_BD_IG_H_) 00021 #define _BD_IG_H_ 00022 00023 #include "pg.h" 00024 #include "../bdnav/uo_mask_table.h" 00025 00026 #include <stdint.h> 00027 00028 #ifdef __cplusplus 00029 extern "C" { 00030 #endif 00031 00032 struct bd_mobj_cmd_s; 00033 00034 /* 00035 * 00036 */ 00037 00038 typedef struct bd_ig_button_s { 00039 uint16_t id; 00040 00041 uint16_t numeric_select_value; 00042 uint8_t auto_action_flag; 00043 00044 uint16_t x_pos; 00045 uint16_t y_pos; 00046 00047 /* neighbor info */ 00048 uint16_t upper_button_id_ref; 00049 uint16_t lower_button_id_ref; 00050 uint16_t left_button_id_ref; 00051 uint16_t right_button_id_ref; 00052 00053 /* normal state */ 00054 uint16_t normal_start_object_id_ref; 00055 uint16_t normal_end_object_id_ref; 00056 uint8_t normal_repeat_flag; 00057 00058 /* selected state */ 00059 uint8_t selected_sound_id_ref; 00060 uint16_t selected_start_object_id_ref; 00061 uint16_t selected_end_object_id_ref; 00062 uint8_t selected_repeat_flag; 00063 00064 /* activated state */ 00065 uint8_t activated_sound_id_ref; 00066 uint16_t activated_start_object_id_ref; 00067 uint16_t activated_end_object_id_ref; 00068 00069 /* navigation commands */ 00070 uint16_t num_nav_cmds; 00071 struct bd_mobj_cmd_s *nav_cmds; 00072 00073 } BD_IG_BUTTON; 00074 00075 typedef struct bd_ig_button_overlap_group_s { 00076 uint16_t default_valid_button_id_ref; 00077 00078 unsigned num_buttons; 00079 BD_IG_BUTTON *button; 00080 00081 } BD_IG_BOG; 00082 00083 typedef struct bd_ig_effect_s { 00084 uint32_t duration; /* 90kHz ticks */ 00085 uint8_t palette_id_ref; 00086 00087 unsigned num_composition_objects; 00088 BD_PG_COMPOSITION_OBJECT *composition_object; 00089 00090 } BD_IG_EFFECT; 00091 00092 typedef struct bd_ig_effect_sequence_s { 00093 uint8_t num_windows; 00094 BD_PG_WINDOW *window; 00095 00096 uint8_t num_effects; 00097 BD_IG_EFFECT *effect; 00098 00099 } BD_IG_EFFECT_SEQUENCE; 00100 00101 typedef struct bd_ig_page_s { 00102 uint8_t id; 00103 uint8_t version; 00104 00105 BD_UO_MASK uo_mask_table; 00106 00107 BD_IG_EFFECT_SEQUENCE in_effects; 00108 BD_IG_EFFECT_SEQUENCE out_effects; 00109 00110 uint8_t animation_frame_rate_code; 00111 uint16_t default_selected_button_id_ref; 00112 uint16_t default_activated_button_id_ref; 00113 uint8_t palette_id_ref; 00114 00115 /* button overlap groups */ 00116 unsigned num_bogs; 00117 BD_IG_BOG *bog; 00118 00119 } BD_IG_PAGE; 00120 00121 typedef struct bd_ig_interactive_composition_s { 00122 uint8_t stream_model; 00123 uint8_t ui_model; /* 0 - always on, 1 - pop-up */ 00124 00125 uint64_t composition_timeout_pts; 00126 uint64_t selection_timeout_pts; 00127 uint32_t user_timeout_duration; 00128 00129 unsigned num_pages; 00130 BD_IG_PAGE *page; 00131 00132 } BD_IG_INTERACTIVE_COMPOSITION; 00133 00134 #define IG_UI_MODEL_ALWAYS_ON 0 00135 #define IG_UI_MODEL_POPUP 1 00136 00137 /* 00138 * segment 00139 */ 00140 00141 typedef struct bd_pg_interactive_s { 00142 int64_t pts; 00143 00144 BD_PG_VIDEO_DESCRIPTOR video_descriptor; 00145 BD_PG_COMPOSITION_DESCRIPTOR composition_descriptor; 00146 BD_IG_INTERACTIVE_COMPOSITION interactive_composition; 00147 } BD_IG_INTERACTIVE; 00148 00149 #ifdef __cplusplus 00150 }; 00151 #endif 00152 00153 #endif // _BD_IG_H_
1.6.3