| 1 | /*************************************************************** |
|---|
| 2 | ** |
|---|
| 3 | ** Broadcom Corp. Confidential |
|---|
| 4 | ** Copyright 2003-2008 Broadcom Corp. All Rights Reserved. |
|---|
| 5 | ** |
|---|
| 6 | ** THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED |
|---|
| 7 | ** SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. |
|---|
| 8 | ** YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT |
|---|
| 9 | ** SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. |
|---|
| 10 | ** |
|---|
| 11 | ** File: si_svct_vcm.h |
|---|
| 12 | ** Description: defines and headers for function that parses the |
|---|
| 13 | ** S-VCT table sections' VCM records and keeps track |
|---|
| 14 | ** of all the virtual channel link lists. |
|---|
| 15 | ** |
|---|
| 16 | ** Created: 03/08/2001 |
|---|
| 17 | ** |
|---|
| 18 | ** REVISION: |
|---|
| 19 | ** |
|---|
| 20 | ** $Log: $ |
|---|
| 21 | ** |
|---|
| 22 | ** |
|---|
| 23 | ****************************************************************/ |
|---|
| 24 | |
|---|
| 25 | #ifndef SI_SVCT_VCM_H |
|---|
| 26 | #define SI_SVCT_VCM_H |
|---|
| 27 | |
|---|
| 28 | #include "si_list.h" |
|---|
| 29 | #include "si_vct.h" |
|---|
| 30 | |
|---|
| 31 | typedef enum |
|---|
| 32 | { |
|---|
| 33 | MPEG2_XPORT, |
|---|
| 34 | NON_MPEG2_XPORT, |
|---|
| 35 | } SI_SVCT_VCM_XPORT_TYPE; |
|---|
| 36 | |
|---|
| 37 | typedef enum |
|---|
| 38 | { |
|---|
| 39 | NORMAL_CHAN, |
|---|
| 40 | HIDDEN_CHAN, |
|---|
| 41 | } SI_SVCT_VCM_SERV_TYPE; |
|---|
| 42 | |
|---|
| 43 | typedef enum |
|---|
| 44 | { |
|---|
| 45 | NTSC, |
|---|
| 46 | PAL_625, |
|---|
| 47 | PAL_525, |
|---|
| 48 | SECAM, |
|---|
| 49 | MAC, |
|---|
| 50 | } SI_SVCT_VCM_VIDEO_STANDARD; |
|---|
| 51 | |
|---|
| 52 | typedef struct |
|---|
| 53 | { |
|---|
| 54 | unsigned short prog_num; |
|---|
| 55 | unsigned char MMS_reference; |
|---|
| 56 | } SVCT_VCM_MPEG_PROPERTY; |
|---|
| 57 | |
|---|
| 58 | typedef struct |
|---|
| 59 | { |
|---|
| 60 | unsigned char scrambled; |
|---|
| 61 | unsigned char video_standard; |
|---|
| 62 | } SVCT_VCM_NONMPEG_PROPERTY; |
|---|
| 63 | |
|---|
| 64 | #define SVCT_VCM_OUT_OF_BAND_MASK 0x04 |
|---|
| 65 | #define SVCT_VCM_ACCESS_CONTROLED_MASK 0x02 |
|---|
| 66 | #define SVCT_VCM_HIDE_GUIDE_MASK 0x01 |
|---|
| 67 | |
|---|
| 68 | typedef struct _SI_SVCT_VCM_CHANNEL |
|---|
| 69 | { |
|---|
| 70 | VirtChanNumMode vcn_mode; /* virtual channel number scheme. 0 onpart, 1 twopart. */ |
|---|
| 71 | unsigned short channum1; /* for one part mode, this is the virtual channel number. for two part, this will be the major part. */ |
|---|
| 72 | unsigned short channum2; /* for one part mode, this is not used. for two part, this is the minor part. */ |
|---|
| 73 | unsigned char appflag; /* 1 for app, 0 for source. */ |
|---|
| 74 | unsigned short source_ID; /* source_ID corresponding to the channel. */ |
|---|
| 75 | unsigned char path_select; /* path_select bit. */ |
|---|
| 76 | unsigned char transport_type; /* transport type. */ |
|---|
| 77 | unsigned char channel_type; /* channel type. */ |
|---|
| 78 | unsigned char CDS_reference; /* CDS_reference. */ |
|---|
| 79 | union |
|---|
| 80 | { |
|---|
| 81 | SVCT_VCM_MPEG_PROPERTY mpeg_prop; |
|---|
| 82 | SVCT_VCM_NONMPEG_PROPERTY nonmpeg_prop; |
|---|
| 83 | } ChanPropUnion; |
|---|
| 84 | unsigned char more_prop; /* indicator that more info is available through descriptor. */ |
|---|
| 85 | unsigned short tsid; /* transport stream id for this channel. */ |
|---|
| 86 | unsigned char serv_type; /* service type. */ |
|---|
| 87 | unsigned char chanbits; /* includes masks for out_of_band, access_controled, hide_guide. */ |
|---|
| 88 | unsigned short vct_id; /* vct id for this channel. */ |
|---|
| 89 | unsigned char hd_flag; /* hd service(1), undefined (0) */ |
|---|
| 90 | unsigned char threed_flag; /* 3d service(1), undefined (0) */ |
|---|
| 91 | unsigned char mpeg4_flag; /* mpeg4 service(1), undefined (0) */ |
|---|
| 92 | unsigned char sdv_flag; /* sdv service(1), undefined (0) */ |
|---|
| 93 | SI_LST_D_ENTRY(_SI_SVCT_VCM_CHANNEL) chan_link; |
|---|
| 94 | } SI_SVCT_VCM_CHANNEL; |
|---|
| 95 | |
|---|
| 96 | SI_LST_D_HEAD(svct_vcm_channel_list, _SI_SVCT_VCM_CHANNEL); |
|---|
| 97 | |
|---|
| 98 | /* For the following, refer to table 5.16, 5.17 of ANSI/SCTE65 2002 (DVS234) */ |
|---|
| 99 | /* for VCM header. relative offset to VCM structure. */ |
|---|
| 100 | #define SVCT_VCM_DESC_INCL_BYTE_INDX 0 |
|---|
| 101 | #define SVCT_VCM_DESC_INCL_BYTE_NUM 1 |
|---|
| 102 | #define SVCT_VCM_DESC_INCL_SHIFT 5 |
|---|
| 103 | #define SVCT_VCM_DESC_INCL_MASK 0x01 |
|---|
| 104 | |
|---|
| 105 | #define SVCT_VCM_ACTIVE_TIME_BYTE_INDX 2 |
|---|
| 106 | #define SVCT_VCM_ACTIVE_TIME_BYTE_NUM 4 |
|---|
| 107 | #define SVCT_VCM_ACTIVE_TIME_SHIFT 0 |
|---|
| 108 | #define SVCT_VCM_ACTIVE_TIME_MASK 0xffffffff |
|---|
| 109 | |
|---|
| 110 | #define SVCT_VCM_NUM_VC_REC_BYTE_INDX 6 |
|---|
| 111 | #define SVCT_VCM_NUM_VC_REC_BYTE_NUM 1 |
|---|
| 112 | #define SVCT_VCM_NUM_VC_REC_SHIFT 0 |
|---|
| 113 | #define SVCT_VCM_NUM_VC_REC_MASK 0xff |
|---|
| 114 | |
|---|
| 115 | /* in the VCM loop, relative to the start of VCM loop. */ |
|---|
| 116 | #define SVCT_VCM_VC_NUM_BYTE_INDX 0 |
|---|
| 117 | #define SVCT_VCM_VC_NUM_BYTE_NUM 2 |
|---|
| 118 | #define SVCT_VCM_VC_NUM_SHIFT 0 |
|---|
| 119 | #define SVCT_VCM_VC_NUM_MASK 0xfff |
|---|
| 120 | |
|---|
| 121 | #define SVCT_VCM_APP_VIRT_CHAN_BYTE_INDX 2 |
|---|
| 122 | #define SVCT_VCM_APP_VIRT_CHAN_BYTE_NUM 1 |
|---|
| 123 | #define SVCT_VCM_APP_VIRT_CHAN_SHIFT 7 |
|---|
| 124 | #define SVCT_VCM_APP_VIRT_CHAN_MASK 0x1 |
|---|
| 125 | |
|---|
| 126 | #define SVCT_VCM_PATH_SEL_BYTE_INDX 2 |
|---|
| 127 | #define SVCT_VCM_PATH_SEL_BYTE_NUM 1 |
|---|
| 128 | #define SVCT_VCM_PATH_SEL_SHIFT 5 |
|---|
| 129 | #define SVCT_VCM_PATH_SEL_MASK 0x1 |
|---|
| 130 | |
|---|
| 131 | #define SVCT_VCM_XPORT_TYPE_BYTE_INDX 2 |
|---|
| 132 | #define SVCT_VCM_XPORT_TYPE_BYTE_NUM 1 |
|---|
| 133 | #define SVCT_VCM_XPORT_TYPE_SHIFT 4 |
|---|
| 134 | #define SVCT_VCM_XPORT_TYPE_MASK 0x1 |
|---|
| 135 | |
|---|
| 136 | #define SVCT_VCM_CHAN_TYPE_BYTE_INDX 2 |
|---|
| 137 | #define SVCT_VCM_CHAN_TYPE_BYTE_NUM 1 |
|---|
| 138 | #define SVCT_VCM_CHAN_TYPE_SHIFT 0 |
|---|
| 139 | #define SVCT_VCM_CHAN_TYPE_MASK 0xf |
|---|
| 140 | |
|---|
| 141 | #define SVCT_VCM_SOURCE_ID_BYTE_INDX 3 |
|---|
| 142 | #define SVCT_VCM_SOURCE_ID_BYTE_NUM 2 |
|---|
| 143 | #define SVCT_VCM_SOURCE_ID_SHIFT 0 |
|---|
| 144 | #define SVCT_VCM_SOURCE_ID_MASK 0xffff |
|---|
| 145 | |
|---|
| 146 | #define SVCT_VCM_CDS_REF_BYTE_INDX 5 |
|---|
| 147 | #define SVCT_VCM_CDS_REF_BYTE_NUM 1 |
|---|
| 148 | #define SVCT_VCM_CDS_REF_SHIFT 0 |
|---|
| 149 | #define SVCT_VCM_CDS_REF_MASK 0xff |
|---|
| 150 | |
|---|
| 151 | #define SVCT_VCM_PROG_NUM_BYTE_INDX 6 |
|---|
| 152 | #define SVCT_VCM_PROG_NUM_BYTE_NUM 2 |
|---|
| 153 | #define SVCT_VCM_PROG_NUM_SHIFT 0 |
|---|
| 154 | #define SVCT_VCM_PROG_NUM_MASK 0xffff |
|---|
| 155 | |
|---|
| 156 | #define SVCT_VCM_MMS_REF_BYTE_INDX 8 |
|---|
| 157 | #define SVCT_VCM_MMS_REF_BYTE_NUM 1 |
|---|
| 158 | #define SVCT_VCM_MMS_REF_SHIFT 0 |
|---|
| 159 | #define SVCT_VCM_MMS_REF_MASK 0xff |
|---|
| 160 | |
|---|
| 161 | #define SVCT_VCM_SCRAMBLED_BYTE_INDX 6 |
|---|
| 162 | #define SVCT_VCM_SCRAMBLED_BYTE_NUM 1 |
|---|
| 163 | #define SVCT_VCM_SCRAMBLED_SHIFT 7 |
|---|
| 164 | #define SVCT_VCM_SCRAMBLED_MASK 0x1 |
|---|
| 165 | |
|---|
| 166 | #define SVCT_VCM_VIDEO_STANDARD_BYTE_INDX 6 |
|---|
| 167 | #define SVCT_VCM_VIDEO_STANDARD_BYTE_NUM 1 |
|---|
| 168 | #define SVCT_VCM_VIDEO_STANDARD_SHIFT 0 |
|---|
| 169 | #define SVCT_VCM_VIDEO_STANDARD_MASK 0xf |
|---|
| 170 | |
|---|
| 171 | #define SVCT_VCM_DESC_CNT_BYTE_INDX 9 |
|---|
| 172 | #define SVCT_VCM_DESC_CNT_BYTE_NUM 1 |
|---|
| 173 | #define SVCT_VCM_DESC_CNT_SHIFT 0 |
|---|
| 174 | #define SVCT_VCM_DESC_CNT_MASK 0xff |
|---|
| 175 | |
|---|
| 176 | |
|---|
| 177 | typedef struct SI_SVCT_VCM_Callback_t |
|---|
| 178 | { |
|---|
| 179 | void (*cb)(SI_SVCT_VCM_CHANNEL *channel, void *data); |
|---|
| 180 | void * data; |
|---|
| 181 | }SI_SVCT_VCM_Callback_t; |
|---|
| 182 | |
|---|
| 183 | |
|---|
| 184 | #ifdef __cplusplus |
|---|
| 185 | extern "C" { |
|---|
| 186 | #endif |
|---|
| 187 | |
|---|
| 188 | void SI_SVCT_VCM_Init(SI_SVCT_VCM_Callback_t *cb); |
|---|
| 189 | unsigned char * SI_SVCT_VCM_Pointer (unsigned char *table); |
|---|
| 190 | SI_RET_CODE SI_SVCT_VCM_Parse (unsigned char *table); |
|---|
| 191 | SI_RET_CODE SI_SVCT_VCM_Free_List(void); |
|---|
| 192 | |
|---|
| 193 | #ifdef __cplusplus |
|---|
| 194 | } |
|---|
| 195 | #endif |
|---|
| 196 | |
|---|
| 197 | |
|---|
| 198 | #endif |
|---|