00001 /* 00002 * This file is part of libbluray 00003 * Copyright (C) 2009-2010 John Stebbins 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(_CLPI_DATA_H_) 00021 #define _CLPI_DATA_H_ 00022 00023 #include <stdint.h> 00024 00025 typedef struct 00026 { 00027 uint16_t pcr_pid; 00028 uint32_t spn_stc_start; 00029 uint32_t presentation_start_time; 00030 uint32_t presentation_end_time; 00031 } CLPI_STC_SEQ; 00032 00033 typedef struct 00034 { 00035 uint32_t spn_atc_start; 00036 uint8_t num_stc_seq; 00037 uint8_t offset_stc_id; 00038 CLPI_STC_SEQ *stc_seq; 00039 } CLPI_ATC_SEQ; 00040 00041 typedef struct 00042 { 00043 uint8_t num_atc_seq; 00044 CLPI_ATC_SEQ *atc_seq; 00045 } CLPI_SEQ_INFO; 00046 00047 typedef struct 00048 { 00049 uint8_t validity; 00050 uint8_t format_id[5]; 00051 } CLPI_TS_TYPE; 00052 00053 typedef struct 00054 { 00055 uint32_t delta; 00056 uint8_t file_id[6]; 00057 uint8_t file_code[5]; 00058 } CLPI_ATC_DELTA; 00059 00060 typedef struct 00061 { 00062 uint8_t clip_stream_type; 00063 uint8_t application_type; 00064 uint8_t is_atc_delta; 00065 uint32_t ts_recording_rate; 00066 uint32_t num_source_packets; 00067 CLPI_TS_TYPE ts_type_info; 00068 uint8_t atc_delta_count; 00069 CLPI_ATC_DELTA *atc_delta; 00070 } CLPI_CLIP_INFO; 00071 00072 typedef struct 00073 { 00074 uint16_t pid; 00075 uint8_t coding_type; 00076 uint8_t format; 00077 uint8_t rate; 00078 uint8_t aspect; 00079 uint8_t oc_flag; 00080 uint8_t char_code; 00081 uint8_t lang[4]; 00082 } CLPI_PROG_STREAM; 00083 00084 typedef struct 00085 { 00086 uint32_t spn_program_sequence_start; 00087 uint16_t program_map_pid; 00088 uint8_t num_streams; 00089 uint8_t num_groups; 00090 CLPI_PROG_STREAM *streams; 00091 } CLPI_PROG; 00092 00093 typedef struct 00094 { 00095 uint8_t num_prog; 00096 CLPI_PROG *progs; 00097 } CLPI_PROG_INFO; 00098 00099 typedef struct 00100 { 00101 int ref_ep_fine_id; 00102 int pts_ep; 00103 uint32_t spn_ep; 00104 } CLPI_EP_COARSE; 00105 00106 typedef struct 00107 { 00108 uint8_t is_angle_change_point; 00109 uint8_t i_end_position_offset; 00110 int pts_ep; 00111 int spn_ep; 00112 } CLPI_EP_FINE; 00113 00114 typedef struct 00115 { 00116 uint16_t pid; 00117 uint8_t ep_stream_type; 00118 int num_ep_coarse; 00119 int num_ep_fine; 00120 uint32_t ep_map_stream_start_addr; 00121 CLPI_EP_COARSE *coarse; 00122 CLPI_EP_FINE *fine; 00123 } CLPI_EP_MAP_ENTRY; 00124 00125 typedef struct 00126 { 00127 uint8_t type; 00128 // ep_map 00129 uint8_t num_stream_pid; 00130 CLPI_EP_MAP_ENTRY *entry; 00131 } CLPI_CPI; 00132 00133 typedef struct clpi_cl { 00134 uint32_t type_indicator; 00135 uint32_t type_indicator2; 00136 uint32_t sequence_info_start_addr; 00137 uint32_t program_info_start_addr; 00138 uint32_t cpi_start_addr; 00139 uint32_t clip_mark_start_addr; 00140 uint32_t ext_data_start_addr; 00141 CLPI_CLIP_INFO clip; 00142 CLPI_SEQ_INFO sequence; 00143 CLPI_PROG_INFO program; 00144 CLPI_CPI cpi; 00145 // skip clip mark & extension data 00146 } CLPI_CL; 00147 00148 #endif // _CLPI_DATA_H_
1.6.3