1
0
Fork 0
libbluray/src/libbluray/bdnav/index_parse.h

134 lines
3.6 KiB
C

/*
* This file is part of libbluray
* Copyright (C) 2010-2017 Petri Hintukainen <phintuka@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*/
#if !defined(_INDX_PARSE_H_)
#define _INDX_PARSE_H_
#include "util/attributes.h"
#include <stdint.h>
typedef enum {
indx_video_format_ignored,
indx_video_480i,
indx_video_576i,
indx_video_480p,
indx_video_1080i,
indx_video_720p,
indx_video_1080p,
indx_video_576p,
} indx_video_format;
typedef enum {
indx_fps_reserved1,
indx_fps_23_976,
indx_fps_24,
indx_fps_25,
indx_fps_29_97,
indx_fps_reserved2,
indx_fps_50,
indx_fps_59_94,
} indx_frame_rate;
typedef enum {
indx_object_type_hdmv = 1,
indx_object_type_bdj = 2,
} indx_object_type;
typedef enum {
indx_hdmv_playback_type_movie = 0,
indx_hdmv_playback_type_interactive = 1,
} indx_hdmv_playback_type;
typedef enum {
indx_bdj_playback_type_movie = 2,
indx_bdj_playback_type_interactive = 3,
} indx_bdj_playback_type;
typedef enum {
indx_access_permitted = 0, /* jump into this title is permitted. title number may be shown on UI. */
indx_access_prohibited = 1, /* jump into this title is prohibited. title number may be shown on UI. */
indx_access_hidden = 3, /* jump into this title is prohibited. title number shall not be shown on UI. */
} indx_access_type;
#define INDX_ACCESS_PROHIBITED_MASK 0x01 /* if set, jump to this title is not allowed */
#define INDX_ACCESS_HIDDEN_MASK 0x02 /* if set, title number shall not be displayed on UI */
typedef struct {
unsigned int initial_output_mode_preference : 1; /* 0 - 2D, 1 - 3D */
unsigned int content_exist_flag : 1;
unsigned int video_format : 4;
unsigned int frame_rate : 4;
uint8_t user_data[32];
} INDX_APP_INFO;
typedef struct {
uint8_t playback_type/* : 2*/;
char name[6];
} INDX_BDJ_OBJ;
typedef struct {
uint8_t playback_type/* : 2*/;
uint16_t id_ref;
} INDX_HDMV_OBJ;
typedef struct {
uint8_t object_type/* : 2*/;
/*union {*/
INDX_BDJ_OBJ bdj;
INDX_HDMV_OBJ hdmv;
/*};*/
} INDX_PLAY_ITEM;
typedef struct {
uint8_t object_type/* : 2*/;
uint8_t access_type/* : 2*/;
/*union {*/
INDX_BDJ_OBJ bdj;
INDX_HDMV_OBJ hdmv;
/*};*/
} INDX_TITLE;
typedef struct indx_root_s {
INDX_APP_INFO app_info;
INDX_PLAY_ITEM first_play;
INDX_PLAY_ITEM top_menu;
uint16_t num_titles;
INDX_TITLE *titles;
uint32_t indx_version;
/* UHD extension */
uint8_t disc_type;
uint8_t exist_4k_flag;
uint8_t hdrplus_flag;
uint8_t dv_flag;
uint8_t hdr_flags;
} INDX_ROOT;
struct bd_disc;
BD_PRIVATE INDX_ROOT* indx_get(struct bd_disc *disc); /* parse index.bdmv */
BD_PRIVATE void indx_free(INDX_ROOT **index);
#endif // _INDX_PARSE_H_