source: svn/newcon3bcm2_21bu/magnum/commonutils/xdm/bxdm_pp.h

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

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

  • Property svn:executable set to *
File size: 42.4 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: bxdm_pp.h $
11 * $brcm_Revision: Hydra_Software_Devel/20 $
12 * $brcm_Date: 3/16/12 11:56a $
13 *
14 * [File Description:]
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/commonutils/xdm/bxdm_pp.h $
19 *
20 * Hydra_Software_Devel/20   3/16/12 11:56a btosi
21 * SW7425-2536: added support for displayInterruptStatus_isr
22 *
23 * Hydra_Software_Devel/19   2/1/12 1:57p btosi
24 * SW7425-2270: add support for IgnoreNRTUnderflow
25 *
26 * Hydra_Software_Devel/18   11/9/11 9:43a btosi
27 * SW7425-1690: fixed enums
28 *
29 * Hydra_Software_Devel/17   10/3/11 2:19p btosi
30 * SW7425-1264:  support for a SW STC internal to XDM
31 *
32 * Hydra_Software_Devel/16   8/18/11 3:19p btosi
33 * SW7425-966: added support for eLeftRightEnhancedResolution
34 *
35 * Hydra_Software_Devel/15   7/26/11 11:02a btosi
36 * SW7635-51: merged BXDM_PictureProvider_PictureHandlingMode_eWait
37 * changes
38 *
39 * Hydra_Software_Devel/SW7635-51/1   5/11/11 9:28a btosi
40 * SW7635-51: added BXDM_PictureProvider_PictureHandlingMode_eWait
41 *
42 * Hydra_Software_Devel/14   5/10/11 1:40p btosi
43 * SW7405-4736: added range checking and debug messages for the input
44 * parameters
45 *
46 * Hydra_Software_Devel/13   11/24/10 1:22p btosi
47 * SW7422-72: added bSetNextPointer for MVC on older DVD chips
48 *
49 * Hydra_Software_Devel/12   11/22/10 3:12p btosi
50 * SW7422-72: renamed flag in BXDM_PictureProvider_3DSettings
51 *
52 * Hydra_Software_Devel/11   11/17/10 9:37a btosi
53 * SW7422-72: added new BXVD and XDM 3D API's
54 *
55 * Hydra_Software_Devel/10   10/1/10 2:50p btosi
56 * SWDEPRECATED-1003: added support for bTreatAsSingleElement
57 *
58 * Hydra_Software_Devel/9   9/23/10 3:09p btosi
59 * SW7405-4736: add support for a XDM instance ID to help debug multi-
60 * channel issues
61 *
62 * Hydra_Software_Devel/8   9/15/10 12:06p btosi
63 * SWDEPRECATED-1003: added BXDM_PictureProvider_SetFrameRateOverride_isr
64 * and supporting logic
65 *
66 * Hydra_Software_Devel/7   9/14/10 11:56a btosi
67 * SWDEPRECATED-1003: added BXDM_PictureProvider_SetTrickMode_isr to
68 * primarily disable the FIC logic when receiving video with sparse
69 * pictures
70 *
71 * Hydra_Software_Devel/6   8/5/10 8:29a delkert
72 * SW7405-4703: Add HorizontalOverscanMode to allow bypass of Overscan
73 * calculation.  Added appropriate Get/Set APIs
74 *
75 * Hydra_Software_Devel/5   5/11/10 1:33p btosi
76 * SW7405-4117: added usage note
77 *
78 * Hydra_Software_Devel/4   4/29/10 10:47a btosi
79 * SW7405-4117: added support for ...DisplayFieldMode_eAuto
80 *
81 * Hydra_Software_Devel/3   2/19/10 11:09a nilesh
82 * SW7405-2993: Made the DIH handle a property of the picture provider so
83 * that the PDR callback can persist over a stop/start decode
84 *
85 * Hydra_Software_Devel/2   2/17/10 4:58p nilesh
86 * SW7405-2993: Removed unused
87 * BXDM_PictureProvider_Counters.uiDecoderInputOverflow
88 *
89 * Hydra_Software_Devel/1   2/16/10 10:51a nilesh
90 * SW7405-2993: Initial XDM version
91 *
92 ***************************************************************************/
93
94#ifndef BXDM_PP_H_
95#define BXDM_PP_H_
96
97#include "btmr.h"
98#include "bxdm_decoder.h"
99#include "bxdm.h"
100#include "bxdm_dih.h"
101
102#ifdef __cplusplus
103extern "C" {
104#endif
105
106#if 0
107}
108#endif
109
110typedef struct BXDM_PictureProvider_P_Context *BXDM_PictureProvider_Handle;
111
112#if 0
113typedef struct BXDM_PictureProvider_Settings
114{
115      uint32_t uiMaxBuffersPerPicture; /* This value indicates how many video buffers are
116                                        * linked together in a single BXDM_Picture entry.
117                                        * E.g. for MVC 3D, there are 2 video buffers per
118                                        * BXDM_Picture entry */
119} BXDM_PictureProvider_Settings;
120#endif
121
122BERR_Code
123BXDM_PictureProvider_GetDefaultSettings(
124         BXDM_PictureProvider_Settings *pstPictureProviderSettings
125         );
126
127BERR_Code
128BXDM_PictureProvider_Create(
129         BXDM_PictureProvider_Handle *phXdmPP,
130         const BXDM_PictureProvider_Settings *pstPictureProviderSettings
131         );
132
133BERR_Code
134BXDM_PictureProvider_Destroy(
135         BXDM_PictureProvider_Handle hXdmPP
136         );
137
138BERR_Code
139BXDM_PictureProvider_StartDecode_isr(
140         BXDM_PictureProvider_Handle hXdmPP
141         );
142
143BERR_Code
144BXDM_PictureProvider_StopDecode_isr(
145         BXDM_PictureProvider_Handle hXdmPP
146         );
147
148BERR_Code
149BXDM_PictureProvider_WatchdogReset_isr(
150         BXDM_PictureProvider_Handle hXdmPP
151         );
152
153BERR_Code
154BXDM_PictureProvider_GetPicture_isr(
155         void *pPrivateContext,
156         const BXDM_DisplayInterruptInfo *pstDisplayInterruptInfo,
157         BAVC_MFD_Picture **pMFDPicture
158         );
159
160BERR_Code
161BXDM_PictureProvider_SetDecoderInterface_isr(
162         BXDM_PictureProvider_Handle hXdmPP,
163         BXDM_Decoder_Interface *pstDecoderInterface,
164         void *pPrivateContext
165         );
166
167BERR_Code
168BXDM_PictureProvider_GetDefaultDecoderInterface_isr(
169         BXDM_Decoder_Interface *pstDecoderInterface
170         );
171
172#if 0
173typedef struct BXDM_PictureProvider_ChannelChangeSettings
174{
175      bool bHoldLastPicture;
176      bool bFirstPicturePreview;
177} BXDM_PictureProvider_ChannelChangeSettings;
178#endif
179
180BERR_Code
181BXDM_PictureProvider_GetDefaultChannelChangeSettings_isr(
182         BXDM_PictureProvider_Handle hXdmPP,
183         BXDM_PictureProvider_ChannelChangeSettings *pstChannelChangeSettings
184         );
185
186BERR_Code
187BXDM_PictureProvider_SetChannelChangeSettings_isr(
188         BXDM_PictureProvider_Handle hXdmPP,
189         const BXDM_PictureProvider_ChannelChangeSettings *pstChannelChangeSettings
190         );
191
192BERR_Code
193BXDM_PictureProvider_GetChannelChangeSettings_isr(
194         BXDM_PictureProvider_Handle hXdmPP,
195         BXDM_PictureProvider_ChannelChangeSettings *pstChannelChangeSettings
196         );
197
198BERR_Code
199BXDM_PictureProvider_SetMuteMode_isr(
200         BXDM_PictureProvider_Handle hXdmPP,
201         bool bEnable
202         );
203
204BERR_Code
205BXDM_PictureProvider_GetMuteMode_isr(
206         BXDM_PictureProvider_Handle hXdmPP,
207         bool *pbEnable
208         );
209
210
211/***************************************************************************
212
213Below is an explanation of the new eDisplayFieldMode mode
214"BXDM_PictureProvider_DisplayFieldMode_eAuto" and the supporting API
215"BXDM_PictureProvider_SetDeinterlacerMaxHeight".
216
217For normal play and fast forward, eDisplayFieldMode should be set to "eBothField". 
218The question is how to set eDisplayFieldMode for slow motion and pause.
219If there is an "appropriate" deinterlacer in the output path, it should be set to
220"eBothField" for the best results.  If there is NOT an "appropriate" deinterlacer,
221it should be set to "eSingleField"; this will minimize jitter at the expense of a lower
222resolution image. The new eDisplayFieldMode of "BXDM_PictureProvider_DisplayFieldMode_eAuto" solves this
223problem by automatically selecting either "eBothField" or "eSingleField" during slow
224motion and pause.
225
226Having an "appropriate" deinterlacer is defined as:
227- every output is driven by a deinterlacer
228- AND the least capable deinterlacer can support the stream height
229- AND the deinterlacer(s) are enabled
230
231The API "BXDM_PictureProvider_SetDeinterlacerMaxHeight" is used to set the
232variable "uiMaxHeightSupportedByDeinterlacer". 
233The application/middleware will use "uiMaxHeightSupportedByDeinterlacer" to indicate if there
234is an "appropriate" deinterlacer.  If "uiMaxHeightSupportedByDeinterlacer" is set to "0",
235there is NOT an "appropriate" deinterlacer and the scan out will be "eSingleField".
236If "uiMaxHeightSupportedByDeinterlacer" is set to a non-zero value, the scan out will be "eBothField" if
237the stream height is less than or equal to "uiMaxHeightSupportedByDeinterlacer". 
238If the height is greater than "uiMaxHeightSupportedByDeinterlacer", the scan out will be "eSingleField". 
239
240The following pseudo code summaries the behavior:
241
242   if ( stGlobal.eDisplayFieldMode == BXDM_PictureProvider_DisplayFieldMode_eAuto )
243   {
244      // Default to eBothField
245
246      stLocal.eDisplayFieldMode = BXDM_PictureProvider_DisplayFieldMode_eBothField;
247
248      // When paused or in slow motion, revert to eSingleField if the deinterlacer cannot support the stream.
249
250      if ( stSource.uiHeight > uiMaxHeightSupportedByDeinterlacer
251            && true == bPausedOrSlowMotion
252         )
253      {
254         stLocal.eDisplayFieldMode = BXDM_PictureProvider_DisplayFieldMode_eSingleField;
255      }
256
257   }
258
259****************************************************************************/
260
261#if 0
262typedef enum BXDM_PictureProvider_DisplayFieldMode
263{
264      BXDM_PictureProvider_DisplayFieldMode_eBothField,       /* regular both field display */
265      BXDM_PictureProvider_DisplayFieldMode_eTopFieldOnly,    /* Display Top fld only */
266      BXDM_PictureProvider_DisplayFieldMode_eBottomFieldOnly,  /* Display Bottom fld only */
267      BXDM_PictureProvider_DisplayFieldMode_eSingleField, /* Display single field only.
268                                                           * The field that is displayed
269                                                           * is the same as the one that
270                                                           * is currently being
271                                                           * displayed. */
272      BXDM_PictureProvider_DisplayFieldMode_eAuto,    /* SW7405-4117: select either eSingleField or eBothField
273                                                       * based on the steam height during slow motion (and preroll). */
274      BXDM_PictureProvider_DisplayFieldMode_eMax
275} BXDM_PictureProvider_DisplayFieldMode;
276#endif
277
278BERR_Code
279BXDM_PictureProvider_SetDisplayFieldMode_isr(
280         BXDM_PictureProvider_Handle hXdmPP,
281         BXDM_PictureProvider_DisplayFieldMode eDisplayFieldMode
282         );
283
284BERR_Code
285BXDM_PictureProvider_GetDisplayFieldMode_isr(
286         BXDM_PictureProvider_Handle hXdmPP,
287         BXDM_PictureProvider_DisplayFieldMode *peDisplayFieldMode
288         );
289
290#if 0
291typedef enum BXDM_PictureProvider_SourceFormatOverride
292{
293      BXDM_PictureProvider_SourceFormatOverride_eDefault,
294      BXDM_PictureProvider_SourceFormatOverride_eInterlaced,
295      BXDM_PictureProvider_SourceFormatOverride_eProgressive,
296
297      BXDM_PictureProvider_SourceFormatOverride_eMax
298} BXDM_PictureProvider_SourceFormatOverride;
299#endif
300
301BERR_Code
302BXDM_PictureProvider_SetSourceFormatOverride_isr(
303         BXDM_PictureProvider_Handle hXdmPP,
304         BXDM_PictureProvider_SourceFormatOverride eSourceFormatOverride
305         );
306
307BERR_Code
308BXDM_PictureProvider_GetSourceFormatOverride_isr(
309         BXDM_PictureProvider_Handle hXdmPP,
310         BXDM_PictureProvider_SourceFormatOverride *peSourceFormatOverride
311         );
312
313#if 0
314typedef enum BXDM_PictureProvider_ScanModeOverride
315{
316      BXDM_PictureProvider_ScanModeOverride_eDefault,
317      BXDM_PictureProvider_ScanModeOverride_eInterlaced,
318      BXDM_PictureProvider_ScanModeOverride_eProgressive,
319
320      BXDM_PictureProvider_ScanModeOverride_eMax
321} BXDM_PictureProvider_ScanModeOverride;
322#endif
323
324BERR_Code
325BXDM_PictureProvider_SetScanModeOverride_isr(
326         BXDM_PictureProvider_Handle hXdmPP,
327         BXDM_PictureProvider_ScanModeOverride eScanModeOverride
328         );
329
330BERR_Code
331BXDM_PictureProvider_GetScanModeOverride_isr(
332         BXDM_PictureProvider_Handle hXdmPP,
333         BXDM_PictureProvider_ScanModeOverride *peScanModeOverride
334         );
335
336BERR_Code
337BXDM_PictureProvider_SetFreeze_isr(
338         BXDM_PictureProvider_Handle hXdmPP,
339         bool bEnable
340         );
341
342BERR_Code
343BXDM_PictureProvider_GetFreeze_isr(
344         BXDM_PictureProvider_Handle hXdmPP,
345         bool *pbEnable
346         );
347
348#if 0
349typedef enum BXDM_PictureProvider_240iScanMode
350{
351      /* Assume non-AVC 240i/288i has pulldown="F" (default) */
352      BXDM_PictureProvider_240iScanMode_eForceProgressive,
353
354      /* Assume non-AVC 240i/288i is coded correctly */
355      BXDM_PictureProvider_240iScanMode_eUseEncodedFormat,
356
357      BXDM_PictureProvider_240iScanMode_eMax
358} BXDM_PictureProvider_240iScanMode;
359#endif
360
361BERR_Code
362BXDM_PictureProvider_Set240iScanMode_isr(
363         BXDM_PictureProvider_Handle hXdmPP,
364         BXDM_PictureProvider_240iScanMode e240iScanMode
365         );
366
367BERR_Code
368BXDM_PictureProvider_Get240iScanMode_isr(
369         BXDM_PictureProvider_Handle hXdmPP,
370         BXDM_PictureProvider_240iScanMode *pe240iScanMode
371         );
372
373#if 0
374typedef enum BXDM_PictureProvider_PulldownMode
375{
376   BXDM_PictureProvider_PulldownMode_eTopBottom,
377   BXDM_PictureProvider_PulldownMode_eBottomTop,
378   BXDM_PictureProvider_PulldownMode_eUseEncodedFormat,
379
380   BXDM_PictureProvider_PulldownMode_eMax
381} BXDM_PictureProvider_PulldownMode;
382#endif
383
384BERR_Code
385BXDM_PictureProvider_Set480pPulldownMode_isr(
386         BXDM_PictureProvider_Handle hXdmPP,
387         BXDM_PictureProvider_PulldownMode ePulldownMode
388         );
389
390BERR_Code
391BXDM_PictureProvider_Get480pPulldownMode_isr(
392         BXDM_PictureProvider_Handle hXdmPP,
393         BXDM_PictureProvider_PulldownMode *pePulldownMode
394         );
395
396BERR_Code
397BXDM_PictureProvider_Set1080pPulldownMode_isr(
398         BXDM_PictureProvider_Handle hXdmPP,
399         BXDM_PictureProvider_PulldownMode ePulldownMode
400         );
401
402BERR_Code
403BXDM_PictureProvider_Get1080pPulldownMode_isr(
404         BXDM_PictureProvider_Handle hXdmPP,
405         BXDM_PictureProvider_PulldownMode *pePulldownMode
406         );
407
408BERR_Code
409BXDM_PictureProvider_SetPTSOffset_isr(
410         BXDM_PictureProvider_Handle hXdmPP,
411         uint32_t uiOffset
412         );
413
414BERR_Code
415BXDM_PictureProvider_GetPTSOffset_isr(
416         BXDM_PictureProvider_Handle hXdmPP,
417         uint32_t *puiOffset
418         );
419
420#if 0
421typedef enum BXDM_PictureProvider_DisplayMode
422{
423      BXDM_PictureProvider_DisplayMode_eTSM,   /* Use PTS for display timing */
424      BXDM_PictureProvider_DisplayMode_eVirtualTSM, /* Ignore PTS and follow pulldown and frame rate */
425
426      BXDM_PictureProvider_DisplayMode_eMax
427} BXDM_PictureProvider_DisplayMode;
428#endif
429
430BERR_Code
431BXDM_PictureProvider_SetDisplayMode_isr(
432         BXDM_PictureProvider_Handle hXdmPP,
433         BXDM_PictureProvider_DisplayMode eDisplayMode
434         );
435
436BERR_Code
437BXDM_PictureProvider_GetDisplayMode_isr(
438         BXDM_PictureProvider_Handle hXdmPP,
439         BXDM_PictureProvider_DisplayMode *peDisplayMode
440         );
441
442#if 0
443typedef struct BXDM_PictureProvider_TSMThresholdSettings
444{
445   uint32_t uiTooEarlyThreshold;
446   uint32_t uiTooLateThreshold;
447   uint32_t uiDeltaStcPtsDiffThreshold;
448} BXDM_PictureProvider_TSMThresholdSettings;
449#endif
450
451BERR_Code
452BXDM_PictureProvider_GetDefaultTSMThresholdSettings_isr(
453         BXDM_PictureProvider_Handle hXdmPP,
454         BXDM_PictureProvider_TSMThresholdSettings *pstTSMThresholdSettings
455         );
456
457BERR_Code
458BXDM_PictureProvider_SetTSMThresholdSettings_isr(
459         BXDM_PictureProvider_Handle hXdmPP,
460         const  BXDM_PictureProvider_TSMThresholdSettings *pstTSMThresholdSettings
461         );
462
463BERR_Code
464BXDM_PictureProvider_GetTSMThresholdSettings_isr(
465         BXDM_PictureProvider_Handle hXdmPP,
466         BXDM_PictureProvider_TSMThresholdSettings *pstTSMThresholdSettings
467         );
468
469/* These don't necessarily fit into PictureProvider role */
470BERR_Code
471BXDM_PictureProvider_SetSTCValid_isr(
472         BXDM_PictureProvider_Handle hXdmPP,
473         bool bValid
474         );
475
476BERR_Code
477BXDM_PictureProvider_GetSTCValid_isr(
478         BXDM_PictureProvider_Handle hXdmPP,
479         bool *pbValid
480         );
481
482
483#if 0
484typedef enum BXDM_PictureProvider_ClipTimeType
485{
486   /* Disables all clip logic. If clipping is currently active, it
487    * will be disabled and normal TSM will resume. If a clip time was
488    * previously set (but not yet used), it will be reset */
489      BXDM_PictureProvider_ClipTimeType_eDisable = 0,
490
491   /* Both clip start and stop times are valid w/ DVD specific
492    * functionality:
493      - Pictures causing PTS Errors are displayed in vsync mode
494      - Start Time of 0 means start immediately
495      - Stop Time of 0xFFFFFFFF means stop on a marker
496      - Stop Event:
497         - TSM Mode: STC value is compared to stop time
498         - vTSM Mode: PTS value is compared to stop time
499         - EOC/VSYNC Mode: stop time is ignored.  Marker is used to
500           indicate stop.
501   */
502      BXDM_PictureProvider_ClipTimeType_eEnableBothWithDVDCompatibility,
503
504   /* Both clip start and stop times are valid */
505      BXDM_PictureProvider_ClipTimeType_eEnableBoth,
506
507   /* Only clip start time is valid */
508      BXDM_PictureProvider_ClipTimeType_eClipStartOnly,
509
510   /* Only clip stop time is valid */
511      BXDM_PictureProvider_ClipTimeType_eClipStopOnly,
512
513      BXDM_PictureProvider_ClipTimeType_eMax
514} BXDM_PictureProvider_ClipTimeType;
515
516typedef struct BXDM_PictureProvider_ClipTimeSettings
517{
518      bool bValid;
519
520      BXDM_PictureProvider_ClipTimeType eType;
521      uint32_t uiStart;
522      uint32_t uiStop;
523      uint32_t uiId;
524} BXDM_PictureProvider_ClipTimeSettings;
525#endif
526
527BERR_Code
528BXDM_PictureProvider_GetDefaultClipTimeSettings_isr(
529         BXDM_PictureProvider_Handle hXdmPP,
530         BXDM_PictureProvider_ClipTimeSettings *pstClipTimeSettings
531         );
532
533BERR_Code
534BXDM_PictureProvider_SetClipTimeSettings_isr(
535         BXDM_PictureProvider_Handle hXdmPP,
536         const BXDM_PictureProvider_ClipTimeSettings *pstClipTimeSettings
537         );
538
539BERR_Code
540BXDM_PictureProvider_SetSoftwarePCROffset_isr(
541         BXDM_PictureProvider_Handle hXdmPP,
542         uint32_t uiOffset
543         );
544
545BERR_Code
546BXDM_PictureProvider_GetSoftwarePCROffset_isr(
547         BXDM_PictureProvider_Handle hXdmPP,
548         uint32_t *puiOffset
549         );
550
551BERR_Code
552BXDM_PictureProvider_SetHardwarePCROffsetMode_isr(
553         BXDM_PictureProvider_Handle hXdmPP,
554         bool bEnable
555         );
556
557BERR_Code
558BXDM_PictureProvider_GetHardwarePCROffsetMode_isr(
559         BXDM_PictureProvider_Handle hXdmPP,
560         bool *pbEnable
561         );
562
563BERR_Code
564BXDM_PictureProvider_SetPlaybackRate_isr(
565         BXDM_PictureProvider_Handle hXdmPP,
566         const BXDM_Picture_Rate *pstPlaybackRate
567         );
568
569BERR_Code
570BXDM_PictureProvider_GetPlaybackRate_isr(
571         BXDM_PictureProvider_Handle hXdmPP,
572         BXDM_Picture_Rate *pstPlaybackRate
573         );
574
575#if 0
576typedef enum BXDM_PictureProvider_PictureDropMode
577{
578      BXDM_PictureProvider_PictureDropMode_eField,
579      BXDM_PictureProvider_PictureDropMode_eFrame,
580
581      /* Add more enums ABOVE this line */
582      BXDM_PictureProvider_PictureDropMode_eMax
583} BXDM_PictureProvider_PictureDropMode;
584#endif
585
586BERR_Code
587BXDM_PictureProvider_SetPictureDropMode_isr(
588         BXDM_PictureProvider_Handle hXdmPP,
589         BXDM_PictureProvider_PictureDropMode ePictureDropMode
590         );
591
592BERR_Code
593BXDM_PictureProvider_GetPictureDropMode_isr(
594         BXDM_PictureProvider_Handle hXdmPP,
595         BXDM_PictureProvider_PictureDropMode *pePictureDropMode
596         );
597
598#if 0
599typedef enum BXDM_PictureProvider_PTSType
600{
601      BXDM_PictureProvider_PTSType_eCoded,
602      BXDM_PictureProvider_PTSType_eInterpolatedFromValidPTS,
603      BXDM_PictureProvider_PTSType_eHostProgrammedPTS_Deprecated,
604      BXDM_PictureProvider_PTSType_eInterpolatedFromInvalidPTS,
605
606      BXDM_PictureProvider_PTSType_eMax
607} BXDM_PictureProvider_PTSType;
608
609typedef struct BXDM_PictureProvider_PTSInfo
610{
611      /* generally the PTS of the picture being delivered to VDC. */
612      uint32_t ui32RunningPTS;
613
614      /* The effective PTS value (accounting for all offsets) that DM
615       * uses for TSM evaluation */
616      uint32_t ui32EffectivePTS;
617
618      /* The PTS type tag */
619      BXDM_PictureProvider_PTSType ePTSType;
620
621      /* the STC delivered by the video decoder on this vsync. */
622      uint32_t uiSTCSnapShot;
623
624      /* PCR offset used by the TSM logic for the picture being delivered to VDC. */
625      uint32_t uiPCROffset;
626
627      /* Indicates the state of the 'uiPCROffset' field */
628      bool bPcrOffsetValid;
629
630      /* the PCR discontiniuty flag for the picture being delivered to VDC. */
631      bool bPcrDiscontinuity;
632
633      /*
634       * A running count of the number of elements (fields/frames) dropped by
635       * the "Display Manager" due to "Time Stamp Management" failures.
636       * Reset upon calling "BXVD_StartDecode()".
637       */
638      uint32_t uiDisplayManagerDroppedCount;
639
640      /*
641       * A running count of the number of pictures the decoder delivered to
642       * the "Display Manager". Reset upon calling "BXVD_StartDecode()".
643       */
644      uint32_t uiPicturesDecodedCount;
645
646      /* PR50623: A programmable offset added to the STC prior to TSM evaluation. */
647      uint32_t uiSwPcrOffset;
648
649      /* PR50623: A programmable flag which indicates whether or not to include the
650       * HW PCR offset in the TSM equation.
651       */
652      bool bUseHwPcrOffset;
653} BXDM_PictureProvider_PTSInfo;
654
655typedef enum BXDM_PictureProvider_TSMResult
656{
657   BXDM_PictureProvider_TSMResult_eTooEarly, /* (PTS > STC)  and ((PTS - STC) > discard threshold) */
658   BXDM_PictureProvider_TSMResult_eWait,     /* (PTS > STC)  and ((PTS - STC) <= discard threshold) */
659   BXDM_PictureProvider_TSMResult_ePass,     /* (PTS <= STC) and ((STC - PTS) <= too late threshold) */
660   BXDM_PictureProvider_TSMResult_eTooLate,  /* (PTS < STC)  and ((STC - PTS) > too late threshold) */
661   BXDM_PictureProvider_TSMResult_eDrop,     /* Drop for non-TSM reason (freeze, pts filtering, invalid pts, invalid pcr, etc) */
662
663   BXDM_PictureProvider_TSMResult_eMax
664} BXDM_PictureProvider_TSMResult;
665
666typedef enum BXDM_PictureProvider_PictureHandlingMode
667{
668   BXDM_PictureProvider_PictureHandlingMode_eDefault,   /* In Broadcast:
669                                              - TooEarly --> eDrop
670                                              - TooLate --> eHonorPTS
671                                           In Playback:
672                                              - TooEarly --> eHonorPTS for 3 vsyncs.  eDrop after 3 vsyncs.  Reset on non-TooEarly.
673                                              - TooLate --> eIgnorePTS for first picture.  eHonorPTS for susequent pictures.  Reset on non-TooLate.
674                                        */
675   BXDM_PictureProvider_PictureHandlingMode_eHonorPTS,  /* Honor the PTS of the picture and assume it is correct */
676   BXDM_PictureProvider_PictureHandlingMode_eIgnorePTS, /* Ignore the PTS of the picture and instead interpolate from the previous PTS */
677   BXDM_PictureProvider_PictureHandlingMode_eDrop,      /* Drop the picture immediately */
678   BXDM_PictureProvider_PictureHandlingMode_eWait,      /* SW7635-51: give the middleware/application the option to hold off processing a picture. */
679
680   BXDM_PictureProvider_PictureHandlingMode_eMax
681} BXDM_PictureProvider_PictureHandlingMode;
682
683typedef struct BXDM_PictureProvider_TSMInfo
684{
685   BXDM_PictureProvider_TSMResult eTSMResult; /* The TSM Result for the currently evaluated picture.  *read only* */
686   BXDM_PictureProvider_PictureHandlingMode ePictureHandlingMode; /* The picture handling mode for the currently evaluated picture */
687} BXDM_PictureProvider_TSMInfo;
688
689typedef struct BXDM_PictureProvider_Counters
690{
691   uint32_t uiDisplayManagerDroppedCount;  /* Number of Elements (Fields/Frames) DM decided to drop because of TSM. Running Counter. */
692   uint32_t uiDecoderDroppedCount;         /* Number of Elements (Fields/Frames) DM asked the Decoder to drop. Running Counter. */
693   uint32_t uiDisplayedParityFailureCount; /* Number of Elements (Fields/Frames) DM displayed eventhough there was Parity Failure, under normal display condition. Running Counter. */
694   uint32_t uiDisplayedCount;              /* Number of Elements (Fields/Frames) DM delevered to VDC under normal display conditions. Running Counter. */
695   uint32_t uiPicturesDecodedCount;        /* Number of Entries (PPBs) DM received from the AVD FW. Running Counter. */
696   uint32_t uiVsyncUnderflowCount;         /* Number of Vsync the DM had Underflow in the Disp FIFO. Running Counter. */
697   uint32_t uiDecodeErrorCount;            /* Number of Errors Decoder encountered. DM only passes this info as recieved from the AVD through the PPB */
698   uint32_t uiVsyncCount;                  /* Running count, number of times DM callback has been executed for this channel. */
699   uint32_t uiIFrameCount;                 /* Number of I frames DM received (inclusive of errors). Running Counter. */
700   uint32_t uiErrorIFrameCount;            /* Number of I frames DM received with the error bit set. Running Counter. */
701   uint32_t uiPicturesReceivedCount;       /* Number of pictures received from the decoder. */
702   uint32_t uiPicturesReleasedCount;       /* Number of pictures released by the DM. */
703   uint32_t uiUnderflowCount;              /* Number of times the delivery queue has gotten into an underflow state. */
704} BXDM_PictureProvider_Counters;
705#endif
706
707BERR_Code
708BXDM_PictureProvider_GetCounters_isr(
709         BXDM_PictureProvider_Handle hXdmPP,
710         BXDM_PictureProvider_Counters *pstCounters
711         );
712
713BERR_Code
714BXDM_PictureProvider_GetCurrentPTSInfo_isr(
715         BXDM_PictureProvider_Handle hXdmPP,
716         BXDM_PictureProvider_PTSInfo *pPTSInfo
717         );
718
719BERR_Code
720BXDM_PictureProvider_GetLastCodedPTSInfo_isr(
721         BXDM_PictureProvider_Handle hXdmPP,
722         BXDM_PictureProvider_PTSInfo *pPTSInfo
723         );
724
725BERR_Code
726BXDM_PictureProvider_GetNextPTSInfo_isr(
727         BXDM_PictureProvider_Handle hXdmPP,
728         BXDM_PictureProvider_PTSInfo *pPTSInfo
729         );
730
731BERR_Code
732BXDM_PictureProvider_GetIPictureFoundStatus_isr(
733         BXDM_PictureProvider_Handle hXdmPP,
734         bool *pbFound
735         );
736
737BERR_Code
738BXDM_PictureProvider_GetPictureTag_isr(
739         BXDM_PictureProvider_Handle hXdmPP,
740         uint32_t *puiValue
741         );
742
743BERR_Code
744BXDM_PictureProvider_GetCurrentTimeCode_isr(
745         BXDM_PictureProvider_Handle hXdmPP,
746         BXDM_Picture_GopTimeCode *pstTimeCode
747         );
748
749BERR_Code
750BXDM_PictureProvider_GetCurrentPicture_isr(
751         BXDM_PictureProvider_Handle hXdmPP,
752         BXDM_Picture *pPicture
753         );
754
755BERR_Code
756BXDM_PictureProvider_SetPauseMode_isr(
757         BXDM_PictureProvider_Handle hXdmPP,
758         bool bEnable
759         );
760
761BERR_Code
762BXDM_PictureProvider_GetPauseMode_isr(
763         BXDM_PictureProvider_Handle hXdmPP,
764         bool *pbEnable
765         );
766
767#if 0
768typedef enum BXDM_PictureProvider_FrameAdvanceMode
769{
770      BXDM_PictureProvider_FrameAdvanceMode_eOff,
771      BXDM_PictureProvider_FrameAdvanceMode_eField,
772      BXDM_PictureProvider_FrameAdvanceMode_eFrame,
773      BXDM_PictureProvider_FrameAdvanceMode_eFrameByField,
774
775      BXDM_PictureProvider_FrameAdvanceMode_eMax
776} BXDM_PictureProvider_FrameAdvanceMode;
777#endif
778
779BERR_Code
780BXDM_PictureProvider_SetFrameAdvanceMode_isr(
781         BXDM_PictureProvider_Handle hXdmPP,
782         BXDM_PictureProvider_FrameAdvanceMode eFrameAdvanceMode
783      );
784
785#if 0
786typedef struct BXDM_PictureProvider_PreserveStateSettings
787{
788      bool bDisplay;
789      bool bCounters;
790} BXDM_PictureProvider_PreserveStateSettings;
791#endif
792
793BERR_Code
794BXDM_PictureProvider_GetDefaultPreserveStateSettings(
795         BXDM_PictureProvider_Handle hXdmPP,
796         BXDM_PictureProvider_PreserveStateSettings *pstSettings
797         );
798
799BERR_Code
800BXDM_PictureProvider_SetPreserveStateSettings_isr(
801         BXDM_PictureProvider_Handle hXdmPP,
802         const BXDM_PictureProvider_PreserveStateSettings *pstSettings
803         );
804
805BERR_Code
806BXDM_PictureProvider_GetPreserveStateSettings_isr(
807         BXDM_PictureProvider_Handle hXdmPP,
808         BXDM_PictureProvider_PreserveStateSettings *pstSettings
809         );
810
811BERR_Code
812BXDM_PictureProvider_SetReverseFieldsMode_isr(
813         BXDM_PictureProvider_Handle hXdmPP,
814         bool bEnable
815         );
816
817BERR_Code
818BXDM_PictureProvider_GetReverseFieldsMode_isr(
819         BXDM_PictureProvider_Handle hXdmPP,
820         bool *pbEnable
821         );
822
823BERR_Code
824BXDM_PictureProvider_SetAutoValidateStcOnPauseMode_isr(
825         BXDM_PictureProvider_Handle hXdmPP,
826         bool bEnable
827      );
828
829BERR_Code
830BXDM_PictureProvider_GetAutoValidateStcOnPauseMode_isr(
831         BXDM_PictureProvider_Handle hXdmPP,
832         bool *pbEnable
833      );
834
835BERR_Code
836BXDM_PictureProvider_SetProtocol_isr(
837         BXDM_PictureProvider_Handle hXdmPP,
838         BAVC_VideoCompressionStd eProtocol
839         );
840
841BERR_Code
842BXDM_PictureProvider_GetProtocol_isr(
843         BXDM_PictureProvider_Handle hXdmPP,
844         BAVC_VideoCompressionStd *peProtocol
845         );
846
847BERR_Code
848BXDM_PictureProvider_SetJitterToleranceImprovementMode_isr(
849         BXDM_PictureProvider_Handle hXdmPP,
850         bool bEnable
851         );
852
853BERR_Code
854BXDM_PictureProvider_GetJitterToleranceImprovementMode_isr(
855         BXDM_PictureProvider_Handle hXdmPP,
856         bool *pbEnable
857         );
858
859#if 0
860typedef enum BXDM_PictureProvider_MonitorRefreshRate
861{
862   BXDM_PictureProvider_MonitorRefreshRate_eUnknown = 0,
863   BXDM_PictureProvider_MonitorRefreshRate_e23_976Hz,
864   BXDM_PictureProvider_MonitorRefreshRate_e24Hz,
865   BXDM_PictureProvider_MonitorRefreshRate_e25Hz,
866   BXDM_PictureProvider_MonitorRefreshRate_e29_97Hz,
867   BXDM_PictureProvider_MonitorRefreshRate_e30Hz,
868   BXDM_PictureProvider_MonitorRefreshRate_e50Hz,
869   BXDM_PictureProvider_MonitorRefreshRate_e59_94Hz,
870   BXDM_PictureProvider_MonitorRefreshRate_e60Hz,
871   BXDM_PictureProvider_MonitorRefreshRate_e48Hz,
872
873   /* Add new enums above this line */
874   BXDM_PictureProvider_MonitorRefreshRate_eMax
875} BXDM_PictureProvider_MonitorRefreshRate;
876#endif
877
878BERR_Code
879BXDM_PictureProvider_SetMonitorRefreshRate_isr(
880         BXDM_PictureProvider_Handle hXdmPP,
881         BXDM_PictureProvider_MonitorRefreshRate eMonitorRefreshRate
882         );
883
884BERR_Code
885BXDM_PictureProvider_GetMonitorRefreshRate_isr(
886         BXDM_PictureProvider_Handle hXdmPP,
887         BXDM_PictureProvider_MonitorRefreshRate *peMonitorRefreshRate
888         );
889
890#if 0
891typedef enum BXDM_PictureProvider_1080pScanMode
892{
893      /* eDefault: 1080p pass-thru, else 1080i
894       *
895       * 1080p pass-thru cases:
896       *   - 1080p23.97/24 --> 23.97/24 Hz
897       *   - 1080p25 --> 25 Hz
898       *   - 1080p29.97/30 --> 29.97/30 Hz
899       */
900       BXDM_PictureProvider_1080pScanMode_eDefault = 0,
901
902      /* eAdvanced: 1080p pass-thru + 1080p pulldown, else 1080i
903       *
904       * 1080p pulldown cases:
905       *   - 1080p23.97/24 --> 59.94/60 Hz (3:2 frame cadence)
906       *   - 1080p29.97/30 --> 59.94/60 Hz (2:2 frame cadence)
907       *   - 1080p25 --> 50Hz (2:2 frame cadence)
908       */
909       BXDM_PictureProvider_1080pScanMode_eAdvanced,
910
911      /* Add new enums ABOVE this line */
912       BXDM_PictureProvider_1080pScanMode_eMax
913} BXDM_PictureProvider_1080pScanMode;
914#endif
915
916BERR_Code
917BXDM_PictureProvider_Set1080pScanMode_isr(
918         BXDM_PictureProvider_Handle hXdmPP,
919         BXDM_PictureProvider_1080pScanMode eScanMode
920         );
921
922BERR_Code
923BXDM_PictureProvider_Get1080pScanMode_isr(
924         BXDM_PictureProvider_Handle hXdmPP,
925         BXDM_PictureProvider_1080pScanMode *peScanMode
926         );
927
928BERR_Code
929BXDM_PictureProvider_SetSTCIndex_isr(
930         BXDM_PictureProvider_Handle hXdmPP,
931         uint32_t uiValue
932         );
933
934BERR_Code
935BXDM_PictureProvider_GetSTCIndex_isr(
936         BXDM_PictureProvider_Handle hXdmPP,
937         uint32_t *puiValue
938         );
939
940BERR_Code
941BXDM_PictureProvider_SetCRCMode_isr(
942         BXDM_PictureProvider_Handle hXdmPP,
943         bool bEnable
944         );
945
946BERR_Code
947BXDM_PictureProvider_GetCRCMode_isr(
948         BXDM_PictureProvider_Handle hXdmPP,
949         bool *pbEnable
950         );
951
952BERR_Code
953BXDM_PictureProvider_SetRemovalDelay_isr(
954         BXDM_PictureProvider_Handle hXdmPP,
955         uint32_t uiValue
956         );
957
958BERR_Code
959BXDM_PictureProvider_GetRemovalDelay_isr(
960         BXDM_PictureProvider_Handle hXdmPP,
961         uint32_t *puiValue
962         );
963
964BERR_Code
965BXDM_PictureProvider_SetPreRollRate_isr(
966         BXDM_PictureProvider_Handle hXdmPP,
967         const BXDM_Picture_Rate *pstPreRollRate
968         );
969
970BERR_Code
971BXDM_PictureProvider_GetPreRollRate_isr(
972         BXDM_PictureProvider_Handle hXdmPP,
973         BXDM_Picture_Rate *pstPreRollRate
974         );
975
976BERR_Code
977BXDM_PictureProvider_SetPlaybackMode_isr(
978         BXDM_PictureProvider_Handle hXdmPP,
979         bool bEnable
980         );
981
982BERR_Code
983BXDM_PictureProvider_GetPlaybackMode_isr(
984         BXDM_PictureProvider_Handle hXdmPP,
985         bool *pbEnable
986         );
987
988BERR_Code
989BXDM_PictureProvider_SetDefaultFrameRate_isr(
990         BXDM_PictureProvider_Handle hXdmPP,
991         BAVC_FrameRateCode eFrameRate
992         );
993
994BERR_Code
995BXDM_PictureProvider_GetDefaultFrameRate_isr(
996         BXDM_PictureProvider_Handle hXdmPP,
997         BAVC_FrameRateCode *peFrameRate
998         );
999
1000#if 0
1001typedef enum BXDM_PictureProvider_FrameRateDetectionMode
1002{
1003   /* Disable frame rate detection.  Will always return unknown */
1004      BXDM_PictureProvider_FrameRateDetectionMode_eOff,
1005
1006   /* Fast frame rate detection.  Will return best guess as soon as
1007    * possible.  Result may oscillate initially for very close frame
1008    * rates (e.g. 29.97 vs 30 fps) */
1009      BXDM_PictureProvider_FrameRateDetectionMode_eFast,
1010
1011   /* Stable frame rate detection.  Will return "unknown" until frame
1012    * rate stabilizes.  Good for differentiating between close frame
1013    * rates (e.g. 29.97 vs 30 fps) */
1014      BXDM_PictureProvider_FrameRateDetectionMode_eStable,
1015
1016      BXDM_PictureProvider_FrameRateDetectionMode_eMax
1017
1018} BXDM_PictureProvider_FrameRateDetectionMode;
1019#endif
1020
1021BERR_Code
1022BXDM_PictureProvider_SetFrameRateDetectionMode_isr(
1023         BXDM_PictureProvider_Handle hXdmPP,
1024         BXDM_PictureProvider_FrameRateDetectionMode eFrameRateDetectionMode
1025         );
1026
1027BERR_Code
1028BXDM_PictureProvider_GetFrameRateDetection_isr(
1029         BXDM_PictureProvider_Handle hXdmPP,
1030         BXDM_PictureProvider_FrameRateDetectionMode *peFrameRateDetectionMode
1031         );
1032
1033BERR_Code
1034BXDM_PictureProvider_SetASTMMode_isr(
1035         BXDM_PictureProvider_Handle hXdmPP,
1036         bool bEnable
1037         );
1038
1039BERR_Code
1040BXDM_PictureProvider_GetASTMMode_isr(
1041         BXDM_PictureProvider_Handle hXdmPP,
1042         bool *pbEnable
1043         );
1044
1045BERR_Code
1046BXDM_PictureProvider_SetVirtualTSMOnPCRDiscontinuityMode_isr(
1047         BXDM_PictureProvider_Handle hXdmPP,
1048         bool bEnable
1049         );
1050
1051BERR_Code
1052BXDM_PictureProvider_GetVirtualTSMOnPCRDiscontinuityMode_isr(
1053         BXDM_PictureProvider_Handle hXdmPP,
1054         bool *pbEnable
1055         );
1056
1057#if 0
1058typedef enum BXDM_PictureProvider_ErrorHandlingMode
1059{
1060      BXDM_PictureProvider_ErrorHandlingMode_eOff, /* display all pictures */
1061      BXDM_PictureProvider_ErrorHandlingMode_ePicture, /* drop pictures if Decode Error is set  */
1062      BXDM_PictureProvider_ErrorHandlingMode_ePrognostic, /* drop pictures from Decode Error to the next RAP */
1063
1064      BXDM_PictureProvider_ErrorHandlingMode_eMax
1065} BXDM_PictureProvider_ErrorHandlingMode;
1066#endif
1067
1068BERR_Code
1069BXDM_PictureProvider_SetErrorHandlingMode_isr(
1070         BXDM_PictureProvider_Handle hXdmPP,
1071         BXDM_PictureProvider_ErrorHandlingMode eErrorHandlingMode
1072         );
1073
1074BERR_Code
1075BXDM_PictureProvider_GetErrorHandlingMode_isr(
1076         BXDM_PictureProvider_Handle hXdmPP,
1077         BXDM_PictureProvider_ErrorHandlingMode *peErrorHandlingMode
1078         );
1079
1080BERR_Code
1081BXDM_PictureProvider_SetTimerHandle_isr(
1082         BXDM_PictureProvider_Handle hXdmPP,
1083         BTMR_TimerHandle hTimer
1084         );
1085
1086BERR_Code
1087BXDM_PictureProvider_GetTimerHandle_isr(
1088         BXDM_PictureProvider_Handle hXdmPP,
1089         BTMR_TimerHandle *phTimer
1090         );
1091
1092BERR_Code
1093BXDM_PictureProvider_SetChannelSyncMode_isr(
1094         BXDM_PictureProvider_Handle hXdmPP,
1095         bool bEnable
1096         );
1097
1098BERR_Code
1099BXDM_PictureProvider_GetChannelSyncMode_isr(
1100         BXDM_PictureProvider_Handle hXdmPP,
1101         bool *pbEnable
1102         );
1103
1104BERR_Code
1105BXDM_PictureProvider_SetDIH(
1106         BXDM_PictureProvider_Handle hXdmPP,
1107         BXDM_DisplayInterruptHandler_Handle hXdmDih
1108         );
1109
1110BERR_Code
1111BXDM_PictureProvider_GetDIH(
1112         BXDM_PictureProvider_Handle hXdmPP,
1113         BXDM_DisplayInterruptHandler_Handle *phXdmDih
1114         );
1115
1116BERR_Code
1117BXDM_PictureProvider_SetDeinterlacerMaxHeight(
1118         BXDM_PictureProvider_Handle hXdmPP,
1119         uint32_t uiMaxHeight
1120         );
1121
1122BERR_Code
1123BXDM_PictureProvider_GetDeinterlacerMaxHeight(
1124         BXDM_PictureProvider_Handle hXdmPP,
1125         uint32_t * puiMaxHeight
1126         );
1127
1128#if 0
1129/* SW7405-4703: Add APIs for controlling Horizontal Overscan processing */
1130typedef enum BXDM_PictureProvider_HorizontalOverscanMode
1131{
1132   BXDM_PictureProvider_HorizontalOverscanMode_eAuto,
1133   BXDM_PictureProvider_HorizontalOverscanMode_eDisable,
1134
1135   /* Add more enums ABOVE this line */
1136   BXDM_PictureProvider_HorizontalOverscanMode_eMax
1137} BXDM_PictureProvider_HorizontalOverscanMode;
1138#endif
1139
1140BERR_Code
1141BXDM_PictureProvider_SetHorizontalOverscanMode_isr(
1142         BXDM_PictureProvider_Handle hXdmPP,
1143         BXDM_PictureProvider_HorizontalOverscanMode eHorizontalOverscanMode
1144         );
1145
1146BERR_Code
1147BXDM_PictureProvider_GetHorizontalOverscanMode_isr(
1148         BXDM_PictureProvider_Handle hXdmPP,
1149         BXDM_PictureProvider_HorizontalOverscanMode *peHorizontalOverscanMode
1150         );
1151
1152#if 0
1153/* SWDEPRECATED-1003: needed to turn off the FIC logic during certain trick modes */
1154typedef enum BXDM_PictureProvider_TrickMode
1155{
1156   BXDM_PictureProvider_TrickMode_eAuto=0,
1157   BXDM_PictureProvider_TrickMode_eNormal,
1158   BXDM_PictureProvider_TrickMode_eSparsePictures,
1159   BXDM_PictureProvider_TrickMode_ePause,
1160   BXDM_PictureProvider_TrickMode_eRewind,
1161   BXDM_PictureProvider_TrickMode_eFastForward,
1162
1163   /* Add more enums ABOVE this line */
1164   BXDM_PictureProvider_TrickMode_eMax
1165} BXDM_PictureProvider_TrickMode;
1166#endif
1167
1168BERR_Code
1169BXDM_PictureProvider_SetTrickMode_isr(
1170   BXDM_PictureProvider_Handle hXdmPP,
1171   BXDM_PictureProvider_TrickMode eTrickMode
1172   );
1173
1174BERR_Code
1175BXDM_PictureProvider_GetTrickMode_isr(
1176   BXDM_PictureProvider_Handle hXdmPP,
1177   BXDM_PictureProvider_TrickMode * peTrickMode
1178   );
1179
1180BERR_Code
1181BXDM_PictureProvider_SetFrameRateOverride_isr(
1182   BXDM_PictureProvider_Handle hXdmPP,
1183   const BXDM_Picture_FrameRateOverride *pstFrameRateOverride
1184   );
1185
1186BERR_Code
1187BXDM_PictureProvider_GetFrameRateOverride_isr(
1188   BXDM_PictureProvider_Handle hXdmPP,
1189   BXDM_Picture_FrameRateOverride *pstFrameRateOverride
1190   );
1191
1192BERR_Code
1193BXDM_PictureProvider_SetInstanceID_isr(
1194   BXDM_PictureProvider_Handle hXdmPP,
1195   uint32_t uiInstanceID
1196   );
1197
1198BERR_Code
1199BXDM_PictureProvider_GetInstanceID_isr(
1200   BXDM_PictureProvider_Handle hXdmPP,
1201   uint32_t * puiInstanceID
1202   );
1203
1204
1205/* SW7422-72: API's and constants to allow the middleware/application to specify
1206 * an orientation for each picture.  If "bOverrideOrientation" is set
1207 * in the BXDM_PictureProvider_3DSettings structure, the "eOrientation" field
1208 * will be used to fill in the MFD structure. 
1209 * If "bOverrideOrientation" is not set, the MFD will be filled in based on
1210 * data received from AVD, i.e. SEI messages and/or PPB flags.
1211 * "bSetNextPointer" is to support MVC on the older DVD chips.  When true,
1212 * both of the MFD pointers "pNext" and "pEnhanced" will be set.
1213 */
1214
1215#if 0
1216typedef enum BXDM_PictureProvider_Orientation
1217{
1218   BXDM_PictureProvider_Orientation_e2D=0,
1219   BXDM_PictureProvider_Orientation_eLeftRight,
1220   BXDM_PictureProvider_Orientation_eOverUnder,
1221   BXDM_PictureProvider_Orientation_eLeftRightFullFrame,
1222   BXDM_PictureProvider_Orientation_eRightLeftFullFrame,
1223   BXDM_PictureProvider_Orientation_eLeftRightEnhancedResolution,
1224
1225   BXDM_PictureProvider_Orientation_eMax
1226
1227} BXDM_PictureProvider_Orientation;
1228
1229typedef struct BXDM_PictureProvider_3DSettings
1230{
1231   bool bOverrideOrientation;
1232   BXDM_PictureProvider_Orientation eOrientation;
1233
1234   bool bSetNextPointer;
1235
1236} BXDM_PictureProvider_3DSettings;
1237#endif
1238
1239BERR_Code
1240BXDM_PictureProvider_Set3D_isr(
1241   BXDM_PictureProvider_Handle hXdmPP,
1242   const BXDM_PictureProvider_3DSettings * pst3DSettings
1243   );
1244
1245BERR_Code
1246BXDM_PictureProvider_Get3D_isr(
1247   BXDM_PictureProvider_Handle hXdmPP,
1248   BXDM_PictureProvider_3DSettings * pst3DSettings
1249   );
1250
1251BERR_Code
1252BXDM_PictureProvider_GetDefault3D(
1253   BXDM_PictureProvider_Handle hXdmPP,
1254   BXDM_PictureProvider_3DSettings * pst3DSettings
1255   );
1256
1257/*
1258 * SW7425-1264: support for a synthesized SW STC, can create a clock internal
1259 * to XDM that run backwards.
1260 *
1261 * The clock override is set by calling "BXDM_PictureProvider_SetClockOverride_isr".
1262 * "BXDM_PictureProvider_GetClockOverride_isr" returns the most recently written values.
1263 *
1264 * When "bEnableClockOverride" is true, XDM will use an internal SW STC.
1265 *
1266 * When "bLoadSwStc" is true, the SW STC will be initialized with "uiStcValue".
1267 * This loading occurs at the beginning of XDM's execution.  If "bLoadSwStc"
1268 * is false, the SW STC will not be loaded.  This mechanism allows
1269 * "BXDM_PictureProvider_SetClockOverride_isr" to be called without changing the
1270 * current value of the SW STC.
1271 *
1272 * "iStcDelta" is added to the SW STC every vsync, effectively at the end of XDM's execution. 
1273 * "iStcDelta" can be negative, this will cause the clock to run backwards. 
1274 * The units of "iStcDelta" are clock ticks; for example to achieve a 60 Hz display rate,
1275 * "iStcDelta" would be set to 750.
1276 *
1277 * The current SW STC can be retrieved by calling BXDM_PictureProvider_GetCurrentPTSInfo_isr
1278 * or BXVD_GetPTS_isr with "bEnableClockOverride" set to true.  The SW STC will be returned in
1279 * "stPTSInfo.uiSTCSnapShot".
1280 */
1281#if 0
1282typedef struct BXDM_PictureProvider_ClockOverride
1283{
1284   /* When true, XVD will use an internal SW STC */
1285   bool       bEnableClockOverride;
1286
1287   /* Initial value of the internal SW STC */
1288   uint32_t   uiStcValue;
1289
1290   /* When true, the internal SW STC will be loaded with uiStcValue.
1291    * If false, the uiStcValue will not be changed.
1292    */
1293   bool       bLoadSwStc;
1294
1295   /* Added to the internal STC on each vsync.
1296    * A negative value will cause the STC to decrement
1297    */
1298   int32_t    iStcDelta;
1299
1300} BXDM_PictureProvider_ClockOverride;
1301#endif
1302
1303
1304BERR_Code
1305BXDM_PictureProvider_SetClockOverride_isr(
1306   BXDM_PictureProvider_Handle hXdmPP,
1307   const BXDM_PictureProvider_ClockOverride *pstClockOverride
1308   );
1309
1310
1311BERR_Code
1312BXDM_PictureProvider_GetClockOverride_isr(
1313   BXDM_PictureProvider_Handle hXdmPP,
1314   BXDM_PictureProvider_ClockOverride *pstClockOverride
1315   );
1316
1317/* SW7425-2270:
1318 * The application will call SetIgnoreNRTUnderflow when it determines that an NRT underflow
1319 * is actually a gap in the content (e.g. slideshow or end of stream) and the repeated picture
1320 * should actually be encoded.
1321 *
1322 * When SetIgnoreNRTUnderflow=true, the "decoder underflow" scenario should be ignored until either:
1323 * - the underflow condition ends
1324 * - the app explicitly sets SetIgnoreNRTUnderflow=false
1325 *
1326 * Note: only the "decoder underflow" condition is ignored. All other NRT scenarios
1327 * (e.g. "Other Transcode Stalled", "FIC Stall", etc) are still in effect.
1328 */
1329BERR_Code
1330BXDM_PictureProvider_SetIgnoreNRTUnderflow_isr(
1331   BXDM_PictureProvider_Handle hXdmPP,
1332   bool bIgnoreNRTUnderflow
1333   );
1334
1335BERR_Code
1336BXDM_PictureProvider_GetIgnoreNRTUnderflow_isr(
1337   BXDM_PictureProvider_Handle hXdmPP,
1338   bool * pbIgnoreNRTUnderflow
1339   );
1340
1341#include "bxdm_pp_callback.h"
1342
1343#ifdef __cplusplus
1344}
1345#endif
1346
1347#endif /* BXDM_PP_H_ */
Note: See TracBrowser for help on using the repository browser.