source: svn/newcon3bcm2_21bu/BSEAV/lib/scte_127/scte_127.h @ 46

Last change on this file since 46 was 46, checked in by megakiss, 11 years ago

459Mhz로 OTC 주파수 변경

  • Property svn:executable set to *
File size: 4.7 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2008, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile:  $
11 * $brcm_Revision:  $
12 * $brcm_Date: $
13 *
14 * Module Description:
15 *
16 * Revision History:
17 *
18 * $brcm_Log:  $
19 *
20 ***************************************************************************/
21#ifndef SCTE_127_H__
22#define SCTE_127_H__
23
24#include "bos.h"
25#include "genericlist.h"
26
27#define SCTE_127_NUM_DATA_BUF                   70      /* for amol and gs, 60 for 1 second of data, plus extra buffer for jittering */
28
29/* Data Service Identifier Extersions defines */
30#define SCTE_127_DATA_ID                        0x99    /* SCTE 127 data id */
31
32#define SCTE_127_DATA_SERVICE_ID_AMOL           0xFE    /* AMOL 48/96 */
33#define SCTE_127_DATA_SERVICE_ID_NABTS          0xFC    /* North American Basic Teletext Specification */
34#define SCTE_127_DATA_SERVICE_ID_TVG2X          0xFB
35#define SCTE_127_DATA_SERVICE_ID_CP             0xF9    /* copy protection */
36#define SCTE_127_DATA_SERVICE_ID_VITC           0xF7    /* Vertical Interval Time Code */
37
38/* Data Unit Identifier defines */
39#define SCTE_127_DATA_UNIT_ID_AMOL48            0xD0    /* AMOL 48 */
40#define SCTE_127_DATA_UNIT_ID_AMOL96            0xD1    /* AMOL 96 */
41#define SCTE_127_DATA_UNIT_ID_NABTS             0xD5
42#define SCTE_127_DATA_UNIT_ID_TVG2X             0xD6
43#define SCTE_127_DATA_UNIT_ID_CP                0xD7    /* copy protection */
44#define SCTE_127_DATA_UNIT_ID_VITC              0xD9
45
46#define SCTE_127_DATA_UNIT_ID_AMOL48_LEN        7
47#define SCTE_127_DATA_UNIT_ID_AMOL96_LEN        12
48#define SCTE_127_DATA_UNIT_ID_NABTS_LEN         35
49#define SCTE_127_DATA_UNIT_ID_TVG2X_LEN         5
50#define SCTE_127_DATA_UNIT_ID_CP_LEN            2
51#define SCTE_127_DATA_UNIT_ID_VITC_LEN          9
52
53typedef struct {
54        LINKS_T         links;
55
56        unsigned char field_parity;
57        unsigned char line_offset;
58
59        union {
60                unsigned char   amol48[6];      /* 41 bits + 7 bits padding (SOM) */
61                unsigned char   amol96[12];     /* 88 bits + 8 bits SOM */
62                /* enable it only if we support NABTS, to save space */
63#ifdef  SCTE_127_NABTS
64                unsigned char   nabts[33];      /* 264 bits = 33 bytes */
65#endif
66                unsigned int    tvg2x;          /* 32 bits */
67                unsigned char   vitc[8];        /* 64 bits */
68                unsigned char   cp[1];          /* 2 bits cp_data_block, 6 bits reserved */
69        } u;
70       
71        int     data_unit_type;                 /* data type, contained in the  */
72        int     amol_type;                      /* AMOL TYPE if data_unit_type = AMOL,  */     
73} scte_127_data, *pscte_127_data;
74
75#define SCTE_127_DATA_UNIT_FIELD_PARITY(h)      (((h) >> 5) & 0x1)
76#define SCTE_127_DATA_UNIT_LINE_OFFSET(h)       ((h) & 0x1f)
77
78#define SCTE_127_DATA_NABTS_FRAMING_CODE        0xE7
79
80#define SCTE_127_MAX_FIELD                      2       /* even and odd field */
81#define SCTE_127_MAX_AMOL_DATA                  2       /* 2 lines */
82#define SCTE_127_MAX_GS_DATA                    5       /* 5 lines */
83
84void scte_bit_swap(unsigned char *pbuf, int size);
85int scte_pes_data_field(unsigned char *packet, int size, scte_127_data *data, int *unit_type);
86
87typedef struct {
88        b_mutex_t       mutex;                          /* mutex for list handling */
89        LIST_T          amol_list[SCTE_127_MAX_FIELD];  /* amol data list */
90        LIST_T          gs_list[SCTE_127_MAX_FIELD];    /* gs data list */
91        LIST_T          free_list;                      /* free data buffer list */
92        int             amol_count[SCTE_127_MAX_FIELD]; /* amol data count */
93        int             gs_count[SCTE_127_MAX_FIELD];   /* amol data count */
94        scte_127_data   data[SCTE_127_NUM_DATA_BUF];    /* total data buffers used for SCTE 127 */
95} scte_127_handle, *pscte_127_handle;
96
97pscte_127_handle scte_127_get_handle(void);
98pscte_127_handle scte_127_init(void);
99void scte_127_deinit(pscte_127_handle pscte_127);
100void scte_127_enable(pscte_127_handle pscte_127, int enable);
101
102int scte_127_queue_buffer(pscte_127_handle pscte_127, pscte_127_data pdata);
103int scte_127_queue_data(pscte_127_handle pscte_127, pscte_127_data data);
104int scte_127_feed_data_buf(pscte_127_handle pscte_127, int parity);
105int scte_127_pes_data_field_parser(pscte_127_handle pscte_127, unsigned char *pdata_id, int size);
106int scte_127_reset(pscte_127_handle pscte_127);
107int scte_127_has_data(pscte_127_handle pscte_127, int parity);
108
109#ifdef HAS_VBI
110int scte_127_queue_buffer_isr(pscte_127_handle pscte_127, pscte_127_data pdata);
111pscte_127_data scte_127_get_amol_data_buf_isr(pscte_127_handle pscte_127, int parity);
112bool scte_127_get_amol_data_buf_isr_ex(pscte_127_handle pscte_127, int parity, int *type, unsigned char *amol_data);
113int scte_127_get_gs_data_buf_isr(pscte_127_handle pscte_127, int parity,  int *line_offset, int *gs_count, uint32_t *gs_data);
114int scte_127_set_gs_line_mask(pscte_127_handle pscte_127, int parity, unsigned int base, unsigned int line_mask);
115#endif  // HAS_VBI
116
117
118#endif /* SCTE_127_H__ */
Note: See TracBrowser for help on using the repository browser.