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