xref: /utopia/UTPA2-700.0.x/modules/dms/drv/dms_vsyncbridge/drvDMS.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2006-2007 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // (��MStar Confidential Information��) by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 ///////////////////////////////////////////////////////////////////////////////////////////////////
96 ///
97 /// @file   drvDMS.h
98 /// @author MStar Semiconductor Inc.
99 /// @brief  DMS Driver Interface
100 ///////////////////////////////////////////////////////////////////////////////////////////////////
101 
102 #ifndef _DRV_DMS_H_
103 #define _DRV_DMS_H_
104 
105 
106 #ifdef __cplusplus
107 extern "C"
108 {
109 #endif
110 #include "UFO.h"
111 
112 #include "apiDMS_Type.h"
113 //-------------------------------------------------------------------------------------------------
114 //  Driver Capability
115 //-------------------------------------------------------------------------------------------------
116 
117 
118 //-------------------------------------------------------------------------------------------------
119 //  Macro and Define
120 //-------------------------------------------------------------------------------------------------
121 #ifndef UNUSED
122 #define UNUSED(x) (void)(x)
123 #endif
124 
125 #define DMS_VERSION_DIP_GOP
126 //-------------------------------------------------------------------------------------------------
127 //  Type and Structure
128 //-------------------------------------------------------------------------------------------------
129 
130 //-------------------------------------------------------------------------------------------------
131 //  Function Prototype
132 //-------------------------------------------------------------------------------------------------
133 #ifdef MDRV_DMS_C
134 #define DRV_DMS_INTERFACE
135 #else
136 #define DRV_DMS_INTERFACE extern
137 #endif
138 
139 #define DMS_VERSION_VSYNCBRDIGE
140 #define DMS_MAX_WINDOW_NUM 2
141 #define DMS_DIP_QUEUEDEPTH  8
142 #define DMS_Invalid_ReadPointer_ID  DMS_DIP_QUEUEDEPTH
143 
144 //SHM resource
145 typedef enum
146 {
147     /// YCrYCb.
148     E_DMS_DIP_FMT_YUV422 = 0,
149     /// RGB domain
150     E_DMS_DIP_FMT_RGB565,
151     /// RGB domain
152     E_DMS_DIP_FMT_ARGB8888,
153     /// YUV420 HVD tile
154     E_DMS_DIP_FMT_YUV420,
155     /// YC separate 422
156     E_DMS_DIP_FMT_YC422,
157     /// YUV420 H265 tile
158     E_DMS_DIP_FMT_YUV420_H265,
159     /// YUV420 H265_10bits tile
160     E_DMS_DIP_FMT_YUV420_H265_10BITS,
161     /// YUV420 planer
162     E_DMS_DIP_FMT_YUV420_PLANER,
163     /// YUV420 semi planer
164     E_DMS_DIP_FMT_YUV420_SEMI_PLANER,
165     /// YUV422 2.5D DI Top field
166     E_DMS_DIP_FMT_YUV422_MED_DI_FIELDTYPE_TOP,
167     /// YUV422 2.5D DI Bottom field
168     E_DMS_DIP_FMT_YUV422_MED_DI_FIELDTYPE_BOTTOM,
169     /// YUV420 2.5D DI Top field
170     E_DMS_DIP_FMT_YUV420_MED_DI_FIELDTYPE_TOP,
171     /// YUV420 2.5D DI Bottom field
172     E_DMS_DIP_FMT_YUV420_MED_DI_FIELDTYPE_BOTTOM,
173     E_DMS_DIP_FMT_MAX
174 } EN_DMS_DIP_FMT;
175 
176 typedef enum
177 {
178     E_DMS_VIDEO_CODEC_UNKNOWN = -1,     /// Video codec type is unknown.
179     E_DMS_VIDEO_CODEC_MPEG4,            /// Video codec type is MPEG 4.
180     E_DMS_VIDEO_CODEC_MJPEG,            /// Video codec type is motion JPG.
181     E_DMS_VIDEO_CODEC_H264,             /// Video codec type is H264.
182     E_DMS_VIDEO_CODEC_RM,               /// Video codec type is RealVideo.
183     E_DMS_VIDEO_CODEC_TS,               /// Video codec type is TS File.
184     E_DMS_VIDEO_CODEC_MPEG,             /// Video codec type is MPEG 1/2.
185     E_DMS_VIDEO_CODEC_VC1,              /// Video codec type is VC1.
186     E_DMS_VIDEO_CODEC_AVS,              /// Video codec type is Audio Video Standard.
187     E_DMS_VIDEO_CODEC_FLV,              /// Video codec type is FLV.
188     E_DMS_VIDEO_CODEC_MVC,              /// Video codec type is MVC.
189     E_DMS_VIDEO_CODEC_VP6,              /// Video codec type is VP6.
190     E_DMS_VIDEO_CODEC_VP8,              /// Video codec type is VP8.
191     E_DMS_VIDEO_CODEC_HEVC,             /// Video codec type is HEVC.
192     E_DMS_VIDEO_CODEC_VP9,              /// Video codec type is VP9.
193 }E_DMS_VIDEO_CODEC;
194 
195 typedef enum
196 {
197     E_DMS_VIDEO_SCAN_TYPE_PROGRESSIVE = 0 ,
198     E_DMS_VIDEO_SCAN_TYPE_INTERLACE_FRAME,
199     E_DMS_VIDEO_SCAN_TYPE_INTERLACE_FIELD,
200     E_DMS_VIDEO_SCAN_TYPE_MAX,
201 }E_DMS_VIDEO_SCAN_TYPE;
202 
203 typedef enum
204 {
205     E_DMS_VIDEO_FIELD_ORDER_TYPE_BOTTOM = 0,
206     E_DMS_VIDEO_FIELD_ORDER_TYPE_TOP,
207     E_DMS_VIDEO_FIELD_ORDER_TYPE_MAX,
208 }E_DMS_VIDEO_FIELD_ORDER_TYPE;
209 
210 typedef enum
211 {
212     E_DMS_VIDEO_FIELD_TYPE_NONE = 0,
213     E_DMS_VIDEO_FIELD_TYPE_TOP,
214     E_DMS_VIDEO_FIELD_TYPE_BOTTOM,
215     E_DMS_VIDEO_FIELD_TYPE_BOTH,
216     E_DMS_VIDEO_FIELD_TYPE_MAX,
217 }E_DMS_VIDEO_FIELD_TYPE;
218 
219 typedef enum
220 {
221     E_DMS_VIDEO_TILE_MODE_NONE = 0,
222     E_DMS_VIDEO_TILE_MODE_16x16,
223     E_DMS_VIDEO_TILE_MODE_16x32,
224     E_DMS_VIDEO_TILE_MODE_32x16,
225     E_DMS_VIDEO_TILE_MODE_32x32,
226     E_DMS_VIDEO_TILE_MODE_MAX,
227 }E_DMS_VIDEO_TILE_MODE;
228 
229 /// DIP source data format
230 typedef enum
231 {
232 
233     E_DMS_VIDEO_DATA_FMT_YUV422 = 0,    /// YCrYCb.
234     E_DMS_VIDEO_DATA_FMT_RGB565,        /// RGB domain
235     E_DMS_VIDEO_DATA_FMT_ARGB8888,      /// RGB domain
236     E_DMS_VIDEO_DATA_FMT_YUV420,        /// YUV420 HVD tile
237     E_DMS_VIDEO_DATA_FMT_YC422,          /// YC separate 422
238     E_DMS_VIDEO_DATA_FMT_YUV420_H265,    /// YUV420 H265 tile
239     E_DMS_VIDEO_DATA_FMT_YUV420_H265_10BITS,/// YUV420 H265_10bits tile
240     E_DMS_VIDEO_DATA_FMT_YUV420_PLANER, /// YUV420 planer
241     E_DMS_VIDEO_DATA_FMT_YUV420_SEMI_PLANER,/// YUV420 semi planer
242     E_DMS_VIDEO_DATA_FMT_MAX
243 } E_DMS_VIDEO_DATA_FMT;
244 
245 typedef struct
246 {
247     MS_U32 u32version;
248     MS_U32 u32size;
249 } DMS_VIDEO_MFDEC_VER_CRL;
250 
251 typedef enum
252 {
253     E_DMS_DUMMY_VIDEO_H26X_MODE =0x00,
254     E_DMS_DUMMY_VIDEO_VP9_MODE  =0x01,
255 }E_DMS_VIDEO_MFDEC_VP9_MODE;
256 
257 typedef struct
258 {
259     DMS_VIDEO_MFDEC_VER_CRL stMFDec_HTLB_VerCtl;
260     MS_PHY u32HTLBEntriesAddr;
261     MS_U8  u8HTLBEntriesSize;
262     MS_U8  u8HTLBTableId;
263     void* pHTLBInfo;
264 } DMS_VIDEO_MFDEC_HTLB_INFO;
265 
266 typedef struct
267 {
268     MS_BOOL bMFDec_Enable;
269     MS_U8 u8MFDec_Select;
270     MS_BOOL bHMirror; // no use
271     MS_BOOL bVMirror; // no use
272     MS_BOOL bUncompress_mode;
273     MS_BOOL bBypass_codec_mode;
274     E_DMS_VIDEO_MFDEC_VP9_MODE en_MFDecVP9_mode;
275     MS_U16 u16StartX;
276     MS_U16 u16StartY;
277     MS_PHY phyBitlen_Base;
278     MS_U16 u16Bitlen_Pitch;
279     DMS_VIDEO_MFDEC_HTLB_INFO stMFDec_HTLB_Info; //reserve
280     void* pMFDecInfo; //reserve
281 }DMS_VIDEO_MFDEC_INFO;
282 
283 typedef struct
284 {
285     MS_BOOL bValid;                                 /// frame buffer Valid
286     MS_U16 u16SrcWidth;                             /// frame buffer Width
287     MS_U16 u16SrcHeight;                            /// frame buffer Height
288     MS_U16 u16CropRight;                            ///right cropping
289     MS_U16 u16CropLeft;                             ///left cropping
290     MS_U16 u16CropBottom;                           ///bottom cropping
291     MS_U16 u16CropTop;                              ///top cropping
292     MS_U16 u16SrcPitch;                             /// frame buffer pitch
293     MS_PHY u32SrcLumaAddr;                          /// frame buffer base + the start offset of current displayed luma data. Unit: byte.
294     MS_PHY u32SrcChromaAddr;                        /// frame buffer base + the start offset of current displayed chroma data. Unit: byte.
295     MS_PHY u32SrcLumaAddr_2bit;                     /// physical address of Luma LSB 2bit buffer (Main10 profile)
296     MS_PHY u32SrcChromaAddr_2bit;                   /// physical address of Chroma LSB 2bit buffer (Main10 profile)
297     MS_PHY u32SrcLumaAddrI;                         /// physical address of Luma bottom field (interlace)
298     MS_PHY u32SrcLumaAddrI_2bit;                    /// physical address of Luma LSB 2bit bottom field (interlace)
299     MS_PHY u32SrcChromaAddrI;                       /// physical address of Chroma bottom field (interlace)
300     MS_PHY u32SrcChromaAddrI_2bit;                  /// physical address of Chroma LSB 2bit bottom field (interlace)
301     MS_U16 u16Src10bitPitch;                        /// frame buffer 10bit Pitch
302     MS_BOOL b10bitData;                             /// frame buffer 10bit data
303     MS_U8 u8LumaBitdepth;
304     MS_U32 u32FrameRate ;
305     E_DMS_VIDEO_DATA_FMT eFmt;
306     MS_U32 u32Window;
307     E_DMS_VIDEO_CODEC eCODEC;
308     E_DMS_VIDEO_SCAN_TYPE eScanType;
309     E_DMS_VIDEO_FIELD_ORDER_TYPE eFieldOrderType;
310     E_DMS_VIDEO_FIELD_TYPE eFieldType;
311     E_DMS_VIDEO_TILE_MODE eTileMode;
312     DMS_VIDEO_MFDEC_INFO stMFdecInfo;
313     // New Flip
314     MS_U32 u32FrameIndex;                           /// Frame index
315     MS_U32 u32VDECStreamID;                         /// Provide the VDEC stream ID to XC to access MApi_VDEC_EX_DisplayFrame() and MApi_VDEC_EX_ReleaseFrame()
316     MS_U32 u32VDECStreamVersion;                    /// Provide the VDEC stream ID Version to XC to access MApi_VDEC_EX_DisplayFrame() and MApi_VDEC_EX_ReleaseFrame()
317     MS_U32 u32PriData;                              /// Frame reference count
318     MS_U64 u64Pts;
319     //2nd buffer
320     MS_PHY phySrc2ndBufferLumaAddr;
321     MS_PHY phySrc2ndBufferChromaAddr;
322     MS_U16 u16Src2ndBufferPitch;
323     MS_U8 u8Src2ndBufferTileMode;
324 
325     //Di Task using member
326     MS_BOOL bIsAfterDiTask;
327     MS_BOOL bIs2ndField;
328     MS_U8 u8DiOutputRingBufferID;
329 } DMS_VDECFRAME_INFO;
330 
331 typedef struct
332 {
333     union
334     {
335         struct
336         {
337             MS_U8 u4DSIndex0 : 4;
338             MS_U8 u4DSIndex1 : 4;
339         };
340         MS_U8 u8DSIndex;
341     };
342 }DS_Index;
343 
344 typedef struct
345 {
346     MS_U8 u8SizeChange;
347     MS_U8 u8FrcMode;
348     MS_BOOL bDS_Enable;
349     MS_BOOL bVsyncIntAlive;
350     MS_U16 u16SrcWidth;
351     MS_U16 u16SrcHeight;
352     MS_U16 u16FrameRate;
353     MS_U32 CodecType;
354     MS_U32 u32AspectWidth;
355     MS_U32 u32AspectHeight;
356     MS_U32 u32CropLeft;
357     MS_U32 u32CropRight;
358     MS_U32 u32CropTop;
359     MS_U32 u32CropBottom;
360     MS_U32 panelWidth;
361     MS_U32 panelHeight;
362     MS_U8 u8DNRFrameCnt;
363     MS_U8 u8FieldCtrl;
364     MS_U8 u8Freeze;
365     MS_U8 u8Interlace;
366     MS_U8 u8UpdateFrcMode;
367     MS_U8 u8ForcePMode;
368     MS_U8 u8ForceInterlace;
369     MS_U8 u8SaveBandwidthMode;
370     MS_U8 u8MirrorMode;
371     DS_Index ds_curr_index;
372     MS_U32 u32LastTime;
373     MS_U32 u32FrameCount;
374     ST_DMS_DISPFRAMEFORMAT lastdff;
375     ST_DMS_WINDOW stOutSideCropWin;
376     MS_U32 u32WidthForOutsideCrop;
377     MS_U32 u32HeightForOutsideCrop;
378     ST_DMS_WINDOW stCurrentCropWin;
379 } DMS_DRV_CTRL;
380 
381 //
382 typedef enum
383 {
384     E_DMS_MVOP_FLOW_UNKNOWN           = 0,
385     E_DMS_MVOP_FLOW_FROM_DIP          = 1,
386     E_DMS_MVOP_FLOW_FROM_VDEC         = 2,
387     E_DMS_MVOP_FLOW_MAX,
388 } E_DMS_MVOP_FLOW_CONTROL;
389 
390 typedef enum
391 {
392     E_DMS_DIP_MULTIVIEW_BUF_ID_0      = 0,
393     E_DMS_DIP_MULTIVIEW_BUF_ID_1      = 1,
394     E_DMS_DIP_MULTIVIEW_BUF_ID_MAX,
395 } E_DMS_DIP_MULTIVIEW_BUF_ID;
396 
397 typedef enum
398 {
399     E_DMS_DIP_CLIENT_GOP              = 0,
400     E_DMS_DIP_CLIENT_MVOP             = 1,
401     E_DMS_DIP_CLIENT_MAX,
402 } E_DMS_DIP_CLIENT;
403 
404 typedef enum
405 {
406     E_DMS_DIP_NORMAL              = 0,
407     E_DMS_DIP_DI                  = 1,
408     E_DMS_DIP_CAPTURE             = 2,
409     E_DMS_DIP_MAX,
410 } E_DMS_DIP_ACTION;
411 
412 #ifdef DMS_VERSION_DIPGOP
413 typedef struct
414 {
415     MS_BOOL bDIPwinUse;
416     ST_DMS_WINDOW stCropWin;
417     ST_DMS_WINDOW stDstWin;
418     MS_PHY u32DIPStartMemAddr;
419     MS_PHY u32DIPEndMemAddr;
420     MS_PHY u32DIPDoubleBufStartMemAddr;
421     MS_PHY u32DIPDoubleBufEndMemAddr;
422     MS_PHY phyDIPRingBufMemAddr[DMS_DI_RING_BUFFER];
423     MS_U32 u32RingBufferSize;
424     MS_U32 u32Window;
425     MS_PHY u32GEStartMemAddr;
426     MS_PHY u32GEEndMemAddr;
427 } DMS_DIPWIN_INFO;
428 
429 /// DIP tile block
430 typedef enum
431 {
432     DMS_DIP_TILE_BLOCK_R_NONE  = 0x0,
433     DMS_DIP_TILE_BLOCK_W_NONE  = 0x1,
434     DMS_DIP_TILE_BLOCK_R_16_32 = 0x2,
435     DMS_DIP_TILE_BLOCK_W_16_32 = 0x3,
436     DMS_DIP_TILE_BLOCK_R_32_16 = 0x4,
437     DMS_DIP_TILE_BLOCK_W_32_16 = 0x5,
438     DMS_DIP_TILE_BLOCK_R_32_32 = 0x6,
439     DMS_DIP_TILE_BLOCK_W_32_32 = 0x7,
440 }EN_DMS_DIP_TILE_BLOCK;
441 
442 typedef struct
443 {
444     MS_U32 u32Enable;
445     MS_U32 u32Visible;
446     MS_U32 u32FrameRate;
447     MS_U32 u32Width;
448     MS_U32 u32Height;
449     EN_DMS_DIP_FMT enColorFormat;
450     EN_DMS_DIP_TILE_BLOCK enTileBlock;
451     MS_PHY u32StartMemAddr;
452     MS_PHY u32EndMemAddr;
453     MS_PHY u32SecondBufStartMemAddr;
454     MS_PHY u32SecondBufEndMemAddr;
455     MS_PHY u32ThirdBufStartMemAddr;
456     MS_PHY u32ThirdBufEndMemAddr;
457     //MS_PHY phyRingBufMemAddr[DMS_CAPTUREWIN_RING_BUFFER];
458     ST_DMS_CAPTURE_INFO stCaptureRingBuf[DMS_CAPTUREWIN_RING_BUFFER];
459     MS_U32 u32Window;
460 } DMS_DIPCAPTUREWIN_INFO;
461 #endif
462 
463 typedef struct
464 {
465     MS_U16  u16WritePointer;
466     MS_U16  u16PreWritePointer;
467 } DMS_DIPCaptureWin_WritePointer;
468 
469 typedef struct
470 {
471     MS_U16  u16WindowCaptured;
472     MS_U16  u16WindowRemoved;
473 } DMS_DIPCaptureWin_WindowChanged;
474 
475 typedef struct
476 {
477     MS_U16  u16WritePointer;
478     MS_U16  u16ReadPointer;
479 } DMS_DIPWriteReadPointer;
480 
481 typedef struct
482 {
483     EN_DMS_DIP_FMT eDIPRFmt;
484     EN_DMS_DIP_FMT eDIPWFmt;
485     MS_U32 u32PanelWidth;
486     MS_U32 u32PanelHeight;
487 } DMS_DIPMEM_INFO;
488 
489 typedef struct
490 {
491     MS_BOOL     bCleanBuf;
492     MS_BOOL     bDispChange;
493 } DMS_DISP_BUFFER_FLAG;
494 
495 typedef enum
496 {
497     E_DMS_ID_VAR = 0,          //
498 } EN_DMS_POOL_TYPE;
499 
500 MS_U32 MDrv_DMS_Get_Semaphore(void* pInstance, EN_DMS_POOL_TYPE ePoolType);
501 MS_U32 MDrv_DMS_Release_Semaphore(void* pInstance, EN_DMS_POOL_TYPE ePoolType);
502 
503 //----------------------------------------------------------------
504 //
505 //
506 //----------------------------------------------------------------
507 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Init(void* pInstance, ST_DMS_INITDATA *pstDMS_InitData);
508 EN_DMS_RESULT MDrv_DMS_SetMemoryType(void* pInstance, ST_DMS_SET_MEMORY_TYPE* pstDMS_SetMemType);
509 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_CreateWindow(void* pInstance, ST_DMS_WINDOW *pstOutputWin, ST_DMS_CREATE_WIN_INFO *pstCreateWin_Info, MS_U32 *pu32WindowID);
510 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_SetDigitalDecodeSignalInfo(void* pInstance, MS_U32 u32WindowID, ST_DMS_DISPFRAMEFORMAT *pstDispFrameFormat);
511 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_ClearDigitalDecodeSignalInfo(void* pInstance, MS_U32 u32WindowID);
512 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_DestroyWindow(void* pInstance, MS_U32 u32WindowID);
513 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_SetWindow(void* pInstance, MS_U32 u32WindowID, ST_DMS_SETWIN_INFO *pstDMS_SetWin_Info);
514 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_GetWindowInfo(void* pInstance, MS_U32 u32WindowID, ST_DMS_WINDOW_INFO *pstDMS_GetWin_Info);
515 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Video_Flip(void* pInstance, MS_U32 u32WindowID, ST_DMS_DISPFRAMEFORMAT* pstDispFrameFormat);
516 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_SetZOrder(void* pInstance, MS_U32 u32WindowID, MS_U32 u32ZOrder);
517 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Video_Freeze(void* pInstance, MS_U32 u32WindowID, MS_U32 u32Enable);
518 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Video_Mute(void* pInstance, MS_U32 u32WindowID, MS_U32 u32Enable);
519 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Set_MuteColor(void* pInstance, MS_U32 u32WindowID, ST_DMS_COLOR stMuteColor);
520 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_GetStatus(void* pInstance, MS_U32 *pu32Status);
521 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_GetCapability(void* pInstance, EN_DMS_CAPABILITY *peCapability);
522 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_SetOutputLayer(void* pInstance, ST_DMS_WINDOW *pstLayer);
523 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Set_3D_Mode(void* pInstance, MS_U32 u32WindowID, ST_DMS_3D_INFO *pst3DInfo);
524 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Set_CaptureInfo(void* pInstance, MS_U32 u32WindowID, ST_DMS_SET_CAPTURE_INFO *pstSetCaptureInfo);
525 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Get_CaptureBuffer(void* pInstance, MS_U32 u32WindowID, ST_DMS_CAPTURE_INFO *pstCaptureInfo);
526 DRV_DMS_INTERFACE EN_DMS_RESULT MDrv_DMS_Release_CaptureBuffer(void* pInstance, MS_U32 u32WindowID, ST_DMS_CAPTURE_INFO *pstCaptureInfo);
527 
528 #ifdef __cplusplus
529 }
530 #endif
531 
532 #endif // _DRV_DMS_H_
533