source: svn/trunk/newcon3bcm2_21bu/magnum/commonutils/vdb/3548/B1/bvdb.h

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

first commit

  • Property svn:executable set to *
File size: 72.0 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2003-2010, 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: bvdb.h $
11 * $brcm_Revision: Hydra_Software_Devel/63 $
12 * $brcm_Date: 8/27/10 12:57p $
13 *
14 * Module Description:
15 *   The VDB (Video Usage Modes Database) is a database of all possible video
16 *   usage modes for a given chipset. This was created to support VDC's
17 *   new source pending feature that allows applications to configure the
18 *   BVN according to their requirements.
19 *
20 *   Sample use:
21 *
22 *   BVDB_Handle *hVdb;
23 *   uint32_t ulEntries;
24 *   BVDB_UsageMode stUsageMode;
25 *   const BVDB_RtsTable *pstRtsTbl = NULL;
26 *
27     // Create VDB
28 *   BVDB_CreateVdb(&hVdb, &ulEntries);
29 *
30 *   // Get a usage mode given the following parameters
31 *  strcpy(stUsageMode.acId, "1"); configuration 1
32 *  stUsageMode.eInputFormatGroup = BVDB_InputFormatGroup_eNTSC;
33 *  stUsageMode.eDisplay = BVDB_Display_ePrimary60;
34 *  stUsageMode.eWindow = BVDB_Window_eMain;
35 *  stUsageMode.eIput = BVDB_Input_eComponent;
36 *  stUsageMode.eOsd = BVDB_Osd_e1920_1080p_32bpp
37 *  stUsageMode.stDisplayMode = 0x3f; "all_FULL_modes"
38 *
39 *  err = BVDB_GetVdbEntry(hVdb, &stUsageMode);
40 *  if (err != BERR_SUCCESS)
41 *  {
42 *      BDBG_ERR(("Usage mode with given paramters not found"));
43 *  }
44 *
45 *  // Get the RTS table associated with the obtained usage mode
46 *  pstRtsTbl = BVDB_GetRtsTable(hVdb, stUsageMode.eRtsSet);
47 *
48 *
49 *  // Destroy VDB
50 *  BVDB_DestroyVdb(hVdb);
51 *
52 *
53 *
54 * Revision History:
55 *
56 * $brcm_Log: /magnum/commonutils/vdb/3548/B0/bvdb.h $
57 *
58 * Hydra_Software_Devel/63   8/27/10 12:57p vineetr
59 * SW3548-3006: Created config23 based on new requirements from customer.
60 *
61 * Hydra_Software_Devel/62   7/13/10 5:11p vineetr
62 * SW3548-2987: Preliminary changes to support new 1080p@30Hz format. The
63 * final update to the usage modes in the VDB table are still pending,
64 * since I am waiting for the RTS to be re-analyzed. Until then, these
65 * changes are 'harmless'.
66 *
67 * Hydra_Software_Devel/57   4/21/10 5:06p jerrylim
68 * SW3548-2888: updated config19 to support smooth scaling. The changes
69 * were maded based on 3548_Usage_Modes.xls Rev.2.94
70 *
71 * Hydra_Software_Devel/56   4/1/10 3:51p jerrylim
72 * SW3548-2802: added config 19. The change was made based on
73 * 3548_Usage_Modes.xls Rev. 2.91
74 *
75 * Hydra_Software_Devel/55   3/12/10 10:41a jerrylim
76 * SW3548-2796: Added config20, but not yet completed. The change is based
77 * on 3548_Usage_Modes.xls Rev.2.89
78 *
79 * Hydra_Software_Devel/54   2/25/10 3:38p jerrylim
80 * SW3548-2784: Added config 17. The changes were made based on
81 * 3548_Usage_Modes.xls Rev.2.87. Refer to the LG Rushmore EU
82 * questionnaire for more details
83 *
84 * Hydra_Software_Devel/53   2/18/10 5:14p jerrylim
85 * CR3548-905: Completed config 18. The changes were made based on
86 * 3548_Usage_Modes.xls Rev. 2.86
87 *
88 * Hydra_Software_Devel/52   2/12/10 4:16p jerrylim
89 * SW3548-2743, SW3548-2781: Updated config 11 - Added 40Mbps XPT rate,
90 * Used auto scl-cap ordering for the analog RF PBP mode to have more
91 * bandwidth marging
92 *
93 * Hydra_Software_Devel/51   2/1/10 5:22p jerrylim
94 * SW3548-2726: Removed unnecessary usages modes from config 11 and config
95 * 14. It's a clean-up, and doesn't affect operation. The change is based
96 * on 3548_Usage_modes.xls Rev.2.80
97 *
98 * Hydra_Software_Devel/50   1/29/10 4:52p jerrylim
99 * SW3548-2744: Add 3D RTS support to config 2
100 *
101 * Hydra_Software_Devel/49   1/25/10 2:34p jerrylim
102 * SW3548-2725, SW3548-2726: XPT client register settings changed to
103 * support 40Mbps TS rate. 3D RTS settings recalculated based on config14
104 * (It used to be based on config 11.). The changes were made based on
105 * 3548_Usage_Modes.xls Rev.2.76 Jan. 25 2010
106 *
107 * Hydra_Software_Devel/48   1/19/10 8:34p jerrylim
108 * SW3548-2726: Added 3D support to config 14. The changes were made based
109 * on 3548_Usage_Modes.xls Rev.2.74
110 *
111 * Hydra_Software_Devel/47   1/19/10 4:34p jerrylim
112 * SW3548-2726: Added two display formats to support 3D sources
113 *
114 * Hydra_Software_Devel/46   1/13/10 6:02p jerrylim
115 * SW3556-826: Added config 16 - EU model, WXGA display, no PIP, PAL
116 * monitor output, no GFX compression. Config 16 was created based on
117 * 3548_Usage_Modes.xls Rev.2.71 13-Jan-10
118 *
119 * Hydra_Software_Devel/45   1/8/10 11:07a jerrylim
120 * SW3556-825, SW3548-2549: Implemented config 15 to support
121 * Zinwell/Philips US and EU models. The implementation is based on
122 * 3548_Usage_Modes.xls Rev.2.68 on 8-Jan-10
123 *
124 * Hydra_Software_Devel/44   12/24/09 3:08p jerrylim
125 * SW3548-2683: Changed cropping size to 36% in FULL.8 and recalculated
126 * PBP mode. The changes were maded based on 3548_Usage_Modes.xls
127 * Rev.2.65 2009.12.24
128 *
129 * Hydra_Software_Devel/43   12/16/09 5:37p jerrylim
130 * SW3548-2668: bpb will be changed to support none/pbp/pip modes, and
131 * this is a temporary change in order not to break the  build
132 *
133 * Hydra_Software_Devel/42   12/5/09 4:48p jerrylim
134 * SW3556-846, SW3548-2621: Updated config 14. The changes are based on
135 * 3548_Usage_Modes.xls rev2.61
136 *
137 * Hydra_Software_Devel/41   11/20/09 2:17a jerrylim
138 * SW3548-2551: config11 updated. No GFD compression. MNR/BNR on/off
139 * allowed for all sources
140 *
141 * Hydra_Software_Devel/40   11/18/09 6:20p jerrylim
142 * SW3556-850, SW3556-846, SW3556-830, SW3548-2614: unified config 14 with
143 * some problem fixes. Refer to the JIRA items for more details
144 *
145 * Hydra_Software_Devel/39   11/7/09 11:46a jerrylim
146 * SW3556-846: [LG-GP2][BCM3549B2][BCM3556C0] unification of config7(ATSC)
147 * and config14(DVB). Now config 14 covers config 7 meaning that the
148 * projects using config 7 can now use config 14. But there is a known
149 * issue that lines are missing in some VGA signals and refer to SW3556-
150 * 830 for more details, and will be addressed soon
151 *
152 * Hydra_Software_Devel/38   10/13/09 4:50p jessem
153 * SW3548-2139: Applied CAP-SCL only to NTSC/PAL non-MFD PIG modes.
154 * Modified RTS 181 to 194 and added RTS 195 to support this. Removed
155 * forced CAP-SCL and SCL-CAP orientation from certain modes. Modified
156 * ulReserved field for certain NTSC/PAL modes.
157 *
158 * Hydra_Software_Devel/37   10/1/09 1:56p jessem
159 * SW3548-2506, SW3556-818:
160 * 1. Added config 14 support (SW3548-2506).
161 * 2. Added WXGA and XGA support for config 7 (SW3556-818).
162 * 3. Added 1024x768_PC@60 and 1024x768_PC@85 input format groups.
163 * 4. Modified algorithm to search for progressive input formats in
164 * BVDB_GetInputFormatGroup.
165 *
166 * Hydra_Software_Devel/36   9/25/09 11:35a jessem
167 * SW3548-2135: Revised Config 12 per new requirements. See
168 * DTV_Questionnaire_3556_Humax.xls.
169 *
170 * Hydra_Software_Devel/35   9/11/09 2:58p jessem
171 * SW3548-2463, SW3548-2465:
172 * 1. Fixed algorithm for checking 4:3 and 16:9 sources as displayed in
173 * 4:3 or 16:9 panels.
174 * 2. Fixed FULL.12 check to include source's aspect ratio.
175 *
176 * Hydra_Software_Devel/34   8/27/09 3:41p jessem
177 * SW3548-2419:
178 * 1. Added config 13 support.
179 * 2. Added RTS tables 241 to 255 for config 13 support.
180 * 3. Added bJpeg parameter to BVDB_GetInputFormatGroup.
181 * 4. Added BVDB_InputFormatGroup_eJpeg_540 and replaced
182 * BVDB_InputFormatGroup_eJpeg with BVDB_InputFormatGroup_eJpeg_1080.
183 * 5. Added  BVDB_Osd_e960_540p_32bpp.
184 *
185 * Hydra_Software_Devel/33   8/5/09 5:58p jessem
186 * PR 57391, PR 57392:
187 * 1. Added 1920x1080 PC @ 60 Group. Renamed 1024x768_PC@60 Group to
188 * 1366x768_PC@60 Group , 1280x768_PC@85 Group to 1366x768_PC@85 Group.
189 * Added 1920x1080_PC@60 usage mdoes to all configurations (57391).
190 * 2.  Removed and modified certain invalid PC formats (57392).
191 *
192 * Hydra_Software_Devel/32   6/29/09 9:25a jessem
193 * PR 55462, PR 56426: Added config 12.
194 *
195 * Hydra_Software_Devel/31   5/6/09 10:20a jessem
196 * PR 54430: Fixes aply to config 10 only. Added RTS 194. Changed bias for
197 * all PBP and PIG modes to CAP-SCL.
198 *
199 * Hydra_Software_Devel/30   4/27/09 11:18a jessem
200 * PR 51743: Added bPbp parameter to BVDB_GetVideoDisplayMode to
201 * distinguish Main PBP from Main PIG use. RTS needs to distinguish
202 * between Main PBP and Main PIG. See DTV_Questionnaire.xls PIP.2 mode.
203 *
204 * Hydra_Software_Devel/29   4/24/09 2:03p jessem
205 * PR 51709, PR 53506:
206 * 1. Modified Config 9 support and associated RTS tables. Added RTS 177
207 * to 180.
208 * 2. Added config 10 support and RTS tables 201 to 215.
209 * 3. Added struct BVDB_OsdInfo and replaced BVDB_eOsd field in
210 * BVDB_UsageMode with this new struct to accommodate ulReserved values
211 * for OSD.
212 *
213 * Hydra_Software_Devel/28   4/13/09 3:40p jessem
214 * PR 51743: Modified  BVDB_GetDisplaySrcAs and BVDB_GetVideoDisplayModes
215 * to handle source aspect ratio and aspect ratio correction.
216 *
217 * Hydra_Software_Devel/28   4/13/09 3:38p jessem
218 * PR 51743: Modified  BVDB_GetDisplaySrcAs and BVDB_GetVideoDisplayModes
219 * to handle source aspect ratio and aspect ratio correction.
220 *
221 * Hydra_Software_Devel/27   4/3/09 3:46p jessem
222 * PR 50564, PR 52821:
223 * 1. Removed MHEG modes from config 8.
224 * 2. Modified RTS 141 to 149 for config 8.
225 * 3. Modified video display modes for config 8.
226 * 4. Added config 10.
227 *
228 * Hydra_Software_Devel/26   3/24/09 5:49p jessem
229 * PR 53388: Added BFMT_AspectRatio param to BVDB_GetInputFormatGroup.
230 *
231 * Hydra_Software_Devel/25   3/24/09 3:35p jessem
232 * PR 53388: Changed implementation of BVDB_GetInputFormatGroup.
233 *
234 * Hydra_Software_Devel/24   3/19/09 3:43p jessem
235 * PR 53388: Modified BVDB_GetInputFormatGroup()'s parameter list and
236 * implementation.
237 *
238 * Hydra_Software_Devel/23   3/18/09 3:48p jessem
239 * PR 53212: Modified RTS 101 to 107 and added RTS 108 to 111 for config
240 * 6.
241 *
242 * Hydra_Software_Devel/22   3/16/09 2:25p jessem
243 * PR 53212: Removed RTS 52 to 53.
244 *
245 * Hydra_Software_Devel/21   3/6/09 4:14p jessem
246 * PR 52520: Added BVDB_Input parameter to BVDB_GetVideoDisplayMode to
247 * handle monitor out cases.  Corrected ulMinWinHeight field for all
248 * monitor modes for all configs in astConfigVideoDispModeInfo.
249 *
250 * Hydra_Software_Devel/20   3/3/09 4:21p jessem
251 * PR 51472: Added ulReserved field to BVDB_ANR. Added description to
252 * BVDB_Anr and BVDB_Mad. Added RTS 128 to 130 as placeholders.
253 *
254 * Hydra_Software_Devel/19   2/25/09 7:38p jessem
255 * PR 51848, PR 51743, PR 51472: Added heap size info per window per
256 * config. Modified config 2 RTS to accommodate missing FIFO between CMP
257 * and VEC.
258 *
259 * Hydra_Software_Devel/17   2/20/09 4:16p jessem
260 * PR 51709: Added config 9 support. Removed BVDB_GetNumberOfConfigs and
261 * replaced it wth BVDB_ValidateConfigId. Removed BVDB_Handle parameter
262 * from BVDB_GetMemoryAllocation. Added RTS 161 to 177.
263 *
264 * Hydra_Software_Devel/16   2/18/09 2:52p jessem
265 * PR 51848: Increased BVDB_MAX_STRLEN. Added to BVDB_GetNumberOfConfigs
266 * description.
267 *
268 * Hydra_Software_Devel/15   2/18/09 11:48a jessem
269 * PR 51848: Removed references to VDC. Removed global access to config
270 * info. Added helper functions to access these instead.
271 *
272 * Hydra_Software_Devel/14   2/17/09 6:50p jessem
273 * PR 50031, PR 51848: Added config 8. Added BVDB_GetNumberOfConfigs() and
274 * BVDB_GetMemoryAllocation() functions to VDB API and support for these
275 * new functions.
276 *
277 * Hydra_Software_Devel/13   1/29/09 11:00a jessem
278 * PR 50327: Expanded MHEG FULL to MHEG FULL 1 and MHEG FULL 2 and
279 * expanded MHEG PIG to MHEG PIG 1 and MHEG PIG 2. Updated RTS 48 and
280 * added RTS 54 and 55 to support new MHEG modes. Updated config 3 usage
281 * modes to suppot new MHEG modes.
282 *
283 * Hydra_Software_Devel/12   1/27/09 1:54p jessem
284 * PR 51386: Added config 7. Added RTS 121 to
285 * 127 to support config 7.
286 *
287 * Hydra_Software_Devel/11   1/26/09 10:26a jessem
288 * PR 51472: Added RTS 8 and 53.
289 *
290 * Hydra_Software_Devel/10   1/5/09 12:37p jessem
291 * PR 50327: Add features to config 3.
292 *
293 * Hydra_Software_Devel/9   12/12/08 12:33p jessem
294 * PR 50327: Added MON 3 and 4 display modes. Updated description of
295 * BVDB_VideoDisplayModeInfo struct.
296 *
297 * Hydra_Software_Devel/8   12/10/08 5:36p jessem
298 * PR 48974: Added JPEG support and RTS 47 for config 5.
299 *
300 * Hydra_Software_Devel/7   12/9/08 3:58p jessem
301 * PR 49051, PR 46591, PR 48974, PR 49929, PR 49870, PR 49932: Added
302 * support for dot-by-dot in configs 1 and 2. Added config 4 for 1066Mhz
303 * x16. Added config 6. Added features to config 1 and 2.
304 *
305 * Hydra_Software_Devel/6   11/26/08 10:51p jessem
306 * PR 49405, PR 48974: Fixed strcpy coverity issue. Added 1066x16 config
307 * support.
308 *
309 * Hydra_Software_Devel/5   11/19/08 5:56p jessem
310 * PR49427, PR49428, PR49429, PR49431, PR49432, PR49433, PR49434, PR49435,
311 * PR49436, PR49437, PR49438, PR49440: Fixed strcpy and strcat Coverity
312 * issues.
313 *
314 * Hydra_Software_Devel/4   11/13/08 7:07p jessem
315 * PR 48588: Added config 4 for 1080p/1080i/720p switchable output format.
316 *
317 * Hydra_Software_Devel/3   10/21/08 11:00a jessem
318 * PR 46299: Split BVDB_InputFormatGroup_e1400_1050_PC to
319 * BVDB_InputFormatGroup_e1400_1050_75_PC and
320 * BVDB_InputFormatGroup_e1400_1050_60_PC.
321 *
322 * Hydra_Software_Devel/2   10/17/08 2:53p jessem
323 * PR 46299: Replaced old A0 config support with 800MHZ WXGA and 1080P
324 * configs support.
325 *
326 * Hydra_Software_Devel/1   10/2/08 3:48p jessem
327 * PR 46299: Initial version
328 *
329 ***************************************************************************/
330
331
332#ifndef __BVDB_H__
333#define __BVDB_H__
334
335#include "bstd.h"
336#include "berr.h"
337#include "bfmt.h"
338#include "bpxl.h"
339
340#include "blst_circleq.h"
341
342#ifdef __cplusplus
343extern "C" {
344#endif
345
346/************************* Module Overview ********************************
347The Video Usage Modes Database (VDB) intends to capture all the BVN and RTS
348information found in the usage modes spreadsheet and put these in a form
349that can be used readily by an application.
350***************************************************************************/
351
352/* helper macros */
353#define BVDB_DISPLAY_MODE_FULL_1_MASK          0x1
354#define BVDB_DISPLAY_MODE_FULL_2_MASK          0x2
355#define BVDB_DISPLAY_MODE_FULL_3_MASK          0x4
356#define BVDB_DISPLAY_MODE_FULL_4_MASK          0x8
357#define BVDB_DISPLAY_MODE_FULL_5_MASK          0x10
358#define BVDB_DISPLAY_MODE_FULL_6_MASK          0x20
359#define BVDB_DISPLAY_MODE_FULL_7_MASK          0x40   /* Dot-by-Dot */
360#define BVDB_DISPLAY_MODE_FULL_8_MASK          0x80
361#define BVDB_DISPLAY_MODE_FULL_9_MASK          0x100
362#define BVDB_DISPLAY_MODE_FULL_10_MASK         0x200
363#define BVDB_DISPLAY_MODE_FULL_11_MASK         0x400
364#define BVDB_DISPLAY_MODE_PIG_1_MASK           0x800
365#define BVDB_DISPLAY_MODE_PIG_2_MASK           0x1000
366#define BVDB_DISPLAY_MODE_PIG_3_MASK           0x2000
367#define BVDB_DISPLAY_MODE_PIG_4_MASK           0x4000
368#define BVDB_DISPLAY_MODE_PIP_1_MASK           0x8000
369#define BVDB_DISPLAY_MODE_PIP_2_MASK           0x10000 /* PBP */
370#define BVDB_DISPLAY_MODE_PIP_3_MASK           0x20000
371#define BVDB_DISPLAY_MODE_MON_1_MASK           0x40000
372#define BVDB_DISPLAY_MODE_MON_2_MASK           0x80000
373#define BVDB_DISPLAY_MODE_MON_3_MASK           0x100000
374#define BVDB_DISPLAY_MODE_MON_4_MASK           0x200000
375#define BVDB_DISPLAY_MODE_UNKNOWN_MASK         0x400000
376
377#define BVDB_DISPLAY_MODE_ALL_FULL_MODES_MASK (BVDB_DISPLAY_MODE_FULL_1_MASK |  BVDB_DISPLAY_MODE_FULL_2_MASK | \
378                                               BVDB_DISPLAY_MODE_FULL_3_MASK |  BVDB_DISPLAY_MODE_FULL_4_MASK | \
379                                               BVDB_DISPLAY_MODE_FULL_5_MASK |  BVDB_DISPLAY_MODE_FULL_6_MASK | \
380                                               BVDB_DISPLAY_MODE_FULL_7_MASK |  BVDB_DISPLAY_MODE_FULL_8_MASK | \
381                                               BVDB_DISPLAY_MODE_FULL_9_MASK |  BVDB_DISPLAY_MODE_FULL_10_MASK | \
382                                               BVDB_DISPLAY_MODE_FULL_11_MASK)
383
384#define BVDB_DISPLAY_MODE_ALL_PIG_MODES_MASK  (BVDB_DISPLAY_MODE_PIG_1_MASK  |  BVDB_DISPLAY_MODE_PIG_2_MASK | \
385                                               BVDB_DISPLAY_MODE_PIG_3_MASK  |  BVDB_DISPLAY_MODE_PIG_4_MASK)
386
387#define BVDB_DISPLAY_MODE_ALL_PIP_MODES_MASK  (BVDB_DISPLAY_MODE_PIP_1_MASK  |  BVDB_DISPLAY_MODE_PIP_2_MASK | \
388                                               BVDB_DISPLAY_MODE_PIP_3_MASK)
389#define BVDB_DISPLAY_MODE_ALL_MON_MODES_MASK  (BVDB_DISPLAY_MODE_MON_1_MASK  |  BVDB_DISPLAY_MODE_MON_2_MASK | \
390                                               BVDB_DISPLAY_MODE_MON_3_MASK  |  BVDB_DISPLAY_MODE_MON_4_MASK)
391
392#define BVDB_DISP_MODE_IS_PIG(pMode)            ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_PIG_MODES_MASK)
393#define BVDB_DISP_MODE_IS_FULL(pMode)           ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_FULL_MODES_MASK)
394#define BVDB_DISP_MODE_IS_PIP(pMode)            ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_PIP_MODES_MASK)
395#define BVDB_DISP_MODE_IS_MON(pMode)            ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_MON_MODES_MASK)
396
397#define BVDB_DISP_MODE_IS_MHEG_FULL(pMode)      ((*((uint32_t*)(void*)(pMode))) & (BVDB_DISPLAY_MODE_FULL_10_MASK | BVDB_DISPLAY_MODE_FULL_11_MASK))
398#define BVDB_DISP_MODE_IS_MHEG_FULL_1(pMode)    ((*((uint32_t*)(void*)(pMode))) &  BVDB_DISPLAY_MODE_FULL_10_MASK)
399#define BVDB_DISP_MODE_IS_MHEG_FULL_2(pMode)    ((*((uint32_t*)(void*)(pMode))) &  BVDB_DISPLAY_MODE_FULL_11_MASK)
400#define BVDB_DISP_MODE_IS_MHEG_PIG(pMode)       ((*((uint32_t*)(void*)(pMode))) & (BVDB_DISPLAY_MODE_PIG_3_MASK | BVDB_DISPLAY_MODE_PIG_4_MASK))
401#define BVDB_DISP_MODE_IS_MHEG_PIG_1(pMode)     ((*((uint32_t*)(void*)(pMode))) &  BVDB_DISPLAY_MODE_PIG_3_MASK)
402#define BVDB_DISP_MODE_IS_MHEG_PIG_2(pMode)     ((*((uint32_t*)(void*)(pMode))) &  BVDB_DISPLAY_MODE_PIG_4_MASK)
403
404#define BVDB_DISP_MODE_IS_ALL_PIG(pMode)        (((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_PIG_MODES_MASK) == BVDB_DISPLAY_MODE_ALL_PIG_MODES_MASK)
405#define BVDB_DISP_MODE_IS_ALL_FULL(pMode)       (((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_FULL_MODES_MASK) == BVDB_DISPLAY_MODE_ALL_FULL_MODES_MASK)
406#define BVDB_DISP_MODE_IS_ALL_PIP(pMode)        (((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_PIP_MODES_MASK) == BVDB_DISPLAY_MODE_ALL_PIP_MODES_MASK)
407#define BVDB_DISP_MODE_IS_ALL_MON(pMode)        (((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_ALL_MON_MODES_MASK) == BVDB_DISPLAY_MODE_ALL_MON_MODES_MASK)
408
409#define BVDB_DISP_MODE_IS_FULL_1(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_1_MASK)
410#define BVDB_DISP_MODE_IS_FULL_2(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_2_MASK)
411#define BVDB_DISP_MODE_IS_FULL_3(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_3_MASK)
412#define BVDB_DISP_MODE_IS_FULL_4(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_4_MASK)
413#define BVDB_DISP_MODE_IS_FULL_5(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_5_MASK)
414#define BVDB_DISP_MODE_IS_FULL_6(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_6_MASK)
415#define BVDB_DISP_MODE_IS_FULL_7(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_7_MASK)
416#define BVDB_DISP_MODE_IS_FULL_8(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_8_MASK)
417#define BVDB_DISP_MODE_IS_FULL_9(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_9_MASK)
418#define BVDB_DISP_MODE_IS_FULL_10(pMode)         ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_10_MASK)
419#define BVDB_DISP_MODE_IS_FULL_11(pMode)         ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_FULL_11_MASK)
420
421#define BVDB_DISP_MODE_IS_PIG_1(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_PIG_1_MASK)
422#define BVDB_DISP_MODE_IS_PIG_2(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_PIG_2_MASK)
423#define BVDB_DISP_MODE_IS_PIG_3(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_PIG_3_MASK)
424#define BVDB_DISP_MODE_IS_PIG_4(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_PIG_4_MASK)
425#define BVDB_DISP_MODE_IS_PIP_1(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_PIP_1_MASK)
426#define BVDB_DISP_MODE_IS_PIP_2(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_PIP_2_MASK)
427#define BVDB_DISP_MODE_IS_PIP_3(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_PIP_3_MASK)
428#define BVDB_DISP_MODE_IS_MON_1(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_MON_1_MASK)
429#define BVDB_DISP_MODE_IS_MON_2(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_MON_2_MASK)
430#define BVDB_DISP_MODE_IS_MON_3(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_MON_3_MASK)
431#define BVDB_DISP_MODE_IS_MON_4(pMode)          ((*((uint32_t*)(void*)(pMode))) & BVDB_DISPLAY_MODE_MON_4_MASK)
432
433#define BVDB_RTS_TABLE_SIZE                     100
434
435#define BVDB_SCL_CAP_TOLERANCE_FACTOR           10000
436
437#define BVDB_MAX_STRLEN                         80
438
439/***************************************************************************
440Summary:
441    This enumeration represents the state of a particular BVN component.
442
443Description:
444    BVDB_State_eNo            - the BVN component is disabled.
445    BVDB_State_eYes           - the BVN component is enabled.
446    BVDB_State_eNotApplicable - the BVN component is not applicable for the
447                                usage mode it is used with.
448
449See Also:
450    BVDB_Anr, BVBD_CaptureFeeder, BVDB_Mad
451****************************************************************************/
452typedef enum
453{
454    BVDB_State_eNo = 0,
455    BVDB_State_eYes,
456    BVDB_State_eNotApplicable
457} BVDB_State;
458
459/***************************************************************************
460Summary:
461    This enumerates the supported source format sets. Each entry represents
462    several actual formats. Each usage mode entry must have this.
463
464Description:
465
466See Also:
467    BVDB_UsageMode
468****************************************************************************/
469typedef enum
470{
471    BVDB_InputFormatGroup_eNtsc = 1,
472    BVDB_InputFormatGroup_ePal,
473    BVDB_InputFormatGroup_e480p,
474    BVDB_InputFormatGroup_e576p,
475    BVDB_InputFormatGroup_e720p_50,
476    BVDB_InputFormatGroup_e720p_60,
477    BVDB_InputFormatGroup_e1080i_50,
478    BVDB_InputFormatGroup_e1080i_60,
479    BVDB_InputFormatGroup_e1080p_24,
480    BVDB_InputFormatGroup_e1080p_25,
481    BVDB_InputFormatGroup_e1080p_30,
482    BVDB_InputFormatGroup_e1080p_50,
483    BVDB_InputFormatGroup_e1080p_60,
484    BVDB_InputFormatGroup_ePal_60,
485    BVDB_InputFormatGroup_e720p_24,
486    BVDB_InputFormatGroup_e720p_25,
487    BVDB_InputFormatGroup_e720p_30,
488    BVDB_InputFormatGroup_e544_576i_50 = 20,
489    BVDB_InputFormatGroup_e1440_1080i_50,
490    BVDB_InputFormatGroup_e1440_1080p_25,
491    BVDB_InputFormatGroup_e544_480i_60,
492    BVDB_InputFormatGroup_e1440_1080i_60,
493    BVDB_InputFormatGroup_e1440_1080p_30,
494    BVDB_InputFormatGroup_e1440_1080p_24,
495    BVDB_InputFormatGroup_e1024_768_60_PC = 30,
496    BVDB_InputFormatGroup_e1024_768_85_PC,
497    BVDB_InputFormatGroup_e1366_768_60_PC,
498    BVDB_InputFormatGroup_e1366_768_85_PC,
499    BVDB_InputFormatGroup_e1400_1050_60_PC,
500    BVDB_InputFormatGroup_e1400_1050_75_PC,
501    BVDB_InputFormatGroup_e1920_1080_60_PC,
502    BVDB_InputFormatGroup_e1600_1200_60_PC,
503    BVDB_InputFormatGroup_eAdcCalibration = 40,
504    BVDB_InputFormatGroup_eJpeg_540,
505    BVDB_InputFormatGroup_eJpeg_1080,
506    BVDB_InputFormatGroup_e1080p3d_24,
507    BVDB_InputFormatGroup_e720p3d_60,
508    BVDB_InputFormatGroup_e720p3d_50,
509    BVDB_InputFormatGroup_e1080p3d_30,
510    BVDB_InputFormatGroup_eInvalid
511} BVDB_InputFormatGroup;
512
513/***************************************************************************
514Summary:
515    This enumerates the supported display types. Each usage mode entry must
516    have this.
517
518Description:
519
520See Also:
521    BVDB_UsageMode
522****************************************************************************/
523typedef enum
524{
525    BVDB_Display_ePrimary24 = 0,
526    BVDB_Display_ePrimary48,
527    BVDB_Display_ePrimary50,
528    BVDB_Display_ePrimary60,
529    BVDB_Display_eSecondary50,
530    BVDB_Display_eSecondary60,
531    BVDB_Display_eInvalid
532} BVDB_DisplayType;
533
534/***************************************************************************
535Summary:
536    This enumerates the supported output resolutions. Each usage mode entry must
537    have this.
538
539Description:
540
541See Also:
542    BVDB_UsageMode
543****************************************************************************/
544typedef enum
545{
546    BVDB_OutputResolution_e1080p = 0,
547    BVDB_OutputResolution_eWxga,
548    BVDB_OutputResolution_e1080i,
549    BVDB_OutputResolution_e720p,
550    BVDB_OutputResolution_eXga,
551    BVDB_OutputResolution_e480p,
552    BVDB_OutputResolution_e576p,
553    BVDB_OutputResolution_e480i = 9,
554    BVDB_OutputResolution_e576i,
555    BVDB_OutputResolution_e1920x2160i,
556    BVDB_OutputResolution_e1280x1440p,
557    BVDB_OutputResolution_eInvalid
558} BVDB_OutputResolution;
559
560
561/***************************************************************************
562Summary:
563    This enumerates the supported aspect ratios.
564
565Description:
566
567See Also:
568    BVDB_UsageMode
569****************************************************************************/
570typedef enum
571{
572    BVDB_AspectRatio_e4_3 = 0,
573    BVDB_AspectRatio_e5_4,
574    BVDB_AspectRatio_e15_9,
575    BVDB_AspectRatio_e16_9,
576    BVDB_AspectRatio_eAllSrc,
577    BVDB_AspectRatio_eAllDest,
578    BVDB_AspectRatio_eCustom,
579    BVDB_AspectRatio_eBypass,
580    BVDB_AspectRatio_eInvalid
581} BVDB_AspectRatio;
582
583/***************************************************************************
584Summary:
585    This describes the display configuration for the specified usage mode.
586
587Description:
588
589See Also:
590    BVDB_UsageMode, BVDB_DisplayType, BVDB_AspectRatio
591****************************************************************************/
592typedef struct
593{
594    BVDB_DisplayType      eType;
595    BVDB_OutputResolution eResolution;
596    BVDB_AspectRatio      eAspectRatio;
597} BVDB_Display;
598
599/***************************************************************************
600Summary:
601    This enumerates the supported windows. Each usage mode entry must
602    have this.
603
604Description:
605
606See Also:
607    BVDB_UsageMode
608****************************************************************************/
609typedef enum
610{
611    BVDB_Window_eMain = 0,
612    BVDB_Window_ePip,
613    BVDB_Window_eMonitor,
614    BVDB_Window_eInvalid
615} BVDB_Window;
616
617/***************************************************************************
618Summary:
619    This enumerates the supported intputs. Each usage mode entry must
620    have this.
621
622Description:
623
624See Also:
625    BVDB_UsageMode
626****************************************************************************/
627typedef enum
628{
629    BVDB_Input_eCvbsSvidIfd = 0,
630    BVDB_Input_eComponent,
631    BVDB_Input_eHdDvi,
632    BVDB_Input_eMfd,
633    BVDB_Input_eVga,
634    BVDB_Input_e656,
635    BVDB_Input_eInvalid
636} BVDB_Input;
637
638/***************************************************************************
639Summary:
640    This enumerates the supported deinterlacer field store count. This is
641    used with BVDB_Mad only.
642
643Description:
644
645See Also:
646    BVDB_Mad, BVDB_UsageMode
647****************************************************************************/
648typedef enum
649{
650    BVDB_FieldStore_e5Fields,
651    BVDB_FieldStore_e4Fields,
652    BVDB_FieldStore_e3Fields,
653    BVDB_FieldStore_eNotApplicable
654} BVDB_DeinterlacerFieldStore;
655
656
657/***************************************************************************
658Summary:
659    This enumerates the SCL-CAP bias used for orienting the Scaler relative
660    to the Capture block
661
662Description:
663
664    BVDB_SclCapBias_eAuto   - indicates the VDC will determine the orientation
665                            automatically given certain parameters
666    BVDB_SclCapBias_eSclCap - indicates a SCL-CAP orientation bias
667    BVDB_SclCapBias_eCapScl - indicates a CAP-SCL orientation bias
668See Also:
669    BVDB_UsageMode
670****************************************************************************/
671typedef enum
672{
673    BVDB_SclCapBias_eAuto = 0,
674    BVDB_SclCapBias_eSclCap,
675    BVDB_SclCapBias_eCapScl,
676    BVDB_SclCapBias_eInvalid
677} BVDB_ScalerCaptureBias;
678
679
680/***************************************************************************
681Summary:
682    This indicates the supported video display modes for the specified usage
683    mode.
684
685Description:
686    Each bitfield represents a video display usage mode. If set, this
687    indicates that this video display mode is allowed in the associated
688    usage mode.
689
690    Example:
691
692    pstUsageMode->stDisplayMode = 0x1ff; This means that all FULL modes are
693    allowed in the associated usage mode.
694
695See Also:
696    BVDB_UsageMode
697****************************************************************************/
698typedef struct
699{
700    uint32_t ulFull1    : 1;
701    uint32_t ulFull2    : 1;
702    uint32_t ulFull3    : 1;
703    uint32_t ulFull4    : 1;
704    uint32_t ulFull5    : 1;
705    uint32_t ulFull6    : 1;
706    uint32_t ulFull7    : 1;    /* dot-by-dot */
707    uint32_t ulFull8    : 1;
708    uint32_t ulFull9    : 1;
709    uint32_t ulFull10   : 1;
710    uint32_t ulFull11   : 1;
711    uint32_t ulPig1     : 1;
712    uint32_t ulPig2     : 1;
713    uint32_t ulPig3     : 1;
714    uint32_t ulPig4     : 1;
715    uint32_t ulPip1     : 1;
716    uint32_t ulPip2     : 1;
717    uint32_t ulPip3     : 1;
718    uint32_t ulMon1     : 1;
719    uint32_t ulMon2     : 1;
720    uint32_t ulMon3     : 1;
721    uint32_t ulMon4     : 1;
722    uint32_t ulUnknown  : 1;
723} BVDB_VideoDisplayMode;
724
725/***************************************************************************
726Summary:
727    This enumerates the pixel formats supported. Applies to BVBD_Mad,
728    BVBD_CaptureFeeder, and BVDB_Anr.
729
730Description:
731
732See Also:
733    BVDB_Mad, BVBD_CaptureFeeder, BVDB_Anr
734****************************************************************************/
735typedef enum
736{
737    BVDB_PixelFmt_e8Bit422 = 0,
738    BVDB_PixelFmt_e10Bit422,
739    BVDB_PixelFmt_e10Bit444,
740    BVDB_PixelFmt_eInvalid
741} BVDB_PixelFormat;
742
743/***************************************************************************
744Summary:
745    This enumerates the RTS tables supported.
746
747Description:
748
749See Also:
750    BVDB_UsageMode
751****************************************************************************/
752typedef enum
753{
754    BVDB_RtsSet_e0 = 0,
755    BVDB_RtsSet_e1,
756    BVDB_RtsSet_e2,
757    BVDB_RtsSet_e3,
758    BVDB_RtsSet_e4,
759    BVDB_RtsSet_e5,
760    BVDB_RtsSet_e6,
761    BVDB_RtsSet_e7,
762    BVDB_RtsSet_e8,
763    BVDB_RtsSet_e21 = 21,
764    BVDB_RtsSet_e22,
765    BVDB_RtsSet_e23,
766    BVDB_RtsSet_e24,
767    BVDB_RtsSet_e25,
768    BVDB_RtsSet_e26,
769    BVDB_RtsSet_e27,
770    BVDB_RtsSet_e28,
771    BVDB_RtsSet_e29,
772    BVDB_RtsSet_e30,
773    BVDB_RtsSet_e31,
774    BVDB_RtsSet_e41 = 41,
775    BVDB_RtsSet_e42,
776    BVDB_RtsSet_e43,
777    BVDB_RtsSet_e44,
778    BVDB_RtsSet_e45,
779    BVDB_RtsSet_e46,
780    BVDB_RtsSet_e47,
781    BVDB_RtsSet_e48,
782    BVDB_RtsSet_e49,
783    BVDB_RtsSet_e50,
784    BVDB_RtsSet_e51,
785    BVDB_RtsSet_e61 = 61,
786    BVDB_RtsSet_e62,
787    BVDB_RtsSet_e63,
788    BVDB_RtsSet_e64,
789    BVDB_RtsSet_e65,
790    BVDB_RtsSet_e66,
791    BVDB_RtsSet_e67,
792    BVDB_RtsSet_e68,
793    BVDB_RtsSet_e81 = 81,
794    BVDB_RtsSet_e82,
795    BVDB_RtsSet_e83,
796    BVDB_RtsSet_e84,
797    BVDB_RtsSet_e85,
798    BVDB_RtsSet_e86,
799    BVDB_RtsSet_e87,
800    BVDB_RtsSet_e101 = 101,
801    BVDB_RtsSet_e102,
802    BVDB_RtsSet_e103,
803    BVDB_RtsSet_e104,
804    BVDB_RtsSet_e105,
805    BVDB_RtsSet_e106,
806    BVDB_RtsSet_e107,
807    BVDB_RtsSet_e108,
808    BVDB_RtsSet_e109,
809    BVDB_RtsSet_e110,
810    BVDB_RtsSet_e111,
811    BVDB_RtsSet_e121 = 121,
812    BVDB_RtsSet_e122,
813    BVDB_RtsSet_e123,
814    BVDB_RtsSet_e124,
815    BVDB_RtsSet_e125,
816    BVDB_RtsSet_e126,
817    BVDB_RtsSet_e127,
818    BVDB_RtsSet_e128,
819    BVDB_RtsSet_e129,
820    BVDB_RtsSet_e130,
821    BVDB_RtsSet_e141 = 141,
822    BVDB_RtsSet_e142,
823    BVDB_RtsSet_e143,
824    BVDB_RtsSet_e144,
825    BVDB_RtsSet_e145,
826    BVDB_RtsSet_e146,
827    BVDB_RtsSet_e147,
828    BVDB_RtsSet_e148,
829    BVDB_RtsSet_e149,
830    BVDB_RtsSet_e150,
831    BVDB_RtsSet_e151,
832    BVDB_RtsSet_e152,
833    BVDB_RtsSet_e153,
834    BVDB_RtsSet_e161 = 161,
835    BVDB_RtsSet_e162,
836    BVDB_RtsSet_e163,
837    BVDB_RtsSet_e164,
838    BVDB_RtsSet_e165,
839    BVDB_RtsSet_e166,
840    BVDB_RtsSet_e167,
841    BVDB_RtsSet_e168,
842    BVDB_RtsSet_e169,
843    BVDB_RtsSet_e170,
844    BVDB_RtsSet_e171,
845    BVDB_RtsSet_e172,
846    BVDB_RtsSet_e173,
847    BVDB_RtsSet_e174,
848    BVDB_RtsSet_e175,
849    BVDB_RtsSet_e176,
850    BVDB_RtsSet_e177,
851    BVDB_RtsSet_e178,
852    BVDB_RtsSet_e179,
853    BVDB_RtsSet_e180,
854    BVDB_RtsSet_e181 = 181,
855    BVDB_RtsSet_e182,
856    BVDB_RtsSet_e183,
857    BVDB_RtsSet_e184,
858    BVDB_RtsSet_e185,
859    BVDB_RtsSet_e186,
860    BVDB_RtsSet_e187,
861    BVDB_RtsSet_e188,
862    BVDB_RtsSet_e189,
863    BVDB_RtsSet_e190,
864    BVDB_RtsSet_e191,
865    BVDB_RtsSet_e192,
866    BVDB_RtsSet_e193,
867    BVDB_RtsSet_e194,
868    BVDB_RtsSet_e195,
869    BVDB_RtsSet_e201 = 201,
870    BVDB_RtsSet_e202,
871    BVDB_RtsSet_e203,
872    BVDB_RtsSet_e204,
873    BVDB_RtsSet_e205,
874    BVDB_RtsSet_e206,
875    BVDB_RtsSet_e207,
876    BVDB_RtsSet_e208,
877    BVDB_RtsSet_e209,
878    BVDB_RtsSet_e210,
879    BVDB_RtsSet_e211 = 211,
880    BVDB_RtsSet_e212,
881    BVDB_RtsSet_e213,
882    BVDB_RtsSet_e214,
883    BVDB_RtsSet_e215,
884    BVDB_RtsSet_e216,
885    BVDB_RtsSet_e217,
886    BVDB_RtsSet_e218,
887    BVDB_RtsSet_e219,
888    BVDB_RtsSet_e220,
889    BVDB_RtsSet_e221 = 221,
890    BVDB_RtsSet_e222,
891    BVDB_RtsSet_e223,
892    BVDB_RtsSet_e224,
893    BVDB_RtsSet_e225,
894    BVDB_RtsSet_e226,
895    BVDB_RtsSet_e227,
896    BVDB_RtsSet_e228,
897    BVDB_RtsSet_e229,
898    BVDB_RtsSet_e230,
899    BVDB_RtsSet_e241 = 241,
900    BVDB_RtsSet_e242,
901    BVDB_RtsSet_e243,
902    BVDB_RtsSet_e244,
903    BVDB_RtsSet_e245,
904    BVDB_RtsSet_e246,
905    BVDB_RtsSet_e247,
906    BVDB_RtsSet_e248,
907    BVDB_RtsSet_e249,
908    BVDB_RtsSet_e250,
909    BVDB_RtsSet_e251,
910    BVDB_RtsSet_e252,
911    BVDB_RtsSet_e253,
912    BVDB_RtsSet_e254,
913    BVDB_RtsSet_e255,
914
915    BVDB_RtsSet_e261 = 261,
916    BVDB_RtsSet_e262,
917    BVDB_RtsSet_e263,
918    BVDB_RtsSet_e264,
919    BVDB_RtsSet_e265,
920    BVDB_RtsSet_e266,
921    BVDB_RtsSet_e267,
922    BVDB_RtsSet_e268,
923    BVDB_RtsSet_e269,
924    BVDB_RtsSet_e270,
925    BVDB_RtsSet_e271,
926    BVDB_RtsSet_e272,
927    BVDB_RtsSet_e273,
928    BVDB_RtsSet_e274,
929    BVDB_RtsSet_e275,
930    BVDB_RtsSet_e276,
931    BVDB_RtsSet_e277,
932    BVDB_RtsSet_e278,
933    BVDB_RtsSet_e279,
934    BVDB_RtsSet_e280,
935    BVDB_RtsSet_e281 = 281,
936    BVDB_RtsSet_e282,
937
938    BVDB_RtsSet_e301 = 301,
939    BVDB_RtsSet_e302,
940    BVDB_RtsSet_e303,
941    BVDB_RtsSet_e304,
942    BVDB_RtsSet_e305,
943    BVDB_RtsSet_e306,
944    BVDB_RtsSet_e307,
945    BVDB_RtsSet_e308,
946    BVDB_RtsSet_e309,
947    BVDB_RtsSet_e310,
948    BVDB_RtsSet_e311,
949    BVDB_RtsSet_e312,
950    BVDB_RtsSet_e313,
951    BVDB_RtsSet_e314,
952    BVDB_RtsSet_e315,
953    BVDB_RtsSet_e316,
954    BVDB_RtsSet_e317,
955    BVDB_RtsSet_e318,
956    BVDB_RtsSet_e319,
957    BVDB_RtsSet_e320,
958    BVDB_RtsSet_e321 = 321,
959    BVDB_RtsSet_e322,
960    BVDB_RtsSet_e323,
961    BVDB_RtsSet_e324,
962    BVDB_RtsSet_e325,
963    BVDB_RtsSet_e326,
964    BVDB_RtsSet_e327,
965    BVDB_RtsSet_e328,
966    BVDB_RtsSet_e329,
967    BVDB_RtsSet_e330,
968    BVDB_RtsSet_e331,
969    BVDB_RtsSet_e332,
970    BVDB_RtsSet_e333,
971
972    BVDB_RtsSet_e401 = 401,
973    BVDB_RtsSet_e402,
974    BVDB_RtsSet_e403,
975    BVDB_RtsSet_e404,
976    BVDB_RtsSet_e405,
977    BVDB_RtsSet_e406,
978    BVDB_RtsSet_e407,
979    BVDB_RtsSet_e408,
980    BVDB_RtsSet_e409,
981    BVDB_RtsSet_e410,
982    BVDB_RtsSet_e411,
983    BVDB_RtsSet_e412,
984    BVDB_RtsSet_e413,
985    BVDB_RtsSet_e414,
986    BVDB_RtsSet_e415,
987    BVDB_RtsSet_e416,
988    BVDB_RtsSet_e417,
989    BVDB_RtsSet_e418,
990    BVDB_RtsSet_e419,
991    BVDB_RtsSet_e420,
992    BVDB_RtsSet_e421,
993    BVDB_RtsSet_e422,
994    BVDB_RtsSet_e423,
995    BVDB_RtsSet_e424,
996    BVDB_RtsSet_e425,
997    BVDB_RtsSet_e426,
998    BVDB_RtsSet_e427,
999    BVDB_RtsSet_e428,
1000    BVDB_RtsSet_e429,
1001    BVDB_RtsSet_e430,
1002    BVDB_RtsSet_e431,
1003    BVDB_RtsSet_e432,
1004    BVDB_RtsSet_e433,
1005    BVDB_RtsSet_e434,
1006    BVDB_RtsSet_e435,
1007    BVDB_RtsSet_e436,
1008    BVDB_RtsSet_e437,
1009    BVDB_RtsSet_e438,
1010    BVDB_RtsSet_e439,
1011    BVDB_RtsSet_e440,
1012    BVDB_RtsSet_e441,
1013    BVDB_RtsSet_e442,
1014    BVDB_RtsSet_e443,
1015    BVDB_RtsSet_e444,
1016    BVDB_RtsSet_e445,
1017    BVDB_RtsSet_e446,
1018    BVDB_RtsSet_e447,
1019    BVDB_RtsSet_e448,
1020    BVDB_RtsSet_e449,
1021    BVDB_RtsSet_e450,
1022    BVDB_RtsSet_e451,
1023    BVDB_RtsSet_e452,
1024    BVDB_RtsSet_e453,
1025
1026    BVDB_RtsSet_e501 = 501,
1027    BVDB_RtsSet_e502,
1028    BVDB_RtsSet_e503,
1029    BVDB_RtsSet_e504,
1030    BVDB_RtsSet_e505,
1031    BVDB_RtsSet_e506,
1032    BVDB_RtsSet_e507,
1033    BVDB_RtsSet_e508,
1034    BVDB_RtsSet_e509,
1035    BVDB_RtsSet_e510,
1036    BVDB_RtsSet_e511,
1037    BVDB_RtsSet_e512,
1038    BVDB_RtsSet_e513,
1039    BVDB_RtsSet_e514,
1040    BVDB_RtsSet_e515,
1041    BVDB_RtsSet_e516,
1042    BVDB_RtsSet_e517,
1043    BVDB_RtsSet_e518,
1044    BVDB_RtsSet_e519,
1045    BVDB_RtsSet_e520,
1046    BVDB_RtsSet_e521,
1047    BVDB_RtsSet_e522,
1048    BVDB_RtsSet_e523,
1049    BVDB_RtsSet_e524,
1050    BVDB_RtsSet_e525,
1051    BVDB_RtsSet_e526,
1052    BVDB_RtsSet_e527,
1053    BVDB_RtsSet_e528,
1054    BVDB_RtsSet_e529,
1055    BVDB_RtsSet_e530,
1056    BVDB_RtsSet_e531,
1057    BVDB_RtsSet_e532,
1058    BVDB_RtsSet_e533,
1059    BVDB_RtsSet_e534,
1060    BVDB_RtsSet_e535,
1061    BVDB_RtsSet_e536,
1062    BVDB_RtsSet_e537,
1063    BVDB_RtsSet_e538,
1064    BVDB_RtsSet_e539,
1065    BVDB_RtsSet_e540,
1066
1067    BVDB_RtsSet_e601 = 601,
1068    BVDB_RtsSet_e602,
1069    BVDB_RtsSet_e603,
1070    BVDB_RtsSet_e604,
1071    BVDB_RtsSet_e605,
1072    BVDB_RtsSet_e606,
1073    BVDB_RtsSet_e607,
1074    BVDB_RtsSet_e608,
1075    BVDB_RtsSet_e609,
1076    BVDB_RtsSet_e610,
1077    BVDB_RtsSet_e611,
1078    BVDB_RtsSet_e612,
1079    BVDB_RtsSet_e613,
1080    BVDB_RtsSet_e614,
1081    BVDB_RtsSet_e615,
1082    BVDB_RtsSet_e616,
1083    BVDB_RtsSet_e617,
1084    BVDB_RtsSet_e618,
1085    BVDB_RtsSet_e619,
1086    BVDB_RtsSet_e620,
1087    BVDB_RtsSet_e621,
1088    BVDB_RtsSet_e622,
1089    BVDB_RtsSet_e623,
1090    BVDB_RtsSet_e624,
1091    BVDB_RtsSet_e625,
1092    BVDB_RtsSet_e626,
1093    BVDB_RtsSet_e627,
1094    BVDB_RtsSet_e628,
1095    BVDB_RtsSet_e629,
1096    BVDB_RtsSet_e630,
1097    BVDB_RtsSet_e631,
1098    BVDB_RtsSet_e632,
1099    BVDB_RtsSet_e633,
1100
1101    BVDB_RtsSet_e701 = 701,
1102    BVDB_RtsSet_e702,
1103    BVDB_RtsSet_e703,
1104    BVDB_RtsSet_e704,
1105    BVDB_RtsSet_e705,
1106    BVDB_RtsSet_e706,
1107    BVDB_RtsSet_e707,
1108    BVDB_RtsSet_e708,
1109    BVDB_RtsSet_e709,
1110    BVDB_RtsSet_e710,
1111    BVDB_RtsSet_e711,
1112    BVDB_RtsSet_e712,
1113    BVDB_RtsSet_e713,
1114    BVDB_RtsSet_e714,
1115    BVDB_RtsSet_e715,
1116    BVDB_RtsSet_e716,
1117    BVDB_RtsSet_e717,
1118    BVDB_RtsSet_e718,
1119    BVDB_RtsSet_e719,
1120    BVDB_RtsSet_e720,
1121
1122    BVDB_RtsSet_e801 = 801,
1123    BVDB_RtsSet_e802,
1124    BVDB_RtsSet_e803,
1125    BVDB_RtsSet_e804,
1126    BVDB_RtsSet_e805,
1127    BVDB_RtsSet_e806,
1128    BVDB_RtsSet_e807,
1129    BVDB_RtsSet_e808,
1130    BVDB_RtsSet_e809,
1131    BVDB_RtsSet_e810,
1132    BVDB_RtsSet_e811,
1133    BVDB_RtsSet_e812,
1134    BVDB_RtsSet_e813,
1135    BVDB_RtsSet_e814,
1136    BVDB_RtsSet_e815,
1137    BVDB_RtsSet_e816,
1138    BVDB_RtsSet_e817,
1139    BVDB_RtsSet_e818,
1140    BVDB_RtsSet_e819,
1141    BVDB_RtsSet_e820,
1142    BVDB_RtsSet_e821,
1143    BVDB_RtsSet_e822,
1144    BVDB_RtsSet_e823,
1145    BVDB_RtsSet_e824,
1146    BVDB_RtsSet_e825,
1147    BVDB_RtsSet_e826,
1148    BVDB_RtsSet_e827,
1149    BVDB_RtsSet_e828,
1150    BVDB_RtsSet_e829,
1151    BVDB_RtsSet_e830,
1152    BVDB_RtsSet_e831,
1153    BVDB_RtsSet_e832,
1154    BVDB_RtsSet_e833,
1155    BVDB_RtsSet_e834,
1156    BVDB_RtsSet_e835,
1157    BVDB_RtsSet_e836,
1158    BVDB_RtsSet_e837,
1159    BVDB_RtsSet_e838,
1160
1161    BVDB_RtsSet_e901 = 901,
1162    BVDB_RtsSet_e902,
1163    BVDB_RtsSet_e903,
1164    BVDB_RtsSet_e904,
1165    BVDB_RtsSet_e905,
1166    BVDB_RtsSet_e906,
1167    BVDB_RtsSet_e907,
1168    BVDB_RtsSet_e908,
1169
1170    BVDB_RtsSet_e1001 = 1001,
1171    BVDB_RtsSet_e1002,
1172    BVDB_RtsSet_e1003,
1173    BVDB_RtsSet_e1004,
1174    BVDB_RtsSet_e1005,
1175    BVDB_RtsSet_e1006,
1176    BVDB_RtsSet_e1007,
1177    BVDB_RtsSet_e1008,
1178    BVDB_RtsSet_e1009,
1179    BVDB_RtsSet_e1010,
1180    BVDB_RtsSet_e1011,
1181    BVDB_RtsSet_e1012,
1182    BVDB_RtsSet_e1013,
1183    BVDB_RtsSet_e1014,
1184    BVDB_RtsSet_e1015,
1185    BVDB_RtsSet_e1016,
1186    BVDB_RtsSet_e1017,
1187    BVDB_RtsSet_e1018,
1188    BVDB_RtsSet_e1019,
1189    BVDB_RtsSet_e1020,
1190    BVDB_RtsSet_e1021,
1191    BVDB_RtsSet_e1022,
1192    BVDB_RtsSet_e1023,
1193    BVDB_RtsSet_e1024,
1194    BVDB_RtsSet_e1025,
1195    BVDB_RtsSet_e1026,
1196    BVDB_RtsSet_e1027,
1197    BVDB_RtsSet_e1028,
1198    BVDB_RtsSet_e1029,
1199    BVDB_RtsSet_e1030,
1200    BVDB_RtsSet_e1031,
1201    BVDB_RtsSet_e1032,
1202    BVDB_RtsSet_e1033,
1203    BVDB_RtsSet_e1034,
1204    BVDB_RtsSet_e1035,
1205    BVDB_RtsSet_e1036,
1206
1207    BVDB_RtsSet_e1101 = 1101,
1208    BVDB_RtsSet_e1102,
1209    BVDB_RtsSet_e1103,
1210    BVDB_RtsSet_e1104,
1211    BVDB_RtsSet_e1105,
1212    BVDB_RtsSet_e1106,
1213    BVDB_RtsSet_e1107,
1214    BVDB_RtsSet_e1108,
1215    BVDB_RtsSet_e1109,
1216    BVDB_RtsSet_e1110,
1217    BVDB_RtsSet_e1111,
1218    BVDB_RtsSet_e1112,
1219    BVDB_RtsSet_e1113,
1220    BVDB_RtsSet_e1114,
1221    BVDB_RtsSet_e1115,
1222    BVDB_RtsSet_e1116,
1223    BVDB_RtsSet_e1117,
1224    BVDB_RtsSet_e1118,
1225    BVDB_RtsSet_e1119,
1226    BVDB_RtsSet_e1120,
1227    BVDB_RtsSet_e1121,
1228    BVDB_RtsSet_e1122,
1229    BVDB_RtsSet_e1123,
1230    BVDB_RtsSet_e1124,
1231
1232    BVDB_RtsSet_e1201 = 1201,
1233    BVDB_RtsSet_e1202,
1234    BVDB_RtsSet_e1203,
1235    BVDB_RtsSet_e1204,
1236    BVDB_RtsSet_e1205,
1237    BVDB_RtsSet_e1206,
1238    BVDB_RtsSet_e1207,
1239    BVDB_RtsSet_e1208,
1240    BVDB_RtsSet_e1209,
1241    BVDB_RtsSet_e1210,
1242    BVDB_RtsSet_e1211,
1243    BVDB_RtsSet_e1212,
1244    BVDB_RtsSet_e1213,
1245    BVDB_RtsSet_e1214,
1246    BVDB_RtsSet_e1215,
1247    BVDB_RtsSet_e1216,
1248    BVDB_RtsSet_e1217,
1249
1250    BVDB_RtsSet_Max,
1251    BVDB_RtsSet_eNotApplicable = BVDB_RtsSet_Max + 1000,
1252    BVDB_RtsSet_eTBD
1253} BVDB_RtsSet;
1254
1255/***************************************************************************
1256Summary:
1257    This enumerates the modes on how to display the source
1258
1259Description:
1260
1261See Also:
1262
1263****************************************************************************/
1264typedef enum
1265{
1266    BVDB_DisplaySourceAs_eFull = 0,
1267    BVDB_DisplaySourceAs_eLetterbox,
1268    BVDB_DisplaySourceAs_ePillarbox,
1269    BVDB_DisplaySourceAs_eDot,
1270    BVDB_DisplaySourceAs_ePig,
1271    BVDB_DisplaySourceAs_ePip,
1272    BVDB_DisplaySourceAs_eInvalid
1273} BVDB_DisplaySourceAs;
1274
1275/***************************************************************************
1276Summary:
1277    This describes the video display mode.
1278
1279Description:
1280    ulSrcWidthClipAmount  - the maximum amount (in %) to clip the source's
1281                            width.
1282    ulSrcHeightClipAmount - the maximum amount (in %)to clip the source's
1283                            height.
1284    eDisplay16_9SrcOn16_9Display      - displays a 16:9 source
1285                            on a 16:9 panel
1286    eDisplay16_9SrcOn4_3Display      - displays a 16:9 source
1287                            on a 4:3 panel
1288    eDisplay4_3SrcOn16_9dDisplay      - displays a 4:3source
1289                            on a 16:9 panel
1290    eDisplay4_3SrcOn14_3Display      - displays a 4:# source
1291                            on a 4:3 panel
1292    ulMaxWinHeight        - the maximum height (in %) relative to
1293                            the display's height
1294    ulMaxWinWidth         - the maximum width (in %) relative to
1295                            the display's width
1296    ulMinWinHeight        - the minimum height (in %) relative to
1297                            the display's height
1298    ulMinWinWidth         - the minimum width (in %) relative to
1299                            the display's width
1300
1301    There are a few notable exceptions and they are as follows:
1302
1303    For FULL.7 mode (Dot-By-Dot), the max and min widow sizes pertain to
1304    the source's size instead of the display size.
1305
1306See Also:
1307    BVDB_VideoDisplayMode
1308****************************************************************************/
1309typedef struct
1310{
1311    uint32_t               ulSrcWidthClipAmount;
1312    uint32_t               ulSrcHeightClipAmount;
1313    BVDB_DisplaySourceAs   eDisplay16_9SrcOn16_9Display;
1314    BVDB_DisplaySourceAs   eDisplay16_9SrcOn4_3Display;
1315    BVDB_DisplaySourceAs   eDisplay4_3SrcOn16_9dDisplay;
1316    BVDB_DisplaySourceAs   eDisplay4_3SrcOn4_3Display;
1317    uint32_t               ulMinWinHeight;
1318    uint32_t               ulMinWinWidth;
1319    uint32_t               ulMaxWinHeight;
1320    uint32_t               ulMaxWinWidth;
1321} BVDB_VideoDisplayModeInfo;
1322
1323/***************************************************************************
1324Summary:
1325    This describes the OSD setting for the specified usage mode.
1326
1327Description:
1328    eOsd            - the OSD type
1329    ulReserved      - reserved
1330
1331See Also:
1332    BVDB_UsageMode, BVDB_Osd
1333****************************************************************************/
1334typedef struct
1335{
1336    uint32_t ulWidth;
1337    uint32_t ulHeight;
1338    uint32_t ulBitsPerPixel;
1339    uint32_t           ulReserved;
1340} BVDB_OsdInfo;
1341
1342/***************************************************************************
1343Summary:
1344    This describes the ANR configuration for the specified usage mode.
1345
1346Description:
1347    eState          - whether ANR is enabled or not
1348    ePixelFormat    - the ANR buffer's pixel format.
1349    eReserved       - for future use
1350
1351See Also:
1352    BVDB_UsageMode, BVDB_PixelFormat, BVDB_State
1353****************************************************************************/
1354typedef struct
1355{
1356    BVDB_State          eState;
1357    BVDB_PixelFormat    ePixelFormat;
1358    uint32_t            ulReserved;
1359} BVDB_Anr;
1360
1361/***************************************************************************
1362Summary:
1363    This describes the CAP/VFD configuration for the specified usage mode.
1364
1365Description:
1366    eState          - whether capture is enabled or not
1367    ePixelFormat    - the capture buffer's pixel format
1368    eReserved       - for future use
1369
1370See Also:
1371    BVDB_UsageMode, BVDB_PixelFormat, BVDB_State
1372****************************************************************************/
1373typedef struct
1374{
1375    BVDB_State          eState;
1376    BVDB_PixelFormat    ePixelFormat;
1377    uint32_t            ulReserved;
1378} BVDB_CaptureFeeder;
1379
1380/***************************************************************************
1381Summary:
1382    This describes the MAD configuration for the specified usage mode.
1383
1384Description:
1385    eState          - whether MAD is enabled or not
1386    eFieldStore     - the max number of MAD fields
1387    ePixelFormat    - the MAD buffer's pixel format.
1388    eReserved       - for future use
1389
1390See Also:
1391    BVDB_UsageMode, BVDB_PixelFormat, BVDB_State, BVDB_DeinterlacerFieldStore
1392****************************************************************************/
1393typedef struct
1394{
1395    BVDB_State                      eState;
1396    BVDB_DeinterlacerFieldStore     eFieldStore;
1397    BVDB_PixelFormat                ePixelFormat;
1398    uint32_t                        ulReserved;
1399} BVDB_Mad;
1400
1401/***************************************************************************
1402Summary:
1403    This contains the ID and the RTS register value for a given SCB client.
1404
1405Description:
1406    ulId          - the client ID
1407    ulRegValue    - the value to be written to the client's SCB register
1408
1409See Also:
1410    BVDB_RtsTable
1411****************************************************************************/
1412typedef struct
1413{
1414    uint32_t            ulId;
1415    uint32_t            ulRegValue;
1416} BVDB_Rts;
1417
1418/***************************************************************************
1419Summary:
1420    This contains the table of SCB client's RTS values. A usage mode has this.
1421    Certain usage modes do not have this and are marked as n/a since the
1422    clients for that particular usage modes do not requirea new RTS setting.
1423
1424Description:
1425    ulValidTableEntries  - the number of valid entries in the table.
1426    astRts               - the table of SCB client's RTS values
1427
1428See Also:
1429    BVDB_Rts, BVDB_RTS_TABLE_SIZE
1430****************************************************************************/
1431typedef struct
1432{
1433    uint32_t            ulValidTableEntries;
1434    BVDB_Rts            astRts[BVDB_RTS_TABLE_SIZE];
1435} BVDB_RtsTable;
1436
1437/***************************************************************************
1438Summary:
1439    Usage Mode database record.
1440
1441Description:
1442    This is the structure used for database entries (record).
1443
1444See Also:
1445
1446***************************************************************************/
1447typedef struct BVDB_UsageMode
1448{
1449    /* Node info: linked-list bookeeping */
1450    BLST_CQ_ENTRY(BVDB_UsageMode)  link;                 /* doubly-linked list support */
1451
1452    char                           acId[BVDB_MAX_STRLEN];
1453    BVDB_InputFormatGroup          eInputFormatGroup;
1454    BVDB_Display                   stDisplay;
1455    BVDB_Window                    eWindow;
1456    BVDB_Input                     eInput;
1457    BVDB_VideoDisplayMode          stDisplayMode;
1458    BVDB_OsdInfo                   stOsd;
1459    BVDB_State                     e3dComb;
1460    BVDB_State                     eOversample;
1461    BVDB_State                     eMnrBnr;
1462    BVDB_State                     eDcr;
1463    BVDB_Anr                       stAnr;
1464    BVDB_CaptureFeeder             stCapVfd;
1465    BVDB_Mad                       stMad;
1466    BVDB_RtsSet                    eRtsSet;
1467    uint32_t                       ulSclCapTolerance; /* This must be divided
1468                                    by BVDB_SCL_CAP_TOLERANCE_FACTOR to get
1469                                    the actual value. */
1470    BVDB_ScalerCaptureBias         eSclCapBias;
1471}BVDB_UsageMode;
1472
1473/***************************************************************************
1474Summary:
1475    This structure describes the memory allocation requirements for a given
1476    window heap.
1477
1478Description:
1479    BVDB_Heap_Settings is a structure that use to describe the public
1480    settings of a window heap.
1481
1482    ulBufferCnt_2HD -
1483        The number of double HD buffers required.
1484
1485    ePixelFormat_2HD -
1486        The pixel format for double HD buffer.
1487
1488    eBufferFormat_2HD  -
1489        The double HD buffer format. This is typically BFMT_VideoFmt_e1080p_30Hz.
1490
1491    ulBufferCnt_2HD_Pip -
1492        The numbfer 2HD PIP buffers required.  This max PIP size
1493        is 1/4 of 2HD buffers. Only PIP windows smaller or equal to 1/4 2HD
1494        buffer size can use these buffers. PIP windows bigger than 1/4 of 2HD
1495        buffer size needs to use 2HD buffers.
1496
1497    ulBufferCnt_HD -
1498        The number of HD buffers required.
1499
1500    ePixelFormat_HD -
1501        The pixel format for single HD buffer.
1502
1503    eBufferFormat_HD -
1504        The HD buffer format. Typically this is BFMT_VideoFmt_e1080i.
1505
1506    ulBufferCnt_HD_Pip -
1507        The number HD PIP buffers required.  This max PIP size
1508        is 1/4 of HD buffers. Only PIP windows smaller or equal to 1/4 HD
1509        buffer size can use these buffers. PIP windows bigger than 1/4 of HD
1510        buffer size needs to use HD buffers.
1511
1512    ulBufferCnt_SD -
1513        The number of SD buffers required.
1514
1515    ePixelFormat_SD -
1516        The pixel format for SD buffer.
1517
1518    eBufferFormat_SD -
1519        The SD buffer format. This is typically BFMT_VideoFmt_ePAL_G.
1520
1521
1522See Also:
1523    BVDB_GetMemoryAllocation
1524***************************************************************************/
1525typedef struct
1526{
1527    /* Double HD Buffer settings */
1528    uint32_t                 ulBufferCnt_2HD;
1529    BPXL_Format              ePixelFormat_2HD;
1530    BFMT_VideoFmt            eBufferFormat_2HD;
1531    uint32_t                 ulBufferCnt_2HD_Pip;
1532
1533    /* HD Buffer settings */
1534    uint32_t                 ulBufferCnt_HD;
1535    BPXL_Format              ePixelFormat_HD;
1536    BFMT_VideoFmt            eBufferFormat_HD;
1537    uint32_t                 ulBufferCnt_HD_Pip;
1538
1539    /* SD Buffer settings */
1540    uint32_t                 ulBufferCnt_SD;
1541    BPXL_Format              ePixelFormat_SD;
1542    BFMT_VideoFmt            eBufferFormat_SD;
1543    uint32_t                 ulBufferCnt_SD_Pip;
1544
1545}BVDB_Heap_Settings;
1546
1547/***************************************************************************
1548Summary:
1549    Video Usage Modes Database (VDB) context handle.
1550
1551Description:
1552    This is a handle that the application created with BVDB_CreateVdb.
1553    BVDB_Handle holds the context of the VDB.  There should only one
1554    BVDB_Handle at any given instant.  The main VDB handle is use to add,
1555    delete, and query databse entries.
1556
1557See Also:
1558    BVDB_CreateVdb, BVDB_DestroyVdb.
1559***************************************************************************/
1560typedef struct BVDB_P_Context  *BVDB_Handle;
1561
1562
1563/***************************************************************************
1564Summary:
1565    This enumeration represents the current PIP mode
1566
1567Description:
1568    BVDB_PipType_eNo  - Only Main window is active
1569    BVDB_PipType_ePbp - Dual windows are active, and it's in PBP mode
1570                        where there no overlapped area between two
1571                        windows
1572    BVDB_PipType_ePip - Dual windows are active and it's in PIP mode
1573                        where there is overlapped area between two
1574                        windows, e.g., the sub-window is positioned on
1575                        top of the main-window
1576
1577See Also:
1578****************************************************************************/
1579typedef enum
1580{
1581    BVDB_PipType_eNo = 0,   /* Only Main window is active */
1582    BVDB_PipType_ePbp,      /* Dual windows are active, and it's in PBP mode
1583                             * where there no overlapped area between two
1584                             * windows */
1585    BVDB_PipType_ePip       /* Dual windows are active and it's in PIP mode
1586                             * where there is overlapped area between two
1587                             * windows, e.g., the sub-window is positioned on
1588                             * top of the main-window */
1589} BVDB_PipType;
1590
1591
1592/***************************************************************************
1593Summary:
1594    Creates the database. The database is created using a generated C file
1595    that contains all the usage modes an their information.
1596
1597Input:
1598
1599Output:
1600    phVdb                  - the VDB handle
1601    pulEntries             - the numberof databse entries(or records)
1602
1603Returns:
1604    BERR_INVALID_PARAMETER - Invalid function parameters.
1605    BERR_SUCCESS           - Function succeed
1606
1607See Also:
1608    BVDB_WriteVdbFile
1609**************************************************************************/
1610BERR_Code BVDB_CreateVdb
1611    ( BVDB_Handle            *phVdb,
1612      uint32_t               *pulEntries);
1613
1614
1615/***************************************************************************
1616Summary:
1617    Validates the database.
1618
1619Description:
1620    This is optional to use but is necessary when new usage modes are added
1621    by the application to validate the new entries.
1622
1623Input:
1624    configId             - the number of the configuration that has to be validated
1625                               (if 0 is specified, all configurations will be validated)
1626
1627Output:
1628    hVdb                  - the VDB handle
1629
1630Returns:
1631    BERR_INVALID_PARAMETER - Invalid function parameters.
1632    BERR_SUCCESS           - Function succeed
1633
1634See Also:
1635    BVDB_WriteVdbFile
1636**************************************************************************/
1637
1638BERR_Code BVDB_ValidateVdb
1639    ( BVDB_Handle   hVdb,
1640      uint32_t  configId );
1641
1642/***************************************************************************
1643Summary:
1644    Destroys the database.
1645
1646Input:
1647    hVDb                   - the VDB handle
1648
1649Returns:
1650    BERR_INVALID_PARAMETER - Invalid function parameters.
1651    BERR_SUCCESS           - Function succeed
1652
1653See Also:
1654    BVDB_CreateVdb
1655**************************************************************************/
1656BERR_Code BVDB_DestroyVdb
1657    ( BVDB_Handle             hVdb  );
1658
1659
1660/***************************************************************************
1661Summary:
1662    Adds an entry to  the database. The user specifies the usage mode and
1663    passes this to the function. It will then get validated and if it
1664    passes, it will be added to the VDB.
1665
1666Input:
1667    hVDb                   - the VDB handle
1668    pstUsageMode           - the user specified usage mode to add. This must
1669                             contain the configuration number using the
1670                             acId field.
1671Description:
1672    Example:
1673
1674    strcpy(stUsageMode.acId, "1"); "config #"
1675    stUsageMode.eInputFormatGroup = BVDB_InputFormatGroup_eNTSC;
1676    stUsageMode.eDisplay = BVDB_Display_ePrimary60;
1677    stUsageMode.eWindow = BVDB_Window_eMain;
1678    stUsageMode.eIput = BVDB_Input_eComponent;
1679    stUsageMode.eOsd = BVDB_Osd_e1920_1080p_32bpp
1680    stUsageMode.stDisplayMode = 0x3f; "all_FULL_modes"
1681    stUsageMode.e3dComb = BVDB_State_eNotApplicable;
1682    stUsageMode.eOversample = BVDB_State_eYes;
1683    stUsageMode.eMnrBnr = BVDB_State_eNo;
1684    stUsageMode.eDcr = BVDB_State_eYes;
1685    stUsageMode.stAnr.eState = BVDB_State_eYes;
1686    stUsageMode.stAnr.ePixelFormat = BVDB_PixelFmt_e10Bit422;
1687    stUsageMode.stCapVfd.eState = BVDB_State_eYes;
1688    stUsageMode.stCapVfd.ePixelFormat = BVDB_PixelFmt_e10Bit422;
1689    stUsageMode.stMad.eState = BVDB_State_eYes;
1690    stUsageMode.stMad.ePixelFormat = BVDB_PixelFmt_e10Bit422;
1691    stUsageMode.stMad.eFieldStore = BVDB_FieldStore_e5Fields;
1692    stUsageMode.eRtsSet = BVDB_RtsSet_eD;
1693    stUsageMode.ulSclCapTolerance = 0;
1694    stUsageMode.eSclCapBias = BVDB_SclCapBias_eAuto;
1695
1696    err = BVDB_AddVdbEntry(hVdb, &stUsageMode);
1697
1698Returns:
1699    BERR_INVALID_PARAMETER - Invalid function parameters.
1700    BERR_SUCCESS           - Function succeed
1701
1702See Also:
1703
1704**************************************************************************/
1705BERR_Code BVDB_AddVdbEntry
1706    ( BVDB_Handle             hVdb,
1707      const BVDB_UsageMode   *pstUsageMode );
1708
1709
1710/***************************************************************************
1711Summary:
1712    Removes an entry to  the database. The user specifies the usage mode and
1713    passes this to the function. If the usage mode is found via its ID, it
1714    wil then be removed from the VDB.
1715
1716Input:
1717    hVDb                   - the VDB handle
1718    pstUsageMode           - the user specified usage mode to remove
1719
1720Returns:
1721    BERR_INVALID_PARAMETER - Invalid function parameters.
1722    BERR_SUCCESS           - Function succeed
1723
1724See Also:
1725
1726**************************************************************************/
1727BERR_Code BVDB_RemoveVdbEntry
1728    ( BVDB_Handle             hVdb,
1729      const BVDB_UsageMode   *pstUsageMode );
1730
1731
1732/***************************************************************************
1733Summary:
1734    Gets a VDB entry based on the Config #, Input Format Group, Display,
1735    Window, Input, OSD, and Video Display usage mode. This function takes
1736    in a BVDB_Usage mode structure partially filled with the required info.
1737    It will then be completely  filled if the usage mode requested is found.
1738    Otherwise an error will be returned.
1739
1740Description:
1741    Example on filling the required fields:
1742
1743    strcpy(pstUsageMode->acId, "1"); configuration 1
1744    pstUsageMode->eInputFormatGroup = BVDB_InputFormatGroup_eNTSC;
1745    pstUsageMode->eDisplay = BVDB_Display_ePrimary60;
1746    pstUsageMode->eWindow = BVDB_Window_eMain;
1747    pstUsageMode->eIput = BVDB_Input_eComponent;
1748    pstUsageMode->eOsd = BVDB_Osd_e1920_1080p_32bpp
1749    pstUsageMode->stDisplayMode = 0x3f; "all_FULL_modes"
1750
1751    err = BVDB_GetVdbEntry(hVdb, pstUsageMode);
1752
1753Input:
1754    hVdb                   - the VDB handle
1755    pstUsageMode           - the usage mode with the required info
1756
1757Output:
1758    pstUsageMode           - the usage mode with the required info plus
1759                             the remaining info, if found
1760Returns:
1761    BERR_INVALID_PARAMETER - Invalid function parameters.
1762    BERR_SUCCESS           - Function succeed
1763
1764See Also:
1765
1766**************************************************************************/
1767BERR_Code BVDB_GetVdbEntry
1768    ( BVDB_Handle                       hVdb,
1769      BVDB_UsageMode                   *pstUsageMode );
1770
1771
1772/***************************************************************************
1773Summary:
1774    Gets a VDB entry based on the usage mode ID. This function takes in a
1775    BVDB_Usage mode structure partially filled with the ID. It will then be
1776    completely filled if the usage mode requested is found. Otherwise an
1777    error will be returned.
1778
1779Input:
1780    pstUsageMode           - the user specified usage mode
1781
1782Output:
1783    pstUsageMode           - the usage mode with the ID plus
1784                             the remaining info, if found
1785
1786Description:
1787    Example:
1788
1789    strcpy(pstUsageMode.acId, "1.0.0.1.2.2")
1790    err = BVDB_GetVdbEntry(hVdb, pstUsageMode);
1791
1792Returns:
1793    BERR_INVALID_PARAMETER - Invalid function parameters.
1794    BERR_SUCCESS           - Function succeed
1795
1796See Also:
1797
1798**************************************************************************/
1799BERR_Code BVDB_GetVdbEntryById
1800    ( BVDB_Handle                       hVdb,
1801      BVDB_UsageMode                   *pstUsageMode );
1802
1803
1804/***************************************************************************
1805Summary:
1806    Prints the usage mode on the console.
1807
1808Input:
1809    pstUsageMode           - the user specified usage mode
1810
1811Returns:
1812    BERR_INVALID_PARAMETER - Invalid function parameters.
1813    BERR_SUCCESS           - Function succeed
1814
1815See Also:
1816
1817**************************************************************************/
1818BERR_Code BVDB_PrintUsageMode
1819    ( const BVDB_UsageMode        *pstUsageMode );
1820
1821
1822/***************************************************************************
1823Summary:
1824    Prints the entire VDB on the console.
1825
1826Input:
1827    hVdb                   - VDB handle
1828
1829Returns:
1830    BERR_INVALID_PARAMETER - Invalid function parameters.
1831    BERR_SUCCESS           - Function succeed
1832
1833See Also:
1834
1835**************************************************************************/
1836BERR_Code BVDB_PrintVdb
1837    ( BVDB_Handle             hVdb );
1838
1839
1840/***************************************************************************
1841Summary:
1842    This gets the input format group given the source's information. A
1843    BVDB_InputFormatGroup_eInvalid is returned if a match is not found.
1844
1845Input:
1846    hVdb                   - the handle to VDB
1847    ulHeight               - the source's height
1848    ulWidth                - the source's width
1849    ulFrameRate            - the source's frame rate. The frame rate
1850                             must be multiplied by 1000 to handle
1851                             float rates, eg., 23.976 will be passed in
1852                             as 23976 and 60 will be passed in as 60000.
1853    bProgressive           - is the source inerlaced or progressive
1854    eInput                 - the input used with the source
1855
1856Output:
1857    peInputFormatGroup     - the input format group
1858
1859Returns:
1860    BERR_INVALID_PARAMETER - Invalid function parameters.
1861    BERR_SUCCESS           - Function succeed
1862
1863See Also:
1864
1865**************************************************************************/
1866BERR_Code BVDB_GetInputFormatGroup
1867    ( const BVDB_Handle                  hVdb,
1868      const uint32_t                     ulHeight,
1869      const uint32_t                     ulWidth,
1870      const uint32_t                     ulFrameRate,
1871      const bool                         bProgressive,
1872      const bool                         bJpeg,
1873      const BVDB_Input                   eInput,
1874      BVDB_InputFormatGroup             *peInputFormatGroup );
1875
1876/***************************************************************************
1877Summary:
1878    This validates the configuration ID.
1879
1880Input:
1881    hVdb                   - the handle to VDB
1882    ulConfigId             - the configuration ID
1883
1884Returns:
1885    BERR_INVALID_PARAMETER - Invalid function parameters.
1886    BERR_SUCCESS           - Function succeed
1887
1888See Also:
1889
1890**************************************************************************/
1891BERR_Code BVDB_ValidateConfigId
1892    ( BVDB_Handle                  hVdb,
1893      const uint32_t               ulConfigId);
1894
1895/***************************************************************************
1896Summary:
1897    This validates the amount of source clipping for a given usage mode.
1898
1899Input:
1900    hVdb                   - the handle to VDB
1901    pstUsageMode           - the usage mode
1902    ulSrcHeight            - the height of the source
1903    ulSrcWidth             - the width of the source
1904    ulHeightClipAmount     - the total amount to clip from the height
1905    ulWidthClipAmount      - the total amount to clip from the width
1906
1907Returns:
1908    BERR_INVALID_PARAMETER - Invalid function parameters.
1909    BERR_SUCCESS           - Function succeed
1910
1911See Also:
1912
1913**************************************************************************/
1914BERR_Code BVDB_ValidateSourceClipAmount
1915    ( BVDB_Handle                  hVdb,
1916      const BVDB_UsageMode        *pstUsageMode,
1917      const uint32_t               ulSrcHeight,
1918      const uint32_t               ulSrcWidth,
1919      const uint32_t               ulHeightClipAmount,
1920      const uint32_t               ulWidthClipAmount );
1921
1922
1923/***************************************************************************
1924Summary:
1925    Gets the RTS table to use with the given the RTS set
1926
1927Input:
1928    hVdb                   - the handle to VDB
1929    eRtsSet                - the RTS set
1930
1931Returns:
1932    BVDB_RtsTable *        - if found, returns the table else NULL
1933
1934See Also:
1935
1936**************************************************************************/
1937const BVDB_RtsTable* BVDB_GetRtsTable
1938    ( BVDB_Handle                  hVdb,
1939      const BVDB_RtsSet            eRtsSet );
1940
1941
1942/***************************************************************************
1943Summary:
1944    Gets the client name of the given SCB client ID
1945
1946Input:
1947    hVdb                   - the handle to VDB
1948    ulId                   - the SCB client's ID
1949
1950Output:
1951    acClientName           - the client name
1952
1953Returns:
1954    BERR_INVALID_PARAMETER - Invalid function parameters.
1955    BERR_SUCCESS           - Function succeed
1956
1957See Also:
1958
1959**************************************************************************/
1960BERR_Code BVDB_GetRtsClientName
1961    ( BVDB_Handle             hVdb,
1962      const uint32_t          ulId,
1963      char                    acClientName[20] );
1964
1965/***************************************************************************
1966Summary:
1967    Gets the input's clipped dimensions based on a given video display mode
1968
1969Input:
1970    hVdb                   - the handle to VDB
1971    pulHeight              - the height of the input
1972    pulWidth               - the width of the input
1973    pstDispMode            - the diplay mode
1974
1975Output:
1976    pulHeight              - the clipped height of the input
1977    pulWidth               - the clipped width of the input
1978
1979Returns:
1980    BERR_INVALID_PARAMETER - Invalid function parameters.
1981    BERR_SUCCESS           - Function succeed
1982
1983See Also:
1984
1985**************************************************************************/
1986BERR_Code BVDB_GetClippedSize
1987    ( BVDB_Handle             hVdb,
1988      BVDB_VideoDisplayMode  *pstDispMode,
1989      uint32_t               *pulHeight,
1990      uint32_t               *pulWidth );
1991
1992/***************************************************************************
1993Summary:
1994    Gets the mode on how to display the source given a video display mode
1995
1996Input:
1997    hVdb                   - the handle to VDB
1998    ulSrcHeight            - the source height
1999    ulSrcWidth             - the source width
2000    pstDisplay             - the display
2001    eSrcAspectRatio        - the source's aspect ratio
2002    uiSampleAspectRatioX   - the X component of the source's pixel aspect ratio
2003    uiSampleAspectRatioY   - the Y component of the source's pixel aspect ratio
2004    eAspectRatioCorrection - the aspect ratio correction
2005    pstDispMode            - the video display mode
2006
2007Output:
2008    peDisplaySourceAs      - how to display the source
2009
2010Returns:
2011    BERR_INVALID_PARAMETER - Invalid function parameters.
2012    BERR_SUCCESS           - Function succeed
2013
2014See Also:
2015    BVDB_DisplaySourceAs, BVDB_Display
2016**************************************************************************/
2017
2018BERR_Code BVDB_GetDisplaySourceAs
2019    ( BVDB_Handle                   hVdb,
2020      BVDB_VideoDisplayMode        *pstDispMode,
2021      const uint32_t                ulSrcHeight,
2022      const uint32_t                ulSrcWidth,
2023      const BVDB_Display           *pstDisplay,
2024      const BFMT_AspectRatio        eSrcAspectRatio,
2025      const uint16_t                uiSampleAspectRatioX,
2026      const uint16_t                uiSampleAspectRatioY,
2027      const BVDB_AspectRatio        eAspectRatioCorrection,
2028      BVDB_DisplaySourceAs         *peDisplaySourceAs );
2029
2030/***************************************************************************
2031Summary:
2032    This returns the memory allocation requirements of a given configuration.
2033
2034    Memory allocation depends on the window path, i.e., MAIN, PIP, or MON
2035    and on the input type, i.e., digital (MPEG) or analog (VDEC, HDDVI, VGA,
2036    or 656). This is necessary to allow the use of memory sharing between
2037    the XVD and VDC.
2038
2039    The memory allocation requirement is specified by the buffer type, the
2040    number of buffers, and the buffer format. Please refer to the
2041    BVDB_Heap_Settings struct as this will be used to return the memory
2042    allocation requirement.
2043
2044    The heap size in bytes is also returned as this will aid the application
2045    in determining the total heap size required for the window path when
2046    memory sharing is employed.
2047
2048Input:
2049    ulConfigId             - the ID of the configuration
2050    eWindow                - the window path, main, pip, or monitor
2051    eInput                 - the input type, digital or analog
2052
2053Output:
2054    pHeapSettings          - the memory buffer allocation
2055    pulHeapSize            - the heap size in Kilobytes
2056
2057Returns:
2058    BERR_INVALID_PARAMETER - Invalid function parameters.
2059    BERR_SUCCESS           - Function succeed
2060
2061See Also: BVDB_Window, BVDB_Input, BVDB_Heap_Settings
2062**************************************************************************/
2063
2064BERR_Code BVDB_GetMemoryAllocation
2065    (const uint32_t               ulConfigId,
2066     const BVDB_Window            eWindow,
2067     const BVDB_Input             eInput,
2068     BVDB_Heap_Settings          *pstHeapSettings,
2069     uint32_t                    *pulHeapSize );
2070
2071/***************************************************************************
2072Summary:
2073    This returns the video display mode for a given config, display, window,
2074    source size, source clip amount, destination window size, and the
2075    source's aspect ratio information. It is assumed that the user is
2076    familiar with the video display modes and how these are represented by
2077    the BVDB_VideoDisplayMode type.
2078
2079    The display mode whose clip amounts closely matches the requested clip
2080    amounts without exceeding them and closely fit the intended display and
2081    destination window including the dispayed aspect ratio will be returned.
2082    If the requested clip amounts exceed all of the available display modes
2083    clip amounts and/or if the dispalyed aspect ratio is not matched, an
2084    error will be returned.
2085
2086    A few notes on aspect ratio. If the eSrcAspectRatio is set to
2087    BFMT_AspectRatio_eSAR, uiSampleAspectRatioX and uiSampleAspectRatioY along
2088    with ulSrcHeight and ulSrcWidth will be used to determined the displayed
2089    aspect ratio; otherwise, eSrcAspectRatio is used to determine it. Also,
2090    eAspectRatioCorrection is used to determine the final displayed aspect
2091    ratio. Note that any dislayed aspect ratio that exceeds 16:9 is considered
2092    invalid and an error will be returned.
2093
2094    Only 1 bitfield will be set in the returned pstDispMode.
2095
2096    Once a valid video display mode is returned, a call to
2097    BVDB_GetDisplaySourceAs is necessary to get the corresponding eDisplaySrcAs
2098    to correctly display the source.
2099
2100Input:
2101    hVdb                   - the handle to VDB
2102    ulConfigId             - the config ID
2103    pstDisplay             - the target display
2104    eWindow                - the destination window
2105    bPbp                   - inidcates if the window is used for PBP
2106    eInput                 - the input used
2107    ulSrcHeight            - the height of the source
2108    ulSrcWidth             - the width of the source
2109    ulSrcHeightClipAmount  - the total amount to clip from the source height
2110    ulSrcWidthClipAmount   - the total amount to clip from the source width
2111    ulDestHeight           - the destination window height
2112    ulDestWidth            - the destination window width
2113    eSrcAspectRatio        - the source's aspect ratio
2114    uiSampleAspectRatioX   - the X component of the source's pixel aspect ratio
2115    uiSampleAspectRatioY   - the Y component of the source's pixel aspect ratio
2116    eAspectRatioCorrection - the aspect ratio correction
2117
2118Output:
2119    pstDispMode            - the display mode. Note that this is in
2120                             bitfield format. Only 1 bitfield will be set.
2121    pDisplayedAspectRatio  - the final aspect ratio that will be used to display
2122                             the source
2123Returns:
2124    BERR_INVALID_PARAMETER - Invalid function parameters.
2125    BERR_SUCCESS           - Function succeeded
2126
2127See Also: BVDB_VideoDisplayMode, BVDB_UsageMode, BVDB_GetDisplaySrcAs
2128**************************************************************************/
2129BERR_Code BVDB_GetVideoDisplayMode
2130    ( BVDB_Handle                  hVdb,
2131      const uint32_t               ulConfigId,
2132      const BVDB_Display          *pstDisplay,
2133      const BVDB_Window            eWindow,
2134      const bool                   ePipType,
2135      const BVDB_Input             eInput,
2136      const uint32_t               ulSrcHeight,
2137      const uint32_t               ulSrcWidth,
2138      const uint32_t               ulSrcHeightClipAmount,
2139      const uint32_t               ulSrcWidthClipAmount,
2140      const uint32_t               ulDestHeight,
2141      const uint32_t               ulDestWidth,
2142      const BFMT_AspectRatio       eSrcAspectRatio,
2143      const uint16_t               uiSampleAspectRatioX,
2144      const uint16_t               uiSampleAspectRatioY,
2145      const BVDB_AspectRatio       eAspectRatioCorrection,
2146      BVDB_VideoDisplayMode       *pstDispMode,
2147      BFMT_AspectRatio            *pDisplayedAspectRatio );
2148
2149#ifdef __cplusplus
2150}
2151#endif
2152
2153#endif /* __BVDB_H__ */
Note: See TracBrowser for help on using the repository browser.