DVBCore
1.0
Open source DVB engine
|
00001 /******************************************************************************* 00002 * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org) 00003 * Copyright © 2004 Ocean Blue Software Ltd 00004 * 00005 * This file is part of a DTVKit Software Component 00006 * You are permitted to copy, modify or distribute this file subject to the terms 00007 * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org 00008 * 00009 * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, 00010 * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES 00011 * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. 00012 * 00013 * If you or your organisation is not a member of DTVKit then you have access 00014 * to this source code outside of the terms of the licence agreement 00015 * and you are expected to delete this and any associated files immediately. 00016 * Further information on DTVKit, membership and terms can be found at www.dtvkit.org 00017 *******************************************************************************/ 00025 // pre-processor mechanism so multiple inclusions don't cause compilation error 00026 00027 #ifndef _STBSITAB_H 00028 #define _STBSITAB_H 00029 00030 #include "stbsiflt.h" 00031 00032 //---Constant and macro definitions for public use----------------------------- 00033 00034 /* CRID related defines */ 00035 #define CRID_LOCATION_MASK 0x03 00036 #define CRID_TYPE_MASK 0xfc 00037 #define CRID_TYPE_SHIFT 2 00038 00039 #define CRID_LOCATION_0 0x00 00040 #define CRID_LOCATION_1 0x01 00041 00042 #define CRID_TYPE_PROGRAMME 0x31 00043 #define CRID_TYPE_SERIES 0x32 00044 #define CRID_TYPE_RECOMMENDATION 0x33 00045 00046 00047 //---Enumerations for public use----------------------------------------------- 00048 00049 typedef enum 00050 { 00051 USER_DEF_DESCRIP_NOT_USED = 0, 00052 USER_DEF_DESCRIP_LOGICAL_CHAN_NUM = 1, 00053 USER_DEF_DESCRIP_PREF_NAME_LIST = 2, 00054 USER_DEF_DESCRIP_PREF_NAME_ID = 3 00055 } STB_SI_USER_DEF_DESCRIP_FUNCTION; 00056 00057 typedef enum 00058 { 00059 EIT_NOW_NEXT_ACT = 0, 00060 EIT_NOW_NEXT_OTHER = 1, 00061 EIT_NOW_NEXT_ALL = 2, 00062 EIT_PF_PLUS = 3 00063 } E_SI_EIT_TABLE_REQ; 00064 00065 typedef enum 00066 { 00067 EIT_SCHED_ACT = 0, 00068 EIT_SCHED_OTHER = 1, 00069 EIT_SCHED_ACT_4DAY = 2, 00070 EIT_SCHED_OTHER_4DAY = 3, 00071 EIT_SCHED_ALL_4DAY = 4, 00072 EIT_SCHED_ALL_8DAY = 5, 00073 EIT_SCHED_ALL = 6 00074 } E_SI_SCHED_TABLE_REQ; 00075 00076 typedef enum 00077 { 00078 CTYPE_DVB_SUBTITLE = 0x310, 00079 CTYPE_DVB_SUBTITLE_4_3 = 0x311, 00080 CTYPE_DVB_SUBTITLE_16_9 = 0x312, 00081 CTYPE_DVB_SUBTITLE_221_1 = 0x313, 00082 CTYPE_DVB_SUBTITLE_HD = 0x314, 00083 00084 CTYPE_DVB_SUBTITLE_HH = 0x320, 00085 CTYPE_DVB_SUBTITLE_HH_4_3 = 0x321, 00086 CTYPE_DVB_SUBTITLE_HH_16_9 = 0x322, 00087 CTYPE_DVB_SUBTITLE_HH_221_1 = 0x323, 00088 CTYPE_DVB_SUBTITLE_HH_HD = 0x324, 00089 } E_SI_COMPONENT_TYPE_SUBTITLE; 00090 00091 typedef enum /* see ETSI 300468 */ 00092 { 00093 /* MPEG1 Audio Description types */ 00094 CTYPE_MPEG1_AD_VISUAL = 0x240, 00095 CTYPE_MPEG1_AD_HEARING = 0x241, 00096 CTYPE_MPEG1_AD_RCVR_MIX = 0x247, 00097 CTYPE_MPEG1_AD_BCAST_MIX = 0x248, 00098 00099 /* AC3, Full Service Audio description types */ 00100 CTYPE_AC3_FS_VISUAL = 0x450, /* to 0x457 */ 00101 CTYPE_AC3_FS_HEARING = 0x458, /* to 0x45f */ 00102 CTYPE_AC3_FS_DIALOGUE = 0x420, /* to 0x427 */ 00103 CTYPE_AC3_FS_COMMENTARY = 0x468, 00104 CTYPE_AC3_FS_EMERGENCY = 0x470, 00105 00106 /* E-AC3, Full Service Audio description types */ 00107 CTYPE_EAC3_FS_VISUAL = 0x4d0, /* to 0x4d7 */ 00108 CTYPE_EAC3_FS_HEARING = 0x4d8, /* to 0x4df */ 00109 CTYPE_EAC3_FS_DIALOGUE = 0x4a0, /* to 0x4a7 */ 00110 CTYPE_EAC3_FS_COMMENTARY = 0x4e8, 00111 CTYPE_EAC3_FS_EMERGENCY = 0x4f0, 00112 00113 /* HE-AAC Audio Description types */ 00114 CTYPE_HEAAC_AD_VISUAL = 0x640, 00115 CTYPE_HEAAC_AD_HEARING = 0x641, 00116 CTYPE_HEAAC_AD_RCVR_MIX = 0x647, 00117 CTYPE_HEAAC_AD_BCAST_MIX = 0x648, 00118 00119 /* HE-AAC v2 Audio Description types */ 00120 CTYPE_HEAACV2_AD_VISUAL = 0x644, 00121 CTYPE_HEAACV2_AD_HEARING = 0x645, 00122 CTYPE_HEAACV2_AD_RCVR_MIX = 0x649, 00123 CTYPE_HEAACV2_AD_BCAST_MIX = 0x64a, 00124 00125 /* Supplementary Audio */ 00126 CTYPE_MPEG1_SA_RCVR_MIX = 0x242, 00127 CTYPE_HEAAC_SA_RCVR_MIX = 0x642, 00128 CTYPE_HEAACV2_SA_RCVR_MIX = 0x646 00129 } E_SI_COMPONENT_TYPE_AUDIO_DESC; 00130 00131 //---Global type defs for public use------------------------------------------- 00132 00133 // common structures used in following tables 00134 typedef struct si_string 00135 { 00136 U8BIT nbytes; 00137 U8BIT *str_ptr; 00138 } SI_STRING_DESC; 00139 00140 typedef struct si_linkage_desc 00141 { 00142 struct si_linkage_desc *next; 00143 U16BIT orig_net_id; 00144 U16BIT tran_id; 00145 U16BIT serv_id; 00146 U8BIT link_type; 00147 U8BIT data_length; 00148 U8BIT data; 00149 } SI_LINKAGE_DESC_ENTRY; 00150 00151 typedef struct si_guidance_desc 00152 { 00153 U8BIT guidance_type; 00154 BOOLEAN guidance_mode; 00155 U8BIT num_langs; 00156 U32BIT *lang_codes; 00157 SI_STRING_DESC **strings; 00158 } SI_GUIDANCE_DESC; 00159 00160 typedef struct si_fta_content_desc 00161 { 00162 BOOLEAN do_not_scramble; 00163 U8BIT access_over_internet; 00164 BOOLEAN do_not_apply_revocation; 00165 } SI_FTA_CONTENT_DESC; 00166 00167 typedef struct si_target_region 00168 { 00169 struct si_target_region *next; 00170 U8BIT region_depth; 00171 U8BIT primary_region_code; 00172 U8BIT secondary_region_code; 00173 U8BIT tertiary_region_code; 00174 } SI_TARGET_REGION; 00175 00176 typedef struct si_target_region_desc 00177 { 00178 struct si_target_region_desc *next; 00179 U32BIT country_code; 00180 SI_TARGET_REGION *region_list; 00181 } SI_TARGET_REGION_DESC; 00182 00183 typedef struct si_serv_avail_desc 00184 { 00185 struct si_serv_avail_desc *next; 00186 U16BIT num_of_cell_ids; 00187 U16BIT *cell_ids; 00188 BOOLEAN availability_flag; 00189 } SI_SERV_AVAIL_DESC; 00190 00191 typedef enum 00192 { 00193 ICON_TRANS_LOCAL = 0x0, 00194 ICON_TRANS_URL = 0x1, 00195 ICON_TRANS_RES1 = 0x2, 00196 ICON_TRANS_RES2 = 0x3 00197 } E_ICON_TRANSPORT_MODE; 00198 00199 typedef enum 00200 { 00201 ICON_COORDS_576 = 0x0, 00202 ICON_COORDS_720 = 0x1, 00203 ICON_COORDS_1080 = 0x2 00204 } E_ICON_COORD_SYSTEM; 00205 00206 typedef struct si_image_icon_desc 00207 { 00208 U8BIT desc_num; 00209 U8BIT last_desc_num; 00210 U8BIT icon_id; 00211 E_ICON_TRANSPORT_MODE transport_mode; 00212 BOOLEAN position_defined; 00213 E_ICON_COORD_SYSTEM coord_system; 00214 U16BIT x_pos; 00215 U16BIT y_pos; 00216 U8BIT *icon_type; 00217 U32BIT data_len; 00218 U8BIT *icon_data; 00219 } SI_IMAGE_ICON_DESC; 00220 00221 00222 //-------------------------------------------------- 00223 // PAT table structures 00224 typedef struct si_pat_service_entry 00225 { 00226 struct si_pat_service_entry *next; 00227 U16BIT serv_id; 00228 U16BIT pmt_pid; 00229 } SI_PAT_SERVICE_ENTRY; 00230 00231 typedef struct si_pat_table 00232 { 00233 U8BIT version; 00234 U16BIT tran_id; 00235 U16BIT num_services; 00236 SI_PAT_SERVICE_ENTRY *service_list; 00237 SI_PAT_SERVICE_ENTRY *last_service_entry; 00238 } SI_PAT_TABLE; 00239 00240 //-------------------------------------------------- 00241 // PMT table structures 00242 typedef struct si_dvb_subt_desc 00243 { 00244 U32BIT lang_code; 00245 U8BIT type; 00246 U16BIT composition_page; 00247 U16BIT ancillary_page; 00248 } SI_SUBTITLE_DESC; 00249 00250 typedef struct si_teletext_desc 00251 { 00252 U32BIT lang_code; 00253 U8BIT type; 00254 U8BIT magazine; 00255 U8BIT page; 00256 } SI_TELETEXT_DESC; 00257 00258 typedef struct si_ca_desc 00259 { 00260 U16BIT ca_id; 00261 U16BIT ca_pid; 00262 } SI_CA_DESC; 00263 00264 typedef struct si_iso_lang_desc 00265 { 00266 U32BIT lang_code; 00267 U8BIT audio_type; 00268 } SI_ISO_LANG_DESC; 00269 00270 typedef struct si_ac3_desc 00271 { 00272 U8BIT dtag; 00273 } SI_AC3_DESC; 00274 00275 typedef struct si_ad_desc 00276 { 00277 U32BIT lang_code; 00278 BOOLEAN mix_type; 00279 U8BIT edit_class; 00280 } SI_AD_DESC; 00281 00282 typedef struct si_aac_desc 00283 { 00284 U8BIT profile_level; 00285 BOOLEAN type_present; 00286 U8BIT aac_type; 00287 } SI_AAC_DESC; 00288 00289 typedef struct si_service_move_desc 00290 { 00291 U16BIT onet_id; 00292 U16BIT ts_id; 00293 U16BIT service_id; 00294 } SI_SERVICE_MOVE_DESC; 00295 00296 typedef struct si_app_sig_desc 00297 { 00298 U16BIT app_type; 00299 U8BIT ait_version; 00300 } SI_APP_SIG_DESC; 00301 00302 typedef enum 00303 { 00304 SI_STREAM_TYPE_VIDEO1 = 0x01, 00305 SI_STREAM_TYPE_VIDEO2 = 0x02, 00306 SI_STREAM_TYPE_AUDIO1 = 0x03, 00307 SI_STREAM_TYPE_AUDIO2 = 0x04, 00308 SI_STREAM_TYPE_PRIVATE = 0x05, 00309 SI_STREAM_TYPE_PES_PKT = 0x06, 00310 SI_STREAM_TYPE_MHEG = 0x07, 00311 SI_STREAM_TYPE_DATA_A = 0x0a, 00312 SI_STREAM_TYPE_DATA_B = 0x0b, 00313 SI_STREAM_TYPE_DATA_C = 0x0c, 00314 SI_STREAM_TYPE_DATA_D = 0x0d, 00315 SI_STREAM_TYPE_AUX = 0x0e, 00316 SI_STREAM_TYPE_AAC = 0x0f, 00317 SI_STREAM_TYPE_HEAAC = 0x11, 00318 SI_STREAM_TYPE_H264 = 0x1b 00319 } SI_STREAM_TYPE; 00320 00321 typedef struct si_freesat_tunnelled_data_desc 00322 { 00323 U8BIT data_type; 00324 U8BIT component_tag; 00325 } SI_FREESAT_TUNNELLED_DATA_DESC; 00326 00327 typedef struct si_pmt_stream_entry 00328 { 00329 struct si_pmt_stream_entry *next; 00330 SI_STREAM_TYPE type; 00331 U16BIT pid; 00332 U8BIT *tag_array_ptr; 00333 U8BIT num_tag_entries; 00334 U16BIT num_iso_lang_entries; 00335 SI_ISO_LANG_DESC *iso_lang_desc_array; 00336 U16BIT num_ca_entries; 00337 SI_CA_DESC *ca_desc_array; 00338 U16BIT num_subtitle_entries; 00339 SI_SUBTITLE_DESC *subtitle_desc_array; 00340 U16BIT num_teletext_entries; 00341 SI_TELETEXT_DESC *teletext_desc_array; 00342 SI_SERVICE_MOVE_DESC *service_move; 00343 U16BIT num_app_sig_entries; 00344 SI_APP_SIG_DESC *app_sig_desc_array; 00345 BOOLEAN has_ait; 00346 BOOLEAN has_rct; 00347 U8BIT num_tunnelled_entries; 00348 SI_FREESAT_TUNNELLED_DATA_DESC *tunnelled_desc_array; 00349 00350 SI_AC3_DESC *ac3_descriptor; 00351 SI_AD_DESC *audio_desc; 00352 SI_AAC_DESC *aac_descriptor; 00353 } SI_PMT_STREAM_ENTRY; 00354 00355 typedef struct si_pmt_table 00356 { 00357 U8BIT version; 00358 U16BIT serv_id; 00359 U16BIT pcr_pid; 00360 U16BIT num_ca_entries; 00361 SI_CA_DESC *ca_desc_array; 00362 U8BIT num_tunnelled_entries; 00363 SI_FREESAT_TUNNELLED_DATA_DESC *tunnelled_desc_array; 00364 U16BIT num_streams; 00365 SI_PMT_STREAM_ENTRY *stream_list; 00366 SI_PMT_STREAM_ENTRY *last_stream_entry; 00367 } SI_PMT_TABLE; 00368 00369 //-------------------------------------------------- 00370 // NIT table structures 00371 typedef struct si_multiling_net_name_desc 00372 { 00373 U32BIT lang_code; 00374 SI_STRING_DESC *name_str; 00375 } SI_MULTILING_NET_NAME_DESC; 00376 00377 typedef struct si_serv_list_desc 00378 { 00379 U16BIT serv_id; 00380 U8BIT serv_type; 00381 } SI_SERV_LIST_DESC; 00382 00383 typedef struct uk_dtt_lcn_desc 00384 { 00385 U16BIT serv_id; 00386 U16BIT serv_lcn; 00387 BOOLEAN visible; 00388 } SI_LCN_DESC; 00389 00390 typedef struct 00391 { 00392 U16BIT serv_id; 00393 U16BIT serv_lcn; 00394 BOOLEAN visible; 00395 } SI_NORDIG_SERV_LCN; 00396 00397 typedef struct 00398 { 00399 U8BIT chan_list_id; 00400 SI_STRING_DESC *chan_list_name; 00401 U32BIT country_code; 00402 U8BIT num_services; 00403 SI_NORDIG_SERV_LCN *serv_array; 00404 } SI_NORDIG_LCN_DESC; 00405 00406 typedef struct si_terr_del_sys_desc 00407 { 00408 U32BIT freq_hz; 00409 E_STB_DP_TBWIDTH bwidth; 00410 E_STB_DP_TMODE mode; 00411 } SI_TERR_DEL_SYS_DESC; 00412 00413 typedef struct si_t2_del_sys_cell 00414 { 00415 U16BIT cell_id; 00416 U8BIT num_freqs; 00417 U32BIT freq_hz[6]; 00418 } SI_T2_DEL_SYS_CELL; 00419 00420 typedef struct si_t2_del_sys_desc 00421 { 00422 U8BIT plp_id; 00423 U16BIT t2_system_id; 00424 E_STB_DP_TBWIDTH bwidth; 00425 E_STB_DP_TMODE mode; 00426 U8BIT num_cells; 00427 SI_T2_DEL_SYS_CELL *cell; 00428 } SI_T2_DEL_SYS_DESC; 00429 00430 typedef struct 00431 { 00432 BOOLEAN is_t2; 00433 union 00434 { 00435 SI_TERR_DEL_SYS_DESC t1; 00436 SI_T2_DEL_SYS_DESC t2; 00437 } u; 00438 } SI_TERR_DEL_SYS; 00439 00440 typedef struct si_cable_del_sys_desc 00441 { 00442 U32BIT freq_hz; 00443 U8BIT fec_outer; 00444 U8BIT fec_inner; 00445 U8BIT modulation; 00446 U32BIT symbol_rate; 00447 } SI_CABLE_DEL_SYS_DESC; 00448 00449 typedef struct si_sat_del_sys_desc 00450 { 00451 U32BIT freq_hz; 00452 U16BIT position; 00453 U16BIT sym_rate; 00454 E_STB_DP_POLARITY polarity; 00455 BOOLEAN east_west; 00456 E_STB_DP_FEC fec_code; 00457 BOOLEAN dvb_s2; 00458 E_STB_DP_MODULATION modulation; 00459 } SI_SAT_DEL_SYS_DESC; 00460 00461 typedef enum si_delivery_sys_desc_type 00462 { 00463 SI_DEL_SYS_DESC_TYPE_TERR, 00464 SI_DEL_SYS_DESC_TYPE_SAT, 00465 SI_DEL_SYS_DESC_TYPE_CABLE 00466 } SI_DELIVERY_SYS_DESC_TYPE; 00467 00468 typedef union si_delivery_sys_desc 00469 { 00470 SI_SAT_DEL_SYS_DESC sat; 00471 SI_CABLE_DEL_SYS_DESC cable; 00472 SI_TERR_DEL_SYS terr; 00473 } SI_DELIVERY_SYS_DESC; 00474 00475 typedef struct si_serv_attribute_desc 00476 { 00477 U16BIT serv_id; 00478 BOOLEAN service_selectable; 00479 BOOLEAN service_visible; 00480 } SI_SERV_ATTRIBUTE_DESC; 00481 00482 typedef struct si_nit_region_name 00483 { 00484 U8BIT region_depth; 00485 SI_STRING_DESC *region_name; 00486 U8BIT primary_region_code; 00487 U8BIT secondary_region_code; 00488 U16BIT tertiary_region_code; 00489 } SI_NIT_REGION_NAME; 00490 00491 typedef struct si_nit_target_region_name_desc 00492 { 00493 struct si_nit_target_region_name_desc *next; 00494 U32BIT country_code; 00495 U32BIT lang_code; 00496 U8BIT num_names; 00497 SI_NIT_REGION_NAME *name_array; 00498 } SI_NIT_TARGET_REGION_NAME_DESC; 00499 00500 typedef struct si_ciplus_service 00501 { 00502 struct si_ciplus_service *next; 00503 U16BIT id; 00504 U8BIT type; 00505 BOOLEAN visible; 00506 BOOLEAN selectable; 00507 U16BIT lcn; 00508 SI_STRING_DESC *provider_str; 00509 SI_STRING_DESC *name_str; 00510 } SI_CIPLUS_SERVICE; 00511 00512 typedef struct si_nit_transport_entry 00513 { 00514 struct si_nit_transport_entry *next; 00515 U16BIT tran_id; 00516 U16BIT orig_net_id; 00517 SI_DELIVERY_SYS_DESC_TYPE del_sys_desc_type; 00518 SI_DELIVERY_SYS_DESC *del_sys_desc; 00519 U16BIT num_freq_list_entries; 00520 U32BIT *freq_list_desc_array; 00521 U16BIT num_serv_list_entries; 00522 SI_SERV_LIST_DESC *serv_list_desc_array; 00523 U16BIT num_lcn_entries; 00524 SI_LCN_DESC *lcn_desc_array; 00525 SI_STRING_DESC *def_authority; 00526 U16BIT num_serv_attr_entries; 00527 SI_SERV_ATTRIBUTE_DESC *serv_attr_array; 00528 U16BIT num_nordig_lcn_entries; 00529 SI_NORDIG_LCN_DESC *nordig_lcn_desc_array; 00530 U16BIT num_hd_lcn_entries; 00531 SI_LCN_DESC *hd_lcn_desc_array; 00532 SI_FTA_CONTENT_DESC *fta_content_desc; 00533 SI_TARGET_REGION_DESC *target_region_list; 00534 U16BIT num_ciplus_services; 00535 SI_CIPLUS_SERVICE *ciplus_service_list; 00536 SI_CIPLUS_SERVICE *last_ciplus_service; 00537 } SI_NIT_TRANSPORT_ENTRY; 00538 00539 typedef enum 00540 { 00541 CATEGORY_ALL_RECEIVERS = 0, 00542 CATEGORY_T2_RECEIVERS = 1 00543 } SI_NIT_RECEIVER_CATEGORY; 00544 00545 typedef enum 00546 { 00547 NET_CHANGE_MESSAGE_ONLY = 0x0, 00548 NET_CHANGE_MINOR_DEFAULT = 0x1, 00549 NET_CHANGE_MULTIPLEX_REMOVE = 0x2, 00550 NET_CHANGE_SERVICE_CHANGE = 0x3, 00551 NET_CHANGE_MINOR_RESERVED_1 = 0x4, 00552 NET_CHANGE_MINOR_RESERVED_2 = 0x5, 00553 NET_CHANGE_MINOR_RESERVED_3 = 0x6, 00554 NET_CHANGE_MINOR_RESERVED_4 = 0x7, 00555 NET_CHANGE_MAJOR_DEFAULT = 0x8, 00556 NET_CHANGE_MULTIPLEX_FREQ_CHANGE = 0x9, 00557 NET_CHANGE_MULTIPLEX_COVERAGE_CHANGE = 0xA, 00558 NET_CHANGE_MULTIPLEX_ADDED = 0xB, 00559 NET_CHANGE_MAJOR_RESERVED_1 = 0xC, 00560 NET_CHANGE_MAJOR_RESERVED_2 = 0xD, 00561 NET_CHANGE_MAJOR_RESERVED_3 = 0xE, 00562 NET_CHANGE_MAJOR_RESERVED_4 = 0xF 00563 } SI_NIT_NETWORK_CHANGE_TYPE; 00564 00565 typedef struct si_nit_change_entry 00566 { 00567 U8BIT change_id; 00568 U8BIT version; 00569 U16BIT start_date; 00570 U8BIT start_hours; 00571 U8BIT start_mins; 00572 U8BIT start_secs; 00573 U8BIT dur_hours; 00574 U8BIT dur_mins; 00575 U8BIT dur_secs; 00576 SI_NIT_RECEIVER_CATEGORY receiver_category; 00577 SI_NIT_NETWORK_CHANGE_TYPE change_type; 00578 U8BIT message_id; 00579 BOOLEAN invariant_ts_present; 00580 U16BIT invariant_ts_tsid; 00581 U16BIT invariant_ts_onid; 00582 } SI_NIT_CHANGE_ENTRY; 00583 00584 typedef struct si_nit_change_notify_desc 00585 { 00586 U16BIT cell_id; 00587 U8BIT num_changes; 00588 SI_NIT_CHANGE_ENTRY *change_array; 00589 } SI_NIT_CHANGE_NOTIFY_DESC; 00590 00591 typedef struct si_nit_message_entry 00592 { 00593 U8BIT message_id; 00594 U32BIT lang_code; 00595 SI_STRING_DESC *message; 00596 } SI_NIT_MESSAGE_ENTRY; 00597 00598 typedef struct si_freesat_linkage_desc 00599 { 00600 U16BIT onet_id; 00601 U16BIT trans_id; 00602 U16BIT serv_id; 00603 U8BIT *data_types; 00604 struct si_freesat_linkage_desc *next; 00605 } SI_FREESAT_LINKAGE_DESC; 00606 00607 typedef struct si_freesat_prefix_desc 00608 { 00609 U8BIT prefix_index; 00610 SI_STRING_DESC *uri_prefix; 00611 struct si_freesat_prefix_desc *next; 00612 } SI_FREESAT_PREFIX_DESC; 00613 00614 typedef struct si_nit_table 00615 { 00616 U8BIT version; 00617 U16BIT net_id; 00618 SI_STRING_DESC *name_str; 00619 U16BIT num_multiling_net_names; 00620 SI_MULTILING_NET_NAME_DESC *multiling_net_name_desc_array; 00621 U16BIT num_linkage_entries; 00622 SI_LINKAGE_DESC_ENTRY *linkage_desc_list; 00623 SI_LINKAGE_DESC_ENTRY *last_linkage_entry; 00624 SI_STRING_DESC *def_authority; 00625 U16BIT num_transports; 00626 SI_NIT_TRANSPORT_ENTRY *transport_list; 00627 SI_NIT_TRANSPORT_ENTRY *last_transport_entry; 00628 U16BIT num_change_notifies; 00629 SI_NIT_CHANGE_NOTIFY_DESC *change_notify_array; 00630 U16BIT num_messages; 00631 SI_NIT_MESSAGE_ENTRY *message_array; 00632 SI_FTA_CONTENT_DESC *fta_content_desc; 00633 SI_NIT_TARGET_REGION_NAME_DESC *target_region_name_list; 00634 SI_TARGET_REGION_DESC *target_region_list; 00635 SI_FREESAT_LINKAGE_DESC *freesat_linkage_desc; 00636 SI_FREESAT_PREFIX_DESC *freesat_prefix_list; 00637 } SI_NIT_TABLE; 00638 00639 //-------------------------------------------------- 00640 // SDT table structures 00641 typedef struct si_multiling_serv_name_desc 00642 { 00643 U32BIT lang_code; 00644 SI_STRING_DESC *name_str; 00645 SI_STRING_DESC *provider_str; 00646 } SI_MULTILING_SERV_NAME_DESC; 00647 00648 typedef struct 00649 { 00650 U32BIT lang_code; 00651 SI_STRING_DESC *name_str; 00652 } SI_MULTILING_SHORT_NAME_DESC; 00653 00654 typedef struct si_preferred_name_desc 00655 { 00656 U32BIT lang_code; 00657 U8BIT name_id; 00658 SI_STRING_DESC *name_str; 00659 } SI_PREFERRED_NAME_DESC; 00660 00661 typedef enum 00662 { 00663 RUN_STATE_UNDEFINED = 0, 00664 RUN_STATE_NOT_RUNNING, 00665 RUN_STATE_STARTS_SOON, 00666 RUN_STATE_PAUSING, 00667 RUN_STATE_RUNNING, 00668 RUN_STATE_OFF_AIR 00669 } E_RUNNING_STATE; 00670 00671 typedef struct si_sdt_service_entry 00672 { 00673 struct si_sdt_service_entry *next; 00674 U16BIT serv_id; 00675 BOOLEAN eit_sched_avail; 00676 BOOLEAN eit_now_next_avail; 00677 U8BIT running_status; 00678 BOOLEAN all_streams_free; 00679 U8BIT serv_type; 00680 SI_STRING_DESC *name_str; 00681 SI_STRING_DESC *provider_str; 00682 U8BIT num_ca_id_entries; 00683 U16BIT *ca_id_desc_array; 00684 U16BIT num_multiling_names; 00685 SI_MULTILING_SERV_NAME_DESC *multiling_name_desc_array; 00686 U16BIT num_preferred_names; 00687 SI_PREFERRED_NAME_DESC *preferred_name_desc_array; 00688 U16BIT num_linkage_entries; 00689 SI_LINKAGE_DESC_ENTRY *linkage_desc_list; 00690 SI_LINKAGE_DESC_ENTRY *last_linkage_entry; 00691 SI_STRING_DESC *def_authority; 00692 SI_STRING_DESC *short_name_str; 00693 U16BIT num_multiling_short_names; 00694 SI_MULTILING_SHORT_NAME_DESC *multiling_short_name_array; 00695 SI_GUIDANCE_DESC *guidance; 00696 SI_FTA_CONTENT_DESC *fta_content_desc; 00697 SI_TARGET_REGION_DESC *target_region_list; 00698 SI_SERV_AVAIL_DESC *serv_avail_desc_list; 00699 U8BIT *ci_protection_desc; 00700 SI_FREESAT_PREFIX_DESC *freesat_prefix_list; 00701 } SI_SDT_SERVICE_ENTRY; 00702 00703 typedef struct si_sdt_table 00704 { 00705 U8BIT version; 00706 U16BIT tran_id; 00707 U16BIT orig_net_id; 00708 U16BIT num_services; 00709 SI_SDT_SERVICE_ENTRY *service_list; 00710 SI_SDT_SERVICE_ENTRY *last_service_entry; 00711 } SI_SDT_TABLE; 00712 00713 00714 //-------------------------------------------------- 00715 // BAT table structures 00716 00717 typedef struct si_freesat_lcn 00718 { 00719 BOOLEAN numeric_selection; 00720 BOOLEAN visible_flag; 00721 BOOLEAN user_cust; 00722 U16BIT lcn; 00723 U16BIT region_id; 00724 struct si_freesat_lcn *next; 00725 } SI_FREESAT_LCN; 00726 00727 typedef struct si_bat_freesat_region_lcn_entry 00728 { 00729 U16BIT tran_id; 00730 U16BIT orig_net_id; 00731 U16BIT service_id; 00732 U16BIT freesat_id; 00733 struct si_bat_freesat_region_lcn_entry *next; 00734 SI_FREESAT_LCN *freesat_lcn_list; 00735 } SI_BAT_FREESAT_REGION_LCN_ENTRY; 00736 00737 typedef struct si_bat_transport_entry 00738 { 00739 struct si_bat_transport_entry *next; 00740 U16BIT tran_id; 00741 U16BIT orig_net_id; 00742 SI_SERV_LIST_DESC *serv_list_desc_array; 00743 U16BIT num_serv_list_entries; 00744 U16BIT num_lcn_entries; 00745 SI_LCN_DESC *lcn_desc_array; 00746 SI_BAT_FREESAT_REGION_LCN_ENTRY *lcn_region_list; 00747 SI_STRING_DESC *def_authority; 00748 SI_FTA_CONTENT_DESC *fta_content_desc; 00749 U16BIT *int_rest_serv_array; /* Interactive restrictive services */ 00750 U8BIT num_int_rest_serv; 00751 } SI_BAT_TRANSPORT_ENTRY; 00752 00753 typedef struct si_multilang_group_name_desc 00754 { 00755 U32BIT lang_code; 00756 SI_STRING_DESC *name_str; 00757 } SI_MULTILANG_GROUP_NAME_DESC; 00758 00759 typedef struct si_bat_freesat_group_name_entry 00760 { 00761 U8BIT group_type; 00762 U16BIT group_id; 00763 SI_MULTILANG_GROUP_NAME_DESC *string_array; 00764 U8BIT num_group_names; 00765 struct si_bat_freesat_group_name_entry *next_group; 00766 } SI_BAT_FREESAT_GROUP_NAME_ENTRY; 00767 00768 typedef struct si_bat_freesat_serv_group_entry 00769 { 00770 U16BIT group_id; 00771 BOOLEAN non_destructive_flag; 00772 BOOLEAN return_channel_access_flag; 00773 BOOLEAN g2_extension_flag; 00774 U8BIT g2_flags; 00775 U8BIT num_services; 00776 U16BIT *freesat_id; 00777 struct si_bat_freesat_serv_group_entry *next_group; 00778 } SI_BAT_FREESAT_SERV_GROUP_ENTRY; 00779 00780 typedef struct si_bat_freesat_iactive_storage_desc 00781 { 00782 U8BIT *data; 00783 U8BIT length; 00784 struct si_bat_freesat_iactive_storage_desc *next_desc; 00785 } SI_BAT_FREESAT_IACTIVE_STORAGE_DESC; 00786 00787 typedef struct si_bat_freesat_region 00788 { 00789 U16BIT region_id; 00790 U32BIT lang_code; 00791 SI_STRING_DESC *region_name; 00792 struct si_bat_freesat_region *next; 00793 } SI_BAT_FREESAT_REGION; 00794 00795 typedef struct si_freesat_info_location 00796 { 00797 U16BIT orig_net_id; 00798 U16BIT transport_id; 00799 U16BIT service_id; 00800 struct si_freesat_info_location *next; 00801 } SI_BAT_FREESAT_INFO_LOCATION; 00802 00803 typedef struct si_bat_table 00804 { 00805 U8BIT version; 00806 U16BIT bouquet_id; 00807 SI_STRING_DESC *bouquet_name; 00808 SI_STRING_DESC *def_authority; 00809 SI_BAT_FREESAT_REGION *region_list; 00810 U16BIT num_linkage_entries; 00811 SI_LINKAGE_DESC_ENTRY *linkage_desc_list; 00812 SI_LINKAGE_DESC_ENTRY *last_linkage_entry; 00813 U16BIT num_transports; 00814 SI_BAT_TRANSPORT_ENTRY *transport_list; 00815 SI_BAT_TRANSPORT_ENTRY *last_transport_entry; 00816 SI_BAT_FREESAT_GROUP_NAME_ENTRY *group_name_list; 00817 U16BIT num_serv_groups; 00818 SI_BAT_FREESAT_SERV_GROUP_ENTRY *serv_group_array; 00819 SI_FTA_CONTENT_DESC *fta_content_desc; 00820 SI_BAT_FREESAT_IACTIVE_STORAGE_DESC *iactive_storage_desc_list; 00821 SI_BAT_FREESAT_INFO_LOCATION *info_location_list; 00822 SI_FREESAT_PREFIX_DESC *freesat_prefix_list; 00823 } SI_BAT_TABLE; 00824 00825 00826 //-------------------------------------------------- 00827 // EIT table structures 00828 00829 typedef struct si_component_desc 00830 { 00831 U8BIT tag; 00832 U8BIT content; 00833 U8BIT type; 00834 U32BIT lang_code; 00835 SI_STRING_DESC *desc_str; 00836 } SI_COMPONENT_DESC; 00837 00838 typedef struct si_multiling_component_desc 00839 { 00840 U8BIT tag; 00841 U32BIT lang_code; 00842 SI_STRING_DESC *desc_str; 00843 } SI_MULTILING_COMPONENT_DESC; 00844 00845 typedef struct si_content_desc 00846 { 00847 U8BIT level_1; 00848 U8BIT level_2; 00849 U8BIT user_1; 00850 U8BIT user_2; 00851 } SI_CONTENT_DESC; 00852 00853 typedef struct si_parental_rating_desc 00854 { 00855 U32BIT country_code; 00856 U8BIT rating; 00857 } SI_PARENTAL_RATING_DESC; 00858 00859 typedef struct si_short_event_desc 00860 { 00861 U32BIT lang_code; 00862 SI_STRING_DESC *name_str; 00863 SI_STRING_DESC *desc_str; 00864 } SI_SHORT_EVENT_DESC; 00865 00866 typedef struct si_extended_event_desc 00867 { 00868 U8BIT desc_number; 00869 U8BIT last_desc_number; 00870 U32BIT lang_code; 00871 U8BIT num_items; 00872 SI_STRING_DESC **item_desc_array; 00873 SI_STRING_DESC **item_text_array; 00874 SI_STRING_DESC *text_str; 00875 } SI_EXTENDED_EVENT_DESC; 00876 00877 typedef struct si_crid_desc 00878 { 00879 struct si_crid_desc *next; 00880 U8BIT type; 00881 SI_STRING_DESC *crid_str; 00882 } SI_CRID_DESC; 00883 00884 typedef struct si_eit_event_entry 00885 { 00886 struct si_eit_event_entry *next; 00887 U8BIT sect_num; 00888 U16BIT event_id; 00889 U16BIT start_date; // mjd format 00890 U8BIT start_hrs; 00891 U8BIT start_mins; 00892 U8BIT start_secs; 00893 U8BIT duration_hrs; 00894 U8BIT duration_mins; 00895 U8BIT duration_secs; 00896 U8BIT running_status; 00897 BOOLEAN all_streams_free; 00898 U8BIT preferred_name_id; 00899 U8BIT num_ca_id_entries; 00900 U16BIT *ca_id_desc_array; 00901 U8BIT num_component_entries; 00902 SI_COMPONENT_DESC *component_desc_array; 00903 U8BIT num_content_entries; 00904 SI_CONTENT_DESC *content_desc_array; 00905 U8BIT num_multiling_component_entries; 00906 SI_MULTILING_COMPONENT_DESC *multiling_component_desc_array; 00907 U8BIT num_parental_rating_entries; 00908 SI_PARENTAL_RATING_DESC *parental_rating_desc_array; 00909 U8BIT num_short_event_entries; 00910 SI_SHORT_EVENT_DESC *short_event_desc_array; 00911 U8BIT num_extended_event_entries; 00912 SI_EXTENDED_EVENT_DESC *extended_event_desc_array; 00913 U8BIT num_crids; 00914 SI_CRID_DESC *crid_list; 00915 SI_CRID_DESC *last_crid_entry; 00916 SI_GUIDANCE_DESC *guidance; 00917 SI_FTA_CONTENT_DESC *fta_content_desc; 00918 } SI_EIT_EVENT_ENTRY; 00919 00920 typedef struct si_eit_table 00921 { 00922 U8BIT version; 00923 U8BIT table_id; 00924 U16BIT serv_id; 00925 U16BIT tran_id; 00926 U16BIT orig_net_id; 00927 U8BIT last_table_id; 00928 U16BIT num_events; 00929 SI_EIT_EVENT_ENTRY *event_list; 00930 SI_EIT_EVENT_ENTRY *last_event_entry; 00931 } SI_EIT_TABLE; 00932 00933 00934 //-------------------------------------------------- 00935 // Time and date table structures 00936 typedef struct si_lto_desc 00937 { 00938 U32BIT country_code; 00939 U8BIT region; 00940 BOOLEAN offset_negative; 00941 U8BIT offset_hrs; 00942 U8BIT offset_mins; 00943 U16BIT change_date; // mjd format 00944 U8BIT change_hrs; 00945 U8BIT change_mins; 00946 U8BIT change_secs; 00947 U8BIT next_offset_hrs; 00948 U8BIT next_offset_mins; 00949 } SI_LTO_DESC; 00950 00951 typedef struct si_time_table 00952 { 00953 U16BIT date; // mjd format 00954 U8BIT hrs; 00955 U8BIT mins; 00956 U8BIT secs; 00957 U16BIT num_lto_entries; 00958 SI_LTO_DESC *lto_desc_array; 00959 } SI_TIME_TABLE; 00960 00961 00962 //-------------------------------------------------- 00963 // Related content table (RCT) structures 00964 typedef enum 00965 { 00966 RCT_LINK_TYPE_URI = 0x0, 00967 RCT_LINK_TYPE_BINARY = 0x1, 00968 RCT_LINK_TYPE_URI_BINARY = 0x2, 00969 RCT_LINK_TYPE_DESCRIPTOR = 0x3 00970 } E_RCT_LINK_TYPE; 00971 00972 typedef enum 00973 { 00974 RCT_HOW_RELATED_TVA_2004 = 0x00, 00975 RCT_HOW_RELATED_TVA_2005 = 0x01, 00976 RCT_HOW_RELATED_TVA_2007 = 0x02 00977 } E_RCT_HOW_RELATED; 00978 00979 typedef enum 00980 { 00981 RCT_TERMID_IS_TRAILER_OF = 0x0002, 00982 RCT_TERMID_IS_GROUP_TRAILER_OF = 0x0005 00983 } E_RCT_TERM_ID; 00984 00985 typedef struct si_rct_promo_text 00986 { 00987 U32BIT lang_code; 00988 SI_STRING_DESC *string; 00989 } SI_RCT_PROMO_TEXT; 00990 00991 typedef struct si_rct_link_info 00992 { 00993 E_RCT_LINK_TYPE link_type; 00994 E_RCT_HOW_RELATED how_related; 00995 U16BIT term_id; 00996 U8BIT group_id; 00997 U8BIT precedence; 00998 U8BIT *uri_string; 00999 U8BIT num_items; 01000 SI_RCT_PROMO_TEXT *promo_text_array; 01001 BOOLEAN can_use_default_icon; 01002 U8BIT icon_id; 01003 SI_SHORT_EVENT_DESC *event_desc; 01004 U8BIT num_icons; 01005 SI_IMAGE_ICON_DESC *icon_array; 01006 } SI_RCT_LINK_INFO; 01007 01008 typedef struct si_rct_subtable_data 01009 { 01010 U16BIT year_offset; 01011 U8BIT link_count; 01012 SI_RCT_LINK_INFO *link_array; 01013 U8BIT num_icons; 01014 SI_IMAGE_ICON_DESC *icon_array; 01015 struct si_rct_subtable_data *next; 01016 } SI_RCT_SUBTABLE_DATA; 01017 01018 typedef struct si_rct_subtable 01019 { 01020 U8BIT version; 01021 U16BIT service_id; 01022 SI_RCT_SUBTABLE_DATA *data; 01023 struct si_rct_subtable *next; 01024 } SI_RCT_SUBTABLE; 01025 01026 typedef struct si_rct_table 01027 { 01028 SI_RCT_SUBTABLE *subtables; 01029 } SI_RCT_TABLE; 01030 01031 01032 //---Global Function prototypes for public use--------------------------------- 01033 01034 void STB_SISetPrivateDataSpecifier(U32BIT code); 01035 void STB_SISetUserDefinedDescriptorFunction(U8BIT dtag, STB_SI_USER_DEF_DESCRIP_FUNCTION func); 01036 void STB_SIClearUserDefinedDescriptorFunctions(void); 01037 01038 void* STB_SIRequestPat(U8BIT path, E_SI_REQUEST_TYPE req_type, 01039 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01040 01041 void* STB_SIRequestPmt(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT pmt_pid, 01042 U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, 01043 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01044 void STB_SIModifyPmtRequest(void *fhandle, U16BIT sid_match, U16BIT sid_mask, U16BIT table_count); 01045 01046 void* STB_SIRequestNit(U8BIT path, E_SI_REQUEST_TYPE req_type, 01047 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01048 01059 void* STB_SIRequestNitFromPid(U8BIT path, U16BIT pid, BOOLEAN actual, E_SI_REQUEST_TYPE req_type, 01060 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01061 01062 void* STB_SIRequestSdt(U8BIT path, E_SI_REQUEST_TYPE req_type, 01063 BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other, 01064 U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count, 01065 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01066 01067 void* STB_SIRequestSdtFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, 01068 BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other, 01069 U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count, 01070 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01071 01072 void STB_SIModifySdtRequest(void *fhandle, BOOLEAN inc_sdt_actual, BOOLEAN inc_sdt_other, 01073 U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count); 01074 01075 void* STB_SIRequestBat(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT bouquet_id_match, 01076 U16BIT bouquet_id_mask, U16BIT table_count, void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), 01077 U32BIT ret_param); 01078 01079 void* STB_SIRequestBatFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, 01080 U16BIT tran_id_match, U16BIT tran_id_mask, U16BIT table_count, 01081 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01082 01083 void* STB_SIRequestEit(U8BIT path, E_SI_REQUEST_TYPE req_type, E_SI_EIT_TABLE_REQ reqd_eit_tables, 01084 U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, 01085 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01086 01087 void* STB_SIRequestEitFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, E_SI_EIT_TABLE_REQ reqd_eit_tables, 01088 U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, 01089 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01090 01091 void STB_SIModifyEitRequest(void *fhandle, E_SI_EIT_TABLE_REQ reqd_eit_tables, 01092 U16BIT sid_match, U16BIT sid_mask, U16BIT table_count); 01093 01094 void* STB_SIRequestSched(U8BIT path, E_SI_REQUEST_TYPE req_type, E_SI_SCHED_TABLE_REQ reqd_eit_tables, 01095 U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, 01096 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01097 01098 void* STB_SIRequestSchedFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, E_SI_SCHED_TABLE_REQ reqd_eit_tables, 01099 U16BIT sid_match, U16BIT sid_mask, U16BIT table_count, 01100 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01101 01102 void* STB_SIRequestTdt(U8BIT path, E_SI_REQUEST_TYPE req_type, 01103 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01104 01105 void* STB_SIRequestTdtFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, 01106 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01107 01108 void* STB_SIRequestTot(U8BIT path, E_SI_REQUEST_TYPE req_type, 01109 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01110 01111 void* STB_SIRequestTotFromPid(U8BIT path, U16BIT pid, E_SI_REQUEST_TYPE req_type, 01112 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01113 01114 void* STB_SIRequestCat(U8BIT path, E_SI_REQUEST_TYPE req_type, 01115 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01116 01117 void* STB_SIRequestRct(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT rct_pid, 01118 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01119 01120 SI_PAT_TABLE* STB_SIParsePatTable(SI_TABLE_RECORD *table_rec); 01121 SI_PMT_TABLE* STB_SIParsePmtTable(SI_TABLE_RECORD *table_rec); 01122 SI_NIT_TABLE* STB_SIParseNitTable(SI_TABLE_RECORD *table_rec); 01123 SI_SDT_TABLE* STB_SIParseSdtTable(SI_TABLE_RECORD *table_rec); 01124 SI_EIT_TABLE* STB_SIParseEitTable(SI_TABLE_RECORD *table_rec); 01125 SI_TIME_TABLE* STB_SIParseTimeTable(SI_TABLE_RECORD *table_rec); 01126 SI_RCT_TABLE* STB_SIParseRctTable(SI_TABLE_RECORD *table_rec); 01127 SI_BAT_TABLE* STB_SIParseBatTable(SI_TABLE_RECORD *table_rec); 01128 01129 U8BIT* STB_SIReadString(U8BIT nbytes, U8BIT *dptr, SI_STRING_DESC **str_ptr); 01130 01131 BOOLEAN STB_SIParseDelSysDesc(U8BIT *data, SI_DELIVERY_SYS_DESC_TYPE *type, SI_DELIVERY_SYS_DESC **desc); 01132 BOOLEAN STB_SIParseServiceDescriptor(U8BIT *data, U8BIT *type, SI_STRING_DESC **provider, 01133 SI_STRING_DESC **name); 01134 BOOLEAN STB_SIParseShortEventDescriptor(U8BIT *data, SI_SHORT_EVENT_DESC **event_desc); 01135 01136 /*!************************************************************************** 01137 * @brief Parses the given PMT to produce an array of the CA system IDs required 01138 * by the service or streams on the service. The array of IDs will be 01139 * allocated by this function and should be freed using STB_SIReleaseCaIdDescArray. 01140 * @param pmt_data - raw PMT section data 01141 * @param pmt_ca_ids - pointer to an array that will be allocated containing 01142 * the CA IDs found in the PMT 01143 * @return Number of CA IDs found in the PMT and returned in the array, 01144 * 0 if none are found. 01145 ****************************************************************************/ 01146 U16BIT STB_SIGetPmtCaIdDescArray(U8BIT *pmt_data, U16BIT **pmt_ca_ids); 01147 01157 void* STB_SIRequestAit(U8BIT path, E_SI_REQUEST_TYPE req_type, U16BIT ait_pid, 01158 void (*callback)(void *, U32BIT, SI_TABLE_RECORD *), U32BIT ret_param); 01159 01160 void STB_SIReleasePatTable(SI_PAT_TABLE *pat_table); 01161 void STB_SIReleasePmtTable(SI_PMT_TABLE *pmt_table); 01162 void STB_SIReleaseNitTable(SI_NIT_TABLE *nit_table); 01163 void STB_SIReleaseSdtTable(SI_SDT_TABLE *sdt_table); 01164 void STB_SIReleaseEitTable(SI_EIT_TABLE *eit_table); 01165 void STB_SIReleaseTimeTable(SI_TIME_TABLE *time_table); 01166 void STB_SIReleaseRctTable(SI_RCT_TABLE *rct_table); 01167 void STB_SIReleaseBatTable(SI_BAT_TABLE *bat_table); 01168 01169 // the following functions can be used to release individual table entry structures from the parsed 01170 // tables. They are mainly intended for releasing entries which have been transferred 01171 // out of the parsed tables by the application SI handler and are therefore not released when the 01172 // table is released. 01173 void STB_SIReleasePatStreamEntry(SI_PAT_SERVICE_ENTRY *entry_ptr); 01174 void STB_SIReleasePmtStreamEntry(SI_PMT_STREAM_ENTRY *entry_ptr); 01175 void STB_SIReleaseNitTransportEntry(SI_NIT_TRANSPORT_ENTRY *entry_ptr); 01176 void STB_SIReleaseSdtServiceEntry(SI_SDT_SERVICE_ENTRY *entry_ptr); 01177 void STB_SIReleaseEitEventEntry(SI_EIT_EVENT_ENTRY *entry_ptr); 01178 void STB_SIReleaseRctSubtable(SI_RCT_SUBTABLE *sub_ptr); 01179 void STB_SIReleaseRctSubtableData(SI_RCT_SUBTABLE_DATA *data_ptr); 01180 01181 /* TODO These can probably become local functions */ 01182 void STB_SIReleaseBatTransportEntry(SI_BAT_TRANSPORT_ENTRY *entry_ptr); 01183 void STB_SIReleaseBatLcnEntry(SI_FREESAT_LCN *entry_ptr); 01184 // the following functions can be used to release individual descriptor array elements from the 01185 // parsed tables. They are mainly intended for releasing descriptors which have been transferred 01186 // out of the parsed tables by the application SI handler (by setting the table element pointing to 01187 // the descriptor array to NULL), and are therefore not released when the table is released. 01188 void STB_SIReleaseDelSysDesc(SI_DELIVERY_SYS_DESC *desc, SI_DELIVERY_SYS_DESC_TYPE type); 01189 void STB_SIReleaseStringDesc(SI_STRING_DESC *desc); 01190 void STB_SIReleaseCaDescArray(SI_CA_DESC *desc_array, U16BIT num_entries); 01191 void STB_SIReleaseCaIdDescArray(U16BIT *desc_array, U8BIT num_entries); 01192 void STB_SIReleaseComponentDescArray(SI_COMPONENT_DESC *desc_array, U8BIT num_entries); 01193 void STB_SIReleaseContentDescArray(SI_CONTENT_DESC *desc_array, U8BIT num_entries); 01194 void STB_SIReleaseFreqListDescArray(U32BIT *desc_array, U16BIT num_entries); 01195 void STB_SIReleaseGuidanceDesc(SI_GUIDANCE_DESC *desc_ptr); 01196 void STB_SIReleaseImageIconDescArray(SI_IMAGE_ICON_DESC *icon_array, U8BIT num_icons); 01197 void STB_SIReleaseIsoLangDescArray(SI_ISO_LANG_DESC *desc_array, U16BIT num_entries); 01198 void STB_SIReleaseLinkageDescList(SI_LINKAGE_DESC_ENTRY *desc_list, U16BIT num_entries); 01199 void STB_SIReleaseLtoDescArray(SI_LTO_DESC *desc_array, U16BIT num_entries); 01200 void STB_SIReleaseMultilingComponentDescArray(SI_MULTILING_COMPONENT_DESC *desc_array, U8BIT num_entries); 01201 void STB_SIReleaseMultilingNetNameDescArray(SI_MULTILING_NET_NAME_DESC *desc_array, U16BIT num_entries); 01202 void STB_SIReleaseMultilingServNameDescArray(SI_MULTILING_SERV_NAME_DESC *desc_array, U16BIT num_entries); 01203 void STB_SIReleaseMultilingShortNameArray(SI_MULTILING_SHORT_NAME_DESC *desc_array, U16BIT num_entries); 01204 void STB_SIReleaseParentalRatingDescArray(SI_PARENTAL_RATING_DESC *desc_array, U8BIT num_entries); 01205 void STB_SIReleaseServListDescArray(SI_SERV_LIST_DESC *desc_array, U16BIT num_entries); 01206 void STB_SIReleaseShortEventDescArray(SI_SHORT_EVENT_DESC *desc_array, U8BIT num_entries); 01207 void STB_SIReleaseExtendedEventDescArray(SI_EXTENDED_EVENT_DESC *desc_array, U8BIT num_entries); 01208 void STB_SIReleaseSubtitleDescArray(SI_SUBTITLE_DESC *desc_array, U16BIT num_entries); 01209 void STB_SIReleaseTeletextDescArray(SI_TELETEXT_DESC *desc_array, U16BIT num_entries); 01210 void STB_SIReleaseLcnDescArray(SI_LCN_DESC *desc_array, U16BIT num_entries); 01211 void STB_SIReleaseNordigLcn2DescArray(SI_NORDIG_LCN_DESC *desc_array, U16BIT num_entries); 01212 void STB_SIReleasePrefNameDescArray(SI_PREFERRED_NAME_DESC *desc_array, U16BIT num_entries); 01213 void STB_SIReleaseCRIDList(SI_CRID_DESC *crid_list); 01214 void STB_SIReleaseTargetRegionNameList(SI_NIT_TARGET_REGION_NAME_DESC *desc_list); 01215 void STB_SIReleaseTargetRegionList(SI_TARGET_REGION_DESC *desc_list); 01216 void STB_SIReleaseRctLinkInfo(SI_RCT_LINK_INFO *link_info); 01217 void STB_SIReleaseFreesatLinkageDesc(SI_FREESAT_LINKAGE_DESC *desc); 01218 void STB_SIReleaseFreesatPrefixList(SI_FREESAT_PREFIX_DESC *list); 01219 void STB_SIReleaseAvailabilityDescriptorList(SI_SERV_AVAIL_DESC *desc_list); 01220 void STB_SIReleaseCIPlusServiceList(SI_CIPLUS_SERVICE *service_list); 01221 01222 #endif // _STBSITAB_H 01223 01224 //***************************************************************************** 01225 // End of file 01226 //***************************************************************************** 01227