/*! \addtogroup SIUTIL * @{ */ /******************************************************************************/ /** * \file mid_siutil_13818.h * * \brief header for 13818 SI * * \note Copyright (C) 2006 SunMedia Co, chengdu * Author anlzhao@sunmedia.com.cn * * \author * * The source code in this file is written by anlzhao referring to * 13818 and owned by SunMedia Coporation. The header defines all * the macro and common struct. You should include it in all file. * * BUGS: * ******************************************************************************/ #ifndef _MID_SIUTIL_13818_H #define _MID_SIUTIL_13818_H //add by kai.wang++ #include #include //#include "drv_demux.h" #include "mid_common.h" #include "mid_siutil.h" //[kiwi 20090213] #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE #include "unt.h" #endif /* Packet Identifier Value */ #define PID_PAT 0x0000 /**<\brief PID of Program Association Table */ #define PID_CAT 0x0001 /**<\brief PID of Conditional Access Table */ /* Table Identifier Value */ #define TABLE_ID_PAT 0x00 /**<\brief table_id of Program Association Section*/ #define TABLE_ID_CAT 0x01 /**<\brief table_id of Conditional Access Section */ #define TABLE_ID_PMT 0x02 /**<\brief table_id of Program Map Section */ //#ifdef DVB_OTA_AUTO_DETECT//yc.guan 2010-04-15 add for SSU//cong.xiao 2010-06-24 modify for zBook #if defined(DVB_OTA_AUTO_DETECT) || defined(SUPPORT_OTA_UPGRADE_USERSET) #define TABLE_ID_DSI 0x3B /**<\brief table_id of DSI Section */ #define TABLE_ID_DDB 0x3C /**<\brief table_id of DDB Section */ #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE #define TABLE_ID_UNT 0x4B /**<\brief table_id of UNT Section */ #endif #define OTA_TYPE_SSU (0) #define OTA_TYPE_OAD (1) #define DSMCC_DESCR_LEN (5) #endif /* * Descriptor Tag Value * defined by ISO/IEC 13818-1 Table 2-39 */ /* 0x00-0x01, Reserved */ #define DESCR_VIDEO_STREAM 0x02 /**<\brief tag of video_stream_descriptor */ #define DESCR_AUDIO_STREAM 0x03 /**<\brief tag of audio_stream_descriptor */ #define DESCR_HIERARCHY 0x04 /**<\brief tag of hierarchy_descriptor */ #define DESCR_REGISTRATION 0x05 /**<\brief tag of registration_descriptor */ #define DESCR_DATA_STREAM_ALIGN 0x06 /**<\brief tag of data_stream_alignment_descriptor */ #define DESCR_TARGET_BACKGRID 0x07 /**<\brief tag of target_background_grid_descriptor */ #define DESCR_VIDEO_WINDOW 0x08 /**<\brief tag of video_window_descriptor */ #define DESCR_CA 0x09 /**<\brief tag of CA_descriptor_descriptor */ #define DESCR_ISO_639_LANGUAGE 0x0A /**<\brief tag of ISO_639_language_descriptor */ #define DESCR_SYSTEM_CLOCK 0x0B /**<\brief tag of system_clock_descriptor */ #define DESCR_MULTIPLEX_BUFFER_UTIL 0x0C /**<\brief tag of multiplex_buffer_utilization_descriptor */ #define DESCR_COPYRIGHT 0x0D /**<\brief tag of copyright_descriptor */ #define DESCR_MAXIMUM_BITRATE 0x0E /**<\brief tag of maximum bitrate_descriptor */ #define DESCR_PRIVATE_DATA_IND 0x0F /**<\brief tag of private data indicator_descriptor */ #define DESCR_SMOOTHING_BUFFER 0x10 /**<\brief tag of smoothing buffer_descriptor */ #define DESCR_STD 0x11 /**<\brief tag of STD_descriptor */ #define DESCR_IBP 0x12 /**<\brief tag of IBP_descriptor */ /* * Descriptor Tag Value * defined by ISO/IEC 13818-6 */ // CONFIG_SUPPORT_MHEG5 + #define DESCR_CAROUSEL_ID 0x13 ///<\brief 12.5.1 Carousel identifier descriptor #define DESCR_ASSO_TAG 0x14 ///<\brief 12.5.2 Association tag descriptor #define DESCR_DEFERRED_ASSO_TAG 0x15 ///<\brief 2.5.3 Deferred association tags descriptor // - /* Max section size */ #define MAX_SECTION_SIZE_PAT 1024 /**<\brief max size of PAT section */ #define MAX_SECTION_SIZE_PMT 1024 /**<\brief max size of PMT section */ #define MAX_SECTION_SIZE_CAT 1024 /**<\brief max size of CAT section */ /* * Stream_type defined by MPEG2 Organization */ /* The below defined the stream-type which is defined in mpeg spec * mpeg spec defined, commented by zhaoal: * value desc * 0x00 ITU-T|ISO/IEC Reserved * 0x01 ITU-T|ISO11172 Video * 0x02 ITU-T Rec.H.262 | ISO/IEC 13818-2 Video * 0x03 ISO/IEC 11171 Audio * 0x04 ISO/IEC 13818 Audio * 0x05 ITU-T Rec.H.222.0 | ISO/IEC 13818-1 Private Segment * 0x06 ITU-T Rec.H.222.0 |ISO/IEC 13818-1 PEC Packet contained * private data * 0x07 ISO/IEC 13522 MPEG * 0x08 ITU-T Rec.H.262 | ISO/IEC 13818-1 DSM-CC * 0x09 ITU-T Rec.H.262 | ISO/IEC 13818-1 /11172-1 * 0x0A-0x7F ITU-T Rec.H.262 | ISO/IEC 13818-1 Reserved * 0x80-0xFF Private */ #ifdef CONFIG_DTMB_SYSTEM #define STREAM_TYPE_DRA_AUDIO 0x00 #endif #define STREAM_TYPE_VIDEO_MPEG1 0x01 #define STREAM_TYPE_VIDEO_MPEG2 0x02 #define STREAM_TYPE_AUDIO_MPEG1 0x03 #define STREAM_TYPE_AUDIO_MPEG2 0x04 #define STREAM_TYPE_PRIVATE_SECTION 0x05 #define STREAM_TYPE_PRIVATE_DATA 0x06 #define STREAM_TYPE_13522_MPEG 0x07 #define STREAM_TYPE_H220_13818_6_DSMCC 0x08 #define STREAM_TYPE_H220_13818_1 0x09 #define STREAM_TYPE_MULTIPROTOCOL_ENCAP 0x0A // Multi-protocol Encapsulation #define STREAM_TYPE_OBJECT_DATA_CAROUSEL 0x0B // DSM-CC U-N Messages #define STREAM_TYPE_DSMCC_DESCRIPTOR 0x0C // DSM-CC Stream Descriptors #ifdef CONFIG_SUPPORT_MHEG5 #define STREAM_TYPE_ANY_DSMCC_DATA 0x0D // DSM-CC Sections (any type, including private data) #else #define STREAM_TYPE_13818_6_D 0x0D #endif #define STREAM_TYPE_AUDIO_MPEG2_AAC 0x0f // MPEG2 AAC-LC ADTS #define STREAM_TYPE_VIDEO_MPEG4 0x10 #define STREAM_TYPE_AUDIO_AAC 0x11 // With the LATM transport syntax as defined in 14496-3/AMD1 [kiwi 20080814] #define STREAM_TYPE_VIDEO_AVC 0x1B // h.264 #ifdef CONFIG_DTMB_SYSTEM #define STREAM_TYPE_VIDEO_AVS 0x42 #endif #define STREAM_TYPE_VIDEO_HEVC 0x24 //#define STREAM_TYPE_AUDIO_AVS 0x43 #define STREAM_TYPE_AUDIO_AC3 0x81 #define STREAM_TYPE_AUDIO_EAC3 0x87 #define STREAM_TYPE_VC_1 0xEA // VC-1 [kiwi 20090706] /* Timeout */ #undef PAT_TIMEOUT #define PAT_TIMEOUT 150 #undef PMT_TIMEOUT #define PMT_TIMEOUT 150 // ================ PAT related ======================= // #define PAT_LEN 8 /** * \brief PAT structure */ typedef struct _mid_siutil_pat_t { UINT8 table_id :8; /**<\brief 0x00*/ 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 transport_stream_id_hi :8; /**<\brief transport_stream_id high bit*/ UINT8 transport_stream_id_lo :8; /**<\brief transport_stream_id low 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_SiutilPat_t, *LP_MID_SiutilPat_t; #define PAT_PROG_LEN 4 /**<\brief information length of each program in PAT*/ /** * \brief SIUTIL PAT program structure */ typedef struct _mid_siutil_pat_prog_t { UINT8 program_number_hi :8; /**<\brief program_number high bit*/ UINT8 program_number_lo :8; /**<\brief program_number low bit*/ UINT8 pid_hi :5; /**<\brief PMTID high bit*/ UINT8 reserved :3; UINT8 pid_lo :8; /**<\brief PMTID low bit*/ }MID_SiutilPatProg_t, *LP_MID_SiutilPatProg_t; /** * \brief SIUTIL PAT program maps */ typedef struct _mid_siutil_prog_maps_t { UINT16 program_number; /**<\brief program_number*/ UINT16 pid; /**<\brief PMTID*/ UINT8 collection_failed; // collection timeout }MID_SiutilProgMaps_t, *LP_MID_SiutilProgMaps_t; /** * \brief SIUTIL PAT info */ typedef struct _mid_siutil_pat_info_t { UINT16 transport_stream_id; /**<\brief transport_stream_id*/ UINT8 version_number; /**<\brief version_number*/ UINT16 maps_count; /**<\brief program count in PAT*/ MID_SiutilProgMaps_t *pat_maps; /**<\brief program count in PAT*/ }MID_SiutilPatInfo_t, *LP_MID_SiutilPatInfo_t; // ================ PMT related ======================= // #define PMT_LEN 12 /** * \brief PMT structure */ typedef struct _mid_siutil_pmt_t { UINT8 table_id :8; /**<\brief 0x02 */ 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 program_number_hi :8; /**<\brief program_number high bit */ UINT8 program_number_lo :8; /**<\brief program_number low 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 */ UINT8 PCR_PID_hi :5; /**<\brief PCR_PID high bit*/ UINT8 :3; UINT8 PCR_PID_lo :8; /**<\brief PCR_PID low bit */ UINT8 program_info_length_hi :4; /**<\brief program_info_length high bit */ UINT8 :4; UINT8 program_info_length_lo :8; /**<\brief program_info_length low bit*/ }MID_SiutilPmt_t, *LP_MID_SiutilPmt_t; #define PMT_INFO_LEN 5 /** * \brief PMT stream info structure */ typedef struct _mid_pmt_stream_info_t { UINT8 stream_type :8; /**<\brief stream_type */ UINT8 elementary_PID_hi :5; /**<\brief elementary_PID high bit*/ UINT8 :3; UINT8 elementary_PID_lo :8; /**<\brief elementary_PID low bit*/ UINT8 ES_info_length_hi :4; /**<\brief ES_info_length high bit*/ UINT8 :4; UINT8 ES_info_length_lo :8; /**<\brief ES_info_length low bit*/ }MID_SiutilPmtStreamInfo_t, *LP_MID_SiutilPmtStreamInfo_t; #define PMT_PROG_INFO_DESC_LEN 2 // saint222 #define PMT_CA_SYSTEM_ID_LEN 2 // add by cflu 071207 typedef struct _mid_siutil_pmt_prog_info_descr_t { UINT8 desc_tag :8; UINT8 desc_length :8; }MID_SiutilPmtProgInfoDescr_t, *LP_MID_SiutilPmtProgInfoDescr_t; /** * \brief PMT stream info descriptor structure */ typedef struct _mid_siutil_pmt_stream_info_descr_t { UINT8 stream_type; /**<\brief stream_type */ UINT16 elementary_pid; /**<\brief elementary_pid */ UINT16 descLen; /**<\brief total descriptor length */ UINT8 *p_desc; /**<\brief pointer to descriptor */ }MID_SiutilPmtStreamInfoDescr_t, *LP_MID_SiutilPmtStreamInfoDescr_t; /** * \brief PMT info structure */ typedef struct _mid_siutil_pmt_info_t { UINT16 program_number; /**<\brief program_number*/ UINT16 pcr_pid; /**<\brief pcr_pid*/ UINT8 version_number; /**<\brief version_number*/ UINT8 current_next_indicator; /**<\brief current_next_indicator*/ UINT16 section_len; UINT32 crc32; /* Add by anlzhao, 2006/05/25 */ UINT16 info_len; /**<\brief info_len */ UINT8 *p_info; /**<\brief pointer to info descriptors*/ UINT16 comp_count; /**<\brief component count*/ MID_SiutilPmtStreamInfoDescr_t *p_comp; /**<\brief pointer to component*/ }MID_SiutilPmtInfo_t, *LP_MID_SiutilPmtInfo_t; //#ifdef DVB_OTA_AUTO_DETECT//yc.guan 2010-04-15 add for SSU//cong.xiao 2010-06-24 modify for zBook #if defined(DVB_OTA_AUTO_DETECT) || defined(SUPPORT_OTA_UPGRADE_USERSET) /* * common si struct */ typedef struct { UINT8 table_id :8; UINT8 section_length_hi :4; UINT8 :3; UINT8 section_syntax_indicator :1; UINT8 section_length_lo :8; UINT8 id_hi :8; UINT8 id_lo :8; UINT8 current_next_indicator :1; UINT8 version_number :5; UINT8 :2; UINT8 section_number :8; UINT8 last_section_number :8; }SI_TBLE_HDR, *PSI_TBLE_HDR; typedef struct _DSMCC_SSU_GROUP_COMP_DESC_SUBDESC_INFO_T { UINT8 subDesType; UINT8 subDesLength; //UINT8* additionallnformation; }DSMCC_SSU_GROUP_COMP_DESC_SUBDESC_INFO_T; //cong.xiao add 2010-12-08 +++ typedef struct _DSMCC_SSU_GROUP_COMP_DESC_INFO_T { UINT8 descType; UINT8 descLen; UINT8 specifierType; UINT8 oui[3]; UINT16 model; UINT16 version; UINT8 subDesCount; DSMCC_SSU_GROUP_COMP_DESC_SUBDESC_INFO_T* pSubDesc; }DSMCC_SSU_GROUP_COMP_DESC_INFO_T; typedef struct _DSMCC_SSU_GROUP_COMP_DESC_T { UINT16 compaLen; UINT16 descCount; DSMCC_SSU_GROUP_COMP_DESC_INFO_T* pDesc; } DSMCC_SSU_GROUP_COMP_DESC_T; //cong.xiao add 2010-12-08 --- typedef struct _DSMCC_MSG_HEADER_T { UINT8 protocolDiscr; UINT8 DsmccType; UINT16 MsgID; UINT32 transaction_id; UINT8 Reserved; UINT8 adapLen; UINT16 msgLen; UINT8 *pDsmccAdapHeader; } DSMCC_MSG_HEADER_T; typedef struct _DSMCC_SSU_GROUP_T { UINT32 groupId; UINT32 groupSize; DSMCC_SSU_GROUP_COMP_DESC_T *pComp; UINT16 groupInfoLen; UINT8 *pGroupInfoByte; UINT16 privateDataLen; UINT8 *pPrivateDataByte; } DSMCC_SSU_GROUP_T; #define MAX_COMPONENT_A_PMT (20) /*compoent tag. the stream identifier descriptor() in the ES_info_loop of the PMT */ typedef struct _SSU_location_tag{ UINT8 tag; /*compoent tag. the stream identifier descriptor() in the ES_info_loop of the PMT*/ UINT16 elementaryPid; /*the location of this component tag */ }SSU_location_tag_t; #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE typedef struct _SSU_UNT_T { SSU_location_tag_t component[MAX_COMPONENT_A_PMT];/*compoent tag. the stream identifier descriptor() in the ES_info_loop of the PMT*/ UINT8 action_Type; UINT8 OUI[3]; UINT8 version_num; UINT8 processing_order; UINT16 common_descriptor_Len; UINT8* pCommon_descriptor_info; DSMCC_SSU_GROUP_COMP_DESC_T *pCompDesc; UINT16 platfrom_loop_length; UINT16 target_decriptor_loop_length; UINT8 *pTarget_decriptor_info; UINT16 operational_descriptor_loop; UINT8 *pOperational_descriptor_info; }SSU_UNT_T; #endif typedef struct _SSU_DSI_T { UINT32 u32Len; UINT8 version_num; DSMCC_MSG_HEADER_T *pDsmccHeader; UINT8 serverId[20]; UINT16 compDescLen; UINT16 privateDataLen; UINT16 numberOfGroups; DSMCC_SSU_GROUP_T *pGroup; } SSU_DSI_T; typedef struct _SSU_DDB_T { DSMCC_MSG_HEADER_T *pDsmccHeader; UINT16 moduleid; UINT8 moduleVersion; UINT8 Reserved; UINT16 blockNum; UINT8* pPayload; }SSU_DDB_T; #ifdef DVB_OAD_AUTO_DETECT /************ OAD DSI ************************/ typedef struct _DSMCC_OAD_BIOP_COMPONENT_DATA_T { UINT32 carousel_id; UINT16 module_id; UINT8 major_id; UINT8 minor_ver; UINT8 objectKey_len; UINT8* pObjectKey_data; }DSMCC_OAD_BIOP_COMPONENT_DATA_T; typedef struct _DSMCC_OAD_BIOP_CONNBINDER_T { UINT32 component_tag; UINT8 component_data_len; UINT8 taps_counts; UINT16 tap_id; UINT8 tap_use; UINT8 association_tag; UINT8 selector_type; UINT32 translation_id; UINT32 time_out; }DSMCC_OAD_BIOP_CONNBINDER_T; typedef struct _DSMCC_OAD_BIOP_LOCATION_OBJ_T { UINT32 component_tag; UINT8 component_data_len; DSMCC_OAD_BIOP_COMPONENT_DATA_T pComponent_data; }DSMCC_OAD_BIOP_LOCATION_OBJ_T; typedef struct _DSMCC_OAD_BIOP_PROTOCOL_PROFILE_T { UINT32 profileId_tag; UINT32 profile_data_len; UINT8 byte_order; UINT8 component_count; DSMCC_OAD_BIOP_LOCATION_OBJ_T* location_obj; DSMCC_OAD_BIOP_CONNBINDER_T* component_data; } DSMCC_OAD_BIOP_PROTOCOL_PROFILE_T; typedef struct _DSMCC_OAD_DOWNLOAD_SLOT_T { UINT32 slot_start_time; UINT32 slot_duration; UINT8 estimate_download_time; }DSMCC_OAD_DOWNLOAD_SLOT_T; typedef struct _DSMCC_OAD_PRIORITY_T { UINT8 download_priority; }DSMCC_OAD_PRIORITY_T; typedef struct _DSMCC_OAD_USERINFO_T { UINT8* pUser_information; }DSMCC_OAD_USERINFO_T; typedef struct _DSMCC_OAD_MIS_T { UINT8 manufacturer_info_tag; UINT16 manufacturer_info_len; UINT8 OUI[3]; UINT32 version_id; UINT8 desc_tag; UINT8 desc_len; union{ DSMCC_OAD_DOWNLOAD_SLOT_T download_slot; DSMCC_OAD_PRIORITY_T priority; DSMCC_OAD_USERINFO_T userinfo; }MIS_INFO; }DSMCC_OAD_MIS_T; typedef struct _DSMCC_OAD_SERVICE_INFO { UINT32 type_id_length; UINT8 type_id[4]; UINT32 taggedProfiles_count; DSMCC_OAD_BIOP_PROTOCOL_PROFILE_T* profile_data; UINT8 downloadTaps_count; UINT8 serviceContext_count; UINT16 userInfo_len; DSMCC_OAD_MIS_T* pUserinfo_data; } DSMCC_OAD_SERVICE_INFO; typedef struct _OAD_DSI_T { DSMCC_MSG_HEADER_T *pDsmccHeader; UINT8 serverId[20]; UINT16 compDescLen; UINT16 privateDataLen; DSMCC_OAD_SERVICE_INFO* pService_info; }OAD_DSI_T; typedef struct _OAD_SCTL_COUNT_T { UINT32 context_id; UINT16 context_data_len; UINT8* pContext_data_byte; }OAD_SCTL_COUNT_T; typedef struct _OAD_FILE_T { UINT8 Magic[4]; UINT8 Magic_version; UINT8 Minor_version; UINT8 Byte_order; UINT8 Messige_type; UINT32 Messige_size; UINT8 Object_key_len; UINT8* pObject_key; UINT32 Object_kind_len; UINT8 Object_kind_data[4]; UINT16 Object_info_len; UINT64 DSM_File_ContentSize; UINT8* pObject_data_byte; UINT8 ServiceContextList_count; OAD_SCTL_COUNT_T* pSCTL_count; UINT32 MessageBody_length; UINT32 Content_len; }OAD_FILE_T; typedef struct _OAD_DDB_T { DSMCC_MSG_HEADER_T *pDsmccHeader; UINT16 moduleid; UINT8 moduleVersion; UINT8 Reserved; UINT16 blockNum; OAD_FILE_T* pFile_data; UINT8* pPayload; }OAD_DDB_T; #endif typedef struct { UINT16 number; UINT16 len; UINT8 *pData; }sFILE_SEGM_LINK; #endif // ================ CAT related ======================= // #define CAT_LEN 8 /** * \brief CAT structure */ typedef struct _mid_siutil_cat_t { UINT8 table_id :8; /**<\brief 0x01 */ 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 :8; UINT8 :8; 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_SiutilCat_t, *LP_MID_SiutilCat_t; #define CAT_DESC_LEN 2 /** * \brief CAT descriptor structure */ typedef struct _mid_siutil_cat_descr_t { UINT8 desc_tag; /**<\brief descriptor tag */ UINT8 descLen; /**<\brief descriptor length */ UINT8 ca_system_id_hi; /**<\brief ca_system_id high bit */ UINT8 ca_system_id_lo; /**<\brief ca_system_id low bit */ UINT8 ca_pid_hi; /**<\brief ca_pid high bit */ UINT8 ca_pid_lo; /**<\brief ca_pid low bit */ UINT8 *p_data; }MID_SiutilCatDescr_t, *LP_MID_SiutilCatDescr_t; #if 0 typedef struct _mid_siutil_cat_info_t { UINT8 version_number; MID_SiutilCatDescr_t *p_desc; }MID_SiutilCatInfo_t, *LP_MID_SiutilCatInfo_t; #else /** * \brief CAT info structure */ typedef struct _mid_siutil_cat_info_t { INT16 length; /**<\brief length */ UINT8 version_number; /**<\brief version_number */ UINT8 *pContent; }MID_SiutilCatInfo_t, *LP_MID_SiutilCatInfo_t; #endif /* pat.c */ /** \defgroup PAT * \ingroup Open_channels * @{ */ /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenPAT(GL_Queue_t hChanEventQueueHdl) * * \param hChanEventQueueHdl : event queue handle * * \return index of channel handle which is mapped PAT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenPAT(GL_Queue_t hChanEventQueueHdl); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenPATEx(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 PAT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenPATEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl); /************************************************************************************/ /** * \fn void MID_SIUTIL_FreePAT(MID_SiutilPatInfo_t **ppPAT) * * \param ppPAT : pointer to MID_SiutilPatInfo_t which store information of PAT * * \return none * ************************************************************************************/ void MID_SIUTIL_FreePAT(MID_SiutilPatInfo_t **ppPAT); /************************************************************************************/ /** * \fn MID_SiutilPatInfo_t* MID_SIUTIL_ParsePAT(CHAN_INDEX chn_index) * * \param chn_index : index of channel handle which is mapped PAT * * \return the structure which store information of PAT * ************************************************************************************/ MID_SiutilPatInfo_t* MID_SIUTIL_ParsePAT(CHAN_INDEX chn_index); /************************************************************************************/ /** * \fn MID_SiutilPatInfo_t* MID_SIUTIL_ParsePATEx( CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit) * * \param chn_index : index of channel handle which is mapped PAT * \param InputUnit : primary or secondary demux * * \return the structure which store information of PAT * ************************************************************************************/ MID_SiutilPatInfo_t* MID_SIUTIL_ParsePATEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit); /* @} end of defgroup PAT*/ /* pmt.c */ /** \defgroup PMT * \ingroup Open_channels * @{ */ /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenPMT(GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id) * * \param hChanEventQueueHdl : event queue handle * \param pid : the PMTID * \param program_id : program_number of this PMT * * \return index of channel handle which is mapped PMT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenPMT(GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenPMTEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id) * * \param InputUnit : demux unit * \param hChanEventQueueHdl : event queue handle * \param pid : the PMTID * \param program_id : program_number of this PMT * * \return index of channel handle which is mapped PMT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenPMTEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id); /************************************************************************************/ /** * \fn void MID_SIUTIL_FreePMT(MID_SiutilPmtInfo_t **ppPMT) * * \param ppPMT : pointer to MID_SiutilPmtInfo_t which store information of PMT * * \return none * ************************************************************************************/ void MID_SIUTIL_FreePMT(MID_SiutilPmtInfo_t **ppPMT); /************************************************************************************/ /** * \fn MID_SiutilPmtInfo_t* MID_SIUTIL_ParsePMT(CHAN_INDEX chn_index, * UINT16 pid, * UINT16 program_id, * UINT8 *p_info, * INT16 info_len, * UINT16 *p_comps, * INT16 compLen, * UINT8 *p_desc, * INT16 descLen) * * \param chn_index : index of channel handle which is mapped PMT * \param pid : the PMTID * \param program_id : program_number of this PMT * \param p_info : pointer to descriptor array * \param info_len : length of descriptor array * \param p_comps : pointer to components array * \param compLen : length of components array * \param p_desc : pointer to descriptor array * \param descLen : length of descriptor array * * \return the structure which store information of PMT * ************************************************************************************/ MID_SiutilPmtInfo_t* MID_SIUTIL_ParsePMT(CHAN_INDEX chn_index, UINT16 pid, UINT16 program_id, UINT8 *p_info, INT16 info_len, UINT16 *p_comps, INT16 compLen, UINT8 *p_desc, INT16 descLen); /************************************************************************************/ /** * \fn MID_SiutilPmtInfo_t* MID_SIUTIL_ParsePMTEx(CHAN_INDEX chn_index, * LIVE_INPUT_UNIT InputUnit, * UINT16 pid, * UINT16 program_id, * UINT8 *p_info, * INT16 info_len, * UINT16 *p_comps, * INT16 compLen, * UINT8 *p_desc, * INT16 descLen) * * \param chn_index : index of channel handle which is mapped PMT * \param InputUnit : primary or secondary demux * \param pid : the PMTID * \param program_id : program_number of this PMT * \param p_info : pointer to descriptor array * \param info_len : length of descriptor array * \param p_comps : pointer to components array * \param compLen : length of components array * \param p_desc : pointer to descriptor array * \param descLen : length of descriptor array * * \return the structure which store information of PMT * ************************************************************************************/ MID_SiutilPmtInfo_t* MID_SIUTIL_ParsePMTEx( CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit, UINT16 pid, UINT16 program_id, UINT8 *p_info, INT16 info_len, UINT16 *p_comps, INT16 compLen, UINT8 *p_desc, INT16 descLen); /* @} end of defgroup PMT*/ //#ifdef DVB_OTA_AUTO_DETECT//yc.guan 2010-04-15 add for SSU//cong.xiao 2010-06-24 modify for zBook #if defined(DVB_OTA_AUTO_DETECT) || defined(SUPPORT_OTA_UPGRADE_USERSET) /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenDSI(GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id) * * \param hChanEventQueueHdl : event queue handle * \param pid : the DSI ID * \param program_id : program_number of this DSI * * \return index of channel handle which is mapped DSI * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenDSI(GL_Queue_t hChanEventQueueHdl, UINT16 pid, INT16 program_id); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenDSIEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id) * * \param InputUnit : demux unit * \param hChanEventQueueHdl : event queue handle * \param pid : the DSI ID * \param program_id : program_number of this DSI * * \return index of channel handle which is mapped DSI * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenDSIEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id); #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE CHAN_INDEX MID_SIUTIL_OpenUNT(GL_Queue_t hChanEventQueueHdl, UINT16 pid, INT16 program_id); void MID_SIUTIL_FreeSsuUnt(SSU_UNT_T **ppUnt); UINT8 MID_SsuUnt_ParseInfo(UINT8* pu8Info,UINT16 Len,UINT8 flag); SSU_UNT_T *ParseSsuUnt(CHAN_INDEX chn_index,UINT8 * p_untCommon, INT16 unt_commonLen,UINT8 * p_untTarget, INT16 unt_targetLen,UINT8 * p_untOperation, INT16 unt_operationLen); #endif //void MID_SIUTIL_FreeDSI(SSU_DSI_T* ppDSI); extern void MID_SIUTIL_FreeDSI(void **ppDSI); extern void MID_SIUTIL_FreeOADDSI(void** pDsi); extern void* ParseSsuDsi(CHAN_INDEX chn_index,UINT8* const u8ErrorType);//cong.xiao add for mantis bug id 0106976 extern void *ParseOadDsi(CHAN_INDEX chn_index,UINT8* const u8ErrorType);//cong.xiao add for mantis bug id 0106976 /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenDDB(GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id) * * \param hChanEventQueueHdl : event queue handle * \param pid : the DDB ID * \param program_id : program_number of this DDB * * \return index of channel handle which is mapped DDB * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenDDB(GL_Queue_t hChanEventQueueHdl, UINT16 pid, INT16 program_id); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenDDBEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 pid, UINT16 program_id) * * \param InputUnit : demux unit * \param hChanEventQueueHdl : event queue handle * \param pid : the DDB ID * \param program_id : program_number of this DDB * * \return index of channel handle which is mapped DDB * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenDDBEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl, UINT16 pid, INT16 program_id); //void MID_SIUTIL_FreeDSI(SSU_DSI_T* ppDSI); void MID_SIUTIL_FreeDDB(SSU_DDB_T **pddb); extern void MID_SIUTIL_FreeOADDDB(void* pDDB); void *ParseSsuDDB(UINT16 pid,UINT32 Diidownloadid,const sFILE_SEGM_LINK* pSeg, const UINT16 u16MaxFileSegNum); void *ParseSsuDDBEx(LIVE_INPUT_UNIT InputUnit, UINT16 pid,UINT32 Diidownloadid,const sFILE_SEGM_LINK* pSeg,const UINT16 u16MaxFileSegNum); extern void* ParseOadDDB(UINT16 pid,UINT16 module_id, UINT32* u32BIOP_len,const sFILE_SEGM_LINK* pSeg,const UINT16 u16MaxFileSegNum); extern void* ParseOadDDBEx(LIVE_INPUT_UNIT InputUnit, UINT16 pid,UINT16 module_id, UINT32* u32BIOP_len,const sFILE_SEGM_LINK* pSeg,const UINT16 u16MaxFileSegNum); #endif /* cat.c */ /** \defgroup CAT * \ingroup Open_channels * @{ */ /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenCAT(GL_Queue_t hChanEventQueueHdl) * * \param hChanEventQueueHdl : event queue handle * * \return index of channel handle which is mapped CAT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenCAT(GL_Queue_t hChanEventQueueHdl); /************************************************************************************/ /** * \fn CHAN_INDEX MID_SIUTIL_OpenCATEx(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 CAT * ************************************************************************************/ CHAN_INDEX MID_SIUTIL_OpenCATEx(LIVE_INPUT_UNIT InputUnit, GL_Queue_t hChanEventQueueHdl); /************************************************************************************/ /** * \fn void MID_SIUTIL_FreeCAT(MID_SiutilCatInfo_t **ppCAT) * * \param ppCAT : pointer to MID_SiutilCatInfo_t which store information of CAT * * \return none * ************************************************************************************/ void MID_SIUTIL_FreeCAT(MID_SiutilCatInfo_t **ppCAT); /************************************************************************************/ /** * \fn MID_SiutilCatInfo_t* MID_SIUTIL_ParseCAT(CHAN_INDEX chn_index) * * \param chn_index : index of channel handle which is mapped CAT * * \return the structure which store information of CAT * ************************************************************************************/ MID_SiutilCatInfo_t* MID_SIUTIL_ParseCAT(CHAN_INDEX chn_index); /************************************************************************************/ /** * \fn MID_SiutilCatInfo_t* MID_SIUTIL_ParseCAT(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit) * * \param chn_index : index of channel handle which is mapped CAT * \param InputUnit : primary or secondary demux * * \return the structure which store information of CAT * ************************************************************************************/ MID_SiutilCatInfo_t* MID_SIUTIL_ParseCATEx(CHAN_INDEX chn_index, LIVE_INPUT_UNIT InputUnit); /* @} end of defgroup CAT*/ #endif /* #ifndef _MID_SIUTIL_13818_H */