/* * This file is part of libbluray * Copyright (C) 2009-2010 John Stebbins * Copyright (C) 2012-2013 Petri Hintukainen * * 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 * . */ /** * @file * \brief CLPI (Clip Information) file data */ #if !defined(_CLPI_DATA_H_) #define _CLPI_DATA_H_ #include typedef struct { uint16_t pcr_pid; uint32_t spn_stc_start; uint32_t presentation_start_time; uint32_t presentation_end_time; } CLPI_STC_SEQ; typedef struct { uint32_t spn_atc_start; uint8_t num_stc_seq; uint8_t offset_stc_id; CLPI_STC_SEQ *stc_seq; } CLPI_ATC_SEQ; typedef struct { uint8_t num_atc_seq; CLPI_ATC_SEQ *atc_seq; } CLPI_SEQ_INFO; typedef struct { uint8_t validity; char format_id[5]; } CLPI_TS_TYPE; typedef struct { uint32_t delta; char file_id[6]; char file_code[5]; } CLPI_ATC_DELTA; typedef struct { char file_id[6]; } CLPI_FONT; typedef struct { uint8_t font_count; CLPI_FONT *font; } CLPI_FONT_INFO; typedef struct { uint8_t clip_stream_type; uint8_t application_type; uint8_t is_atc_delta; uint32_t ts_recording_rate; uint32_t num_source_packets; CLPI_TS_TYPE ts_type_info; uint8_t atc_delta_count; CLPI_ATC_DELTA *atc_delta; CLPI_FONT_INFO font_info; /* Text subtitle stream font files */ } CLPI_CLIP_INFO; typedef struct { uint16_t pid; uint8_t coding_type; uint8_t format; uint8_t rate; uint8_t aspect; uint8_t oc_flag; uint8_t char_code; char lang[4]; uint8_t cr_flag; uint8_t dynamic_range_type; uint8_t color_space; uint8_t hdr_plus_flag; uint8_t isrc[12]; /* International Standard Recording Code (usually empty or all zeroes) */ } CLPI_PROG_STREAM; typedef struct { uint32_t spn_program_sequence_start; uint16_t program_map_pid; uint8_t num_streams; uint8_t num_groups; CLPI_PROG_STREAM *streams; } CLPI_PROG; typedef struct { uint8_t num_prog; CLPI_PROG *progs; } CLPI_PROG_INFO; typedef struct { int ref_ep_fine_id; int pts_ep; uint32_t spn_ep; } CLPI_EP_COARSE; typedef struct { uint8_t is_angle_change_point; uint8_t i_end_position_offset; int pts_ep; int spn_ep; } CLPI_EP_FINE; typedef struct { uint16_t pid; uint8_t ep_stream_type; int num_ep_coarse; int num_ep_fine; uint32_t ep_map_stream_start_addr; CLPI_EP_COARSE *coarse; CLPI_EP_FINE *fine; } CLPI_EP_MAP_ENTRY; typedef struct { uint8_t type; // ep_map uint8_t num_stream_pid; CLPI_EP_MAP_ENTRY *entry; } CLPI_CPI; /* Extent start points (profile 5 / version 2.4) */ typedef struct { uint32_t num_point; uint32_t *point; } CLPI_EXTENT_START; typedef struct clpi_cl { uint32_t type_indicator; uint32_t type_indicator2; uint32_t sequence_info_start_addr; uint32_t program_info_start_addr; uint32_t cpi_start_addr; uint32_t clip_mark_start_addr; uint32_t ext_data_start_addr; CLPI_CLIP_INFO clip; CLPI_SEQ_INFO sequence; CLPI_PROG_INFO program; CLPI_CPI cpi; // skip clip mark & extension data // extensions for 3D CLPI_EXTENT_START extent_start; /* extent start points (.ssif interleaving) */ CLPI_PROG_INFO program_ss; CLPI_CPI cpi_ss; } CLPI_CL; #endif // _CLPI_DATA_H_