source: svn/newcon3bcm2_21bu/nexus/modules/display/7552/include/nexus_display_vbi.h

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 18.2 KB
Line 
1/***************************************************************************
2 *     (c)2007-2011 Broadcom Corporation
3 *
4 *  This program is the proprietary software of Broadcom Corporation and/or its licensors,
5 *  and may only be used, duplicated, modified or distributed pursuant to the terms and
6 *  conditions of a separate, written license agreement executed between you and Broadcom
7 *  (an "Authorized License").  Except as set forth in an Authorized License, Broadcom grants
8 *  no license (express or implied), right to use, or waiver of any kind with respect to the
9 *  Software, and Broadcom expressly reserves all rights in and to the Software and all
10 *  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU
11 *  HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY
12 *  NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE.
13 *
14 *  Except as expressly set forth in the Authorized License,
15 *
16 *  1.     This program, including its structure, sequence and organization, constitutes the valuable trade
17 *  secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof,
18 *  and to use this information only in connection with your use of Broadcom integrated circuit products.
19 *
20 *  2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
21 *  AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
22 *  WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
23 *  THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES
24 *  OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE,
25 *  LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION
26 *  OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF
27 *  USE OR PERFORMANCE OF THE SOFTWARE.
28 *
29 *  3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS
30 *  LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR
31 *  EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR
32 *  USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF
33 *  THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT
34 *  ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE
35 *  LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF
36 *  ANY LIMITED REMEDY.
37 *
38 * $brcm_Workfile: nexus_display_vbi.h $
39 * $brcm_Revision: 18 $
40 * $brcm_Date: 2/25/11 4:37p $
41 *
42 * Module Description:
43 *
44 * Revision History:
45 *
46 * $brcm_Log: /nexus/modules/display/7400/include/nexus_display_vbi.h $
47 *
48 * 18   2/25/11 4:37p erickson
49 * SW7422-255: add AMOL support
50 *
51 * 17   12/27/10 9:36a erickson
52 * SW7420-1285: add null_allowed attribute
53 *
54 * 16   10/18/10 12:17p erickson
55 * SWDEPRECATED-2425: update comments
56 *
57 * 15   4/6/10 10:17a erickson
58 * SW7405-4171: revise NEXUS_DisplayDcsType. add eOn1, eOn2, eOn2. fix
59 *  naming convention issues.
60 *
61 * 14   2/20/09 4:03p erickson
62 * PR52361: fix documentation for NEXUS_Display_SetCgms
63 *
64 * 13   11/21/08 12:53p erickson
65 * PR43413: added vps decode
66 *
67 * 12   10/16/08 12:26p erickson
68 * PR47070: rework NEXUS_GemStarData structure
69 *
70 * 11   10/16/08 11:09a erickson
71 * PR47892: added NEXUS_DisplayVbiSettings.gemStar settings
72 *
73 * 10   6/3/08 9:39a ahulse
74 * PR43266: Add support for DCS in nexus
75 *
76 * 9   4/30/08 11:14a erickson
77 * PR41371: add CGMS-B support
78 *
79 * 8   3/25/08 4:41p erickson
80 * PR38682: remove bad [out] comments
81 *
82 * 7   2/7/08 2:31p erickson
83 * PR38701: added macrovision implementation with appropriate #deifne
84 *
85 * 6   2/6/08 12:45p vsilyaev
86 * PR 38682: Added attributes for the linux/kernel proxy mode
87 *
88 * 5   2/5/08 10:11a erickson
89 * PR38679: change SetVps, update comments
90 *
91 * 4   2/1/08 3:20p erickson
92 * PR38679: add vbi support
93 *
94 * 3   1/23/08 9:21p vobadm
95 * PR35457: update docs
96 *
97 * 2   1/23/08 2:39p erickson
98 * PR35457: update docs
99 *
100 * 1   1/18/08 2:20p jgarrett
101 * PR 38808: Merging to main branch
102 *
103 * Nexus_Devel/2   1/15/08 10:51a vsilyaev
104 * PR 38701: Added macrovision API
105 *
106 * Nexus_Devel/1   1/11/08 1:51p erickson
107 * PR38679: add vbi read/write api's
108 *
109 **************************************************************************/
110#ifndef NEXUS_DISPLAY_VBI_H__
111#define NEXUS_DISPLAY_VBI_H__
112
113#include "nexus_display.h"
114#include "nexus_vbi.h"
115
116#ifdef __cplusplus
117extern "C" {
118#endif
119
120/*=****************************************
121These API's control routing of VBI information to a VEC.
122
123Data can be automatically routing from a video input directly to the VEC. Once the app has made the connection, no further interaction is needed.
124
125Data can also be manually written to the VEC.
126******************************************/
127
128/*
129Summary:
130Macrovision types used in NEXUS_Display_SetMacrovision
131*/
132typedef enum NEXUS_DisplayMacrovisionType
133{
134    NEXUS_DisplayMacrovisionType_eNone,         /* No macrovision on outputs. */
135    NEXUS_DisplayMacrovisionType_eAgcOnly,      /* AGC only. */
136    NEXUS_DisplayMacrovisionType_eAgc2Lines,    /* AGC + 2 Line color stripe. */
137    NEXUS_DisplayMacrovisionType_eAgc4Lines,    /* AGC + 4 Line color stripe. */
138    NEXUS_DisplayMacrovisionType_eCustom,       /* User-provided tables. */
139    NEXUS_DisplayMacrovisionType_eAgcOnlyRgb,   /* PAL MV cert test AGC only with MV on RGB. */
140    NEXUS_DisplayMacrovisionType_eAgc2LinesRgb, /* NTSC MV cert test AGC + 2 Line color stripe, with MV on RGB. */
141    NEXUS_DisplayMacrovisionType_eAgc4LinesRgb, /* NTSC MV cert test AGC + 4 Line color stripe. */
142    NEXUS_DisplayMacrovisionType_eTest01,       /* MV certification test 01. */
143    NEXUS_DisplayMacrovisionType_eTest02,       /* MV certification test 02. */
144    NEXUS_DisplayMacrovisionType_eMax           /* MV certification test 02. */
145} NEXUS_DisplayMacrovisionType;
146
147/*
148Summary:
149Macrovision table structure used in NEXUS_Display_SetMacrovision
150
151Description:
152See magnum/portinginterface/vdc/BCHP_CHIP/bvdc_macrovision.h for the source of the numbers for this structure.
153*/
154typedef struct NEXUS_DisplayMacrovisionTables
155{
156    uint8_t cpcTable[2];
157    uint8_t cpsTable[33];
158} NEXUS_DisplayMacrovisionTables;
159
160/*
161Summary:
162DCS types used in NEXUS_Display_SetDcs
163*/
164typedef enum NEXUS_DisplayDcsType
165{
166    NEXUS_DisplayDcsType_off, /* deprecated. use NEXUS_DisplayDcsType_eOff instead. */
167    NEXUS_DisplayDcsType_eOff = NEXUS_DisplayDcsType_off,
168    NEXUS_DisplayDcsType_on,  /* deprecated. use NEXUS_DisplayDcsType_eOn1 instead. */
169    NEXUS_DisplayDcsType_eOn1 = NEXUS_DisplayDcsType_on,
170    NEXUS_DisplayDcsType_eOn2,
171    NEXUS_DisplayDcsType_eOn3,
172    NEXUS_DisplayDcsType_eMax
173} NEXUS_DisplayDcsType;
174
175/**
176Summary:
177VBI encoding control for the Display
178
179Description:
180If you want to have automatic routing from the VideoInput to the Display, you must set both xxxEnabled to true and xxxRouting to true.
181For VideoDecoder inputs, enabling routing will automatically enable userdata parsing.
182
183NEXUS_Display_WriteXxx functions are used for streaming VBI data (i.e. data that the VBI encoder should not repeat for each field.)
184NEXUS_Display_SetXxx functions are used for non-streaming VBI data (i.e. data that the VBI encoder should repeat for each field.)
185
186If you want to use Write/Set functions, you must set xxxEnabled to true and the corresponding xxxRouting to false.
187If your app calls both Write/Set as well as enables automatic routing, there will be a collision of data. Results are undefined.
188
189For displays that are not connected to VEC's (e.g. DVO), this interface does nothing.
190**/
191typedef struct NEXUS_DisplayVbiSettings
192{
193    NEXUS_VideoInput vbiSource;  /* Select which source is used for automatic routing.
194                                    This feature was added for PIP systems (i.e. where they may be more than one source assigned to a display.)
195                                    However, you must set this even if you are a single window system. */
196
197    bool teletextRouting;        /* Automatically route teletext data from vbiSource to this display. teletextEnabled must also be true. */
198    bool closedCaptionRouting;   /* Automatically route closed caption data from vbiSource to this display. closedCaptionEnabled must also be true. */
199    bool wssRouting;             /* Automatically route wss data from vbiSource to this display. wssEnabled must also be true. */
200    bool cgmsRouting;            /* Automatically route cgms data from vbiSource to this display. cgmsEnabled must also be true. */
201    bool vpsRouting;             /* Automatically route vps data from vbiSource to this display. vpsEnabled must also be true. */
202
203    bool teletextEnabled;           /* Encode teletext data in the VEC */
204    bool closedCaptionEnabled;      /* Encode closed caption data in the VEC */
205    bool wssEnabled;                /* Encode WSS data in the VEC */
206    bool cgmsEnabled;               /* Encode CGMS data in the VEC */
207    bool vpsEnabled;                /* Encode VPS data in the VEC. Only supported for PAL and SECAM. */
208    bool gemStarEnabled;            /* Encode Gemstar data to the VEC. */
209    bool amolEnabled;               /* Encode AMOL data to the VEC. */
210
211    bool macrovisionEnabled;        /* Enable macrovision in the VEC */
212    bool dcsEnabled;                /* Enable dcs in the VEC */
213
214    struct {
215        unsigned baseLineTop;       /* The video line number corresponding to the first bit in the following bit mask. */
216        uint16_t lineMaskTop;       /* Bit mask that indicates which video lines shall carry Gemstar data in top video fields. */
217        unsigned baseLineBottom;    /* The video line number corresponding to the first bit in the following bit mask. Must be greater than 256. */
218        uint16_t lineMaskBottom;    /* Bit mask that indicates which video lines shall carry Gemstar data in bottom video fields. */
219    } gemStar;
220
221    struct {
222        NEXUS_AmolType type;
223    } amol;
224} NEXUS_DisplayVbiSettings;
225
226/**
227Summary:
228Get current VBI settings
229**/
230void NEXUS_Display_GetVbiSettings(
231    NEXUS_DisplayHandle handle,
232    NEXUS_DisplayVbiSettings *pSettings /* [out] */
233    );
234
235/**
236Summary:
237Set new VBI settings
238**/
239NEXUS_Error NEXUS_Display_SetVbiSettings(
240    NEXUS_DisplayHandle handle,
241    const NEXUS_DisplayVbiSettings *pSettings
242    );
243
244/**
245Summary:
246Write an array of lines of teletext data for output on the VEC
247
248Description:
249NEXUS_TeletextLine.lineNumber allows multiple fields of teletext data to be sent in one call.
250If the lineNumber for a NEXUS_TeletextLine is less than the lineNumber of the previous line, then that data
251is transmitted on the next field.
252
253This function is non-blocking. It will queue as many lines as possible. Check pNumLinesWritten
254for the number consumed. The app must call this function again for any values that were not consumed.
255If Nexus is able to send one line on a field, it will send every line for that field.
256
257One set of NEXUS_TeletextLines will be consumed with every outgoing field or frame. Nexus
258does not provide a callback when more space in available. The application should pace itself.
259
260Every call to NEXUS_Display_WriteTeletext will begin writing lines to a new field.
261
262If you call this, NEXUS_DisplayVbiSettings.teletextRouting should be false and NEXUS_DisplayVbiSettings.teletextEnabled should be true.
263**/
264NEXUS_Error NEXUS_Display_WriteTeletext(
265    NEXUS_DisplayHandle handle,
266    const NEXUS_TeletextLine *pLines,   /* attr{nelem=numLines;reserved=4} array of NEXUS_TeletextLine entries to output */
267    size_t numLines,                    /* number of NEXUS_TeletextLine entries pointed to by pLines */
268    size_t *pNumLinesWritten            /* [out] number of NEXUS_TeletextLine entries written */
269    );
270
271/**
272Summary:
273Write an array of closed caption data for output on the VEC
274
275Description:
276This function is non-blocking. It will queue as many values as possible. Check pNumEntriesWritten
277for the number consumed. The app must call this function again for any values that were not consumed.
278
279One NEXUS_ClosedCaptionData structure will be consumed with every outgoing field or frame. Nexus
280does not provide a callback when more space in available. The application should pace itself.
281
282If you call this, NEXUS_DisplayVbiSettings.closedCaptionRouting should be false and NEXUS_DisplayVbiSettings.closedCaptionEnabled should be true.
283**/
284NEXUS_Error NEXUS_Display_WriteClosedCaption(
285    NEXUS_DisplayHandle handle,
286    const NEXUS_ClosedCaptionData *pEntries,    /* attr{nelem=numEntries;reserved=4} array of NEXUS_ClosedCaptionData entries to output */
287    size_t numEntries,                          /* number of NEXUS_ClosedCaptionData entries pointed to by pEntries */
288    size_t *pNumEntriesWritten                  /* [out] number of NEXUS_ClosedCaptionData entries written */
289    );
290
291/**
292Summary:
293Write an array of GemStar data for output on the VEC
294
295Description:
296This function is non-blocking. It will queue as many values as possible. Check pNumEntriesWritten
297for the number consumed. The app must call this function again for any values that were not consumed.
298
299One NEXUS_GemStarData structure will be consumed with every outgoing field or frame. Nexus
300does not provide a callback when more space in available. The application should pace itself.
301
302If you call this, NEXUS_DisplayVbiSettings.gemStarEnabled should be true.
303**/
304NEXUS_Error NEXUS_Display_WriteGemStar(
305    NEXUS_DisplayHandle handle,
306    const NEXUS_GemStarData *pEntries,          /* array of NEXUS_GemStarData entries to output */
307    size_t numEntries,                          /* number of NEXUS_GemStarData entries pointed to by pEntries */
308    size_t *pNumEntriesWritten                  /* [out] number of NEXUS_GemStarData entries written */
309    );
310
311/**
312Summary:
313Set a new WSS value to be output on the VEC
314
315Description:
316Calling this function once will result in a persistent WSS value being encoded on all top fields or frames
317coming from this display.
318
319For each bit of WSS data, one of the following sequences is output, depending on the value of the bit:
3200 = 000 111
3211 = 111 000
322These sequences are output one bit every WSS (5 MHz) cycle (i.e. 6 WSS cycles for every bit of WSS data).
323
324If you call this, NEXUS_DisplayVbiSettings.wssRouting should be false and NEXUS_DisplayVbiSettings.wssEnabled should be true.
325**/
326NEXUS_Error NEXUS_Display_SetWss(
327    NEXUS_DisplayHandle handle,
328    uint16_t wssData
329    );
330
331/**
332Summary:
333Set a new CGMS-A value to be output on the VEC
334
335Description:
336Calling this function once will result in a persistent CGMS-A value being encoded on all top and bottom fields or frames coming from this display.
337
338The data field is defined as follows:
339
34031:10 Reserved - Must be zero.
3419:8 COPY_CONTROL (WORD2 part2) Copy control:
342    0 = NO_CONDITION, Copy valid with no condition.
343    1 = FALSE_SYNC_PLUS2, False sync pulse plus two lines of opposite burst insertion.
344    2 = FALSE_SYNC, False sync pulse applied.
345    3 = FALSE_SYNC_PLUS4, False sync pulse plus four lines of opposite burst insertion.
34607:06 CGMS (WORD2 part1) CGMS:
347    0 = NO_CONDITION, Copy enable with no condition.
348    1 = ONE_GENERATION, Copy enabled only for one generation.
349    2 = reserved
350    3 = PROHIBITED, Copy prohibited.
35105:02 FORMAT (WORD1) WORD2 format:
352    0 = CGMS_A, CGMS-A information.
353    15 = NO_CGMS_A, No information.
35401:00 RATIO (WORD0) Aspect-ratio information:
355    0 = AR_4_3_VIDEO, Aspect ratio 4:3 video signal.
356    1 = AR_16_9_VIDEO, Aspect ratio 16:9 video signal.
357    2 = AR_4_3_LETTERBOX, Aspect ratio 4:3 letterbox signal.
358    3 = reserved
359
360See chip's register database, CGMSAE_PRIM_Top_Data register, for more details on data field.
361
362If you call this, NEXUS_DisplayVbiSettings.cgmsRouting should be false and NEXUS_DisplayVbiSettings.cgmsEnabled should be true.
363**/
364NEXUS_Error NEXUS_Display_SetCgms(
365    NEXUS_DisplayHandle handle,
366    uint32_t cgmsData
367    );
368
369/**
370Summary:
371Set CGMS-B data
372
373Description:
374This would typically be an array of 5 uint32_t's.
375
376If you call this, NEXUS_DisplayVbiSettings.cgmsRouting should be false and NEXUS_DisplayVbiSettings.cgmsEnabled should be true.
377**/
378NEXUS_Error NEXUS_Display_SetCgmsB(
379    NEXUS_DisplayHandle handle,
380    const uint32_t *pCgmsData, /* attr{nelem=size} */
381    unsigned size
382    );
383
384/**
385Summary:
386Set a new VPS value to be output on the VEC
387
388Description:
389Calling this function once will result in persistent VPS values being encoded on all top fields or frames
390coming from this display.
391
392If you call this, NEXUS_DisplayVbiSettings.vpsRouting should be false and NEXUS_DisplayVbiSettings.vpsEnabled should be true.
393**/
394NEXUS_Error NEXUS_Display_SetVps(
395    NEXUS_DisplayHandle handle,
396    const NEXUS_VpsData *pData
397    );
398
399/**
400Summary:
401Set a new macrovision value to be output on the VEC
402
403Description:
404Macrovision code is not included or enabled by default. If you have a Macrovision license and have
405obtained the necessary source code, then compile with BVDC_MACROVISION=y set your compilation environment.
406**/
407NEXUS_Error NEXUS_Display_SetMacrovision(
408    NEXUS_DisplayHandle handle,
409    NEXUS_DisplayMacrovisionType type,
410    const NEXUS_DisplayMacrovisionTables *pTable  /* attr{null_allowed=y} Optional macrovision tables if type == NEXUS_DisplayMacrovisionType_eCustom. */
411    );
412
413/**
414Summary:
415Set a new dcs value to be output on the VEC
416
417Description:
418DCS code is not included or enabled by default. If you have a DCS license and have obtained
419the necessary source code, then compile with BVDC_DCS=y set in your compilation environment.
420**/
421NEXUS_Error NEXUS_Display_SetDcs(
422    NEXUS_DisplayHandle handle,
423    NEXUS_DisplayDcsType type
424    );
425
426/**
427Summary:
428Write an array of AMOL for output on the VEC
429
430Description:
431This function is non-blocking. It will queue as many values as possible. Check pNumEntriesWritten
432for the number consumed. The app must call this function again for any values that were not consumed.
433
434One NEXUS_AmolData structure will be consumed with every outgoing field or frame. Nexus
435does not provide a callback when more space in available. The application should pace itself.
436
437If you call this, NEXUS_DisplayVbiSettings.amolEnabled should be true.
438**/
439NEXUS_Error NEXUS_Display_WriteAmol(
440    NEXUS_DisplayHandle handle,
441    const NEXUS_AmolData *pEntries,    /* attr{nelem=numEntries;reserved=4} array of NEXUS_AmolData entries to output */
442    size_t numEntries,                 /* number of NEXUS_AmolData entries pointed to by pEntries */
443    size_t *pNumEntriesWritten         /* [out] number of NEXUS_AmolData entries written */
444    );
445
446#ifdef __cplusplus
447}
448#endif
449
450#endif /* NEXUS_DISPLAY_VBI_H__ */
Note: See TracBrowser for help on using the repository browser.