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