/******************************************************************************/ /** * \file mid_siutil_dvb.h * * \brief header for dvb SI * * \note Copyright (C) 2006 SunMedia Co, chengdu \n * Author anlzhao@sunmedia.com.cn \n * The source code in this file is written by anlzhao referring to \n * ETSI EN 300 468 and owned by SunMedia Coporation. The header defines all \n * the macro and common struct. You should include it in all file. * * \author Unknow * * ******************************************************************************/ #ifndef _MID_SIUTIL_DVB_H #define _MID_SIUTIL_DVB_H #include #include //#include "drivers/drv_demux.h" #include "mid_common.h" #include "mid_siutil.h" //[kiwi 20090213] #define INVALID_ORGNETID 0xffff #define INVALID_TSID 0xffff /* Packet Identifier Value */ #define PID_NIT 0x0010 /**<\brief PID of Network Information Table */ #define PID_SDT 0x0011 /**<\brief PID of Service Description Table */ #define PID_BAT 0x0011 /**<\brief PID of Bouquet Association Table */ #define PID_EIT 0x0012 /**<\brief PID of Event Information Table */ #define PID_RST 0x0013 /**<\brief PID of Running Status Table */ #define PID_TDT 0x0014 /**<\brief PID of Time and Date Table */ #define PID_TOT 0x0014 /**<\brief PID of Time Offset Table */ #define PID_DIT 0x001E /**<\brief PID of Discontinuity Information Table*/ #define PID_SIT 0x001F /**<\brief PID of Selection Information Table*/ /* Table Identifier Value */ /* 0x04 ~ 0x3F is reserved */ #define TABLE_ID_NIT_ACT 0x40 /**<\brief table_id of actual Network Information Section*/ #define TABLE_ID_NIT_OTH 0x41 /**<\brief table_id of other Network Information Section*/ #define TABLE_ID_SDT_ACT 0x42 /**<\brief table_id of Service Description Section actual*/ /* 0x43 ~ 0x45 is reserved */ #define TABLE_ID_SDT_OTH 0x46 /**<\brief table_id of Service Description Section other*/ /* 0x47 ~ 0x49 is reserved */ #define TABLE_ID_BAT 0x4A /**<\brief table_id of Bouquet Association Section */ /* 0x4B ~ 0x4D is reserved */ #define TABLE_ID_EIT_ACT 0x4E /**<\brief table_id of Event Information Section actual, present/following */ #define TABLE_ID_EIT_OTH 0x4F /**<\brief table_id of Event Information Section other, present/following */ #define TABLE_ID_EIT_ACT_SCH_FIRSR 0x50 /**<\brief table_id of Event Information Section actual schedule */ #define TABLE_ID_EIT_ACT_SCH_LAST 0x5F /**<\brief table_id of Event Information Section actual schedule */ #define TABLE_ID_EIT_OTH_SCH_FIRST 0x60 /**<\brief table_id of Event Information Section other schedule */ #define TABLE_ID_EIT_OTH_SCH_LAST 0x6F /**<\brief table_id of Event Information Section other schedule */ #define TABLE_ID_TDT 0x70 /**<\brief table_id of Time adn Date Section */ #define TABLE_ID_RST 0x71 /**<\brief table_id of Running Status Section*/ #define TABLE_ID_TOT 0x73 /**<\brief table_id of Time Offset Section */ #ifdef CONFIG_SUPPORT_HBBTV #define TABLE_ID_AIT 0x74 /**<\brief table_id of Application Information Section */ #endif #ifdef SUPPORT_ASTRA_LCN #define TABLE_ID_SGT 0x91 /**<\brief table_id of service guide Section */ #endif /* 0x80 ~ 0xFE,User defined;0xFF Reserved */ #ifdef CONFIG_SUPPORT_FAST_SCANNING #define TABLE_ID_FNT 0xBC /**<\brief table_id of Fast Scan Network Table */ #define TABLE_ID_FST 0xBD /**<\brief table_id of Fast Scan Service Table */ #endif /* * Descriptor Tag Value of SSU UNT descriptors * defined by ETSI TS 102 006 V1.3.1 Table 19 * begin */ #define DESCR_SCHEDULING 0x01 /**<\brief descriptor_tag of scheduling_descriptor*/ #define DESCR_UPDATE 0x02 /**<\brief descriptor_tag of update_descriptor*/ #define DESCR_SSU_LOCATION 0x03 /**<\brief descriptor_tag of ssu_location_descriptor*/ #define DESCR_MESSAGE 0x04 /**<\brief descriptor_tag of message_descriptor*/ #define DESCR_SSU_EVENT_NAME 0x05 /**<\brief descriptor_tag of ssu_event_name_descriptor*/ #define DESCR_TARGET_SMARTCARD 0x06 /**<\brief descriptor_tag of target_smartcard_descriptor*/ #define DESCR_TARGET_MAC_ADD 0x07 /**<\brief descriptor_tag of target_MAC_descriptor*/ #define DESCR_TARGET_SERIAL_NUM 0x08 /**<\brief descriptor_tag of target_serial_number_descriptor*/ #define DESCR_TARGET_IP_ADD 0x09 /**<\brief descriptor_tag of target_IP_address_descriptor*/ #define DESCR_TARGET_IPV6_ADD 0x0A /**<\brief descriptor_tag of target_IPv6_descriptor*/ #define DESCR_SSU_SUBGROUP 0x0B /**<\brief descriptor_tag of ssu_subgroup_association_descriptor*/ /* * reverver 0x00 * reserved for future SSU use 0x0c to 0x3f * in the scope of DVB SI 0x40 to 0x7f * telephone_descriptor 0x57 * private_data_specifier_descriptor 0x5f * user private 0x80 to 0xfe * reverved 0xff * end */ /* * Descriptor Tag Value * defined by ETSI EN 300 468 Table 12 */ #define DESCR_NW_NAME 0x40 /**<\brief tag of network_name_descriptor */ #define DESCR_SERVICE_LIST 0x41 /**<\brief tag of service_list_descriptor */ #define DESCR_STUFFING 0x42 /**<\brief tag of stuffing_descriptor */ #define DESCR_SAT_DEL_SYS 0x43 /**<\brief tag of satellite_delivery_system_descriptor*/ #define DESCR_CABLE_DEL_SYS 0x44 /**<\brief tag of cable_delivery_system_descriptor*/ #define DESCR_VBI_DATA 0x45 /**<\brief tag of VBI_data_descriptor*/ #define DESCR_VBI_TELETEXT 0x46 /**<\brief tag of VBI_teletext_descriptor*/ #define DESCR_BOUQUET_NAME 0x47 /**<\brief tag of bouquet_name_descriptor*/ #define DESCR_SERVICE 0x48 /**<\brief tag of service_descriptor*/ #define DESCR_COUNTRY_AVAIL 0x49 /**<\brief tag of country_availability_descriptor*/ #define DESCR_LINKAGE 0x4A /**<\brief tag of linkage_descriptor*/ #define DESCR_NVOD_REF 0x4B /**<\brief tag of NVOD_reference_descriptor*/ #define DESCR_TIME_SHIFTED_SERVICE 0x4C /**<\brief tag of time_shifted_service_descriptor*/ #define DESCR_SHORT_EVENT 0x4D /**<\brief tag of short_event_descriptor*/ #define DESCR_EXTENDED_EVENT 0x4E /**<\brief tag of extended_event_descriptor*/ #define DESCR_TIME_SHIFTED_EVENT 0x4F /**<\brief tag of time_shifted_event_descriptor*/ #define DESCR_COMPONENT 0x50 /**<\brief tag of component_descriptor*/ #define DESCR_MOSAIC 0x51 /**<\brief tag of mosaic_descriptor*/ #define DESCR_STREAM_ID 0x52 /**<\brief tag of stream_identifier_descriptor*/ #define DESCR_CA_IDENT 0x53 /**<\brief tag of CA_identifier_descriptor*/ #define DESCR_CONTENT 0x54 /**<\brief tag of content_descriptor*/ #define DESCR_PARENTAL_RATING 0x55 /**<\brief tag of parental_rating_descriptor*/ #define DESCR_TELETEXT 0x56 /**<\brief tag of teletext_descriptor*/ #define DESCR_TELEPHONE 0x57 /**<\brief tag of telephone_descriptor*/ #define DESCR_LOCAL_TIME_OFF 0x58 /**<\brief tag of local_time_offset_descriptor*/ #define DESCR_SUBTITLING 0x59 /**<\brief tag of subtitling_descriptor*/ #define DESCR_TERR_DEL_SYS 0x5A /**<\brief tag of terrestrial_delivery_system_descriptor */ #define DESCR_ML_NW_NAME 0x5B /**<\brief tag of multilingual_network_name_descriptor*/ #define DESCR_ML_BQ_NAME 0x5C /**<\brief tag of multilingual_bouquet_name_descriptor*/ #define DESCR_ML_SERVICE_NAME 0x5D /**<\brief tag of multilingual_service_name_descriptor*/ #define DESCR_ML_COMPONENT 0x5E /**<\brief tag of multilingual_component_descriptor*/ #define DESCR_PRIV_DATA_SPEC 0x5F /**<\brief tag of private_data_specifier_descriptor*/ #define DESCR_SERVICE_MOVE 0x60 /**<\brief tag of service_move_descriptor*/ #define DESCR_SHORT_SMOOTH_BUF 0x61 /**<\brief tag of short_smoothing_buffer_descriptor*/ #define DESCR_FREQUENCY_LIST 0x62 /**<\brief tag of frequency_list_descriptor*/ #define DESCR_PARTIAL_TP_STREAM 0x63 /**<\brief tag of partial_transport_stream_descriptor (Only found in Partial Transport Streams)*/ #define DESCR_DATA_BROADCAST 0x64 /**<\brief tag of data_broadcast_descriptor*/ #define DESCR_CA_SYSTEM 0x65 /**<\brief tag of scrambling_descriptor*/ #define DESCR_DATA_BROADCAST_ID 0x66 /**<\brief tag of data_broadcast_id_descriptor*/ #define DESCR_TRANSPORT_STREAM 0x67 /**<\brief tag of transport_stream_descriptor (Only in the TSDT (Transport Streams Description Table))*/ #define DESCR_DSNG 0x68 /**<\brief tag of DSNG_descriptor (Only in the TSDT (Transport Streams Description Table))*/ #define DESCR_PDC 0x69 /**<\brief tag of PDC_descriptor*/ #define DESCR_AC3 0x6A /**<\brief tag of AC-3_descriptor*/ #define DESCR_ANCILLARY_DATA 0x6B /**<\brief tag of ancillary_data_descriptor*/ #define DESCR_CELL_LIST 0x6C /**<\brief tag of cell_list_descriptor*/ #define DESCR_CELL_FREQ_LINK 0x6D /**<\brief tag of cell_frequency_link_descriptor*/ #define DESCR_ANNOUNCEMENT_SUPPORT 0x6E /**<\brief tag of announcement_support_descriptor*/ #define DESCR_APPLICATION_SIGNALLING 0x6F /**<\brief tag of application_signalling_descriptor*/ #define DESCR_APPLICATION_FIELD_DATA 0x70 /**<\brief tag of adaptation_field_data_descriptor*/ #define DESCR_SERVICEIDENTIFIER 0x71 /**<\brief tag of service_identifier_descriptor*/ #define DESCR_SERVICE_AVAILABILITY 0x72 /**<\brief tag of service_availability_descriptor*/ #define DESCR_DEFAULT_AUTHORITY 0x73 /**<\brief tag of default_authority_descriptor*/ #define DESCR_CONTENT_IDENTIFIER 0x76 /**<\brief tag of content_identifier_descriptor*/ #define DESCR_EAC3 0x7A /**<\brief tag of enhanced_AC-3_descriptor*/ #define DESCR_AAC 0x7C /**<\brief tag of AAC_descriptor*/ #define DESCR_FTA_CONTENT_MGR 0x7E /**<\brief tag of FTA_content_management_descriptor*/ #define DESCR_EXTENSION 0x7F /**<\brief tag of extension_descriptor*/ #define TABLE_ID_EWS 0x80 /**<\brief table_id of Indonesia EWS Table */ #define PID_EWS 0x038F /**<\brief PID of Indonesia EWS Table*/ #if defined(DVB_C) #define DESCR_BAT_LCN 0x82 #define DESCR_VOLUME_COMPENSATING 0x83 #endif #define DESCR_LCN 0x83 /**<\brief tag of LCN_descriptor */ #define DESCR_LCN_B0 0xB0 /**<\brief tag of LCN_descriptor with 0xB0 */ #define DESCR_LCN_V2 0x87 /**<\brief tag of LCN_Version 2_descriptor */ #define DESCR_LCN_9C 0x9C /**<\brief tag of LCN_descriptor for KDG */ #define DESCR_HD_SIMULCAST_LCN 0x88 /**<\brief tag of HD_simulcast_LCN_descriptor */ #define DESCR_PREFERRED_NAME_LIST 0x84 /**<\brief tag of preffered_name_list_descriptor */ #define DESCR_PREFERRED_NAME_IDENTIFIER 0x85 /**<\brief tag of preffered_name_identifier_descriptor */ #define DESCR_SERVICE_ATTRIBUTE 0x86 /**<\brief tag of service_attribute_descriptor */ #define DESCR_SERVICE_LIST_NAME 0x88 /**<\brief tag of service_list_name_descriptor */ #define DESCR_BOUQUET_LIST 0x93 /**<\brief tag of bouquet_list_descriptor */ #define DESCR_VIRTUAL_SERVICE_ID 0xD1 /**<\brief tag of virtual_service_id_descriptor */ #ifdef CONFIG_DTMB_SYSTEM #define DESCR_DRA_REGISTRATION 0x05 /**<\brief tag of DRA_Registration_Descriptor */ #define DESCR_DRA_AUDIO_STREAM 0xA0 /**<\brief tag of DRA_audio_stream_descriptor */ #else #define DESCR_CONTENT_PROTECTION 0xA0 /**<\brief tag of content_protection_descriptor for Nordig */ #endif #define DESCR_TFCAS 0xA1 #define DESCR_CI_PROTECTION_DESC 0xCE /**<\brief tag of CI Protection descriptor */ #define DESCR_PARTIAL_RECEPTION 0xFB #ifdef CONFIG_ISDB_SYSTEM #define DESCR_TS_INFORMATION 0xCD #define DESCR_LOGO_TRANSMISSION 0xCF /**<\brief tag of logo transmission descriptor */ #define DESCR_DIGITAL_COPY_CTR 0xC1 /**<\brief tag of Digital copy control descriptor */ #define DESCR_CONTENT_AVAILABILITY 0xDE /**<\brief tag of Content availability descriptor */ #ifdef SUPPORT_PREFER_ADDIO_DESC//2010/06/09 yhong 0090319 Desc prefer audio. #define DESCR_AUDIO_COMPONENT 0xC4 /**<\brief tag of Content availability descriptor */ #endif #endif /* * Extension Descriptor Tag Value * defined by ETSI EN 300 468 Table 101 */ #define DESCR_EXT_TARGET_REGION 0x09 /**<\brief extension tag of tartget region descriptor */ #define DESCR_EXT_TARGET_REGION_NAME 0x0A /**<\brief extension tag of tartget region name descriptor */ #define DESCR_EXT_T2SYSTEM 0X04 /**<\brief extension tag of T2_delivery_system_descriptor */ /* Max section size */ #define MAX_SECTION_SIZE_NIT 1024 /**<\brief max size of NIT section */ #define MAX_SECTION_SIZE_BAT 1024 /**<\brief max size of BAT section */ #define MAX_SECTION_SIZE_EIT 4096 /**<\brief max size of EIT section */ #define MAX_SECTION_SIZE_SDT 1024 /**<\brief max size of SDT section */ #define MAX_SECTION_SIZE_TDT 8 /**<\brief max size of TDTsection */ #define MAX_SECTION_SIZE_TOT 1024 /**<\brief max size of TOTsection */ // service type coding defined in Service descriptor(0x48) #define SERVICE_RESERVED_FOR_FUTURE 0x00 /**<\brief service type of RESERVED_FOR_FUTURE*/ #define SERVICE_DIGITAL_TELEVISION 0x01/**<\brief service type of DIGITAL_TELEVISION */ #define SERVICE_DIGITAL_RADIO 0x02 /**<\brief service type of DIGITAL_RADIO*/ #define SERVICE_TELETEXT 0x03 /**<\brief service type of TELETEXT*/ #define SERVICE_NVOD_REFERENCE 0x04 /**<\brief service type of NVOD_REFERENCE*/ #define SERVICE_NVOD_TIMESHIFT 0x05 /**<\brief service type of NVOD_TIMESHIFT*/ #define SERVICE_MOSAIC 0x06 /**<\brief service type of MOSAIC*/ #define SERVICE_PAL_CODED_SIGNAL 0x07 /**<\brief service type of PAL_CODED_SIGNAL*/ #define SERVICE_SECAM_CODED_SIGNAL 0x08 /**<\brief service type of SECAM_CODED_SIGNAL*/ #define SERVICE_D_D2_MAC 0x09 /**<\brief service type of D_D2_MAC*/ #define SERVICE_ADVANCED_DIGITAL_RADIO 0x0A /**<\brief service type of ADVANCED_DIGITAL_RADIO*/ #define SERVICE_NTSC_CODED_SIGNAL 0x0B /**<\brief service type of NTSC_CODED_SIGNAL*/ #define SERVICE_DATABROADCAST 0x0C /**<\brief service type of DATABROADCAST*/ #define SERVICE_COMMON_INTERFACE 0x0D /**<\brief service type of COMMON_INTERFACE*/ #define SERVICE_RCS_MAP 0x0E /**<\brief service type of RCS_MAP*/ #define SERVICE_RCS_FLS 0x0F /**<\brief service type of RCS_FLS*/ #define SERVICE_DVB_MHP 0x10 /**<\brief service type of DVB_MHP*/ #define SERVICE_MPEG2_HD_DIGITAL_TELEVISION 0x11 /**<\brief service type of MPEG2_HD_DIGITAL_TELEVISION*/ #define SERVICE_ADVANCED_SD_DIGITAL_TV 0x16 /**<\brief service type of ADVANCED_SD_DIGITAL_TV*/ #define SERVICE_ADVANCED_HD_DIGITAL_TV 0x19 /**<\brief service type ofn ADVANCED_HD_DIGITAL_TV*/ #define SERVICE_ADVANCED_HD_NVOD_TIMESHIFT 0x1A /**<\brief service type of ADVANCED_HD_NVOD_TIMESHIFT*/ #define SERVICE_ADVANCED_HD_NVOD_REFERENCE 0x1B /**<\brief service type of ADVANCED_HD_NVOD_REFERENCE*/ #define SERVICE_HEVC 0x1F /**<\brief service type of HEVC*/ //BRAD : we use only 6-bits to presernt service_type in SDT #define SERVICE_MAX_VALUE_FOR_6BIT 0x3D/**<\brief service type of MAX_VALUE_FOR_6BIT*/ //BRAD : Used to indicate that SDT does not include this service #define SERVICE_NOT_IN_SDT 0x3E /**<\brief service type of NOT_IN_SDT*/ //BRAD : Used to indicate that there is no SDT in current channel #define SERVICE_NO_SDT 0x3F/**<\brief service type of NO_SDT*/ #define SERVICE_USEER_DEFINE 0xd3 /**<\brief service type of user define*/ /** * zhongbaoxing added the following service types according to ABNTNBR 15603-2 begin */ #define SERVICE_SPECIAL_VIDEO 0xA1/**<\brief service type of SPECIAL_VIDEO*/ #define SERVICE_SPECIAL_AUDIO 0xA2/**<\brief service type of SPECIAL_AUDIO*/ #define SERVICE_SPECIAL_DATA 0xA3/**<\brief service type of SPECIAL_DATA*/ #define SERVICE_ENGINEERING 0xA4/**<\brief service type of ENGINEERING, such as software upgrade*/ #define SERVICE_PROMOTIONAL_VIDEO 0xA5/**<\brief service type of PROMOTIONAL_VIDEO*/ #define SERVICE_PROMOTIONAL_AUDIO 0xA6/**<\brief service type of PROMOTIONAL_AUDIO*/ #define SERVICE_PROMOTIONAL_DATA 0xA7/**<\brief service type of PROMOTIONAL_DATA*/ #define SERVICE_DATA_FOR_ANTICIPATED_STORAGE 0xA8/**<\brief service type of DATA_FOR_ANTICIPATED_STORAGE*/ #define SERVICE_EXCLUSIVE_DATA_FOR_STORAGE 0xA9/**<\brief service type of EXCLUSIVE_DATA_FOR_STORAGE*/ #define SERVICE_BOOKMARK_SERVICE_LIST 0xAA/**<\brief service type of BOOKMARK_SERVICE_LIST*/ #define SERVICE_SIMULTANEOUS_SERVER 0xAB/**<\brief service type of SIMULTANEOUS_SERVER*/ #define SERVICE_INDEPENDENT_FILE 0xAC/**<\brief service type of INDEPENDENT_FILE*/ #define SERVICE_DATA 0xC0/**<\brief service type of DATA*/ /** * zhongbaoxing added the following service types according to ABNTNBR 15603-2 end */ // service flag // 0000 0001 // from service attribute descriptor #define SERVICE_NON_VISIBLE 0x01 /**<\brief SERVICE_NON_VISIBLE*/ // 0000 0010 #define SERVICE_TEMP 0x02 /**<\brief SERVICE_TEMP*/ // 0000 0100 #define SERVICE_SCRAMBLED 0x04 /**<\brief SERVICE_SCRAMBLED*/ // 0000 1000 // from service attribute descriptor #define SERVICE_NON_SELECTABLE 0x08 /**<\brief SERVICE_NON_SELECTABLE*/ // 0001 0000 // EI_present_folllowing_flag #define SERVICE_EIT_PF 0x10 /**<\brief SERVICE_EIT_PF*/ // 0010 0000 // free_CA_mode #define SERVICE_FREE_CA_MODE 0x20 /**<\brief SERVICE_FREE_CA_MODE*/ // 0100 0000 // invalid #define SERVICE_INVALID 0x40 /**<\brief SERVICE_INVALID*/ #define SERVICE_NOT_ENABLE 0X80 //running status #define RS_NOT_RUNNING 0x1 /**<\brief RS_NOT_RUNNING*/ #define RS_START_IN_FEW_SECONDS 0x2/**<\brief RS_START_IN_FEW_SECONDS*/ #define RS_PAUSING 0x3 /**<\brief RS_PAUSING*/ #define RS_RUNNING 0x4 /**<\brief RS_RUNNING*/ #define RS_SERVICE_OFF_AIR 0x5 /**<\brief RS_SERVICE_OFF_AIR*/ /* ci shunning data define */ #define CI_SHUNNING_INVALID 0x0 /**<\brief shunning data invalid*/ #define CI_SHUNNING_PRESENT 0x1 /**<\brief shunning data PRESENT*/ #define CI_SHUNNING_ABSENT 0x2 /**<\brief shunning data ABSENT*/ /* Timeout */ #undef SDT_TIMEOUT #define SDT_TIMEOUT 1500 /**<\brief SDT_TIMEOUT*/ #undef NIT_TIMEOUT #define NIT_TIMEOUT 1500 /**<\brief NIT_TIMEOUT*/ #undef TDT_TIMEOUT #define TDT_TIMEOUT 4000 /**<\brief TDT_TIMEOUT*/ #undef TOT_TIMEOUT #define TOT_TIMEOUT 4000 /**<\brief TOT_TIMEOUT*/ #define DTGCMG_TBL_NONE 0x00 /**<\brief DTGCMG_TBL_NONE*/ #define DTGCMG_TBL_NIT_1ST_LOOP 0x10/**<\brief DTGCMG_TBL_NIT_1ST_LOOP*/ #define DTGCMG_TBL_NIT_2ND_LOOP 0x20/**<\brief DTGCMG_TBL_NIT_2ND_LOOP*/ #define DTGCMG_TBL_SDT 0x40 /**<\brief DTGCMG_TBL_SDT*/ #define DTGCMG_TBL_EIT 0x80 /**<\brief DTGCMG_TBL_EIT*/ /* *TDT structure */ #define MjdToEpochTime(x) (((x##_hi << 8 | x##_lo)-40587)*86400) /**<\brief MjdToEpochTime*/ #define BcdTimeToSeconds(x) ((3600 * ((10*((x##_h & 0xF0)>>4)) + \ (x##_h & 0xF))) + \ (60 * ((10*((x##_m & 0xF0)>>4)) + \ (x##_m & 0xF))) + \ ((10*((x##_s & 0xF0)>>4)) + (x##_s & 0xF))) /**<\brief BcdTimeToSeconds*/ #define BCDToDecimal(x) (10*((x & 0xF0)>>4)) + (x & 0xF) /**<\brief BCDToDecimal*/ #define BCD2DEC(x) ((((x & 0xF0) >> 4) * 10) + (x & 0x0F)) /**<\brief BCD2DEC*/ // ================ TDT related ======================= // #define TDT_LEN 8 /**<\brief TDT_LEN*/ /** * \brief TDT structure */ typedef struct _mid_siutil_tdt_t { UINT8 table_id :8; /**<\brief 0x70*/ UINT8 section_length_hi :4; /**<\brief section_length high bit */ UINT8 reserved :3; /**<\brief reserved */ UINT8 section_syntax_indicator :1; /**<\brief section_syntax_indicator*/ UINT8 section_length_lo :8; /**<\brief section_length low bit */ UINT8 utc_mjd_hi :8; /**<\brief utc_mjd high bit*/ UINT8 utc_mjd_lo :8; /**<\brief utc_mjd low bit*/ UINT8 utc_time_h :8; /**<\brief utc_time hour*/ UINT8 utc_time_m :8; /**<\brief utc_time minute*/ UINT8 utc_time_s :8; /**<\brief utc_time second*/ }MID_SiutilTdt_t, *LP_MID_SiutilTdt_t; /**<\brief LP_MID_SiutilTdt_t*/ /** * \brief ASC Time */ typedef struct _mid_siutil_time_date_t { int Year; /**<\brief Year;*/ char Month; /**<\brief Month*/ char Day; /**<\brief Day*/ char Hour; /**<\brief Hour*/ char Min; /**<\brief Minute*/ char Second; /**<\brief Second*/ }MID_SiutilTimeDate_t, *LP_MID_SiutilTimeDate_t;/**<\brief LP_MID_SiutilTimeDate_t*/ /** * \brief TDT and TOT struct */ typedef struct _mid_siutil_tdt_tot_t { INT8 table_id; /**<\brief TDT:0x70 TOT:0x73*/ INT32 curtime; /**<\brief current time*/ MID_SiutilTimeDate_t asc_time; /**<\brief ASC time*/ char RawUTC[5]; ///<20100301 JennyLee added for mantis 80113 /**<\brief RawUTC*/ UINT16 descLen; /**<\brief only TOT used*/ UINT8 *p_descr; /**<\brief p_descr*/ }MID_SiutilTdtTot_t, *LP_MID_SiutilTdtTot_t;/**<\brief LP_MID_SiutilTdtTot_t*/ // ================ SDT related ======================= // #define SDT_LEN 11 /**<\brief SDT_LEN*/ /** * \brief SDT structure */ typedef struct _mid_siutil_sdt_t { UINT8 table_id :8; /**<\brief Actual:0x42 Other:0x46*/ UINT8 section_length_hi :4; /**<\brief section_length high bit */ UINT8 reserved :3; /**<\brief reserved */ UINT8 section_syntax_indicator :1; /**<\brief section_syntax_indicator */ UINT8 section_length_lo :8; /**<\brief section_length low bit */ UINT8 transport_stream_id_hi :8; /**<\brief transport_stream_id high bit */ UINT8 transport_stream_id_lo :8; /**<\brief low bit */ UINT8 current_next_indicator :1; /**<\brief current_next_indicator */ UINT8 version_number :5; /**<\brief version_number */ UINT8 reserved1 :2; /**<\brief reserved */ UINT8 section_number :8; /**<\brief section_number*/ UINT8 last_section_number :8; /**<\brief last_section_number*/ UINT8 original_network_id_hi :8; /**<\brief original_network_id high bit */ UINT8 original_network_id_lo :8; /**<\brief original_network_id low bit */ UINT8 reserved2 :8; /**<\brief reserved */ }MID_SiutilSdt_t, *LP_MID_SiutilSdt_t;/**<\brief LP_MID_SiutilSdt_t*/ #define SDT_DESCR_LEN 5 /**<\brief SDT_DESCR_LEN*/ /** * \brief one program info structure in SDT */ typedef struct _mid_siutil_sdt_descr_t { UINT8 service_id_hi :8; /**<\brief service_id high bit */ UINT8 service_id_lo :8; /**<\brief service_id low bit */ UINT8 eit_present_following_flag :1; /**<\brief eit_present_following_flag */ UINT8 eit_schedule_flag :1; /**<\brief eit_schedule_flag*/ UINT8 reserved :6; /**<\brief reserved */ UINT8 descriptors_loop_length_hi :4; /**<\brief descriptors_loop_length high bit */ UINT8 free_ca_mode :1; /**<\brief free_ca_mode */ UINT8 running_status :3; /**<\brief running_status */ UINT8 descriptors_loop_length_lo :8; /**<\brief descriptors_loop_length low bit */ }MID_SiutilSdtDescr_t, *LP_MID_SiutilSdtDescr_t;/**<\brief LP_MID_SiutilSdtDescr_t*/ /** * \brief one program service_descr structure in SDT */ typedef struct _mid_siutil_sdt_service_descr_t { MID_SiutilSdtDescr_t sdt_service;/**<\brief sdt_service */ UINT16 descLen;/**<\brief descLen */ UINT8 *p_descr;/**<\brief p_descr */ }MID_SiutilSdtServiceDescr_t, *LP_MID_SiutilSdtServiceDescr_t; /**<\brief LP_MID_SiutilSdtServiceDescr_t*/ /** * \brief one program info_t structure in SDT */ typedef struct _mid_siutil_sdt_info_t { UINT16 transport_stream_id;/**<\brief transport_stream_id */ UINT16 original_network_id;/**<\brief original_network_ide */ UINT8 table_id;/**<\brief table_id */ UINT8 version_number;/**<\brief version_number */ UINT16 services_count;/**<\brief services_count */ MID_SiutilSdtServiceDescr_t *p_sdt_descr_t; /**<\brief p_sdt_descr_t */ }MID_SiutilSdtInfo_t, *LP_MID_SiutilSdtInfo_t;/**<\brief LP_MID_SiutilSdtInfo_t*/ // ================ NIT related ======================= // #define NIT_LEN 10 /**<\brief NIT_LEN*/ /** * \brief NIT structure */ typedef struct _mid_siutil_nit_t { UINT8 table_id :8; /**<\brief Actual:0x40 Other:0x41*/ UINT8 section_length_hi :4; /**<\brief section_length high bit */ UINT8 reserved1 :3; /**<\brief reserved*/ UINT8 section_syntax_indicator :1; /**<\brief section_syntax_indicator */ UINT8 section_length_lo :8; /**<\brief section_length low bit */ UINT8 network_id_hi :8; /**<\brief network_id high bit */ UINT8 network_id_lo :8; /**<\brief network_id low bit */ UINT8 current_next_indicator :1; /**<\brief current_next_indicator */ UINT8 version_number :5; /**<\brief version_number */ UINT8 reserved2 :2; /**<\brief reserved*/ UINT8 section_number :8; /**<\brief section_number */ UINT8 last_section_number :8; /**<\brief last_section_number*/ UINT8 network_descriptor_length_hi :4; /**<\brief network_descriptor_length high bit*/ UINT8 reserved3 :4; /**<\brief reserved*/ UINT8 network_descriptor_length_lo :8; /**<\brief network_descriptor_length low bit*/ }MID_SiutilNit_t, *LP_MID_SiutilNit_t; /**<\brief LP_MID_SiutilNit_t*/ #define NIT_TS_LEN 6 /**<\brief NIT_TS_LEN*/ /** * \brief NIT TS structure */ typedef struct _mid_siutil_nit_ts_t { UINT8 transport_stream_id_hi :8; /**<\brief transport_stream_id high bit*/ UINT8 transport_stream_id_lo :8; /**<\brief transport_stream_id low bit*/ UINT8 original_network_id_hi :8; /**<\brief original_network_id high bit*/ UINT8 original_network_id_lo :8; /**<\brief original_network_id low bit*/ UINT8 transport_descriptors_length_hi :4; /**<\brief transport_descriptors_length high bit*/ UINT8 reserved :4; /**<\brief reserved*/ UINT8 transport_descriptors_length_lo :8; /**<\brief transport_descriptors_length low bit*/ }MID_SiutilNitTs_t, *LP_MID_SiutilNitTs_t;/**<\brief LP_MID_SiutilNitTs_t*/ /** * \brief NIT TS descriptor structure */ typedef struct _mid_siutil_nit_ts_desc_t { UINT16 trans_id; /**<\brief transport_stream_id */ UINT16 original_network_id; /**<\brief original_network_id */ UINT16 trans_descLen; /**<\brief descriptor length */ UINT8 *p_transDescr; /**<\brief pointer to descriptors */ }MID_SiutilNitTsDescr_t, *LP_MID_SiutilNitTsDescr_t;/**<\brief LP_MID_SiutilNitTsDescr_t*/ /** * \brief NIT info structure */ typedef struct _mid_siutil_nit_info_t { UINT16 network_id; /**<\brief network_id */ UINT8 version_number; /**<\brief version_number */ UINT16 descLen; /**<\brief network descriptor length */ UINT8 *p_descr; /**<\brief pointer to descriptor */ #ifdef SUPPORT_MONITOR_ONLY_NIT_OTHER UINT8 table_id; #endif /* transport streams */ UINT16 trans_count; /**<\brief trans_count */ MID_SiutilNitTsDescr_t *p_trans; /**<\brief p_trans */ }MID_SiutilNitInfo_t, *LP_MID_SiutilNitInfo_t; /**<\brief LP_MID_SiutilNitInfo_t */ //=============================Bat related======================== #define BAT_LEN 10 typedef struct _mid_siutil_bat_t { UINT8 table_id :8; UINT8 section_length_hi :4; UINT8 :3; UINT8 section_syntax_indicator :1; UINT8 section_length_lo :8; UINT8 bouquet_id_hi :8; UINT8 bouquet_id_lo :8; UINT8 current_next_indicator :1; UINT8 version_number :5; UINT8 :2; UINT8 section_number :8; UINT8 last_section_number :8; UINT8 bouquet_descriptor_length_hi :4; UINT8 :4; UINT8 bouquet_descriptor_length_lo :8; } MID_SiutilBat_t, *LP_MID_SiutilBat_t; #define BAT_TS_LEN 6 typedef struct _mid_siutil_bat_info_t { UINT16 bouquet_id; UINT8 version_number; /* bouquet descriptor length */ UINT16 descLen; UINT8 *p_descr; /* transport streams */ UINT16 trans_count; MID_SiutilNitTsDescr_t *p_trans; } MID_SiutilBatInfo_t,*LP_MID_SiutilBatInfo_t; #ifdef CONFIG_SUPPORT_INDONESIA_EWS //=============================TxDW related======================== #define TXDW_LEN 8 /**<\brief TXDW_LEN*/ /** * \brief TxDW structure */ typedef struct _mid_siutil_txdw_t { UINT8 table_id :8; /**<\brief 0x80 */ UINT8 section_length_hi :4; /**<\brief section_length high bit */ UINT8 reserved1 :2; /**<\brief reserved*/ UINT8 private_indicator :1; /**<\brief private_indicator */ UINT8 section_syntax_indicator :1; /**<\brief section_syntax_indicator */ UINT8 section_length_lo :8; /**<\brief section_length low bit */ UINT8 table_id_ext_hi :8; /**<\brief table_id_extension high bit */ UINT8 table_id_ext_lo :8; /**<\brief table_id_extension low bit */ UINT8 current_next_indicator :1; /**<\brief current_next_indicator */ UINT8 version_number :5; /**<\brief version_number */ UINT8 reserved2 :2; /**<\brief reserved*/ UINT8 section_number :8; /**<\brief section_number */ UINT8 last_section_number :8; /**<\brief last_section_number*/ }MID_SiutilTxdw_t, *LP_MID_SiutilTxdw_t; /**<\brief LP_MID_SiutilTxdw_t*/ #define TRDW_LEN 5 /**<\brief TRDW_LEN*/ /** * \brief TRDW structure */ typedef struct _mid_siutil_trdw_t { UINT8 disaster_code_hi :8; /**<\brief disaster_code high bit*/ UINT8 disaster_code_lo :8; /**<\brief disaster_code low bit */ UINT8 location_type_code :8; /**<\brief location_type_code */ UINT8 package_id :8; /**<\brief package_id */ UINT8 number_of_location :8; /**<\brief number_of_location_code */ }MID_SiutilTrdw_t, *LP_MID_SiutilTrdw_t; /**<\brief LP_MID_SiutilTrdw_t*/ #define TRDW_REGION_LEN 4 /**<\brief TRDW_REGION_LEN*/ /** * \brief TRDW region structure */ typedef struct _mid_siutil_trdw_region_t { UINT8 location_code_hi :8; /**<\brief location_code high bit*/ UINT8 location_code_mi :8; /**<\brief location_code middle bit*/ UINT8 location_code_lo :8; /**<\brief location_code low bit */ UINT8 length_location_code :8; /**<\brief length_location_code*/ }MID_SiutilTrdwRegion_t, *LP_MID_SiutilTrdwRegion_t; /**<\brief LP_MID_SiutilTrdwRegion_t*/ #define TCDW_LEN 1 /**<\brief TCDW_LEN*/ /** * \brief TCDW structure */ typedef struct _mid_siutil_tcdw_t { UINT8 number_of_disaster :8; /**<\brief number_of_disaster_code */ }MID_SiutilTcdw_t, *LP_MID_SiutilTcdw_t; /**<\brief LP_MID_SiutilTcdw_t*/ #define TCDW_CODE_LEN 4 /**<\brief TCDW_CODE_LEN*/ /** * \brief TCDW code structure */ typedef struct _mid_siutil_tcdw_code_t { UINT8 package_id :8; /**<\brief package_id*/ UINT8 authority :8; /**<\brief authority*/ UINT8 disaster_code_hi :8; /**<\brief disaster_code high bit*/ UINT8 disaster_code_lo :8; /**<\brief disaster_code low bit */ }MID_SiutilTcdwCode_t, *LP_MID_SiutilTcdwCode_t; /**<\brief LP_MID_SiutilTcdwCode_t*/ #define TMDW_LEN 2 /**<\brief TMDW_LEN*/ /** * \brief TMDW structure */ typedef struct _mid_siutil_tmdw_t { UINT8 location_type_code :8; /**<\brief location_type_code */ UINT8 package_id :8; /**<\brief package_id */ }MID_SiutilTmdw_t, *LP_MID_SiutilTmdw_t; /**<\brief LP_MID_SiutilTmdw_t*/ #define TMDW_MSG_LEN 4 /**<\brief TMDW_MSG_LEN*/ /** * \brief TMDW message structure */ typedef struct _mid_siutil_tmdw_msg_code_t { UINT8 length_info_message_hi :8; /**<\brief length_information_message high bit*/ UINT8 length_info_message_lo :8; /**<\brief length_information_message low bit */ }MID_SiutilTmdwMsg_t, *LP_MID_SiutilTmdwMsg_t; /**<\brief LP_MID_SiutilTcdwCode_t*/ typedef struct si_string { UINT16 nbytes; UINT8* str_ptr; } SI_STRING_DESC; typedef struct { UINT32 location_code; SI_STRING_DESC* location_name; } SI_EWS_TRDW_LOCATION; typedef struct _mid_siutil_trdw_info_t { UINT16 disaster_code; UINT8 location_type_code; UINT8 package_id; UINT8 number_locations; SI_EWS_TRDW_LOCATION* locations; }MID_SiutilTrdwInfo_t, *LP_MID_SiutilTrdwInfo_t; /**<\brief LP_MID_SiutilTrdwInfo_t*/ typedef struct _mid_siutil_tcdw_info_t { UINT8 package_id; UINT8 authority; UINT16 disaster_code; SI_STRING_DESC* disaster_name; SI_STRING_DESC* disaster_position; SI_STRING_DESC* disaster_date; SI_STRING_DESC* disaster_characteristic; }MID_SiutilTcdwInfo_t, *LP_MID_SiutilTcdwInfo_t; /**<\brief LP_MID_SiutilTcdwInfo_t*/ typedef struct _mid_siutil_tmdw_info_t { UINT8 location_type_code; UINT8 package_id; UINT8 num_messages; SI_STRING_DESC** messages; }MID_SiutilTmdwInfo_t, *LP_MID_SiutilTmdwInfo_t; /**<\brief LP_MID_SiutilTmdwInfo_t*/ /* table_type */ #define SI_EWS_TABLE_TRDW 0x01 #define SI_EWS_TABLE_TCDW 0x02 #define SI_EWS_TABLE_TMDW 0x03 typedef struct _mid_siutil_txdw_info_t { UINT16 table_type; UINT8 version; UINT8 num_entries; UINT32 crc32; union { void *generic_entry; MID_SiutilTrdwInfo_t *trdw_entry; MID_SiutilTcdwInfo_t *tcdw_entry; MID_SiutilTmdwInfo_t *tmdw_entry; }; }MID_SiutilTxdwInfo_t, *LP_MID_SiutilTxdwInfo_t; /**<\brief LP_MID_SiutilTxdwInfo_t*/ CHAN_INDEX MID_SIUTIL_OpenTRDW(GL_Queue_t hChanEventQueueHdl, UINT16 pid); CHAN_INDEX MID_SIUTIL_OpenTCDW(GL_Queue_t hChanEventQueueHdl, UINT16 pid); CHAN_INDEX MID_SIUTIL_OpenTMDW(GL_Queue_t hChanEventQueueHdl, UINT16 pid); CHAN_INDEX MID_SIUTIL_OpenTxDWEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl); void MID_SIUTIL_FreeTxDW(MID_SiutilTxdwInfo_t ** ppTXDW); MID_SiutilTxdwInfo_t *MID_SIUTIL_ParseTxDWEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit); MID_SiutilTxdwInfo_t *MID_SIUTIL_ParseTxDW(CHAN_INDEX chn_index); #endif // CONFIG_SUPPORT_INDONESIA_EWS #ifdef SUPPORT_ASTRA_LCN // ================ SGT related ======================= // #define MAX_SGT_PID_NUM 5 #define MAX_SGT_SEVLIST_NUM 10 #define SGT_LEN 12 /**<\brief SGT_LEN*/ /** * \brief SGT structure */ typedef struct _mid_siutil_sgt_t { UINT8 table_id :8; /**<\brief 0x91*/ UINT8 section_length_hi :4; /**<\brief section_length high bit */ UINT8 reserved1 :3; /**<\brief reserved*/ UINT8 section_syntax_indicator :1; /**<\brief section_syntax_indicator */ UINT8 section_length_lo :8; /**<\brief section_length low bit */ UINT8 service_list_id_hi :8; /**<\brief service_list_id high bit */ UINT8 service_list_id_lo :8; /**<\brief service_list_id low bit */ UINT8 current_next_indicator :1; /**<\brief current_next_indicator */ UINT8 version_number :5; /**<\brief version_number */ UINT8 reserved2 :2; /**<\brief reserved*/ UINT8 section_number :8; /**<\brief section_number */ UINT8 last_section_number :8; /**<\brief last_section_number*/ UINT8 reserved3 :8; /**<\brief reserved*/ UINT8 reserved4 :8; /**<\brief reserved*/ UINT8 service_list_descriptor_length_hi :4; /**<\brief service_list_descriptor_length high bit*/ UINT8 reserved5 :4; /**<\brief reserved*/ UINT8 service_list_descriptor_length_lo :8; /**<\brief service_list_descriptor_length low bit*/ }MID_SiutilSgt_t, *LP_MID_SiutilSgt_t; /**<\brief LP_MID_SiutilNit_t*/ #define SGT_SRV_LEN 12 /** * \brief SGT service structure */ typedef struct _mid_siutil_srv_t { UINT8 service_id_hi :8; /**<\brief service_id high bit*/ UINT8 service_id_lo :8; /**<\brief service_id low bit*/ UINT8 transport_stream_id_hi :8; /**<\brief transport_stream_id high bit*/ UINT8 transport_stream_id_lo :8; /**<\brief transport_stream_id low bit*/ UINT8 original_network_id_hi :8; /**<\brief original_network_id high bit*/ UINT8 original_network_id_lo :8; /**<\brief original_network_id low bit*/ UINT8 logical_channel_number_hi :8; UINT8 new_service_flag :1; UINT8 visible_service_flag :1; UINT8 logical_channel_number_lo :6; UINT8 genre_code_hi :8; UINT8 genre_code_lo :8; UINT8 service_descriptors_length_hi :4; /**<\brief service_descriptors_length high bit*/ UINT8 reserved :4; /**<\brief reserved*/ UINT8 service_descriptors_length_lo :8; /**<\brief service_descriptors_length low bit*/ }MID_SiutilSgtSrv_t, *LP_MID_SiutilSgtSrv_t;/**<\brief LP_MID_SiutilSgtSrv_t*/ /** * \brief one program service structure in SGT */ typedef struct _mid_siutil_sgt_service_descr_t { MID_SiutilSgtSrv_t sgt_service;/**<\brief sdt_service */ UINT16 srv_descLen;/**<\brief descLen */ UINT8 *p_srv_descr;/**<\brief p_descr */ }MID_SiutilSgtServiceDescr_t, *LP_MID_SiutilSgtServiceDescr_t; /**<\brief LP_MID_SiutilSgtServiceDescr_t*/ /** * \brief service list structure in SGT */ typedef struct _mid_siutil_sgt_info_t { UINT16 pid; UINT16 service_list_id;/**<\brief service_list_id */ UINT8 version_number;/**<\brief version_number */ UINT8 section_number; UINT8 last_section_number; UINT16 descLen; /**<\brief service list descriptor length */ UINT8 *p_descr; /**<\brief pointer to descriptor */ UINT16 services_count;/**<\brief services_count */ MID_SiutilSgtServiceDescr_t *p_srv; /**<\brief service info */ }MID_SiutilSgtInfo_t, *LP_MID_SiutilSgtInfo_t;/**<\brief LP_MID_SiutilSdtInfo_t*/ CHAN_INDEX MID_SIUTIL_OpenSGT(GL_Queue_t hChanEventQueueHdl, UINT16 pid, bool bIsMultiSection); CHAN_INDEX MID_SIUTIL_OpenSGTEx(LIVE_INPUT_UNIT InputUnit,GL_Queue_t hChanEventQueueHdl, UINT16 pid); void MID_SIUTIL_FreeSGT(MID_SiutilSgtInfo_t ** ppSGT, bool bFreeSrvDes, bool bFreeSrvLisDes); MID_SiutilSgtInfo_t *MID_SIUTIL_ParseSGT(CHAN_INDEX chn_index, UINT16 pid, UINT8 * p_SrvListDesc, INT16 SrvList_DescLen, UINT16 * p_service, INT16 srv_len, UINT8 * p_SrvDesc, INT16 Srv_DescLen); MID_SiutilSgtInfo_t *MID_SIUTIL_ParseSGTEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT16 pid, UINT8 * p_SrvListDesc, INT16 SrvList_DescLen, UINT16 * p_service, INT16 srv_len, UINT8 * p_SrvDesc, INT16 Srv_DescLen); #endif #ifdef CONFIG_SUPPORT_HBBTV /** * \brief service list structure in AIT */ /** * \brief AIT structure */ typedef struct _mid_siutil_ait_t { UINT8 table_id :8; /**<\brief 0x74*/ UINT8 section_length_hi :4; /**<\brief section_length high bit */ UINT8 reserved1 :3; /**<\brief reserved*/ UINT8 section_syntax_indicator :1; /**<\brief section_syntax_indicator */ UINT8 section_length_lo :8; /**<\brief section_length low bit */ UINT8 application_type_hi :7; /**<\brief application_type high bit */ UINT8 test_application_flag :1; /**<\brief test_application_flag */ UINT8 application_type_lo :8; /**<\brief application_type low bit */ UINT8 current_next_indicator :1; /**<\brief current_next_indicator */ UINT8 version_number :5; /**<\brief version_number */ UINT8 reserved2 :2; /**<\brief reserved*/ UINT8 section_number :8; /**<\brief section_number */ UINT8 last_section_number :8; /**<\brief last_section_number*/ UINT8 common_des_length_hi :4; /**<\brief section_length low bit */ UINT8 reserved3 :4; /**<\brief application_type high bit */ UINT8 common_des_length_lo :8; /**<\brief application_type low bit */ } MID_SiutilAit_t, *LP_MID_SiutilAit_t; /**<\brief LP_MID_SiutilAit_t*/ #define AIT_LEN (10) /** * \brief AIT descriptor structure */ typedef struct MID_SiutilAitApp_s { UINT32 organization_id; UINT8 application_id_hi :8; UINT8 application_id_lo :8; UINT8 application_control_code :8; UINT8 application_descriptors_loop_length_hi :4; UINT8 reserved_future_use :4; UINT8 application_descriptors_loop_length_lo :8; } MID_SiutilAitApp_t, *LP_MID_SiutilAitApp_t;/**<\brief LP_MID_SiutilNitTsDescr_t*/ #define AIT_APPDES_LEN (9) /**<\brief AIT_APPDES_LEN*/ /** * \brief AIT TS descriptor structure */ typedef struct _mid_siutil_ait_appdesc_s { UINT32 organization_id; UINT16 application_id; UINT8 application_control_code; UINT8 appDec_len; UINT8 *p_AppDescr; /**<\brief pointer to descriptors */ } MID_SiutilAitAppDescr_t, *LP_MID_SiutilAitAppDescr_t;/**<\brief LP_MID_SiutilNitTsDescr_t*/ typedef struct _mid_siutil_ait_info_s { //MID_SiutilAit_t Ait_header; UINT8 test_applicatio_flag; UINT16 application_type; UINT8 version_number; UINT16 descLen; UINT8 *p_descr; UINT16 app_count; MID_SiutilAitAppDescr_t *p_Apps; } MID_SiutilAitInfo_t, *LP_MID_SiutilAitInfo_t;/**<\brief LP_MID_SiutilSdtInfo_t*/ CHAN_INDEX MID_SIUTIL_OpenAIT(GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 App_Type); CHAN_INDEX MID_SIUTIL_OpenAITEx(LIVE_INPUT_UNIT InputUnit,GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 App_Type); void MID_SIUTIL_FreeAIT(MID_SiutilAitInfo_t ** ppAIT); MID_SiutilAitInfo_t *MID_SIUTIL_ParseAITEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT16 pid, UINT8 * p_aitDesc, INT16 ait_descLen, UINT16 * p_AppId, INT16 AppIdLen, UINT8 * p_Innerdesc, INT16 InnerdescLen); MID_SiutilAitInfo_t *MID_SIUTIL_ParseAIT(CHAN_INDEX chn_index, UINT16 pid, UINT8 *p_aitDesc, INT16 ait_descLen, UINT16 *p_AppId, INT16 AppIdLen, UINT8 *p_Innerdesc, INT16 InnerdescLen); #endif /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenSDT(GL_Queue_t hChanEventQueueHdl, * UINT8 bAct) * * \param hChanEventQueueHdl : event queue handle * \param bAct : TRUE for actual, FALSE for others * * \return index of channel handle which is mapped SDT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenSDT(GL_Queue_t hChanEventQueueHdl, UINT8 bAct); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenSDTEx(LIVE_INPUT_UNIT InputUnit, * GL_Queue_t hChanEventQueueHdl, * UINT8 bAct) * * \param InputUnit : demux unit * \param hChanEventQueueHdl : event queue handle * \param bAct : TRUE for actual, FALSE for others * * \return index of channel handle which is mapped SDT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenSDTEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT8 bAct); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenSDT2Tbl(GL_Queue_t hChanEventQueueHdl, * UINT8 bAct) * * \param hChanEventQueueHdl : event queue handle * \param bAct : TRUE for actual, FALSE for others * * \return index of channel handle which is mapped SDT * * \note it's opened to receive two types of SDT table. actual & other at the same time. * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenSDT2Tbl(GL_Queue_t hChanEventQueueHdl, bool bIsMultiSection); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenSDT2TblEx(LIVE_INPUT_UNIT InputUnit, * GL_Queue_t hChanEventQueueHdl, * UINT8 bAct) * * \param InputUnit : demux unit * \param hChanEventQueueHdl : event queue handle * \param bAct : TRUE for actual, FALSE for others * * \return index of channel handle which is mapped SDT * * \note it's opened to receive two types of SDT table. actual & other at the same time. * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenSDT2TblEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT8 bAct); /************************************************************************************/ /** * \fn void MID_SIUTIL_FreeSDT(MID_SiutilSdtInfo_t **ppSDT) * * \param ppSDT : pointer to MID_SiutilSdtInfo_t which store information of SDT * * \return none * ************************************************************************************/ void MID_SIUTIL_FreeSDT(MID_SiutilSdtInfo_t **ppSDT); /************************************************************************************/ /** * \fn MID_SiutilSdtInfo_t* MID_SIUTIL_ParseSDT(CHAN_INDEX chn_index, * UINT16 *p_service, * INT16 serLen, * UINT8 *p_desc, * INT16 descLen, * UINT8 bAct) * * \param chn_index : index of channel handle which is mapped SDT * \param p_service : pointer to service array * \param serLen : length of service array * \param p_desc : pointer to descriptor array * \param descLen : length of descriptor array * \param bAct : TRUE for actual, FALSE for others * * \return the structure which store information of SDT * ************************************************************************************/ MID_SiutilSdtInfo_t* MID_SIUTIL_ParseSDT(CHAN_INDEX chn_index, UINT16 *p_service, INT16 serLen, UINT8 *p_desc, INT16 descLen, UINT8 bAct); /************************************************************************************/ /** * \fn MID_SiutilSdtInfo_t* MID_SIUTIL_ParseSDTEx(CHAN_INDEX chn_index, * LIVE_INPUT_UNIT InputUnit, * UINT16 *p_service, * INT16 serLen, * UINT8 *p_desc, * INT16 descLen, * UINT8 bAct) * * \param chn_index : index of channel handle which is mapped SDT * \param InputUnit : primary or secondary demux * \param p_service : pointer to service array * \param serLen : length of service array * \param p_desc : pointer to descriptor array * \param descLen : length of descriptor array * \param bAct : TRUE for actual, FALSE for others * * \return the structure which store information of SDT * ************************************************************************************/ MID_SiutilSdtInfo_t* MID_SIUTIL_ParseSDTEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT16 *p_service, INT16 serLen, UINT8 *p_desc, INT16 descLen, UINT8 bAct); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenNIT(GL_Queue_t hChanEventQueueHdl, UINT8 bAct) * * \param hChanEventQueueHdl : event queue handle * \param bAct : TRUE for actual, FALSE for others * * \return index of channel handle which is mapped NIT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenNIT(GL_Queue_t hChanEventQueueHdl , UINT8 bAct); CHAN_INDEX MID_SIUTIL_OpenNIT2Table(GL_Queue_t hChanEventQueueHdl); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenNITEx(LIVE_INPUT_UNIT InputUnit, * GL_Queue_t hChanEventQueueHdl, * UINT8 bAct) * * \param InputUnit : demux unit * \param hChanEventQueueHdl : event queue handle * \param bAct : TRUE for actual, FALSE for others * * \return index of channel handle which is mapped NIT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenNITEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT8 bAct); /************************************************************************************/ /** * \fn void MID_SIUTIL_FreeNIT(MID_SiutilNitInfo_t **ppNIT) * * \param ppNIT : pointer to MID_SiutilNitInfo_t which store information of NIT * * \return none * ************************************************************************************/ void MID_SIUTIL_FreeNIT(MID_SiutilNitInfo_t **ppNIT); /************************************************************************************/ /** * \fn MID_SiutilNitInfo_t* MID_SIUTIL_ParseNIT(CHAN_INDEX chn_index, * UINT8 *p_netDesc, * INT16 net_descLen, * UINT16 *p_tranID, * INT16 tranID_len, * UINT8 *p_transDesc, * INT16 trans_descLen, * UINT8 bAct) * * \param chn_index : index of channel handle which is mapped NIT * \param p_netDesc : pointer to descriptor array * \param net_descLen : length of descriptor array * \param p_tranID : pointer to transport_stream_id array * \param tranID_len : length of transport_stream_id array * \param p_transDesc : pointer to descriptor array * \param trans_descLen : length of descriptor array * \param bAct : TRUE for actual, FALSE for others * * \return the structure which store information of NIT * ************************************************************************************/ MID_SiutilNitInfo_t* MID_SIUTIL_ParseNIT(CHAN_INDEX chn_index, UINT8 *p_netDesc, INT16 net_descLen, UINT16 *p_tranID, INT16 tranID_len, UINT8 *p_transDesc, INT16 trans_descLen, UINT8 bAct); /************************************************************************************/ /** * \fn MID_SiutilNitInfo_t* MID_SIUTIL_ParseNITEx(CHAN_INDEX chn_index, * LIVE_INPUT_UNIT InputUnit, * UINT8 *p_netDesc, * INT16 net_descLen, * UINT16 *p_tranID, * INT16 tranID_len, * UINT8 *p_transDesc, * INT16 trans_descLen, * UINT8 bAct) * * \param chn_index : index of channel handle which is mapped NIT * \param InputUnit : primary or secondary demux * \param p_netDesc : pointer to descriptor array * \param net_descLen : length of descriptor array * \param p_tranID : pointer to transport_stream_id array * \param tranID_len : length of transport_stream_id array * \param p_transDesc : pointer to descriptor array * \param trans_descLen : length of descriptor array * \param bAct : TRUE for actual, FALSE for others * * \return the structure which store information of NIT * ************************************************************************************/ MID_SiutilNitInfo_t* MID_SIUTIL_ParseNITEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT8 *p_netDesc, INT16 net_descLen, UINT16 *p_tranID, INT16 tranID_len, UINT8 *p_transDesc, INT16 trans_descLen, UINT8 bAct); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenTDT(GL_Queue_t hChanEventQueueHdl) * * \param hChanEventQueueHdl : event queue handle * * \return index of channel handle which is mapped TDT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenTDT(GL_Queue_t hChanEventQueueHdl); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenTDTEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl) * * \param InputUnit : demux unit * \param hChanEventQueueHdl : event queue handle * * \return index of channel handle which is mapped TDT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenTDTEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl); /************************************************************************************/ /** * \fn void MID_SIUTIL_FreeTDT(MID_SiutilTdtTot_t **ppTDT) * * \param ppTDT : pointer to MID_SiutilTdtTot_t which store information of TDT * * \return none * ************************************************************************************/ void MID_SIUTIL_FreeTDT(MID_SiutilTdtTot_t **ppTDT); /************************************************************************************/ /** * \fn MID_SiutilTdtTot_t* MID_SIUTIL_ParseTDT(CHAN_INDEX chn_index, UINT8 *p_desc, INT16 descLen) * * \param chn_index : index of channel handle which is mapped TDT * \param p_desc : pointer to descriptor array * \param descLen : length of descriptor array * * \return the structure which store information of TDT * ************************************************************************************/ MID_SiutilTdtTot_t* MID_SIUTIL_ParseTDT(CHAN_INDEX chn_index, UINT8 *p_desc, INT16 descLen); /************************************************************************************/ /** * \fn MID_SiutilTdtTot_t* MID_SIUTIL_ParseTDTEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT8 *p_desc, INT16 descLen) * * \param chn_index : index of channel handle which is mapped TDT * \param InputUnit : primary or secondary demux * \param p_desc : pointer to descriptor array * \param descLen : length of descriptor array * * \return the structure which store information of TDT * ************************************************************************************/ MID_SiutilTdtTot_t* MID_SIUTIL_ParseTDTEx(CHAN_INDEX chn_index,LIVE_INPUT_UNIT InputUnit, UINT8 *p_desc, INT16 descLen); CHAN_INDEX MID_SIUTIL_OpenBAT(GL_Queue_t hChanEventQueueHdl, UINT16 u16BouquetId); //100705 cw.huang modified MID_SiutilBatInfo_t *MID_SIUTIL_ParseBAT(CHAN_INDEX chn_index, UINT8 *p_batDesc, INT16 bat_descLen, UINT16 *p_tranID, INT16 tranID_len, UINT8 *p_transDesc, INT16 trans_descLen); void MID_SIUTIL_FreeBAT(MID_SiutilBatInfo_t **ppBAT); #ifdef CONFIG_SUPPORT_FAST_SCANNING //=============================FNT related======================== #define FNT_LEN 10 typedef struct _mid_siutil_fnt_t { UINT8 table_id :8; /**<\brief 0xBC*/ UINT8 section_length_hi :4; UINT8 :3; UINT8 section_syntax_indicator :1; UINT8 section_length_lo :8; UINT8 operator_network_id_hi :8; UINT8 operator_network_id_lo :8; UINT8 current_next_indicator :1; UINT8 version_number :5; UINT8 :2; UINT8 section_number :8; UINT8 last_section_number :8; UINT8 network_descriptor_length_hi :4; /**<\brief network_descriptor_length high bit*/ UINT8 reserved :4; /**<\brief reserved*/ UINT8 network_descriptor_length_lo :8; /**<\brief network_descriptor_length low bit*/ } MID_SiutilFnt_t, *LP_MID_SiutilFnt_t; #define FNT_TS_LEN 6 /**<\brief FNT_TS_LEN*/ /** * \brief FNT TS structure */ typedef struct _mid_siutil_fnt_ts_t { UINT8 transport_stream_id_hi :8; /**<\brief transport_stream_id high bit*/ UINT8 transport_stream_id_lo :8; /**<\brief transport_stream_id low bit*/ UINT8 original_network_id_hi :8; /**<\brief original_network_id high bit*/ UINT8 original_network_id_lo :8; /**<\brief original_network_id low bit*/ UINT8 transport_descriptors_length_hi :4; /**<\brief transport_descriptors_length high bit*/ UINT8 reserved :4; /**<\brief reserved*/ UINT8 transport_descriptors_length_lo :8; /**<\brief transport_descriptors_length low bit*/ }MID_SiutilFntTs_t, *LP_MID_SiutilFntTs_t;/**<\brief LP_MID_SiutilFntTs_t*/ /** * \brief FNT TS descriptor structure */ typedef struct _mid_siutil_fnt_ts_desc_t { UINT16 trans_id; /**<\brief transport_stream_id */ UINT16 original_network_id; /**<\brief original_network_id */ UINT16 trans_descLen; /**<\brief descriptor length */ UINT8 *p_transDescr; /**<\brief pointer to descriptors */ }MID_SiutilFntTsDescr_t, *LP_MID_SiutilFntTsDescr_t;/**<\brief LP_MID_SiutilFntTsDescr_t*/ /** * \brief FNT info structure */ typedef struct _mid_siutil_fnt_info_t { UINT16 operator_network_id; /**<\brief operator_network_id */ UINT8 version_number; /**<\brief version_number */ UINT16 descLen; /**<\brief network descriptor length */ UINT8 *p_descr; /**<\brief pointer to descriptor */ /* transport streams */ UINT16 trans_count; /**<\brief trans_count */ MID_SiutilFntTsDescr_t *p_trans; /**<\brief p_trans */ }MID_SiutilFntInfo_t, *LP_MID_SiutilFntInfo_t; /**<\brief LP_MID_SiutilFntInfo_t */ //=============================FST related======================== #define FST_LEN 8 /** * \brief FST structure */ typedef struct _mid_siutil_fst_t { UINT8 table_id :8; /**<\brief 0xBD*/ UINT8 section_length_hi :4; /**<\brief section_length high bit */ UINT8 :2; UINT8 dummy :1; /**<\brief has to be 0 */ UINT8 section_syntax_indicator :1; /**<\brief section_syntax_indicator*/ UINT8 section_length_lo :8; /**<\brief section_length low bit */ UINT8 operator_network_id_hi :8; /**<\brief operator_network_id low bit */ UINT8 operator_network_id_lo :8; /**<\brief operator_network_id high bit */ UINT8 current_next_indicator :1; /**<\brief current_next_indicator*/ UINT8 version_number :5; /**<\brief version_number*/ UINT8 :2; UINT8 section_number :8; /**<\brief section_number*/ UINT8 last_section_number :8; /**<\brief last_section_number*/ }MID_SiutilFst_t, *LP_MID_SiutilFst_t; #define FST_SRV_LEN 18 /**<\brief information length of each service in FST*/ /** * \brief SIUTIL FST service structure */ typedef struct _mid_siutil_fst_srv_t { UINT8 original_network_id_hi :8; /**<\brief original_network_id high bit*/ UINT8 original_network_id_lo :8; /**<\brief original_network_id low bit*/ UINT8 transport_stream_id_hi :8; /**<\brief transport_stream_id high bit*/ UINT8 transport_stream_id_lo :8; /**<\brief transport_stream_id low bit*/ UINT8 service_id_hi :8; /**<\brief service_id high bit*/ UINT8 service_id_lo :8; /**<\brief service_id low bit*/ UINT8 default_video_pid_hi :8; /**<\brief default_video_pid high bit*/ UINT8 default_video_pid_lo :8; /**<\brief default_video_pid low bit*/ UINT8 default_audio_pid_hi :8; /**<\brief default_audio_pid high bit*/ UINT8 default_audio_pid_lo :8; /**<\brief default_audio_pid low bit*/ UINT8 default_video_ecm_pid_hi :8; /**<\brief default_video_ecm_pid high bit*/ UINT8 default_video_ecm_pid_lo :8; /**<\brief default_video_ecm_pid low bit*/ UINT8 default_audio_ecm_pid_hi :8; /**<\brief default_audio_ecm_pid high bit*/ UINT8 default_audio_ecm_pid_lo :8; /**<\brief default_audio_ecm_pid low bit*/ UINT8 default_pcr_pid_hi :8; /**<\brief default_pcr_pid high bit*/ UINT8 default_pcr_pid_lo :8; /**<\brief default_pcr_pid low bit*/ UINT8 descriptors_loop_length_hi :4; /**<\brief descriptors_loop_length high bit */ UINT8 reserved :4; /**<\brief reserved */ UINT8 descriptors_loop_length_lo :8; /**<\brief descriptors_loop_length low bit */ }MID_SiutilFstSrv_t, *LP_MID_SiutilFstSrv_t; /** * \brief one program service_descr structure in FST */ typedef struct _mid_siutil_fst_service_descr_t { MID_SiutilFstSrv_t fst_service;/**<\brief fst_service */ UINT16 descLen;/**<\brief descLen */ UINT8 *p_descr;/**<\brief p_descr */ }MID_SiutilFstServiceDescr_t, *LP_MID_SiutilFstServiceDescr_t; /**<\brief LP_MID_SiutilFstServiceDescr_t*/ /** * \brief one program info_t structure in FST */ typedef struct _mid_siutil_fst_info_t { UINT16 operator_network_id; UINT8 version_number;/**<\brief version_number */ UINT16 services_count;/**<\brief services_count */ MID_SiutilFstServiceDescr_t *p_fst_descr_t; /**<\brief p_sdt_descr_t */ }MID_SiutilFstInfo_t, *LP_MID_SiutilFstInfo_t;/**<\brief LP_MID_SiutilFstInfo_t*/ CHAN_INDEX MID_SIUTIL_OpenFNT(GL_Queue_t hChanEventQueueHdl, UINT16 u16Pid); CHAN_INDEX MID_SIUTIL_OpenFNTEx( LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 u16Pid); void MID_SIUTIL_FreeFNT(MID_SiutilFntInfo_t ** ppFNT); MID_SiutilFntInfo_t *MID_SIUTIL_ParseFNTEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT8 * p_netDesc, INT16 net_descLen, UINT16 * p_tranID, INT16 tranID_len, UINT8 * p_transDesc, INT16 trans_descLen, UINT16 u16Pid); MID_SiutilFntInfo_t *MID_SIUTIL_ParseFNT(CHAN_INDEX chn_index, UINT8 * p_netDesc, INT16 net_descLen, UINT16 * p_tranID, INT16 tranID_len, UINT8 * p_transDesc, INT16 trans_descLen, UINT16 u16Pid); CHAN_INDEX MID_SIUTIL_OpenFST(GL_Queue_t hChanEventQueueHdl, UINT16 u16Pid); CHAN_INDEX MID_SIUTIL_OpenFSTEx( LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 u16Pid); void MID_SIUTIL_FreeFST(MID_SiutilFstInfo_t ** ppFST); MID_SiutilFstInfo_t *MID_SIUTIL_ParseFSTEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT8 * p_desc, INT16 descLen, UINT16 u16Pid); MID_SiutilFstInfo_t *MID_SIUTIL_ParseFST(CHAN_INDEX chn_index, UINT8 * p_desc, INT16 descLen, UINT16 u16Pid); #endif #endif /* #ifndef _MID_SIUTIL_DVB_H */