source: svn/trunk/newcon3bcm2_21bu/BSEAV/lib/scte65/svct/si_svct_vcm.h

Last change on this file was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 5.8 KB
Line 
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
31typedef enum
32{
33        MPEG2_XPORT,
34        NON_MPEG2_XPORT,
35} SI_SVCT_VCM_XPORT_TYPE;
36
37typedef enum
38{
39        NORMAL_CHAN,
40        HIDDEN_CHAN,
41} SI_SVCT_VCM_SERV_TYPE;
42
43typedef enum
44{
45        NTSC,
46        PAL_625,
47        PAL_525,
48        SECAM,
49        MAC,
50} SI_SVCT_VCM_VIDEO_STANDARD;
51
52typedef struct
53{
54        unsigned short prog_num;
55        unsigned char MMS_reference;
56} SVCT_VCM_MPEG_PROPERTY;
57
58typedef 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
68typedef 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
96SI_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
177typedef 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
185extern "C" {
186#endif
187
188void SI_SVCT_VCM_Init(SI_SVCT_VCM_Callback_t *cb);
189unsigned char * SI_SVCT_VCM_Pointer (unsigned char *table);
190SI_RET_CODE SI_SVCT_VCM_Parse (unsigned char *table);
191SI_RET_CODE SI_SVCT_VCM_Free_List(void);
192
193#ifdef __cplusplus
194}
195#endif
196
197
198#endif
Note: See TracBrowser for help on using the repository browser.