xref: /utopia/UTPA2-700.0.x/modules/xc/api/ace/apiXC_Ace_v2.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 #include "MsTypes.h"
2 #include "MsCommon.h"
3 #ifndef MSOS_TYPE_LINUX_KERNEL
4 #include <stdio.h>
5 #include <string.h>
6 #endif
7 
8 #include "utopia_dapi.h"
9 #include "apiXC_Ace.h"
10 #include "drvACE.h"
11 #include "ACE_private.h"
12 #include "apiXC_Ace_v2.h"
13 #include "utopia.h"
14 
15 #define MWE_TIMER           60
16 #define MWE_H_STEP          6
17 #define MWE_MOVE_RIGHT      1
18 #define MWE_MOVE_LEFT       0
19 
20 // ========== Global definition ==========
21 void* pModuleACE = NULL;
22 #ifdef MSOS_TYPE_LINUX_KERNEL
23 void* pInstanceACEStr = NULL;
ACEStr(MS_U32 u32PowerState,void * pModule)24 MS_U32 ACEStr(MS_U32 u32PowerState, void* pModule)
25 {
26     MS_U32 u32Return=UTOPIA_STATUS_FAIL;
27     stACE_Set_PowerState ACEArgs;
28 
29     switch(u32PowerState)
30     {
31         case E_POWER_SUSPEND:
32             if (pInstanceACEStr == NULL)
33             {
34                 if(UtopiaOpen(MODULE_ACE, &pInstanceACEStr, 0, NULL) != UTOPIA_STATUS_SUCCESS)
35                 {
36                     printf("UtopiaOpen ACE failed\n");
37                     return UTOPIA_STATUS_FAIL;
38                 }
39             }
40             ACEArgs.enPowerState = u32PowerState;
41             ACEArgs.u32Return = UTOPIA_STATUS_FAIL;
42             if(UtopiaIoctl(pInstanceACEStr, E_ACE_CMD_SET_POWERSTATE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
43             {
44                 printf("Obtain ACE engine fail\n");
45             }
46             u32Return=ACEArgs.u32Return;
47             break;
48         case E_POWER_RESUME:
49             if (pInstanceACEStr == NULL)
50             {
51                 if(UtopiaOpen(MODULE_ACE, &pInstanceACEStr, 0, NULL) != UTOPIA_STATUS_SUCCESS)
52                 {
53                     printf("UtopiaOpen ACE failed\n");
54                     return UTOPIA_STATUS_FAIL;
55                 }
56             }
57             ACEArgs.enPowerState = u32PowerState;
58             ACEArgs.u32Return = UTOPIA_STATUS_FAIL;
59             if(UtopiaIoctl(pInstanceACEStr, E_ACE_CMD_SET_POWERSTATE, (void*)&ACEArgs) != UTOPIA_STATUS_SUCCESS)
60             {
61                 printf("Obtain ACE engine fail\n");
62             }
63             u32Return=ACEArgs.u32Return;
64             break;
65         default:
66             printf("[%s][%d] PowerState:%lx not Implement now!!!\n",__FUNCTION__,__LINE__,u32PowerState);
67             break;
68     }
69     return u32Return;
70 }
71 #endif
72 
ACERegisterToUtopia(FUtopiaOpen ModuleType)73 void ACERegisterToUtopia(FUtopiaOpen ModuleType)
74 {
75     MS_U32 u32ResourceStatusCheck[E_ACE_POOL_ID_MAX] = {0};
76     // 1. deal with module
77     UtopiaModuleCreate(MODULE_ACE, 0, &pModuleACE);
78     UtopiaModuleRegister(pModuleACE);
79     // register func for module, after register here, then ap call UtopiaOpen/UtopiaIoctl/UtopiaClose can call to these registered standard func
80     UtopiaModuleSetupFunctionPtr(pModuleACE, (FUtopiaOpen)ACEOpen, (FUtopiaClose)ACEClose, (FUtopiaIOctl)ACEIoctl);
81 
82     // 2. deal with resource  , ACE
83     void* psResource = NULL;
84 #if defined(MSOS_TYPE_LINUX_KERNEL)
85     UtopiaModuleSetupSTRFunctionPtr(pModuleACE, (FUtopiaSTR)ACEStr);
86     UtopiaModuleSetSTRPrivate(pModuleACE, sizeof(ACE_REGS_SAVE_AREA));
87 #endif
88     // 3. resource can allocate private for internal use
89     MS_U32 u32MaxDeviceNum = _XC_ACE_GET_DEVICE_NUM();
90     MS_U32 i = 0;
91     for(i = 0 ; i < u32MaxDeviceNum ; i++)
92     {
93         //Need refine
94         if(i == 0)
95         {
96             UtopiaModuleAddResourceStart(pModuleACE, E_ACE_POOL_ID_INTERNAL);
97             u32ResourceStatusCheck[E_ACE_POOL_ID_INTERNAL] = UtopiaResourceCreate("ACE0", sizeof(ACE_RESOURCE_PRIVATE), &psResource);
98             UtopiaResourceRegister(pModuleACE, psResource, E_ACE_POOL_ID_INTERNAL);
99             UtopiaModuleAddResourceEnd(pModuleACE, E_ACE_POOL_ID_INTERNAL);
100         }
101         else
102         {
103             UtopiaModuleAddResourceStart(pModuleACE, E_ACE_POOL_ID_INTERNAL_1);
104             u32ResourceStatusCheck[E_ACE_POOL_ID_INTERNAL_1] = UtopiaResourceCreate("ACE1", sizeof(ACE_RESOURCE_PRIVATE), &psResource);
105             UtopiaResourceRegister(pModuleACE, psResource, E_ACE_POOL_ID_INTERNAL_1);
106         	UtopiaModuleAddResourceEnd(pModuleACE, E_ACE_POOL_ID_INTERNAL_1);
107         }
108     }
109 
110 
111     //4. init resource private members here   (aka, global variable)
112     ACE_RESOURCE_PRIVATE* pACEResourcePrivate = NULL;
113     UtopiaResourceGetPrivate(psResource,(void**)(&pACEResourcePrivate));
114 
115     // shall we init first?
116     if (u32ResourceStatusCheck[E_ACE_POOL_ID_INTERNAL] == UTOPIA_STATUS_SHM_EXIST)
117     {
118         // do nothing, since it is already inited
119     }
120     else
121     {
122         // Init flow control related variables here. Other global variable should be
123         // inited in each of its init function relatively.
124         pACEResourcePrivate->bResourceRegistered = TRUE;
125         pACEResourcePrivate->stapiACE.g_bACEModuleInited[0] = FALSE;
126         pACEResourcePrivate->stapiACE.g_bACEModuleInited[1] = FALSE;
127 
128         // apiPNL.c
129         pACEResourcePrivate->stapiACE._MWEFunc = E_XC_ACE_MWE_MODE_OFF;
130         pACEResourcePrivate->stapiACE._MWETimer = 0;
131         pACEResourcePrivate->stapiACE._MWEFlag = MWE_MOVE_LEFT;
132         //pACEResourcePrivate->stapiACE.bMWEStatus = FALSE;
133         //pACEResourcePrivate->stapiACE.gMWERect;
134         //pACEResourcePrivate->stapiACE.g_XC_ACE_InitData = DISABLE;
135         //pACEResourcePrivate->stapiACE._bMWESkipDriverSetting = FALSE;
136         //pACEResourcePrivate->stapiACE._enMirrorMode = E_XC_ACE_MWE_MIRROR_NORMAL;
137         //pACEResourcePrivate->stapiACE.g_u8MotionStableCnt = 0;
138         //pACEResourcePrivate->stapiACE.g_u8LumaStableCnt = 0;
139         //pACEResourcePrivate->stapiACE.g_u8FlickStableCnt = 0;
140     }
141 
142 
143 
144 }
145 
ACEOpen(void ** ppInstance,const void * const pAttribute)146 MS_U32 ACEOpen(void** ppInstance, const void* const pAttribute)
147 {
148     ACE_INSTANCE_PRIVATE *psACEInstPri = NULL;
149     UtopiaInstanceCreate(sizeof(ACE_INSTANCE_PRIVATE), ppInstance);
150     UtopiaInstanceGetPrivate(*ppInstance, (void**)&psACEInstPri);
151     if(pAttribute != NULL)
152     {
153         MS_U32* u32Attr = (MS_U32*)pAttribute;
154         psACEInstPri->u32DeviceID = *u32Attr;
155     }
156     else
157     {
158         psACEInstPri->u32DeviceID = 0;
159     }
160     psACEInstPri->fpACE_Init = MApi_XC_ACE_Init_U2;
161     psACEInstPri->fpACE_Exit = MApi_XC_ACE_Exit_U2;
162     psACEInstPri->fpACE_DMS = MApi_XC_ACE_DMS_U2;
163     psACEInstPri->fpACE_SetPCYUV2RGB = MApi_XC_ACE_SetPCYUV2RGB_U2;
164     psACEInstPri->fpACE_SelectYUVtoRGBMatrix = MApi_XC_ACE_SelectYUVtoRGBMatrix_U2;
165     psACEInstPri->fpACE_SetColorCorrectionTable = MApi_XC_ACE_SetColorCorrectionTable_U2;
166     psACEInstPri->fpACE_SetPCsRGBTable = MApi_XC_ACE_SetPCsRGBTable_U2;
167     psACEInstPri->fpACE_GetColorMatrix = MApi_XC_ACE_GetColorMatrix_U2;
168     psACEInstPri->fpACE_SetColorMatrix = MApi_XC_ACE_SetColorMatrix_U2;
169     psACEInstPri->fpACE_SetBypassColorMatrix = MApi_XC_ACE_SetBypassColorMatrix_U2;
170     psACEInstPri->fpACE_SetIHC = MApi_XC_ACE_SetIHC_U2;
171     psACEInstPri->fpACE_SetICC = MApi_XC_ACE_SetICC_U2;
172     psACEInstPri->fpACE_SetIBC = MApi_XC_ACE_SetIBC_U2;
173     psACEInstPri->fpACE_PatchDTGColorChecker = MApi_XC_ACE_PatchDTGColorChecker_U2;
174     psACEInstPri->fpACE_GetACEInfo = MApi_XC_ACE_GetACEInfo_U2;
175     psACEInstPri->fpACE_GetACEInfoEx = MApi_XC_ACE_GetACEInfoEx_U2;
176     psACEInstPri->fpACE_PicSetContrast = MApi_XC_ACE_PicSetContrast_U2;
177     psACEInstPri->fpACE_PicSetBrightness = MApi_XC_ACE_PicSetBrightness_U2;
178     psACEInstPri->fpACE_PicSetBrightnessPrecise = MApi_XC_ACE_PicSetBrightnessPrecise_U2;
179     psACEInstPri->fpACE_PicSetPreYOffset = MApi_XC_ACE_PicSetPreYOffset_U2;
180     psACEInstPri->fpACE_PicGetPreYOffset = MApi_XC_ACE_PicGetPreYOffset_U2;
181     psACEInstPri->fpACE_PicSetHue = MApi_XC_ACE_PicSetHue_U2;
182     psACEInstPri->fpACE_SkipWaitVsync = MApi_XC_ACE_SkipWaitVsync_U2;
183     psACEInstPri->fpACE_PicSetSaturation = MApi_XC_ACE_PicSetSaturation_U2;
184     psACEInstPri->fpACE_PicSetSharpness = MApi_XC_ACE_PicSetSharpness_U2;
185     psACEInstPri->fpACE_PicSetColorTemp = MApi_XC_ACE_PicSetColorTemp_U2;
186     psACEInstPri->fpACE_PicSetColorTempEx = MApi_XC_ACE_PicSetColorTempEx_U2;
187     psACEInstPri->fpACE_PicSetColorTemp_10Bits = MApi_XC_ACE_PicSetColorTemp_10Bits_U2;
188     psACEInstPri->fpACE_PicSetPostColorTemp_V02 = MApi_XC_ACE_PicSetPostColorTemp_V02_U2;
189     psACEInstPri->fpACE_SetFleshTone = MApi_XC_ACE_SetFleshTone_U2;
190     psACEInstPri->fpACE_SetBlackAdjust = MApi_XC_ACE_SetBlackAdjust_U2;
191     psACEInstPri->fpACE_Set_IHC_SRAM = MApi_XC_ACE_Set_IHC_SRAM_U2;
192     psACEInstPri->fpACE_Set_ICC_SRAM = MApi_XC_ACE_Set_ICC_SRAM_U2;
193     psACEInstPri->fpACE_EnableMWE = MApi_XC_ACE_EnableMWE_U2;
194     psACEInstPri->fpACE_MWECloneVisualEffect = MApi_XC_ACE_MWECloneVisualEffect_U2;
195     psACEInstPri->fpACE_MWESetRegTable = MApi_XC_ACE_MWESetRegTable_U2;
196     psACEInstPri->fpACE_SetMWELoadFromPQ = MApi_XC_ACE_SetMWELoadFromPQ_U2;
197     psACEInstPri->fpACE_MWEStatus = MApi_XC_ACE_MWEStatus_U2;
198     psACEInstPri->fpACE_MWEHandle = MApi_XC_ACE_MWEHandle_U2;
199     psACEInstPri->fpACE_MWEFuncSel = MApi_XC_ACE_MWEFuncSel_U2;
200     psACEInstPri->fpACE_MWESetDispWin = MApi_XC_ACE_MWESetDispWin_U2;
201     psACEInstPri->fpACE_3DClonePQMap = MApi_XC_ACE_3DClonePQMap_U2;
202     psACEInstPri->fpACE_DNR_Blending_NRTbl = MApi_XC_ACE_DNR_Blending_NRTbl_U2;
203     psACEInstPri->fpACE_DNR_Blending_MISC = MApi_XC_ACE_DNR_Blending_MISC_U2;
204     psACEInstPri->fpACE_DNR_Blending = MApi_XC_ACE_DNR_Blending_U2;
205     psACEInstPri->fpACE_DNR_Get_PrecisionShift = MApi_XC_ACE_DNR_Get_PrecisionShift_U2;
206     psACEInstPri->fpACE_DNR_GetMotion_Weight = MApi_XC_ACE_DNR_GetMotion_Weight_U2;
207     psACEInstPri->fpACE_DNR_GetLuma_Weight = MApi_XC_ACE_DNR_GetLuma_Weight_U2;
208     psACEInstPri->fpACE_DNR_GetNoise_Weight = MApi_XC_ACE_DNR_GetNoise_Weight_U2;
209     psACEInstPri->fpACE_DNR_GetMotion = MApi_XC_ACE_DNR_GetMotion_U2;
210     psACEInstPri->fpACE_DNR_Init_Motion = MApi_XC_ACE_DNR_Init_Motion_U2;
211     psACEInstPri->fpACE_DNR_Init_Luma = MApi_XC_ACE_DNR_Init_Luma_U2;
212     psACEInstPri->fpACE_DNR_Init_Noise = MApi_XC_ACE_DNR_Init_Noise_U2;
213     psACEInstPri->fpACE_DNR_SetParam = MApi_XC_ACE_DNR_SetParam_U2;
214     psACEInstPri->fpACE_DNR_GetParam = MApi_XC_ACE_DNR_GetParam_U2;
215     psACEInstPri->fpACE_DNR_SetNRTbl = MApi_XC_ACE_DNR_SetNRTbl_U2;
216     psACEInstPri->fpACE_GetLibVer = MApi_XC_ACE_GetLibVer_U2;
217     psACEInstPri->fpACE_GetInfo = MApi_XC_ACE_GetInfo_U2;
218     psACEInstPri->fpACE_GetStatus = MApi_XC_ACE_GetStatus_U2;
219     psACEInstPri->fpACE_SetDbgLevel = MApi_XC_ACE_SetDbgLevel_U2;
220     psACEInstPri->fpACE_ColorCorrectionTable = MApi_XC_ACE_ColorCorrectionTable_U2;
221     psACEInstPri->fpACE_SetColorMatrixControl = MApi_XC_ACE_SetColorMatrixControl_U2;
222     psACEInstPri->fpACE_SetRBChannelRange = MApi_XC_ACE_SetRBChannelRange_U2;
223     psACEInstPri->fpACE_PicSetPostColorTemp = MApi_XC_ACE_PicSetPostColorTemp_U2;
224     psACEInstPri->fpACE_PicSetPostColorTempEx = MApi_XC_ACE_PicSetPostColorTempEx_U2;
225     psACEInstPri->fpACE_PicSetPostColorTemp2 = MApi_XC_ACE_PicSetPostColorTemp2_U2;
226     psACEInstPri->fpACE_PicSetPostColorTemp2Ex = MApi_XC_ACE_PicSetPostColorTemp2Ex_U2;
227     psACEInstPri->fpACE_SetPowerState = MApi_XC_ACE_SetPowerState_U2;
228     psACEInstPri->fpACE_SetHDRInit = MApi_XC_ACE_SetHDRInit_U2;
229     return UTOPIA_STATUS_SUCCESS;
230 }
231 
232 
ACEIoctl(void * pInstance,MS_U32 u32Cmd,void * pArgs)233 MS_U32 ACEIoctl(void* pInstance, MS_U32 u32Cmd, void* pArgs)
234 {
235     void* pModule = NULL;
236     ACE_INSTANCE_PRIVATE* psACEInstPri = NULL;
237     UtopiaInstanceGetPrivate(pInstance, (void*)&psACEInstPri);
238     UtopiaInstanceGetModule(pInstance, &pModule);
239     //printf("[%s,%5d] u32Cmd type = %ld\n",__FUNCTION__,__LINE__,u32Cmd);
240 
241     switch(u32Cmd)
242     {
243         case E_ACE_CMD_INIT:
244             {
245                 pstACE_Init pACEArgs = (pstACE_Init)pArgs;
246                 pACEArgs->bReturn = psACEInstPri->fpACE_Init(pInstance, pACEArgs->pstXC_ACE_InitData, pACEArgs->u32InitDataLen);
247                 return UTOPIA_STATUS_SUCCESS;
248                 break;
249             }
250         case E_ACE_CMD_EXIT:
251             {
252                 pstACE_Exit pACEArgs = (pstACE_Exit)pArgs;
253                 pACEArgs->bReturn = psACEInstPri->fpACE_Exit(pInstance);
254 
255                 return UTOPIA_STATUS_SUCCESS;
256                 break;
257             }
258         case E_ACE_CMD_DMS:
259             {
260                 pstACE_DMS pACEArgs = (pstACE_DMS)pArgs;
261                 psACEInstPri->fpACE_DMS(pInstance, pACEArgs->eWindow, pACEArgs->bisATV);
262 
263                 return UTOPIA_STATUS_SUCCESS;
264                 break;
265             }
266         case E_ACE_CMD_SETPCYUV2RGB:
267             {
268                 pstACE_SetPCYUV2RGB pACEArgs = (pstACE_SetPCYUV2RGB)pArgs;
269                 psACEInstPri->fpACE_SetPCYUV2RGB(pInstance, pACEArgs->eWindow, pACEArgs->bEnable);
270 
271                 return UTOPIA_STATUS_SUCCESS;
272                 break;
273             }
274         case E_ACE_CMD_SELECTYUVTORGBMATRIX:
275             {
276                 pstACE_SelectYUVtoRGBMatrix pACEArgs = (pstACE_SelectYUVtoRGBMatrix)pArgs;
277                 psACEInstPri->fpACE_SelectYUVtoRGBMatrix(pInstance, pACEArgs->eWindow, pACEArgs->ucMatrix, pACEArgs->psUserYUVtoRGBMatrix);
278 
279                 return UTOPIA_STATUS_SUCCESS;
280                 break;
281             }
282         case E_ACE_CMD_SETCOLORCORRECTIONTABLE:
283             {
284                 pstACE_SetColorCorrectionTable pACEArgs = (pstACE_SetColorCorrectionTable)pArgs;
285                 psACEInstPri->fpACE_SetColorCorrectionTable(pInstance, pACEArgs->bScalerWin);
286 
287                 return UTOPIA_STATUS_SUCCESS;
288                 break;
289             }
290         case E_ACE_CMD_SETPCSRGBTABLE:
291             {
292                 pstACE_SetPCsRGBTable pACEArgs = (pstACE_SetPCsRGBTable)pArgs;
293                 psACEInstPri->fpACE_SetPCsRGBTable(pInstance, pACEArgs->bScalerWin);
294 
295                 return UTOPIA_STATUS_SUCCESS;
296                 break;
297             }
298         case E_ACE_CMD_GETCOLORMATRIX:
299             {
300                 pstACE_ColorMatrix pACEArgs = (pstACE_ColorMatrix)pArgs;
301                 psACEInstPri->fpACE_GetColorMatrix(pInstance, pACEArgs->eWindow, pACEArgs->pu16Matrix);
302 
303                 return UTOPIA_STATUS_SUCCESS;
304                 break;
305             }
306         case E_ACE_CMD_SETCOLORMATRIX:
307             {
308                 pstACE_ColorMatrix pACEArgs = (pstACE_ColorMatrix)pArgs;
309                 psACEInstPri->fpACE_SetColorMatrix(pInstance, pACEArgs->eWindow, pACEArgs->pu16Matrix);
310 
311                 return UTOPIA_STATUS_SUCCESS;
312                 break;
313             }
314         case E_ACE_CMD_SETBYPASSCOLORMATRIX:
315             {
316                 pstACE_SetBypassColorMatrix pACEArgs = (pstACE_SetBypassColorMatrix)pArgs;
317                 pACEArgs->eResult = psACEInstPri->fpACE_SetBypassColorMatrix(pInstance, pACEArgs->bEnable);
318 
319                 return UTOPIA_STATUS_SUCCESS;
320                 break;
321             }
322         case E_ACE_CMD_SETIHC:
323             {
324                 pstACE_SetIHC pACEArgs = (pstACE_SetIHC)pArgs;
325                 pACEArgs->bReturn = psACEInstPri->fpACE_SetIHC(pInstance, pACEArgs->bScalerWin, pACEArgs->eIHC, pACEArgs->u8Val);
326 
327                 return UTOPIA_STATUS_SUCCESS;
328                 break;
329             }
330         case E_ACE_CMD_SETICC:
331             {
332                 pstACE_SetICC pACEArgs = (pstACE_SetICC)pArgs;
333                 pACEArgs->bReturn = psACEInstPri->fpACE_SetICC(pInstance, pACEArgs->bScalerWin, pACEArgs->eICC, pACEArgs->u8Val);
334 
335                 return UTOPIA_STATUS_SUCCESS;
336                 break;
337             }
338         case E_ACE_CMD_SETIBC:
339             {
340                 pstACE_SetIBC pACEArgs = (pstACE_SetIBC)pArgs;
341                 pACEArgs->bReturn = psACEInstPri->fpACE_SetIBC(pInstance, pACEArgs->bScalerWin, pACEArgs->eIBC, pACEArgs->u8Val);
342 
343                 return UTOPIA_STATUS_SUCCESS;
344                 break;
345             }
346         case E_ACE_CMD_PATCHDTGCOLORCHECKER:
347             {
348                 pstACE_PatchDTGColorChecker pACEArgs = (pstACE_PatchDTGColorChecker)pArgs;
349                 psACEInstPri->fpACE_PatchDTGColorChecker(pInstance, pACEArgs->u8Mode);
350 
351                 return UTOPIA_STATUS_SUCCESS;
352                 break;
353             }
354         case E_ACE_CMD_GETACEINFO:
355             {
356                 pstACE_GetACEInfo pACEArgs = (pstACE_GetACEInfo)pArgs;
357                 pACEArgs->u16Return = psACEInstPri->fpACE_GetACEInfo(pInstance, pACEArgs->bWindow, pACEArgs->eXCACEInfoType);
358 
359                 return UTOPIA_STATUS_SUCCESS;
360                 break;
361             }
362         case E_ACE_CMD_GETACEINFOEX:
363             {
364                 pstACE_GetACEInfoEx pACEArgs = (pstACE_GetACEInfoEx)pArgs;
365                 psACEInstPri->fpACE_GetACEInfoEx(pInstance, pACEArgs->bWindow, pACEArgs->pInfoEx);
366 
367                 return UTOPIA_STATUS_SUCCESS;
368                 break;
369             }
370         case E_ACE_CMD_PICSETCONTRAST:
371             {
372                 pstACE_PicSetContrast pACEArgs = (pstACE_PicSetContrast)pArgs;
373                 psACEInstPri->fpACE_PicSetContrast(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->u8Contrast);
374 
375                 return UTOPIA_STATUS_SUCCESS;
376                 break;
377             }
378         case E_ACE_CMD_PICSETBRIGHTNESS:
379             {
380                 pstACE_PicSetBrightness pACEArgs = (pstACE_PicSetBrightness)pArgs;
381                 psACEInstPri->fpACE_PicSetBrightness(pInstance, pACEArgs->eWindow, pACEArgs->u8Brightness_R, pACEArgs->u8Brightness_G, pACEArgs->u8Brightness_B);
382 
383                 return UTOPIA_STATUS_SUCCESS;
384                 break;
385             }
386         case E_ACE_CMD_PICSETBRIGHTNESSPRECISE:
387             {
388                 pstACE_PicSetBrightnessPrecise pACEArgs = (pstACE_PicSetBrightnessPrecise)pArgs;
389                 psACEInstPri->fpACE_PicSetBrightnessPrecise(pInstance, pACEArgs->eWindow, pACEArgs->u16Brightness_R, pACEArgs->u16Brightness_G, pACEArgs->u16Brightness_B);
390 
391                 return UTOPIA_STATUS_SUCCESS;
392                 break;
393             }
394         case E_ACE_CMD_PICSET_PRE_Y_OFFSET:
395             {
396                 pstACE_PreYOffset pstACEArgs = (pstACE_PreYOffset)pArgs;
397                 MS_BOOL bResult = psACEInstPri->fpACE_PicSetPreYOffset(pInstance, pstACEArgs->eWindow, pstACEArgs->u8PreYOffset);
398 
399                 if (bResult)
400                 {
401                     return UTOPIA_STATUS_SUCCESS;
402                 }
403                 else
404                 {
405                     return UTOPIA_STATUS_FAIL;
406                 }
407             }
408         case E_ACE_CMD_PICGET_PRE_Y_OFFSET:
409             {
410                 pstACE_PreYOffset pstACEArgs = (pstACE_PreYOffset)pArgs;
411                 pstACEArgs->u8PreYOffset = psACEInstPri->fpACE_PicGetPreYOffset(pInstance, pstACEArgs->eWindow);
412 
413                 return UTOPIA_STATUS_SUCCESS;
414             }
415         case E_ACE_CMD_PICSETHUE:
416             {
417                 pstACE_PicSetHue pACEArgs = (pstACE_PicSetHue)pArgs;
418                 psACEInstPri->fpACE_PicSetHue(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->u8Hue);
419 
420                 return UTOPIA_STATUS_SUCCESS;
421                 break;
422             }
423         case E_ACE_CMD_SKIPWAITVSYNC:
424             {
425                 pstACE_SkipWaitVsync pACEArgs = (pstACE_SkipWaitVsync)pArgs;
426                 pACEArgs->eResult = psACEInstPri->fpACE_SkipWaitVsync(pInstance, pACEArgs->eWindow, pACEArgs->bIsSkipWaitVsyn);
427 
428                 return UTOPIA_STATUS_SUCCESS;
429                 break;
430             }
431         case E_ACE_CMD_PICSETSATURATION:
432             {
433                 pstACE_PicSetSaturation pACEArgs = (pstACE_PicSetSaturation)pArgs;
434                 psACEInstPri->fpACE_PicSetSaturation(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->u8Saturation);
435 
436                 return UTOPIA_STATUS_SUCCESS;
437                 break;
438             }
439         case E_ACE_CMD_PICSETSHARPNESS:
440             {
441                 pstACE_PicSetSharpness pACEArgs = (pstACE_PicSetSharpness)pArgs;
442                 psACEInstPri->fpACE_PicSetSharpness(pInstance, pACEArgs->eWindow, pACEArgs->u8Sharpness );
443 
444                 return UTOPIA_STATUS_SUCCESS;
445                 break;
446             }
447         case E_ACE_CMD_PICSETCOLORTEMP:
448             {
449                 pstACE_PicSetColorTemp pACEArgs = (pstACE_PicSetColorTemp)pArgs;
450                 psACEInstPri->fpACE_PicSetColorTemp(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->pstColorTemp);
451 
452                 return UTOPIA_STATUS_SUCCESS;
453                 break;
454             }
455         case E_ACE_CMD_PICSETCOLORTEMPEX:
456             {
457                 pstACE_PicSetColorTempEx pACEArgs = (pstACE_PicSetColorTempEx)pArgs;
458                 psACEInstPri->fpACE_PicSetColorTempEx(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->pstColorTemp);
459 
460                 return UTOPIA_STATUS_SUCCESS;
461                 break;
462             }
463         case E_ACE_CMD_PICSETCOLORTEMP_10BITS:
464             {
465                 pstACE_PicSetColorTempEx pACEArgs = (pstACE_PicSetColorTempEx)pArgs;
466                 psACEInstPri->fpACE_PicSetColorTemp_10Bits(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->pstColorTemp);
467 
468                 return UTOPIA_STATUS_SUCCESS;
469                 break;
470             }
471         case E_ACE_CMD_PICSETPOSTCOLORTEMP_V02:
472             {
473                 pstACE_PicSetPostColorTemp_V02 pACEArgs = (pstACE_PicSetPostColorTemp_V02)pArgs;
474                 psACEInstPri->fpACE_PicSetPostColorTemp_V02(pInstance, pACEArgs->eWindow, pACEArgs->pstColorTemp);
475 
476                 return UTOPIA_STATUS_SUCCESS;
477                 break;
478             }
479         case E_ACE_CMD_SETFLESHTONE:
480             {
481                 pstACE_SetFleshTone pACEArgs = (pstACE_SetFleshTone)pArgs;
482                 psACEInstPri->fpACE_SetFleshTone(pInstance, pACEArgs->eWindow, pACEArgs->bEn, pACEArgs->u8FleshTone);
483 
484                 return UTOPIA_STATUS_SUCCESS;
485                 break;
486             }
487         case E_ACE_CMD_SETBLACKADJUST:
488             {
489                 pstACE_SetBlackAdjust pACEArgs = (pstACE_SetBlackAdjust)pArgs;
490                 psACEInstPri->fpACE_SetBlackAdjust(pInstance, pACEArgs->eWindow, pACEArgs->u8BlackAdjust);
491 
492                 return UTOPIA_STATUS_SUCCESS;
493                 break;
494             }
495         case E_ACE_CMD_SET_IHC_SRAM:
496             {
497                 pstACE_Set_IHC_SRAM pACEArgs = (pstACE_Set_IHC_SRAM)pArgs;
498                 pACEArgs->bReturn = psACEInstPri->fpACE_Set_IHC_SRAM(pInstance, pACEArgs->pBuf, pACEArgs->u16ByteSize);
499 
500                 return UTOPIA_STATUS_SUCCESS;
501                 break;
502             }
503         case E_ACE_CMD_SET_ICC_SRAM:
504             {
505                 pstACE_Set_ICC_SRAM pACEArgs = (pstACE_Set_ICC_SRAM)pArgs;
506                 pACEArgs->bReturn = psACEInstPri->fpACE_Set_ICC_SRAM(pInstance, pACEArgs->pBuf, pACEArgs->u16ByteSize);
507 
508                 return UTOPIA_STATUS_SUCCESS;
509                 break;
510             }
511         case E_ACE_CMD_ENABLEMWE:
512             {
513                 pstACE_EnableMWE pACEArgs = (pstACE_EnableMWE)pArgs;
514                 psACEInstPri->fpACE_EnableMWE(pInstance, pACEArgs->bEnable);
515 
516                 return UTOPIA_STATUS_SUCCESS;
517                 break;
518             }
519         case E_ACE_CMD_MWECLONEVISUALEFFECT:
520             {
521                 psACEInstPri->fpACE_MWECloneVisualEffect(pInstance);
522 
523                 return UTOPIA_STATUS_SUCCESS;
524                 break;
525             }
526         case E_ACE_CMD_MWESETREGTABLE:
527             {
528                 pstACE_MWESetRegTable pACEArgs = (pstACE_MWESetRegTable)pArgs;
529                 pACEArgs->bReturn = psACEInstPri->fpACE_MWESetRegTable(pInstance, pACEArgs->pMWETable);
530 
531                 return UTOPIA_STATUS_SUCCESS;
532                 break;
533             }
534         case E_ACE_CMD_SETMWELOADFROMPQ:
535             {
536                 pstACE_SetMWELoadFromPQ pACEArgs = (pstACE_SetMWELoadFromPQ)pArgs;
537                 pACEArgs->bReturn = psACEInstPri->fpACE_SetMWELoadFromPQ(pInstance, pACEArgs->bEnable);
538 
539                 return UTOPIA_STATUS_SUCCESS;
540                 break;
541             }
542         case E_ACE_CMD_MWESTATUS:
543             {
544                 pstACE_MWEStatus pACEArgs = (pstACE_MWEStatus)pArgs;
545                 pACEArgs->bReturn = psACEInstPri->fpACE_MWEStatus(pInstance);
546 
547                 return UTOPIA_STATUS_SUCCESS;
548                 break;
549             }
550         case E_ACE_CMD_MWEHANDLE:
551             {
552                 psACEInstPri->fpACE_MWEHandle(pInstance);
553 
554                 return UTOPIA_STATUS_SUCCESS;
555                 break;
556             }
557         case E_ACE_CMD_MWEFUNCSEL:
558             {
559                 pstACE_MWEFuncSel pACEArgs = (pstACE_MWEFuncSel)pArgs;
560                 psACEInstPri->fpACE_MWEFuncSel(pInstance, pACEArgs->eWindow, pACEArgs->mwe_func);
561 
562                 return UTOPIA_STATUS_SUCCESS;
563                 break;
564             }
565         case E_ACE_CMD_MWESETDISPWIN:
566             {
567                 pstACE_MWESetDispWin pACEArgs = (pstACE_MWESetDispWin)pArgs;
568                 psACEInstPri->fpACE_MWESetDispWin(pInstance, pACEArgs->u16MWE_Disp_Hstart, pACEArgs->u16MWE_Disp_Vstart, pACEArgs->u16MWE_Disp_Width, pACEArgs->u16MWE_Disp_Height);
569 
570                 return UTOPIA_STATUS_SUCCESS;
571                 break;
572             }
573         case E_ACE_CMD_3DCLONEPQMAP:
574             {
575                 pstACE_3DClonePQMap pACEArgs = (pstACE_3DClonePQMap)pArgs;
576                 psACEInstPri->fpACE_3DClonePQMap(pInstance, pACEArgs->enWeaveType);
577 
578                 return UTOPIA_STATUS_SUCCESS;
579                 break;
580             }
581         case E_ACE_CMD_DNR_BLENDING_NRTBL:
582             {
583                 pstACE_DNR_Blending_NRTbl pACEArgs = (pstACE_DNR_Blending_NRTbl)pArgs;
584                 psACEInstPri->fpACE_DNR_Blending_NRTbl(pInstance,
585                         pACEArgs->pu8NewNR,
586                         pACEArgs->u8Weight,
587                         pACEArgs->u8Step,
588                         pACEArgs->pu16PreY0,
589                         pACEArgs->pu16PreY1,
590                         pACEArgs->pu8NRTBL);
591 
592                 return UTOPIA_STATUS_SUCCESS;
593                 break;
594             }
595         case E_ACE_CMD_DNR_BLENDING_MISC:
596             {
597                 pstACE_DNR_Blending_MISC pACEArgs = (pstACE_DNR_Blending_MISC)pArgs;
598                 pACEArgs->u16Return = psACEInstPri->fpACE_DNR_Blending_MISC(pInstance, pACEArgs->u8NewItem, pACEArgs->u16PreItem, pACEArgs->u8Weight, pACEArgs->u8Step);
599 
600                 return UTOPIA_STATUS_SUCCESS;
601                 break;
602             }
603         case E_ACE_CMD_DNR_BLENDING:
604             {
605                 pstACE_DNR_Blending pACEArgs = (pstACE_DNR_Blending)pArgs;
606                 pACEArgs->u8Return = psACEInstPri->fpACE_DNR_Blending(pInstance, pACEArgs->u8NewItem, pACEArgs->u16PreItem, pACEArgs->u8Weight);
607 
608                 return UTOPIA_STATUS_SUCCESS;
609                 break;
610             }
611         case E_ACE_CMD_DNR_GET_PRECISIONSHIFT:
612             {
613                 pstACE_DNR_Get_PrecisionShift pACEArgs = (pstACE_DNR_Get_PrecisionShift)pArgs;
614                 pACEArgs->u16Return = psACEInstPri->fpACE_DNR_Get_PrecisionShift(pInstance);
615 
616                 return UTOPIA_STATUS_SUCCESS;
617                 break;
618             }
619         case E_ACE_CMD_DNR_GETMOTION_WEIGHT:
620             {
621                 pstACE_DNR_GetMotion_Weight pACEArgs = (pstACE_DNR_GetMotion_Weight)pArgs;
622                 pACEArgs->u8Return = psACEInstPri->fpACE_DNR_GetMotion_Weight(pInstance,
623                         pACEArgs->u8CurMotion,
624                         pACEArgs->u8PreMotion,
625                         pACEArgs->u8CurMotionLvl,
626                         pACEArgs->u8PreMotionLvl,
627                         pACEArgs->u8DeFlick_Thre,
628                         pACEArgs->u8DeFilick_Step);
629 
630                 return UTOPIA_STATUS_SUCCESS;
631                 break;
632             }
633         case E_ACE_CMD_DNR_GETLUMA_WEIGHT:
634             {
635                 pstACE_DNR_GetLuma_Weight pACEArgs = (pstACE_DNR_GetLuma_Weight)pArgs;
636                 pACEArgs->u8Return = psACEInstPri->fpACE_DNR_GetLuma_Weight(pInstance,
637                         pACEArgs->u8CurAvgLuma,
638                         pACEArgs->u8PreAvgLuam,
639                         pACEArgs->u8CurLumaLvl,
640                         pACEArgs->u8PreLumaLvl,
641                         pACEArgs->u8DeFlick_Th,
642                         pACEArgs->u8DeFlick_Step);
643 
644 
645                 return UTOPIA_STATUS_SUCCESS;
646                 break;
647             }
648         case E_ACE_CMD_DNR_GETNOISE_WEIGHT:
649             {
650                 pstACE_DNR_GetNoise_Weight pACEArgs = (pstACE_DNR_GetNoise_Weight)pArgs;
651                 pACEArgs->u8Return = psACEInstPri->fpACE_DNR_GetNoise_Weight(pInstance,
652                         pACEArgs->u8CurNoise,
653                         pACEArgs->u8PreNoise,
654                         pACEArgs->u8Range,
655                         pACEArgs->u8DeFlick_Th,
656                         pACEArgs->u8DeFlick_Step);
657 
658 
659                 return UTOPIA_STATUS_SUCCESS;
660                 break;
661             }
662         case E_ACE_CMD_DNR_GETMOTION:
663             {
664                 pstACE_DNR_GetMotion pACEArgs = (pstACE_DNR_GetMotion)pArgs;
665                 pACEArgs->u8Return = psACEInstPri->fpACE_DNR_GetMotion(pInstance);
666 
667                 return UTOPIA_STATUS_SUCCESS;
668                 break;
669             }
670         case E_ACE_CMD_DNR_INIT_MOTION:
671             {
672                 psACEInstPri->fpACE_DNR_Init_Motion(pInstance);
673 
674                 return UTOPIA_STATUS_SUCCESS;
675                 break;
676             }
677         case E_ACE_CMD_DNR_INIT_LUMA:
678             {
679                 psACEInstPri->fpACE_DNR_Init_Luma(pInstance);
680 
681                 return UTOPIA_STATUS_SUCCESS;
682                 break;
683             }
684         case E_ACE_CMD_DNR_INIT_NOISE:
685             {
686                 psACEInstPri->fpACE_DNR_Init_Noise(pInstance);
687 
688                 return UTOPIA_STATUS_SUCCESS;
689                 break;
690             }
691         case E_ACE_CMD_DNR_SETPARAM:
692             {
693                 pstACE_DNR_SetParam pACEArgs = (pstACE_DNR_SetParam)pArgs;
694                 psACEInstPri->fpACE_DNR_SetParam(pInstance, pACEArgs->eWindow, pACEArgs->eParam, pACEArgs->u16val);
695 
696                 return UTOPIA_STATUS_SUCCESS;
697                 break;
698             }
699         case E_ACE_CMD_DNR_GETPARAM:
700             {
701                 pstACE_DNR_GetParam pACEArgs = (pstACE_DNR_GetParam)pArgs;
702                 pACEArgs->u8Return = psACEInstPri->fpACE_DNR_GetParam(pInstance, pACEArgs->eWindow, pACEArgs->eParam);
703 
704                 return UTOPIA_STATUS_SUCCESS;
705                 break;
706             }
707         case E_ACE_CMD_DNR_SETNRTBL:
708             {
709                 pstACE_DNR_SetNRTbl pACEArgs = (pstACE_DNR_SetNRTbl)pArgs;
710                 psACEInstPri->fpACE_DNR_SetNRTbl(pInstance, pACEArgs->pu8Tbl);
711 
712                 return UTOPIA_STATUS_SUCCESS;
713                 break;
714             }
715         case E_ACE_CMD_GETLIBVER:
716             {
717                 pstACE_GetLibVer pACEArgs = (pstACE_GetLibVer)pArgs;
718                 pACEArgs->eResult = psACEInstPri->fpACE_GetLibVer(pInstance, pACEArgs->ppVersion);
719 
720                 return UTOPIA_STATUS_SUCCESS;
721                 break;
722             }
723         case E_ACE_CMD_GETINFO:
724             {
725                 pstACE_GetInfo pACEArgs = (pstACE_GetInfo)pArgs;
726                 pACEArgs->pstApiInfo = psACEInstPri->fpACE_GetInfo(pInstance);
727 
728                 return UTOPIA_STATUS_SUCCESS;
729                 break;
730             }
731         case E_ACE_CMD_GETSTATUS:
732             {
733                 pstACE_GetStatus pACEArgs = (pstACE_GetStatus)pArgs;
734                 pACEArgs->bReturn = psACEInstPri->fpACE_GetStatus(pInstance, pACEArgs->pDrvStatus, pACEArgs->bWindow);
735 
736                 return UTOPIA_STATUS_SUCCESS;
737                 break;
738             }
739         case E_ACE_CMD_SETDBGLEVEL:
740             {
741                 pstACE_SetDbgLevel pACEArgs = (pstACE_SetDbgLevel)pArgs;
742                 pACEArgs->bReturn = psACEInstPri->fpACE_SetDbgLevel(pInstance, pACEArgs->u16DbgSwitch);
743 
744                 return UTOPIA_STATUS_SUCCESS;
745                 break;
746             }
747         case E_ACE_CMD_COLORCORRECTIONTABLE:
748             {
749                 pstACE_ColorCorrectionTable pACEArgs = (pstACE_ColorCorrectionTable)pArgs;
750                 psACEInstPri->fpACE_ColorCorrectionTable(pInstance, pACEArgs->bScalerWin, pACEArgs->psColorCorrectionTable);
751 
752                 return UTOPIA_STATUS_SUCCESS;
753                 break;
754             }
755         case E_ACE_CMD_SETCOLORMATRIXCONTROL:
756             {
757                 pstACE_SetColorMatrixControl pACEArgs = (pstACE_SetColorMatrixControl)pArgs;
758                 psACEInstPri->fpACE_SetColorMatrixControl(pInstance, pACEArgs->bScalerWin, pACEArgs->bEnable);
759 
760                 return UTOPIA_STATUS_SUCCESS;
761                 break;
762             }
763         case E_ACE_CMD_SETRBCHANNELRANGE:
764             {
765                 pstACE_SetRBChannelRange pACEArgs = (pstACE_SetRBChannelRange)pArgs;
766                 psACEInstPri->fpACE_SetRBChannelRange(pInstance, pACEArgs->bScalerWin, pACEArgs->bRange);
767 
768                 return UTOPIA_STATUS_SUCCESS;
769                 break;
770             }
771         case E_ACE_CMD_PICSETPOSTCOLORTEMP:
772             {
773                 pstACE_PicSetPostColorTemp pACEArgs = (pstACE_PicSetPostColorTemp)pArgs;
774                 psACEInstPri->fpACE_PicSetPostColorTemp(pInstance, pACEArgs->eWindow, pACEArgs->pstColorTemp);
775 
776                 return UTOPIA_STATUS_SUCCESS;
777                 break;
778             }
779         case E_ACE_CMD_PICSETPOSTCOLORTEMPEX:
780             {
781                 pstACE_PicSetPostColorTempEx pACEArgs = (pstACE_PicSetPostColorTempEx)pArgs;
782                 psACEInstPri->fpACE_PicSetPostColorTempEx(pInstance, pACEArgs->eWindow, pACEArgs->pstColorTemp);
783 
784                 return UTOPIA_STATUS_SUCCESS;
785                 break;
786             }
787         case E_ACE_CMD_PICSETPOSTCOLORTEMP2:
788             {
789                 pstACE_PicSetColorTemp pACEArgs = (pstACE_PicSetColorTemp)pArgs;
790                 psACEInstPri->fpACE_PicSetPostColorTemp2(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->pstColorTemp);
791 
792                 return UTOPIA_STATUS_SUCCESS;
793                 break;
794             }
795         case E_ACE_CMD_PICSETPOSTCOLORTEMP2EX:
796             {
797                 pstACE_PicSetPostColorTempEx pACEArgs = (pstACE_PicSetPostColorTempEx)pArgs;
798                 psACEInstPri->fpACE_PicSetPostColorTemp2Ex(pInstance, pACEArgs->eWindow, pACEArgs->bUseYUVSpace, pACEArgs->pstColorTemp);
799 
800                 return UTOPIA_STATUS_SUCCESS;
801                 break;
802             }
803         case E_ACE_CMD_SET_POWERSTATE:
804             {
805                 pstACE_Set_PowerState pACEArgs = (pstACE_Set_PowerState)pArgs;
806                 pACEArgs->u32Return = psACEInstPri->fpACE_SetPowerState(pInstance, pACEArgs->enPowerState);
807 
808                 return UTOPIA_STATUS_SUCCESS;
809                 break;
810             }
811         case E_ACE_CMD_SET_HDR_INFO:
812             {
813                 pstACE_HDRInitData pACEArgs = (pstACE_HDRInitData)pArgs;
814                 pACEArgs->bReturn = psACEInstPri->fpACE_SetHDRInit(pInstance, pACEArgs->pstHDRInitData);
815 
816                 return UTOPIA_STATUS_SUCCESS;
817                 break;
818             }
819 
820         default:
821             printf("Error Command = %td\n",(ptrdiff_t)u32Cmd);
822             break;
823 
824     }
825     return UTOPIA_STATUS_SUCCESS;
826 }
827 
ACEClose(void * pInstance)828 MS_U32 ACEClose(void* pInstance)
829 {
830     UtopiaInstanceDelete(pInstance);
831 
832     return UTOPIA_STATUS_SUCCESS;
833 }
834 
835