xref: /utopia/UTPA2-700.0.x/mxlib/include/drvMVD.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi 
95*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi ///
97*53ee8cc1Swenshuai.xi /// @file  drvMVD.h
98*53ee8cc1Swenshuai.xi /// @brief MPEG-2/4 Video Decoder header file
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #ifndef _DRV_MVD_H_
103*53ee8cc1Swenshuai.xi #define _DRV_MVD_H_
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
109*53ee8cc1Swenshuai.xi // Include List
110*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi #ifdef __cplusplus
113*53ee8cc1Swenshuai.xi extern "C"
114*53ee8cc1Swenshuai.xi {
115*53ee8cc1Swenshuai.xi #endif
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi #include "drvmvd_cc.h"
118*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
119*53ee8cc1Swenshuai.xi // Constant & Macro Definition
120*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
121*53ee8cc1Swenshuai.xi /// Version string.
122*53ee8cc1Swenshuai.xi #define MVD_DRV_VERSION                 /* Character String for DRV/API version             */  \
123*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
124*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
125*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
126*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
127*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
128*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
129*53ee8cc1Swenshuai.xi     {'M','V','D','_'},                  /* IP__                                             */  \
130*53ee8cc1Swenshuai.xi     {'0','A'},                          /* 0.0 ~ Z.Z                                        */  \
131*53ee8cc1Swenshuai.xi     {'0','1'},                          /* 00 ~ 99                                          */  \
132*53ee8cc1Swenshuai.xi     {'0','0','6','4','1','6','6','7'},  /* CL#                                              */  \
133*53ee8cc1Swenshuai.xi     MSIF_OS
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi #define MIU1_BASE_DEFAULT 0x8000000
136*53ee8cc1Swenshuai.xi #define MIU_SEL_0         0
137*53ee8cc1Swenshuai.xi #define MIU_SEL_1         1
138*53ee8cc1Swenshuai.xi 
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi #ifdef REDLION_LINUX_KERNEL_ENVI
141*53ee8cc1Swenshuai.xi 	#define MVD_ENABLE_MSOS_MIU1_BASE 	0
142*53ee8cc1Swenshuai.xi #else
143*53ee8cc1Swenshuai.xi 	#define MVD_ENABLE_MSOS_MIU1_BASE 	1
144*53ee8cc1Swenshuai.xi #endif
145*53ee8cc1Swenshuai.xi 
146*53ee8cc1Swenshuai.xi 
147*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
148*53ee8cc1Swenshuai.xi // Type & Structure Declaration
149*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
150*53ee8cc1Swenshuai.xi /// MVD's capability
151*53ee8cc1Swenshuai.xi typedef struct _MVD_Caps
152*53ee8cc1Swenshuai.xi {
153*53ee8cc1Swenshuai.xi     MS_BOOL bMPEG2;
154*53ee8cc1Swenshuai.xi     MS_BOOL bMPEG4;
155*53ee8cc1Swenshuai.xi     MS_BOOL bVC1;
156*53ee8cc1Swenshuai.xi } MVD_Caps;
157*53ee8cc1Swenshuai.xi 
158*53ee8cc1Swenshuai.xi /// MVD driver info.
159*53ee8cc1Swenshuai.xi typedef struct _MVD_DrvInfo
160*53ee8cc1Swenshuai.xi {
161*53ee8cc1Swenshuai.xi     MS_U32 u32Resource;
162*53ee8cc1Swenshuai.xi     MS_U32 u32DeviceNum;
163*53ee8cc1Swenshuai.xi     MS_U32 u32FWVersion;
164*53ee8cc1Swenshuai.xi     MVD_Caps stCaps;
165*53ee8cc1Swenshuai.xi } MVD_DrvInfo;
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi /// Firmware status
168*53ee8cc1Swenshuai.xi typedef enum _MVD_DecStat
169*53ee8cc1Swenshuai.xi {
170*53ee8cc1Swenshuai.xi     E_MVD_STAT_IDLE             = 0x00,
171*53ee8cc1Swenshuai.xi     E_MVD_STAT_FIND_STARTCODE   = 0x01,//start code
172*53ee8cc1Swenshuai.xi     E_MVD_STAT_FIND_SPECIALCODE = 0x11,//special code [00_00_01_C5_ab_08_06_27]
173*53ee8cc1Swenshuai.xi                                        //for flush data using
174*53ee8cc1Swenshuai.xi     E_MVD_STAT_FIND_FRAMEBUFFER = 0x02,
175*53ee8cc1Swenshuai.xi     //fw is trying to find empty FB to continue decoding.
176*53ee8cc1Swenshuai.xi     //if hang in this state, please check "vsync" or AVSync.
177*53ee8cc1Swenshuai.xi     E_MVD_STAT_WAIT_DECODEDONE  = 0x03,
178*53ee8cc1Swenshuai.xi     E_MVD_STAT_DECODE_DONE      = 0x04,
179*53ee8cc1Swenshuai.xi     E_MVD_STAT_WAIT_VDFIFO      = 0x05,
180*53ee8cc1Swenshuai.xi     E_MVD_STAT_INIT_SUCCESS     = 0x06,
181*53ee8cc1Swenshuai.xi     E_MVD_STAT_UNKNOWN          = 0xff,
182*53ee8cc1Swenshuai.xi } MVD_DecStat;
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi /// MVD driver status
185*53ee8cc1Swenshuai.xi typedef struct _MVD_DrvStatus
186*53ee8cc1Swenshuai.xi {
187*53ee8cc1Swenshuai.xi     MS_U32      u32FWVer;
188*53ee8cc1Swenshuai.xi     MVD_DecStat eDecStat;
189*53ee8cc1Swenshuai.xi     MS_BOOL     bIsBusy;
190*53ee8cc1Swenshuai.xi     MS_U8       u8LastFWCmd;
191*53ee8cc1Swenshuai.xi } MVD_DrvStatus;
192*53ee8cc1Swenshuai.xi 
193*53ee8cc1Swenshuai.xi /// Enumerate CodecType that MVD supports
194*53ee8cc1Swenshuai.xi typedef enum _MVD_CodecType
195*53ee8cc1Swenshuai.xi {
196*53ee8cc1Swenshuai.xi     E_MVD_CODEC_MPEG2                    = 0x10,
197*53ee8cc1Swenshuai.xi     E_MVD_CODEC_MPEG4                    = 0x00,
198*53ee8cc1Swenshuai.xi     E_MVD_CODEC_MPEG4_SHORT_VIDEO_HEADER = 0x01,
199*53ee8cc1Swenshuai.xi     E_MVD_CODEC_DIVX311                  = 0x02,
200*53ee8cc1Swenshuai.xi     E_MVD_CODEC_FLV                      = 0x03,
201*53ee8cc1Swenshuai.xi     E_MVD_CODEC_VC1_ADV                  = 0x04,
202*53ee8cc1Swenshuai.xi     E_MVD_CODEC_VC1_MAIN                 = 0x05,
203*53ee8cc1Swenshuai.xi     E_MVD_CODEC_UNKNOWN                  = 0xff
204*53ee8cc1Swenshuai.xi } MVD_CodecType;
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi /// Mode of MVD input source
207*53ee8cc1Swenshuai.xi typedef enum _MVD_SrcMode
208*53ee8cc1Swenshuai.xi {
209*53ee8cc1Swenshuai.xi     E_MVD_FILE_MODE       = 0x00,
210*53ee8cc1Swenshuai.xi     E_MVD_SLQ_MODE        = 0x01,
211*53ee8cc1Swenshuai.xi     E_MVD_TS_MODE         = 0x02,
212*53ee8cc1Swenshuai.xi     E_MVD_SLQ_TBL_MODE    = 0x03,
213*53ee8cc1Swenshuai.xi     E_MVD_TS_FILE_MODE    = 0x04,
214*53ee8cc1Swenshuai.xi     E_MVD_SRC_UNKNOWN     = 0x05
215*53ee8cc1Swenshuai.xi } MVD_SrcMode;
216*53ee8cc1Swenshuai.xi 
217*53ee8cc1Swenshuai.xi /// AVSync mode for file playback
218*53ee8cc1Swenshuai.xi typedef enum
219*53ee8cc1Swenshuai.xi {
220*53ee8cc1Swenshuai.xi     E_MVD_TIMESTAMP_FREERUN  = 0,  ///Player didn't set PTS/DTS, so display freerun
221*53ee8cc1Swenshuai.xi     E_MVD_TIMESTAMP_PTS      = 1,  ///Player set PTS to MVD decoder
222*53ee8cc1Swenshuai.xi     E_MVD_TIMESTAMP_DTS      = 2,  ///Player set DTS to MVD decoder
223*53ee8cc1Swenshuai.xi     E_MVD_TIMESTAMP_STS      = 3,  ///SortedTimeStamp means decoder should sort timestamp
224*53ee8cc1Swenshuai.xi     E_MVD_TIMESTAMP_PTS_RVU  = 4,  ///Player set PTS to MVD decoder
225*53ee8cc1Swenshuai.xi     E_MVD_TIMESTAMP_DTS_RVU  = 5,  ///Player set DTS to MVD decoder
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi } MVD_TIMESTAMP_TYPE;
228*53ee8cc1Swenshuai.xi 
229*53ee8cc1Swenshuai.xi /// ErrCode obtained from firmware
230*53ee8cc1Swenshuai.xi typedef enum _MVD_ErrCode
231*53ee8cc1Swenshuai.xi {
232*53ee8cc1Swenshuai.xi     E_MVD_ERR_UNKNOWN            = 0,
233*53ee8cc1Swenshuai.xi     E_MVD_ERR_SHAPE              = 1,
234*53ee8cc1Swenshuai.xi     E_MVD_ERR_USED_SPRITE        = 2,
235*53ee8cc1Swenshuai.xi     E_MVD_ERR_NOT_8_BIT          = 3,   //error_status : bits per pixel
236*53ee8cc1Swenshuai.xi     E_MVD_ERR_NERPRED_ENABLE     = 4,
237*53ee8cc1Swenshuai.xi     E_MVD_ERR_REDUCED_RES_ENABLE = 5,
238*53ee8cc1Swenshuai.xi     E_MVD_ERR_SCALABILITY        = 6,
239*53ee8cc1Swenshuai.xi     E_MVD_ERR_OTHER              = 7,
240*53ee8cc1Swenshuai.xi     E_MVD_ERR_H263_ERROR         = 8,
241*53ee8cc1Swenshuai.xi     E_MVD_ERR_RES_NOT_SUPPORT    = 9,   //error_status : none
242*53ee8cc1Swenshuai.xi     E_MVD_ERR_MPEG4_NOT_SUPPORT  = 10,  //error_status : none
243*53ee8cc1Swenshuai.xi     E_MVD_ERR_PROFILE_NOT_SUPPORT= 11,  //error_status : none
244*53ee8cc1Swenshuai.xi     E_MVD_ERR_RCV_ERROR_OCCUR    = 12,  //error_status : none
245*53ee8cc1Swenshuai.xi     E_MVD_ERR_VC1_NOT_SUPPORT    = 13,  //error_status : none
246*53ee8cc1Swenshuai.xi     E_MVD_ERR_UNKNOW_CODEC_NOT_SUPPORT= 14,   //error_status : none
247*53ee8cc1Swenshuai.xi     E_MVD_ERR_SLQ_TBL_NOT_SUPPORT= 15   //error_status : none
248*53ee8cc1Swenshuai.xi } MVD_ErrCode;
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi /// Detailed error status when error occurs
251*53ee8cc1Swenshuai.xi typedef enum _MVD_ErrStatus
252*53ee8cc1Swenshuai.xi {
253*53ee8cc1Swenshuai.xi     //error_status for E_MVD_ERR_SHAPE
254*53ee8cc1Swenshuai.xi     E_MVD_ERR_SHAPE_RECTANGULAR    = 0x10,
255*53ee8cc1Swenshuai.xi     E_MVD_ERR_SHAPE_BINARY         = 0x11,
256*53ee8cc1Swenshuai.xi     E_MVD_ERR_SHAPE_BINARY_ONLY    = 0x12,
257*53ee8cc1Swenshuai.xi     E_MVD_ERR_SHAPE_GRAYSCALE      = 0x13,
258*53ee8cc1Swenshuai.xi 
259*53ee8cc1Swenshuai.xi     //error_status for E_MVD_ERR_USED_SPRITE
260*53ee8cc1Swenshuai.xi     E_MVD_ERR_USED_SPRITE_UNUSED   = 0x20, //sprite not used
261*53ee8cc1Swenshuai.xi     E_MVD_ERR_USED_SPRITE_STATIC   = 0x21,
262*53ee8cc1Swenshuai.xi     E_MVD_ERR_USED_SPRITE_GMC      = 0x22,
263*53ee8cc1Swenshuai.xi     E_MVD_ERR_USED_SPRITE_RESERVED = 0x23,
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi     E_MVD_ERR_STATUS_NONE          = 0x77,
266*53ee8cc1Swenshuai.xi     E_MVD_ERR_STATUS_UNKOWN        = 0x00,
267*53ee8cc1Swenshuai.xi } MVD_ErrStatus;
268*53ee8cc1Swenshuai.xi 
269*53ee8cc1Swenshuai.xi /// Picture type of MPEG video
270*53ee8cc1Swenshuai.xi typedef enum _MVD_PicType
271*53ee8cc1Swenshuai.xi {
272*53ee8cc1Swenshuai.xi     E_MVD_PIC_I = 0,
273*53ee8cc1Swenshuai.xi     E_MVD_PIC_P = 1,
274*53ee8cc1Swenshuai.xi     E_MVD_PIC_B = 2,
275*53ee8cc1Swenshuai.xi     E_MVD_PIC_UNKNOWN = 0xf,
276*53ee8cc1Swenshuai.xi } MVD_PicType;
277*53ee8cc1Swenshuai.xi 
278*53ee8cc1Swenshuai.xi /// Mode of frame rate conversion
279*53ee8cc1Swenshuai.xi typedef enum _MVD_FrcMode {
280*53ee8cc1Swenshuai.xi     E_MVD_FRC_NORMAL = 0,
281*53ee8cc1Swenshuai.xi     E_MVD_FRC_DISP_TWICE = 1,
282*53ee8cc1Swenshuai.xi     E_MVD_FRC_3_2_PULLDOWN = 2,
283*53ee8cc1Swenshuai.xi     E_MVD_FRC_PAL_TO_NTSC = 3,
284*53ee8cc1Swenshuai.xi     E_MVD_FRC_NTSC_TO_PAL = 4,
285*53ee8cc1Swenshuai.xi     E_MVD_FRC_DISP_ONEFIELD = 5,//Removed, call MDrv_MVD_EnableDispOneField() instead.
286*53ee8cc1Swenshuai.xi } MVD_FrcMode;
287*53ee8cc1Swenshuai.xi 
288*53ee8cc1Swenshuai.xi /// MVD play mode
289*53ee8cc1Swenshuai.xi typedef enum
290*53ee8cc1Swenshuai.xi {
291*53ee8cc1Swenshuai.xi     E_MVD_PLAY          = 0x00,
292*53ee8cc1Swenshuai.xi     E_MVD_STEPDISP      = 0x01,
293*53ee8cc1Swenshuai.xi     E_MVD_PAUSE         = 0x02,
294*53ee8cc1Swenshuai.xi     E_MVD_FASTFORWARD   = 0x03,
295*53ee8cc1Swenshuai.xi     E_MVD_BACKFORWARD   = 0x04,
296*53ee8cc1Swenshuai.xi     E_MVD_UNKNOWMODE    = 0xff
297*53ee8cc1Swenshuai.xi } MVD_PlayMode;
298*53ee8cc1Swenshuai.xi 
299*53ee8cc1Swenshuai.xi /// Store the packet information used for SLQ table file mode
300*53ee8cc1Swenshuai.xi typedef struct
301*53ee8cc1Swenshuai.xi {
302*53ee8cc1Swenshuai.xi     MS_VIRT u32StAddr;    ///< Packet offset from bitstream buffer base address. unit: byte.
303*53ee8cc1Swenshuai.xi     MS_U32 u32Length;    ///< Packet size. unit: byte.
304*53ee8cc1Swenshuai.xi     MS_U32 u32TimeStamp; ///< Packet time stamp. unit: ms.
305*53ee8cc1Swenshuai.xi     MS_U32 u32ID_L;      ///< Packet ID low part.
306*53ee8cc1Swenshuai.xi     MS_U32 u32ID_H;      ///< Packet ID high part.
307*53ee8cc1Swenshuai.xi } MVD_PacketInfo;
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi ///MVD frame info data structure
310*53ee8cc1Swenshuai.xi typedef struct
311*53ee8cc1Swenshuai.xi {
312*53ee8cc1Swenshuai.xi     MS_U16  u16HorSize;
313*53ee8cc1Swenshuai.xi     MS_U16  u16VerSize;
314*53ee8cc1Swenshuai.xi     MS_U32  u32FrameRate;
315*53ee8cc1Swenshuai.xi     MS_U8   u8AspectRate;
316*53ee8cc1Swenshuai.xi     MS_U8   u8Interlace;
317*53ee8cc1Swenshuai.xi     MS_U8   u8AFD;
318*53ee8cc1Swenshuai.xi     MS_U16  u16par_width;
319*53ee8cc1Swenshuai.xi     MS_U16  u16par_height;
320*53ee8cc1Swenshuai.xi     MS_U16  u16SarWidth;
321*53ee8cc1Swenshuai.xi     MS_U16  u16SarHeight;
322*53ee8cc1Swenshuai.xi     MS_U16  u16CropRight;
323*53ee8cc1Swenshuai.xi     MS_U16  u16CropLeft;
324*53ee8cc1Swenshuai.xi     MS_U16  u16CropBottom;
325*53ee8cc1Swenshuai.xi     MS_U16  u16CropTop;
326*53ee8cc1Swenshuai.xi     MS_U16  u16Pitch;
327*53ee8cc1Swenshuai.xi     MS_U16  u16PTSInterval;
328*53ee8cc1Swenshuai.xi     MS_U8   u8MPEG1;
329*53ee8cc1Swenshuai.xi     MS_U8   u8PlayMode;
330*53ee8cc1Swenshuai.xi     MS_U8   u8FrcMode;
331*53ee8cc1Swenshuai.xi     MS_U32  u32DynScalingAddr;    ///Dynamic scaling address
332*53ee8cc1Swenshuai.xi     MS_U8   u8DynScalingDepth;    ///Dynamic scaling depth
333*53ee8cc1Swenshuai.xi     MS_U32  u32DynScalingBufSize;    ///Dynamic scaling BufSize
334*53ee8cc1Swenshuai.xi     MS_BOOL bEnableMIUSel;        ///Dynamic scaling DS buffer on miu1 or miu0
335*53ee8cc1Swenshuai.xi } MVD_FrameInfo;
336*53ee8cc1Swenshuai.xi 
337*53ee8cc1Swenshuai.xi /// MVD AVSync Configuration
338*53ee8cc1Swenshuai.xi typedef struct
339*53ee8cc1Swenshuai.xi {
340*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;
341*53ee8cc1Swenshuai.xi     MS_U32  u32Delay;       //unit: ms
342*53ee8cc1Swenshuai.xi     MS_U16  u16Tolerance;   //unit: ms
343*53ee8cc1Swenshuai.xi } MVD_AVSyncCfg;
344*53ee8cc1Swenshuai.xi 
345*53ee8cc1Swenshuai.xi /// MVD Command arguments
346*53ee8cc1Swenshuai.xi typedef struct
347*53ee8cc1Swenshuai.xi {
348*53ee8cc1Swenshuai.xi     MS_U8 Arg0;    ///< argument 0
349*53ee8cc1Swenshuai.xi     MS_U8 Arg1;    ///< argument 1
350*53ee8cc1Swenshuai.xi     MS_U8 Arg2;    ///< argument 2
351*53ee8cc1Swenshuai.xi     MS_U8 Arg3;    ///< argument 3
352*53ee8cc1Swenshuai.xi     MS_U8 Arg4;    ///< argument 4
353*53ee8cc1Swenshuai.xi     MS_U8 Arg5;    ///< argument 5
354*53ee8cc1Swenshuai.xi } MVD_CmdArg;
355*53ee8cc1Swenshuai.xi 
356*53ee8cc1Swenshuai.xi /// MVD commands needing handshake
357*53ee8cc1Swenshuai.xi typedef enum
358*53ee8cc1Swenshuai.xi {
359*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_PAUSE,
360*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_SLQ_RST,
361*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_STOP,
362*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_SKIP_DATA,
363*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_SKIP_TO_PTS,
364*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_SINGLE_STEP,
365*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_SCALER_INFO,
366*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_GET_NXTDISPFRM,
367*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_PARSER_RST,
368*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_RST_CC608,
369*53ee8cc1Swenshuai.xi     MVD_HANDSHAKE_RST_CC708
370*53ee8cc1Swenshuai.xi } MVD_HANDSHAKE_CMD;
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi 
373*53ee8cc1Swenshuai.xi 
374*53ee8cc1Swenshuai.xi typedef enum
375*53ee8cc1Swenshuai.xi {
376*53ee8cc1Swenshuai.xi     E_MVD_FB_REDUCTION_NONE = 0,        ///< FB reduction disable
377*53ee8cc1Swenshuai.xi     E_MVD_FB_REDUCTION_1_2 = 1,         ///< FB reduction 1/2
378*53ee8cc1Swenshuai.xi     E_MVD_FB_REDUCTION_1_4 = 2,         ///< FB reduction 1/4
379*53ee8cc1Swenshuai.xi }MVD_FB_Reduction_Type;
380*53ee8cc1Swenshuai.xi 
381*53ee8cc1Swenshuai.xi typedef struct
382*53ee8cc1Swenshuai.xi {
383*53ee8cc1Swenshuai.xi     MVD_FB_Reduction_Type LumaFBReductionMode;     ///< Luma frame buffer reduction mode.
384*53ee8cc1Swenshuai.xi     MVD_FB_Reduction_Type ChromaFBReductionMode;   ///< Chroma frame buffer reduction mode.
385*53ee8cc1Swenshuai.xi     MS_U8				  u8EnableAutoMode;		   /// 0: Disable, 1: Enable
386*53ee8cc1Swenshuai.xi } MVD_FB_Reduction;
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi 
389*53ee8cc1Swenshuai.xi /// Configuration of MVD firmware
390*53ee8cc1Swenshuai.xi typedef struct
391*53ee8cc1Swenshuai.xi {
392*53ee8cc1Swenshuai.xi     MS_U32        u32FWVerNum;
393*53ee8cc1Swenshuai.xi     MS_U32        u32FWSrc;
394*53ee8cc1Swenshuai.xi     MS_U8         u8FBMode;
395*53ee8cc1Swenshuai.xi     MVD_CodecType eCodecType;
396*53ee8cc1Swenshuai.xi     MS_BOOL       bNotReload;
397*53ee8cc1Swenshuai.xi     MVD_FB_Reduction stFBReduction; ///< MVD Frame buffer reduction type
398*53ee8cc1Swenshuai.xi     MS_U16  u16FBReduceValue;
399*53ee8cc1Swenshuai.xi } MVD_FWCfg;
400*53ee8cc1Swenshuai.xi 
401*53ee8cc1Swenshuai.xi /// The type of fw binary input source
402*53ee8cc1Swenshuai.xi typedef enum
403*53ee8cc1Swenshuai.xi {
404*53ee8cc1Swenshuai.xi     E_MVD_FW_SOURCE_NONE,       ///< No input fw.
405*53ee8cc1Swenshuai.xi     E_MVD_FW_SOURCE_DRAM,       ///< input source from DRAM.
406*53ee8cc1Swenshuai.xi     E_MVD_FW_SOURCE_FLASH,      ///< input source from FLASH.
407*53ee8cc1Swenshuai.xi } MVD_FWSrcType;
408*53ee8cc1Swenshuai.xi 
409*53ee8cc1Swenshuai.xi /// Configuration of memory layout
410*53ee8cc1Swenshuai.xi typedef struct
411*53ee8cc1Swenshuai.xi {
412*53ee8cc1Swenshuai.xi     MVD_FWSrcType eFWSrcType;         //!< the input FW source type.
413*53ee8cc1Swenshuai.xi     MS_U32     u32FWSrcVAddr;         //!< virtual address of input FW binary in DRAM
414*53ee8cc1Swenshuai.xi     MS_PHY u32FWBinAddr;          //!< physical address in Flash/DRAM of FW code
415*53ee8cc1Swenshuai.xi     MS_U32     u32FWBinSize;
416*53ee8cc1Swenshuai.xi     MS_PHY u32FWCodeAddr;
417*53ee8cc1Swenshuai.xi     MS_U32     u32FWCodeSize;
418*53ee8cc1Swenshuai.xi     MS_PHY u32FBAddr;
419*53ee8cc1Swenshuai.xi     MS_U32     u32FBSize;
420*53ee8cc1Swenshuai.xi     MS_PHY u32BSAddr;
421*53ee8cc1Swenshuai.xi     MS_U32     u32BSSize;
422*53ee8cc1Swenshuai.xi     MS_PHY u32DrvBufAddr;
423*53ee8cc1Swenshuai.xi     MS_U32     u32DrvBufSize;
424*53ee8cc1Swenshuai.xi     MS_PHY u32DynSacalingBufAddr;
425*53ee8cc1Swenshuai.xi     MS_U32     u32DynSacalingBufSize;
426*53ee8cc1Swenshuai.xi     MS_PHY u32Miu1BaseAddr;
427*53ee8cc1Swenshuai.xi     MS_BOOL    bFWMiuSel;
428*53ee8cc1Swenshuai.xi     MS_BOOL    bHWMiuSel;
429*53ee8cc1Swenshuai.xi     MS_BOOL    bEnableDynScale;    /// dynamic scaling control bit
430*53ee8cc1Swenshuai.xi     MS_BOOL    bSupportSDModeOnly;    /// Config from IP Check
431*53ee8cc1Swenshuai.xi } MVD_MEMCfg;
432*53ee8cc1Swenshuai.xi 
433*53ee8cc1Swenshuai.xi /// Configuration of MVD
434*53ee8cc1Swenshuai.xi typedef struct
435*53ee8cc1Swenshuai.xi {
436*53ee8cc1Swenshuai.xi     MVD_CodecType   u8CodecType;
437*53ee8cc1Swenshuai.xi     MVD_SrcMode     u8BSProviderMode;
438*53ee8cc1Swenshuai.xi     MS_U8           bDisablePESParsing;
439*53ee8cc1Swenshuai.xi } MVD_InfoCfg;
440*53ee8cc1Swenshuai.xi 
441*53ee8cc1Swenshuai.xi /// Return value of MVD driver
442*53ee8cc1Swenshuai.xi typedef enum
443*53ee8cc1Swenshuai.xi {
444*53ee8cc1Swenshuai.xi     E_MVD_RET_OK            = 1,
445*53ee8cc1Swenshuai.xi     E_MVD_RET_FAIL          = 0,
446*53ee8cc1Swenshuai.xi     E_MVD_RET_INVALID_PARAM = 2,
447*53ee8cc1Swenshuai.xi     E_MVD_RET_QUEUE_FULL    = 3,
448*53ee8cc1Swenshuai.xi     E_MVD_RET_TIME_OUT      = 4
449*53ee8cc1Swenshuai.xi } E_MVD_Result;
450*53ee8cc1Swenshuai.xi 
451*53ee8cc1Swenshuai.xi /// Mode of trick decoding
452*53ee8cc1Swenshuai.xi typedef enum
453*53ee8cc1Swenshuai.xi {
454*53ee8cc1Swenshuai.xi     E_MVD_TRICK_DEC_ALL = 0,
455*53ee8cc1Swenshuai.xi     E_MVD_TRICK_DEC_IP,
456*53ee8cc1Swenshuai.xi     E_MVD_TRICK_DEC_I,
457*53ee8cc1Swenshuai.xi     E_MVD_TRICK_DEC_UNKNOWN
458*53ee8cc1Swenshuai.xi } MVD_TrickDec;
459*53ee8cc1Swenshuai.xi 
460*53ee8cc1Swenshuai.xi /// Speed type of playing
461*53ee8cc1Swenshuai.xi typedef enum
462*53ee8cc1Swenshuai.xi {
463*53ee8cc1Swenshuai.xi     E_MVD_SPEED_DEFAULT = 0,
464*53ee8cc1Swenshuai.xi     E_MVD_SPEED_FAST,
465*53ee8cc1Swenshuai.xi     E_MVD_SPEED_SLOW,
466*53ee8cc1Swenshuai.xi     E_MVD_SPEED_TYPE_UNKNOWN
467*53ee8cc1Swenshuai.xi } MVD_SpeedType;
468*53ee8cc1Swenshuai.xi 
469*53ee8cc1Swenshuai.xi /// MVD pattern type
470*53ee8cc1Swenshuai.xi typedef enum
471*53ee8cc1Swenshuai.xi {
472*53ee8cc1Swenshuai.xi     E_MVD_PATTERN_FLUSH = 0,           ///< Used after MDrv_MVD_Flush().
473*53ee8cc1Swenshuai.xi     E_MVD_PATTERN_FILEEND,             ///< Used for file end.
474*53ee8cc1Swenshuai.xi } MVD_PatternType;
475*53ee8cc1Swenshuai.xi 
476*53ee8cc1Swenshuai.xi /// MVD frame info structure
477*53ee8cc1Swenshuai.xi typedef struct
478*53ee8cc1Swenshuai.xi {
479*53ee8cc1Swenshuai.xi     MS_PHY u32LumaAddr;    ///< The start physical of luma data. Unit: byte.
480*53ee8cc1Swenshuai.xi     MS_PHY u32ChromaAddr;  ///< The start physcal of chroma data. Unit: byte.
481*53ee8cc1Swenshuai.xi     MS_U32 u32TimeStamp;       ///< Time stamp(DTS, PTS) of current displayed frame. Unit: 90khz.
482*53ee8cc1Swenshuai.xi     MS_U32 u32ID_L;            ///< low part of ID number set by MDrv_MVD_PushQueue().
483*53ee8cc1Swenshuai.xi     MS_U32 u32ID_H;            ///< high part of ID number set by MDrv_MVD_PushQueue().
484*53ee8cc1Swenshuai.xi     MS_U16 u16Pitch;           ///< The pitch of current frame.
485*53ee8cc1Swenshuai.xi     MS_U16 u16Width;           ///< pixel width of current frame.
486*53ee8cc1Swenshuai.xi     MS_U16 u16Height;          ///< pixel height of current frame.
487*53ee8cc1Swenshuai.xi     MS_U16 u16FrmIdx;          ///< index of current frame.
488*53ee8cc1Swenshuai.xi     MVD_PicType eFrmType;     ///< picture type: I, P, B frame
489*53ee8cc1Swenshuai.xi } MVD_FrmInfo;
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi /// MVD extension display info structure
492*53ee8cc1Swenshuai.xi typedef struct
493*53ee8cc1Swenshuai.xi {
494*53ee8cc1Swenshuai.xi     MS_U16 u16VSize;         /// vertical size from sequene_display_extension
495*53ee8cc1Swenshuai.xi     MS_U16 u16HSize;         /// horizontal size from sequene_display_extension
496*53ee8cc1Swenshuai.xi     MS_U16 u16VOffset;      /// vertical offset from picture_display_extension
497*53ee8cc1Swenshuai.xi     MS_U16 u16HOffset;      /// horizontal offset from picture_display_extension
498*53ee8cc1Swenshuai.xi } MVD_ExtDispInfo;
499*53ee8cc1Swenshuai.xi 
500*53ee8cc1Swenshuai.xi /// Type of frame info that can be queried
501*53ee8cc1Swenshuai.xi typedef enum
502*53ee8cc1Swenshuai.xi {
503*53ee8cc1Swenshuai.xi     E_MVD_FRMINFO_DISPLAY=0,   ///< Displayed frame.
504*53ee8cc1Swenshuai.xi     E_MVD_FRMINFO_DECODE =1,   ///< Decoded frame.
505*53ee8cc1Swenshuai.xi     E_MVD_FRMINFO_NEXT_DISPLAY =2,///< Next frame to be displayed.
506*53ee8cc1Swenshuai.xi } MVD_FrmInfoType;
507*53ee8cc1Swenshuai.xi 
508*53ee8cc1Swenshuai.xi typedef enum {
509*53ee8cc1Swenshuai.xi     E_MVD_FRAME_FLIP    = 0,
510*53ee8cc1Swenshuai.xi     E_MVD_FRAME_RELEASE = 1,
511*53ee8cc1Swenshuai.xi } MVD_FrmOpt;
512*53ee8cc1Swenshuai.xi 
513*53ee8cc1Swenshuai.xi /// MVD time code structure
514*53ee8cc1Swenshuai.xi typedef struct
515*53ee8cc1Swenshuai.xi {
516*53ee8cc1Swenshuai.xi     MS_U8   u8TimeCodeHr;   ///<  time_code_hours
517*53ee8cc1Swenshuai.xi     MS_U8   u8TimeCodeMin;  ///<  time_code_minutes
518*53ee8cc1Swenshuai.xi     MS_U8   u8TimeCodeSec;  ///<  time_code_seconds
519*53ee8cc1Swenshuai.xi     MS_U8   u8TimeCodePic;  ///<  time_code_pictures
520*53ee8cc1Swenshuai.xi 
521*53ee8cc1Swenshuai.xi     MS_U8   u8DropFrmFlag;  ///<  drop_frame_flag
522*53ee8cc1Swenshuai.xi     MS_U8   u8Reserved[3];  ///<  reserved fields for 4-byte alignment
523*53ee8cc1Swenshuai.xi } MVD_TimeCode;
524*53ee8cc1Swenshuai.xi 
525*53ee8cc1Swenshuai.xi /// Format of CC (Closed Caption)
526*53ee8cc1Swenshuai.xi typedef enum _MVD_CCFormat
527*53ee8cc1Swenshuai.xi {
528*53ee8cc1Swenshuai.xi     E_MVD_CC_NONE       = 0x00,
529*53ee8cc1Swenshuai.xi     E_MVD_CC_608        = 0x01, //For CC608 or 157
530*53ee8cc1Swenshuai.xi     E_MVD_CC_708        = 0x02, //For CC708
531*53ee8cc1Swenshuai.xi     E_MVD_CC_UNPACKED   = 0x03,
532*53ee8cc1Swenshuai.xi } MVD_CCFormat;
533*53ee8cc1Swenshuai.xi 
534*53ee8cc1Swenshuai.xi /// Type of CC
535*53ee8cc1Swenshuai.xi typedef enum _MVD_CCType
536*53ee8cc1Swenshuai.xi {
537*53ee8cc1Swenshuai.xi     E_MVD_CC_TYPE_NONE = 0,
538*53ee8cc1Swenshuai.xi     E_MVD_CC_TYPE_NTSC_FIELD1 = 1,
539*53ee8cc1Swenshuai.xi     E_MVD_CC_TYPE_NTSC_FIELD2 = 2,
540*53ee8cc1Swenshuai.xi     E_MVD_CC_TYPE_DTVCC = 3,
541*53ee8cc1Swenshuai.xi     E_MVD_CC_TYPE_NTSC_TWOFIELD = 4,
542*53ee8cc1Swenshuai.xi } MVD_CCType;
543*53ee8cc1Swenshuai.xi 
544*53ee8cc1Swenshuai.xi /// Data structure of CC Configuration
545*53ee8cc1Swenshuai.xi typedef struct
546*53ee8cc1Swenshuai.xi {
547*53ee8cc1Swenshuai.xi     MVD_CCFormat eFormat;
548*53ee8cc1Swenshuai.xi     MVD_CCType   eType;
549*53ee8cc1Swenshuai.xi     MS_U32       u32BufStAdd;
550*53ee8cc1Swenshuai.xi     MS_U32       u32BufSize;
551*53ee8cc1Swenshuai.xi } MVD_CCCfg;
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi /// Info. of user data
554*53ee8cc1Swenshuai.xi typedef struct
555*53ee8cc1Swenshuai.xi {
556*53ee8cc1Swenshuai.xi     MS_U32 u32Pts;
557*53ee8cc1Swenshuai.xi     MS_U8  u8PicStruct;           /* picture_structure*/
558*53ee8cc1Swenshuai.xi     MS_U8  u8PicType;             /* picture type: 1->I picture, 2->P,3->B */
559*53ee8cc1Swenshuai.xi     MS_U8  u8TopFieldFirst;       /* Top field first: 1 if top field first*/
560*53ee8cc1Swenshuai.xi     MS_U8  u8RptFirstField;       /* Repeat first field: 1 if repeat field first*/
561*53ee8cc1Swenshuai.xi 
562*53ee8cc1Swenshuai.xi     MS_U16 u16TmpRef;            /* Temporal reference of the picture*/
563*53ee8cc1Swenshuai.xi     MS_U8  u8ByteCnt;
564*53ee8cc1Swenshuai.xi     MS_U8  u8Reserve;
565*53ee8cc1Swenshuai.xi 
566*53ee8cc1Swenshuai.xi     MS_U32 u32DataBuf;
567*53ee8cc1Swenshuai.xi } MVD_UsrDataInfo;
568*53ee8cc1Swenshuai.xi 
569*53ee8cc1Swenshuai.xi /// MVD interrupt events
570*53ee8cc1Swenshuai.xi typedef enum
571*53ee8cc1Swenshuai.xi {
572*53ee8cc1Swenshuai.xi     E_MVD_EVENT_DISABLE_ALL   = 0,           ///< unregister all events notification
573*53ee8cc1Swenshuai.xi     E_MVD_EVENT_USER_DATA     = BIT(0),      ///< found user data
574*53ee8cc1Swenshuai.xi     E_MVD_EVENT_DISP_VSYNC    = BIT(1),      ///< vsync interrupt
575*53ee8cc1Swenshuai.xi     E_MVD_EVENT_PIC_FOUND     = BIT(2),      ///<
576*53ee8cc1Swenshuai.xi     E_MVD_EVENT_FIRST_FRAME   = BIT(3),      ///< first frame decoded
577*53ee8cc1Swenshuai.xi     E_MVD_EVENT_DISP_RDY      = BIT(4),      ///< MVD ready to display.
578*53ee8cc1Swenshuai.xi     E_MVD_EVENT_SEQ_FOUND     = BIT(5),      ///< found sequence header
579*53ee8cc1Swenshuai.xi     //E_MVD_EVENT_DEC_ERR = BIT(5),          ///< MVD HW found decode error.
580*53ee8cc1Swenshuai.xi     //E_MVD_EVENT_DEC_CC_FOUND = BIT(6),     ///< MVD found one user data with decoded frame.
581*53ee8cc1Swenshuai.xi     //E_MVD_EVENT_DEC_DATA_ERR = BIT(7),     ///< Data error.
582*53ee8cc1Swenshuai.xi     E_MVD_EVENT_UNMUTE        = BIT(8),      ///< video unmute
583*53ee8cc1Swenshuai.xi     E_MVD_EVENT_USER_DATA_DISP= BIT(9),      ///< found user data in display order
584*53ee8cc1Swenshuai.xi     E_MVD_EVENT_DEC_I         = BIT(17),
585*53ee8cc1Swenshuai.xi } MVD_Event;
586*53ee8cc1Swenshuai.xi 
587*53ee8cc1Swenshuai.xi /// MVD clock speed
588*53ee8cc1Swenshuai.xi typedef enum
589*53ee8cc1Swenshuai.xi {
590*53ee8cc1Swenshuai.xi     E_MVD_CLOCK_SPEED_NONE = 0,
591*53ee8cc1Swenshuai.xi     E_MVD_CLOCK_SPEED_HIGHEST,
592*53ee8cc1Swenshuai.xi     E_MVD_CLOCK_SPEED_HIGH,
593*53ee8cc1Swenshuai.xi     E_MVD_CLOCK_SPEED_MEDIUM,
594*53ee8cc1Swenshuai.xi     E_MVD_CLOCK_SPEED_LOW,
595*53ee8cc1Swenshuai.xi     E_MVD_CLOCK_SPEED_LOWEST,
596*53ee8cc1Swenshuai.xi     E_MVD_CLOCK_SPEED_DEFAULT,
597*53ee8cc1Swenshuai.xi } MVD_ClockSpeed;
598*53ee8cc1Swenshuai.xi 
599*53ee8cc1Swenshuai.xi 
600*53ee8cc1Swenshuai.xi typedef void (*MVD_InterruptCb)(void);
601*53ee8cc1Swenshuai.xi 
602*53ee8cc1Swenshuai.xi typedef struct
603*53ee8cc1Swenshuai.xi {
604*53ee8cc1Swenshuai.xi     MS_PHY u32UserDataBuf;
605*53ee8cc1Swenshuai.xi } MVD_InternalMemCfg;
606*53ee8cc1Swenshuai.xi 
607*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
608*53ee8cc1Swenshuai.xi // Function Prototype Declaration
609*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
610*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetCfg(MVD_FWCfg* fwCfg, MVD_MEMCfg* memCfg, MVD_InfoCfg* InfoCfg);
611*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetFWVer(void);
612*53ee8cc1Swenshuai.xi void MDrv_MVD_SetDbgLevel(MS_U8 level);
613*53ee8cc1Swenshuai.xi const MVD_DrvInfo* MDrv_MVD_GetInfo(void);
614*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_GetLibVer(const MSIF_Version **ppVersion);
615*53ee8cc1Swenshuai.xi void MDrv_MVD_GetStatus(MVD_DrvStatus* pDrvStatus);
616*53ee8cc1Swenshuai.xi MVD_InternalMemCfg *MDrv_MVD_GetInternalMemCfg(void);
617*53ee8cc1Swenshuai.xi 
618*53ee8cc1Swenshuai.xi 
619*53ee8cc1Swenshuai.xi void MDrv_MVD_SetCodecInfo(MVD_CodecType u8CodecType, MVD_SrcMode u8BSProviderMode, MS_U8 bDisablePESParsing);
620*53ee8cc1Swenshuai.xi void MDrv_MVD_SetDivXCfg(MS_U8 u8MvAdjust, MS_U8 u8IdctSel);
621*53ee8cc1Swenshuai.xi 
622*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SetBitStreamAddr(MS_U32 u32start, MS_U32 u32end);
623*53ee8cc1Swenshuai.xi void MDrv_MVD_SetFrameBuffAddr(MS_U32 u32addr);
624*53ee8cc1Swenshuai.xi void MDrv_MVD_GetFrameInfo(MVD_FrameInfo *pinfo );
625*53ee8cc1Swenshuai.xi void MDrv_MVD_SetOverflowTH (MS_U32 u32Threshold);
626*53ee8cc1Swenshuai.xi void MDrv_MVD_SetUnderflowTH (MS_U32 u32Threshold);
627*53ee8cc1Swenshuai.xi 
628*53ee8cc1Swenshuai.xi void MDrv_MVD_RstIFrameDec( void );
629*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetIsIFrameDecoding( void );
630*53ee8cc1Swenshuai.xi 
631*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetSyncStatus( void );
632*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetIsFreerun(void);
633*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetIsIPicFound( void );
634*53ee8cc1Swenshuai.xi 
635*53ee8cc1Swenshuai.xi //for MM
636*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetResidualStreamSize( void );
637*53ee8cc1Swenshuai.xi 
638*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_DecodeIFrame(MS_PHY u32FrameBufAddr, MS_PHY u32StreamBufAddr, MS_PHY u32StreamBufEndAddr );
639*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetValidStreamFlag( void );
640*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetChromaFormat(void);
641*53ee8cc1Swenshuai.xi //for MM
642*53ee8cc1Swenshuai.xi void MDrv_MVD_SetFrameInfo(MVD_FrameInfo *pinfo );
643*53ee8cc1Swenshuai.xi void MDrv_MVD_SetSLQStartEnd(  MS_U32 u32start, MS_U32 u32end);
644*53ee8cc1Swenshuai.xi void MDrv_MVD_GetErrInfo(MVD_ErrCode *errCode, MVD_ErrStatus *errStatus);
645*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetSkipPicCounter( void );
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetSLQAvailableLevel(void);
648*53ee8cc1Swenshuai.xi void MDrv_MVD_SetSLQWritePtr(MS_BOOL bCheckData);
649*53ee8cc1Swenshuai.xi MS_VIRT MDrv_MVD_GetSLQReadPtr( void );
650*53ee8cc1Swenshuai.xi void MDrv_MVD_SetSLQTblBufStartEnd( MS_U32 u32start, MS_U32 u32end );
651*53ee8cc1Swenshuai.xi 
652*53ee8cc1Swenshuai.xi MVD_PicType MDrv_MVD_GetPicType( void );
653*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetBitsRate( void );
654*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetVideoRange(void);
655*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetLowDelayFlag( void );
656*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetIs32PullDown(void);
657*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetIsDynScalingEnabled(void);
658*53ee8cc1Swenshuai.xi MS_S32 MDrv_MVD_GetPtsStcDiff(void);
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi void MDrv_MVD_Pause(void);
661*53ee8cc1Swenshuai.xi void MDrv_MVD_Resume(void);
662*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_StepDisp(void);
663*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsStepDispDone(void);
664*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_StepDecode(void);
665*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsStepDecodeDone(void);
666*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SeekToPTS(MS_U32 u32Pts);
667*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsStep2PtsDone(void);
668*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SkipToPTS(MS_U32 u32Pts);
669*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_TrickPlay(MVD_TrickDec trickDec, MS_U8 u8DispDuration);
670*53ee8cc1Swenshuai.xi void MDrv_MVD_EnableForcePlay(void);
671*53ee8cc1Swenshuai.xi 
672*53ee8cc1Swenshuai.xi void MDrv_MVD_RegSetBase(MS_U32 u32RegBaseAddr);
673*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_Init(void);
674*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_Exit(void);
675*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_Rst( void );
676*53ee8cc1Swenshuai.xi 
677*53ee8cc1Swenshuai.xi void MDrv_MVD_Play( void );
678*53ee8cc1Swenshuai.xi void MDrv_MVD_SetAVSync(MS_BOOL bEnable, MS_U32 u32Delay);
679*53ee8cc1Swenshuai.xi void MDrv_MVD_SetAVSyncThreshold(MS_U32 u32Th);
680*53ee8cc1Swenshuai.xi void MDrv_MVD_SetAVSyncFreerunThreshold(MS_U32 u32Th);
681*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetAVSyncDelay(void);
682*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetIsAVSyncOn(void);
683*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetIsSyncRep(void);
684*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetIsSyncSkip(void);
685*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_ChangeAVsync(MS_BOOL bEnable, MS_U16 u16PTS);
686*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_DispCtrl(MS_BOOL bDecOrder, MS_BOOL bDropErr, MS_BOOL bDropDisp, MVD_FrcMode eFrcMode);
687*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_DispRepeatField(MS_BOOL bEnable);
688*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetTop1stField(void);
689*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetRepeat1stField(void);
690*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetTmpRefField(void);
691*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetColorFormat(void);
692*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetMatrixCoef(void);
693*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetActiveFormat( void );
694*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetDispRdy( void );
695*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_Is1stFrmRdy(void);
696*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetGOPCount( void );
697*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetPicCounter(void);
698*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetParserByteCnt(void);
699*53ee8cc1Swenshuai.xi MVD_DecStat MDrv_MVD_GetDecodeStatus(void);
700*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetLastCmd(void);
701*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetVldErrCount( void );
702*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_DropErrorFrame(MS_BOOL bDrop);
703*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_MVDCommand ( MS_U8 u8cmd, MVD_CmdArg *pstCmdArg );
704*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SkipData(void);
705*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SkipToIFrame(void);
706*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetCaps(MVD_Caps* pCaps);
707*53ee8cc1Swenshuai.xi 
708*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_DisableErrConceal(MS_BOOL bDisable);
709*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_PushQueue(MVD_PacketInfo* pInfo);
710*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_FlushQueue(void);
711*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_FlushDisplayBuf(void);
712*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetQueueVacancy(MS_BOOL bCached);
713*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetESReadPtr(void);
714*53ee8cc1Swenshuai.xi MS_VIRT MDrv_MVD_GetESWritePtr(void);
715*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_EnableLastFrameShow(MS_BOOL bEnable);
716*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_IsDispFinish(void);
717*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetSpeed(MVD_SpeedType eSpeedType, MS_U8 u8Multiple);
718*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_ResetPTS(MS_U32 u32PtsBase);
719*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetPTS(void);
720*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetNextPTS(void);
721*53ee8cc1Swenshuai.xi MVD_TrickDec MDrv_MVD_GetTrickMode(void);
722*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsPlaying(void);
723*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsIdle(void);
724*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsSeqChg(void);
725*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_DbgSetData(MS_U32 u32Addr, MS_U32 u32Data);
726*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_DbgGetData(MS_U32 u32Addr, MS_U32* u32Data);
727*53ee8cc1Swenshuai.xi MS_U8 MDrv_MVD_GetDecodedFrameIdx ( void );
728*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SetFileModeAVSync(MVD_TIMESTAMP_TYPE eSyncMode);
729*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsAllBufferEmpty(void);
730*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GenPattern(MVD_PatternType ePattern, MS_PHY u32PAddr, MS_U32* pu32Size);
731*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetPatternInfo(void);
732*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetDynScalingParam(MS_PHY u32StAddr, MS_SIZE u32Size);
733*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SetDynamicScaleAddr(MS_U32 u32addr);
734*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SetVirtualBox(MS_U16 u16Width, MS_U16 u16Height);
735*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SetBlueScreen(MS_BOOL bEn);
736*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_EnableInt(MS_U32 bEn);
737*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_EnableDispOneField(MS_BOOL bEn);
738*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_GetExtDispInfo(MVD_ExtDispInfo* pInfo);
739*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_GetFrmInfo(MVD_FrmInfoType eType, MVD_FrmInfo* pInfo);
740*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_GetTimeCode(MVD_FrmInfoType eType, MVD_TimeCode* pInfo);
741*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetUsrDataIsAvailable(void);
742*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetUsrDataInfo(MVD_UsrDataInfo* pUsrInfo);
743*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetFreezeDisp(MS_BOOL bEn);
744*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetDispCount(void);
745*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetFdMaskDelayCount(MS_U16 u16Cnt);
746*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetOutputFRCMode(MS_U8 u8FrameRate, MS_U8 u8Interlace);
747*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetFRCDropType(MS_U8 u8DropType);
748*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetDisableSeqChange(MS_BOOL bEnable);
749*53ee8cc1Swenshuai.xi 
750*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SetMStreamerMode(MS_U8 u8Mode);
751*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_FrameFlip(MS_U8 u8FrmIdx);
752*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_FrameRelease(MS_U8 u8FrmIdx);
753*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_FrameCapture(MS_U8 u8FrmIdx, MS_BOOL bEnable);
754*53ee8cc1Swenshuai.xi 
755*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_PVRFlushDispQueue(MS_BOOL bEnable);
756*53ee8cc1Swenshuai.xi //ATSC Closed Caption control
757*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_CCRst(MVD_CCCfg* pCCParam);
758*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_CCStartParsing(MVD_CCCfg* pCCParam);
759*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_CCStopParsing(MVD_CCFormat eCCFormat);
760*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_CCGetWritePtr(MVD_CCFormat eCCFormat, MS_U32* pWrite);
761*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_CCGetReadPtr(MVD_CCFormat eCCFormat, MS_U32* pRead);
762*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_CCUpdateReadPtr(MVD_CCFormat eCCFormat, MS_U32 u32EachPacketSize);
763*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_CCGetIsOverflow(MVD_CCFormat eCCFormat, MS_BOOL* pbOverflow);
764*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_SetSkipRepeatMode(MS_U8 u8Mode);
765*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_FlushPTSBuf(void);
766*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_ParserRstDone(MS_BOOL bEnable);
767*53ee8cc1Swenshuai.xi void MDrv_MVD_DbgDump(void);
768*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_IsCmdFinished(MVD_HANDSHAKE_CMD eCmd);
769*53ee8cc1Swenshuai.xi MS_BOOL MDrv_MVD_GetFrmRateIsSupported(void);
770*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetAutoMute(MS_BOOL bEnable);
771*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetVSizeAlign(MS_BOOL bEnable);
772*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetDispFinishMode(MS_U8 u8Mode);
773*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetAVSyncMode(MS_U8 u8Mode);
774*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetIdctMode(MS_U8 u8Mode);
775*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetDivxVer(void);
776*53ee8cc1Swenshuai.xi 
777*53ee8cc1Swenshuai.xi #ifndef REDLION_LINUX_KERNEL_ENVI
778*53ee8cc1Swenshuai.xi #define MVD_ENABLE_ISR
779*53ee8cc1Swenshuai.xi #endif
780*53ee8cc1Swenshuai.xi 
781*53ee8cc1Swenshuai.xi #ifdef MVD_ENABLE_ISR
782*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetIsrEvent(MS_U32 eEvent, MVD_InterruptCb fnHandler);
783*53ee8cc1Swenshuai.xi MS_U32 MDrv_MVD_GetIsrEvent(void);
784*53ee8cc1Swenshuai.xi #else
785*53ee8cc1Swenshuai.xi #define MDrv_MVD_SetIsrEvent(x, y) (E_MVD_RET_OK)
786*53ee8cc1Swenshuai.xi #define MDrv_MVD_GetIsrEvent()     (MS_U32)0
787*53ee8cc1Swenshuai.xi #endif
788*53ee8cc1Swenshuai.xi 
789*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_SetMVDClockSpeed(MVD_ClockSpeed eClockSpeed);
790*53ee8cc1Swenshuai.xi 
791*53ee8cc1Swenshuai.xi E_MVD_Result MDrv_MVD_ShowFirstFrameDirect(MS_BOOL bEnable);
792*53ee8cc1Swenshuai.xi 
793*53ee8cc1Swenshuai.xi #ifdef __cplusplus
794*53ee8cc1Swenshuai.xi }
795*53ee8cc1Swenshuai.xi #endif
796*53ee8cc1Swenshuai.xi 
797*53ee8cc1Swenshuai.xi #endif
798