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