123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951 |
- /*! \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 <string.h>
- #include <types.h>
- //#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 */
|