xref: /utopia/UTPA2-700.0.x/mxlib/include/drvTVEncoder.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    drvTVEncoder.h
98*53ee8cc1Swenshuai.xi /// @brief  TVEncoder interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi /* !\defgroup VE VE interface (drvTVEncoder.h)
103*53ee8cc1Swenshuai.xi     \ingroup CVBS_OUT
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi     VE is used to covernt input video into standard definition resolution(pal/nstc)
106*53ee8cc1Swenshuai.xi     and pass through the DAC to scart out.
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi     <b> VE Block Diagram: </b> \n
109*53ee8cc1Swenshuai.xi     \image html drvVE_pic01.png
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi  *! \defgroup VE_INFO VE Information pool
112*53ee8cc1Swenshuai.xi  *  \ingroup VE
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi  *! \defgroup VE_INIT VE init control
115*53ee8cc1Swenshuai.xi  *  \ingroup VE
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi  *! \defgroup VE_FEATURE VE feature operation
118*53ee8cc1Swenshuai.xi  *  \ingroup VE
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi  *! \defgroup VE_ToBeModified VE api to be modified
121*53ee8cc1Swenshuai.xi  *  \ingroup VE
122*53ee8cc1Swenshuai.xi 
123*53ee8cc1Swenshuai.xi  *! \defgroup VE_ToBeRemove VE api to be removed
124*53ee8cc1Swenshuai.xi  *  \ingroup VE
125*53ee8cc1Swenshuai.xi */
126*53ee8cc1Swenshuai.xi #ifndef _DRVTVENCODER_H
127*53ee8cc1Swenshuai.xi #define _DRVTVENCODER_H
128*53ee8cc1Swenshuai.xi 
129*53ee8cc1Swenshuai.xi #include "MsDevice.h"
130*53ee8cc1Swenshuai.xi #include "MsCommon.h"
131*53ee8cc1Swenshuai.xi #include "UFO.h"
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi #ifdef __cplusplus
134*53ee8cc1Swenshuai.xi extern "C"
135*53ee8cc1Swenshuai.xi {
136*53ee8cc1Swenshuai.xi #endif
137*53ee8cc1Swenshuai.xi 
138*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
139*53ee8cc1Swenshuai.xi //  Macro and Define
140*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
141*53ee8cc1Swenshuai.xi #define MSIF_VE_TAG                 {'M','S','I','F'}    //Version ID header
142*53ee8cc1Swenshuai.xi #define MSIF_VE_CLASS               {'0','0'}            //info Class code
143*53ee8cc1Swenshuai.xi #define MSIF_VE_CUS                 0x6666               //Customer ID
144*53ee8cc1Swenshuai.xi #define MSIF_VE_MOD                 0x6666               //Module ID
145*53ee8cc1Swenshuai.xi #define MSIF_VE_CHIP                0Xffff               //CHIP ID
146*53ee8cc1Swenshuai.xi #define MSIF_VE_CPU                 '1'                  //CPU
147*53ee8cc1Swenshuai.xi #define MSIF_VE_LIB_CODE            {'V','E','_','_'}    //Lib code
148*53ee8cc1Swenshuai.xi #define MSIF_VE_LIBVER              {'0','1'}            //LIB version
149*53ee8cc1Swenshuai.xi #define MSIF_VE_BUILDNUM            {'1','4'}            //Build Number
150*53ee8cc1Swenshuai.xi #define MSIF_VE_CHANGELIST          {'0','0','6','8','8','5','4','7'} //P4 ChangeList Number
151*53ee8cc1Swenshuai.xi //#define MSIF_OS                     '0'                  //OS
152*53ee8cc1Swenshuai.xi 
153*53ee8cc1Swenshuai.xi #define VE_DRV_VERSION                  /* Character String for DRV/API version             */  \
154*53ee8cc1Swenshuai.xi     MSIF_VE_TAG,                        /* 'MSIF'                                           */  \
155*53ee8cc1Swenshuai.xi     MSIF_VE_CLASS,                      /* '00'                                             */  \
156*53ee8cc1Swenshuai.xi     MSIF_VE_CUS,                        /* 0x0000                                           */  \
157*53ee8cc1Swenshuai.xi     MSIF_VE_MOD,                        /* 0x0000                                           */  \
158*53ee8cc1Swenshuai.xi     MSIF_VE_CHIP,                                                                               \
159*53ee8cc1Swenshuai.xi     MSIF_VE_CPU,                                                                                \
160*53ee8cc1Swenshuai.xi     MSIF_VE_LIB_CODE,                   /* IP__                                             */  \
161*53ee8cc1Swenshuai.xi     MSIF_VE_LIBVER,                     /* 0.0 ~ Z.Z                                        */  \
162*53ee8cc1Swenshuai.xi     MSIF_VE_BUILDNUM,                   /* 00 ~ 99                                          */  \
163*53ee8cc1Swenshuai.xi     MSIF_VE_CHANGELIST,                 /* CL#                                              */  \
164*53ee8cc1Swenshuai.xi     MSIF_OS
165*53ee8cc1Swenshuai.xi 
166*53ee8cc1Swenshuai.xi /// version of structure 'MS_VE_VECAPTURESTATE' of current VE lib
167*53ee8cc1Swenshuai.xi #define VE_VECAPTURESTATE_VERSION                          0 //Version number for compatibility with AP and VE driver
168*53ee8cc1Swenshuai.xi #define VE_INPUTSRC_INFO_VERSION                           0
169*53ee8cc1Swenshuai.xi #define VE_INITDATA_VERSION                                0
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
172*53ee8cc1Swenshuai.xi //  Type and Structure
173*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
174*53ee8cc1Swenshuai.xi /// Result of VE function
175*53ee8cc1Swenshuai.xi typedef enum _VE_Result
176*53ee8cc1Swenshuai.xi {
177*53ee8cc1Swenshuai.xi     E_VE_NOT_SUPPORT = -1,
178*53ee8cc1Swenshuai.xi     E_VE_FAIL = 0,
179*53ee8cc1Swenshuai.xi     E_VE_OK = 1,
180*53ee8cc1Swenshuai.xi     E_VE_TIMEOUT,
181*53ee8cc1Swenshuai.xi     E_VE_QUEUE_FULL,
182*53ee8cc1Swenshuai.xi     E_VE_BUSY
183*53ee8cc1Swenshuai.xi } VE_Result;
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi /// definition of video system
186*53ee8cc1Swenshuai.xi typedef enum
187*53ee8cc1Swenshuai.xi {
188*53ee8cc1Swenshuai.xi     MS_VE_NTSC,     ///< NTSC
189*53ee8cc1Swenshuai.xi     MS_VE_NTSC_443, ///< NTSC443
190*53ee8cc1Swenshuai.xi     MS_VE_NTSC_J,   ///< NTSC_J
191*53ee8cc1Swenshuai.xi     MS_VE_PAL_M,    ///< PAL_M
192*53ee8cc1Swenshuai.xi     MS_VE_PAL_N,    ///< PAL_N
193*53ee8cc1Swenshuai.xi     MS_VE_PAL_NC,   ///< PAL_Nc
194*53ee8cc1Swenshuai.xi     MS_VE_PAL,      ///< PAL_B
195*53ee8cc1Swenshuai.xi     MS_VE_SECAM,    ///< SECAM
196*53ee8cc1Swenshuai.xi     MS_VE_VIDEOSYS_NUM,
197*53ee8cc1Swenshuai.xi } MS_VE_VIDEOSYS;
198*53ee8cc1Swenshuai.xi 
199*53ee8cc1Swenshuai.xi typedef enum
200*53ee8cc1Swenshuai.xi {
201*53ee8cc1Swenshuai.xi     MS_VE_LAYER_NONE = 0,                   ///<0: VE LAYER NONE
202*53ee8cc1Swenshuai.xi     MS_VE_LAYER_FRAME_VIDEO_MUX1_MUX2,      ///<1: FrameColor->Video->osd  ->osd1
203*53ee8cc1Swenshuai.xi     MS_VE_LAYER_FRAME_VIDEO_MUX2_MUX1,      ///<2: FrameColor->Video->osd1 ->osd
204*53ee8cc1Swenshuai.xi     MS_VE_LAYER_FRAME_MUX1_VIDEO_MUX2,      ///<3: FrameColor->osd ->Video->osd1
205*53ee8cc1Swenshuai.xi     MS_VE_LAYER_FRAME_MUX1_MUX2_VIDEO,      ///<4: FrameColor->osd ->osd1 ->Video
206*53ee8cc1Swenshuai.xi     MS_VE_LAYER_FRAME_MUX2_VIDEO_MUX1,      ///<5: FrameColor>osd1 ->Video->osd
207*53ee8cc1Swenshuai.xi     MS_VE_LAYER_FRAME_MUX2_MUX1_VIDEO,      ///<6: FrameColor->osd1 ->osd->Video
208*53ee8cc1Swenshuai.xi     MS_VE_LAYER_RESERVED,
209*53ee8cc1Swenshuai.xi } MS_VE_OSD_LAYER_SEL;
210*53ee8cc1Swenshuai.xi 
211*53ee8cc1Swenshuai.xi /// VE cap's capability
212*53ee8cc1Swenshuai.xi typedef struct
213*53ee8cc1Swenshuai.xi {
214*53ee8cc1Swenshuai.xi     MS_BOOL bNTSC;
215*53ee8cc1Swenshuai.xi     MS_BOOL bPAL;
216*53ee8cc1Swenshuai.xi     MS_BOOL bVESupported;        ///< supported VE or not
217*53ee8cc1Swenshuai.xi } VE_Caps;
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi /// VE extented capability: for STB chips, not all chips support up-scaling or
220*53ee8cc1Swenshuai.xi /// crop
221*53ee8cc1Swenshuai.xi typedef struct
222*53ee8cc1Swenshuai.xi {
223*53ee8cc1Swenshuai.xi     MS_BOOL bSupport_UpScale;
224*53ee8cc1Swenshuai.xi     MS_BOOL bSupport_CropMode;
225*53ee8cc1Swenshuai.xi } MS_VE_Ext_Cap;
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi /// VE driver info.
228*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
229*53ee8cc1Swenshuai.xi {
230*53ee8cc1Swenshuai.xi     VE_Caps stCaps;
231*53ee8cc1Swenshuai.xi } VE_DrvInfo;
232*53ee8cc1Swenshuai.xi 
233*53ee8cc1Swenshuai.xi /// VE DRV status
234*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
235*53ee8cc1Swenshuai.xi {
236*53ee8cc1Swenshuai.xi     MS_VE_VIDEOSYS         VideoSystem;         // video std of output signal
237*53ee8cc1Swenshuai.xi     MS_U16  u16H_CapStart;
238*53ee8cc1Swenshuai.xi     MS_U16  u16H_CapSize;
239*53ee8cc1Swenshuai.xi     MS_U16  u16V_CapStart;
240*53ee8cc1Swenshuai.xi     MS_U16  u16V_CapSize;
241*53ee8cc1Swenshuai.xi 
242*53ee8cc1Swenshuai.xi } VE_DrvStatus;
243*53ee8cc1Swenshuai.xi 
244*53ee8cc1Swenshuai.xi typedef struct
245*53ee8cc1Swenshuai.xi {
246*53ee8cc1Swenshuai.xi     MS_U8*     pVE_TBL;
247*53ee8cc1Swenshuai.xi     MS_U8*     pVE_Coef_TBL;
248*53ee8cc1Swenshuai.xi     MS_U8*     pVBI_TBL;
249*53ee8cc1Swenshuai.xi     MS_BOOL    bvtotal_525;
250*53ee8cc1Swenshuai.xi     MS_BOOL    bPALSwitch;
251*53ee8cc1Swenshuai.xi     MS_BOOL    bPALout;
252*53ee8cc1Swenshuai.xi }MS_VE_Out_VideoSYS, *PMS_VE_Out_VideoSYS;
253*53ee8cc1Swenshuai.xi 
254*53ee8cc1Swenshuai.xi /// type of output destination for TV encoder
255*53ee8cc1Swenshuai.xi typedef enum
256*53ee8cc1Swenshuai.xi {
257*53ee8cc1Swenshuai.xi     MS_VE_DEST_NONE = 0,
258*53ee8cc1Swenshuai.xi     MS_VE_DEST_SCART,     ///< output destination is SCART
259*53ee8cc1Swenshuai.xi     MS_VE_DEST_CVBS,      ///< output destination is CVBS
260*53ee8cc1Swenshuai.xi     MS_VE_DEST_SVIDEO,    ///< output destination is S-Video
261*53ee8cc1Swenshuai.xi     MS_VE_DEST_YPBPR,     ///< output destination is YPbPr
262*53ee8cc1Swenshuai.xi     MS_VE_DEST_NUM,
263*53ee8cc1Swenshuai.xi } MS_VE_OUTPUT_DEST_TYPE;
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi /// type of input source for TV encoder
266*53ee8cc1Swenshuai.xi typedef enum
267*53ee8cc1Swenshuai.xi {
268*53ee8cc1Swenshuai.xi     MS_VE_SRC_DTV       = 0x00, ///< input source is DTV
269*53ee8cc1Swenshuai.xi     MS_VE_SRC_ATV       = 0x01, ///< input source is ATV
270*53ee8cc1Swenshuai.xi     MS_VE_SRC_CVBS0     = 0x02, ///< input source is CVBS0
271*53ee8cc1Swenshuai.xi     MS_VE_SRC_CVBS1     = 0x03, ///< input source is CVBS1
272*53ee8cc1Swenshuai.xi     MS_VE_SRC_CVBS2     = 0x04, ///< input source is CVBS2
273*53ee8cc1Swenshuai.xi     MS_VE_SRC_CVBS3     = 0x05, ///< input source is CVBS3
274*53ee8cc1Swenshuai.xi     MS_VE_SRC_SVIDEO    = 0x06, ///< input source is SVIDEO
275*53ee8cc1Swenshuai.xi     MS_VE_SRC_DSUB      = 0x07, ///< input source is DSUB
276*53ee8cc1Swenshuai.xi     MS_VE_SRC_COMP      = 0x08, ///< input source is COMP
277*53ee8cc1Swenshuai.xi     MS_VE_SRC_HDMI_A    = 0x09, ///< input source is COMP
278*53ee8cc1Swenshuai.xi     MS_VE_SRC_HDMI_B    = 0x0A, ///< input source is COMP
279*53ee8cc1Swenshuai.xi     MS_VE_SRC_HDMI_C    = 0x0B, ///< input source is COMP
280*53ee8cc1Swenshuai.xi     MS_VE_SRC_MAIN      = 0x0C, ///< input source is from main window
281*53ee8cc1Swenshuai.xi     MS_VE_SRC_SUB       = 0x0D, ///< input source is from sub window
282*53ee8cc1Swenshuai.xi     MS_VE_SRC_SCALER    = 0x0E, ///< input source is scaler op2
283*53ee8cc1Swenshuai.xi     MS_VE_SRC_DI        = 0x0F, ///< input source is DI
284*53ee8cc1Swenshuai.xi     MS_VE_SRC_BT656     = 0x10, ///< input source is BT656
285*53ee8cc1Swenshuai.xi     MS_VE_SRC_DTV_FROM_MVOP = 0x11,  ///< input source is DTV but from MVOP
286*53ee8cc1Swenshuai.xi     MS_VE_SRC_DNR       = 0x12,  ///< input source is DNR
287*53ee8cc1Swenshuai.xi     MS_VE_SRC_NONE      = 0xFF,
288*53ee8cc1Swenshuai.xi }MS_VE_INPUT_SRC_TYPE;
289*53ee8cc1Swenshuai.xi 
290*53ee8cc1Swenshuai.xi typedef struct
291*53ee8cc1Swenshuai.xi {
292*53ee8cc1Swenshuai.xi     MS_U32 PreHScalingRatio;
293*53ee8cc1Swenshuai.xi     MS_U32 PreVScalingRatio;
294*53ee8cc1Swenshuai.xi     MS_U32 PostHScalingRatio;
295*53ee8cc1Swenshuai.xi     MS_U32 PostVScalingRatio;
296*53ee8cc1Swenshuai.xi }MS_VE_Backup_Reg, *PMS_VE_Backup_Reg;
297*53ee8cc1Swenshuai.xi 
298*53ee8cc1Swenshuai.xi /// status of switchinging output destination
299*53ee8cc1Swenshuai.xi typedef enum
300*53ee8cc1Swenshuai.xi {
301*53ee8cc1Swenshuai.xi     MS_VE_SWITCH_DST_SUCCESS,               ///< success
302*53ee8cc1Swenshuai.xi     MS_VE_SWITCH_DST_INVALID_COMBINATION,   ///< invalid combination
303*53ee8cc1Swenshuai.xi     MS_VE_SWITCH_DST_INVALID_PARAM,         ///< invalid parameter
304*53ee8cc1Swenshuai.xi     MS_VE_SWITCH_DST_FAIL,                  ///< fail
305*53ee8cc1Swenshuai.xi }MS_SWITCH_VE_DST_STATUS;
306*53ee8cc1Swenshuai.xi 
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi /// VE output Type
309*53ee8cc1Swenshuai.xi typedef enum
310*53ee8cc1Swenshuai.xi {
311*53ee8cc1Swenshuai.xi     MS_VE_OUT_CCIR656,  ///< output signal is CCIR656
312*53ee8cc1Swenshuai.xi     MS_VE_OUT_TVENCODER,///< output signal from TVEncoder
313*53ee8cc1Swenshuai.xi     MS_VE_OUT_CAPTURE,///<   output signal from VE Capture
314*53ee8cc1Swenshuai.xi }MS_VE_OUT_TYPE;
315*53ee8cc1Swenshuai.xi 
316*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
317*53ee8cc1Swenshuai.xi {
318*53ee8cc1Swenshuai.xi     MS_U16  u16Width;
319*53ee8cc1Swenshuai.xi     MS_U16  u16height;
320*53ee8cc1Swenshuai.xi     MS_PHY  u32MiuBaseAddr;
321*53ee8cc1Swenshuai.xi     MS_U32  u32MemSize;
322*53ee8cc1Swenshuai.xi     MS_BOOL bVECapture; ///< TRUE/FALSE, enable/disable VE capture
323*53ee8cc1Swenshuai.xi }MS_VE_Output_CAPTURE, *PMS_VE_Output_CAPTURE;
324*53ee8cc1Swenshuai.xi 
325*53ee8cc1Swenshuai.xi /// the information of switching ouput destination for TV encoder
326*53ee8cc1Swenshuai.xi typedef struct
327*53ee8cc1Swenshuai.xi {
328*53ee8cc1Swenshuai.xi     MS_VE_OUTPUT_DEST_TYPE OutputDstType; ///< type of output destination
329*53ee8cc1Swenshuai.xi     MS_SWITCH_VE_DST_STATUS Status;     ///< the returning status of switching output destination
330*53ee8cc1Swenshuai.xi }MS_Switch_VE_Dest_Info, *PMS_Switch_VE_Dest_Info;
331*53ee8cc1Swenshuai.xi 
332*53ee8cc1Swenshuai.xi typedef enum
333*53ee8cc1Swenshuai.xi {
334*53ee8cc1Swenshuai.xi     MS_VE_HMirrorMode,      //H mirror
335*53ee8cc1Swenshuai.xi     MS_VE_VMirrorMode,      //V mirror
336*53ee8cc1Swenshuai.xi     MS_VE_HVBothMirrorMode, //HV mirror
337*53ee8cc1Swenshuai.xi     MS_VE_NoneMirror,
338*53ee8cc1Swenshuai.xi }MS_VE_MirrorStatus;
339*53ee8cc1Swenshuai.xi 
340*53ee8cc1Swenshuai.xi /// status of switchinging input source
341*53ee8cc1Swenshuai.xi typedef enum
342*53ee8cc1Swenshuai.xi {
343*53ee8cc1Swenshuai.xi     MS_VE_SWITCH_SRC_SUCCESS,           ///< success
344*53ee8cc1Swenshuai.xi     MS_VE_SWITCH_SRC_INVALID_PARAM,     ///< invalid parameter
345*53ee8cc1Swenshuai.xi     MS_VE_SWITCH_SRC_FAIL,              ///< fail
346*53ee8cc1Swenshuai.xi }MS_SWITCH_VE_SRC_STATUS;
347*53ee8cc1Swenshuai.xi 
348*53ee8cc1Swenshuai.xi /// the information of switching output destination for TV encoder
349*53ee8cc1Swenshuai.xi typedef struct
350*53ee8cc1Swenshuai.xi {
351*53ee8cc1Swenshuai.xi     MS_VE_INPUT_SRC_TYPE InputSrcType; ///< type of input source
352*53ee8cc1Swenshuai.xi     MS_SWITCH_VE_SRC_STATUS Status; ///< the returning status of switching input source
353*53ee8cc1Swenshuai.xi }MS_Switch_VE_Src_Info, *PMS_Switch_VE_Src_Info;
354*53ee8cc1Swenshuai.xi 
355*53ee8cc1Swenshuai.xi typedef struct
356*53ee8cc1Swenshuai.xi {
357*53ee8cc1Swenshuai.xi     MS_U16  u16Version;   //< Version number for this structure
358*53ee8cc1Swenshuai.xi     MS_VE_INPUT_SRC_TYPE eInputSrcType; ///< type of input source for Video encoder
359*53ee8cc1Swenshuai.xi     MS_VE_INPUT_SRC_TYPE eInputSrcOfMixedSrc;  // The real input source for mixed "InputSrcType" of VE,
360*53ee8cc1Swenshuai.xi                                               // eg. Real InputSrc of "MS_VE_SRC_MAIN", "MS_VE_SRC_SUB", "MS_VE_SRC_SCALER" etc.
361*53ee8cc1Swenshuai.xi }MS_VE_InputSrc_Info, *PMS_VE_InputSrc_Info;
362*53ee8cc1Swenshuai.xi 
363*53ee8cc1Swenshuai.xi /// output control for VE
364*53ee8cc1Swenshuai.xi typedef struct
365*53ee8cc1Swenshuai.xi {
366*53ee8cc1Swenshuai.xi     MS_BOOL bEnable; ///< TRUE/FALSE, enable/disable VE
367*53ee8cc1Swenshuai.xi     MS_VE_OUT_TYPE OutputType; ///< VE output type
368*53ee8cc1Swenshuai.xi }MS_VE_Output_Ctrl, *PMS_VE_Output_Ctrl;
369*53ee8cc1Swenshuai.xi 
370*53ee8cc1Swenshuai.xi /// VE set mode type
371*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
372*53ee8cc1Swenshuai.xi {
373*53ee8cc1Swenshuai.xi     MS_U16 u16H_CapStart;
374*53ee8cc1Swenshuai.xi     MS_U16 u16H_CapSize;
375*53ee8cc1Swenshuai.xi     MS_U16 u16V_CapStart;
376*53ee8cc1Swenshuai.xi     MS_U16 u16V_CapSize;
377*53ee8cc1Swenshuai.xi     MS_U16 u16H_SC_CapStart;
378*53ee8cc1Swenshuai.xi     MS_U16 u16H_SC_CapSize;
379*53ee8cc1Swenshuai.xi     MS_U16 u16V_SC_CapStart;
380*53ee8cc1Swenshuai.xi     MS_U16 u16V_SC_CapSize;
381*53ee8cc1Swenshuai.xi     MS_U16 u16InputVFreq;
382*53ee8cc1Swenshuai.xi     MS_BOOL bHDuplicate;
383*53ee8cc1Swenshuai.xi     MS_BOOL bSrcInterlace;
384*53ee8cc1Swenshuai.xi }MS_VE_Set_Mode_Type;
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi //VE_ApiStatus
387*53ee8cc1Swenshuai.xi typedef struct
388*53ee8cc1Swenshuai.xi {
389*53ee8cc1Swenshuai.xi     PMS_VE_Output_Ctrl      output_ctrl;
390*53ee8cc1Swenshuai.xi     MS_Switch_VE_Src_Info   src_info;
391*53ee8cc1Swenshuai.xi     MS_Switch_VE_Dest_Info  dst_info;
392*53ee8cc1Swenshuai.xi }MS_VE_ApiStatus;
393*53ee8cc1Swenshuai.xi 
394*53ee8cc1Swenshuai.xi /// Define Window position and size attribute
395*53ee8cc1Swenshuai.xi typedef struct
396*53ee8cc1Swenshuai.xi {
397*53ee8cc1Swenshuai.xi     MS_U16 x;    ///<start x of the window
398*53ee8cc1Swenshuai.xi     MS_U16 y;    ///<start y of the window
399*53ee8cc1Swenshuai.xi     MS_U16 width;    ///<width of the window
400*53ee8cc1Swenshuai.xi     MS_U16 height;    ///<height of the window
401*53ee8cc1Swenshuai.xi } MS_VE_WINDOW_TYPE;
402*53ee8cc1Swenshuai.xi 
403*53ee8cc1Swenshuai.xi //Display information
404*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
405*53ee8cc1Swenshuai.xi {
406*53ee8cc1Swenshuai.xi     MS_U32 VDTOT; //Output vertical total
407*53ee8cc1Swenshuai.xi     MS_U32 DEVST; //Output DE vertical start
408*53ee8cc1Swenshuai.xi     MS_U32 DEVEND;//Output DE Vertical end
409*53ee8cc1Swenshuai.xi     MS_U32 HDTOT;// Output horizontal total
410*53ee8cc1Swenshuai.xi     MS_U32 DEHST; //Output DE horizontal start
411*53ee8cc1Swenshuai.xi     MS_U32 DEHEND;// Output DE horizontal end
412*53ee8cc1Swenshuai.xi     MS_BOOL bInterlaceMode;
413*53ee8cc1Swenshuai.xi } MS_VE_DST_DispInfo;
414*53ee8cc1Swenshuai.xi 
415*53ee8cc1Swenshuai.xi //VE register bank
416*53ee8cc1Swenshuai.xi typedef enum
417*53ee8cc1Swenshuai.xi {
418*53ee8cc1Swenshuai.xi     MS_VE_REG_BANK_3B,
419*53ee8cc1Swenshuai.xi     MS_VE_REG_BANK_3E,
420*53ee8cc1Swenshuai.xi     MS_VE_REG_BANK_3F,
421*53ee8cc1Swenshuai.xi } MS_VE_REG_BANK;
422*53ee8cc1Swenshuai.xi 
423*53ee8cc1Swenshuai.xi //External Info
424*53ee8cc1Swenshuai.xi typedef struct
425*53ee8cc1Swenshuai.xi {
426*53ee8cc1Swenshuai.xi     //op to ve timing
427*53ee8cc1Swenshuai.xi     MS_U16 u16VttIn;
428*53ee8cc1Swenshuai.xi     MS_U16 u16HttIn;
429*53ee8cc1Swenshuai.xi     MS_U16 u16HdeIn;
430*53ee8cc1Swenshuai.xi     MS_U16 u16VdeIn;
431*53ee8cc1Swenshuai.xi 
432*53ee8cc1Swenshuai.xi     MS_U16 u16Vde_St;
433*53ee8cc1Swenshuai.xi     MS_U16 u16Hde_St;
434*53ee8cc1Swenshuai.xi 
435*53ee8cc1Swenshuai.xi }MS_VE_PLL_InCfg;
436*53ee8cc1Swenshuai.xi 
437*53ee8cc1Swenshuai.xi //VE customer scaling setting
438*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
439*53ee8cc1Swenshuai.xi {
440*53ee8cc1Swenshuai.xi     MS_U16   u16HScalingsrc; ///< H Source size for VE scaling
441*53ee8cc1Swenshuai.xi     MS_U16   u16HScalingdst;///< H Dest size for VE scaling
442*53ee8cc1Swenshuai.xi     MS_U16   u16VScalingsrc;///< V Source size for VE scaling
443*53ee8cc1Swenshuai.xi     MS_U16   u16VScalingdst;///< V Dest size for VE scaling
444*53ee8cc1Swenshuai.xi     MS_BOOL  bHCusScalingEnable; ///< Enable/Disable H customer scaling
445*53ee8cc1Swenshuai.xi     MS_BOOL  bVCusScalingEnable; ///< Enable/Disable V customer scaling
446*53ee8cc1Swenshuai.xi }MS_VE_CusScalingInfo, *PMS_VE_CusScalingInfo;
447*53ee8cc1Swenshuai.xi 
448*53ee8cc1Swenshuai.xi //Structure AP use
449*53ee8cc1Swenshuai.xi typedef struct
450*53ee8cc1Swenshuai.xi {
451*53ee8cc1Swenshuai.xi     MS_U16  u16Version;   //< Version number for this structure
452*53ee8cc1Swenshuai.xi     MS_U16  u16Length;    //< Length of this structure, unit: byte
453*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;      //< InOut, VE capture enable state
454*53ee8cc1Swenshuai.xi     MS_U8   u8FrameCount; //< Out, Current captured frame number,value range: 0~3
455*53ee8cc1Swenshuai.xi     MS_U8   u8Result;     //< Out, Function return status
456*53ee8cc1Swenshuai.xi }MS_VE_VECAPTURESTATE, *PMS_VE_VECAPTURESTATE;
457*53ee8cc1Swenshuai.xi 
458*53ee8cc1Swenshuai.xi #ifdef UFO_VE_INITEX
459*53ee8cc1Swenshuai.xi /// Define the initial data for VE
460*53ee8cc1Swenshuai.xi typedef struct
461*53ee8cc1Swenshuai.xi {
462*53ee8cc1Swenshuai.xi     // Version control
463*53ee8cc1Swenshuai.xi     MS_U32 u32VEInitData_Version;   ///<Version of current structure. Please always set to "VE_INIT_VERSION" as input
464*53ee8cc1Swenshuai.xi     MS_U16 u16VEInitData_Length;    ///<Length of this structure, u16VEInitData_Length=sizeof(VE_INITDATA)
465*53ee8cc1Swenshuai.xi     // frame buffer related
466*53ee8cc1Swenshuai.xi     MS_PHYADDR phyMIUAddress;      ///<VE  frame buffer start address, absolute without any alignment
467*53ee8cc1Swenshuai.xi     MS_PHYADDR phyMIUSize;            ///<VE window frame buffer size, the unit is BYTES
468*53ee8cc1Swenshuai.xi } VE_INITDATA;
469*53ee8cc1Swenshuai.xi #endif
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
472*53ee8cc1Swenshuai.xi //  Function and Variable
473*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
474*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
475*53ee8cc1Swenshuai.xi /// Description : Show the VE driver version
476*53ee8cc1Swenshuai.xi /// @ingroup VE_INFO
477*53ee8cc1Swenshuai.xi /// @param ppVersion \b Out: Library version string
478*53ee8cc1Swenshuai.xi /// @return             @ref  VE_Result
479*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
480*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_GetLibVer(const MSIF_Version **ppVersion);
481*53ee8cc1Swenshuai.xi 
482*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
483*53ee8cc1Swenshuai.xi /// Description : Get VE Information
484*53ee8cc1Swenshuai.xi /// @ingroup VE_INFO
485*53ee8cc1Swenshuai.xi /// @return @ref VE_DrvInfo return the VE information in this member
486*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
487*53ee8cc1Swenshuai.xi const VE_DrvInfo * MDrv_VE_GetInfo(void);
488*53ee8cc1Swenshuai.xi 
489*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
490*53ee8cc1Swenshuai.xi /// Description : Get VE Status
491*53ee8cc1Swenshuai.xi /// @ingroup VE_INFO
492*53ee8cc1Swenshuai.xi /// @param  pDrvStatus                  \b OUT: store the status
493*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
494*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
495*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_GetStatus(VE_DrvStatus *pDrvStatus);
496*53ee8cc1Swenshuai.xi 
497*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
498*53ee8cc1Swenshuai.xi /// Description : Set VE debug memesage level
499*53ee8cc1Swenshuai.xi /// @ingroup VE_INFO
500*53ee8cc1Swenshuai.xi /// @param  level \b IN: the debug meseage level
501*53ee8cc1Swenshuai.xi /// @return None
502*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
503*53ee8cc1Swenshuai.xi void MDrv_VE_SetDbgLevel(MS_U16 level);
504*53ee8cc1Swenshuai.xi 
505*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
506*53ee8cc1Swenshuai.xi /// Description : Get VE capability that support which standard
507*53ee8cc1Swenshuai.xi /// @ingroup VE_INFO
508*53ee8cc1Swenshuai.xi /// @param  pCaps \b OUT: the standard that VE support
509*53ee8cc1Swenshuai.xi /// @return None
510*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
511*53ee8cc1Swenshuai.xi void MDrv_VE_GetCaps(VE_Caps* pCaps);
512*53ee8cc1Swenshuai.xi 
513*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
514*53ee8cc1Swenshuai.xi /// Description : Set the input source of video encoder
515*53ee8cc1Swenshuai.xi /// @ingroup VE_ToBeModified
516*53ee8cc1Swenshuai.xi /// @param  -pSwitchInfo \b IN/OUT: the information of switching input destination of TV encodeer
517*53ee8cc1Swenshuai.xi /// @return None
518*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
519*53ee8cc1Swenshuai.xi void MDrv_VE_SwitchInputSource(PMS_Switch_VE_Src_Info pSwitchInfo);
520*53ee8cc1Swenshuai.xi 
521*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
522*53ee8cc1Swenshuai.xi /// Description: Extended API for set the input source of video encoder(To Expand&Replace MDrv_VE_SwitchInputSource)
523*53ee8cc1Swenshuai.xi /// @ingroup VE_EEATURE
524*53ee8cc1Swenshuai.xi /// @param  -pSwitchInfo \b IN/OUT: the information of switching input destination of TV encodeer
525*53ee8cc1Swenshuai.xi /// @return @ref MS_SWITCH_VE_SRC_STATUS
526*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
527*53ee8cc1Swenshuai.xi MS_SWITCH_VE_SRC_STATUS MDrv_VE_SetInputSource(PMS_VE_InputSrc_Info pInputSrcInfo);
528*53ee8cc1Swenshuai.xi 
529*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
530*53ee8cc1Swenshuai.xi /// Description : Set the output destination of video encoder
531*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
532*53ee8cc1Swenshuai.xi ///              None SCART CVBS SVIDEO YPbPr
533*53ee8cc1Swenshuai.xi ///       None    O     O     O     O     O
534*53ee8cc1Swenshuai.xi ///       SCART O      -     X     X     X
535*53ee8cc1Swenshuai.xi ///        CVBS  O     X      -     O     O
536*53ee8cc1Swenshuai.xi ///     S_VIDE  O     O     X      O     -     X
537*53ee8cc1Swenshuai.xi ///       YPbPr   O     X     O      X     -
538*53ee8cc1Swenshuai.xi ///
539*53ee8cc1Swenshuai.xi /// @param  -pSwitchInfo \b IN/OUT: the information of switching output destination of TV encodeer
540*53ee8cc1Swenshuai.xi /// @return None
541*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
542*53ee8cc1Swenshuai.xi void MDrv_VE_SwitchOuputDest(PMS_Switch_VE_Dest_Info pSwitchInfo);
543*53ee8cc1Swenshuai.xi 
544*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
545*53ee8cc1Swenshuai.xi /// Description : Control the output of video encoder
546*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
547*53ee8cc1Swenshuai.xi /// @param  -pOutputCtrl \b IN: the control information of VE
548*53ee8cc1Swenshuai.xi /// @return none
549*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
550*53ee8cc1Swenshuai.xi void MDrv_VE_SetOutputCtrl(PMS_VE_Output_Ctrl pOutputCtrl);
551*53ee8cc1Swenshuai.xi 
552*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
553*53ee8cc1Swenshuai.xi /// Description : Set the output video standard of video encoder
554*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
555*53ee8cc1Swenshuai.xi /// @param  -VideoSystem \b IN: the video standard
556*53ee8cc1Swenshuai.xi /// @return TRUE: supported and success,  FALSE: unsupported or unsuccess
557*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
558*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_SetOutputVideoStd(MS_VE_VIDEOSYS VideoSystem);
559*53ee8cc1Swenshuai.xi 
560*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
561*53ee8cc1Swenshuai.xi /// Description : Load customized setting table for VE
562*53ee8cc1Swenshuai.xi /// User can load customized table in initialize function, then enable it.
563*53ee8cc1Swenshuai.xi /// Driver will apply customized table setting when MDrv_VE_SetOutputVideoStd
564*53ee8cc1Swenshuai.xi /// Table using sample:
565*53ee8cc1Swenshuai.xi /// MS_U8 pPALTable[12] =
566*53ee8cc1Swenshuai.xi ///        {0xAA,0xBB,0xCC,0xDD,  => add one customized setting. format: {bank_H, bank_L, 8-bit address, value,}
567*53ee8cc1Swenshuai.xi ///          0xFF,0xFF,0xFF,0xFF} => must set 0xFF,0xFF,0xFF,0xFF for end of table command setting
568*53ee8cc1Swenshuai.xi /// Note: Users set value which want to be changed only.
569*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
570*53ee8cc1Swenshuai.xi /// @param  -VideoSystem \b IN: the video standard
571*53ee8cc1Swenshuai.xi /// @param  -pTbl \b IN: pointer to the table
572*53ee8cc1Swenshuai.xi /// @return TRUE: supported and success,  FALSE: unsupported or unsuccess
573*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
574*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_SetCusTable(MS_VE_VIDEOSYS VideoSystem, MS_U8* pTbl);
575*53ee8cc1Swenshuai.xi 
576*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
577*53ee8cc1Swenshuai.xi /// Description : Enable/Disable customized table
578*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
579*53ee8cc1Swenshuai.xi /// @param  -bEnable \b IN: Enable/Disable customized table
580*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
581*53ee8cc1Swenshuai.xi void MDrv_VE_EnableCusTable(MS_BOOL bEnable);
582*53ee8cc1Swenshuai.xi 
583*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
584*53ee8cc1Swenshuai.xi /// Description : Power on VE
585*53ee8cc1Swenshuai.xi /// @ingroup VE_ToBeRemove
586*53ee8cc1Swenshuai.xi /// @return none
587*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
588*53ee8cc1Swenshuai.xi void MDrv_VE_PowerOn(void);
589*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
590*53ee8cc1Swenshuai.xi /// Description : Power off VE
591*53ee8cc1Swenshuai.xi /// @ingroup VE_ToBeRemove
592*53ee8cc1Swenshuai.xi /// @return none
593*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
594*53ee8cc1Swenshuai.xi void MDrv_VE_PowerOff(void);
595*53ee8cc1Swenshuai.xi 
596*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
597*53ee8cc1Swenshuai.xi /// Description : Set RIU Base
598*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
599*53ee8cc1Swenshuai.xi /// @return TRUE: success, FALSE: unsuccess
600*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
601*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_SetIOMapBase(void);
602*53ee8cc1Swenshuai.xi 
603*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
604*53ee8cc1Swenshuai.xi /// Description : Initiate VE
605*53ee8cc1Swenshuai.xi /// @ingroup VE_INIT
606*53ee8cc1Swenshuai.xi /// @param[in]  u32MIUAddress  \b IN: The address reserved for VE
607*53ee8cc1Swenshuai.xi /// @return none
608*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
609*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700)
610*53ee8cc1Swenshuai.xi void MDrv_VE_Init(MS_PHY u32MIUAddress);
611*53ee8cc1Swenshuai.xi #else
612*53ee8cc1Swenshuai.xi void MDrv_VE_Init(MS_PHYADDR u32MIUAddress);
613*53ee8cc1Swenshuai.xi #endif
614*53ee8cc1Swenshuai.xi 
615*53ee8cc1Swenshuai.xi #ifdef UFO_VE_INITEX
616*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
617*53ee8cc1Swenshuai.xi /// Description : Extended interface to initiate VE with initial parameters
618*53ee8cc1Swenshuai.xi /// @ingroup VE_INIT
619*53ee8cc1Swenshuai.xi /// @param[in]  pVE_InitData  \b IN: VE init data
620*53ee8cc1Swenshuai.xi /// @return none
621*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
622*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_InitEx(VE_INITDATA *pVE_InitData);
623*53ee8cc1Swenshuai.xi #endif
624*53ee8cc1Swenshuai.xi 
625*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
626*53ee8cc1Swenshuai.xi /// Description : Get VE parameter (config)
627*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
628*53ee8cc1Swenshuai.xi /// @param[in]  pMIUAddress    \b IN: point to VE miu address
629*53ee8cc1Swenshuai.xi /// @return TRUE: success, FALSE: unsuccess
630*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
631*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700)
632*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MDrv_VE_GetConfig(MS_PHY *pMIUAddress);
633*53ee8cc1Swenshuai.xi #else
634*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MDrv_VE_GetConfig(MS_PHYADDR *pMIUAddress);
635*53ee8cc1Swenshuai.xi #endif
636*53ee8cc1Swenshuai.xi 
637*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
638*53ee8cc1Swenshuai.xi /// Description : Exit VE
639*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
640*53ee8cc1Swenshuai.xi /// @return TRUE: success, FALSE: unsuccess
641*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
642*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_Exit(void);
643*53ee8cc1Swenshuai.xi 
644*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
645*53ee8cc1Swenshuai.xi /// Description : Set Wild-screen signal
646*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
647*53ee8cc1Swenshuai.xi /// @param  -bEn \b IN: Enable/Disable WSS
648*53ee8cc1Swenshuai.xi /// @param  -u16WSSData \b IN: The WSS data
649*53ee8cc1Swenshuai.xi /// @return none
650*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
651*53ee8cc1Swenshuai.xi void MDrv_VE_SetWSSData(MS_BOOL bEn, MS_U16 u16WSSData);
652*53ee8cc1Swenshuai.xi 
653*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
654*53ee8cc1Swenshuai.xi /// Description : Get Wild-screen signal data
655*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
656*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 retun the data of WSS
657*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
658*53ee8cc1Swenshuai.xi MS_U16 MDrv_VE_GetWSSData(void);
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
661*53ee8cc1Swenshuai.xi /// Description : VE Setmode. Configurate VE for CVBS out.
662*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
663*53ee8cc1Swenshuai.xi /// @param[in]  pVESetMode  \b IN: The parameter for VE
664*53ee8cc1Swenshuai.xi /// @return none
665*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
666*53ee8cc1Swenshuai.xi void MDrv_VE_SetMode(MS_VE_Set_Mode_Type * pVESetMode);
667*53ee8cc1Swenshuai.xi 
668*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
669*53ee8cc1Swenshuai.xi /// Description : Output black screen from VE. This function is not for disabling VE.
670*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
671*53ee8cc1Swenshuai.xi /// @param[in]  pVESetMode  \b IN: enable or disable the black screen
672*53ee8cc1Swenshuai.xi /// @return none
673*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
674*53ee8cc1Swenshuai.xi void MDrv_VE_SetBlackScreen(MS_BOOL bEn);
675*53ee8cc1Swenshuai.xi 
676*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
677*53ee8cc1Swenshuai.xi /// Description : Return true if VE output black video right now.
678*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
679*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
680*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
681*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_IsBlackScreenEnabled(void);
682*53ee8cc1Swenshuai.xi 
683*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
684*53ee8cc1Swenshuai.xi /// Description : VE restart TVE to read data from TT buffer
685*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
686*53ee8cc1Swenshuai.xi /// @param[in]  bEnable  \b IN: enable or disable the TTX
687*53ee8cc1Swenshuai.xi /// @return none
688*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
689*53ee8cc1Swenshuai.xi void MDrv_VE_EnableTtx(MS_BOOL bEnable);
690*53ee8cc1Swenshuai.xi 
691*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)||defined(UFO_PUBLIC_HEADER_700)
692*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
693*53ee8cc1Swenshuai.xi /// Description : VE set TTx buffer address
694*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
695*53ee8cc1Swenshuai.xi /// @param[in]  u32StartAddr  \b IN: Start of the Memory address that store TTX
696*53ee8cc1Swenshuai.xi /// @param[in]  u32Size       \b IN: the size of store the TTX data
697*53ee8cc1Swenshuai.xi /// @return none
698*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
699*53ee8cc1Swenshuai.xi void MDrv_VE_SetTtxBuffer(MS_PHY phyStartAddr, MS_U32 u32Size);
700*53ee8cc1Swenshuai.xi #else
701*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
702*53ee8cc1Swenshuai.xi /// Description : VE set TTx buffer address
703*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
704*53ee8cc1Swenshuai.xi /// @param[in]  u32StartAddr  \b IN: Start of the Memory address that store TTX
705*53ee8cc1Swenshuai.xi /// @param[in]  u32Size       \b IN: the size of store the TTX data
706*53ee8cc1Swenshuai.xi /// @return none
707*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
708*53ee8cc1Swenshuai.xi void MDrv_VE_SetTtxBuffer(MS_U32 u32StartAddr, MS_U32 u32Size);
709*53ee8cc1Swenshuai.xi #endif
710*53ee8cc1Swenshuai.xi 
711*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
712*53ee8cc1Swenshuai.xi /// Description : VE clear TT buffer read done status
713*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
714*53ee8cc1Swenshuai.xi /// @return none
715*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
716*53ee8cc1Swenshuai.xi void MDrv_VE_ClearTtxReadDoneStatus(void);
717*53ee8cc1Swenshuai.xi 
718*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
719*53ee8cc1Swenshuai.xi /// Description : VE TT buffer read done status
720*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
721*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE
722*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
723*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_GetTtxReadDoneStatus(void);
724*53ee8cc1Swenshuai.xi 
725*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
726*53ee8cc1Swenshuai.xi /// Description : VE Set VBI TT active Lines
727*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
728*53ee8cc1Swenshuai.xi /// @param[in]  u8LinePerField       \b IN: TTX active line
729*53ee8cc1Swenshuai.xi /// @return none
730*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
731*53ee8cc1Swenshuai.xi void MDrv_VE_SetVbiTtxActiveLines(MS_U8 u8LinePerField);
732*53ee8cc1Swenshuai.xi 
733*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
734*53ee8cc1Swenshuai.xi /// Description : VE Set VBI TT active Lines by the given bitmap
735*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
736*53ee8cc1Swenshuai.xi /// @param <IN>\b u32Bitmap: a bitmap that defines whick physical lines the teletext lines are to be inserted.
737*53ee8cc1Swenshuai.xi /// @return none
738*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
739*53ee8cc1Swenshuai.xi void MDrv_VE_SetVbiTtxActiveLinesBitmap(MS_U32 u32Bitmap);
740*53ee8cc1Swenshuai.xi 
741*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
742*53ee8cc1Swenshuai.xi /// Description : VE Set VBI ttx active line
743*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
744*53ee8cc1Swenshuai.xi /// @param <IN>\b odd_start: odd page start line
745*53ee8cc1Swenshuai.xi /// @param <IN>\b odd_end: odd page end line
746*53ee8cc1Swenshuai.xi /// @param <IN>\b even_start: even page start line
747*53ee8cc1Swenshuai.xi /// @param <IN>\b even_end: even page end line
748*53ee8cc1Swenshuai.xi /// @return none
749*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
750*53ee8cc1Swenshuai.xi void MDrv_VE_SetVbiTtxRange(MS_U16 odd_start, MS_U16 odd_end,
751*53ee8cc1Swenshuai.xi                             MS_U16 even_start, MS_U16 enen_end);
752*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
753*53ee8cc1Swenshuai.xi /// Description : VE Set VBI CC
754*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
755*53ee8cc1Swenshuai.xi /// @param[in]  bEnable  \b IN: enable or disable the CC
756*53ee8cc1Swenshuai.xi /// @return none
757*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
758*53ee8cc1Swenshuai.xi void MDrv_VE_EnableCcSw(MS_BOOL bEnable);
759*53ee8cc1Swenshuai.xi 
760*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
761*53ee8cc1Swenshuai.xi /// Description : VE Set VBI CC active line
762*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
763*53ee8cc1Swenshuai.xi /// @param <IN>\b odd_start: odd page start line
764*53ee8cc1Swenshuai.xi /// @param <IN>\b odd_end: odd page end line
765*53ee8cc1Swenshuai.xi /// @param <IN>\b even_start: even page start line
766*53ee8cc1Swenshuai.xi /// @param <IN>\b even_end: even page end line
767*53ee8cc1Swenshuai.xi /// @return none
768*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
769*53ee8cc1Swenshuai.xi void MDrv_VE_SetCcRange(MS_U16 odd_start, MS_U16 odd_end, MS_U16 even_start, MS_U16 enen_end);
770*53ee8cc1Swenshuai.xi 
771*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
772*53ee8cc1Swenshuai.xi /// Description : VE Set VBI CC data
773*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
774*53ee8cc1Swenshuai.xi /// @param <IN>\b bIsOdd: odd field use
775*53ee8cc1Swenshuai.xi /// @param <IN>\b data: the CC data
776*53ee8cc1Swenshuai.xi /// @return none
777*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
778*53ee8cc1Swenshuai.xi void MDrv_VE_SendCcData(MS_BOOL bIsOdd, MS_U16 data);
779*53ee8cc1Swenshuai.xi 
780*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
781*53ee8cc1Swenshuai.xi /// Description : VE Set display windows
782*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
783*53ee8cc1Swenshuai.xi /// @param <IN>\b stDispWin: the info of the display window
784*53ee8cc1Swenshuai.xi /// @return none
785*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
786*53ee8cc1Swenshuai.xi void MDrv_VE_set_display_window(MS_VE_WINDOW_TYPE stDispWin);
787*53ee8cc1Swenshuai.xi 
788*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
789*53ee8cc1Swenshuai.xi /// Description : VE Set output with Frame Color
790*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
791*53ee8cc1Swenshuai.xi /// @param <IN>\b u32aRGB: the value of frame color
792*53ee8cc1Swenshuai.xi /// @return none
793*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
794*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_SetFrameColor(MS_U32 u32aRGB);
795*53ee8cc1Swenshuai.xi 
796*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
797*53ee8cc1Swenshuai.xi /// Description : VE Set output with OSD
798*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
799*53ee8cc1Swenshuai.xi /// @param <IN>\b bEnable: enable or disable the OSD
800*53ee8cc1Swenshuai.xi /// @return none
801*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
802*53ee8cc1Swenshuai.xi void MDrv_VE_SetOSD(MS_BOOL bEnable);
803*53ee8cc1Swenshuai.xi 
804*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
805*53ee8cc1Swenshuai.xi /// Description : Set VE OSD Layer
806*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
807*53ee8cc1Swenshuai.xi /// @param <IN>\b eVideoOSDLayer: set the OSD layer
808*53ee8cc1Swenshuai.xi /// @return none
809*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
810*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Set_OSDLayer(MS_VE_OSD_LAYER_SEL eVideoOSDLayer);
811*53ee8cc1Swenshuai.xi 
812*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
813*53ee8cc1Swenshuai.xi /// Description: Get VE OSD Layer
814*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
815*53ee8cc1Swenshuai.xi /// @return @ref MS_VE_OSD_LAYER_SEL
816*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
817*53ee8cc1Swenshuai.xi MS_VE_OSD_LAYER_SEL MDrv_VE_Get_OSDLayer(void);
818*53ee8cc1Swenshuai.xi 
819*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
820*53ee8cc1Swenshuai.xi /// Description: Set VE Video Alpha
821*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
822*53ee8cc1Swenshuai.xi /// @param <IN>\b u8Val: set the video alpha value
823*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
824*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
825*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Set_VideoAlpha(MS_U8 u8Val);
826*53ee8cc1Swenshuai.xi 
827*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
828*53ee8cc1Swenshuai.xi /// Description: Get VE Video Alpha
829*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
830*53ee8cc1Swenshuai.xi /// @param <OUT>\b pu8Val: pointer to the value
831*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
832*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
833*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Get_VideoAlpha(MS_U8 *pu8Val);
834*53ee8cc1Swenshuai.xi 
835*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
836*53ee8cc1Swenshuai.xi /// Description: VE Set RGB In
837*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
838*53ee8cc1Swenshuai.xi /// @param <IN>\b bEnable: set the input is RGB or not
839*53ee8cc1Swenshuai.xi /// @return none
840*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
841*53ee8cc1Swenshuai.xi void MDrv_VE_SetRGBIn(MS_BOOL bEnable);
842*53ee8cc1Swenshuai.xi 
843*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
844*53ee8cc1Swenshuai.xi /// Description: VE Get output video standard
845*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
846*53ee8cc1Swenshuai.xi /// @return @ref MS_VE_VIDEOSYS
847*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
848*53ee8cc1Swenshuai.xi MS_VE_VIDEOSYS MDrv_VE_Get_Output_Video_Std(void);
849*53ee8cc1Swenshuai.xi 
850*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
851*53ee8cc1Swenshuai.xi /// Description: VE Set Capture Mode
852*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
853*53ee8cc1Swenshuai.xi /// @param <IN>\b bEnable: enable or disable the capture mode
854*53ee8cc1Swenshuai.xi /// @return none
855*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
856*53ee8cc1Swenshuai.xi void MDrv_VE_SetCaptureMode(MS_BOOL bEnable);
857*53ee8cc1Swenshuai.xi 
858*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
859*53ee8cc1Swenshuai.xi /// Description: VE Get Destination Information for GOP mixer
860*53ee8cc1Swenshuai.xi /// @param <OUT>\b pDstInfo: output DST display info
861*53ee8cc1Swenshuai.xi /// @param <IN>\b u32SizeofDstInfo: The size of DST display info
862*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
863*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
864*53ee8cc1Swenshuai.xi MS_BOOL MApi_VE_GetDstInfo(MS_VE_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo);
865*53ee8cc1Swenshuai.xi 
866*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
867*53ee8cc1Swenshuai.xi /// Description: VE Set Test pattern
868*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
869*53ee8cc1Swenshuai.xi /// @param <IN>\b bEnable: enable or disable the test pattern
870*53ee8cc1Swenshuai.xi /// @return none
871*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
872*53ee8cc1Swenshuai.xi void MDrv_VE_Set_TestPattern(MS_BOOL bEn);
873*53ee8cc1Swenshuai.xi 
874*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
875*53ee8cc1Swenshuai.xi /// Description: Write the VE register
876*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
877*53ee8cc1Swenshuai.xi /// @param <IN>\b VE_BK: select the VE bank
878*53ee8cc1Swenshuai.xi /// @param <IN>\b u32Reg: the register to be set
879*53ee8cc1Swenshuai.xi /// @param <IN>\b u16Val: set value
880*53ee8cc1Swenshuai.xi /// @param <IN>\b u16Mask: the mask value
881*53ee8cc1Swenshuai.xi /// @return none
882*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
883*53ee8cc1Swenshuai.xi void MApi_VE_W2BYTE_MSK(MS_VE_REG_BANK VE_BK, MS_U32 u32Reg, MS_U16 u16Val, MS_U16 u16Mask);
884*53ee8cc1Swenshuai.xi 
885*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
886*53ee8cc1Swenshuai.xi /// Description: Write the VE register
887*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
888*53ee8cc1Swenshuai.xi /// @param <IN>\b VE_BK: select the VE bank
889*53ee8cc1Swenshuai.xi /// @param <IN>\b u32Reg: the register to be read
890*53ee8cc1Swenshuai.xi /// @param <IN>\b u16Mask: the mask value
891*53ee8cc1Swenshuai.xi /// @return @ref MS_U16
892*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
893*53ee8cc1Swenshuai.xi MS_U16 MApi_VE_R2BYTE_MSK(MS_VE_REG_BANK VE_BK, MS_U32 u32Reg, MS_U16 u16Mask);
894*53ee8cc1Swenshuai.xi 
895*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
896*53ee8cc1Swenshuai.xi /// Description: VE Dump Table Interface
897*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
898*53ee8cc1Swenshuai.xi /// @param <IN>\b pVETable: pointer to the table
899*53ee8cc1Swenshuai.xi /// @param <IN>\b u8TableType: the type of table
900*53ee8cc1Swenshuai.xi /// @return none
901*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
902*53ee8cc1Swenshuai.xi void MDrv_VE_DumpTable(MS_U8 *pVETable, MS_U8 u8TableType);
903*53ee8cc1Swenshuai.xi 
904*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
905*53ee8cc1Swenshuai.xi /// Description: This routine set flag to mask register write for special case \n
906*53ee8cc1Swenshuai.xi ///            e.g. MBoot to APP with logo display
907*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
908*53ee8cc1Swenshuai.xi /// @param <IN>\b bFlag: TRUE: Mask register write, FALSE: not Mask
909*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
910*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
911*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_DisableRegWrite(MS_BOOL bFlag);
912*53ee8cc1Swenshuai.xi 
913*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
914*53ee8cc1Swenshuai.xi /// Description: VE show internal color bar (test pattern)
915*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
916*53ee8cc1Swenshuai.xi /// @param <IN>\b bEnable: TRUE to enable color; false to disable color bar
917*53ee8cc1Swenshuai.xi /// @return None
918*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
919*53ee8cc1Swenshuai.xi void MDrv_VE_ShowColorBar(MS_BOOL bEnable);
920*53ee8cc1Swenshuai.xi 
921*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
922*53ee8cc1Swenshuai.xi /// Description: This routine set read/write addjustment to centralize VE display window.\n
923*53ee8cc1Swenshuai.xi ///        Set the adjustment and it works after MDrv_VE_set_display_window() API is invoked. \n
924*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
925*53ee8cc1Swenshuai.xi /// @param <IN>\b s32WAddrAdjustment: the pixel units to adjust on write address
926*53ee8cc1Swenshuai.xi /// @param <IN>\b s32RAddrAdjustment: the pixel units to adjust on read address
927*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
928*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
929*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_AdjustPositionBase(MS_S32 s32WAddrAdjustment, MS_S32 s32RAddrAdjustment);
930*53ee8cc1Swenshuai.xi 
931*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
932*53ee8cc1Swenshuai.xi /// Description: In STB Chip, VE needs to set vepll to lock frame rate with HD Path.\n
933*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
934*53ee8cc1Swenshuai.xi /// @param <IN>\b pInCfg: Information of HD path
935*53ee8cc1Swenshuai.xi /// @param <IN>\b bEnable: enable/disable frame lock
936*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
937*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
938*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_SetFrameLock(MS_VE_PLL_InCfg *pInCfg, MS_BOOL bEnable);
939*53ee8cc1Swenshuai.xi 
940*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
941*53ee8cc1Swenshuai.xi /// Description: Provide the capability of Customer scaling for VE.\n
942*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
943*53ee8cc1Swenshuai.xi /// @param <IN>\b pstVECusScalingInfo : Src and Dest info for customer scaling, @ref MS_VE_CusScalingInfo
944*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
945*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
946*53ee8cc1Swenshuai.xi VE_Result  MDrv_VE_Set_Customer_Scaling(MS_VE_CusScalingInfo *pstVECusScalingInfo);
947*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
948*53ee8cc1Swenshuai.xi /// Description: MDrv_VE_set_crop_window, set up crop window (crop video frame in MIU)
949*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
950*53ee8cc1Swenshuai.xi /// @param <IN>\b stCropWin: crop window
951*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
952*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
953*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_set_crop_window(MS_VE_WINDOW_TYPE stCropWin);
954*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
955*53ee8cc1Swenshuai.xi /// Description: VE be set display window (backend), after MIU
956*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
957*53ee8cc1Swenshuai.xi /// @param <IN>\b stDispWin: display window
958*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
959*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
960*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_set_be_display_window(MS_VE_WINDOW_TYPE stDispWin);
961*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
962*53ee8cc1Swenshuai.xi /// Description: MDrv_VE_Get_Ext_Caps: get VE extented capability
963*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
964*53ee8cc1Swenshuai.xi /// @param <OUT>\b cap: Get capbility
965*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
966*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
967*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Get_Ext_Caps(MS_VE_Ext_Cap *cap);
968*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
969*53ee8cc1Swenshuai.xi /// Description: MDrv_VE_SetWindow, set crop window and display window in one API.
970*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
971*53ee8cc1Swenshuai.xi /// @argument:
972*53ee8cc1Swenshuai.xi /// @param <IN>\b stSrcWin: a pointer to MS_VE_WINDOW_TYPE - source window, depends on input size
973*53ee8cc1Swenshuai.xi /// @param <IN>\b stCropWin: a pointer to MS_VE_WINDOW_TYPE - crop window, depends on source window size
974*53ee8cc1Swenshuai.xi /// @param <IN>\b stDispWin: a pointer to MS_VE_WINDOW_TYPE - display window, depends on output size
975*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
976*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
977*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_SetWindow(MS_VE_WINDOW_TYPE *stSrcWin, MS_VE_WINDOW_TYPE *stCropWin,
978*53ee8cc1Swenshuai.xi         MS_VE_WINDOW_TYPE *stDispWin);
979*53ee8cc1Swenshuai.xi 
980*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
981*53ee8cc1Swenshuai.xi /// Description: Init and config the VE capture
982*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
983*53ee8cc1Swenshuai.xi /// @param pVECapture \b IN : @ref PMS_VE_Output_CAPTURE
984*53ee8cc1Swenshuai.xi /// @return none
985*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
986*53ee8cc1Swenshuai.xi void MDrv_VE_InitVECapture(PMS_VE_Output_CAPTURE pVECapture);
987*53ee8cc1Swenshuai.xi 
988*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
989*53ee8cc1Swenshuai.xi /// Description: Enable VE capture
990*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
991*53ee8cc1Swenshuai.xi /// @param <IN>\b pstVECapState: a pointer to caputre state
992*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
993*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
994*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_EnaVECapture(PMS_VE_VECAPTURESTATE pstVECapState);
995*53ee8cc1Swenshuai.xi 
996*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
997*53ee8cc1Swenshuai.xi /// Description: Get VE capture state
998*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
999*53ee8cc1Swenshuai.xi /// @param <IN>\b pstVECapState: a pointer to get caputre state
1000*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
1001*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1002*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_GetVECaptureState(PMS_VE_VECAPTURESTATE pstVECapState);
1003*53ee8cc1Swenshuai.xi 
1004*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1005*53ee8cc1Swenshuai.xi /// Description: Wait on the finish of specified frame: Check if the frame is captured,
1006*53ee8cc1Swenshuai.xi /// if Yes, return TRUE, otherwise sleep until the next Vsync ISR
1007*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
1008*53ee8cc1Swenshuai.xi /// @param <IN>\b pstVECapState: a pointer to caputre state
1009*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
1010*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1011*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_VECaptureWaitOnFrame(PMS_VE_VECAPTURESTATE pstVECapState);
1012*53ee8cc1Swenshuai.xi 
1013*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1014*53ee8cc1Swenshuai.xi /// Description : the frame start is used to adjust output video (in pixel)
1015*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
1016*53ee8cc1Swenshuai.xi /// @param <IN>        \b stSrcWin :source window, depends on input size
1017*53ee8cc1Swenshuai.xi /// @param <IN>\b pixel_offset : set pixel offset value
1018*53ee8cc1Swenshuai.xi /// @return @ref VE_Result
1019*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1020*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Adjust_FrameStart(MS_VE_WINDOW_TYPE *stSrcWin,MS_S16 pixel_offset);
1021*53ee8cc1Swenshuai.xi 
1022*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1023*53ee8cc1Swenshuai.xi /// Description : Start or Stop to send WSS data on 525i system
1024*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
1025*53ee8cc1Swenshuai.xi /// @param <IN>\b  bEn: enable/disable wss525
1026*53ee8cc1Swenshuai.xi /// @param <IN>\b  u32WSSData: 20-bit wss data includes 14 bits of data and 6 bits of CRC
1027*53ee8cc1Swenshuai.xi /// @return             @ref  VE_Result
1028*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1029*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_SetWSS525Data(MS_BOOL bEn, MS_U32 u32WSSData);
1030*53ee8cc1Swenshuai.xi 
1031*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1032*53ee8cc1Swenshuai.xi /// Description : Get current wss data
1033*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
1034*53ee8cc1Swenshuai.xi /// @return   32-bit wss data, it includes 14 bits of data and 6 bits of CRC in lower 20 bits
1035*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1036*53ee8cc1Swenshuai.xi MS_U32 MDrv_VE_GetWSS525Data(void);
1037*53ee8cc1Swenshuai.xi 
1038*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1039*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_OnOffWSS()
1040*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Control VE WSS En/Disable
1041*53ee8cc1Swenshuai.xi /// @param  ben  enable/disable WSS
1042*53ee8cc1Swenshuai.xi /// @return None
1043*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1044*53ee8cc1Swenshuai.xi void MDrv_VE_OnOffWSS(MS_BOOL ben);
1045*53ee8cc1Swenshuai.xi 
1046*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1047*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_GetWSSStatus()
1048*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Get VE WSS En/Disable
1049*53ee8cc1Swenshuai.xi /// @param void
1050*53ee8cc1Swenshuai.xi /// @return TRUE: Enable,  FALSE: Disable
1051*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1052*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_GetWSSStatus(void);
1053*53ee8cc1Swenshuai.xi 
1054*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1055*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_OnOffMV()
1056*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Control VE Microvision En/Disable
1057*53ee8cc1Swenshuai.xi /// @param  ben  enable/disable Microvision
1058*53ee8cc1Swenshuai.xi /// @return None
1059*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1060*53ee8cc1Swenshuai.xi void MDrv_VE_OnOffMV(MS_BOOL ben);
1061*53ee8cc1Swenshuai.xi 
1062*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1063*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_GetMVStatus()
1064*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Get VE Microvision En/Disable
1065*53ee8cc1Swenshuai.xi /// @param void
1066*53ee8cc1Swenshuai.xi /// @return TRUE: Enable,  FALSE: Disable
1067*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1068*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_GetMVStatus(void);
1069*53ee8cc1Swenshuai.xi 
1070*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1071*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_OnOffDCS()
1072*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Control VE DCS En/Disable
1073*53ee8cc1Swenshuai.xi /// @param  ben  enable/disable DCS
1074*53ee8cc1Swenshuai.xi /// @return None
1075*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1076*53ee8cc1Swenshuai.xi void MDrv_VE_OnOffDCS(MS_BOOL ben);
1077*53ee8cc1Swenshuai.xi 
1078*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1079*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_GetDCSStatus()
1080*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Get VE DCS En/Disable
1081*53ee8cc1Swenshuai.xi /// @param void
1082*53ee8cc1Swenshuai.xi /// @return TRUE: Enable,  FALSE: Disable
1083*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1084*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VE_GetDCSStatus(void);
1085*53ee8cc1Swenshuai.xi 
1086*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1087*53ee8cc1Swenshuai.xi /// Description : Set the state for supesend
1088*53ee8cc1Swenshuai.xi /// @ingroup VE_FEATURE
1089*53ee8cc1Swenshuai.xi /// @param <IN>\b  u16PowerState: The state for suspend
1090*53ee8cc1Swenshuai.xi /// @return  @ref MS_U32 , TRUE for success, false for fail
1091*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1092*53ee8cc1Swenshuai.xi MS_U32 MDrv_TVE_SetPowerState(EN_POWER_MODE u16PowerState);
1093*53ee8cc1Swenshuai.xi 
1094*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) || defined(UFO_PUBLIC_HEADER_500_3)
1095*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1096*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_ReloadSetting()
1097*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Do SW resetting do confirm all change are applied
1098*53ee8cc1Swenshuai.xi /// @param  void
1099*53ee8cc1Swenshuai.xi ///
1100*53ee8cc1Swenshuai.xi /// @return             @ref  VE_Result
1101*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1102*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_ReloadSetting(void);
1103*53ee8cc1Swenshuai.xi #endif
1104*53ee8cc1Swenshuai.xi 
1105*53ee8cc1Swenshuai.xi #ifdef UFO_PUBLIC_HEADER_212
1106*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1107*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_Set_PreHSD_ScalingRatio
1108*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Set HSD size and scaling factor
1109*53ee8cc1Swenshuai.xi /// @param  u16In_Hsize       input H size
1110*53ee8cc1Swenshuai.xi /// @param  u16Out_Hsize      output H size
1111*53ee8cc1Swenshuai.xi /// @param  u16In_RatioHsize  input H size for calculate scaling factor
1112*53ee8cc1Swenshuai.xi /// @param  u16Out_RatioHsize output H size for calculate scaling factor
1113*53ee8cc1Swenshuai.xi ///
1114*53ee8cc1Swenshuai.xi /// @return             @ref  VE_Result
1115*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1116*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Set_PreHSD_ScalingRatio(MS_U16 u16In_Hsize,MS_U16 u16Out_Hsize,MS_U16 u16In_RatioHsize,MS_U16 u16Out_RatioHsize);
1117*53ee8cc1Swenshuai.xi 
1118*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1119*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_Set_PreVSD_ScalingRatio
1120*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Set VSD size and scaling factor
1121*53ee8cc1Swenshuai.xi /// @param  u16In_Vsize       input V size
1122*53ee8cc1Swenshuai.xi /// @param  u16Out_Vsize      output V size
1123*53ee8cc1Swenshuai.xi /// @param  u16In_RatioVsize  input V size for calculate scaling factor
1124*53ee8cc1Swenshuai.xi /// @param  u16Out_RatioVsize output V size for calculate scaling factor
1125*53ee8cc1Swenshuai.xi ///
1126*53ee8cc1Swenshuai.xi /// @return             @ref  VE_Result
1127*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1128*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Set_PreVSD_ScalingRatio(MS_U16 u16In_Vsize,MS_U16 u16Out_Vsize,MS_U16 u16In_RatioVsize,MS_U16 u16Out_RatioVsize);
1129*53ee8cc1Swenshuai.xi 
1130*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1131*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_VE_Set_v_upscaling
1132*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description : Set VSD size and scaling factor
1133*53ee8cc1Swenshuai.xi /// @param  Benable       enable/disable VSP
1134*53ee8cc1Swenshuai.xi /// @param  u16In_Vsize   input V size
1135*53ee8cc1Swenshuai.xi /// @param  u16Out_Vsize  output V size
1136*53ee8cc1Swenshuai.xi ///
1137*53ee8cc1Swenshuai.xi /// @return             @ref  VE_Result
1138*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
1139*53ee8cc1Swenshuai.xi VE_Result MDrv_VE_Set_v_upscaling(MS_BOOL Benable,MS_U16 u16In_Vsize,MS_U16 u16Out_Vsize);
1140*53ee8cc1Swenshuai.xi #endif
1141*53ee8cc1Swenshuai.xi 
1142*53ee8cc1Swenshuai.xi #ifdef __cplusplus
1143*53ee8cc1Swenshuai.xi }
1144*53ee8cc1Swenshuai.xi #endif
1145*53ee8cc1Swenshuai.xi 
1146*53ee8cc1Swenshuai.xi #endif  // _DRVTVENCODER_H
1147