Blame src/libbluray/decoders/ig.h

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_