source: svn/branches/kctv/newcon3bcm2_21bu/magnum/commonutils/avc/7552/bavc.h

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

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 93.1 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2003-2012, 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: bavc.h $
11 * $brcm_Revision: Hydra_Software_Devel/219 $
12 * $brcm_Date: 3/23/12 11:28a $
13 *
14 * Module Description:
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/commonutils/avc/7038/bavc.h $
19 *
20 * Hydra_Software_Devel/219   3/23/12 11:28a jgarrett
21 * SW7425-2378: Adding macro to facilitate moving BAVC_AudioCompressionStd
22 * to bavc_rap.h
23 *
24 * Hydra_Software_Devel/218   2/14/12 12:46p vsilyaev
25 * SW7425-2258: Added Motion Jpeg codec type
26 *
27 * Hydra_Software_Devel/217   2/6/12 6:27p pntruong
28 * SW7425-2181: VDC: Add support to interface with output from SID for
29 * MJPEG usage mode.
30 *
31 * Hydra_Software_Devel/216   2/3/12 2:24p pntruong
32 * SW7425-2327: Added bar data support.
33 *
34 * Hydra_Software_Devel/215   2/2/12 4:47p jgarrett
35 * SW7425-2136: Adding FLAC codec type
36 *
37 * Hydra_Software_Devel/214   1/27/12 4:33p pntruong
38 * SW7425-2239, SW7425-2253: Added bChannelChange to support Transcode
39 * Fast Channel Change.
40 *
41 * Hydra_Software_Devel/213   1/25/12 4:52p jgarrett
42 * SW7425-2268: Adding G.723.1 audio codec
43 *
44 * Hydra_Software_Devel/212   1/3/12 7:18p hongtaoz
45 * SW7425-1001, SW7425-2083: added bLast flag to cleanly flush/terminate
46 * NRT mode transcoder;
47 *
48 * Hydra_Software_Devel/211   12/15/11 5:26p jgarrett
49 * SW7231-500: Adding Lpcm1394 codec
50 *
51 * Hydra_Software_Devel/210   11/23/11 4:25p tdo
52 * SW7435-9: Add support for CMP4-5, GFD4-5, MFD3, VFD5
53 *
54 * Hydra_Software_Devel/209   11/17/11 2:04p pntruong
55 * SW7425-1780, SW7425-1781: Initial support for userdata transcode.
56 *
57 * Hydra_Software_Devel/208   11/15/11 11:03a jgarrett
58 * SW7425-1406: Adding additional audio codecs
59 *
60 * Hydra_Software_Devel/VORBIS_DEVEL/2   11/15/11 10:13a jgarrett
61 * SW7425-1406: Adding additional audio codecs
62 *
63 * Hydra_Software_Devel/VORBIS_DEVEL/1   10/4/11 3:53p jgarrett
64 * SW7425-1406: Adding Vorbis support
65 *
66 * Hydra_Software_Devel/207   7/20/11 12:33p jessem
67 * SW7425-938: Added VP7, VP8, RV9, and SPARK codecs.
68 *
69 * Hydra_Software_Devel/206   6/25/11 7:10p vanessah
70 * SW7425-686: change interruptrefreshrate defintion
71 *
72 * Hydra_Software_Devel/205   6/22/11 11:21a pntruong
73 * SW7425-686: Added new veritical refresh rate enum for synchronizing
74 * XVD/VDC state.  Also will be using this enum for replacing limited
75 * fmt's veritical refresh rate mask.
76 *
77 * Hydra_Software_Devel/204   6/15/11 5:33p pntruong
78 * SW7425-104: Added the flag that indicates if top/bot/frame repeat.
79 * This flag can be use by BVN cores (e.g. mctf) to improve picture
80 * quality.
81 *
82 * Hydra_Software_Devel/203   6/9/11 1:34p nilesh
83 * SW7425-44: Moved bIgnorePicture and bStallStc fields to before the
84 * bMute field in BAVC_MFD_Picture
85 *
86 * Hydra_Software_Devel/202   6/7/11 4:58p nilesh
87 * SW7425-44: Added BAVC_MFD_Picture.bStallStc
88 *
89 * Hydra_Software_Devel/201   5/20/11 12:02p pntruong
90 * SW7425-616: Added VP6 as an enum in BAVC_VideoCompressionStd.
91 *
92 * Hydra_Software_Devel/200   2/15/11 3:59p jgarrett
93 * SW7422-146: Adding additional codecs
94 *
95 * Hydra_Software_Devel/199   2/8/11 12:34p nilesh
96 * SW7425-1: Added BAVC_VideoCompressionProfile and
97 * BAVC_VideoCompressionLevel enums
98 *
99 * Hydra_Software_Devel/198   2/7/11 11:52a vanessah
100 * SW7425-32: undo the changes made in version 197
101 *
102 * Hydra_Software_Devel/197   2/7/11 10:48a vanessah
103 * SW7425-32: fix 7420 compile error
104 *
105 * Hydra_Software_Devel/196   2/3/11 4:39p nilesh
106 * SW7425-38,SW7425-1,SW7425-56: Removed bavc_enc.h
107 *
108 * Hydra_Software_Devel/195   2/1/11 4:56p nilesh
109 * SW7425-38,SW7425-1,SW7425-56: Added protocol to encoder buffer status
110 *
111 * Hydra_Software_Devel/194   2/1/11 4:14p nilesh
112 * SW7425-1,SW7425-38: Combined common portions of audio/video compressed
113 * buffer descriptors
114 *
115 * Hydra_Software_Devel/193   11/18/10 4:08p nilesh
116 * SW7425-38: Fixed compilation issue related to changed to bavc_rap.h and
117 * bavc_vce.h
118 *
119 * Hydra_Software_Devel/192   11/3/10 2:31p hongtaoz
120 * SW7425-43: changed picture coding type name space to be generic;
121 * updated comments about picture coding type;
122 *
123 * Hydra_Software_Devel/191   10/25/10 7:23p vanessah
124 * SW7422-43:  Handle GFD programming for 3D.
125 *
126 * Hydra_Software_Devel/190   10/22/10 6:59p vanessah
127 * SW7425-46:  ViCE2 meta data mailbox register
128 *
129 * Hydra_Software_Devel/189   10/15/10 3:52p yuxiaz
130 * SW7422-39: Added BAVC_SourceId_eMpeg2.
131 *
132 * Hydra_Software_Devel/188   10/11/10 3:17p hongtaoz
133 * SW7425-38: added encoders common files;
134 *
135 * Hydra_Software_Devel/186   10/11/10 11:08a jessem
136 * SW7420-173: Added Video Feeders 0, 1, 2, 3, and 4 to BAVC_SourceId.
137 *
138 * Hydra_Software_Devel/184   9/1/10 5:01p yuxiaz
139 * SW7422-29: Update XVD to AVC structure with 3D requirements
140 *
141 * Hydra_Software_Devel/183   8/5/10 5:12p darnstein
142 * SW7422-46: define second bypass path for VBI software. The 7422 chipset
143 * is the first to require this.
144 *
145 * Hydra_Software_Devel/182   3/18/10 11:31a yuxiaz
146 * SW7405-3954: Remove dependence of brdc.h
147 *
148 * Hydra_Software_Devel/181   3/17/10 3:32p yuxiaz
149 * SW7405-3954: Use RDC reserved registers to coordinate programming of
150 * VBI encoder control registers between BVBI and BVDC.
151 *
152 * Hydra_Software_Devel/180   1/6/10 10:27a btosi
153 * SW7405-3137: added BAVC_VideoCompressionStd_eSVC to be compatible with
154 * AVC
155 *
156 * Hydra_Software_Devel/179   12/21/09 11:11a jasonx
157 * SW35230-32: HD_DVI changes for input control
158 *
159 * Hydra_Software_Devel/178   12/11/09 3:11p pntruong
160 * SW7408-17: Adding initial APE support.
161 *
162 * Hydra_Software_Devel/NEXUS_SOFT_AUDIO/1   12/8/09 11:09a jgarrett
163 * SW7408-17: Adding initial APE support
164 *
165 * Hydra_Software_Devel/177   10/16/09 5:21p darnstein
166 * SW7405-3191: Back out all changes in pixel frequency handling. New
167 * design coming soon.
168 *
169 * Hydra_Software_Devel/176   10/15/09 4:53p darnstein
170 * SW7405-3191: Pixel frequency is now defined as both a bitmask, and an
171 * enum. The bitmask option is DEPRECATED.
172 *
173 * Hydra_Software_Devel/175   10/6/09 2:41p davidp
174 * SW7405-3137: Add MVC video compression standard
175 *
176 * Hydra_Software_Devel/174   8/3/09 1:58p pntruong
177 * PR57256: In bavc.h, 7.943 frame rate should be 7.493.
178 *
179 * Hydra_Software_Devel/173   7/8/09 4:02p pntruong
180 * PR42134: Added parameters for AFD value from the stream for Active
181 * Format Descriptors.
182 *
183 * Hydra_Software_Devel/172   6/24/09 3:29p yuxiaz
184 * PR50994: BAVC To Extend enums to Support Newer Chroma Sample Location
185 * Types
186 *
187 * Hydra_Software_Devel/170   3/25/09 5:54p pntruong
188 * PR52524: Used the index determined by upstream block.
189 *
190 * Hydra_Software_Devel/169   3/9/09 1:27p pntruong
191 * PR52524: Added support for hdmi rgb quantization of full range and
192 * limited range.
193 *
194 * Hydra_Software_Devel/168   1/7/09 10:46a yuxiaz
195 * PR44579: Add 7.943 and 14.985 frame rates to bavc.h
196 *
197 * Hydra_Software_Devel/167   12/10/08 10:18a yuxiaz
198 * PR49634: XVD to Tell VDC If Cadence Match Should be Ignored.
199 *
200 * Hydra_Software_Devel/166   12/1/08 3:03p yuxiaz
201 * PR49664: PR49664 : Add AAC HE to the list of compression standards
202 *
203 * Hydra_Software_Devel/PR49664/1   11/25/08 5:21p shyam
204 * PR49664 : Add AAC HE to the list of compression standards
205 *
206 * Hydra_Software_Devel/164   2/26/08 2:17p yuxiaz
207 * PR38429: Put back BAVC_AudioFormat_eAVS,
208 *
209 * Hydra_Software_Devel/163   2/8/08 5:25p rgreen
210 * PR39232:Merge Changes
211 *
212 * Hydra_Software_Devel/bdvd_v10/7   2/1/08 11:13a mpeteri
213 * PR_7394 [ Export setting required to choose between reencode or pcm ].
214 * Fixes for PR7394 and PR6652 - this checkin is built upon 1/31 RAP
215 * label and requires that the RAP label be below v10 latest rule in the
216 * config spec.  An updated config spec will be sent out to demonstrate
217 * this requirement.  NOTE this is temporary and will go back to normal
218 * when RAP label picks up the branched changes.
219 * RAP label to use - RAP_7440_FW_Phase2D_20080131
220 *
221 * Hydra_Software_Devel/bdvd_v10/fix_bdvd_pr7394/1   1/30/08 3:40p mpeteri
222 * update from 6652 branch
223 *
224 * Hydra_Software_Devel/bdvd_v10/fix_bdvd_pr6652/2   1/24/08 1:51p mpeteri
225 * update from Hydra for VDC
226 *
227 * Hydra_Software_Devel/bdvd_v10/6   1/17/08 2:16p nprao
228 * PR_7285 [ Add xvYcc support ].  Updated VDC for xvYcc support and added
229 * API for the application to enable xvYcc.
230 *
231 * Hydra_Software_Devel/177   10/16/09 5:21p darnstein
232 * SW7405-3191: Back out all changes in pixel frequency handling. New
233 * design coming soon.
234 *
235 * Hydra_Software_Devel/176   10/15/09 4:53p darnstein
236 * SW7405-3191: Pixel frequency is now defined as both a bitmask, and an
237 * enum. The bitmask option is DEPRECATED.
238 *
239 * Hydra_Software_Devel/175   10/6/09 2:41p davidp
240 * SW7405-3137: Add MVC video compression standard
241 *
242 * Hydra_Software_Devel/174   8/3/09 1:58p pntruong
243 * PR57256: In bavc.h, 7.943 frame rate should be 7.493.
244 *
245 * Hydra_Software_Devel/173   7/8/09 4:02p pntruong
246 * PR42134: Added parameters for AFD value from the stream for Active
247 * Format Descriptors.
248 *
249 * Hydra_Software_Devel/172   6/24/09 3:29p yuxiaz
250 * PR50994: BAVC To Extend enums to Support Newer Chroma Sample Location
251 * Types
252 *
253 * Hydra_Software_Devel/170   3/25/09 5:54p pntruong
254 * PR52524: Used the index determined by upstream block.
255 *
256 * Hydra_Software_Devel/169   3/9/09 1:27p pntruong
257 * PR52524: Added support for hdmi rgb quantization of full range and
258 * limited range.
259 *
260 * Hydra_Software_Devel/168   1/7/09 10:46a yuxiaz
261 * PR44579: Add 7.943 and 14.985 frame rates to bavc.h
262 *
263 * Hydra_Software_Devel/167   12/10/08 10:18a yuxiaz
264 * PR49634: XVD to Tell VDC If Cadence Match Should be Ignored.
265 *
266 * Hydra_Software_Devel/166   12/1/08 3:03p yuxiaz
267 * PR49664: PR49664 : Add AAC HE to the list of compression standards
268 *
269 * Hydra_Software_Devel/PR49664/1   11/25/08 5:21p shyam
270 * PR49664 : Add AAC HE to the list of compression standards
271 *
272 * Hydra_Software_Devel/164   2/26/08 2:17p yuxiaz
273 * PR38429: Put back BAVC_AudioFormat_eAVS,
274 *
275 * Hydra_Software_Devel/163   2/8/08 5:25p rgreen
276 * PR39232:Merge Changes
277 *
278 * Hydra_Software_Devel/162   1/25/08 3:22p katrep
279 * PR38429: Added AVS audio format
280 *
281 * Hydra_Software_Devel/161   1/4/08 2:28p albertl
282 * PR38150:  Added BAVC_TransferCharacteristics_eIec_61966_2_4;
283 *
284 * Hydra_Software_Devel/160   10/19/07 10:49a pntruong
285 * PR35185: PCRlib needs BAVC_PTSInfo to carry additional information.
286 *
287 * Hydra_Software_Devel/159   7/23/07 7:31p pntruong
288 * PR32948: Video Compression Standard in BXVD_StartDecode should be
289 * MPEG2DTV only DSS_ES.
290 *
291 * Hydra_Software_Devel/158   7/16/07 5:27p albertl
292 * PR31658:  Added FGT fields.
293 *
294 * Hydra_Software_Devel/157   6/26/07 2:35p pntruong
295 * PR32241: add a new variable eColorSpace for HDMI callback structure
296 * that uses the pixel encoding from hdmi.
297 *
298 * Hydra_Software_Devel/PR32241/1   6/20/07 6:30p honglang
299 * PR32241: add a new variable eColorSpace for HDMI callback structure
300 *
301 * Hydra_Software_Devel/156   6/12/07 1:02p pntruong
302 * PR32070: Add BAVC_AudioSamplingRate enums for 8kHz, 12kHz and
303 * 11.025kHz.
304 *
305 * Hydra_Software_Devel/155   6/8/07 12:32p yuxiaz
306 * PR30016: Added BAVC_StripeWidth_e256Byte in BAVC_StripeWidth.
307 *
308 * Hydra_Software_Devel/bdvd_v10/fix_bdvd_pr6652/1   1/22/08 2:15p carson
309 * internal HDMI
310 *
311 * Hydra_Software_Devel/bdvd_v10/5   8/17/07 8:39p vijayk
312 * PR_5077 [ Support for "bPictureRepeatFlag" ].  This is to inform any
313 * consumers of DM isr that the DM is presenting the first field of a
314 * picture
315 *
316 * Hydra_Software_Devel/bdvd_v10/5   8/17/07 8:37p vijayk
317 * PR5077: Addition of picture repeat flag
318 *
319 * Hydra_Software_Devel/bdvd_v10/5   8/18/07 12:30a parijat
320 * bFrameBufferRepeatFlag added
321 *
322 * Hydra_Software_Devel/bdvd_v10/4   6/6/07 3:58p therman
323 * PR_4238 [ &nbsp ].  PR4238 - Fix BAVC sample rate enum for 11.025 kHz
324 *
325 * Hydra_Software_Devel/bdvd_v10/fix_bdvd_pr4238/1   6/6/07 3:43p therman
326 * PR4238 - Fix BAVC sample rate enum for 11.025 kHz
327 *
328 * Hydra_Software_Devel/bdvd_v10/3   6/1/07 1:33p nprao
329 * Increased BAVC_MOSAIC_MAX to 32 for 32 clear rectangles. This change
330 * will also go in the mainline later.
331 *
332 * Hydra_Software_Devel/bdvd_v10/2   5/29/07 4:30p vijayk
333 * PR31658: 7440B: Updates to bavc.h [Audio samplingrate updates and merge
334 * from Hydra latest]
335 *
336 * Hydra_Software_Devel/154   5/24/07 7:57p hongtaoz
337 * PR26255: updated comments for BAVC_MFD_Picture;
338 *
339 * Hydra_Software_Devel/153   4/24/07 1:29p yuxiaz
340 * PR30016: Added stripe width in BAVC_MFD_Picture.
341 *
342 * Hydra_Software_Devel/bdvd_v10/1   4/24/07 1:13p nilesh
343 * PR22766: Added FGT heap handle and data pointer to BAVC_MFD_Picture
344 * struct
345 *
346 * Hydra_Software_Devel/152   2/13/07 6:32p shyam
347 * PR 27542 : Added Audio compression standards for transcoder use into
348 * AVC
349 *
350 * Hydra_Software_Devel/151   2/8/07 4:57p katrep
351 * PR25430: Moved the xpt related defines from bavc.h to bavc_xpt.h
352 *
353 * Hydra_Software_Devel/150   2/5/07 7:24p katrep
354 * PR27518: Added support mpeg audio 2.5
355 *
356 * Hydra_Software_Devel/149   12/18/06 11:15p pntruong
357 * PR22577: Merged back to mainline.
358 *
359 * Hydra_Software_Devel/Refsw_Devel_3563/6   12/14/06 11:23a pntruong
360 * PR26322: Fixed build errors for single path.
361 *
362 * Hydra_Software_Devel/Refsw_Devel_3563/5   12/14/06 11:08a pntruong
363 * PR26322:  Merged from mainline.
364 *
365 * Hydra_Software_Devel/Refsw_Devel_3563/4   12/11/06 5:19p albertl
366 * PR24587:  Added 3rd GFX Feeder source.
367 *
368 * Hydra_Software_Devel/Refsw_Devel_3563/3   12/6/06 4:17p pntruong
369 * PR26255:  Added more descriptions and usages of bFrameProgressive,
370 * bStreamProgressive, and eSourcePolarity.
371 *
372 * Hydra_Software_Devel/148   12/12/06 4:24p gmullen
373 * PR24806: Explicit support for MP3.
374 *
375 * Hydra_Software_Devel/147   12/11/06 10:03p pntruong
376 * PR26322: For modular VEC, BVDC needs to disclose choice of VEC to BVBI.
377 *
378 * Hydra_Software_Devel/146   12/8/06 3:13p pntruong
379 * PR26322: For modular VEC, BVDC needs to disclose choice of VEC to BVBI.
380 * Updated additional comments.
381 *
382 * Hydra_Software_Devel/145   12/6/06 4:07p pntruong
383 * PR26255:  Added more descriptions and usages of bFrameProgressive,
384 * bStreamProgressive, and eSourcePolarity.
385 *
386 * Hydra_Software_Devel/144   11/30/06 8:37p gaurava
387 * PR26255: Added description of a few fields in the BAVC_MFD_Picture data
388 * structure.
389 *
390 * Hydra_Software_Devel/143   11/29/06 4:44p pntruong
391 * PR26255: Documentation for BAVC_MFD_Picture has gone out of date.
392 *
393 * Hydra_Software_Devel/142   11/28/06 5:05p pntruong
394 * PR23189: Removed chip specific ifdefs.
395 *
396 * Hydra_Software_Devel/141   11/2/06 11:44a syang
397 * PR 23331:  update desc for sending gfx surface to MFD
398 *
399 * Hydra_Software_Devel/140   11/2/06 8:39a gmullen
400 * PR23189: Added PicIncDecCtrl to BAVC_XptContextMap.
401 *
402 * Hydra_Software_Devel/139   10/25/06 6:27p katrep
403 * PR25179: Added support for SVP OTF.
404 *
405 * Hydra_Software_Devel/138   10/12/06 5:15p katrep
406 * PR24899: Added itb es enum for MPEG1 video required for VCD playback.
407 *
408 * Hydra_Software_Devel/137   10/5/06 4:49p gmullen
409 * PR24743: Added compression standard enum for MPEG4 part 2
410 *
411 * Hydra_Software_Devel/136   10/5/06 11:55a gmullen
412 * PR 24743: Added ITB ES enum for MPEG4.
413 *
414 * Hydra_Software_Devel/135   9/26/06 11:20a hongtaoz
415 * PR24539: added range remapping setting for VC1;
416 *
417 * Hydra_Software_Devel/134   9/12/06 2:00p gmullen
418 * PR15309: Added VC1 simple/main and H263 support for RAVE.
419 *
420 * Hydra_Software_Devel/133   9/12/06 1:05p syang
421 * PR 23331: add desc for sending gfx surface to MFD.
422 *
423 * Hydra_Software_Devel/132   8/4/06 5:21p gmullen
424 * PR23158: Added WMA support.
425 *
426 * Hydra_Software_Devel/131   8/2/06 2:17p hongtaoz
427 * PR18233: added channel index to the xvd_to_vdc structure and more
428 * comments for mosaic mode;
429 *
430 * Hydra_Software_Devel/130   7/24/06 3:25p gmullen
431 * PR20082: Added picture counter reg to BAVC_XptContextMap
432 *
433 * Hydra_Software_Devel/129   7/24/06 10:36a gmullen
434 * PR20082: Added support for picture counters.
435 *
436 * Hydra_Software_Devel/128   7/18/06 10:31a maivu
437 * PR 21107: Add support for VC1 simple main profile
438 *
439 * Hydra_Software_Devel/127   7/17/06 5:56p pntruong
440 * PR18233: Moved MOSAIC_MAX to avc since other PIs need to access the
441 * definition.
442 *
443 * Hydra_Software_Devel/126   6/19/06 10:21a pntruong
444 * PR22095: Clarify range of idr_pic_id.
445 *
446 * Hydra_Software_Devel/125   6/7/06 12:46p pntruong
447 * PR21975: Need to remove CHP_REV from code in AVC.
448 *
449 * Hydra_Software_Devel/124   5/9/06 5:39p hongtaoz
450 * PR20750: fixed comments for color space enums; 480p/576p formats are
451 * treated in SD color space;
452 *
453 * Hydra_Software_Devel/123   4/20/06 5:51p pntruong
454 * PR20750: Please update bavc.h to reflect presence of third VEC.
455 *
456 * Hydra_Software_Devel/122   4/18/06 9:46a pntruong
457 * PR20042:  Update panscan comment regardings clipped source.
458 *
459 * Hydra_Software_Devel/121   4/17/06 2:55p pntruong
460 * PR20042: Added new source clipping for AVC decoding.
461 *
462 * Hydra_Software_Devel/120   4/11/06 4:11p pntruong
463 * PR20750: Please update bavc.h to reflect presence of third VEC.
464 *
465 * Hydra_Software_Devel/117   4/4/06 1:34p hongtaoz
466 * PR20403: add triple display support for 7400;
467 *
468 * Hydra_Software_Devel/116   3/31/06 12:13a ssavekar
469 * PR13740: add MAD support for 7038 C0
470 * Added code for setting of flag "bPictureRepeatFlag". This flag will be
471 * set to true if DM is repeating a picture (frame/field). This flag will
472 * not be set to true if DM is alternating between two fields of the same
473 * frame.
474 *
475 * Hydra_Software_Devel/116   3/30/06 11:46p ssavekar
476 * PR13740: add MAD support for 7038 C0
477 * Added code for setting of flag "bPictureRepeatFlag". This flag will be
478 * set to true if DM is repeating a picture (frame/field). This flag will
479 * not be set to true if DM is alternating between two fields of the same
480 * frame.
481 *
482 * Hydra_Software_Devel/115   3/7/06 5:00p bandrews
483 * PR19664: Removed conditional compile in sampling rate enum
484 *
485 * Hydra_Software_Devel/114   2/7/06 2:48p pntruong
486 * PR19106: Initial xvd decode of pid 0x1022 in
487 * estarFeed_20051223_1.5min.mpg causes segfault in bxvd_dispmgr.c.
488 * Added support for eSAR for mvd/avc on chip decoder.
489 *
490 * Hydra_Software_Devel/113   1/25/06 3:07p maivu
491 * PR 19138, PR 19157: Add sample aspect ratio support for AVC
492 *
493 * Hydra_Software_Devel/112   1/25/06 10:06a maivu
494 * PR 18545: Added userdata type for VC1
495 *
496 * Hydra_Software_Devel/111   1/12/06 12:09p hongtaoz
497 * PR18233: added pNext to BAVC_MVD_Picture structure to support mosaic
498 * mode;
499 *
500 * Hydra_Software_Devel/110   1/3/06 4:28p darnstein
501 * PR18545: Eliminate userdata_type enum for DSS. Simplify remaining
502 * enums. This was the consensus reached with David Erickson today, after
503 * consulting with Bill Fassl.
504 *
505 * Hydra_Software_Devel/MosaicMode_Feature_PR18233/2   12/23/05 10:19a hongtaoz
506 * PR18233: merge change from main branch;
507 *
508 * Hydra_Software_Devel/MosaicMode_Feature_PR18233/1   12/8/05 6:49p hongtaoz
509 * PR18233: add Mosaic mode;
510 *
511 * Hydra_Software_Devel/105   11/28/05 3:44p syang
512 * PR 12762: separate little endian and big endian when gfx sur goes to
513 * mgd; mute for bad gfx sur; add 4 more pxl fmts to fully use HW
514 *
515 * Hydra_Software_Devel/104   11/22/05 12:01p vijeth
516 * PR 17568: Add "key CRC frames" boolean to XVD and handle in VDC.
517 * Removed the Redundent flag bkeycrc
518 *
519 * Hydra_Software_Devel/103   11/18/05 8:12p ssavekar
520 * PR 17811: Need idr_pic_id and PicOrderCnt with CRC values
521 * Adding code and data structure fields for passing CRC related
522 * parameters to VDC.
523 *
524 * Hydra_Software_Devel/102   11/10/05 9:08a pblanco
525 * PR17568: Adding "key CRC frames" Boolean to XVD and handle in VDC.
526 *
527 * Hydra_Software_Devel/101   10/31/05 5:18p hongtaoz
528 * PR17879, PR17514: added ulAdjQp to the picture structure to support DNR
529 * programming;
530 *
531 * Hydra_Software_Devel/100   10/25/05 2:40p vsilyaev
532 * PR 17727: Relaxed condition test (test now exclusive).
533 *
534 * Hydra_Software_Devel/99   10/20/05 12:43p syang
535 * PR 12762: prepare to support feeding gfx surface by mfd
536 *
537 * Hydra_Software_Devel/98   10/19/05 11:41a pntruong
538 * PR17568: Added "key CRC frames" boolean to XVD and handle in VDC.
539 * Added bCrcCapture flag.
540 *
541 * Hydra_Software_Devel/97   10/11/05 6:29p rgreen
542 * PR17542: Share HDMI declarations between HDM and HDR portinginterfaces
543 *
544 * Hydra_Software_Devel/96   9/21/05 3:00p jasonh
545 * PR 17261: Added mem heap to MVD/XVD structure.
546 *
547 * Hydra_Software_Devel/95   9/21/05 2:12p gmullen
548 * PR15309: Added enums for AAC HE and AC3+ audio support.
549 *
550 * Hydra_Software_Devel/94   9/1/05 8:01p gmullen
551 * PR15309: Added BAVC_ItbEsType_eVc1Video to support VC1 video.
552 *
553 * Hydra_Software_Devel/93   9/1/05 6:23p jasonh
554 * PR 16967: Removing XVD source
555 *
556 * Hydra_Software_Devel/92   9/1/05 2:07p pntruong
557 * PR16676: Restored xvd picture name for legacy code.
558 *
559 * Hydra_Software_Devel/91   9/1/05 11:21a pntruong
560 * PR16676, PR16941: Changed pan scan values in BAVC_MFD_Picture /
561 * BAVC_VDC_HdDvi_Picture from 16 bit to 32 bit.
562 *
563 * Hydra_Software_Devel/91   9/1/05 11:20a pntruong
564 * PR16676, PR16941: Changed pan scan values in BAVC_MFD_Picture /
565 * BAVC_VDC_HdDvi_Picture from 16 bit to 32 bit.
566 *
567 * Hydra_Software_Devel/PR16676/1   9/1/05 3:39p shyam
568 * PR 16676 : Change pan scan values in BAVC_MFD_Picture from 16 bit to 32
569 * bit
570 *
571 * Hydra_Software_Devel/90   8/31/05 3:20p gmullen
572 * PR15309: More changes for AVC support
573 *
574 * Hydra_Software_Devel/89   8/31/05 2:24p gmullen
575 * PR15309: Changed value of BAVC_ItbEsType_eAvcVideo.
576 *
577 * Hydra_Software_Devel/88   8/29/05 5:59p pntruong
578 * PR16824: Fixed previous check-in build errors.
579 *
580 * Hydra_Software_Devel/87   8/29/05 2:23p jasonh
581 * PR 16824: Removed unneeded elements. Clarified comments for other
582 * entries.
583 *
584 * Hydra_Software_Devel/86   8/24/05 2:56p gmullen
585 * PR15309: Added comments for ContextIdx.
586 *
587 * Hydra_Software_Devel/85   8/24/05 2:53p gmullen
588 * PR15309: Added ContextIdx to RAVE register mapping.
589 *
590 * Hydra_Software_Devel/84   8/24/05 10:02a maivu
591 * PR 16400: Removed clipping flag since it is no longer needed
592 *
593 * Hydra_Software_Devel/83   8/22/05 3:17p maivu
594 * PR 16400: Added flag to indicate whether clipping was applied for
595 * panscan.
596 *
597 * Hydra_Software_Devel/82   8/12/05 8:55a gmullen
598 * PR15309: Added endianess control to BAVC_CdbItbConfig.
599 *
600 * Hydra_Software_Devel/81   8/9/05 5:35p maivu
601 * PR 16582: Added lPtsStcOffset to BAVC_VDC_HdDvi_Picture
602 *
603 * Hydra_Software_Devel/80   8/4/05 12:53p ebrakus
604 * PR16052: Added data structure for communication of ITB/CDB sizes
605 * between video decoder and XPT
606 *
607 * Hydra_Software_Devel/79   7/22/05 3:30p hongtaoz
608 * PR15630, PR16218: removed chip-dependency from bavc.h;
609 *
610 * Hydra_Software_Devel/78   7/22/05 10:10a yuxiaz
611 * PR16182: Change pan scan variables to 32-bit in BAVC_XVD_Picture.
612 *
613 * Hydra_Software_Devel/77   7/18/05 6:04p hongtaoz
614 * PR15630, PR16218: sychronize VBI encoder control registers programming
615 * through scratch registers between BVDC and BVBI;
616 *
617 * Hydra_Software_Devel/76   7/15/05 9:42a gmullen
618 * PR15309: Added CDB and ITB buffer structs for RAVE.
619 *
620 * Hydra_Software_Devel/75   7/14/05 3:22p rgreen
621 * PR15086: Add all HDMI RAM Packet Types; to be shared between HDM and
622 * HDR modules.
623 *
624 * Hydra_Software_Devel/74   7/13/05 9:48a yuxiaz
625 * PR16182: Remove #ifdef from BAVC_SourceId.
626 *
627 * Hydra_Software_Devel/73   7/12/05 7:19p rgreen
628 * PR15086: Add HDMI specific enumerations for AVI Infoframe for sharing
629 * between HDM and HDR. Ise BAVC_Hddvi_Picture for data transfer between
630 * HDR and VDC blocks
631 *
632 * Hydra_Software_Devel/72   7/12/05 9:23a yuxiaz
633 * PR16182: Added new BAVC_SourceId and BAVC_XVD_Picture for 7401 XVD
634 * input.
635 *
636 * Hydra_Software_Devel/71   6/30/05 5:05p rgreen
637 * PR14847: Modify HDMI PI / Settop API to detect/configure audio
638 * configuration
639 *
640 * Hydra_Software_Devel/70   6/27/05 4:33p jasonh
641 * PR 16013: Edits for 7401
642 *
643 * Hydra_Software_Devel/69   6/23/05 6:25p vsilyaev
644 * PR 15967: Added common type for tagged PTS.
645 *
646 * Hydra_Software_Devel/68   5/31/05 1:38p darnstein
647 * PR 15707: new typedef BAVC_USERDATA_info and two supporting typedefs.
648 *
649 * Hydra_Software_Devel/68   5/31/05 1:37p darnstein
650 * PR 15707: new BAVC_USERDATA_info typedef and two supporting typedefs.
651 *
652 * Hydra_Software_Devel/67   5/18/05 11:40a agin
653 * PR14720: B2, C1, C2 compilation support.
654 *
655 * Hydra_Software_Devel/67   5/18/05 11:40a agin
656 * PR14720: B2, C1, C2 compilation support.
657 *
658 * Hydra_Software_Devel/66   5/3/05 1:46p hongtaoz
659 * PR14976: added support for 0-255 full range RGB dvi output;
660 *
661 * Hydra_Software_Devel/65   5/3/05 1:42p maivu
662 * PR 15086: Added bStreamProgressive field for hddvi source
663 *
664 * Hydra_Software_Devel/64   4/19/05 4:16p sri
665 * PR 14858 : Adding Progressive Frame bit
666 *
667 * Hydra_Software_Devel/63   4/13/05 1:28p bandrews
668 * PR13974: 3560 also has SPDIF receiver with many sample rates
669 *
670 * Hydra_Software_Devel/62   3/18/05 6:35p pntruong
671 * PR14494: Basic vdc up and running.  Background and passed output format
672 * switch test.
673 *
674 * Hydra_Software_Devel/61   2/17/05 5:31p maivu
675 * PR 13882: Added compressed multi-stream to BAVC_StreamType
676 *
677 * Hydra_Software_Devel/60   1/28/05 11:14a yuxiaz
678 * PR13569: Change bResetHdDvi to bResetHdDviBegin and bResetHdDviEnd to
679 * sync vdc with xvd.
680 *
681 * Hydra_Software_Devel/59   1/10/05 10:34a maivu
682 * PR 13238: Rename bNeedSync to bResetHdDvi
683 *
684 * Hydra_Software_Devel/58   12/22/04 2:31p darnstein
685 * PR 13631:  Implement callback for the unwanted interrupt.
686 * PR 13365:  Support new AVC information (partially done).
687 *
688 * Hydra_Software_Devel/57   12/20/04 2:11p darnstein
689 * PR 13506: Adapt to change BAVC_AspectRatio->BFMT_AspectRatio.
690 *
691 * Hydra_Software_Devel/56   12/9/04 4:20p maivu
692 * PR 13238: Added more info to BAVC_VDC_HdDvi_Picture
693 *
694 * Hydra_Software_Devel/55   11/4/04 5:51p gmullen
695 * PR11894: Added parser bands 6, 7, 8, and 9 to BAVC_XptOutputId .
696 *
697 * Hydra_Software_Devel/54   11/2/04 4:57p bandrews
698 * PR12965: Added Audio_Info struct for uniformity between audio and video
699 * rate change callbacks.
700 *
701 * Hydra_Software_Devel/53   10/19/04 4:52p pntruong
702 * PR13044: Implement callback to notify external modules of VDC's rate
703 * manager update.
704 *
705 * Hydra_Software_Devel/52   10/12/04 11:35a maivu
706 * PR 11978: Renamed Windows media 9 to VC1
707 *
708 * Hydra_Software_Devel/51   9/28/04 9:18p shyam
709 * PR 12588 : Provide field in BAVC_MFD_Picture struct to indicate whether
710 * source is progressive or interlaced
711 *
712 * Hydra_Software_Devel/50   9/21/04 2:41p jasonh
713 * PR 12728: Fixed -pdantic errors.
714 *
715 * Hydra_Software_Devel/49   8/26/04 6:36p syang
716 * PR 11266: added src picture call back func for gfx;  added src state to
717 * call back func for XVD sync;
718 *
719 * Hydra_Software_Devel/48   8/13/04 2:27p maivu
720 * PR 11978: Added video compression enum for XVD
721 *
722 * Hydra_Software_Devel/47   7/16/04 1:20p aram
723 * PR11788: added some more enums to SR
724 *
725 * Hydra_Software_Devel/46   6/28/04 3:17p hongtaoz
726 * PR11613: merged HDMI-specific color space enums into avc matrix coeff
727 * enums to be shared across vdc and hdmi porting interfaces;
728 *
729 * Hydra_Software_Devel/45   6/25/04 10:40a maivu
730 * PR 11658: Rename BAVC_HdDvi_Picture to BAVC_VDC_HdDvi_Picture
731 *
732 * Hydra_Software_Devel/44   6/24/04 3:09p maivu
733 * PR 11658: Rename BAVC_XVD_Field to BAVC_HdDvi_Picture
734 *
735 * Hydra_Software_Devel/43   5/24/04 3:14p jasonh
736 * PR 11189: Merge down from B0 -> main line
737 *
738 * Hydra_Software_Devel/Refsw_Devel_7038_B0/3   5/21/04 6:56p hongtaoz
739 * PR11103: added user-configurable default HD/SD color matrix settings to
740 * the BVDC default setting structure; updated comments for color space
741 * enums;
742 *
743 * Hydra_Software_Devel/Refsw_Devel_7038_B0/2   5/19/04 10:08a yuxiaz
744 * PR 10943: Merged in BAVC_XVD_Field.
745 *
746 * Hydra_Software_Devel/42   5/17/04 4:50p maivu
747 * PR 10943: Added BAVC_XVD_Field
748 *
749 * Hydra_Software_Devel/41   4/30/04 5:02p shyam
750 * PR 10286 : Added unknowns in enums for AspectRatio and FrameRateCode
751 *
752 * Hydra_Software_Devel/40   4/7/04 6:47p hongtaoz
753 * PR10484: change AVC module's color space parameters as enums; added
754 * some implementation comments.
755 *
756 * Hydra_Software_Devel/39   4/5/04 7:29p hongtaoz
757 * PR10484: Change matrix coeffecient enums in AVC module to comply with
758 * MPEG-2 video spec.
759 *
760 * Hydra_Software_Devel/38   4/2/04 3:26p gmullen
761 * PR8852: Added BAVC_GetXptId().
762 *
763 * Hydra_Software_Devel/37   3/12/04 6:56p hongtaoz
764 * PR10003: Change aspect ratio enums in AVC module; removed
765 * ProgressiveSequence bool.
766 *
767 * Hydra_Software_Devel/36   12/29/03 5:05p aram
768 * PR8967: added timebase 3
769 *
770 * Hydra_Software_Devel/35   12/19/03 4:01p jasonh
771 * PR 9073: brought back scan type structure (used for HDMI)
772 *
773 * Hydra_Software_Devel/34   12/19/03 2:37p pntruong
774 * PR 9073:  Renamed BAVC_Polarity enums.
775 *
776 * Hydra_Software_Devel/33   12/19/03 1:35p jasonh
777 * PR 9073: Combined scan types and field polarity enums into one enum.
778 * Removed bFormatChange element from structure.
779 *
780 * Hydra_Software_Devel/32   12/5/03 4:35p jasonh
781 * PR 8841: Clarified units of ulStride.
782 *
783 * Hydra_Software_Devel/31   12/4/03 10:47a jasonh
784 * PR 8841: Added virtual memory description to luma/chroma buffers.
785 *
786 * Hydra_Software_Devel/30   12/4/03 10:47p shyam
787 * Changed the Buffer address from uint32 to void * pointers
788 *
789 * Hydra_Software_Devel/29   12/2/03 5:01p aram
790 * fixed a typo
791 *
792 * Hydra_Software_Devel/28   12/2/03 11:58a vsilyaev
793 * Added type for MPEG stream formats.
794 *
795 * Hydra_Software_Devel/28   12/2/03 11:55a vsilyaev
796 * Added common enum for the MPEG stream formats.
797 *
798 * Hydra_Software_Devel/27   12/2/03 11:29a jasonh
799 * Split out transfer characteristics and color primaries into their own
800 * structure elements.
801 *
802 * Hydra_Software_Devel/26   11/24/03 1:54p jasonh
803 * Returned end of file newline (warnings)
804 *
805 * Hydra_Software_Devel/25   11/14/03 5:30p rgreen
806 * Add constants for Audio Bits and Audio Format.  Supported parameters
807 * will be used to query HDMI Receivers for their supported
808 * parameters.
809 *
810 * Hydra_Software_Devel/24   11/12/03 10:48a jasonh
811 * PR 8606: Added interrupt field polarity to MVD_Field structure.
812 *
813 * Hydra_Software_Devel/23   11/10/03 4:04p yuxiaz
814 * Change BAVC_InterpolationMode to match hardware values.
815 *
816 * Hydra_Software_Devel/22   10/31/03 4:42p aram
817 * moving audio SR from baud_types to this header file
818 *
819 * Hydra_Software_Devel/20   10/16/03 3:45p pntruong
820 * Updated source id to handle analog component inputs.
821 *
822 * Hydra_Software_Devel/19   10/9/03 6:07p darnstein
823 * Undo my change to the field polarity enum, it broke the vdc pi module.
824 * Also, consistently apply a starting value to each enum.  The latter is
825 * a cosmetic issue.
826 *
827 * Hydra_Software_Devel/18   10/9/03 1:26p darnstein
828 * Enum for field parity can now be used as a bitmask.
829 *
830 * Hydra_Software_Devel/17   10/2/03 4:02p yuxiaz
831 * Change pan scan in BAVC_MFD_Picture from uint16_t to int16_t.
832 *
833 * Hydra_Software_Devel/16   9/25/03 12:45p jasonh
834 * Fixed MPEG enumeration. Added 444 to YCbCr enum.
835 *
836 * Hydra_Software_Devel/16   9/25/03 12:07p jasonh
837 * Fixed mpeg type enumeration values and added 444 to YCbCr type.
838 *
839 * Hydra_Software_Devel/15   9/25/03 10:14a aram
840 * a field name change to eXptSourceId
841 *
842 * Hydra_Software_Devel/14   9/24/03 4:47p aram
843 * added timebase
844 *
845 * Hydra_Software_Devel/13   9/24/03 9:29a jasonh
846 * Changed enumeration values to match the ISO 13818 specification.
847 *
848 * Hydra_Software_Devel/12   9/23/03 2:32p yuxiaz
849 * Added bFormatChange, ulRowStride and more comments.
850 *
851 * Hydra_Software_Devel/11   9/15/03 10:50a marcusk
852 * Added standard transport output enum and structure.
853 *
854 * Hydra_Software_Devel/10   9/8/03 4:07p yuxiaz
855 * Change unsigned int to uint32_t
856 *
857 * Hydra_Software_Devel/9   9/3/03 1:45p jasonh
858 * Added bMute to MVD Field structure.
859 *
860 * Hydra_Software_Devel/7   9/2/03 2:38p pntruong
861 * PR7854: 7038 VDC porting interface shall differentiate the IF Demod
862 * analog video input with the line-in CVBS input.
863 *
864 * Hydra_Software_Devel/6   8/29/03 5:44p pntruong
865 * Moved BVDC_SourceId to BAVC_SourceId.
866 *
867 * Hydra_Software_Devel/5   8/29/03 11:37a darnstein
868 * Add enumeration BAVC_VbiPath.
869 *
870 * Hydra_Software_Devel/4   8/28/03 6:31p pntruong
871 * Moved BVDC_SourceId here, as BVBI also needed the source id when vbi
872 * BBVI_Decode_Create.
873 *
874 * Hydra_Software_Devel/3   8/11/03 9:02a jasonh
875 * (PR 7736) Added BT.601 to matrix coefficient selection.
876 *
877 * Hydra_Software_Devel/2   8/4/03 2:20p jasonh
878 * Initial shot at documentation comments.
879 *
880 * Hydra_Software_Devel/1   7/31/03 6:28p jasonh
881 * Initial version.
882 *
883 ***************************************************************************/
884
885#ifndef BAVC_H__
886#define BAVC_H__
887
888#include "bsur.h"
889#include "bfmt.h"
890
891#ifdef __cplusplus
892extern "C" {
893#endif
894
895/*=Module Overview: ********************************************************
896The purpose of this common utility is to create a location to contained
897shared data structures used to pass data between the various audio/video
898porting interface modules. This utility does not contain any functions.
899
900The modules currently using this common utility are
901   o MVD - MPEG Video Decoder
902   o VDC - Video Display Control
903   o XPT - Data Transport
904   o AUD - Audio
905   o XVD - X Video Decoder
906
907See Also:
908   BMVD_Open,
909   BVDC_Open
910****************************************************************************/
911/* xpt related common defines */
912#include "bavc_xpt.h"
913
914/***************************************************************************
915Summary:
916    These defines describe the scratch registers that hold the current
917    settings of the VBI Encoder control registers.
918
919Description:
920    Define scratch registers to coordinate programming of VBI encoder
921    control registers between BVBI and BVDC. BDC_Open would reset those
922    registers with the default setting, i.e. only VBI pass-through is
923    enabled; the following BVBI_Encode_ApplyChanges would update the
924    settings by read/modify/write those scratch registers; the following
925    vec vsync isr would read back the scratch setting and build RUL
926    to reprogram the corresponding VBI_ENC_xxx_Control register;
927
928See Also:
929    BVDC_Open
930    BVBI_Encode_ApplyChanges
931    BAVC_VbiPath
932***************************************************************************/
933/* this is the AVC wrapper of VBI_ENC_656_Ancil_Control register */
934#ifdef BCHP_RDC_scratch_i_ARRAY_BASE
935#define BAVC_VBI_ENC_BP_CTRL_SCRATCH     \
936        (BCHP_RDC_scratch_i_ARRAY_BASE + BCHP_RDC_scratch_i_ARRAY_END * sizeof(uint32_t))
937#define BAVC_VBI_ENC_0_CTRL_SCRATCH      \
938        (BCHP_RDC_scratch_i_ARRAY_BASE + (BCHP_RDC_scratch_i_ARRAY_END - 1) * sizeof(uint32_t))
939#define BAVC_VBI_ENC_1_CTRL_SCRATCH      \
940        (BCHP_RDC_scratch_i_ARRAY_BASE + (BCHP_RDC_scratch_i_ARRAY_END - 2) * sizeof(uint32_t))
941#define BAVC_VBI_ENC_2_CTRL_SCRATCH      \
942        (BCHP_RDC_scratch_i_ARRAY_BASE + (BCHP_RDC_scratch_i_ARRAY_END - 3) * sizeof(uint32_t))
943#endif
944
945/***************************************************************************
946Summary:
947    This definition defines the maximum number of mosaic rectangless in a window.
948
949Description:
950    This is for video window mosaic mode usage only.  The XVD/MVD and XPT also
951    needs this macro to allocate approriate number of channels.
952
953See Also:
954    BVDC_Window_SetMosaic, BVDC_Window_GetMosaicDstRects
955***************************************************************************/
956#define BAVC_MOSAIC_MAX                      (16)
957
958/***************************************************************************
959Summary:
960    This enumeration represents the available video input source.
961
962Description:
963    BAVC_SourceId is an enumeration which represents the source devices to
964    VDC module and VBI. It is needed by BVDC_Source_Create to create a
965    source handle, and BVBI_Decode_Create.
966
967    There are two major type of sources, the video source and graphics
968    source. For example, Mpeg feeder, vdec and ITU-R-656 input are video
969    sources, and graphics feeder is graphics source.
970
971    Right after the pixel data is input to VDC module, it is automatically
972    expanded to a 4:4:4:4 AYCrCb or ARGB format with 8 bits per component.
973    Then the expanded color components are further processed in the VDC
974    module.
975
976    After some intra picture processing, pixels from several source could
977    could be finally blended together in a compositor. Before the blending
978    is performed, color space conversion would be done automatically to
979    pixels from each source to match the main source.
980
981    And before the color space conversion, a video input could involve
982    dimension scaling / filtering, luma keying intra picture processing,
983    and a graphics input could involve a series of operations in the order
984    of color key, alpha pre-multiplying, horizontal up scaling, and gamma
985    correction.
986
987    The number of different sources (eMpeg0, eVdec0, and etc) might not be
988    available on all chipset.  This will be chip specific configurations.
989    Calling BVDC_Source_Create will return an error if the source is not
990    available on that particular chip.
991
992    There are two graphics feeders in the 7038 chip. Each of them fetches
993    pixel data from the video memory and sends to the video compositors. A
994    variety of YCrCb, ARGB and CLUT pixel formats are supported for both SD
995    and HD applications. Please refer to BPXL module for the complete list.
996
997    The eVfdn sources are used for graphics sources only. There are
998    limitations to its use. The corresponding CAP block cannot be used
999    because only 1 VFD can be used in the video path. Note that the use of
1000    CAP requires the use of its corresponding VFD. Only 1 window can be used
1001    with a VFD. All current window assignments with a particular VFD will
1002    remain. For example, VFD_0 will be used with the CMP0_V0 window.
1003
1004See Also:
1005    BVDC_Source_Create, BVDC_Source_Destroy, BVDC_Source_Handle
1006***************************************************************************/
1007typedef enum BAVC_SourceId
1008{
1009        BAVC_SourceId_eMpeg0 = 0,        /* Mpeg feeder 0 */
1010        BAVC_SourceId_eMpeg1,            /* Mpeg feeder 1 */
1011        BAVC_SourceId_eMpeg2,            /* Mpeg feeder 2 */
1012        BAVC_SourceId_eMpeg3,            /* Mpeg feeder 3 */
1013        BAVC_SourceId_eVdec0,            /* Analog video source from vdec0 */
1014        BAVC_SourceId_eVdec1,            /* Analog video source from vdec1 */
1015        BAVC_SourceId_e656In0,           /* ITU-R-656 video source.0 */
1016        BAVC_SourceId_e656In1,           /* ITU-R-656 video source 1 */
1017        BAVC_SourceId_eGfx0,             /* Gfx feeder 0 */
1018        BAVC_SourceId_eGfx1,             /* Gfx feeder 1 */
1019        BAVC_SourceId_eGfx2,             /* Gfx feeder 2 */
1020        BAVC_SourceId_eGfx3,             /* Gfx feeder 3 */
1021        BAVC_SourceId_eGfx4,             /* Gfx feeder 4 */
1022        BAVC_SourceId_eGfx5,             /* Gfx feeder 5 */
1023        BAVC_SourceId_eHdDvi0,           /* HD DVI Input 0 */
1024        BAVC_SourceId_eHdDvi1,           /* HD DVI Input 1 */
1025        BAVC_SourceId_eDs0,              /* DownStream Input 0 */
1026        BAVC_SourceId_eVfd0,             /* Video feeder 0 */
1027        BAVC_SourceId_eVfd1,             /* Video feeder 1 */
1028        BAVC_SourceId_eVfd2,             /* Video feeder 2 */
1029        BAVC_SourceId_eVfd3,             /* Video feeder 3 */
1030        BAVC_SourceId_eVfd4,             /* Video feeder 4 */
1031        BAVC_SourceId_eVfd5              /* Video feeder 5 */
1032
1033} BAVC_SourceId;
1034
1035/***************************************************************************
1036Summary:
1037        This enumeration represents the different analog decoder.
1038
1039Description:
1040        BAVC_DecoderId is an enumeration which represents the analog decoder
1041        that is repsonsible for decode analog input.
1042
1043        BAVC_DecoderId_eVindeco_0 -
1044                This represent the analog decoder (VINDECO) for VGA or YPrPb input.
1045
1046        BAVC_DecoderId_eVdec_0 -
1047                This represent the analog decoder (VDEC) for composite/SVIDEO/SCART/IF
1048                Demodulator input.
1049
1050        BAVC_DecoderId_e656In_0 -
1051                This represent the 656 input. This generally means external analog
1052                decoder.
1053
1054        BAVC_DecoderId_eMaxCount -
1055            Counter. Do not use.
1056
1057See Also:
1058        BANV_Source_GetDefaultSettings, BANV_Source_Create, BANV_Source_Destroy,
1059        BVDC_Source_SetDecoderID, BVDC_Source_GetDecoderID.
1060***************************************************************************/
1061typedef enum
1062{
1063        BAVC_DecoderId_eVindeco_0 = 0,
1064        BAVC_DecoderId_eVdec_0,
1065        BAVC_DecoderId_e656In_0,
1066
1067        BAVC_DecoderId_eMaxCount
1068
1069} BAVC_DecoderId;
1070
1071/***************************************************************************
1072Summary:
1073    This enumeration describes the VBI paths within the Video Encoder block
1074
1075Description:
1076    Contains the path taken inside the VEC, which is required by the VBI PI.
1077    BAVC_VbiPath_eVec0 - Represent the Primary VEC VBI encoder.
1078    BAVC_VbiPath_eVec1 - Represent the Secondary VEC VBI encoder.
1079    BAVC_VbiPath_eVec2 - Represent the Tertiary VEC VBI encoder.
1080    BAVC_VbiPath_eBypass0 - Represent the first 656 Bypass VEC VBI encoder.
1081    BAVC_VbiPath_eBypass1 - Represent the second 656 Bypass VEC VBI encoder.
1082
1083See Also:
1084    BVDC_Display_GetVbiPath
1085***************************************************************************/
1086typedef enum BAVC_VbiPath
1087{
1088        BAVC_VbiPath_eVec0 = 0,            /* Primary VEC path */
1089        BAVC_VbiPath_eVec1,                /* Secondary VEC path */
1090        BAVC_VbiPath_eVec2,                /* Tertiary VEC path */
1091        BAVC_VbiPath_eBypass0,             /* 656 vec */
1092        BAVC_VbiPath_eBypass1,             /* 656 vec */
1093
1094        BAVC_VbiPath_eUnknown              /* Unknown path */
1095
1096} BAVC_VbiPath;
1097
1098/***************************************************************************
1099Summary:
1100    Used to specify scan type.
1101
1102Description:
1103
1104See Also:
1105****************************************************************************/
1106typedef enum BAVC_ScanType
1107{
1108        BAVC_ScanType_eInterlaced = 0,   /* Interlaced */
1109        BAVC_ScanType_eProgressive       /* Progressive */
1110
1111} BAVC_ScanType;
1112
1113
1114/***************************************************************************
1115Summary:
1116    Used to specify field polarity.
1117
1118Description:
1119    The values are suitable for assignment to an integer bitmask.
1120
1121See Also:
1122****************************************************************************/
1123typedef enum BAVC_Polarity
1124{
1125        BAVC_Polarity_eTopField = 0,       /* Top field */
1126        BAVC_Polarity_eBotField,           /* Bottom field */
1127        BAVC_Polarity_eFrame               /* Progressive frame */
1128
1129} BAVC_Polarity;
1130
1131/***************************************************************************
1132Summary:
1133    Used to specify interpolation mode.
1134
1135Description:
1136
1137See Also:
1138****************************************************************************/
1139typedef enum BAVC_InterpolationMode
1140{
1141        BAVC_InterpolationMode_eField = 0,  /* Field */
1142        BAVC_InterpolationMode_eFrame       /* Frame */
1143
1144} BAVC_InterpolationMode;
1145
1146/***************************************************************************
1147Summary:
1148    Used to specify Chroma location type.
1149
1150Description:
1151    LT1-----C-----LT2
1152     |             |
1153     |             |
1154     A------B------|
1155     |             |
1156     |             |
1157    LB1-----D-----LB2
1158
1159    Luma sample position:
1160        Top field:    LT1, LT2
1161        Bottom field: LB1, LB2
1162
1163    Chroma sample position:
1164        BAVC_ChromaLocation_eType0: A
1165        BAVC_ChromaLocation_eType1: B
1166        BAVC_ChromaLocation_eType2: LT1
1167        BAVC_ChromaLocation_eType3: C
1168        BAVC_ChromaLocation_eType4: LB1
1169        BAVC_ChromaLocation_eType5: D
1170See Also:
1171****************************************************************************/
1172typedef enum BAVC_ChromaLocation
1173{
1174        BAVC_ChromaLocation_eType0 = 0,
1175        BAVC_ChromaLocation_eType1,
1176        BAVC_ChromaLocation_eType2,
1177        BAVC_ChromaLocation_eType3,
1178        BAVC_ChromaLocation_eType4,
1179        BAVC_ChromaLocation_eType5
1180
1181} BAVC_ChromaLocation;
1182
1183/* Backward compatibility */
1184#define BAVC_MpegType_eMpeg1     BAVC_ChromaLocation_eType1
1185#define BAVC_MpegType_eMpeg2     BAVC_ChromaLocation_eType0
1186
1187/***************************************************************************
1188Summary:
1189    Used to specify YCbCr type.
1190
1191Description:
1192    The values assigned to these enumerations should be kept in step with
1193    the ISO 13818-2 specification to minimize effort converting to these
1194    types.
1195
1196See Also:
1197****************************************************************************/
1198typedef enum BAVC_YCbCrType
1199{
1200        BAVC_YCbCrType_e4_2_0 = 1,  /* 4:2:0 */
1201        BAVC_YCbCrType_e4_2_2    ,  /* 4:2:2 */
1202        BAVC_YCbCrType_e4_4_4       /* 4:4:4 (unsupported) */
1203
1204} BAVC_YCbCrType;
1205
1206
1207/***************************************************************************
1208Summary:
1209    Use to specify what color space conversion matrix should be use by
1210    HD_DVI.
1211
1212Description:
1213    BAVC_CscMode_e709RgbFullRange - Conversion from
1214       [Full Range RGB BT.709 / xvYCC 709] to [YCbCr BT.709 / xvYCC 709 ]
1215
1216    BAVC_CscMode_e709RgbLimitedRange -  Conversion from
1217       [Limited Range RGB BT.709 / xvYCC 709] to [YCbCr BT.709 / xvYCC 709 ]
1218
1219    BAVC_CscMode_e709YCbCr - Conversion from YCbCr to YCbCr, no conversion needed.
1220
1221    BAVC_CscMode_e601RgbFullRange - Conversion from
1222       [Full Range RGB BT.601 / SMPTE 170M / xvYCC 601] to
1223       [YCbCr BT.601 / SMPTE 170M / xvYCC 601 ]
1224
1225    BAVC_CscMode_e601RgbLimitedRange - Conversion from
1226       [Limited Range RGB BT.601 / SMPTE 170M / xvYCC 601] to
1227       [YCbCr BT.601 / SMPTE 170M / xvYCC 601 ]
1228
1229    BAVC_CscMode_e601YCbCr - Conversion from YCbCr to YCbCr, no conversion needed.
1230
1231See Also:
1232****************************************************************************/
1233typedef enum
1234{
1235        BAVC_CscMode_e709RgbFullRange = 0,
1236        BAVC_CscMode_e709RgbLimitedRange,
1237        BAVC_CscMode_e709YCbCr,
1238
1239        BAVC_CscMode_e601RgbFullRange,
1240        BAVC_CscMode_e601RgbLimitedRange,
1241        BAVC_CscMode_e601YCbCr,
1242
1243        /* Must be last */
1244        BAVC_CscMode_eMax
1245
1246} BAVC_CscMode;
1247
1248
1249
1250/***************************************************************************
1251Summary:
1252    Used to specify color space type.  This extracted out of the AVI info
1253    frame.  Y1Y0.
1254
1255Description:
1256
1257See Also:
1258****************************************************************************/
1259typedef enum
1260{
1261        BAVC_Colorspace_eRGB = 0,
1262        BAVC_Colorspace_eYCbCr422,
1263        BAVC_Colorspace_eYCbCr444,
1264        BAVC_Colorspace_eFuture
1265
1266} BAVC_Colorspace;
1267
1268/***************************************************************************
1269Summary:
1270    Used to specify the possible frame rates.
1271
1272Description:
1273    The values assigned to these enumerations should be kept in step with
1274    the ISO 13818-2 specification to minimize effort converting to these
1275    types.
1276
1277See Also:
1278****************************************************************************/
1279typedef enum BAVC_FrameRateCode
1280{
1281        BAVC_FrameRateCode_eUnknown = 0, /* Unknown */
1282        BAVC_FrameRateCode_e23_976 = 1,  /* 23.976 */
1283        BAVC_FrameRateCode_e24        ,  /* 24 */
1284        BAVC_FrameRateCode_e25        ,  /* 25 */
1285        BAVC_FrameRateCode_e29_97     ,  /* 29.97 */
1286        BAVC_FrameRateCode_e30        ,  /* 30 */
1287        BAVC_FrameRateCode_e50        ,  /* 50 */
1288        BAVC_FrameRateCode_e59_94     ,  /* 59.94 */
1289        BAVC_FrameRateCode_e60        ,  /* 60 */
1290        BAVC_FrameRateCode_e14_985    ,  /* 14.985 */
1291        BAVC_FrameRateCode_e7_493     ,  /* 7.493 */
1292
1293        BAVC_FrameRateCode_eMax          /* Max Enum Value */
1294
1295} BAVC_FrameRateCode;
1296
1297/* TODO: to be removed shortly after xvd/synclib/etc adapt to new naming changes. */
1298#define BAVC_FrameRateCode_e7_943 BAVC_FrameRateCode_e7_493
1299
1300/***************************************************************************
1301Summary:
1302    Used to specify the possible standard matrix coefficients types for
1303    YCbCr color space interpretation of the digital video data.
1304
1305Description:
1306    This enum follows the MPEG-2 standard Video-spec except the RGB output
1307    enum(=3), which is intended for HDMI use only in case of RGB output to
1308    an HDMI Rx device to indicate the RGB color space interpretation of the
1309    digital video data.
1310
1311See Also:
1312    BAVC_ColorPrimaries, BAVC_TransferCharacteristics.
1313****************************************************************************/
1314typedef enum BAVC_MatrixCoefficients
1315{
1316        /* Recommendation ITU-R BT.709;
1317           (ATSC HD or PAL HD, same as SMPTE274 and EIA770.3);
1318
1319           note: it may also be used to indicate HD YCbCr output to an HDMI Rx
1320           device. */
1321        BAVC_MatrixCoefficients_eItu_R_BT_709 = 1,
1322
1323        /* FCC;
1324           (NTSC SD 1953, not exactly the same as BT.601, but similar) */
1325        BAVC_MatrixCoefficients_eFCC = 4,
1326
1327        /* Recommendation ITU-R BT.470-2 System B, G;
1328           (PAL SD, same as BT.601) */
1329        BAVC_MatrixCoefficients_eItu_R_BT_470_2_BG = 5,
1330
1331        /* SMPTE 170M;
1332           (NTSC SD, same as BT.601; but color primaries are different
1333           from BT.470-2 System B, G.);
1334
1335           note: it may also be used to indicate SD YCbCr output to an HDMI Rx
1336           device. */
1337        BAVC_MatrixCoefficients_eSmpte_170M = 6,
1338
1339        /* SMPTE 240M (1987);
1340           (ATSC HD; color primaries are the same as SMPTE 170M.) */
1341        BAVC_MatrixCoefficients_eSmpte_240M = 7,
1342
1343        /* HDMI 1.3;
1344           (xvYCC709) */
1345        BAVC_MatrixCoefficients_eXvYCC_709 = 8,
1346
1347        /* HDMI 1.3;
1348           (xvYCC601) */
1349        BAVC_MatrixCoefficients_eXvYCC_601 = 9,
1350
1351        /* Unspecified Video: Image characteristics are unknown;
1352           VDC would handle 'Unknown' case as, i.e.
1353           if the decoded picture is in HD format(size is larger than
1354           720x576), then take default HD color matrix; else take default SD color
1355           matrix.
1356
1357           Note: it may also be used to indicate the display doesn't output HDMI
1358           video. */
1359        BAVC_MatrixCoefficients_eUnknown = 2,
1360
1361        /* 0, 3,  8 - 255 reserved;
1362           MVD should handle the error and provide 'Unknown' to VDC. */
1363
1364        /***********************************************************
1365         * NOTE: the following enum values are for HDMI/DVI display use only;
1366         *           video decompressor should not pass these values to vdc via the
1367         *           BAVC_MFD_Picture or BAVC_VDC_HdDvi_Picture data structure.
1368         * TODO: what about hd-dvi input when hd-dvi input module behaves as
1369         *           a stand-alone DVI Rx device?
1370         */
1371        /* for HDMI use only, in case of 220 steps limited range(16-236) RGB
1372            output to an HDMI Rx device */
1373        BAVC_MatrixCoefficients_eHdmi_RGB = 0,
1374
1375        /* for DVI use only, in case of 8-bit full range(0-255) RGB output to a
1376            DVI PC monitor */
1377        BAVC_MatrixCoefficients_eDvi_Full_Range_RGB = 3
1378
1379 } BAVC_MatrixCoefficients;
1380
1381/***************************************************************************
1382Summary:
1383    Used to specify the possible color primaries.
1384
1385Description:
1386    This enum follows the MPEG-2 standard Video-spec.
1387
1388See Also:
1389    BAVC_MatrixCoefficients, BAVC_TransferCharacteristics.
1390****************************************************************************/
1391typedef enum BAVC_ColorPrimaries
1392{
1393        /* Recommendation ITU-R BT.709;
1394           (ATSC HD or PAL HD) */
1395        BAVC_ColorPrimaries_eItu_R_BT_709 = 1,
1396
1397        /* Recommendation ITU-R BT.470-2 System M;
1398           (NTSC SD 1953, not the same as PAL SD nor SMPTE170) */
1399        BAVC_ColorPrimaries_eItu_R_BT_470_2_M = 4,
1400
1401        /* Recommendation ITU-R BT.470-2 System B, G;
1402           (PAL SD, similar to SMPTE170) */
1403        BAVC_ColorPrimaries_eItu_R_BT_470_2_BG = 5,
1404
1405        /* SMPTE 170M; (NTSC SD) */
1406        BAVC_ColorPrimaries_eSmpte_170M = 6,
1407
1408        /* SMPTE 240M (1987);
1409           (ATSC HD; same as SMPTE170) */
1410        BAVC_ColorPrimaries_eSmpte_240M = 7,
1411
1412        /* Generic file
1413           AVC specification ??? */
1414        BAVC_ColorPrimaries_eGenericFilm = 8,
1415
1416        /* Unspecified Video: Image characteristics are unknown;
1417           VDC would handle 'Unknown' case as follows, i.e.
1418           if the decoded picture is in HD format(size is larger than
1419           720x576), then take default HD color matrix; else take default SD color
1420           matrix. */
1421        BAVC_ColorPrimaries_eUnknown = 2
1422
1423        /* 0 - forbidden;
1424           MVD should handle the error and provide 'Unknown' to VDC. */
1425
1426        /* 3, 8 - 255 reserved;
1427           MVD should handle the error and provide 'Unknown' to VDC. */
1428
1429} BAVC_ColorPrimaries;
1430
1431/***************************************************************************
1432Summary:
1433    Used to specify the possible transfer characteristics.
1434
1435Description:
1436    This enum follows the MPEG-2 standard Video-spec.
1437
1438See Also:
1439    BAVC_MatrixCoefficients, BAVC_ColorPrimaries.
1440****************************************************************************/
1441typedef enum BAVC_TransferCharacteristics
1442{
1443        /* Recommendation ITU-R BT.709;
1444           (ATSC HD or PAL HD) */
1445        BAVC_TransferCharacteristics_eItu_R_BT_709 = 1,
1446
1447        /* FCC, or Recommendation ITU-R BT.470-2 System M;
1448           (NTSC SD 1953, assumed display gamma 2.2) */
1449        BAVC_TransferCharacteristics_eItu_R_BT_470_2_M = 4,
1450
1451        /* Recommendation ITU-R BT.470-2 System B, G;
1452           (PAL SD, assumed display gamma 2.8) */
1453        BAVC_TransferCharacteristics_eItu_R_BT_470_2_BG = 5,
1454
1455        /* SMPTE 170M; (NTSC SD) */
1456        BAVC_TransferCharacteristics_eSmpte_170M = 6,
1457
1458        /* SMPTE 240M (1987); (ATSC HD) */
1459        BAVC_TransferCharacteristics_eSmpte_240M = 7,
1460
1461        /* Linear Transfer Characteristics */
1462        BAVC_TransferCharacteristics_eLinear = 8,
1463
1464        /* Recommendation ITU-T H.262, H.264; (IEC 61966-2-4 gamma, xvYCC) */
1465        BAVC_TransferCharacteristics_eIec_61966_2_4 = 11,
1466
1467        /* Unspecified Video: Image characteristics are unknown;
1468           VDC would handle 'Unknown' case as follows, i.e.
1469           if the decoded picture is in HD format(size is larger than
1470           720x576), then take default HD color matrix; else take default
1471           SD color. */
1472        BAVC_TransferCharacteristics_eUnknown = 2
1473
1474        /* 0 - forbidden;
1475           MVD should handle the error and provide 'Unknown' to VDC. */
1476
1477        /* 3, 9 - 255 reserved;
1478           MVD should handle the error and provide 'Unknown' to VDC. */
1479
1480} BAVC_TransferCharacteristics;
1481
1482/***************************************************************************
1483Summary:
1484    Used to specify the source state.
1485
1486Description:
1487    When source picture call back function is used to pull the video/graphics
1488    field/frame produced by an upstream module to BVDC for display, the
1489    current state of the used BVDC source sub-source is passed from BVDC to
1490    user as a parameter of the call back function, in order to synchronize
1491    the upstream module and BVDC.
1492
1493See Also:
1494    BVDC_Source_PictureCallback_isr, BVDC_Source_InstallPictureCallback
1495****************************************************************************/
1496typedef enum BAVC_SourceState
1497{
1498        BAVC_SourceState_eActive_Create, /* The source was just created. */
1499        BAVC_SourceState_eActive_Sync,   /* BVDC has recieved a sync pulse. */
1500        BAVC_SourceState_eActive_Start,  /* BVDC has recieved the first frame after the sync pulse. */
1501        BAVC_SourceState_eActive_Reset,  /* We need to restart the syncronization process. */
1502        BAVC_SourceState_eActive,        /* Simply active. Normal case */
1503        BAVC_SourceState_eActive_Last,   /* The source is about to be destroyed. The next callback will be the last. */
1504        BAVC_SourceState_eDestroy        /* The source has been destroyed and is no longer active, This callback is the last. */
1505
1506} BAVC_SourceState;
1507
1508
1509/***************************************************************************
1510Summary:
1511    Defines the timebase.
1512
1513Description:
1514    This enum defines the timebase or pcr to PLLs, RateMangers
1515    and audio/video decoders/DACs.
1516
1517See Also:
1518****************************************************************************/
1519typedef enum BAVC_Timebase
1520{
1521        BAVC_Timebase_e0 = 0,   /* TimeBase/PCR 0 */
1522        BAVC_Timebase_e1,       /* TimeBase/PCR 1 */
1523        BAVC_Timebase_e2,       /* TimeBase/PCR 2 */
1524        BAVC_Timebase_e3        /* TimeBase/PCR 3 */
1525
1526}BAVC_Timebase;
1527
1528
1529/***************************************************************************
1530Summary:
1531    Used to specify stripe width.
1532
1533Description:
1534    The values defines stripe width of the decoder.
1535
1536See Also:
1537****************************************************************************/
1538typedef enum BAVC_StripeWidth
1539{
1540        BAVC_StripeWidth_e64Byte = 0,
1541        BAVC_StripeWidth_e128Byte,
1542        BAVC_StripeWidth_e256Byte
1543
1544} BAVC_StripeWidth;
1545
1546/***************************************************************************
1547Summary:
1548    The picture coding type
1549
1550Description:
1551    This enum value follows MPEG picture coding type for I, P or B picture.
1552    The AVC decoder fw sets picture coding type according to the slice type
1553    of the 1st slice in picture. THE VC-1 and MPEG4 decoder fw sets it according
1554    to the codec syntax definition for the picture coding type.
1555    For the User data the Picture Header it can be associated with different
1556    MPEG coding types like I, P or B frames. This type is enumerated here.
1557
1558See Also:
1559
1560****************************************************************************/
1561typedef enum BAVC_PictureCoding
1562{
1563        BAVC_PictureCoding_eUnknown=0,    /* Picture Coding Type Unknown */
1564        BAVC_PictureCoding_eI,             /* Picture Coding Type I */
1565        BAVC_PictureCoding_eP,             /* Picture Coding Type P */
1566        BAVC_PictureCoding_eB,             /* Picture Coding Type B */
1567        BAVC_PictureCoding_eMax
1568
1569} BAVC_PictureCoding;
1570
1571/* The following is to be backward compatible. However, it should be deprecated. */
1572#define BAVC_USERDATA_PictureCoding                     BAVC_PictureCoding
1573#define BAVC_USERDATA_PictureCoding_eUnknown  BAVC_PictureCoding_eUnknown
1574#define BAVC_USERDATA_PictureCoding_eI               BAVC_PictureCoding_eI
1575#define BAVC_USERDATA_PictureCoding_eP               BAVC_PictureCoding_eP
1576#define BAVC_USERDATA_PictureCoding_eB               BAVC_PictureCoding_eB
1577#define BAVC_USERDATA_PictureCoding_eMax           BAVC_PictureCoding_eMax
1578
1579
1580/***************************************************************************
1581Summary:
1582        The picture coding type
1583
1584Description:
1585        BAR data.
1586
1587See Also:
1588
1589****************************************************************************/
1590typedef enum BAVC_BarDataType
1591{
1592        BAVC_BarDataType_eInvalid = 0,     /* No data */
1593        BAVC_BarDataType_eTopBottom,       /* Bar data defines top/bottom */
1594        BAVC_BarDataType_eLeftRight        /* Bar data defines left/right */
1595
1596} BAVC_BarDataType;
1597
1598/***************************************************************************
1599Summary:
1600    A structure representing a field/frame of data from the decoder module.
1601
1602Description:
1603    This structure is typically used to pass data from the decoder module to
1604    the VDC module. This should be done every field so that the VDC can
1605    display the appropriate field with the appropriate parameters.
1606
1607    The structure is for programming the MFD in BVN.  Notice that both the
1608    XVD and MVD could prepare the structure for VDC.
1609
1610    This structure might also represent a graphics surface which is intended
1611    to be used as a video source to MFD.
1612
1613See Also:
1614    BVDC_Source_MpegDataReady_isr
1615****************************************************************************/
1616typedef struct BAVC_MFD_Picture
1617{
1618        /*----------------------------------------------------------------------*/
1619        /* Used by all (MVD/XVD/Surface) */
1620
1621        /* Contains the field polarity of the VDC interrupt driving the callback.
1622         * The VDC module provides this interrupt which drives the firmware
1623         * to produce field data. This enumeration contains the polarity offscreen
1624         * that interrupt and represents what type of field the VDC would
1625         * like to feed out of the MPEG feeder. */
1626        BAVC_Polarity            eInterruptPolarity;
1627
1628        /* Contains the display veritical refresh rate of the VDC interrupt driving
1629         * the callback.  * The VDC module provides this refresh rate which drives
1630         * the firmware to produce field data. This enumeration contains the refresh
1631         * rate that interrupt and represents what rate the VDC would like to feed
1632         * out of the MPEG feeder. */
1633        BFMT_Vert                eInterruptRefreshRate;
1634
1635        /* unintentional picture repeat due to decoder underflow at non-real time
1636         * transcode mode Encoder FW should simply drop this picture with IGNORE
1637         * flag set. No encode time stamp to be adjusted. The flag is generated by
1638         * DM software. Ignore should be zero for all other cases.
1639         * source: display manager */
1640        bool                     bIgnorePicture;
1641
1642        /* video decoder underflow in non-real time transcode mode.  The video
1643         * decoder STC should not increment when this flag is true. The flag is
1644         * generated by DM software. bStallStc should be false for all other cases.
1645         * source: display manager */
1646        bool                     bStallStc;
1647
1648        /* DM will set the bLast flag to mark that the last picture decoded from
1649         * source has been presented by DM. This flag is used in non-realtime
1650         * transcode mode to cleanly flush/terminate transcoder at the end of
1651         * source file. When it's true, bIgnorePicture should be true too. */
1652        bool                     bLast;
1653
1654        /* Determines if the field is to be muted. This is set when all values
1655         * except eInterruptPolarity, bIgnorePicture, and bStallStc are invalid
1656         * and undefined. This flag notifies the VDC that the feeder should be
1657         * programmed to feed a fixed constant color instead of using the supplied
1658         * buffers. */
1659        bool                     bMute;
1660
1661        /* heap from which the frame buffers were allocated;
1662         * Null means to use the same main heap of VDC; */
1663        BMEM_Handle              hHeap;
1664
1665        /* Source polarity.  This indicate that the buffer need to be scan
1666         * out as eSourcePolarity (T/B/F polairy).  As determined by the
1667         * correct display logic of MVD.  Which could override the original
1668         * stream polarity. */
1669        BAVC_Polarity            eSourcePolarity;
1670
1671        /* stream panscan vector specifies the position of the centre of
1672         * the reconstructed frame from the centre of the display rectangle. */
1673        /* Units of 1/16th of a pixel in two's complement. Bits 31-16 are
1674         * a sign extension of Bit 15. Bit 15 is the sign bit. Bits 14:8
1675         * are the macro block grid.Bits 7:4 are the pixel grid. Bits 3:0
1676         * are 1/16 pixel grid. */
1677        int32_t                  i32_HorizontalPanScan;
1678
1679        /* Units of 1/16th of a pixel in two's complement. Bits 31-16 are
1680         * a sign extension of Bit 15. Bit 15 is the sign bit. Bits 14:8
1681         * are the macro block grid.Bits 7:4 are the pixel grid. Bits 3:0
1682         * are 1/16 pixel grid. */
1683        int32_t                  i32_VerticalPanScan;
1684
1685        /* When pan-scan is enabled, this is the horizontal size of the
1686         * displayed portion of the buffer. */
1687        uint32_t                 ulDisplayHorizontalSize;
1688
1689        /* When pan-scan is enabled, this is the vertical size of the
1690         * displayed portion of the buffer. */
1691        uint32_t                 ulDisplayVerticalSize;
1692
1693        /* Matrix coefficients. */
1694        BAVC_MatrixCoefficients  eMatrixCoefficients;
1695
1696        /* Aspect ratio of the rectangle defined by the display
1697         * parameters (ulDisplayHorizontalSize and ulDisplayVerticalSize)
1698         * if it's not BFMT_AspectRatio_eSAR; otherwise, look at
1699         * uiSampleAspectRatioX/uiSampleAspectRatioY to derive the sample
1700         * aspect ratio; */
1701        BFMT_AspectRatio         eAspectRatio;
1702
1703        /* Frame rate code. */
1704        BAVC_FrameRateCode       eFrameRateCode;
1705
1706        /* hSurface must be NULL for MVD and XVD cases. When it is a valid graphics
1707         * surface handle, the surface is feeded as the video source to the video
1708         * window. For MPEG Feeder cores with a minor version earlier than 0x60
1709         * (see MFD_0_REVISION_ID) and Video Feeder cores with a minor version
1710         * earlier than 0x50, the graphics surface for the video
1711         * source must have a pixel format of either BPXL_eY18_Cr8_Y08_Cb8,
1712         * BPXL_eCr8_Y18_Cb8_Y08, BPXL_eY18_Cb8_Y08_Cr8, or BPXL_eCb8_Y18_Cr8_Y08;
1713         * otherwise pink and green video will result. Cores with minor version
1714         * 0x60 and 0x50 (for MFD and VFD respectively) and later can support all
1715         * formats. Refer to the description of BPXL_Format for details
1716         * on the byte location with each pixel format.
1717         *
1718         * TO BE OBSOLETE: Please use ePxlFmt instead. */
1719        BSUR_Surface_Handle      hSurface;
1720
1721        /* Pixel format of given decoded surface.
1722         *   ePxlFmt == BPXL_eCr8_Y18_Cb8_Y08
1723         *   ePxlFmt == BPXL_eY18_Cr8_Y08_Cb8
1724         *   ePxlFmt == BPXL_eY08_Cb8_Y18_Cr8
1725         *   ePxlFmt == BPXL_eCb8_Y08_Cr8_Y18
1726
1727         *   ePxlFmt == BPXL_eCb8_Y18_Cr8_Y08
1728         *   ePxlFmt == BPXL_eY18_Cb8_Y08_Cr8
1729         *   ePxlFmt == BPXL_eY08_Cr8_Y18_Cb8
1730         *   ePxlFmt == BPXL_eCr8_Y08_Cb8_Y18
1731
1732         *  ePxlFmt == BPXL_INVALID be treated as default XVD 420 decoder format. */
1733        BPXL_Format              ePxlFmt;
1734
1735        /*----------------------------------------------------------------------*/
1736        /* MVD and XVD only */
1737
1738        /* This field gives the Progressive Sequence bit in the stream for MPEG
1739         * streams that contain the progressive_sequence bit in the sequence
1740         * header. For other protocols, the Display Manager (XVD) may choose to
1741         * derive this bit from other parameters. Hence, the field is not
1742         * dependable, e.g., in AVC, there is no concept of "prog_seq". It also
1743         * can happen that streams marked interlaced are full of Progressive frames.
1744         * This is informational only. VDC does not use this flag. */
1745        bool                     bStreamProgressive;
1746
1747        /* This field gives the Progressive Frame bit in the stream.
1748         * Progressive Frame bit arrives in the Picture header of MPEG
1749         * stream and hence may change every frame. For other protocols,
1750         * like AVC, it is derived from other coding tools like ct_type
1751         * in picture_timing SEI and frame_mbs_only_flag.  This is informational
1752         * only VDC does not use this flag. */
1753        bool                     bFrameProgressive;
1754
1755        /* Chroma location type. Still use the variable name eMpegType for
1756         * backward compatibility. This information is used by the MFD (Feeder)
1757         * to decide where chroma position is related to luma position. Protocols
1758         * supported include MPEG1, MPEG2, and AVC. */
1759        BAVC_ChromaLocation      eMpegType;
1760
1761        /* YCbCr type: 4:2:0, 4:2:2 or 4:4:4. */
1762        BAVC_YCbCrType           eYCbCrType;
1763
1764        /* Chrominance interpolation mode. */
1765        BAVC_InterpolationMode   eChrominanceInterpolationMode;
1766
1767        /* color primaries */
1768        BAVC_ColorPrimaries      eColorPrimaries;
1769
1770        /* transfer characteristics */
1771        BAVC_TransferCharacteristics eTransferCharacteristics;
1772
1773        /* The actual horizontal size of the provided buffers (post-clipped). */
1774        uint32_t                 ulSourceHorizontalSize;
1775
1776        /* The actual vertical size of the provided buffers (post-clipped). */
1777        uint32_t                 ulSourceVerticalSize;
1778
1779        /* Luminance frame buffer virtual base address (original buffer address).
1780         * Or surface address of surface when (ePxlFmt == 422 foramts)*/
1781        void                    *pLuminanceFrameBufferAddress;
1782
1783        /* Chrominance frame buffer virtual base address (original buffer address). */
1784        void                    *pChrominanceFrameBufferAddress;
1785
1786        /* Adjusted Quantization Parameter to be used for Digital Noise Reduction;
1787         * default should be zero; */
1788        uint32_t                 ulAdjQp;
1789
1790        /* If scanning out a top field, repeat is set if the previous top field is the same
1791         * If scanning out a bottom field, repeat is set if the previous bottom field is the same
1792         * If scanning out a progressive frame, repeat is set if the previous progressive frame is the same */
1793        bool                     bRepeatField;
1794
1795        /* slow->fast(e.g. 50->60) or trick mode repeat;
1796         * it should be set for any true repeat (the source polarity and frame
1797         * buffer are the same as the previous picture). It helps VDC/MAD/Multi-buffer
1798         * to display better. */
1799        bool                     bPictureRepeatFlag;
1800
1801        /* When decoder is in trick mode (fast/pause/slow motion) and its scanout
1802         * cadence is interlaced, notify VDC to ignore cadence match. The result
1803         * will be  half of fields would be field-inverted by SCL and no more
1804         * regular multi-buffer skip/repeat bouncing. When VDC sees the flag be set,
1805         * its capture and playback cadence should ignore source cadence match so
1806         * the sync-slipped multi-buffer reader/writer pointers would proceed normally
1807         * without extra field repeat/skip; otherwise, VDC cadence match is done by
1808         * best effort. */
1809        bool                     bIgnoreCadenceMatch;
1810
1811        /*---------------------------------------------------------------------
1812         * Mosaic Mode:
1813         * ------------
1814         * Mosaic mode is an option where an existing single decode/display path
1815         * is being re-used to support multiple smaller decode/display operations
1816         * at full frame-rate.
1817         * For each active channel there will be one and only one entry added to
1818         * a linked list. The linked list has the following properties:
1819         *
1820         * Each element in the linked list is a BAVC_XVD_Picture structure. The
1821         * element 'pNext' was added to this existing structure to make it into
1822         * a linked list. This is the same structure used for the single decode
1823         * case so the single decode comes across as a 1-entry linked list.
1824         *
1825         * If a channel is not open, there will be no entry in the list and the
1826         * VDC callback will not be made. If a channel is open (even if
1827         * StartDecode? has not been called), there will always be an element on
1828         * this list corresponding to this channel and the VDC callback will be
1829         * made. Even if there are no buffers to decode, the list element will
1830         * exist but bMute will be set to true. There will be no padding of
1831         * additional linked list elements to make up for inactive channels. In
1832         * other words, if you only have channels 3, 5, and 7 open, the XVD will
1833         * not pass muted structures for channel 1, 2, 4, 6, or 8. Instead the
1834         * linked list will only have elements for 3, 5, and 7.
1835         *
1836         * Elements in the list will be sorted in ascending order according to
1837         * channel number. There will only be one element for each channel number.
1838         */
1839
1840        /* linked list of mosaic pictures; the last element of the list should
1841         * set it to NULL to terminate; */
1842        void                    *pNext;
1843
1844        /* channel index for mosaic mode linked list; the index is per decoder
1845         * instance based, in other words, decoder 0 has active channels 1, 2, 3,
1846         * while decoder 1 could also have different channels 1, 2, 3, which are
1847         * independent of decoder 0's channels; */
1848        uint32_t                 ulChannelId;
1849
1850        /*----------------------------------------------------------------------*/
1851        /* MVD or (ePxlFmt == 422 foramts) */
1852
1853        /* The stride of the luminance and chrominance buffers in bytes measured
1854         * from the start of a line's macroblock to the start of the next line's
1855         * macroblock.
1856         *
1857         * Or surface stride of surface when (ePxlFmt == 422 foramts)*/
1858        uint32_t                 ulRowStride;
1859
1860        /*----------------------------------------------------------------------*/
1861        /* XVD only */
1862        /* This field specifies that the feeder needs to capture the CRC of this
1863         * frame, and send it back to the application if callback were registered.
1864         * This is for feeder with the capability of doing CRC when feeding.  In
1865         * addition if this flag is set by the deocode it also indication that
1866         * correct display is not honor, and we may get incorrect display on the
1867         * backend. */
1868        bool                     bCaptureCrc;
1869
1870        /* Number of macroblocks size in the vertical direction for Luminance
1871         * array of the picture to be displayed. */
1872        uint32_t                 ulLuminanceNMBY;
1873
1874        /* Number of macroblocks size in the vertical direction for Chrominance
1875         * array of the picture to be displayed. */
1876        uint32_t                 ulChrominanceNMBY;
1877
1878        /* Stripe width, can be 64 byte or 128 byte */
1879        BAVC_StripeWidth         eStripeWidth;
1880
1881        /* Valid when  eAspectRatio == eSAR. */
1882        uint16_t                 uiSampleAspectRatioX;
1883        uint16_t                 uiSampleAspectRatioY;
1884
1885        /* PR 17811 idr_pic_id and PicOrderCnt values passed to VDC during CRC mode.
1886         * It is set to Zero otherwise.  The range of int32_PicOrderCnt from
1887         * decoder can in the full range of int32_t.  While ulIdrPicID is an
1888         * uint32_t, but only 16 bits of unsinged value is used. */
1889        uint32_t                 ulIdrPicID;
1890        int32_t                  int32_PicOrderCnt;
1891
1892        /* PR20042: Need the top/left coordinate of the clipping values from decoder
1893         * to calculate new MSTART for MFD.  Unit is in pixel. */
1894        uint32_t                 ulSourceClipTop;
1895        uint32_t                 ulSourceClipLeft;
1896
1897        /* VC1 range re-mapping setting:
1898           These values are used for VC1 decode display; */
1899        uint32_t                 ulLumaRangeRemapping;
1900        uint32_t                 ulChromaRangeRemapping;
1901
1902        /* H.264 FGT Info */
1903        BMEM_Handle              hFgtHeap; /* Heap from which FGT data structure is allocated */
1904        void                    *pFgtSeiBufferAddress; /* Pointer to the FGT SEI structure */
1905
1906        /* This field indicate if valid AFD present present in the stream or not.
1907         * if bValidAfd=true, then ulAfd can then be used. */
1908        bool                     bValidAfd;
1909
1910        /* AFD values defined by User data registered by ITU-T Recommendation T.35
1911         * SEI message (see ISO/IEC 14496-10:2005, Subclauses D.8.5 and D.9.5).
1912         * The AFD value describe the area of interest of the stream. */
1913        uint32_t                 ulAfd;
1914
1915        /* specify top/bottom or left/right data */
1916        BAVC_BarDataType         eBarDataType;
1917
1918        /* either the top or left bar data value, as defined above */
1919        uint32_t                 ulTopLeftBarValue;
1920
1921        /* either the bottom or right bar data value, as defined above */
1922        uint32_t                 ulBotRightBarValue;
1923
1924        /* 3D orientation */
1925        BFMT_Orientation         eOrientation;
1926
1927        /* Original PTS of the picture, relayed by STG to ViCE2 Mailbox.
1928         * Note, this PTS value could be either original coded PTS or interolated
1929         * PTS by DM. */
1930        uint32_t                 ulOrigPTS;
1931
1932        /* Original input Picture type, relayed by STG to ViCE2 Mailbox.
1933         * Decoder FW extracts the value and passes to DM via PPB structure.
1934         * source: bxvd_vdec_info.h  structure BXVD_P_PPB */
1935        BAVC_PictureCoding       ePictureType;
1936
1937        /* Should be set to "true" for all pictures sent to VDC before the first
1938         * decoded picture is available after a channel is stopped (for both muted
1939         * or repeated hold last pic frames).  See also SW7425-2239and SW7425-2253. */
1940        bool                     bChannelChange;
1941
1942        /* Decoded picture id for userdata transcode */
1943        uint32_t                 ulDecodePictureId;
1944
1945        /* Pointer to BAVC_MFD_Picture specify pictures that must be processed at
1946         * the same time to form a complete display */
1947        void                    *pEnhanced;
1948
1949} BAVC_MFD_Picture;
1950
1951typedef BAVC_MFD_Picture BAVC_XVD_Picture;   /* AVC decoder */
1952typedef BAVC_MFD_Picture BAVC_MVD_Picture;   /* MiniTitan decoder */
1953
1954/* Backward compatibility, for legacy code. */
1955typedef BAVC_MFD_Picture BAVC_MVD_Field;      /* MiniTitan decoder */
1956
1957
1958/***************************************************************************
1959Summary:
1960    Contains the picture info for the HDDVI input port.
1961
1962Description:
1963    This structure is used to pass data from the XVD module to the
1964    VDC module, through a call-back. Fields that are unused, simply
1965    means XVD doesn't have the data, and VDC doesn't expect any.
1966    Naming convention used: BAVC_To_Source_Name
1967
1968See Also:
1969    BVDC_Source_PictureCallback_isr, BVDC_Source_InstallPictureCallback
1970****************************************************************************/
1971typedef struct BAVC_VDC_HdDvi_Picture
1972{
1973        /* Determines if the field is to be muted. This is set when all other
1974           values in this structure are invalid and undefined. This flag
1975           notifies the VDC that the feeder should be programmed to feed a
1976           fixed constant color instead of using the supplied buffers. */
1977        bool                     bMute;
1978
1979        /* This field gives the Progressive Sequence bit in the stream.
1980           Progressive Sequence bit comes in the Sequence header of a
1981           stream and does not change every frame. It also can happen
1982           that streams marked interlaced are full of Progressive frames
1983           This is _only_ for information.
1984        */
1985        bool                     bStreamProgressive;
1986
1987        /* XVD tells VDC to detect sync pulses */
1988        bool                     bResetHdDviBegin;
1989        bool                     bResetHdDviEnd;
1990
1991        /* XVD tells VDC to change new hddvi format, if bNeedSync is true */
1992        /* TODO: Fix this to BFMT_VideoFmt later */
1993        uint32_t                 eHddviFormat;
1994
1995        /* Difference between STC and PTS of a given frame at Vsync time */
1996        long                     lPtsStcOffset;
1997
1998        /* Source polarity!  To be field by VDC!  Taken from slot interrupt.
1999         * HDR or XVD does not need to initialized this field. */
2000        BAVC_Polarity            eSourcePolarity;
2001
2002        /* Units of 1/16th of a pixel in two's complement. Bit 15 is the
2003         * sign bit. Bits 14:8 are the macro block grid.Bits 7:4 are the
2004         * pixel grid. Bits 3:0 are 1/16 pixel grid. */
2005        int32_t                  i32_HorizontalPanScan;
2006
2007        /* Units of 1/16th of a pixel.in two's complement. Bit 15 is the
2008         * sign bit. Bits 14:8 are the macro block grid. Bits 7:4 are the
2009         * pixel grid. Bits 3:0 are 1/16 pixel grid. */
2010        int32_t                  i32_VerticalPanScan;
2011
2012        /* Color space type: RGB, YCbCr444 and YCbCr422 */
2013        BAVC_Colorspace          eColorSpace;
2014
2015        /* RGB Quantization */
2016        BAVC_CscMode             eCscMode;
2017
2018        /* YCbCr type. */
2019        BAVC_YCbCrType           eYCbCrType;
2020
2021        /* color primaries */
2022        BAVC_ColorPrimaries      eColorPrimaries;
2023
2024        /* transfer characteristics */
2025        BAVC_TransferCharacteristics eTransferCharacteristics;
2026
2027        /* Matrix coefficients. */
2028        BAVC_MatrixCoefficients  eMatrixCoefficients;
2029
2030        /* Aspect ratio of the rectangle defined by the display
2031         * parameters (ulDisplayHorizontalSize and ulDisplayVerticalSize) */
2032        BFMT_AspectRatio         eAspectRatio;
2033
2034        /* Sample aspect ratio for AVC */
2035        uint16_t                 uiSampleAspectRatioX;
2036        uint16_t                 uiSampleAspectRatioY;
2037
2038        /* Frame rate code. */
2039        BAVC_FrameRateCode       eFrameRateCode;
2040
2041        /* When pan-scan is enabled, this is the horizontal size of the
2042         * displayed portion of the buffer. */
2043        uint32_t                 ulDisplayHorizontalSize;
2044
2045        /* When pan-scan is enabled, this is the vertical size of the
2046         * displayed portion of the buffer. */
2047        uint32_t                 ulDisplayVerticalSize;
2048
2049        /* The actual horizontal size of the provided buffers. */
2050        uint32_t                 ulSourceHorizontalSize;
2051
2052        /* The actual vertical size of the provided buffers. */
2053        uint32_t                 ulSourceVerticalSize;
2054
2055        /* For HDMI Mode, the contents of AVI Infoframe should be used to set
2056         * the value of the pixel decimation circuit rather than have it calculated */
2057        bool                     bHdmiMode;
2058        uint32_t                 ulPixelRepitionFactor;
2059
2060} BAVC_VDC_HdDvi_Picture;
2061
2062/***************************************************************************
2063Summary:
2064    A structure representing a graphics frame.
2065
2066Description:
2067    This structure is used to pass a graphics frame to BVDC for display, from
2068    BGRC or BP3D.
2069
2070    If the optional alpha surface is not needed, hAlphaSurface should be set
2071    to NULL.
2072
2073See Also:
2074    BVDC_Source_PictureCallback_isr, BVDC_Source_InstallPictureCallback
2075    BVDC_Source_SetSurface, BVDC_Source_SetAlphaSurface
2076****************************************************************************/
2077typedef struct BAVC_Gfx_Picture
2078{
2079        BSUR_Surface_Handle  hSurface;       /* main surface */
2080        BSUR_Surface_Handle  hRSurface;      /* main R surface */
2081        BSUR_Surface_Handle  hAlphaSurface;  /* optional separate alpha surface */
2082        BSUR_Surface_Handle  hAlphaRSurface; /* optional separate alpha R surface */
2083        uint8_t  ucW0Alpha; /* Used as pixel alpha when the pixel's W is 0. */
2084        uint8_t  ucW1Alpha; /* Used as pixel alpha when the pixel's W is 1. */
2085        BFMT_Orientation     eInOrientation;
2086
2087} BAVC_Gfx_Picture;
2088
2089
2090/***************************************************************************
2091Summary:
2092    A structure contains information about the current display state, such
2093    as current refresh rate, pixel clock rate, and timebase used.
2094
2095Description:
2096    This structure is used to pass a information about a display information
2097    to application that needs to know about the display information.   For
2098    example HDMI module needs to know the pixel clock rate, so it can match
2099    its output pixel clock rate as well.
2100
2101See Also:
2102    BVDC_CallbackFunc_isr,
2103    BVDC_Display_InstallRateChangeCallback,
2104    BVDC_Window_SetMasterFrameRate.
2105****************************************************************************/
2106typedef struct BAVC_VdcDisplay_Info
2107{
2108        uint32_t                 ulVertRefreshRate;  /* defines in bfmt.h (Hz) */
2109        uint32_t                 ulPixelClkRate;     /* defines in bfmt.h (Mhz) */
2110
2111} BAVC_VdcDisplay_Info;
2112
2113/***************************************************************************
2114Summary:
2115    Defines audio sampling rate
2116
2117Description:
2118    This enum defines audio sampling rate.
2119
2120See Also:
2121****************************************************************************/
2122typedef enum BAVC_AudioSamplingRate
2123{
2124        BAVC_AudioSamplingRate_e32k=0,    /* 32K Sample rate */
2125        BAVC_AudioSamplingRate_e44_1k,    /* 44.1K Sample rate */
2126        BAVC_AudioSamplingRate_e48k,      /* 48K Sample rate */
2127        BAVC_AudioSamplingRate_e96k,      /* 96K Sample rate */
2128        BAVC_AudioSamplingRate_e16k,      /* 16K Sample rate */
2129        BAVC_AudioSamplingRate_e22_05k,   /* 22.05K Sample rate */
2130        BAVC_AudioSamplingRate_e24k,      /* 24K Sample rate */
2131        BAVC_AudioSamplingRate_e64k,      /* 64K Sample rate */
2132        BAVC_AudioSamplingRate_e88_2k,    /* 88.2K Sample rate */
2133        BAVC_AudioSamplingRate_e128k,     /* 12896K Sample rate */
2134        BAVC_AudioSamplingRate_e176_4k,   /* 176.4K Sample rate */
2135        BAVC_AudioSamplingRate_e192k,     /* 19296K Sample rate */
2136        BAVC_AudioSamplingRate_e8k,       /* 8K Sample rate */
2137        BAVC_AudioSamplingRate_e12k,      /* 12K Sample rate */
2138        BAVC_AudioSamplingRate_e11_025k,  /* 11.025K Sample rate */
2139
2140        BAVC_AudioSamplingRate_eUnknown   /* Unknown sample rate */
2141
2142}BAVC_AudioSamplingRate;
2143
2144
2145/***************************************************************************
2146Summary:
2147    Defines supported number of Audio bits
2148
2149Description:
2150    This enum is used to query HDMI monitors for supported audio bits
2151
2152See Also:
2153****************************************************************************/
2154typedef enum BAVC_AudioBits
2155{
2156        BAVC_AudioBits_e16=0,
2157        BAVC_AudioBits_e20,
2158        BAVC_AudioBits_e24
2159
2160} BAVC_AudioBits ;
2161
2162
2163/***************************************************************************
2164Summary:
2165    Defines supported Audio Formats
2166
2167Description:
2168    This enum is used to query HDMI monitors for supported Audio Formats
2169
2170See Also:
2171****************************************************************************/
2172typedef enum BAVC_AudioFormat
2173{
2174        BAVC_AudioFormat_ePCM=0,
2175        BAVC_AudioFormat_eAC3,
2176        BAVC_AudioFormat_eMPEG1,
2177        BAVC_AudioFormat_eMP3,
2178        BAVC_AudioFormat_eMPEG2,
2179        BAVC_AudioFormat_eAAC,
2180        BAVC_AudioFormat_eDTS,
2181        BAVC_AudioFormat_eAVS,
2182        BAVC_AudioFormat_eATRAC,
2183        BAVC_AudioFormat_eOneBit,
2184        BAVC_AudioFormat_eDDPlus,
2185        BAVC_AudioFormat_eDTSHD,
2186        BAVC_AudioFormat_eMATMLP,
2187        BAVC_AudioFormat_eDST,
2188        BAVC_AudioFormat_eWMAPro,
2189
2190        BAVC_AudioFormat_eMaxCount
2191
2192} BAVC_AudioFormat ;
2193
2194/***************************************************************************
2195Summary:
2196    A structure contains information about the current audio state, such
2197    as Sample Rate, etc.
2198
2199Description:
2200    This structure is used to pass a information about audio to the
2201    application that needs to know about the audio.  For example, the HDMI
2202    module needs to know the Audio Sample Rate, so it can properly adjust
2203    its audio parameters for the current rate.
2204
2205See Also:
2206    BAUD_EnableSampleRateChangeCb
2207****************************************************************************/
2208typedef struct BAVC_Audio_Info
2209{
2210        BAVC_AudioSamplingRate   eAudioSamplingRate ;
2211
2212} BAVC_Audio_Info ;
2213
2214
2215/***************************************************************************
2216Summary:
2217    The User Data Type
2218
2219Description:
2220    The User data can come in the Sequence Header, the GOP Header
2221    or the Picture Header. This type is enumerated here.
2222
2223See Also:
2224
2225****************************************************************************/
2226typedef enum BAVC_USERDATA_Type
2227{
2228        BAVC_USERDATA_Type_eSeq=1,       /* User data coming in the Sequence Header */
2229        BAVC_USERDATA_Type_eGOP,         /* User data coming in the Gop Header */
2230        BAVC_USERDATA_Type_ePicture,     /* User Data coming in Picture Header */
2231        BAVC_USERDATA_Type_eSEI,         /* User Data in H.264 */
2232        BAVC_USERDATA_Type_eEntryPoint, /* VC1 user data coming in entry point layer */
2233        BAVC_USERDATA_Type_eField,       /* VC1 user data coming in picture field layer */
2234        BAVC_USERDATA_Type_eFrame,       /* VC1 user data coming in picture frame layer */
2235        BAVC_USERDATA_Type_eSlice        /* VC1 user data coming in slice layer */
2236
2237} BAVC_USERDATA_Type;
2238
2239
2240
2241
2242/***************************************************************************
2243Summary:
2244    User Data Info structure common to MVD (Mini-Titan) and XVD (AVC decoder).
2245
2246Description:
2247    Interface structure between application and microcode. Microcode
2248    initializes the fields of this structure to inform application
2249    about the current status of user data.
2250
2251See Also:
2252
2253****************************************************************************/
2254typedef struct BAVC_USERDATA_info
2255{
2256        void            *pUserDataBuffer;   /* Pointer to the pre-allocated buffer */
2257        size_t          ui32UserDataBufSize;    /* Total buffer size */
2258        BAVC_USERDATA_Type eUserDataType ;  /* Type of the User Data */
2259        bool            bTopFieldFirst ;    /* MPEG Syntax flag TopFieldFirst */
2260        bool            bRepeatFirstField ; /* MPEG Syntax flag RepeatFirstField */
2261        BAVC_PictureCoding ePicCodingType ; /* I/P/B Picture Coding Type */
2262        uint32_t        ui32PTS ;           /* PTS value of the associated frame */
2263        bool            bPTSValid ;         /* PTS value of the associated frame */
2264        bool            bErrorBufferOverflow ;  /* To indicate buffer overflow */
2265        BAVC_Polarity   eSourcePolarity ;   /* Source Polarity if data found in
2266                                               Picture Header */
2267        uint32_t        ui32PicCodExt[2] ;  /* Array of 2 32 bit variable for
2268                                                storing Picture Coding Extension
2269                                                All bits from the MPEG stream are
2270                                                stored as they come in the earliest
2271                                                going to the highest bit in the word
2272                                                In word-0 bits 31-30 are unused
2273                                                and in word-1 bits 31-20 are unused */
2274        uint32_t        ulDecodePictureId;  /* Decoded picture id for userdata transcode */
2275
2276} BAVC_USERDATA_info;
2277
2278/***************************************************************************
2279Summary:
2280    Enum for specifying the PTS type.
2281
2282Description:
2283    This can be used by the SerialPCRLib to decide whether the PTS can
2284    be used to jam the STC or not. For example, a coded PTS might be given
2285    preference to a interpolated PTS.
2286
2287See Also:
2288
2289****************************************************************************/
2290typedef enum BAVC_PTSType
2291{
2292        BAVC_PTSType_eCoded,
2293        BAVC_PTSType_eInterpolatedFromValidPTS,
2294        BAVC_PTSType_eHostProgrammedPTS,
2295        BAVC_PTSType_eInterpolatedFromInvalidPTS
2296
2297} BAVC_PTSType;
2298
2299/***************************************************************************
2300Summary:
2301    This data structure is passed with the callbacks associated with
2302    the FirsPTSReady and FirsTSMPassed interrupts. The XXX_GetPTS
2303    funxtion also might use this structure.
2304
2305Description:
2306    This structure consists of the 32 bit PTS value itself and a tag
2307    associated with it that tells whether this is a coded PTS, an
2308    Interpolated PTS from a previous Coded PTS, or PTS interpoleted from
2309    a junk PTS value.
2310
2311****************************************************************************/
2312typedef struct BAVC_PTSInfo
2313{
2314        uint32_t        ui32CurrentPTS; /* Current PTS value */
2315        BAVC_PTSType    ePTSType;           /* The PTS type tag */
2316
2317        /* needed for PCRLib */
2318        uint32_t uiDecodedFrameCount;
2319        uint32_t uiDroppedFrameCount;
2320
2321} BAVC_PTSInfo;
2322
2323/***************************************************************************
2324Summary:
2325    Defines Video compression standards
2326
2327Description:
2328    This enum is used to set the video compression standard use in XVD PI.
2329
2330See Also:
2331****************************************************************************/
2332typedef enum BAVC_VideoCompressionStd
2333{
2334        BAVC_VideoCompressionStd_eH264,           /* H.264 */
2335        BAVC_VideoCompressionStd_eMPEG2,          /* MPEG-2 */
2336        BAVC_VideoCompressionStd_eH261,           /* H.261 */
2337        BAVC_VideoCompressionStd_eH263,           /* H.263 */
2338        BAVC_VideoCompressionStd_eVC1,            /* VC1 Advanced profile */
2339        BAVC_VideoCompressionStd_eMPEG1,          /* MPEG-1 */
2340        BAVC_VideoCompressionStd_eMPEG2DTV,       /* MPEG-2 DirecTV DSS ES */
2341        BAVC_VideoCompressionStd_eVC1SimpleMain,  /* VC1 Simple & Main profile */
2342        BAVC_VideoCompressionStd_eMPEG4Part2,     /* MPEG 4, Part 2. */
2343        BAVC_VideoCompressionStd_eAVS,            /* AVS Jinzhun profile. */
2344        BAVC_VideoCompressionStd_eMPEG2_DSS_PES,  /* MPEG-2 DirecTV DSS PES */
2345        BAVC_VideoCompressionStd_eSVC,            /* Scalable Video Codec */
2346        BAVC_VideoCompressionStd_eSVC_BL,         /* Scalable Video Codec Base Layer */
2347        BAVC_VideoCompressionStd_eMVC,            /* MVC Multi View Coding */
2348        BAVC_VideoCompressionStd_eVP6,            /* VP6 */
2349        BAVC_VideoCompressionStd_eVP7,            /* VP7 */
2350        BAVC_VideoCompressionStd_eVP8,            /* VP8 */
2351        BAVC_VideoCompressionStd_eRV9,            /* Real Video 9 */
2352        BAVC_VideoCompressionStd_eSPARK,          /* Sorenson Spark */
2353        BAVC_VideoCompressionStd_eMOTION_JPEG,    /* Motion Jpeg */
2354        BAVC_VideoCompressionStd_eMax
2355
2356} BAVC_VideoCompressionStd;
2357
2358/***************************************************************************
2359Summary:
2360    Defines Video compression profiles
2361
2362Description:
2363    This enum is used to report the video compression profile by XVD PI.
2364    Also used to specify the video compression profile to VCE PI
2365
2366    This enum is defined by AVD FW team
2367
2368See Also:
2369****************************************************************************/
2370typedef enum BAVC_VideoCompressionProfile
2371{
2372        BAVC_VideoCompressionProfile_eUnknown = 0,
2373        BAVC_VideoCompressionProfile_eSimple,
2374        BAVC_VideoCompressionProfile_eMain,
2375        BAVC_VideoCompressionProfile_eHigh,
2376        BAVC_VideoCompressionProfile_eAdvanced,
2377        BAVC_VideoCompressionProfile_eJizhun,
2378        BAVC_VideoCompressionProfile_eSnrScalable,
2379        BAVC_VideoCompressionProfile_eSpatiallyScalable,
2380        BAVC_VideoCompressionProfile_eAdvancedSimple,
2381        BAVC_VideoCompressionProfile_eBaseline,
2382
2383        BAVC_VideoCompressionProfile_eMax
2384
2385} BAVC_VideoCompressionProfile;
2386
2387/***************************************************************************
2388Summary:
2389    Defines Video compression levels
2390
2391Description:
2392    This enum is used to report the video compression level by XVD PI.
2393    Also used to specify the video compression level to VCE PI
2394
2395    This enum is defined by AVD FW team
2396
2397See Also:
2398****************************************************************************/
2399typedef enum BAVC_VideoCompressionLevel
2400{
2401        BAVC_VideoCompressionLevel_eUnknown = 0,
2402        BAVC_VideoCompressionLevel_e00,
2403        BAVC_VideoCompressionLevel_e10,
2404        BAVC_VideoCompressionLevel_e1B,
2405        BAVC_VideoCompressionLevel_e11,
2406        BAVC_VideoCompressionLevel_e12,
2407        BAVC_VideoCompressionLevel_e13,
2408        BAVC_VideoCompressionLevel_e20,
2409        BAVC_VideoCompressionLevel_e21,
2410        BAVC_VideoCompressionLevel_e22,
2411        BAVC_VideoCompressionLevel_e30,
2412        BAVC_VideoCompressionLevel_e31,
2413        BAVC_VideoCompressionLevel_e32,
2414        BAVC_VideoCompressionLevel_e40,
2415        BAVC_VideoCompressionLevel_e41,
2416        BAVC_VideoCompressionLevel_e42,
2417        BAVC_VideoCompressionLevel_e50,
2418        BAVC_VideoCompressionLevel_e51,
2419        BAVC_VideoCompressionLevel_e60,
2420        BAVC_VideoCompressionLevel_e62,
2421        BAVC_VideoCompressionLevel_eLow,
2422        BAVC_VideoCompressionLevel_eMain,
2423        BAVC_VideoCompressionLevel_eHigh,
2424        BAVC_VideoCompressionLevel_eHigh1440,
2425
2426        BAVC_VideoCompressionLevel_eMax
2427
2428} BAVC_VideoCompressionLevel;
2429
2430/* vce related common defines */
2431#include "bavc_vce.h"
2432
2433/***************************************************************************
2434Summary:
2435        Audio compression standards
2436
2437Description:
2438    Enumeration of the various Audio compression standards.
2439See Also:
2440
2441****************************************************************************/
2442typedef enum BAVC_AudioCompressionStd
2443{
2444        BAVC_AudioCompressionStd_eMpegL1,           /* MPEG Layer 1 */
2445        BAVC_AudioCompressionStd_eMpegL2,           /* MPEG Layer 2 */
2446        BAVC_AudioCompressionStd_eMpegL3,           /* MPEG Layer 3 */
2447        BAVC_AudioCompressionStd_eAac,              /* AAC (ADTS) */
2448        BAVC_AudioCompressionStd_eAacAdts=BAVC_AudioCompressionStd_eAac,            /* AAC ADTS */
2449        BAVC_AudioCompressionStd_eAacLoas,          /* AAC LOAS */
2450        BAVC_AudioCompressionStd_eAacPlus,          /* AAC Plus (HE/SBR) (LOAS) */
2451        BAVC_AudioCompressionStd_eAacPlusLoas=BAVC_AudioCompressionStd_eAacPlus,    /* AAC Plus (HE/SBR) LOAS */
2452        BAVC_AudioCompressionStd_eAacPlusAdts,      /* AAC Plus (HE/SBR) ADTS */
2453        BAVC_AudioCompressionStd_eAc3,              /* AC3 */
2454        BAVC_AudioCompressionStd_eAc3Plus,          /* AC3_PLUS */
2455        BAVC_AudioCompressionStd_eAc3Lossless,      /* AC3 LOSSLESS*/
2456        BAVC_AudioCompressionStd_eDts,              /* DTS */
2457        BAVC_AudioCompressionStd_eDtshd,            /* DTSHD */
2458        BAVC_AudioCompressionStd_eDtsLegacy,        /* DTS legacy mode (14-bit), uses legacy frame sync */
2459        BAVC_AudioCompressionStd_eWmaStd,           /* WMA Standard */
2460        BAVC_AudioCompressionStd_eWmaStdTs,         /* WMA Standard with a 24-byte extended header */
2461        BAVC_AudioCompressionStd_eWmaPro,           /* WMA Pro */
2462        BAVC_AudioCompressionStd_eMlp,              /* MLP */
2463        BAVC_AudioCompressionStd_ePcm,              /* Raw PCM Data */
2464        BAVC_AudioCompressionStd_ePcmWav,           /* PCM input from a .wav source, requires header insertion */
2465        BAVC_AudioCompressionStd_eLpcmDvd,          /* DVD LPCM */
2466        BAVC_AudioCompressionStd_eLpcmHdDvd,        /* HD-DVD LPCM */
2467        BAVC_AudioCompressionStd_eLpcmBd,           /* Blu-Ray LPCM */
2468    BAVC_AudioCompressionStd_eLpcm1394,         /* IEEE 1394 LPCM */
2469        BAVC_AudioCompressionStd_eAmr,              /* Adaptive Multi-Rate compression (typically used w/3GPP) */
2470        BAVC_AudioCompressionStd_eDra,              /* Dynamic Resolution Adaptation.  Used in Blu-Ray and China Broadcasts. */
2471        BAVC_AudioCompressionStd_eCook,             /* Cook compression format, used in Real Audio 8 LBR */
2472        BAVC_AudioCompressionStd_eAdpcm,            /* MS ADPCM audio format */
2473        BAVC_AudioCompressionStd_eSbc,              /* Sub Band Codec used in Bluetooth A2DP audio */
2474    BAVC_AudioCompressionStd_eVorbis,           /* Vorbis audio codec.  Typically used with OGG or WebM container formats. */
2475    BAVC_AudioCompressionStd_eG711,             /* G.711 a-law and u-law companding.  Typically used for voice transmission. */
2476    BAVC_AudioCompressionStd_eG723_1,           /* G.723.1 Dual Rate Speech Coder for Multimedia Communications.  Used in H.324 and 3GPP 3G-324M.  This is different from G.723, which was superceded by G.726. */
2477    BAVC_AudioCompressionStd_eG726,             /* G.726 ADPCM speech codec.  Supercedes G.723 and G.721. */
2478    BAVC_AudioCompressionStd_eG729,             /* G.729 CS-ACELP speech codec.  Often used in VOIP applications. */
2479    BAVC_AudioCompressionStd_eFlac,             /* Free Lossless Audio Codec (see http://flac.sourceforge.net) */
2480        BAVC_AudioCompressionStd_eMax               /* Max value */
2481} BAVC_AudioCompressionStd;
2482
2483#define BAVC_AUDIOCOMPRESSSIONSTD_DEFINED 1
2484
2485/* rap related common defines */
2486#include "bavc_rap.h"
2487
2488
2489#ifdef __cplusplus
2490}
2491#endif
2492
2493#endif /* #ifndef BAVC_H__ */
2494
2495/* end of file */
Note: See TracBrowser for help on using the repository browser.