xref: /utopia/UTPA2-700.0.x/modules/xc/api/ace/apiXC_Ace_EX.c (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 /// This file contains MStar ACE Application Interface.
98*53ee8cc1Swenshuai.xi /// brief API for Advanced Color Engine Control
99*53ee8cc1Swenshuai.xi /// author MStar Semiconductor, Inc.
100*53ee8cc1Swenshuai.xi //
101*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi #ifndef _API_XC_ACE_EX_C_
105*53ee8cc1Swenshuai.xi #define _API_XC_ACE_EX_C_
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi /******************************************************************************/
108*53ee8cc1Swenshuai.xi /*                    Header Files                                            */
109*53ee8cc1Swenshuai.xi /* ****************************************************************************/
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi // Need to remove
112*53ee8cc1Swenshuai.xi //#include "msAPI_Timer.h"
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi #include "apiXC_Ace_EX.h"
115*53ee8cc1Swenshuai.xi #include "MsIRQ.h"
116*53ee8cc1Swenshuai.xi #include "MsOS.h"
117*53ee8cc1Swenshuai.xi // Must have
118*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL
119*53ee8cc1Swenshuai.xi #include <linux/string.h>
120*53ee8cc1Swenshuai.xi #else
121*53ee8cc1Swenshuai.xi #include <string.h>
122*53ee8cc1Swenshuai.xi #endif
123*53ee8cc1Swenshuai.xi 
124*53ee8cc1Swenshuai.xi // Internal Definition
125*53ee8cc1Swenshuai.xi #include "drvMMIO.h"
126*53ee8cc1Swenshuai.xi #include "apiXC_Ace.h"
127*53ee8cc1Swenshuai.xi #include "drvACE.h"
128*53ee8cc1Swenshuai.xi #include "apiXC_Ace_v2.h"
129*53ee8cc1Swenshuai.xi #include "apiXC.h"
130*53ee8cc1Swenshuai.xi #include "mvideo_context.h"
131*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
132*53ee8cc1Swenshuai.xi //  Local Defines
133*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi /******************************************************************************/
136*53ee8cc1Swenshuai.xi /*                      Debug information                                      */
137*53ee8cc1Swenshuai.xi /******************************************************************************/
138*53ee8cc1Swenshuai.xi //#define XC_ACE_DBG  0
139*53ee8cc1Swenshuai.xi #define XC_ACE_MUTEX_DBG 0
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi // OS related
142*53ee8cc1Swenshuai.xi #define XC_ACE_WAIT_MUTEX              (TICK_PER_ONE_MS * 50)              // 50 ms
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi // Mutex & Lock
145*53ee8cc1Swenshuai.xi #if 0
146*53ee8cc1Swenshuai.xi static MS_S32 _s32XC_ACEMutex = -1;
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi #if XC_ACE_MUTEX_DBG
149*53ee8cc1Swenshuai.xi #define XC_ACE_ENTRY()      if(!MsOS_ObtainMutex(_s32XC_ACEMutex, MSOS_WAIT_FOREVER))                     \
150*53ee8cc1Swenshuai.xi                             {                                                                        \
151*53ee8cc1Swenshuai.xi                                 printf("==========================\n");                              \
152*53ee8cc1Swenshuai.xi                                 printf("[%s][%s][%06d] Mutex taking timeout\n",__FILE__,__FUNCTION__,__LINE__);    \
153*53ee8cc1Swenshuai.xi                             }
154*53ee8cc1Swenshuai.xi #else
155*53ee8cc1Swenshuai.xi #define XC_ACE_ENTRY()      if(!MsOS_ObtainMutex(_s32XC_ACEMutex, MSOS_WAIT_FOREVER))                     \
156*53ee8cc1Swenshuai.xi                             {                                                                        \
157*53ee8cc1Swenshuai.xi                             }
158*53ee8cc1Swenshuai.xi #endif
159*53ee8cc1Swenshuai.xi 
160*53ee8cc1Swenshuai.xi #define XC_ACE_RETURN()     MsOS_ReleaseMutex(_s32XC_ACEMutex);
161*53ee8cc1Swenshuai.xi #endif
162*53ee8cc1Swenshuai.xi 
163*53ee8cc1Swenshuai.xi static MSIF_Version _api_xc_ace_version = {
164*53ee8cc1Swenshuai.xi     .DDI = { XC_ACE_EX_API_VERSION },
165*53ee8cc1Swenshuai.xi };
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi extern void* pu32ACEInst;
168*53ee8cc1Swenshuai.xi extern void* pu32ACE_XCInst;
169*53ee8cc1Swenshuai.xi void* pu32ACEInst_1 = NULL;
170*53ee8cc1Swenshuai.xi void* pu32ACE_XCInst_1 = NULL;
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi //******************************************************************************
173*53ee8cc1Swenshuai.xi ///-initialize ACE
174*53ee8cc1Swenshuai.xi //*************************************************************************
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi // for Utopia 2.0 to Utopia 1.0 compatibility.
177*53ee8cc1Swenshuai.xi #include "ACE_private.h"
178*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
179*53ee8cc1Swenshuai.xi #include "utopia.h"
180*53ee8cc1Swenshuai.xi 
181*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
182*53ee8cc1Swenshuai.xi //  Local Functions
183*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi #if 0
187*53ee8cc1Swenshuai.xi static E_XC_ACE_EX_RESULT _ACE_Map_Result(E_XC_ACE_RESULT eRet)
188*53ee8cc1Swenshuai.xi {
189*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_RESULT eExRet = E_XC_ACE_EX_FAIL;
190*53ee8cc1Swenshuai.xi     const E_XC_ACE_EX_RESULT eEXRetMapTable[E_XC_ACE_EX_OBTAIN_MUTEX_FAIL+1] =
191*53ee8cc1Swenshuai.xi     {
192*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_FAIL,
193*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_OK,
194*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_GET_BASEADDR_FAIL,
195*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_OBTAIN_MUTEX_FAIL,
196*53ee8cc1Swenshuai.xi     };
197*53ee8cc1Swenshuai.xi 
198*53ee8cc1Swenshuai.xi     if (eRet <= E_XC_ACE_OBTAIN_RESOURCE_FAIL)
199*53ee8cc1Swenshuai.xi     {
200*53ee8cc1Swenshuai.xi         eExRet = eEXRetMapTable[eRet];
201*53ee8cc1Swenshuai.xi     }
202*53ee8cc1Swenshuai.xi     return eExRet;
203*53ee8cc1Swenshuai.xi }
204*53ee8cc1Swenshuai.xi 
205*53ee8cc1Swenshuai.xi static XC_ACE_IHC_COLOR_TYPE _ACE_Map_EX_IHC(XC_ACE_EX_IHC_COLOR_TYPE eEXIHC)
206*53ee8cc1Swenshuai.xi {
207*53ee8cc1Swenshuai.xi     XC_ACE_IHC_COLOR_TYPE eIHC = E_ACE_IHC_COLOR_MAX;
208*53ee8cc1Swenshuai.xi     const XC_ACE_IHC_COLOR_TYPE eIHCMapTable[E_ACE_IHC_COLOR_MAX] =
209*53ee8cc1Swenshuai.xi     {
210*53ee8cc1Swenshuai.xi         E_ACE_IHC_COLOR_R,
211*53ee8cc1Swenshuai.xi         E_ACE_IHC_COLOR_G,
212*53ee8cc1Swenshuai.xi         E_ACE_IHC_COLOR_B,
213*53ee8cc1Swenshuai.xi         E_ACE_IHC_COLOR_C,
214*53ee8cc1Swenshuai.xi         E_ACE_IHC_COLOR_M,
215*53ee8cc1Swenshuai.xi         E_ACE_IHC_COLOR_Y,
216*53ee8cc1Swenshuai.xi         E_ACE_IHC_COLOR_F,
217*53ee8cc1Swenshuai.xi     };
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi     if (eEXIHC < E_ACE_EX_IHC_COLOR_MAX)
220*53ee8cc1Swenshuai.xi     {
221*53ee8cc1Swenshuai.xi         eIHC = eIHCMapTable[eEXIHC];
222*53ee8cc1Swenshuai.xi     }
223*53ee8cc1Swenshuai.xi     return eIHC;
224*53ee8cc1Swenshuai.xi }
225*53ee8cc1Swenshuai.xi #endif //temp remove
226*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_InfoType(E_XC_ACE_EX_INFOTYPE eExInfoType)227*53ee8cc1Swenshuai.xi static E_XC_ACE_INFOTYPE _ACE_Map_EX_InfoType(E_XC_ACE_EX_INFOTYPE eExInfoType)
228*53ee8cc1Swenshuai.xi {
229*53ee8cc1Swenshuai.xi     E_XC_ACE_INFOTYPE eInfoType = E_XC_ACE_INFO_TYPE_DUMMY;
230*53ee8cc1Swenshuai.xi     const E_XC_ACE_INFOTYPE eInfoTypeMapTable[E_XC_ACE_INFO_TYPE_DUMMY] =
231*53ee8cc1Swenshuai.xi     {
232*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_VERSION,
233*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_CONTRAST,
234*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_R_GAIN,
235*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_G_GAIN,
236*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_B_GAIN,
237*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_SATURATION,
238*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_HUE,
239*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_COLOR_CORRECTION_XY_R,
240*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_COLOR_CORRECTION_XY_G,
241*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_COLOR_CORRECTION_XY_B,
242*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_R,
243*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_G,
244*53ee8cc1Swenshuai.xi         E_XC_ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_B,
245*53ee8cc1Swenshuai.xi         //E_XC_ACE_INFO_TYPE_BRIGHTNESS_R,
246*53ee8cc1Swenshuai.xi         //E_XC_ACE_INFO_TYPE_BRIGHTNESS_G,
247*53ee8cc1Swenshuai.xi         //E_XC_ACE_INFO_TYPE_BRIGHTNESS_B,
248*53ee8cc1Swenshuai.xi     };
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi     if (eExInfoType < E_XC_ACE_EX_INFO_TYPE_DUMMY)
251*53ee8cc1Swenshuai.xi     {
252*53ee8cc1Swenshuai.xi         eInfoType = eInfoTypeMapTable[eExInfoType];
253*53ee8cc1Swenshuai.xi     }
254*53ee8cc1Swenshuai.xi     return eInfoType;
255*53ee8cc1Swenshuai.xi }
256*53ee8cc1Swenshuai.xi 
257*53ee8cc1Swenshuai.xi #if 0  //Fucntion 'MApi_XC_ACE_MWESetMirrorMode' is not in header file
258*53ee8cc1Swenshuai.xi static E_XC_ACE_EX_MWE_MIRROR_TYPE _ACE_Map_EX_MirrorType(E_XC_ACE_MWE_MIRROR_TYPE eMirrorMode)
259*53ee8cc1Swenshuai.xi {
260*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MIRROR_TYPE eEXMirrorMode = E_XC_ACE_EX_MWE_MIRROR_MAX;
261*53ee8cc1Swenshuai.xi     const E_XC_ACE_EX_MWE_MIRROR_TYPE eEXMirrorModeMapTable[E_XC_ACE_EX_MWE_MIRROR_MAX] =
262*53ee8cc1Swenshuai.xi     {
263*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_MWE_MIRROR_NORMAL,
264*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_MWE_MIRROR_H_ONLY,
265*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_MWE_MIRROR_V_ONLY,
266*53ee8cc1Swenshuai.xi         E_XC_ACE_EX_MWE_MIRROR_HV,
267*53ee8cc1Swenshuai.xi     };
268*53ee8cc1Swenshuai.xi 
269*53ee8cc1Swenshuai.xi     if (eMirrorMode < E_XC_ACE_MWE_MIRROR_MAX)
270*53ee8cc1Swenshuai.xi     {
271*53ee8cc1Swenshuai.xi         eEXMirrorMode = eEXMirrorModeMapTable[eMirrorMode];
272*53ee8cc1Swenshuai.xi     }
273*53ee8cc1Swenshuai.xi     return eEXMirrorMode;
274*53ee8cc1Swenshuai.xi }
275*53ee8cc1Swenshuai.xi #endif
276*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_WeaveType(XC_ACE_EX_WEAVETYPE eEXWeaveType)277*53ee8cc1Swenshuai.xi static XC_ACE_WEAVETYPE _ACE_Map_EX_WeaveType(XC_ACE_EX_WEAVETYPE eEXWeaveType)
278*53ee8cc1Swenshuai.xi {
279*53ee8cc1Swenshuai.xi     XC_ACE_WEAVETYPE eWeaveType = E_ACE_WEAVETYPE_NUM;
280*53ee8cc1Swenshuai.xi     const XC_ACE_WEAVETYPE eWeaveTypeMapTable[E_ACE_WEAVETYPE_NUM] =
281*53ee8cc1Swenshuai.xi     {
282*53ee8cc1Swenshuai.xi         E_ACE_WEAVETYPE_NONE,
283*53ee8cc1Swenshuai.xi         E_ACE_WEAVETYPE_H,
284*53ee8cc1Swenshuai.xi         E_ACE_WEAVETYPE_V,
285*53ee8cc1Swenshuai.xi         E_ACE_WEAVETYPE_DUALVIEW,
286*53ee8cc1Swenshuai.xi     };
287*53ee8cc1Swenshuai.xi 
288*53ee8cc1Swenshuai.xi     if (eEXWeaveType < E_ACE_EX_WEAVETYPE_NUM)
289*53ee8cc1Swenshuai.xi     {
290*53ee8cc1Swenshuai.xi         eWeaveType = eWeaveTypeMapTable[eEXWeaveType];
291*53ee8cc1Swenshuai.xi     }
292*53ee8cc1Swenshuai.xi     return eWeaveType;
293*53ee8cc1Swenshuai.xi }
294*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_MWEFunc(E_XC_ACE_EX_MWE_FUNC eEXMWEFunc)295*53ee8cc1Swenshuai.xi static E_XC_ACE_MWE_FUNC _ACE_Map_EX_MWEFunc(E_XC_ACE_EX_MWE_FUNC eEXMWEFunc)
296*53ee8cc1Swenshuai.xi {
297*53ee8cc1Swenshuai.xi     E_XC_ACE_MWE_FUNC eMWEFunc = E_XC_ACE_MWE_MODE_NUMS;
298*53ee8cc1Swenshuai.xi     const E_XC_ACE_MWE_FUNC eMWEFuncMapTable[E_XC_ACE_MWE_MODE_NUMS] =
299*53ee8cc1Swenshuai.xi     {
300*53ee8cc1Swenshuai.xi         E_XC_ACE_MWE_MODE_OFF,
301*53ee8cc1Swenshuai.xi         E_XC_ACE_MWE_MODE_H_SPLIT,
302*53ee8cc1Swenshuai.xi         E_XC_ACE_MWE_MODE_MOVE,
303*53ee8cc1Swenshuai.xi         E_XC_ACE_MWE_MODE_ZOOM,
304*53ee8cc1Swenshuai.xi         E_XC_ACE_MWE_MODE_H_SCAN,
305*53ee8cc1Swenshuai.xi         E_XC_ACE_MWE_MODE_H_SPLIT_LEFT,
306*53ee8cc1Swenshuai.xi     };
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi     if (eEXMWEFunc < E_XC_ACE_EX_MWE_MODE_NUMS)
309*53ee8cc1Swenshuai.xi     {
310*53ee8cc1Swenshuai.xi         eMWEFunc = eMWEFuncMapTable[eEXMWEFunc];
311*53ee8cc1Swenshuai.xi     }
312*53ee8cc1Swenshuai.xi     return eMWEFunc;
313*53ee8cc1Swenshuai.xi }
314*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_DNRParam(XC_ACE_EX_DNR_Param eEXDNRParam)315*53ee8cc1Swenshuai.xi static XC_ACE_DNR_Param _ACE_Map_EX_DNRParam(XC_ACE_EX_DNR_Param eEXDNRParam)
316*53ee8cc1Swenshuai.xi {
317*53ee8cc1Swenshuai.xi     XC_ACE_DNR_Param eDNRParam = E_ACE_DNR_NR_ONOFF;
318*53ee8cc1Swenshuai.xi     const XC_ACE_DNR_Param eDNRParamMapTable[E_ACE_DNR_SNR_NM+1] =
319*53ee8cc1Swenshuai.xi     {
320*53ee8cc1Swenshuai.xi         E_ACE_DNR_NR_ONOFF,
321*53ee8cc1Swenshuai.xi         E_ACE_DNR_SNR,
322*53ee8cc1Swenshuai.xi         E_ACE_DNR_SPIKE_NR_0,
323*53ee8cc1Swenshuai.xi         E_ACE_DNR_SPIKE_NR_1,
324*53ee8cc1Swenshuai.xi         E_ACE_DNR_GRAY_GROUND_GAIN,
325*53ee8cc1Swenshuai.xi         E_ACE_DNR_GRAY_GROUND_EN,
326*53ee8cc1Swenshuai.xi         E_ACE_DNR_PEAKING_BANK_CORING,
327*53ee8cc1Swenshuai.xi         E_ACE_DNR_GUASSIN_SNR_THRESHOLD,
328*53ee8cc1Swenshuai.xi         E_ACE_DNR_MOTION,
329*53ee8cc1Swenshuai.xi         E_ACE_DNR_PEAKING_CORING_THRESHOLD,
330*53ee8cc1Swenshuai.xi         E_ACE_DNR_SHARPNESS_ADJUST,
331*53ee8cc1Swenshuai.xi         E_ACE_DNR_NM_V,
332*53ee8cc1Swenshuai.xi         E_ACE_DNR_GNR_0,
333*53ee8cc1Swenshuai.xi         E_ACE_DNR_GNR_1,
334*53ee8cc1Swenshuai.xi         E_ACE_DNR_CP,
335*53ee8cc1Swenshuai.xi         E_ACE_DNR_DP,
336*53ee8cc1Swenshuai.xi         E_ACE_DNR_NM_H_0,
337*53ee8cc1Swenshuai.xi         E_ACE_DNR_NM_H_1,
338*53ee8cc1Swenshuai.xi         E_ACE_DNR_SC_CORING,
339*53ee8cc1Swenshuai.xi         E_ACE_DNR_SNR_NM,
340*53ee8cc1Swenshuai.xi     };
341*53ee8cc1Swenshuai.xi 
342*53ee8cc1Swenshuai.xi     if (eEXDNRParam <= E_ACE_EX_DNR_SNR_NM)
343*53ee8cc1Swenshuai.xi     {
344*53ee8cc1Swenshuai.xi         eDNRParam = eDNRParamMapTable[eEXDNRParam];
345*53ee8cc1Swenshuai.xi     }
346*53ee8cc1Swenshuai.xi     return eDNRParam;
347*53ee8cc1Swenshuai.xi }
348*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_InitData(XC_ACE_InitData * pstInitData,XC_ACE_EX_InitData * pstExInitData)349*53ee8cc1Swenshuai.xi static MS_BOOL _ACE_Map_EX_InitData(XC_ACE_InitData *pstInitData, XC_ACE_EX_InitData* pstExInitData)
350*53ee8cc1Swenshuai.xi {
351*53ee8cc1Swenshuai.xi     pstInitData->bMWE_Enable = pstExInitData->bMWE_Enable;
352*53ee8cc1Swenshuai.xi     pstInitData->eWindow = pstExInitData->eWindow;
353*53ee8cc1Swenshuai.xi     //below pointer is null pointer, can not do memcpy
354*53ee8cc1Swenshuai.xi     //memcpy(pstInitData->S16ColorCorrectionMatrix,pstExInitData->S16ColorCorrectionMatrix,32);
355*53ee8cc1Swenshuai.xi     //memcpy(pstInitData->S16RGB,pstExInitData->S16RGB,9);
356*53ee8cc1Swenshuai.xi     pstInitData->S16ColorCorrectionMatrix = pstExInitData->S16ColorCorrectionMatrix;
357*53ee8cc1Swenshuai.xi     pstInitData->S16RGB = pstExInitData->S16RGB;
358*53ee8cc1Swenshuai.xi     pstInitData->u16MWEHeight = pstExInitData->u16MWEHeight;
359*53ee8cc1Swenshuai.xi     pstInitData->u16MWEHstart = pstExInitData->u16MWEHstart;
360*53ee8cc1Swenshuai.xi     pstInitData->u16MWEVstart = pstExInitData->u16MWEVstart;
361*53ee8cc1Swenshuai.xi     pstInitData->u16MWEWidth = pstExInitData->u16MWEWidth;
362*53ee8cc1Swenshuai.xi     pstInitData->u16MWE_Disp_Height = pstExInitData->u16MWE_Disp_Height;
363*53ee8cc1Swenshuai.xi     pstInitData->u16MWE_Disp_Hstart = pstExInitData->u16MWE_Disp_Hstart;
364*53ee8cc1Swenshuai.xi     pstInitData->u16MWE_Disp_Vstart = pstExInitData->u16MWE_Disp_Vstart;
365*53ee8cc1Swenshuai.xi     pstInitData->u16MWE_Disp_Width = pstExInitData->u16MWE_Disp_Width;
366*53ee8cc1Swenshuai.xi     return TRUE;
367*53ee8cc1Swenshuai.xi }
368*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_InfoEX(XC_ACE_InfoEx * pInfoEx,XC_ACE_EX_InfoEx * pEXInfoEx)369*53ee8cc1Swenshuai.xi static void _ACE_Map_EX_InfoEX(XC_ACE_InfoEx *pInfoEx, XC_ACE_EX_InfoEx *pEXInfoEx)
370*53ee8cc1Swenshuai.xi {
371*53ee8cc1Swenshuai.xi     pEXInfoEx->u32Mode = pInfoEx->u32Mode;
372*53ee8cc1Swenshuai.xi     pEXInfoEx->u32Reserved = pInfoEx->u32Reserved;
373*53ee8cc1Swenshuai.xi }
374*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_ColorTemp(XC_ACE_color_temp * pColorTemp,XC_ACE_EX_color_temp * pEXColorTemp)375*53ee8cc1Swenshuai.xi static void _ACE_Map_EX_ColorTemp(XC_ACE_color_temp *pColorTemp, XC_ACE_EX_color_temp *pEXColorTemp)
376*53ee8cc1Swenshuai.xi {
377*53ee8cc1Swenshuai.xi     pColorTemp->cBlueColor = pEXColorTemp->cBlueColor;
378*53ee8cc1Swenshuai.xi     pColorTemp->cBlueOffset = pEXColorTemp->cBlueOffset;
379*53ee8cc1Swenshuai.xi     pColorTemp->cBlueScaleValue = pEXColorTemp->cBlueScaleValue;
380*53ee8cc1Swenshuai.xi     pColorTemp->cGreenColor = pEXColorTemp->cGreenColor;
381*53ee8cc1Swenshuai.xi     pColorTemp->cGreenOffset = pEXColorTemp->cGreenOffset;
382*53ee8cc1Swenshuai.xi     pColorTemp->cGreenScaleValue = pEXColorTemp->cGreenScaleValue;
383*53ee8cc1Swenshuai.xi     pColorTemp->cRedColor = pEXColorTemp->cRedColor;
384*53ee8cc1Swenshuai.xi     pColorTemp->cRedOffset = pEXColorTemp->cRedOffset;
385*53ee8cc1Swenshuai.xi     pColorTemp->cRedScaleValue = pEXColorTemp->cRedScaleValue;
386*53ee8cc1Swenshuai.xi }
387*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_ColorTempEX(XC_ACE_color_temp_ex * pColorTemp,XC_ACE_EX_color_temp_ex * pEXColorTemp)388*53ee8cc1Swenshuai.xi static void _ACE_Map_EX_ColorTempEX(XC_ACE_color_temp_ex *pColorTemp, XC_ACE_EX_color_temp_ex *pEXColorTemp)
389*53ee8cc1Swenshuai.xi {
390*53ee8cc1Swenshuai.xi     pColorTemp->cBlueColor = pEXColorTemp->cBlueColor;
391*53ee8cc1Swenshuai.xi     pColorTemp->cBlueOffset = pEXColorTemp->cBlueOffset;
392*53ee8cc1Swenshuai.xi     pColorTemp->cBlueScaleValue = pEXColorTemp->cBlueScaleValue;
393*53ee8cc1Swenshuai.xi     pColorTemp->cGreenColor = pEXColorTemp->cGreenColor;
394*53ee8cc1Swenshuai.xi     pColorTemp->cGreenOffset = pEXColorTemp->cGreenOffset;
395*53ee8cc1Swenshuai.xi     pColorTemp->cGreenScaleValue = pEXColorTemp->cGreenScaleValue;
396*53ee8cc1Swenshuai.xi     pColorTemp->cRedColor = pEXColorTemp->cRedColor;
397*53ee8cc1Swenshuai.xi     pColorTemp->cRedOffset = pEXColorTemp->cRedOffset;
398*53ee8cc1Swenshuai.xi     pColorTemp->cRedScaleValue = pEXColorTemp->cRedScaleValue;
399*53ee8cc1Swenshuai.xi }
400*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_ColorTempEX2(XC_ACE_color_temp_ex2 * pColorTemp,XC_ACE_EX_color_temp_ex2 * pEXColorTemp)401*53ee8cc1Swenshuai.xi static void _ACE_Map_EX_ColorTempEX2(XC_ACE_color_temp_ex2 *pColorTemp, XC_ACE_EX_color_temp_ex2 *pEXColorTemp)
402*53ee8cc1Swenshuai.xi {
403*53ee8cc1Swenshuai.xi     pColorTemp->cBlueColor = pEXColorTemp->cBlueColor;
404*53ee8cc1Swenshuai.xi     pColorTemp->cBlueOffset = pEXColorTemp->cBlueOffset;
405*53ee8cc1Swenshuai.xi     pColorTemp->cBlueScaleValue = pEXColorTemp->cBlueScaleValue;
406*53ee8cc1Swenshuai.xi     pColorTemp->cGreenColor = pEXColorTemp->cGreenColor;
407*53ee8cc1Swenshuai.xi     pColorTemp->cGreenOffset = pEXColorTemp->cGreenOffset;
408*53ee8cc1Swenshuai.xi     pColorTemp->cGreenScaleValue = pEXColorTemp->cGreenScaleValue;
409*53ee8cc1Swenshuai.xi     pColorTemp->cRedColor = pEXColorTemp->cRedColor;
410*53ee8cc1Swenshuai.xi     pColorTemp->cRedOffset = pEXColorTemp->cRedOffset;
411*53ee8cc1Swenshuai.xi     pColorTemp->cRedScaleValue = pEXColorTemp->cRedScaleValue;
412*53ee8cc1Swenshuai.xi }
413*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_ApiStaus(XC_ACE_ApiStatus * pApiStatus,XC_ACE_EX_ApiStatus * pEXApiStatus)414*53ee8cc1Swenshuai.xi static void _ACE_Map_EX_ApiStaus(XC_ACE_ApiStatus *pApiStatus, XC_ACE_EX_ApiStatus *pEXApiStatus)
415*53ee8cc1Swenshuai.xi {
416*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.bMWE_Enable = pApiStatus->ACEinit.bMWE_Enable;
417*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.eWindow = pApiStatus->ACEinit.eWindow;
418*53ee8cc1Swenshuai.xi     memcpy(pEXApiStatus->ACEinit.S16ColorCorrectionMatrix,pApiStatus->ACEinit.S16ColorCorrectionMatrix,32);
419*53ee8cc1Swenshuai.xi     memcpy(pEXApiStatus->ACEinit.S16RGB,pApiStatus->ACEinit.S16RGB,9);
420*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWEHeight = pApiStatus->ACEinit.u16MWEHeight;
421*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWEHstart = pApiStatus->ACEinit.u16MWEHstart;
422*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWEVstart = pApiStatus->ACEinit.u16MWEVstart;
423*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWEWidth = pApiStatus->ACEinit.u16MWEWidth;
424*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWE_Disp_Height = pApiStatus->ACEinit.u16MWE_Disp_Height;
425*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWE_Disp_Hstart = pApiStatus->ACEinit.u16MWE_Disp_Hstart;
426*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWE_Disp_Vstart = pApiStatus->ACEinit.u16MWE_Disp_Vstart;
427*53ee8cc1Swenshuai.xi     pEXApiStatus->ACEinit.u16MWE_Disp_Width = pApiStatus->ACEinit.u16MWE_Disp_Width;
428*53ee8cc1Swenshuai.xi }
429*53ee8cc1Swenshuai.xi 
_ACE_Map_EX_TABInfo(XC_ACE_TAB_Info * pMWETable,XC_ACE_EX_TAB_Info * pEXMWETable)430*53ee8cc1Swenshuai.xi static void _ACE_Map_EX_TABInfo(XC_ACE_TAB_Info *pMWETable, XC_ACE_EX_TAB_Info *pEXMWETable)
431*53ee8cc1Swenshuai.xi {
432*53ee8cc1Swenshuai.xi     pMWETable->pTable = pEXMWETable->pTable;
433*53ee8cc1Swenshuai.xi     pMWETable->u32ACE_TabInfo_version = pEXMWETable->u32ACE_TabInfo_version;
434*53ee8cc1Swenshuai.xi     pMWETable->u8TabCols = pEXMWETable->u8TabCols;
435*53ee8cc1Swenshuai.xi     pMWETable->u8TabIdx = pEXMWETable->u8TabIdx;
436*53ee8cc1Swenshuai.xi     pMWETable->u8TabRows = pEXMWETable->u8TabRows;
437*53ee8cc1Swenshuai.xi }
438*53ee8cc1Swenshuai.xi 
439*53ee8cc1Swenshuai.xi #if 0
440*53ee8cc1Swenshuai.xi void* _ACE_SELECT_INSTANCE(MS_U32 u32Id)
441*53ee8cc1Swenshuai.xi {
442*53ee8cc1Swenshuai.xi     switch(u32Id)
443*53ee8cc1Swenshuai.xi     {
444*53ee8cc1Swenshuai.xi         case 1:
445*53ee8cc1Swenshuai.xi             return pu32ACEInst_1;
446*53ee8cc1Swenshuai.xi         case 0:
447*53ee8cc1Swenshuai.xi         default:
448*53ee8cc1Swenshuai.xi             return pu32ACEInst;
449*53ee8cc1Swenshuai.xi     }
450*53ee8cc1Swenshuai.xi }
451*53ee8cc1Swenshuai.xi #else
452*53ee8cc1Swenshuai.xi #define _ACE_SELECT_INSTANCE(u32Id) ((u32Id == 0)? pu32ACEInst : pu32ACEInst_1)
453*53ee8cc1Swenshuai.xi #endif
454*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_Init(XC_ACE_DeviceId * pDeviceId,XC_ACE_EX_InitData * pstXC_ACE_InitData,MS_U32 u32InitDataLen)455*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_Init(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_InitData *pstXC_ACE_InitData, MS_U32 u32InitDataLen)
456*53ee8cc1Swenshuai.xi {
457*53ee8cc1Swenshuai.xi     XC_INSTANT_ATTRIBUTE stXCInstantAttribute;
458*53ee8cc1Swenshuai.xi     memset(&stXCInstantAttribute, 0, sizeof(stXCInstantAttribute));
459*53ee8cc1Swenshuai.xi     stXCInstantAttribute.u32DeviceID = 0;
460*53ee8cc1Swenshuai.xi     stXCInstantAttribute.eXCType     = E_XC_INSTANT_TYPE_ACE;
461*53ee8cc1Swenshuai.xi 
462*53ee8cc1Swenshuai.xi     if (pDeviceId->u32Id == 0 && pu32ACEInst == NULL)
463*53ee8cc1Swenshuai.xi     {
464*53ee8cc1Swenshuai.xi         if(UtopiaOpen(MODULE_ACE, &pu32ACEInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
465*53ee8cc1Swenshuai.xi         {
466*53ee8cc1Swenshuai.xi             printf("UtopiaOpen ACE failed\n");
467*53ee8cc1Swenshuai.xi             return E_XC_ACE_FAIL;
468*53ee8cc1Swenshuai.xi         }
469*53ee8cc1Swenshuai.xi 
470*53ee8cc1Swenshuai.xi     }
471*53ee8cc1Swenshuai.xi     else if(pDeviceId->u32Id == 1 && pu32ACEInst_1 == NULL)
472*53ee8cc1Swenshuai.xi     {
473*53ee8cc1Swenshuai.xi         MS_U32 u32ID = pDeviceId->u32Id;
474*53ee8cc1Swenshuai.xi         if(UtopiaOpen(MODULE_ACE, &pu32ACEInst_1, 0, &u32ID) != UTOPIA_STATUS_SUCCESS)
475*53ee8cc1Swenshuai.xi         {
476*53ee8cc1Swenshuai.xi             printf("UtopiaOpen ACE failed\n");
477*53ee8cc1Swenshuai.xi             return E_XC_ACE_FAIL;
478*53ee8cc1Swenshuai.xi         }
479*53ee8cc1Swenshuai.xi 
480*53ee8cc1Swenshuai.xi     }
481*53ee8cc1Swenshuai.xi     else if(pDeviceId->u32Id > 1)
482*53ee8cc1Swenshuai.xi     {
483*53ee8cc1Swenshuai.xi         printf("Device Id over 2\n");
484*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
485*53ee8cc1Swenshuai.xi     }
486*53ee8cc1Swenshuai.xi     else
487*53ee8cc1Swenshuai.xi     {
488*53ee8cc1Swenshuai.xi         printf("Device %td has initialized\n",(ptrdiff_t)pDeviceId->u32Id);
489*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
490*53ee8cc1Swenshuai.xi     }
491*53ee8cc1Swenshuai.xi 
492*53ee8cc1Swenshuai.xi 
493*53ee8cc1Swenshuai.xi     if (pDeviceId->u32Id == 0 && pu32ACE_XCInst == NULL)
494*53ee8cc1Swenshuai.xi     {
495*53ee8cc1Swenshuai.xi 
496*53ee8cc1Swenshuai.xi         if(UtopiaOpen(MODULE_XC, &pu32ACE_XCInst, 0, &stXCInstantAttribute) != UTOPIA_STATUS_SUCCESS)
497*53ee8cc1Swenshuai.xi         {
498*53ee8cc1Swenshuai.xi             printf("UtopiaOpen pu32ACE_XCInst failed\n");
499*53ee8cc1Swenshuai.xi             return E_XC_ACE_FAIL;
500*53ee8cc1Swenshuai.xi         }
501*53ee8cc1Swenshuai.xi 
502*53ee8cc1Swenshuai.xi     }
503*53ee8cc1Swenshuai.xi     else if(pDeviceId->u32Id == 1 && pu32ACE_XCInst_1 == NULL)
504*53ee8cc1Swenshuai.xi     {
505*53ee8cc1Swenshuai.xi         stXCInstantAttribute.u32DeviceID = 1;
506*53ee8cc1Swenshuai.xi         if(UtopiaOpen(MODULE_XC, &pu32ACE_XCInst_1, 0, &stXCInstantAttribute) != UTOPIA_STATUS_SUCCESS)
507*53ee8cc1Swenshuai.xi         {
508*53ee8cc1Swenshuai.xi             printf("UtopiaOpen pu32ACE_XCInst failed\n");
509*53ee8cc1Swenshuai.xi             return E_XC_ACE_FAIL;
510*53ee8cc1Swenshuai.xi         }
511*53ee8cc1Swenshuai.xi     }
512*53ee8cc1Swenshuai.xi     else if(pDeviceId->u32Id > 1)
513*53ee8cc1Swenshuai.xi     {
514*53ee8cc1Swenshuai.xi         printf("Device Id over 2\n");
515*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
516*53ee8cc1Swenshuai.xi     }
517*53ee8cc1Swenshuai.xi     else
518*53ee8cc1Swenshuai.xi     {
519*53ee8cc1Swenshuai.xi         printf("Device %td has initialized\n",(ptrdiff_t)pDeviceId->u32Id);
520*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
521*53ee8cc1Swenshuai.xi     }
522*53ee8cc1Swenshuai.xi 
523*53ee8cc1Swenshuai.xi 
524*53ee8cc1Swenshuai.xi     stACE_Init ACEArgs;
525*53ee8cc1Swenshuai.xi     XC_ACE_InitData stXC_ACE_InitData;
526*53ee8cc1Swenshuai.xi     memset(&stXC_ACE_InitData,0,sizeof(stXC_ACE_InitData));
527*53ee8cc1Swenshuai.xi     ACEArgs.pstXC_ACE_InitData = &stXC_ACE_InitData;
528*53ee8cc1Swenshuai.xi     _ACE_Map_EX_InitData(ACEArgs.pstXC_ACE_InitData,pstXC_ACE_InitData);
529*53ee8cc1Swenshuai.xi     ACEArgs.u32InitDataLen = u32InitDataLen;
530*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
531*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_INIT, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
532*53ee8cc1Swenshuai.xi     {
533*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
534*53ee8cc1Swenshuai.xi         return FALSE;
535*53ee8cc1Swenshuai.xi     }
536*53ee8cc1Swenshuai.xi     else
537*53ee8cc1Swenshuai.xi     {
538*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
539*53ee8cc1Swenshuai.xi     }
540*53ee8cc1Swenshuai.xi }
541*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_Exit(XC_ACE_DeviceId * pDeviceId)542*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_Exit(XC_ACE_DeviceId *pDeviceId)
543*53ee8cc1Swenshuai.xi {
544*53ee8cc1Swenshuai.xi     if (pDeviceId->u32Id == 0 && pu32ACEInst == NULL)
545*53ee8cc1Swenshuai.xi     {
546*53ee8cc1Swenshuai.xi         printf("ACE not initialized!\n");
547*53ee8cc1Swenshuai.xi         return FALSE;
548*53ee8cc1Swenshuai.xi     }
549*53ee8cc1Swenshuai.xi     if (pDeviceId->u32Id == 1 && pu32ACEInst_1 == NULL)
550*53ee8cc1Swenshuai.xi     {
551*53ee8cc1Swenshuai.xi         printf("ACE not initialized!\n");
552*53ee8cc1Swenshuai.xi         return FALSE;
553*53ee8cc1Swenshuai.xi     }
554*53ee8cc1Swenshuai.xi 
555*53ee8cc1Swenshuai.xi     stACE_Exit ACEArgs;
556*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
557*53ee8cc1Swenshuai.xi     if(UtopiaIoctl((pDeviceId->u32Id == 0)? pu32ACEInst : pu32ACEInst_1, E_ACE_CMD_EXIT, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
558*53ee8cc1Swenshuai.xi     {
559*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
560*53ee8cc1Swenshuai.xi         ACEArgs.bReturn = FALSE;
561*53ee8cc1Swenshuai.xi     }
562*53ee8cc1Swenshuai.xi 
563*53ee8cc1Swenshuai.xi     if(UtopiaClose((pDeviceId->u32Id == 0)? pu32ACEInst : pu32ACEInst_1) != UTOPIA_STATUS_SUCCESS)
564*53ee8cc1Swenshuai.xi     {
565*53ee8cc1Swenshuai.xi         printf("UtopiaClose ACE failed\n");
566*53ee8cc1Swenshuai.xi         return FALSE;
567*53ee8cc1Swenshuai.xi     }
568*53ee8cc1Swenshuai.xi     if(pDeviceId->u32Id == 0)
569*53ee8cc1Swenshuai.xi     {
570*53ee8cc1Swenshuai.xi         pu32ACEInst = NULL;
571*53ee8cc1Swenshuai.xi     }
572*53ee8cc1Swenshuai.xi     else
573*53ee8cc1Swenshuai.xi     {
574*53ee8cc1Swenshuai.xi         pu32ACEInst_1 = NULL;
575*53ee8cc1Swenshuai.xi     }
576*53ee8cc1Swenshuai.xi 
577*53ee8cc1Swenshuai.xi     if(UtopiaClose((pDeviceId->u32Id == 0)? pu32ACE_XCInst : pu32ACE_XCInst_1) != UTOPIA_STATUS_SUCCESS)
578*53ee8cc1Swenshuai.xi     {
579*53ee8cc1Swenshuai.xi         printf("UtopiaClose ACE failed\n");
580*53ee8cc1Swenshuai.xi         return FALSE;
581*53ee8cc1Swenshuai.xi     }
582*53ee8cc1Swenshuai.xi     if(pDeviceId->u32Id == 0)
583*53ee8cc1Swenshuai.xi     {
584*53ee8cc1Swenshuai.xi         pu32ACE_XCInst = NULL;
585*53ee8cc1Swenshuai.xi     }
586*53ee8cc1Swenshuai.xi     else
587*53ee8cc1Swenshuai.xi     {
588*53ee8cc1Swenshuai.xi         pu32ACE_XCInst_1 = NULL;
589*53ee8cc1Swenshuai.xi     }
590*53ee8cc1Swenshuai.xi 
591*53ee8cc1Swenshuai.xi 
592*53ee8cc1Swenshuai.xi     return ACEArgs.bReturn;
593*53ee8cc1Swenshuai.xi 
594*53ee8cc1Swenshuai.xi }
595*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DMS(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bisATV)596*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_DMS(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bisATV)
597*53ee8cc1Swenshuai.xi {
598*53ee8cc1Swenshuai.xi     stACE_DMS ACEArgs;
599*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
600*53ee8cc1Swenshuai.xi     ACEArgs.bisATV = bisATV;
601*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DMS, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
602*53ee8cc1Swenshuai.xi     {
603*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
604*53ee8cc1Swenshuai.xi     }
605*53ee8cc1Swenshuai.xi     return;
606*53ee8cc1Swenshuai.xi 
607*53ee8cc1Swenshuai.xi }
608*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetPCYUV2RGB(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bEnable)609*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetPCYUV2RGB(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bEnable)
610*53ee8cc1Swenshuai.xi {
611*53ee8cc1Swenshuai.xi     stACE_SetPCYUV2RGB ACEArgs;
612*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
613*53ee8cc1Swenshuai.xi     ACEArgs.bEnable = bEnable;
614*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETPCYUV2RGB, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
615*53ee8cc1Swenshuai.xi     {
616*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
617*53ee8cc1Swenshuai.xi     }
618*53ee8cc1Swenshuai.xi     return;
619*53ee8cc1Swenshuai.xi }
620*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SelectYUVtoRGBMatrix(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U8 ucMatrix,MS_S16 * psUserYUVtoRGBMatrix)621*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SelectYUVtoRGBMatrix(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 ucMatrix, MS_S16* psUserYUVtoRGBMatrix)
622*53ee8cc1Swenshuai.xi {
623*53ee8cc1Swenshuai.xi     stACE_SelectYUVtoRGBMatrix ACEArgs;
624*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
625*53ee8cc1Swenshuai.xi     ACEArgs.ucMatrix = ucMatrix;
626*53ee8cc1Swenshuai.xi     ACEArgs.psUserYUVtoRGBMatrix = psUserYUVtoRGBMatrix;
627*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SELECTYUVTORGBMATRIX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
628*53ee8cc1Swenshuai.xi     {
629*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
630*53ee8cc1Swenshuai.xi     }
631*53ee8cc1Swenshuai.xi     return;
632*53ee8cc1Swenshuai.xi }
633*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetColorCorrectionTable(XC_ACE_DeviceId * pDeviceId,MS_BOOL bScalerWin)634*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetColorCorrectionTable( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin)
635*53ee8cc1Swenshuai.xi {
636*53ee8cc1Swenshuai.xi     stACE_SetColorCorrectionTable ACEArgs;
637*53ee8cc1Swenshuai.xi     ACEArgs.bScalerWin = bScalerWin;
638*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETCOLORCORRECTIONTABLE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
639*53ee8cc1Swenshuai.xi     {
640*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
641*53ee8cc1Swenshuai.xi     }
642*53ee8cc1Swenshuai.xi     return;
643*53ee8cc1Swenshuai.xi }
644*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetPCsRGBTable(XC_ACE_DeviceId * pDeviceId,MS_BOOL bScalerWin)645*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetPCsRGBTable( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin)
646*53ee8cc1Swenshuai.xi {
647*53ee8cc1Swenshuai.xi     stACE_SetPCsRGBTable ACEArgs;
648*53ee8cc1Swenshuai.xi     ACEArgs.bScalerWin = bScalerWin;
649*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETPCSRGBTABLE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
650*53ee8cc1Swenshuai.xi     {
651*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
652*53ee8cc1Swenshuai.xi     }
653*53ee8cc1Swenshuai.xi     return;
654*53ee8cc1Swenshuai.xi }
655*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_GetColorMatrix(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U16 * pu16Matrix)656*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_GetColorMatrix( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U16* pu16Matrix)
657*53ee8cc1Swenshuai.xi {
658*53ee8cc1Swenshuai.xi     stACE_ColorMatrix ACEArgs;
659*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
660*53ee8cc1Swenshuai.xi     ACEArgs.pu16Matrix = pu16Matrix;
661*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_GETCOLORMATRIX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
662*53ee8cc1Swenshuai.xi     {
663*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
664*53ee8cc1Swenshuai.xi     }
665*53ee8cc1Swenshuai.xi     return;
666*53ee8cc1Swenshuai.xi }
667*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetColorMatrix(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U16 * pu16Matrix)668*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetColorMatrix( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U16* pu16Matrix)
669*53ee8cc1Swenshuai.xi {
670*53ee8cc1Swenshuai.xi     stACE_ColorMatrix ACEArgs;
671*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
672*53ee8cc1Swenshuai.xi     ACEArgs.pu16Matrix = pu16Matrix;
673*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETCOLORMATRIX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
674*53ee8cc1Swenshuai.xi     {
675*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
676*53ee8cc1Swenshuai.xi     }
677*53ee8cc1Swenshuai.xi     return;
678*53ee8cc1Swenshuai.xi }
679*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetBypassColorMatrix(XC_ACE_DeviceId * pDeviceId,MS_BOOL bEnable)680*53ee8cc1Swenshuai.xi E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_SetBypassColorMatrix( XC_ACE_DeviceId *pDeviceId, MS_BOOL bEnable )
681*53ee8cc1Swenshuai.xi {
682*53ee8cc1Swenshuai.xi     if (pDeviceId->u32Id == 0 && pu32ACEInst == NULL)
683*53ee8cc1Swenshuai.xi     {
684*53ee8cc1Swenshuai.xi         if(UtopiaOpen(MODULE_ACE, &pu32ACEInst, 0, NULL) != UTOPIA_STATUS_SUCCESS)
685*53ee8cc1Swenshuai.xi         {
686*53ee8cc1Swenshuai.xi             printf("UtopiaOpen ACE failed\n");
687*53ee8cc1Swenshuai.xi             return E_XC_ACE_FAIL;
688*53ee8cc1Swenshuai.xi         }
689*53ee8cc1Swenshuai.xi         ACE_INSTANCE_PRIVATE *psACEInstPri = NULL;
690*53ee8cc1Swenshuai.xi         UtopiaInstanceGetPrivate(pu32ACEInst, (void**)&psACEInstPri);
691*53ee8cc1Swenshuai.xi         psACEInstPri->u32DeviceID = 0;
692*53ee8cc1Swenshuai.xi     }
693*53ee8cc1Swenshuai.xi     else if(pDeviceId->u32Id == 1 && pu32ACEInst_1 == NULL)
694*53ee8cc1Swenshuai.xi     {
695*53ee8cc1Swenshuai.xi         if(UtopiaOpen(MODULE_ACE, &pu32ACEInst_1, 0, NULL) != UTOPIA_STATUS_SUCCESS)
696*53ee8cc1Swenshuai.xi         {
697*53ee8cc1Swenshuai.xi             printf("UtopiaOpen ACE failed\n");
698*53ee8cc1Swenshuai.xi             return E_XC_ACE_FAIL;
699*53ee8cc1Swenshuai.xi         }
700*53ee8cc1Swenshuai.xi         ACE_INSTANCE_PRIVATE *psACEInstPri = NULL;
701*53ee8cc1Swenshuai.xi         UtopiaInstanceGetPrivate(pu32ACEInst_1, (void**)&psACEInstPri);
702*53ee8cc1Swenshuai.xi         psACEInstPri->u32DeviceID = 1;
703*53ee8cc1Swenshuai.xi     }
704*53ee8cc1Swenshuai.xi     else if(pDeviceId->u32Id > 1)
705*53ee8cc1Swenshuai.xi     {
706*53ee8cc1Swenshuai.xi         printf("Device Id over 2\n");
707*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
708*53ee8cc1Swenshuai.xi     }
709*53ee8cc1Swenshuai.xi     else
710*53ee8cc1Swenshuai.xi     {
711*53ee8cc1Swenshuai.xi         printf("Device %td has initialized\n",(ptrdiff_t)pDeviceId->u32Id);
712*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
713*53ee8cc1Swenshuai.xi     }
714*53ee8cc1Swenshuai.xi 
715*53ee8cc1Swenshuai.xi 
716*53ee8cc1Swenshuai.xi     stACE_SetBypassColorMatrix ACEArgs;
717*53ee8cc1Swenshuai.xi     ACEArgs.bEnable = bEnable;
718*53ee8cc1Swenshuai.xi     ACEArgs.eResult = E_XC_ACE_FAIL;
719*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETBYPASSCOLORMATRIX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
720*53ee8cc1Swenshuai.xi     {
721*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
722*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
723*53ee8cc1Swenshuai.xi     }
724*53ee8cc1Swenshuai.xi     else
725*53ee8cc1Swenshuai.xi     {
726*53ee8cc1Swenshuai.xi         return ACEArgs.eResult;
727*53ee8cc1Swenshuai.xi     }
728*53ee8cc1Swenshuai.xi }
729*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetIHC(XC_ACE_DeviceId * pDeviceId,MS_BOOL bScalerWin,XC_ACE_EX_IHC_COLOR_TYPE eIHC,MS_U8 u8Val)730*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_SetIHC(XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, XC_ACE_EX_IHC_COLOR_TYPE eIHC, MS_U8 u8Val)
731*53ee8cc1Swenshuai.xi {
732*53ee8cc1Swenshuai.xi     stACE_SetIHC ACEArgs;
733*53ee8cc1Swenshuai.xi     ACEArgs.bScalerWin = bScalerWin;
734*53ee8cc1Swenshuai.xi     ACEArgs.eIHC = eIHC;
735*53ee8cc1Swenshuai.xi     ACEArgs.u8Val = u8Val;
736*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
737*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETIHC, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
738*53ee8cc1Swenshuai.xi     {
739*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
740*53ee8cc1Swenshuai.xi         return FALSE;
741*53ee8cc1Swenshuai.xi     }
742*53ee8cc1Swenshuai.xi     else
743*53ee8cc1Swenshuai.xi     {
744*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
745*53ee8cc1Swenshuai.xi     }
746*53ee8cc1Swenshuai.xi }
747*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_PatchDTGColorChecker(XC_ACE_DeviceId * pDeviceId,MS_U8 u8Mode)748*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PatchDTGColorChecker( XC_ACE_DeviceId *pDeviceId, MS_U8 u8Mode)
749*53ee8cc1Swenshuai.xi {
750*53ee8cc1Swenshuai.xi     stACE_PatchDTGColorChecker ACEArgs;
751*53ee8cc1Swenshuai.xi     ACEArgs.u8Mode = u8Mode;
752*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PATCHDTGCOLORCHECKER, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
753*53ee8cc1Swenshuai.xi     {
754*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
755*53ee8cc1Swenshuai.xi     }
756*53ee8cc1Swenshuai.xi     return;
757*53ee8cc1Swenshuai.xi }
758*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_GetACEInfo(XC_ACE_DeviceId * pDeviceId,MS_BOOL bWindow,E_XC_ACE_EX_INFOTYPE eXCACEInfoType)759*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ACE_EX_GetACEInfo( XC_ACE_DeviceId *pDeviceId, MS_BOOL bWindow, E_XC_ACE_EX_INFOTYPE eXCACEInfoType )
760*53ee8cc1Swenshuai.xi {
761*53ee8cc1Swenshuai.xi     stACE_GetACEInfo ACEArgs;
762*53ee8cc1Swenshuai.xi     ACEArgs.bWindow = bWindow;
763*53ee8cc1Swenshuai.xi     ACEArgs.eXCACEInfoType = _ACE_Map_EX_InfoType(eXCACEInfoType);
764*53ee8cc1Swenshuai.xi     ACEArgs.u16Return = 0;
765*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_GETACEINFO, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
766*53ee8cc1Swenshuai.xi     {
767*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
768*53ee8cc1Swenshuai.xi         return 0;
769*53ee8cc1Swenshuai.xi     }
770*53ee8cc1Swenshuai.xi     else
771*53ee8cc1Swenshuai.xi     {
772*53ee8cc1Swenshuai.xi         return ACEArgs.u16Return;
773*53ee8cc1Swenshuai.xi     }
774*53ee8cc1Swenshuai.xi }
775*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_GetACEInfoEx(XC_ACE_DeviceId * pDeviceId,MS_BOOL bWindow,XC_ACE_EX_InfoEx * pInfoEx)776*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_GetACEInfoEx( XC_ACE_DeviceId *pDeviceId, MS_BOOL bWindow, XC_ACE_EX_InfoEx *pInfoEx)
777*53ee8cc1Swenshuai.xi {
778*53ee8cc1Swenshuai.xi     XC_ACE_InfoEx pRawInfoEx;
779*53ee8cc1Swenshuai.xi     stACE_GetACEInfoEx ACEArgs;
780*53ee8cc1Swenshuai.xi     ACEArgs.bWindow = bWindow;
781*53ee8cc1Swenshuai.xi     ACEArgs.pInfoEx = &pRawInfoEx;
782*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_GETACEINFOEX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
783*53ee8cc1Swenshuai.xi     {
784*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
785*53ee8cc1Swenshuai.xi     }
786*53ee8cc1Swenshuai.xi     _ACE_Map_EX_InfoEX(ACEArgs.pInfoEx,pInfoEx);
787*53ee8cc1Swenshuai.xi     return;
788*53ee8cc1Swenshuai.xi }
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi /********************************************************************************/
791*53ee8cc1Swenshuai.xi /*                   msAPI_ACE_Ext.c                   */
792*53ee8cc1Swenshuai.xi /********************************************************************************/
793*53ee8cc1Swenshuai.xi 
794*53ee8cc1Swenshuai.xi /********************************************************************************/
795*53ee8cc1Swenshuai.xi /*                   Functions                      */
796*53ee8cc1Swenshuai.xi /********************************************************************************/
797*53ee8cc1Swenshuai.xi 
798*53ee8cc1Swenshuai.xi 
799*53ee8cc1Swenshuai.xi /******************************************************************************/
800*53ee8cc1Swenshuai.xi ///-This function will set up brightness for YPbPr and digital port
801*53ee8cc1Swenshuai.xi ///@param eWindow        \b IN: Window type
802*53ee8cc1Swenshuai.xi ///@param u8Brightness_R \b IN: brightness R value
803*53ee8cc1Swenshuai.xi ///@param u8Brightness_G \b IN: brightness G value
804*53ee8cc1Swenshuai.xi ///@param u8Brightness_B \b IN: brightness B value
805*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ACE_EX_PicSetBrightness(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U8 u8Brightness_R,MS_U8 u8Brightness_G,MS_U8 u8Brightness_B)806*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetBrightness( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 u8Brightness_R, MS_U8 u8Brightness_G, MS_U8 u8Brightness_B)
807*53ee8cc1Swenshuai.xi {
808*53ee8cc1Swenshuai.xi     stACE_PicSetBrightness ACEArgs;
809*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
810*53ee8cc1Swenshuai.xi     ACEArgs.u8Brightness_R = u8Brightness_R;
811*53ee8cc1Swenshuai.xi     ACEArgs.u8Brightness_G = u8Brightness_G;
812*53ee8cc1Swenshuai.xi     ACEArgs.u8Brightness_B = u8Brightness_B;
813*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETBRIGHTNESS, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
814*53ee8cc1Swenshuai.xi     {
815*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
816*53ee8cc1Swenshuai.xi     }
817*53ee8cc1Swenshuai.xi     return;
818*53ee8cc1Swenshuai.xi }
819*53ee8cc1Swenshuai.xi 
820*53ee8cc1Swenshuai.xi /******************************************************************************/
821*53ee8cc1Swenshuai.xi ///-This function will set up Precise brightness for YPbPr and digital port
822*53ee8cc1Swenshuai.xi ///@param eWindow        \b IN: Window type
823*53ee8cc1Swenshuai.xi ///@param u16Brightness_R \b IN: brightness R value
824*53ee8cc1Swenshuai.xi ///@param u16Brightness_G \b IN: brightness G value
825*53ee8cc1Swenshuai.xi ///@param u16Brightness_B \b IN: brightness B value
826*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ACE_EX_PicSetBrightnessPrecise(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U16 u16Brightness_R,MS_U16 u16Brightness_G,MS_U16 u16Brightness_B)827*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetBrightnessPrecise(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U16 u16Brightness_R, MS_U16 u16Brightness_G, MS_U16 u16Brightness_B)
828*53ee8cc1Swenshuai.xi {
829*53ee8cc1Swenshuai.xi     stACE_PicSetBrightnessPrecise ACEArgs;
830*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
831*53ee8cc1Swenshuai.xi     ACEArgs.u16Brightness_R = u16Brightness_R;
832*53ee8cc1Swenshuai.xi     ACEArgs.u16Brightness_G = u16Brightness_G;
833*53ee8cc1Swenshuai.xi     ACEArgs.u16Brightness_B = u16Brightness_B;
834*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETBRIGHTNESSPRECISE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
835*53ee8cc1Swenshuai.xi     {
836*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
837*53ee8cc1Swenshuai.xi     }
838*53ee8cc1Swenshuai.xi     return;
839*53ee8cc1Swenshuai.xi }
840*53ee8cc1Swenshuai.xi 
841*53ee8cc1Swenshuai.xi /******************************************************************************/
842*53ee8cc1Swenshuai.xi ///-This function will set Pre Y Offset
843*53ee8cc1Swenshuai.xi ///@param eWindow        \b IN: Window type
844*53ee8cc1Swenshuai.xi ///@param u8PreYOffset \b IN: Pre Y Offset value
845*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ACE_EX_PicSetPreYOffset(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U8 u8PreYOffset)846*53ee8cc1Swenshuai.xi E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_PicSetPreYOffset(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 u8PreYOffset)
847*53ee8cc1Swenshuai.xi {
848*53ee8cc1Swenshuai.xi     stACE_PreYOffset stACEArgs;
849*53ee8cc1Swenshuai.xi     stACEArgs.eWindow = eWindow;
850*53ee8cc1Swenshuai.xi     stACEArgs.u8PreYOffset = u8PreYOffset;
851*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSET_PRE_Y_OFFSET, (void*)&stACEArgs) != UTOPIA_STATUS_SUCCESS)
852*53ee8cc1Swenshuai.xi     {
853*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
854*53ee8cc1Swenshuai.xi         return E_XC_ACE_OBTAIN_RESOURCE_FAIL;
855*53ee8cc1Swenshuai.xi     }
856*53ee8cc1Swenshuai.xi 
857*53ee8cc1Swenshuai.xi     return E_XC_ACE_OK;
858*53ee8cc1Swenshuai.xi }
859*53ee8cc1Swenshuai.xi 
860*53ee8cc1Swenshuai.xi /******************************************************************************/
861*53ee8cc1Swenshuai.xi ///-This function will get Pre Y Offset
862*53ee8cc1Swenshuai.xi ///@param eWindow        \b IN: Window type
863*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ACE_EX_PicGetPreYOffset(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow)864*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ACE_EX_PicGetPreYOffset(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow)
865*53ee8cc1Swenshuai.xi {
866*53ee8cc1Swenshuai.xi     stACE_PreYOffset stACEArgs;
867*53ee8cc1Swenshuai.xi     stACEArgs.eWindow = eWindow;
868*53ee8cc1Swenshuai.xi     stACEArgs.u8PreYOffset = 0;
869*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICGET_PRE_Y_OFFSET, (void*)&stACEArgs) != UTOPIA_STATUS_SUCCESS)
870*53ee8cc1Swenshuai.xi     {
871*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
872*53ee8cc1Swenshuai.xi         return E_XC_ACE_OBTAIN_RESOURCE_FAIL;
873*53ee8cc1Swenshuai.xi     }
874*53ee8cc1Swenshuai.xi 
875*53ee8cc1Swenshuai.xi     return stACEArgs.u8PreYOffset;
876*53ee8cc1Swenshuai.xi }
877*53ee8cc1Swenshuai.xi 
878*53ee8cc1Swenshuai.xi /******************************************************************************/
879*53ee8cc1Swenshuai.xi //-Adjust sharpness
880*53ee8cc1Swenshuai.xi ///@param eWindow        \b IN: Window type
881*53ee8cc1Swenshuai.xi ///@param u8Sharpness    \b IN: sharpness value
882*53ee8cc1Swenshuai.xi //- 0 -0x3f
883*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ACE_EX_PicSetSharpness(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U8 u8Sharpness)884*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetSharpness( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 u8Sharpness )
885*53ee8cc1Swenshuai.xi {
886*53ee8cc1Swenshuai.xi     stACE_PicSetSharpness ACEArgs;
887*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
888*53ee8cc1Swenshuai.xi     ACEArgs.u8Sharpness = u8Sharpness;
889*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETSHARPNESS, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
890*53ee8cc1Swenshuai.xi     {
891*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
892*53ee8cc1Swenshuai.xi     }
893*53ee8cc1Swenshuai.xi     return;
894*53ee8cc1Swenshuai.xi }
895*53ee8cc1Swenshuai.xi 
896*53ee8cc1Swenshuai.xi /******************************************************************************/
897*53ee8cc1Swenshuai.xi //-Adjust contrast for YPbPr and digital port
898*53ee8cc1Swenshuai.xi //@param u8Contrast \b IN:
899*53ee8cc1Swenshuai.xi //- video color Contrast setting 0 -0xff
900*53ee8cc1Swenshuai.xi //@param u8SubContrast \b IN:
901*53ee8cc1Swenshuai.xi //- video color SubContrast setting 0 -0xff
902*53ee8cc1Swenshuai.xi /******************************************************************************/
903*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_PicSetContrast(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bUseYUVSpace,MS_U8 u8Contrast)904*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetContrast( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, MS_U8 u8Contrast)
905*53ee8cc1Swenshuai.xi {
906*53ee8cc1Swenshuai.xi     stACE_PicSetContrast ACEArgs;
907*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
908*53ee8cc1Swenshuai.xi     ACEArgs.bUseYUVSpace = bUseYUVSpace;
909*53ee8cc1Swenshuai.xi     ACEArgs.u8Contrast = u8Contrast;
910*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETCONTRAST, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
911*53ee8cc1Swenshuai.xi     {
912*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
913*53ee8cc1Swenshuai.xi     }
914*53ee8cc1Swenshuai.xi     return;
915*53ee8cc1Swenshuai.xi }
916*53ee8cc1Swenshuai.xi 
917*53ee8cc1Swenshuai.xi /******************************************************************************/
918*53ee8cc1Swenshuai.xi ///-Adjust Hue for YPbPr and digital port
919*53ee8cc1Swenshuai.xi ///@param eWindow \b IN: Enable Hue
920*53ee8cc1Swenshuai.xi ///@param bUseYUVSpace \b IN: Is Yuv space
921*53ee8cc1Swenshuai.xi ///@param u8Hue \b IN: Hue value
922*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ACE_EX_PicSetHue(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bUseYUVSpace,MS_U8 u8Hue)923*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetHue( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, MS_U8 u8Hue )
924*53ee8cc1Swenshuai.xi {
925*53ee8cc1Swenshuai.xi     stACE_PicSetHue ACEArgs;
926*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
927*53ee8cc1Swenshuai.xi     ACEArgs.bUseYUVSpace = bUseYUVSpace;
928*53ee8cc1Swenshuai.xi     ACEArgs.u8Hue = u8Hue;
929*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETHUE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
930*53ee8cc1Swenshuai.xi     {
931*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
932*53ee8cc1Swenshuai.xi     }
933*53ee8cc1Swenshuai.xi     return;
934*53ee8cc1Swenshuai.xi }
935*53ee8cc1Swenshuai.xi 
936*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
937*53ee8cc1Swenshuai.xi // Skip Wait Vsync
938*53ee8cc1Swenshuai.xi /// @param eWindow               \b IN: Enable
939*53ee8cc1Swenshuai.xi /// @param Skip wait Vsync      \b IN: Disable wait Vsync
940*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
MApi_XC_ACE_EX_SkipWaitVsync(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn)941*53ee8cc1Swenshuai.xi E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_SkipWaitVsync( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn)
942*53ee8cc1Swenshuai.xi {
943*53ee8cc1Swenshuai.xi     stACE_SkipWaitVsync ACEArgs;
944*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
945*53ee8cc1Swenshuai.xi     ACEArgs.bIsSkipWaitVsyn = bIsSkipWaitVsyn;
946*53ee8cc1Swenshuai.xi     ACEArgs.eResult = E_XC_ACE_FAIL;
947*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SKIPWAITVSYNC, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
948*53ee8cc1Swenshuai.xi     {
949*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
950*53ee8cc1Swenshuai.xi         return E_XC_ACE_FAIL;
951*53ee8cc1Swenshuai.xi     }
952*53ee8cc1Swenshuai.xi     else
953*53ee8cc1Swenshuai.xi     {
954*53ee8cc1Swenshuai.xi         return  ACEArgs.eResult;
955*53ee8cc1Swenshuai.xi     }
956*53ee8cc1Swenshuai.xi }
957*53ee8cc1Swenshuai.xi 
958*53ee8cc1Swenshuai.xi /******************************************************************************/
959*53ee8cc1Swenshuai.xi //-Adjust Saturation for YPbPr and digital port
960*53ee8cc1Swenshuai.xi //@param u8Saturation \b IN:
961*53ee8cc1Swenshuai.xi //- video color setting 0 -100
962*53ee8cc1Swenshuai.xi /******************************************************************************/
MApi_XC_ACE_EX_PicSetSaturation(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bUseYUVSpace,MS_U8 u8Saturation)963*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetSaturation(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, MS_U8 u8Saturation )
964*53ee8cc1Swenshuai.xi {
965*53ee8cc1Swenshuai.xi     stACE_PicSetSaturation ACEArgs;
966*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
967*53ee8cc1Swenshuai.xi     ACEArgs.bUseYUVSpace = bUseYUVSpace;
968*53ee8cc1Swenshuai.xi     ACEArgs.u8Saturation = u8Saturation;
969*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETSATURATION, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
970*53ee8cc1Swenshuai.xi     {
971*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
972*53ee8cc1Swenshuai.xi     }
973*53ee8cc1Swenshuai.xi     return;
974*53ee8cc1Swenshuai.xi }
975*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetFleshTone(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bEn,MS_U8 u8FleshTone)976*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetFleshTone(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bEn, MS_U8 u8FleshTone)
977*53ee8cc1Swenshuai.xi {
978*53ee8cc1Swenshuai.xi     stACE_SetFleshTone ACEArgs;
979*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
980*53ee8cc1Swenshuai.xi     ACEArgs.bEn = bEn;
981*53ee8cc1Swenshuai.xi     ACEArgs.u8FleshTone = u8FleshTone;
982*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETFLESHTONE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
983*53ee8cc1Swenshuai.xi     {
984*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
985*53ee8cc1Swenshuai.xi     }
986*53ee8cc1Swenshuai.xi     return;
987*53ee8cc1Swenshuai.xi }
988*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetBlackAdjust(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_U8 u8BlackAdjust)989*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetBlackAdjust(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 u8BlackAdjust)
990*53ee8cc1Swenshuai.xi {
991*53ee8cc1Swenshuai.xi     stACE_SetBlackAdjust ACEArgs;
992*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
993*53ee8cc1Swenshuai.xi     ACEArgs.u8BlackAdjust = u8BlackAdjust;
994*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETBLACKADJUST, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
995*53ee8cc1Swenshuai.xi     {
996*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
997*53ee8cc1Swenshuai.xi     }
998*53ee8cc1Swenshuai.xi     return;
999*53ee8cc1Swenshuai.xi }
1000*53ee8cc1Swenshuai.xi 
1001*53ee8cc1Swenshuai.xi //*************************************************************************
1002*53ee8cc1Swenshuai.xi ///-set video color
1003*53ee8cc1Swenshuai.xi ///@param eWindow \b IN: Enable Color temp
1004*53ee8cc1Swenshuai.xi ///@param bUseYUVSpace \b IN: Is in YUV space
1005*53ee8cc1Swenshuai.xi ///@param pstColorTemp \b IN: Color temp need to be set
1006*53ee8cc1Swenshuai.xi //*************************************************************************
MApi_XC_ACE_EX_PicSetColorTemp(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bUseYUVSpace,XC_ACE_EX_color_temp * pstColorTemp)1007*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetColorTemp( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp* pstColorTemp)
1008*53ee8cc1Swenshuai.xi {
1009*53ee8cc1Swenshuai.xi     stACE_PicSetColorTemp ACEArgs;
1010*53ee8cc1Swenshuai.xi     XC_ACE_color_temp  stColorTemp;
1011*53ee8cc1Swenshuai.xi     memset(&stColorTemp,0,sizeof(stColorTemp));
1012*53ee8cc1Swenshuai.xi     ACEArgs.pstColorTemp= &stColorTemp;
1013*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1014*53ee8cc1Swenshuai.xi     ACEArgs.bUseYUVSpace = bUseYUVSpace;
1015*53ee8cc1Swenshuai.xi     _ACE_Map_EX_ColorTemp(ACEArgs.pstColorTemp,pstColorTemp);
1016*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETCOLORTEMP, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1017*53ee8cc1Swenshuai.xi     {
1018*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1019*53ee8cc1Swenshuai.xi     }
1020*53ee8cc1Swenshuai.xi     return;
1021*53ee8cc1Swenshuai.xi }
1022*53ee8cc1Swenshuai.xi 
1023*53ee8cc1Swenshuai.xi //*************************************************************************
1024*53ee8cc1Swenshuai.xi ///-set video color ex
1025*53ee8cc1Swenshuai.xi ///@param eWindow \b IN: Enable Color temp
1026*53ee8cc1Swenshuai.xi ///@param bUseYUVSpace \b IN: Is in YUV space
1027*53ee8cc1Swenshuai.xi ///@param pstColorTemp \b IN: Color temp need to be set
1028*53ee8cc1Swenshuai.xi //*************************************************************************
MApi_XC_ACE_EX_PicSetColorTempEx(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bUseYUVSpace,XC_ACE_EX_color_temp_ex * pstColorTemp)1029*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetColorTempEx( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp_ex* pstColorTemp)
1030*53ee8cc1Swenshuai.xi {
1031*53ee8cc1Swenshuai.xi     stACE_PicSetColorTempEx ACEArgs;
1032*53ee8cc1Swenshuai.xi     XC_ACE_color_temp_ex  stColorTemp;
1033*53ee8cc1Swenshuai.xi     memset(&stColorTemp,0,sizeof(stColorTemp));
1034*53ee8cc1Swenshuai.xi     ACEArgs.pstColorTemp= &stColorTemp;
1035*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1036*53ee8cc1Swenshuai.xi     ACEArgs.bUseYUVSpace = bUseYUVSpace;
1037*53ee8cc1Swenshuai.xi     _ACE_Map_EX_ColorTempEX(ACEArgs.pstColorTemp,pstColorTemp);
1038*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETCOLORTEMPEX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1039*53ee8cc1Swenshuai.xi     {
1040*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1041*53ee8cc1Swenshuai.xi     }
1042*53ee8cc1Swenshuai.xi     return;
1043*53ee8cc1Swenshuai.xi }
1044*53ee8cc1Swenshuai.xi 
1045*53ee8cc1Swenshuai.xi //*************************************************************************
1046*53ee8cc1Swenshuai.xi ///- set post color temp Version 2
1047*53ee8cc1Swenshuai.xi ///@param eWindow \b IN: Enable Color temp
1048*53ee8cc1Swenshuai.xi ///@param pstColorTemp \b IN: Color temp need to be set
1049*53ee8cc1Swenshuai.xi //*************************************************************************
MApi_XC_ACE_EX_PicSetPostColorTemp_V02(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,XC_ACE_EX_color_temp_ex2 * pstColorTemp)1050*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetPostColorTemp_V02(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_color_temp_ex2* pstColorTemp)
1051*53ee8cc1Swenshuai.xi {
1052*53ee8cc1Swenshuai.xi     stACE_PicSetPostColorTemp_V02 ACEArgs;
1053*53ee8cc1Swenshuai.xi     XC_ACE_color_temp_ex2  stColorTemp;
1054*53ee8cc1Swenshuai.xi     memset(&stColorTemp,0,sizeof(stColorTemp));
1055*53ee8cc1Swenshuai.xi     ACEArgs.pstColorTemp= &stColorTemp;
1056*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1057*53ee8cc1Swenshuai.xi     _ACE_Map_EX_ColorTempEX2(ACEArgs.pstColorTemp,pstColorTemp);
1058*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETPOSTCOLORTEMP_V02, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1059*53ee8cc1Swenshuai.xi     {
1060*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1061*53ee8cc1Swenshuai.xi     }
1062*53ee8cc1Swenshuai.xi     return;
1063*53ee8cc1Swenshuai.xi }
1064*53ee8cc1Swenshuai.xi 
1065*53ee8cc1Swenshuai.xi //*************************************************************************
1066*53ee8cc1Swenshuai.xi ///-obosolte!! use MApi_XC_ACE_EX_PicSetPostColorTemp_V02 instead
1067*53ee8cc1Swenshuai.xi //*************************************************************************
MApi_XC_ACE_EX_PicSetPostColorTemp(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,XC_ACE_EX_color_temp * pstColorTemp)1068*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetPostColorTemp(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_color_temp* pstColorTemp)
1069*53ee8cc1Swenshuai.xi {
1070*53ee8cc1Swenshuai.xi     stACE_PicSetPostColorTemp ACEArgs;
1071*53ee8cc1Swenshuai.xi     XC_ACE_color_temp  stColorTemp;
1072*53ee8cc1Swenshuai.xi     memset(&stColorTemp,0,sizeof(stColorTemp));
1073*53ee8cc1Swenshuai.xi     ACEArgs.pstColorTemp= &stColorTemp;
1074*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1075*53ee8cc1Swenshuai.xi     _ACE_Map_EX_ColorTemp(ACEArgs.pstColorTemp,pstColorTemp);
1076*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETPOSTCOLORTEMP, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1077*53ee8cc1Swenshuai.xi     {
1078*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1079*53ee8cc1Swenshuai.xi     }
1080*53ee8cc1Swenshuai.xi     return;
1081*53ee8cc1Swenshuai.xi }
1082*53ee8cc1Swenshuai.xi 
1083*53ee8cc1Swenshuai.xi //*************************************************************************
1084*53ee8cc1Swenshuai.xi ///-obosolte!! use MApi_XC_ACE_EX_PicSetPostColorTemp_V02 instead
1085*53ee8cc1Swenshuai.xi //*************************************************************************
MApi_XC_ACE_EX_PicSetPostColorTempEx(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,XC_ACE_EX_color_temp_ex * pstColorTemp)1086*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetPostColorTempEx(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_color_temp_ex* pstColorTemp)
1087*53ee8cc1Swenshuai.xi {
1088*53ee8cc1Swenshuai.xi     stACE_PicSetPostColorTempEx ACEArgs;
1089*53ee8cc1Swenshuai.xi     XC_ACE_color_temp_ex  stColorTemp;
1090*53ee8cc1Swenshuai.xi     memset(&stColorTemp,0,sizeof(stColorTemp));
1091*53ee8cc1Swenshuai.xi     ACEArgs.pstColorTemp= &stColorTemp;
1092*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1093*53ee8cc1Swenshuai.xi     _ACE_Map_EX_ColorTempEX(ACEArgs.pstColorTemp,pstColorTemp);
1094*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETPOSTCOLORTEMPEX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1095*53ee8cc1Swenshuai.xi     {
1096*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1097*53ee8cc1Swenshuai.xi     }
1098*53ee8cc1Swenshuai.xi     return;
1099*53ee8cc1Swenshuai.xi 
1100*53ee8cc1Swenshuai.xi }
1101*53ee8cc1Swenshuai.xi 
1102*53ee8cc1Swenshuai.xi //*************************************************************************
1103*53ee8cc1Swenshuai.xi ///-set video color
1104*53ee8cc1Swenshuai.xi ///@param eWindow \b IN: Enable Color temp
1105*53ee8cc1Swenshuai.xi ///@param bUseYUVSpace \b IN: Is in YUV space
1106*53ee8cc1Swenshuai.xi ///@param pstColorTemp \b IN: Color temp need to be set
1107*53ee8cc1Swenshuai.xi //*************************************************************************
MApi_XC_ACE_EX_PicSetPostColorTemp2(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bUseYUVSpace,XC_ACE_EX_color_temp * pstColorTemp)1108*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetPostColorTemp2(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp* pstColorTemp)
1109*53ee8cc1Swenshuai.xi {
1110*53ee8cc1Swenshuai.xi     stACE_PicSetPostColorTemp ACEArgs;
1111*53ee8cc1Swenshuai.xi     XC_ACE_color_temp  stColorTemp;
1112*53ee8cc1Swenshuai.xi     memset(&stColorTemp,0,sizeof(stColorTemp));
1113*53ee8cc1Swenshuai.xi     ACEArgs.pstColorTemp= &stColorTemp;
1114*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1115*53ee8cc1Swenshuai.xi     _ACE_Map_EX_ColorTemp(ACEArgs.pstColorTemp,pstColorTemp);
1116*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETPOSTCOLORTEMP2, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1117*53ee8cc1Swenshuai.xi     {
1118*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1119*53ee8cc1Swenshuai.xi     }
1120*53ee8cc1Swenshuai.xi     return;
1121*53ee8cc1Swenshuai.xi }
1122*53ee8cc1Swenshuai.xi 
1123*53ee8cc1Swenshuai.xi //*************************************************************************
1124*53ee8cc1Swenshuai.xi ///-set video color ex
1125*53ee8cc1Swenshuai.xi ///@param eWindow \b IN: Enable Color temp
1126*53ee8cc1Swenshuai.xi ///@param bUseYUVSpace \b IN: Is in YUV space
1127*53ee8cc1Swenshuai.xi ///@param pstColorTemp \b IN: Color temp need to be set
1128*53ee8cc1Swenshuai.xi //*************************************************************************
MApi_XC_ACE_EX_PicSetPostColorTemp2Ex(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,MS_BOOL bUseYUVSpace,XC_ACE_EX_color_temp_ex * pstColorTemp)1129*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_PicSetPostColorTemp2Ex(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp_ex* pstColorTemp)
1130*53ee8cc1Swenshuai.xi {
1131*53ee8cc1Swenshuai.xi     stACE_PicSetPostColorTempEx ACEArgs;
1132*53ee8cc1Swenshuai.xi     XC_ACE_color_temp_ex  stColorTemp;
1133*53ee8cc1Swenshuai.xi     memset(&stColorTemp,0,sizeof(stColorTemp));
1134*53ee8cc1Swenshuai.xi     ACEArgs.pstColorTemp= &stColorTemp;
1135*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1136*53ee8cc1Swenshuai.xi     _ACE_Map_EX_ColorTempEX(ACEArgs.pstColorTemp,pstColorTemp);
1137*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_PICSETPOSTCOLORTEMP2EX, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1138*53ee8cc1Swenshuai.xi     {
1139*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1140*53ee8cc1Swenshuai.xi     }
1141*53ee8cc1Swenshuai.xi     return;
1142*53ee8cc1Swenshuai.xi }
1143*53ee8cc1Swenshuai.xi 
1144*53ee8cc1Swenshuai.xi /******************************************************************************/
1145*53ee8cc1Swenshuai.xi /*                     Local                                                  */
1146*53ee8cc1Swenshuai.xi /* ****************************************************************************/
1147*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_GetLibVer(const MSIF_Version ** ppVersion)1148*53ee8cc1Swenshuai.xi E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_GetLibVer(const MSIF_Version **ppVersion)              // Get version
1149*53ee8cc1Swenshuai.xi {
1150*53ee8cc1Swenshuai.xi     if (!ppVersion)
1151*53ee8cc1Swenshuai.xi     {
1152*53ee8cc1Swenshuai.xi         return E_XC_ACE_EX_FAIL;
1153*53ee8cc1Swenshuai.xi     }
1154*53ee8cc1Swenshuai.xi 
1155*53ee8cc1Swenshuai.xi     *ppVersion = &_api_xc_ace_version;
1156*53ee8cc1Swenshuai.xi     return E_XC_ACE_EX_OK;
1157*53ee8cc1Swenshuai.xi }
1158*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_GetInfo(XC_ACE_DeviceId * pDeviceId)1159*53ee8cc1Swenshuai.xi const XC_ACE_EX_ApiInfo * MApi_XC_ACE_EX_GetInfo(XC_ACE_DeviceId *pDeviceId)          // Get info from driver
1160*53ee8cc1Swenshuai.xi {
1161*53ee8cc1Swenshuai.xi     stACE_GetInfo ACEArgs;
1162*53ee8cc1Swenshuai.xi     ACEArgs.pstApiInfo = NULL;
1163*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_GETINFO, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1164*53ee8cc1Swenshuai.xi     {
1165*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1166*53ee8cc1Swenshuai.xi         return NULL;
1167*53ee8cc1Swenshuai.xi     }
1168*53ee8cc1Swenshuai.xi     else
1169*53ee8cc1Swenshuai.xi     {
1170*53ee8cc1Swenshuai.xi         return (XC_ACE_EX_ApiInfo*)ACEArgs.pstApiInfo;
1171*53ee8cc1Swenshuai.xi     }
1172*53ee8cc1Swenshuai.xi }
1173*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_GetStatus(XC_ACE_DeviceId * pDeviceId,XC_ACE_EX_ApiStatus * pDrvStatus,MS_BOOL bWindow)1174*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_GetStatus(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_ApiStatus *pDrvStatus, MS_BOOL bWindow)    // Get DLC current status
1175*53ee8cc1Swenshuai.xi {
1176*53ee8cc1Swenshuai.xi     XC_ACE_ApiStatus stDrvStatus;
1177*53ee8cc1Swenshuai.xi     stACE_GetStatus ACEArgs;
1178*53ee8cc1Swenshuai.xi     ACEArgs.pDrvStatus = &stDrvStatus;
1179*53ee8cc1Swenshuai.xi     ACEArgs.bWindow = bWindow;
1180*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
1181*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_GETSTATUS, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1182*53ee8cc1Swenshuai.xi     {
1183*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1184*53ee8cc1Swenshuai.xi         return FALSE;
1185*53ee8cc1Swenshuai.xi     }
1186*53ee8cc1Swenshuai.xi     else
1187*53ee8cc1Swenshuai.xi     {
1188*53ee8cc1Swenshuai.xi         _ACE_Map_EX_ApiStaus(&stDrvStatus, pDrvStatus);
1189*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
1190*53ee8cc1Swenshuai.xi     }
1191*53ee8cc1Swenshuai.xi }
1192*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetDbgLevel(MS_U16 u16DbgSwitch)1193*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_SetDbgLevel(MS_U16 u16DbgSwitch)
1194*53ee8cc1Swenshuai.xi {
1195*53ee8cc1Swenshuai.xi     stACE_SetDbgLevel ACEArgs;
1196*53ee8cc1Swenshuai.xi     ACEArgs.u16DbgSwitch = u16DbgSwitch;
1197*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
1198*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(pu32ACEInst, E_ACE_CMD_SETDBGLEVEL, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1199*53ee8cc1Swenshuai.xi     {
1200*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1201*53ee8cc1Swenshuai.xi         return FALSE;
1202*53ee8cc1Swenshuai.xi     }
1203*53ee8cc1Swenshuai.xi     else
1204*53ee8cc1Swenshuai.xi     {
1205*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
1206*53ee8cc1Swenshuai.xi     }
1207*53ee8cc1Swenshuai.xi }
1208*53ee8cc1Swenshuai.xi 
1209*53ee8cc1Swenshuai.xi /******************************************************************************/
1210*53ee8cc1Swenshuai.xi /*                   Functions                                                */
1211*53ee8cc1Swenshuai.xi /******************************************************************************/
1212*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_EnableMWE(XC_ACE_DeviceId * pDeviceId,MS_BOOL bEnable)1213*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_EnableMWE(XC_ACE_DeviceId *pDeviceId, MS_BOOL bEnable)
1214*53ee8cc1Swenshuai.xi {
1215*53ee8cc1Swenshuai.xi     stACE_EnableMWE ACEArgs;
1216*53ee8cc1Swenshuai.xi     ACEArgs.bEnable = bEnable;
1217*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_ENABLEMWE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1218*53ee8cc1Swenshuai.xi     {
1219*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1220*53ee8cc1Swenshuai.xi     }
1221*53ee8cc1Swenshuai.xi     return;
1222*53ee8cc1Swenshuai.xi }
1223*53ee8cc1Swenshuai.xi 
1224*53ee8cc1Swenshuai.xi #if 0
1225*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_MWESetMirrorMode( XC_ACE_DeviceId *pDeviceId, E_XC_ACE_EX_MWE_MIRROR_TYPE eMirrorMode )
1226*53ee8cc1Swenshuai.xi {
1227*53ee8cc1Swenshuai.xi     _ACE_EX_SET_PRIVATE_DEVICE_ID(pDeviceId->u32Id);
1228*53ee8cc1Swenshuai.xi     MApi_XC_ACE_MWESetMirrorMode(eMirrorMode);
1229*53ee8cc1Swenshuai.xi }
1230*53ee8cc1Swenshuai.xi #endif
1231*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_MWECloneVisualEffect(XC_ACE_DeviceId * pDeviceId)1232*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_MWECloneVisualEffect(XC_ACE_DeviceId *pDeviceId)
1233*53ee8cc1Swenshuai.xi {
1234*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_MWECLONEVISUALEFFECT, (void*)NULL) != UTOPIA_STATUS_SUCCESS)
1235*53ee8cc1Swenshuai.xi     {
1236*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1237*53ee8cc1Swenshuai.xi     }
1238*53ee8cc1Swenshuai.xi     return;
1239*53ee8cc1Swenshuai.xi 
1240*53ee8cc1Swenshuai.xi }
1241*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_3DClonePQMap(XC_ACE_DeviceId * pDeviceId,XC_ACE_EX_WEAVETYPE enWeaveType)1242*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_3DClonePQMap(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_WEAVETYPE enWeaveType)
1243*53ee8cc1Swenshuai.xi {
1244*53ee8cc1Swenshuai.xi     stACE_3DClonePQMap ACEArgs;
1245*53ee8cc1Swenshuai.xi     ACEArgs.enWeaveType = _ACE_Map_EX_WeaveType(enWeaveType);
1246*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_3DCLONEPQMAP, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1247*53ee8cc1Swenshuai.xi     {
1248*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1249*53ee8cc1Swenshuai.xi     }
1250*53ee8cc1Swenshuai.xi     return;
1251*53ee8cc1Swenshuai.xi }
1252*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_MWESetRegTable(XC_ACE_DeviceId * pDeviceId,XC_ACE_EX_TAB_Info * pMWETable)1253*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_MWESetRegTable(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_TAB_Info *pMWETable)
1254*53ee8cc1Swenshuai.xi {
1255*53ee8cc1Swenshuai.xi     stACE_MWESetRegTable ACEArgs;
1256*53ee8cc1Swenshuai.xi     XC_ACE_TAB_Info pstMWETable;
1257*53ee8cc1Swenshuai.xi     memset(&pstMWETable,0,sizeof(XC_ACE_TAB_Info));
1258*53ee8cc1Swenshuai.xi     ACEArgs.pMWETable = &pstMWETable;
1259*53ee8cc1Swenshuai.xi     _ACE_Map_EX_TABInfo(ACEArgs.pMWETable,pMWETable);
1260*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
1261*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_MWESETREGTABLE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1262*53ee8cc1Swenshuai.xi     {
1263*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1264*53ee8cc1Swenshuai.xi         return FALSE;
1265*53ee8cc1Swenshuai.xi     }
1266*53ee8cc1Swenshuai.xi     else
1267*53ee8cc1Swenshuai.xi     {
1268*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
1269*53ee8cc1Swenshuai.xi     }
1270*53ee8cc1Swenshuai.xi }
1271*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetMWELoadFromPQ(XC_ACE_DeviceId * pDeviceId,MS_BOOL bEnable)1272*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_SetMWELoadFromPQ(XC_ACE_DeviceId *pDeviceId, MS_BOOL bEnable)
1273*53ee8cc1Swenshuai.xi {
1274*53ee8cc1Swenshuai.xi     stACE_SetMWELoadFromPQ ACEArgs;
1275*53ee8cc1Swenshuai.xi     ACEArgs.bEnable = bEnable;
1276*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
1277*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETMWELOADFROMPQ, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1278*53ee8cc1Swenshuai.xi     {
1279*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1280*53ee8cc1Swenshuai.xi         return FALSE;
1281*53ee8cc1Swenshuai.xi     }
1282*53ee8cc1Swenshuai.xi     else
1283*53ee8cc1Swenshuai.xi     {
1284*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
1285*53ee8cc1Swenshuai.xi     }
1286*53ee8cc1Swenshuai.xi }
1287*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_MWESetDispWin(XC_ACE_DeviceId * pDeviceId,MS_U16 u16MWE_Disp_Hstart,MS_U16 u16MWE_Disp_Vstart,MS_U16 u16MWE_Disp_Width,MS_U16 u16MWE_Disp_Height)1288*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_MWESetDispWin(XC_ACE_DeviceId *pDeviceId, MS_U16 u16MWE_Disp_Hstart, MS_U16 u16MWE_Disp_Vstart, MS_U16 u16MWE_Disp_Width, MS_U16 u16MWE_Disp_Height)
1289*53ee8cc1Swenshuai.xi {
1290*53ee8cc1Swenshuai.xi     stACE_MWESetDispWin ACEArgs;
1291*53ee8cc1Swenshuai.xi     ACEArgs.u16MWE_Disp_Hstart = u16MWE_Disp_Hstart;
1292*53ee8cc1Swenshuai.xi     ACEArgs.u16MWE_Disp_Vstart = u16MWE_Disp_Vstart;
1293*53ee8cc1Swenshuai.xi     ACEArgs.u16MWE_Disp_Width = u16MWE_Disp_Width;
1294*53ee8cc1Swenshuai.xi     ACEArgs.u16MWE_Disp_Height = u16MWE_Disp_Height;
1295*53ee8cc1Swenshuai.xi 
1296*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_MWESETDISPWIN, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1297*53ee8cc1Swenshuai.xi     {
1298*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1299*53ee8cc1Swenshuai.xi     }
1300*53ee8cc1Swenshuai.xi     return;
1301*53ee8cc1Swenshuai.xi }
1302*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_MWEStatus(XC_ACE_DeviceId * pDeviceId)1303*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_MWEStatus(XC_ACE_DeviceId *pDeviceId)
1304*53ee8cc1Swenshuai.xi {
1305*53ee8cc1Swenshuai.xi     stACE_MWEStatus ACEArgs;
1306*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
1307*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_MWESTATUS, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1308*53ee8cc1Swenshuai.xi     {
1309*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1310*53ee8cc1Swenshuai.xi         return FALSE;
1311*53ee8cc1Swenshuai.xi     }
1312*53ee8cc1Swenshuai.xi     else
1313*53ee8cc1Swenshuai.xi     {
1314*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
1315*53ee8cc1Swenshuai.xi     }
1316*53ee8cc1Swenshuai.xi }
1317*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_MWEFuncSel(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,E_XC_ACE_EX_MWE_FUNC mwe_func)1318*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_MWEFuncSel( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, E_XC_ACE_EX_MWE_FUNC  mwe_func)
1319*53ee8cc1Swenshuai.xi {
1320*53ee8cc1Swenshuai.xi     stACE_MWEFuncSel ACEArgs;
1321*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1322*53ee8cc1Swenshuai.xi     ACEArgs.mwe_func = _ACE_Map_EX_MWEFunc(mwe_func);
1323*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_MWEFUNCSEL, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1324*53ee8cc1Swenshuai.xi     {
1325*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1326*53ee8cc1Swenshuai.xi     }
1327*53ee8cc1Swenshuai.xi     return;
1328*53ee8cc1Swenshuai.xi }
1329*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_MWEHandle(XC_ACE_DeviceId * pDeviceId)1330*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_MWEHandle( XC_ACE_DeviceId *pDeviceId )
1331*53ee8cc1Swenshuai.xi {
1332*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_MWEHANDLE, (void*)NULL) != UTOPIA_STATUS_SUCCESS)
1333*53ee8cc1Swenshuai.xi     {
1334*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1335*53ee8cc1Swenshuai.xi     }
1336*53ee8cc1Swenshuai.xi     return;
1337*53ee8cc1Swenshuai.xi }
1338*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_Set_IHC_SRAM(XC_ACE_DeviceId * pDeviceId,MS_U16 * pBuf,MS_U16 u16ByteSize)1339*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_Set_IHC_SRAM(XC_ACE_DeviceId *pDeviceId, MS_U16 *pBuf, MS_U16 u16ByteSize)
1340*53ee8cc1Swenshuai.xi {
1341*53ee8cc1Swenshuai.xi     stACE_Set_IHC_SRAM ACEArgs;
1342*53ee8cc1Swenshuai.xi     ACEArgs.pBuf = pBuf;
1343*53ee8cc1Swenshuai.xi     ACEArgs.u16ByteSize = u16ByteSize;
1344*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
1345*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SET_IHC_SRAM, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1346*53ee8cc1Swenshuai.xi     {
1347*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1348*53ee8cc1Swenshuai.xi         return FALSE;
1349*53ee8cc1Swenshuai.xi     }
1350*53ee8cc1Swenshuai.xi     else
1351*53ee8cc1Swenshuai.xi     {
1352*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
1353*53ee8cc1Swenshuai.xi     }
1354*53ee8cc1Swenshuai.xi }
1355*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_Set_ICC_SRAM(XC_ACE_DeviceId * pDeviceId,MS_U16 * pBuf,MS_U16 u16ByteSize)1356*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_ACE_EX_Set_ICC_SRAM(XC_ACE_DeviceId *pDeviceId, MS_U16 *pBuf, MS_U16 u16ByteSize)
1357*53ee8cc1Swenshuai.xi {
1358*53ee8cc1Swenshuai.xi     stACE_Set_ICC_SRAM ACEArgs;
1359*53ee8cc1Swenshuai.xi     ACEArgs.pBuf = pBuf;
1360*53ee8cc1Swenshuai.xi     ACEArgs.u16ByteSize = u16ByteSize;
1361*53ee8cc1Swenshuai.xi     ACEArgs.bReturn = FALSE;
1362*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SET_ICC_SRAM, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1363*53ee8cc1Swenshuai.xi     {
1364*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1365*53ee8cc1Swenshuai.xi         return FALSE;
1366*53ee8cc1Swenshuai.xi     }
1367*53ee8cc1Swenshuai.xi     else
1368*53ee8cc1Swenshuai.xi     {
1369*53ee8cc1Swenshuai.xi         return ACEArgs.bReturn;
1370*53ee8cc1Swenshuai.xi     }
1371*53ee8cc1Swenshuai.xi }
1372*53ee8cc1Swenshuai.xi 
1373*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1374*53ee8cc1Swenshuai.xi //
1375*53ee8cc1Swenshuai.xi //  DynamicNR start
1376*53ee8cc1Swenshuai.xi //
1377*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1378*53ee8cc1Swenshuai.xi #define NR_DBG(x)   //x
1379*53ee8cc1Swenshuai.xi 
1380*53ee8cc1Swenshuai.xi #if 0
1381*53ee8cc1Swenshuai.xi #define DYNAMIC_NR_TBL_REG_NUM                  8
1382*53ee8cc1Swenshuai.xi #define DYNAMICNR_DEFLICKER_PRECISION_SHFIT     64UL
1383*53ee8cc1Swenshuai.xi #define DYNAMICNR_DEFLICK_TOTAL                 32UL
1384*53ee8cc1Swenshuai.xi #define DYNAMICNR_DEFLICK_STABLE_CNT            0x10
1385*53ee8cc1Swenshuai.xi 
1386*53ee8cc1Swenshuai.xi 
1387*53ee8cc1Swenshuai.xi MS_U8  g_u8MotionStableCnt[XC_ACE_EX_MAX_DEVICE_NUM];
1388*53ee8cc1Swenshuai.xi MS_U8  g_u8LumaStableCnt[XC_ACE_EX_MAX_DEVICE_NUM];
1389*53ee8cc1Swenshuai.xi MS_U8  g_u8FlickStableCnt[XC_ACE_EX_MAX_DEVICE_NUM];
1390*53ee8cc1Swenshuai.xi #endif
1391*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_Get_PrecisionShift(XC_ACE_DeviceId * pDeviceId)1392*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ACE_EX_DNR_Get_PrecisionShift(XC_ACE_DeviceId *pDeviceId)
1393*53ee8cc1Swenshuai.xi {
1394*53ee8cc1Swenshuai.xi     stACE_DNR_Get_PrecisionShift ACEArgs;
1395*53ee8cc1Swenshuai.xi     ACEArgs.u16Return = 0;
1396*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_GET_PRECISIONSHIFT, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1397*53ee8cc1Swenshuai.xi     {
1398*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1399*53ee8cc1Swenshuai.xi         return 0;
1400*53ee8cc1Swenshuai.xi     }
1401*53ee8cc1Swenshuai.xi     else
1402*53ee8cc1Swenshuai.xi     {
1403*53ee8cc1Swenshuai.xi         return ACEArgs.u16Return;
1404*53ee8cc1Swenshuai.xi     }
1405*53ee8cc1Swenshuai.xi }
1406*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_Blending_NRTbl(XC_ACE_DeviceId * pDeviceId,MS_U8 * pu8NewNR,MS_U8 u8Weight,MS_U8 u8Step,MS_U16 * pu16PreY0,MS_U16 * pu16PreY1,MS_U8 * pu8NRTBL)1407*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_DNR_Blending_NRTbl(
1408*53ee8cc1Swenshuai.xi     XC_ACE_DeviceId *pDeviceId,
1409*53ee8cc1Swenshuai.xi     MS_U8 *pu8NewNR,
1410*53ee8cc1Swenshuai.xi     MS_U8 u8Weight,
1411*53ee8cc1Swenshuai.xi     MS_U8 u8Step,
1412*53ee8cc1Swenshuai.xi     MS_U16 *pu16PreY0,
1413*53ee8cc1Swenshuai.xi     MS_U16 *pu16PreY1,
1414*53ee8cc1Swenshuai.xi     MS_U8 *pu8NRTBL)
1415*53ee8cc1Swenshuai.xi {
1416*53ee8cc1Swenshuai.xi     stACE_DNR_Blending_NRTbl ACEArgs;
1417*53ee8cc1Swenshuai.xi     ACEArgs.pu8NewNR = pu8NewNR;
1418*53ee8cc1Swenshuai.xi     ACEArgs.u8Weight = u8Weight;
1419*53ee8cc1Swenshuai.xi     ACEArgs.pu16PreY0 = pu16PreY0;
1420*53ee8cc1Swenshuai.xi     ACEArgs.pu16PreY1 = pu16PreY1;
1421*53ee8cc1Swenshuai.xi     ACEArgs.pu8NRTBL = pu8NRTBL;
1422*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_BLENDING_NRTBL, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1423*53ee8cc1Swenshuai.xi     {
1424*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1425*53ee8cc1Swenshuai.xi     }
1426*53ee8cc1Swenshuai.xi     return;
1427*53ee8cc1Swenshuai.xi }
1428*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_Blending(XC_ACE_DeviceId * pDeviceId,MS_U8 u8NewItem,MS_U16 u16PreItem,MS_U8 u8Weight)1429*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ACE_EX_DNR_Blending(XC_ACE_DeviceId *pDeviceId, MS_U8 u8NewItem, MS_U16 u16PreItem, MS_U8 u8Weight)
1430*53ee8cc1Swenshuai.xi {
1431*53ee8cc1Swenshuai.xi     stACE_DNR_Blending ACEArgs;
1432*53ee8cc1Swenshuai.xi     ACEArgs.u8NewItem = u8NewItem;
1433*53ee8cc1Swenshuai.xi     ACEArgs.u16PreItem = u16PreItem;
1434*53ee8cc1Swenshuai.xi     ACEArgs.u8Weight = u8Weight;
1435*53ee8cc1Swenshuai.xi     ACEArgs.u8Return = 0;
1436*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_BLENDING, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1437*53ee8cc1Swenshuai.xi     {
1438*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1439*53ee8cc1Swenshuai.xi         return 0;
1440*53ee8cc1Swenshuai.xi     }
1441*53ee8cc1Swenshuai.xi     else
1442*53ee8cc1Swenshuai.xi     {
1443*53ee8cc1Swenshuai.xi         return  ACEArgs.u8Return;
1444*53ee8cc1Swenshuai.xi     }
1445*53ee8cc1Swenshuai.xi }
1446*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_Blending_MISC(XC_ACE_DeviceId * pDeviceId,MS_U8 u8NewItem,MS_U16 u16PreItem,MS_U8 u8Weight,MS_U8 u8Step)1447*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_ACE_EX_DNR_Blending_MISC(
1448*53ee8cc1Swenshuai.xi     XC_ACE_DeviceId *pDeviceId,
1449*53ee8cc1Swenshuai.xi     MS_U8 u8NewItem,
1450*53ee8cc1Swenshuai.xi     MS_U16 u16PreItem,
1451*53ee8cc1Swenshuai.xi     MS_U8 u8Weight,
1452*53ee8cc1Swenshuai.xi     MS_U8 u8Step)
1453*53ee8cc1Swenshuai.xi {
1454*53ee8cc1Swenshuai.xi     stACE_DNR_Blending_MISC ACEArgs;
1455*53ee8cc1Swenshuai.xi     ACEArgs.u8NewItem = u8NewItem;
1456*53ee8cc1Swenshuai.xi     ACEArgs.u16PreItem = u16PreItem;
1457*53ee8cc1Swenshuai.xi     ACEArgs.u8Weight = u8Weight;
1458*53ee8cc1Swenshuai.xi     ACEArgs.u8Step = u8Step;
1459*53ee8cc1Swenshuai.xi     ACEArgs.u16Return = 0;
1460*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_BLENDING_MISC, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1461*53ee8cc1Swenshuai.xi     {
1462*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1463*53ee8cc1Swenshuai.xi         return 0;
1464*53ee8cc1Swenshuai.xi     }
1465*53ee8cc1Swenshuai.xi     else
1466*53ee8cc1Swenshuai.xi     {
1467*53ee8cc1Swenshuai.xi         return  ACEArgs.u16Return;
1468*53ee8cc1Swenshuai.xi     }
1469*53ee8cc1Swenshuai.xi }
1470*53ee8cc1Swenshuai.xi 
1471*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_GetMotion(XC_ACE_DeviceId * pDeviceId)1472*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ACE_EX_DNR_GetMotion(XC_ACE_DeviceId *pDeviceId)
1473*53ee8cc1Swenshuai.xi {
1474*53ee8cc1Swenshuai.xi     stACE_DNR_GetMotion ACEArgs;
1475*53ee8cc1Swenshuai.xi     ACEArgs.u8Return = 0;
1476*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_GETMOTION, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1477*53ee8cc1Swenshuai.xi     {
1478*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1479*53ee8cc1Swenshuai.xi         return 0;
1480*53ee8cc1Swenshuai.xi     }
1481*53ee8cc1Swenshuai.xi     else
1482*53ee8cc1Swenshuai.xi     {
1483*53ee8cc1Swenshuai.xi         return  ACEArgs.u8Return;
1484*53ee8cc1Swenshuai.xi     }
1485*53ee8cc1Swenshuai.xi }
1486*53ee8cc1Swenshuai.xi 
1487*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_GetMotion_Weight(XC_ACE_DeviceId * pDeviceId,MS_U8 u8CurMotion,MS_U8 u8PreMotion,MS_U8 u8CurMotionLvl,MS_U8 u8PreMotionLvl,MS_U8 u8DeFlick_Thre,MS_U8 u8DeFilick_Step)1488*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ACE_EX_DNR_GetMotion_Weight(
1489*53ee8cc1Swenshuai.xi     XC_ACE_DeviceId *pDeviceId,
1490*53ee8cc1Swenshuai.xi     MS_U8 u8CurMotion,
1491*53ee8cc1Swenshuai.xi     MS_U8 u8PreMotion,
1492*53ee8cc1Swenshuai.xi     MS_U8 u8CurMotionLvl,
1493*53ee8cc1Swenshuai.xi     MS_U8 u8PreMotionLvl,
1494*53ee8cc1Swenshuai.xi     MS_U8 u8DeFlick_Thre,
1495*53ee8cc1Swenshuai.xi     MS_U8 u8DeFilick_Step)
1496*53ee8cc1Swenshuai.xi {
1497*53ee8cc1Swenshuai.xi     stACE_DNR_GetMotion_Weight ACEArgs;
1498*53ee8cc1Swenshuai.xi     ACEArgs.u8CurMotion = u8CurMotion;
1499*53ee8cc1Swenshuai.xi     ACEArgs.u8PreMotion = u8PreMotion;
1500*53ee8cc1Swenshuai.xi     ACEArgs.u8CurMotionLvl = u8CurMotionLvl;
1501*53ee8cc1Swenshuai.xi     ACEArgs.u8PreMotionLvl = u8CurMotionLvl;
1502*53ee8cc1Swenshuai.xi     ACEArgs.u8DeFlick_Thre = u8DeFlick_Thre;
1503*53ee8cc1Swenshuai.xi     ACEArgs.u8DeFilick_Step = u8DeFilick_Step;
1504*53ee8cc1Swenshuai.xi     ACEArgs.u8Return = 0;
1505*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_GETMOTION_WEIGHT, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1506*53ee8cc1Swenshuai.xi     {
1507*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1508*53ee8cc1Swenshuai.xi         return 0;
1509*53ee8cc1Swenshuai.xi     }
1510*53ee8cc1Swenshuai.xi     else
1511*53ee8cc1Swenshuai.xi     {
1512*53ee8cc1Swenshuai.xi         return  ACEArgs.u8Return;
1513*53ee8cc1Swenshuai.xi     }
1514*53ee8cc1Swenshuai.xi }
1515*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_GetLuma_Weight(XC_ACE_DeviceId * pDeviceId,MS_U8 u8CurAvgLuma,MS_U8 u8PreAvgLuam,MS_U8 u8CurLumaLvl,MS_U8 u8PreLumaLvl,MS_U8 u8DeFlick_Th,MS_U8 u8DeFlick_Step)1516*53ee8cc1Swenshuai.xi MS_U8  MApi_XC_ACE_EX_DNR_GetLuma_Weight(
1517*53ee8cc1Swenshuai.xi     XC_ACE_DeviceId *pDeviceId,
1518*53ee8cc1Swenshuai.xi     MS_U8 u8CurAvgLuma,
1519*53ee8cc1Swenshuai.xi     MS_U8 u8PreAvgLuam,
1520*53ee8cc1Swenshuai.xi     MS_U8 u8CurLumaLvl,
1521*53ee8cc1Swenshuai.xi     MS_U8 u8PreLumaLvl,
1522*53ee8cc1Swenshuai.xi     MS_U8 u8DeFlick_Th,
1523*53ee8cc1Swenshuai.xi     MS_U8 u8DeFlick_Step)
1524*53ee8cc1Swenshuai.xi {
1525*53ee8cc1Swenshuai.xi     stACE_DNR_GetLuma_Weight ACEArgs;
1526*53ee8cc1Swenshuai.xi     ACEArgs.u8CurAvgLuma = u8CurAvgLuma;
1527*53ee8cc1Swenshuai.xi     ACEArgs.u8PreAvgLuam = u8PreAvgLuam;
1528*53ee8cc1Swenshuai.xi     ACEArgs.u8CurLumaLvl = u8CurLumaLvl;
1529*53ee8cc1Swenshuai.xi     ACEArgs.u8PreLumaLvl = u8PreLumaLvl;
1530*53ee8cc1Swenshuai.xi     ACEArgs.u8DeFlick_Th = u8DeFlick_Th;
1531*53ee8cc1Swenshuai.xi     ACEArgs.u8DeFlick_Step = u8DeFlick_Step;
1532*53ee8cc1Swenshuai.xi     ACEArgs.u8Return = 0;
1533*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_GETLUMA_WEIGHT, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1534*53ee8cc1Swenshuai.xi     {
1535*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1536*53ee8cc1Swenshuai.xi         return 0;
1537*53ee8cc1Swenshuai.xi     }
1538*53ee8cc1Swenshuai.xi     else
1539*53ee8cc1Swenshuai.xi     {
1540*53ee8cc1Swenshuai.xi         return  ACEArgs.u8Return;
1541*53ee8cc1Swenshuai.xi     }
1542*53ee8cc1Swenshuai.xi }
1543*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_GetNoise_Weight(XC_ACE_DeviceId * pDeviceId,MS_U8 u8CurNoise,MS_U8 u8PreNoise,MS_U8 u8Range,MS_U8 u8DeFlick_Th,MS_U8 u8DeFlick_Step)1544*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ACE_EX_DNR_GetNoise_Weight(
1545*53ee8cc1Swenshuai.xi     XC_ACE_DeviceId *pDeviceId,
1546*53ee8cc1Swenshuai.xi     MS_U8 u8CurNoise,
1547*53ee8cc1Swenshuai.xi     MS_U8 u8PreNoise,
1548*53ee8cc1Swenshuai.xi     MS_U8 u8Range,
1549*53ee8cc1Swenshuai.xi     MS_U8 u8DeFlick_Th,
1550*53ee8cc1Swenshuai.xi     MS_U8 u8DeFlick_Step)
1551*53ee8cc1Swenshuai.xi {
1552*53ee8cc1Swenshuai.xi     stACE_DNR_GetNoise_Weight ACEArgs;
1553*53ee8cc1Swenshuai.xi     ACEArgs.u8CurNoise = u8CurNoise;
1554*53ee8cc1Swenshuai.xi     ACEArgs.u8PreNoise = u8PreNoise;
1555*53ee8cc1Swenshuai.xi     ACEArgs.u8Range = u8Range;
1556*53ee8cc1Swenshuai.xi     ACEArgs.u8Range = u8Range;
1557*53ee8cc1Swenshuai.xi     ACEArgs.u8DeFlick_Th = u8DeFlick_Th;
1558*53ee8cc1Swenshuai.xi     ACEArgs.u8DeFlick_Step = u8DeFlick_Step;
1559*53ee8cc1Swenshuai.xi     ACEArgs.u8Return = 0;
1560*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_GETNOISE_WEIGHT, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1561*53ee8cc1Swenshuai.xi     {
1562*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1563*53ee8cc1Swenshuai.xi         return 0;
1564*53ee8cc1Swenshuai.xi     }
1565*53ee8cc1Swenshuai.xi     else
1566*53ee8cc1Swenshuai.xi     {
1567*53ee8cc1Swenshuai.xi         return  ACEArgs.u8Return;
1568*53ee8cc1Swenshuai.xi     }
1569*53ee8cc1Swenshuai.xi }
1570*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_Init_Motion(XC_ACE_DeviceId * pDeviceId)1571*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_DNR_Init_Motion(XC_ACE_DeviceId *pDeviceId)
1572*53ee8cc1Swenshuai.xi {
1573*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_INIT_MOTION, (void*)NULL) != UTOPIA_STATUS_SUCCESS)
1574*53ee8cc1Swenshuai.xi     {
1575*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1576*53ee8cc1Swenshuai.xi     }
1577*53ee8cc1Swenshuai.xi     return;
1578*53ee8cc1Swenshuai.xi }
1579*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_Init_Luma(XC_ACE_DeviceId * pDeviceId)1580*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_DNR_Init_Luma(XC_ACE_DeviceId *pDeviceId)
1581*53ee8cc1Swenshuai.xi {
1582*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_INIT_LUMA, (void*)NULL) != UTOPIA_STATUS_SUCCESS)
1583*53ee8cc1Swenshuai.xi     {
1584*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1585*53ee8cc1Swenshuai.xi     }
1586*53ee8cc1Swenshuai.xi     return;
1587*53ee8cc1Swenshuai.xi }
1588*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_Init_Noise(XC_ACE_DeviceId * pDeviceId)1589*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_DNR_Init_Noise(XC_ACE_DeviceId *pDeviceId)
1590*53ee8cc1Swenshuai.xi {
1591*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_INIT_NOISE, (void*)NULL) != UTOPIA_STATUS_SUCCESS)
1592*53ee8cc1Swenshuai.xi     {
1593*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1594*53ee8cc1Swenshuai.xi     }
1595*53ee8cc1Swenshuai.xi     return;
1596*53ee8cc1Swenshuai.xi }
1597*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_GetParam(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,XC_ACE_EX_DNR_Param eParam)1598*53ee8cc1Swenshuai.xi MS_U8 MApi_XC_ACE_EX_DNR_GetParam(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_DNR_Param eParam)
1599*53ee8cc1Swenshuai.xi {
1600*53ee8cc1Swenshuai.xi     stACE_DNR_GetParam ACEArgs;
1601*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1602*53ee8cc1Swenshuai.xi     ACEArgs.eParam = _ACE_Map_EX_DNRParam(eParam);
1603*53ee8cc1Swenshuai.xi     ACEArgs.u8Return = 0;
1604*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_GETPARAM, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1605*53ee8cc1Swenshuai.xi     {
1606*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1607*53ee8cc1Swenshuai.xi         return 0;
1608*53ee8cc1Swenshuai.xi     }
1609*53ee8cc1Swenshuai.xi     else
1610*53ee8cc1Swenshuai.xi     {
1611*53ee8cc1Swenshuai.xi         return  ACEArgs.u8Return;
1612*53ee8cc1Swenshuai.xi     }
1613*53ee8cc1Swenshuai.xi }
1614*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_SetParam(XC_ACE_DeviceId * pDeviceId,MS_BOOL eWindow,XC_ACE_EX_DNR_Param eParam,MS_U16 u16val)1615*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_DNR_SetParam(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_DNR_Param eParam, MS_U16 u16val)
1616*53ee8cc1Swenshuai.xi {
1617*53ee8cc1Swenshuai.xi     stACE_DNR_SetParam ACEArgs;
1618*53ee8cc1Swenshuai.xi     ACEArgs.eWindow = eWindow;
1619*53ee8cc1Swenshuai.xi     ACEArgs.eParam = _ACE_Map_EX_DNRParam(eParam);
1620*53ee8cc1Swenshuai.xi     ACEArgs.u16val = u16val;
1621*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_SETPARAM, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1622*53ee8cc1Swenshuai.xi     {
1623*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1624*53ee8cc1Swenshuai.xi     }
1625*53ee8cc1Swenshuai.xi     return;
1626*53ee8cc1Swenshuai.xi }
1627*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_DNR_SetNRTbl(XC_ACE_DeviceId * pDeviceId,MS_U8 * pu8Tbl)1628*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_DNR_SetNRTbl(XC_ACE_DeviceId *pDeviceId, MS_U8 *pu8Tbl)
1629*53ee8cc1Swenshuai.xi {
1630*53ee8cc1Swenshuai.xi     stACE_DNR_SetNRTbl ACEArgs;
1631*53ee8cc1Swenshuai.xi     ACEArgs.pu8Tbl = pu8Tbl;
1632*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_DNR_SETNRTBL, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1633*53ee8cc1Swenshuai.xi     {
1634*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1635*53ee8cc1Swenshuai.xi     }
1636*53ee8cc1Swenshuai.xi     return;
1637*53ee8cc1Swenshuai.xi }
1638*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_ColorCorrectionTable(XC_ACE_DeviceId * pDeviceId,MS_BOOL bScalerWin,MS_S16 * psColorCorrectionTable)1639*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_ColorCorrectionTable( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, MS_S16 *psColorCorrectionTable )
1640*53ee8cc1Swenshuai.xi {
1641*53ee8cc1Swenshuai.xi     stACE_ColorCorrectionTable ACEArgs;
1642*53ee8cc1Swenshuai.xi     ACEArgs.bScalerWin = bScalerWin;
1643*53ee8cc1Swenshuai.xi     ACEArgs.psColorCorrectionTable = psColorCorrectionTable;
1644*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_COLORCORRECTIONTABLE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1645*53ee8cc1Swenshuai.xi     {
1646*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1647*53ee8cc1Swenshuai.xi     }
1648*53ee8cc1Swenshuai.xi     return;
1649*53ee8cc1Swenshuai.xi }
1650*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetColorMatrixControl(XC_ACE_DeviceId * pDeviceId,MS_BOOL bScalerWin,MS_BOOL bEnable)1651*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetColorMatrixControl( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, MS_BOOL bEnable )
1652*53ee8cc1Swenshuai.xi {
1653*53ee8cc1Swenshuai.xi     stACE_SetColorMatrixControl ACEArgs;
1654*53ee8cc1Swenshuai.xi     ACEArgs.bScalerWin = bScalerWin;
1655*53ee8cc1Swenshuai.xi     ACEArgs.bEnable = bEnable;
1656*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETCOLORMATRIXCONTROL, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1657*53ee8cc1Swenshuai.xi     {
1658*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1659*53ee8cc1Swenshuai.xi     }
1660*53ee8cc1Swenshuai.xi     return;
1661*53ee8cc1Swenshuai.xi }
1662*53ee8cc1Swenshuai.xi 
MApi_XC_ACE_EX_SetRBChannelRange(XC_ACE_DeviceId * pDeviceId,MS_BOOL bScalerWin,MS_BOOL bRange)1663*53ee8cc1Swenshuai.xi void MApi_XC_ACE_EX_SetRBChannelRange( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, MS_BOOL bRange )
1664*53ee8cc1Swenshuai.xi {
1665*53ee8cc1Swenshuai.xi     stACE_SetRBChannelRange ACEArgs;
1666*53ee8cc1Swenshuai.xi     ACEArgs.bScalerWin = bScalerWin;
1667*53ee8cc1Swenshuai.xi     ACEArgs.bRange = bRange;
1668*53ee8cc1Swenshuai.xi     if(UtopiaIoctl(_ACE_SELECT_INSTANCE(pDeviceId->u32Id), E_ACE_CMD_SETRBCHANNELRANGE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
1669*53ee8cc1Swenshuai.xi     {
1670*53ee8cc1Swenshuai.xi         printf("Obtain ACE engine fail\n");
1671*53ee8cc1Swenshuai.xi     }
1672*53ee8cc1Swenshuai.xi     return;
1673*53ee8cc1Swenshuai.xi }
1674*53ee8cc1Swenshuai.xi 
1675*53ee8cc1Swenshuai.xi #undef _API_XC_ACE_EX_C_
1676*53ee8cc1Swenshuai.xi #endif  // _API_XC_ACE_EX_C_
1677*53ee8cc1Swenshuai.xi 
1678