|
Packit |
5e46da |
/*
|
|
Packit |
5e46da |
* This file is part of libbluray
|
|
Packit |
5e46da |
* Copyright (C) 2010 Petri Hintukainen <phintuka@users.sourceforge.net>
|
|
Packit |
5e46da |
*
|
|
Packit |
5e46da |
* This library is free software; you can redistribute it and/or
|
|
Packit |
5e46da |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
5e46da |
* License as published by the Free Software Foundation; either
|
|
Packit |
5e46da |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
5e46da |
*
|
|
Packit |
5e46da |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
5e46da |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
5e46da |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
5e46da |
* Lesser General Public License for more details.
|
|
Packit |
5e46da |
*
|
|
Packit |
5e46da |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
5e46da |
* License along with this library. If not, see
|
|
Packit |
5e46da |
* <http://www.gnu.org/licenses/>.
|
|
Packit |
5e46da |
*/
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
#if !defined(_BD_IG_H_)
|
|
Packit |
5e46da |
#define _BD_IG_H_
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
#include "pg.h"
|
|
Packit |
5e46da |
#include "../bdnav/uo_mask_table.h"
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
#include <stdint.h>
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
struct mobj_cmd;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/*
|
|
Packit |
5e46da |
*
|
|
Packit |
5e46da |
*/
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
typedef struct bd_ig_button_s {
|
|
Packit |
5e46da |
uint16_t id;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
uint16_t numeric_select_value;
|
|
Packit |
5e46da |
uint8_t auto_action_flag;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
uint16_t x_pos;
|
|
Packit |
5e46da |
uint16_t y_pos;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/* neighbor info */
|
|
Packit |
5e46da |
uint16_t upper_button_id_ref;
|
|
Packit |
5e46da |
uint16_t lower_button_id_ref;
|
|
Packit |
5e46da |
uint16_t left_button_id_ref;
|
|
Packit |
5e46da |
uint16_t right_button_id_ref;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/* normal state */
|
|
Packit |
5e46da |
uint16_t normal_start_object_id_ref;
|
|
Packit |
5e46da |
uint16_t normal_end_object_id_ref;
|
|
Packit |
5e46da |
uint8_t normal_repeat_flag;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/* selected state */
|
|
Packit |
5e46da |
uint8_t selected_sound_id_ref;
|
|
Packit |
5e46da |
uint16_t selected_start_object_id_ref;
|
|
Packit |
5e46da |
uint16_t selected_end_object_id_ref;
|
|
Packit |
5e46da |
uint8_t selected_repeat_flag;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/* activated state */
|
|
Packit |
5e46da |
uint8_t activated_sound_id_ref;
|
|
Packit |
5e46da |
uint16_t activated_start_object_id_ref;
|
|
Packit |
5e46da |
uint16_t activated_end_object_id_ref;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/* navigation commands */
|
|
Packit |
5e46da |
uint16_t num_nav_cmds;
|
|
Packit |
5e46da |
struct mobj_cmd *nav_cmds;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
} BD_IG_BUTTON;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
typedef struct bd_ig_button_overlap_group_s {
|
|
Packit |
5e46da |
uint16_t default_valid_button_id_ref;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
unsigned num_buttons;
|
|
Packit |
5e46da |
BD_IG_BUTTON *button;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
} BD_IG_BOG;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
typedef struct bd_ig_effect_s {
|
|
Packit |
5e46da |
uint32_t duration; /* 90kHz ticks */
|
|
Packit |
5e46da |
uint8_t palette_id_ref;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
unsigned num_composition_objects;
|
|
Packit |
5e46da |
BD_PG_COMPOSITION_OBJECT *composition_object;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
} BD_IG_EFFECT;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
typedef struct bd_ig_effect_sequence_s {
|
|
Packit |
5e46da |
uint8_t num_windows;
|
|
Packit |
5e46da |
BD_PG_WINDOW *window;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
uint8_t num_effects;
|
|
Packit |
5e46da |
BD_IG_EFFECT *effect;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
} BD_IG_EFFECT_SEQUENCE;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
#define MAX_NUM_BOGS 256
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
typedef struct bd_ig_page_s {
|
|
Packit |
5e46da |
uint8_t id;
|
|
Packit |
5e46da |
uint8_t version;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
BD_UO_MASK uo_mask_table;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
BD_IG_EFFECT_SEQUENCE in_effects;
|
|
Packit |
5e46da |
BD_IG_EFFECT_SEQUENCE out_effects;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
uint8_t animation_frame_rate_code;
|
|
Packit |
5e46da |
uint16_t default_selected_button_id_ref;
|
|
Packit |
5e46da |
uint16_t default_activated_button_id_ref;
|
|
Packit |
5e46da |
uint8_t palette_id_ref;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/* button overlap groups */
|
|
Packit |
5e46da |
unsigned num_bogs;
|
|
Packit |
5e46da |
BD_IG_BOG *bog;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
} BD_IG_PAGE;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
typedef struct bd_ig_interactive_composition_s {
|
|
Packit |
5e46da |
uint8_t stream_model;
|
|
Packit |
5e46da |
uint8_t ui_model; /* 0 - always on, 1 - pop-up */
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
uint64_t composition_timeout_pts;
|
|
Packit |
5e46da |
uint64_t selection_timeout_pts;
|
|
Packit |
5e46da |
uint32_t user_timeout_duration;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
unsigned num_pages;
|
|
Packit |
5e46da |
BD_IG_PAGE *page;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
} BD_IG_INTERACTIVE_COMPOSITION;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
#define IG_UI_MODEL_ALWAYS_ON 0
|
|
Packit |
5e46da |
#define IG_UI_MODEL_POPUP 1
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
/*
|
|
Packit |
5e46da |
* segment
|
|
Packit |
5e46da |
*/
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
typedef struct bd_pg_interactive_s {
|
|
Packit |
5e46da |
int64_t pts;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
BD_PG_VIDEO_DESCRIPTOR video_descriptor;
|
|
Packit |
5e46da |
BD_PG_COMPOSITION_DESCRIPTOR composition_descriptor;
|
|
Packit |
5e46da |
BD_IG_INTERACTIVE_COMPOSITION interactive_composition;
|
|
Packit |
5e46da |
} BD_IG_INTERACTIVE;
|
|
Packit |
5e46da |
|
|
Packit |
5e46da |
#endif // _BD_IG_H_
|