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