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