xref: /utopia/UTPA2-700.0.x/mxlib/include/apiXC_Ace_EX.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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 /// @file   apiXC_ACE_EX.h
98*53ee8cc1Swenshuai.xi /// @brief  ACE EXTENSION API layer Interface FOR DUAL STREAMS
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi /// CL 227231+:In box case, there is no need to do YUV2RGB transform.
101*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi #ifndef _API_XC_ACE_EX_H_
104*53ee8cc1Swenshuai.xi #define _API_XC_ACE_EX_H_
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi // Common Definition
107*53ee8cc1Swenshuai.xi #include "MsDevice.h"
108*53ee8cc1Swenshuai.xi #include "MsCommon.h"
109*53ee8cc1Swenshuai.xi #include "MsVersion.h"
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi #ifdef __cplusplus
112*53ee8cc1Swenshuai.xi extern "C"
113*53ee8cc1Swenshuai.xi {
114*53ee8cc1Swenshuai.xi #endif
115*53ee8cc1Swenshuai.xi 
116*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
117*53ee8cc1Swenshuai.xi //  Macro and Define
118*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
121*53ee8cc1Swenshuai.xi //  Type and Structure
122*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
123*53ee8cc1Swenshuai.xi #define MSIF_ACE_EX_LIB_CODE               {'A','E','X','_'}
124*53ee8cc1Swenshuai.xi #define MSIF_ACE_EX_LIBVER                 {'0','0'}
125*53ee8cc1Swenshuai.xi #define MSIF_ACE_EX_BUILDNUM               {'5','9'}
126*53ee8cc1Swenshuai.xi #define MSIF_ACE_EX_CHANGELIST             {'0','0','6','2','1','0','5','3'}
127*53ee8cc1Swenshuai.xi #define XC_ACE_EX_API_VERSION              /* Character String for DRV/API version             */  \
128*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
129*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
130*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
131*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
132*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
133*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
134*53ee8cc1Swenshuai.xi     MSIF_ACE_EX_LIB_CODE,                  /* IP__                                             */  \
135*53ee8cc1Swenshuai.xi     MSIF_ACE_EX_LIBVER,                    /* 0.0 ~ Z.Z                                        */  \
136*53ee8cc1Swenshuai.xi     MSIF_ACE_EX_BUILDNUM,                  /* 00 ~ 99                                          */  \
137*53ee8cc1Swenshuai.xi     MSIF_ACE_EX_CHANGELIST,                /* CL#                                              */  \
138*53ee8cc1Swenshuai.xi     MSIF_OS
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi /// Define XC ACE device number
141*53ee8cc1Swenshuai.xi typedef enum
142*53ee8cc1Swenshuai.xi {
143*53ee8cc1Swenshuai.xi     XC_ACE_EX_DEVICE0 = 0,
144*53ee8cc1Swenshuai.xi     XC_ACE_EX_DEVICE1,
145*53ee8cc1Swenshuai.xi     XC_ACE_EX_MAX_DEVICE_NUM
146*53ee8cc1Swenshuai.xi } XC_ACE_EX_DEVICE_NUM;
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi /*!
149*53ee8cc1Swenshuai.xi    The color information setting.
150*53ee8cc1Swenshuai.xi */
151*53ee8cc1Swenshuai.xi typedef enum
152*53ee8cc1Swenshuai.xi {
153*53ee8cc1Swenshuai.xi     /// Version
154*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_VERSION,
155*53ee8cc1Swenshuai.xi     /// Contrast
156*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_CONTRAST,
157*53ee8cc1Swenshuai.xi     /// R Gain
158*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_R_GAIN,
159*53ee8cc1Swenshuai.xi     /// G Gain
160*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_G_GAIN,
161*53ee8cc1Swenshuai.xi     /// B Gain
162*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_B_GAIN,
163*53ee8cc1Swenshuai.xi     /// Saturation
164*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_SATURATION,
165*53ee8cc1Swenshuai.xi     /// Hue
166*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_HUE,
167*53ee8cc1Swenshuai.xi     /// Color correction XY R
168*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_COLOR_CORRECTION_XY_R,
169*53ee8cc1Swenshuai.xi     /// Color correction XY G
170*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_COLOR_CORRECTION_XY_G,
171*53ee8cc1Swenshuai.xi     /// Color correction XY B
172*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_COLOR_CORRECTION_XY_B,
173*53ee8cc1Swenshuai.xi     /// Color correction Offset R
174*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_COLOR_CORRECTION_OFFSET_R,
175*53ee8cc1Swenshuai.xi     /// Color correction Offset G
176*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_COLOR_CORRECTION_OFFSET_G,
177*53ee8cc1Swenshuai.xi     /// Color correction Offset B
178*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_COLOR_CORRECTION_OFFSET_B,
179*53ee8cc1Swenshuai.xi     /// R Brightness
180*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_BRIGHTNESS_R,
181*53ee8cc1Swenshuai.xi     /// G Brightness
182*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_BRIGHTNESS_G,
183*53ee8cc1Swenshuai.xi     /// B Brightness
184*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_BRIGHTNESS_B,
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi     /// Dummy
187*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_INFO_TYPE_DUMMY
188*53ee8cc1Swenshuai.xi } E_XC_ACE_EX_INFOTYPE;
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi /*!
191*53ee8cc1Swenshuai.xi     The convert method of YUV to RGB
192*53ee8cc1Swenshuai.xi */
193*53ee8cc1Swenshuai.xi typedef enum
194*53ee8cc1Swenshuai.xi {
195*53ee8cc1Swenshuai.xi     /// YUV to RGB matrix - Use Std CSCM for SDTV
196*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_YUV_TO_RGB_MATRIX_SDTV,
197*53ee8cc1Swenshuai.xi     /// YUV to RGB matrix - Use Std CSCM for HDTV
198*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_YUV_TO_RGB_MATRIX_HDTV,
199*53ee8cc1Swenshuai.xi     /// Use user define CSCM, specified by tUserYVUtoRGBMatrix
200*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_YUV_TO_RGB_MATRIX_USER,
201*53ee8cc1Swenshuai.xi } E_XC_ACE_EX_YUVTORGBTYPE;
202*53ee8cc1Swenshuai.xi 
203*53ee8cc1Swenshuai.xi /*!
204*53ee8cc1Swenshuai.xi    The Effect Settings of Multi Window
205*53ee8cc1Swenshuai.xi */
206*53ee8cc1Swenshuai.xi typedef enum
207*53ee8cc1Swenshuai.xi {
208*53ee8cc1Swenshuai.xi     /// off
209*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MODE_OFF,
210*53ee8cc1Swenshuai.xi     /// H split, reference window at right side,default
211*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MODE_H_SPLIT,
212*53ee8cc1Swenshuai.xi     /// Move
213*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MODE_MOVE,
214*53ee8cc1Swenshuai.xi     /// Zoom
215*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MODE_ZOOM,
216*53ee8cc1Swenshuai.xi     /// H Scan
217*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MODE_H_SCAN,
218*53ee8cc1Swenshuai.xi     /// H split, reference window at left side
219*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MODE_H_SPLIT_LEFT,
220*53ee8cc1Swenshuai.xi     /// The number of Scaler ACE MWE functoin
221*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MODE_NUMS,
222*53ee8cc1Swenshuai.xi } E_XC_ACE_EX_MWE_FUNC;
223*53ee8cc1Swenshuai.xi 
224*53ee8cc1Swenshuai.xi /*!
225*53ee8cc1Swenshuai.xi    The Result of XC_ACE function call.
226*53ee8cc1Swenshuai.xi */
227*53ee8cc1Swenshuai.xi typedef enum
228*53ee8cc1Swenshuai.xi {
229*53ee8cc1Swenshuai.xi     /// fail
230*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_FAIL = 0,
231*53ee8cc1Swenshuai.xi     /// ok
232*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_OK = 1,
233*53ee8cc1Swenshuai.xi     /// get base address failed when initialize panel driver
234*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_GET_BASEADDR_FAIL,
235*53ee8cc1Swenshuai.xi     /// obtain mutex timeout when calling this function
236*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_OBTAIN_MUTEX_FAIL,
237*53ee8cc1Swenshuai.xi } E_XC_ACE_EX_RESULT;
238*53ee8cc1Swenshuai.xi 
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi typedef enum
241*53ee8cc1Swenshuai.xi {
242*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MIRROR_NORMAL,
243*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MIRROR_H_ONLY,
244*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MIRROR_V_ONLY,
245*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MIRROR_HV,
246*53ee8cc1Swenshuai.xi     E_XC_ACE_EX_MWE_MIRROR_MAX,
247*53ee8cc1Swenshuai.xi }E_XC_ACE_EX_MWE_MIRROR_TYPE;
248*53ee8cc1Swenshuai.xi 
249*53ee8cc1Swenshuai.xi /*!
250*53ee8cc1Swenshuai.xi    obosolte!! use XC_ACE_EX_color_temp_ex2 instead
251*53ee8cc1Swenshuai.xi */
252*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
253*53ee8cc1Swenshuai.xi {
254*53ee8cc1Swenshuai.xi     /// red color offset
255*53ee8cc1Swenshuai.xi     MS_U8 cRedOffset;
256*53ee8cc1Swenshuai.xi     /// green color offset
257*53ee8cc1Swenshuai.xi     MS_U8 cGreenOffset;
258*53ee8cc1Swenshuai.xi     /// blue color offset
259*53ee8cc1Swenshuai.xi     MS_U8 cBlueOffset;
260*53ee8cc1Swenshuai.xi 
261*53ee8cc1Swenshuai.xi     /// red color
262*53ee8cc1Swenshuai.xi     MS_U8 cRedColor;
263*53ee8cc1Swenshuai.xi     /// green color
264*53ee8cc1Swenshuai.xi     MS_U8 cGreenColor;
265*53ee8cc1Swenshuai.xi     /// blue color
266*53ee8cc1Swenshuai.xi     MS_U8 cBlueColor;
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi     /// scale 100 value of red color
269*53ee8cc1Swenshuai.xi     MS_U8 cRedScaleValue;
270*53ee8cc1Swenshuai.xi     /// scale 100 value of green color
271*53ee8cc1Swenshuai.xi     MS_U8 cGreenScaleValue;
272*53ee8cc1Swenshuai.xi     /// scale 100 value of blue color
273*53ee8cc1Swenshuai.xi     MS_U8 cBlueScaleValue;
274*53ee8cc1Swenshuai.xi } XC_ACE_EX_color_temp;
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi /*!
277*53ee8cc1Swenshuai.xi    obosolte!! use XC_ACE_EX_color_temp_ex2 instead
278*53ee8cc1Swenshuai.xi */
279*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
280*53ee8cc1Swenshuai.xi {
281*53ee8cc1Swenshuai.xi     /// red color offset
282*53ee8cc1Swenshuai.xi     MS_U16 cRedOffset;
283*53ee8cc1Swenshuai.xi     /// green color offset
284*53ee8cc1Swenshuai.xi     MS_U16 cGreenOffset;
285*53ee8cc1Swenshuai.xi     /// blue color offset
286*53ee8cc1Swenshuai.xi     MS_U16 cBlueOffset;
287*53ee8cc1Swenshuai.xi 
288*53ee8cc1Swenshuai.xi     /// red color
289*53ee8cc1Swenshuai.xi     MS_U8 cRedColor;
290*53ee8cc1Swenshuai.xi     /// green color
291*53ee8cc1Swenshuai.xi     MS_U8 cGreenColor;
292*53ee8cc1Swenshuai.xi     /// blue color
293*53ee8cc1Swenshuai.xi     MS_U8 cBlueColor;
294*53ee8cc1Swenshuai.xi 
295*53ee8cc1Swenshuai.xi     /// scale 100 value of red color
296*53ee8cc1Swenshuai.xi     MS_U8 cRedScaleValue;
297*53ee8cc1Swenshuai.xi     /// scale 100 value of green color
298*53ee8cc1Swenshuai.xi     MS_U8 cGreenScaleValue;
299*53ee8cc1Swenshuai.xi     /// scale 100 value of blue color
300*53ee8cc1Swenshuai.xi     MS_U8 cBlueScaleValue;
301*53ee8cc1Swenshuai.xi } XC_ACE_EX_color_temp_ex;
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi /*!
304*53ee8cc1Swenshuai.xi    The color temp settings ex2.
305*53ee8cc1Swenshuai.xi */
306*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
307*53ee8cc1Swenshuai.xi {
308*53ee8cc1Swenshuai.xi     /// red color offset
309*53ee8cc1Swenshuai.xi     MS_U16 cRedOffset;
310*53ee8cc1Swenshuai.xi     /// green color offset
311*53ee8cc1Swenshuai.xi     MS_U16 cGreenOffset;
312*53ee8cc1Swenshuai.xi     /// blue color offset
313*53ee8cc1Swenshuai.xi     MS_U16 cBlueOffset;
314*53ee8cc1Swenshuai.xi 
315*53ee8cc1Swenshuai.xi     /// red color
316*53ee8cc1Swenshuai.xi     MS_U16 cRedColor;
317*53ee8cc1Swenshuai.xi     /// green color
318*53ee8cc1Swenshuai.xi     MS_U16 cGreenColor;
319*53ee8cc1Swenshuai.xi     /// blue color
320*53ee8cc1Swenshuai.xi     MS_U16 cBlueColor;
321*53ee8cc1Swenshuai.xi 
322*53ee8cc1Swenshuai.xi     /// scale 100 value of red color
323*53ee8cc1Swenshuai.xi     MS_U16 cRedScaleValue;
324*53ee8cc1Swenshuai.xi     /// scale 100 value of green color
325*53ee8cc1Swenshuai.xi     MS_U16 cGreenScaleValue;
326*53ee8cc1Swenshuai.xi     /// scale 100 value of blue color
327*53ee8cc1Swenshuai.xi     MS_U16 cBlueScaleValue;
328*53ee8cc1Swenshuai.xi } XC_ACE_EX_color_temp_ex2;
329*53ee8cc1Swenshuai.xi 
330*53ee8cc1Swenshuai.xi //----------------------------
331*53ee8cc1Swenshuai.xi // XC ACE initialize
332*53ee8cc1Swenshuai.xi //----------------------------
333*53ee8cc1Swenshuai.xi /*!
334*53ee8cc1Swenshuai.xi    The ACE initialze DATA.
335*53ee8cc1Swenshuai.xi */
336*53ee8cc1Swenshuai.xi /// Define XC device ID
337*53ee8cc1Swenshuai.xi typedef struct
338*53ee8cc1Swenshuai.xi {
339*53ee8cc1Swenshuai.xi     MS_U32 u32Version;
340*53ee8cc1Swenshuai.xi     MS_U32 u32Id;
341*53ee8cc1Swenshuai.xi }XC_ACE_DeviceId;
342*53ee8cc1Swenshuai.xi 
343*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
344*53ee8cc1Swenshuai.xi {
345*53ee8cc1Swenshuai.xi     MS_BOOL    eWindow;                  ///< initial eWindow
346*53ee8cc1Swenshuai.xi 
347*53ee8cc1Swenshuai.xi     MS_S16*    S16ColorCorrectionMatrix; ///< initial Color Correction Matrix
348*53ee8cc1Swenshuai.xi #if !defined (__aarch64__)
349*53ee8cc1Swenshuai.xi     MS_U32 u32AlignmentDummy0;
350*53ee8cc1Swenshuai.xi #endif
351*53ee8cc1Swenshuai.xi     MS_S16*    S16RGB;                   ///< initial RGB
352*53ee8cc1Swenshuai.xi #if !defined (__aarch64__)
353*53ee8cc1Swenshuai.xi     MS_U32 u32AlignmentDummy1;
354*53ee8cc1Swenshuai.xi #endif
355*53ee8cc1Swenshuai.xi     MS_U16     u16MWEHstart;             ///< initial Horizontal start
356*53ee8cc1Swenshuai.xi 
357*53ee8cc1Swenshuai.xi 
358*53ee8cc1Swenshuai.xi     MS_U16     u16MWEVstart;             ///< initial Vertical start
359*53ee8cc1Swenshuai.xi 
360*53ee8cc1Swenshuai.xi     MS_U16     u16MWEWidth;              ///< initial MWE Width
361*53ee8cc1Swenshuai.xi 
362*53ee8cc1Swenshuai.xi     MS_U16     u16MWEHeight;             ///< initial MWE Height
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi     MS_U16     u16MWE_Disp_Hstart;       ///< initial MWE Display Horizontal start
365*53ee8cc1Swenshuai.xi 
366*53ee8cc1Swenshuai.xi     MS_U16     u16MWE_Disp_Vstart;       ///< initial MWE Display Vertical start
367*53ee8cc1Swenshuai.xi 
368*53ee8cc1Swenshuai.xi     MS_U16     u16MWE_Disp_Width;        ///< initial MWE Display width
369*53ee8cc1Swenshuai.xi 
370*53ee8cc1Swenshuai.xi     MS_U16     u16MWE_Disp_Height;       ///< initial MWE Display height
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi     MS_BOOL    bMWE_Enable;              ///< Enable or not
373*53ee8cc1Swenshuai.xi } XC_ACE_EX_InitData;
374*53ee8cc1Swenshuai.xi 
375*53ee8cc1Swenshuai.xi /*!
376*53ee8cc1Swenshuai.xi    The XC_ACE library infomation.
377*53ee8cc1Swenshuai.xi */
378*53ee8cc1Swenshuai.xi typedef struct
379*53ee8cc1Swenshuai.xi {
380*53ee8cc1Swenshuai.xi 
381*53ee8cc1Swenshuai.xi } XC_ACE_EX_ApiInfo;
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi /*!
384*53ee8cc1Swenshuai.xi    The XC_ACE status infomation.
385*53ee8cc1Swenshuai.xi */
386*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
387*53ee8cc1Swenshuai.xi {
388*53ee8cc1Swenshuai.xi     /// Scaler ACE API status
389*53ee8cc1Swenshuai.xi     XC_ACE_EX_InitData ACEinit;
390*53ee8cc1Swenshuai.xi } XC_ACE_EX_ApiStatus;
391*53ee8cc1Swenshuai.xi 
392*53ee8cc1Swenshuai.xi 
393*53ee8cc1Swenshuai.xi /*!
394*53ee8cc1Swenshuai.xi    The XC_ACE DNR parameters settings.
395*53ee8cc1Swenshuai.xi */
396*53ee8cc1Swenshuai.xi typedef enum
397*53ee8cc1Swenshuai.xi {
398*53ee8cc1Swenshuai.xi     /// NR ONOFF
399*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_NR_ONOFF,
400*53ee8cc1Swenshuai.xi     /// SNR
401*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_SNR,
402*53ee8cc1Swenshuai.xi     /// Spike NR 0
403*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_SPIKE_NR_0,
404*53ee8cc1Swenshuai.xi     /// Spike NR 1
405*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_SPIKE_NR_1,
406*53ee8cc1Swenshuai.xi     /// Gray ground gain
407*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_GRAY_GROUND_GAIN,
408*53ee8cc1Swenshuai.xi     /// Gray ground EN
409*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_GRAY_GROUND_EN,
410*53ee8cc1Swenshuai.xi     /// Peaking bank coring
411*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_PEAKING_BANK_CORING,
412*53ee8cc1Swenshuai.xi     /// Guassin SNR threshold
413*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_GUASSIN_SNR_THRESHOLD,
414*53ee8cc1Swenshuai.xi     /// Motion
415*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_MOTION,
416*53ee8cc1Swenshuai.xi     /// Peaking coring threshold
417*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_PEAKING_CORING_THRESHOLD,
418*53ee8cc1Swenshuai.xi     /// Sharpness adjust
419*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_SHARPNESS_ADJUST,
420*53ee8cc1Swenshuai.xi     /// NM V
421*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_NM_V,
422*53ee8cc1Swenshuai.xi     /// GNR 0
423*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_GNR_0,
424*53ee8cc1Swenshuai.xi     /// GNR 1
425*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_GNR_1,
426*53ee8cc1Swenshuai.xi     /// CP
427*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_CP,
428*53ee8cc1Swenshuai.xi     /// DP
429*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_DP,
430*53ee8cc1Swenshuai.xi     /// NM H 0
431*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_NM_H_0,
432*53ee8cc1Swenshuai.xi     /// HM H 1
433*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_NM_H_1,
434*53ee8cc1Swenshuai.xi     /// SC coring
435*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_SC_CORING,
436*53ee8cc1Swenshuai.xi     /// NM
437*53ee8cc1Swenshuai.xi     E_ACE_EX_DNR_SNR_NM,
438*53ee8cc1Swenshuai.xi }XC_ACE_EX_DNR_Param;
439*53ee8cc1Swenshuai.xi 
440*53ee8cc1Swenshuai.xi typedef enum
441*53ee8cc1Swenshuai.xi {
442*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_R,
443*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_G,
444*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_B,
445*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_C,
446*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_M,
447*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_Y,
448*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_F,
449*53ee8cc1Swenshuai.xi     E_ACE_EX_IHC_COLOR_MAX,
450*53ee8cc1Swenshuai.xi }XC_ACE_EX_IHC_COLOR_TYPE;
451*53ee8cc1Swenshuai.xi 
452*53ee8cc1Swenshuai.xi #define ACE_EX_INFOEX_MODE_POST_RGB_GAIN           0x1
453*53ee8cc1Swenshuai.xi #define ACE_EX_INFOEX_MODE_POST_RGB_OFFSET         0x2
454*53ee8cc1Swenshuai.xi typedef struct
455*53ee8cc1Swenshuai.xi {
456*53ee8cc1Swenshuai.xi     MS_U32 u32Mode;
457*53ee8cc1Swenshuai.xi     MS_U32 u32Reserved;
458*53ee8cc1Swenshuai.xi }XC_ACE_EX_InfoEx;
459*53ee8cc1Swenshuai.xi 
460*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
461*53ee8cc1Swenshuai.xi // MWE Load Visual Effect Table related
462*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
463*53ee8cc1Swenshuai.xi #define ACE_EX_TABINFO_VERSION                0
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi #define ACE_EX_TABINFO_REG_ADDR_SIZE          (2)
466*53ee8cc1Swenshuai.xi #define ACE_EX_TABINFO_REG_MASK_SIZE          (1)
467*53ee8cc1Swenshuai.xi #define ACE_EX_TABINFO_REG_DATA_SIZE          (2)
468*53ee8cc1Swenshuai.xi 
469*53ee8cc1Swenshuai.xi typedef struct
470*53ee8cc1Swenshuai.xi {
471*53ee8cc1Swenshuai.xi     MS_U8 *pTable;
472*53ee8cc1Swenshuai.xi     MS_U8 u8TabCols;
473*53ee8cc1Swenshuai.xi     MS_U8 u8TabRows;
474*53ee8cc1Swenshuai.xi     MS_U8 u8TabIdx;
475*53ee8cc1Swenshuai.xi     MS_U32 u32ACE_TabInfo_version; //Version of current structure, including the content of pTable
476*53ee8cc1Swenshuai.xi }XC_ACE_EX_TAB_Info;
477*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
478*53ee8cc1Swenshuai.xi 
479*53ee8cc1Swenshuai.xi //------------------------------
480*53ee8cc1Swenshuai.xi // Weave Type: used for 3D
481*53ee8cc1Swenshuai.xi //------------------------------
482*53ee8cc1Swenshuai.xi typedef enum
483*53ee8cc1Swenshuai.xi {
484*53ee8cc1Swenshuai.xi     E_ACE_EX_WEAVETYPE_NONE        = 0x00,
485*53ee8cc1Swenshuai.xi     E_ACE_EX_WEAVETYPE_H          = 0x01,
486*53ee8cc1Swenshuai.xi     E_ACE_EX_WEAVETYPE_V          = 0x02,
487*53ee8cc1Swenshuai.xi     E_ACE_EX_WEAVETYPE_DUALVIEW    = 0x04,
488*53ee8cc1Swenshuai.xi     E_ACE_EX_WEAVETYPE_NUM,
489*53ee8cc1Swenshuai.xi }XC_ACE_EX_WEAVETYPE;
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
492*53ee8cc1Swenshuai.xi //  Function and Variable
493*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
494*53ee8cc1Swenshuai.xi #define XC_ACE_EX_BYPASS_COLOR_GAIN  128 //necessary for HW color tempture adjustment,
495*53ee8cc1Swenshuai.xi                                       //used after T2, i.e: T3/T4/T7/T8/Janus..
496*53ee8cc1Swenshuai.xi 
497*53ee8cc1Swenshuai.xi /********************************************************************************/
498*53ee8cc1Swenshuai.xi /*                   msAPI_ACE.c                   */
499*53ee8cc1Swenshuai.xi /********************************************************************************/
500*53ee8cc1Swenshuai.xi 
501*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
502*53ee8cc1Swenshuai.xi /// ACE Initiation
503*53ee8cc1Swenshuai.xi /// @param  pstXC_ACE_InitData                  \b IN: @ref XC_ACE_EX_InitData
504*53ee8cc1Swenshuai.xi /// @param  u32InitDataLen                      \b IN: The Length of pstXC_ACE_InitData.
505*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
506*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
507*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_Init(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_InitData *pstXC_ACE_InitData, MS_U32 u32InitDataLen);
508*53ee8cc1Swenshuai.xi 
509*53ee8cc1Swenshuai.xi 
510*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
511*53ee8cc1Swenshuai.xi /// ACE Exit
512*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
513*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
514*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_Exit(XC_ACE_DeviceId *pDeviceId);
515*53ee8cc1Swenshuai.xi 
516*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
517*53ee8cc1Swenshuai.xi /// ACE DMS
518*53ee8cc1Swenshuai.xi /// @param  eWindow                 \b IN: Indicates the window where the ACE function applies to.
519*53ee8cc1Swenshuai.xi /// @param  bisATV                  \b IN: Whether the active input source is or not ATV.
520*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
521*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_DMS(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bisATV);
522*53ee8cc1Swenshuai.xi 
523*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
524*53ee8cc1Swenshuai.xi /// Set PC YUV to RGB
525*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
526*53ee8cc1Swenshuai.xi /// @param  bEnable                  \b IN: Enable or Disalbe the function.
527*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
528*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_SetPCYUV2RGB(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bEnable);
529*53ee8cc1Swenshuai.xi 
530*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
531*53ee8cc1Swenshuai.xi /// Select YUV to RGB Matrix, if the ucMatrix type is ACE_YUV_TO_RGB_MATRIX_USER, then apply the
532*53ee8cc1Swenshuai.xi /// psUserYUVtoRGBMatrix supplied by user.
533*53ee8cc1Swenshuai.xi // @param  eWindow                       \b IN: Indicates the window where the ACE function applies to.
534*53ee8cc1Swenshuai.xi // @param  ucMatrix                      \b IN: @ref E_ACE_YUVTORGBInfoType.
535*53ee8cc1Swenshuai.xi // @param  psUserYUVtoRGBMatrix          \b IN: User-Defined color transformed matrix.
536*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
537*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_SelectYUVtoRGBMatrix(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 ucMatrix, MS_S16* psUserYUVtoRGBMatrix);
538*53ee8cc1Swenshuai.xi 
539*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
540*53ee8cc1Swenshuai.xi /// Set color correction table
541*53ee8cc1Swenshuai.xi /// @param  bScalerWin                      \b IN: Indicates the window where the ACE function
542*53ee8cc1Swenshuai.xi ///                                                 applies to, 0: Main Window, 1: Sub Window.
543*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
544*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_SetColorCorrectionTable( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin);
545*53ee8cc1Swenshuai.xi 
546*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
547*53ee8cc1Swenshuai.xi /// Set PCs RGB table
548*53ee8cc1Swenshuai.xi /// @param  bScalerWin                      \b IN: Indicates the window where the ACE function
549*53ee8cc1Swenshuai.xi ///                                                 applies to, 0: Main Window, 1: Sub Window.
550*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
551*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_SetPCsRGBTable( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin);
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
554*53ee8cc1Swenshuai.xi /// Get color matrix
555*53ee8cc1Swenshuai.xi /// @param  eWindow                      \b IN: Indicates the window where the ACE function applies to.
556*53ee8cc1Swenshuai.xi /// @param  pu16Matrix                   \b OUT: a MS_U16 matrix represents current color matrix
557*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
558*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_GetColorMatrix( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U16* pu16Matrix);
559*53ee8cc1Swenshuai.xi 
560*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
561*53ee8cc1Swenshuai.xi /// Set color matrix
562*53ee8cc1Swenshuai.xi /// @param  eWindow                      \b IN: Indicates the window where the ACE function applies to.
563*53ee8cc1Swenshuai.xi /// @param  pu16Matrix                   \b IN: The Matrix given to set the color transformation.
564*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
565*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_SetColorMatrix( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U16* pu16Matrix);
566*53ee8cc1Swenshuai.xi 
567*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
568*53ee8cc1Swenshuai.xi /// Set Bypass Color Matrix
569*53ee8cc1Swenshuai.xi /// @param bEnable      \b IN:  Enable : Bypass Set Color Matrix
570*53ee8cc1Swenshuai.xi /// @return @ref E_XC_ACE_EX_RESULT
571*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
572*53ee8cc1Swenshuai.xi DLL_PUBLIC E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_SetBypassColorMatrix(XC_ACE_DeviceId *pDeviceId, MS_BOOL bEnable );
573*53ee8cc1Swenshuai.xi 
574*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
575*53ee8cc1Swenshuai.xi /// Set IHC value
576*53ee8cc1Swenshuai.xi /// @param  bScalerWin                   \b IN: Indicates the window where the ACE function applies to.
577*53ee8cc1Swenshuai.xi /// @param  eIHC                         \b IN: Indicates the color to be set.
578*53ee8cc1Swenshuai.xi /// @param  u8Val                        \b IN: The value set to the color(0 ~ 127).
579*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
580*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_SetIHC(XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, XC_ACE_EX_IHC_COLOR_TYPE eIHC, MS_U8 u8Val);
581*53ee8cc1Swenshuai.xi 
582*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
583*53ee8cc1Swenshuai.xi /// Patch DTG color checker
584*53ee8cc1Swenshuai.xi // @param  u8Mode                       \b IN: TBD
585*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
586*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_PatchDTGColorChecker( XC_ACE_DeviceId *pDeviceId, MS_U8 u8Mode);
587*53ee8cc1Swenshuai.xi 
588*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
589*53ee8cc1Swenshuai.xi /// Get ACE information
590*53ee8cc1Swenshuai.xi /// @param  bWindow                      \b IN: Indicates the window where the ACE function
591*53ee8cc1Swenshuai.xi ///                                              applies to, 0: Main Window, 1: Sub Window.
592*53ee8cc1Swenshuai.xi /// @param  eXCACEInfoType                \b IN: Specify the information type users interested in.
593*53ee8cc1Swenshuai.xi /// @retval The information returned.
594*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
595*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16  MApi_XC_ACE_EX_GetACEInfo( XC_ACE_DeviceId *pDeviceId, MS_BOOL bWindow, E_XC_ACE_EX_INFOTYPE eXCACEInfoType );
596*53ee8cc1Swenshuai.xi 
597*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
598*53ee8cc1Swenshuai.xi /// Get ACE extra information
599*53ee8cc1Swenshuai.xi /// @param  bWindow                      \b IN: Indicates the window where the ACE function
600*53ee8cc1Swenshuai.xi ///                                              applies to, 0: Main Window, 1: Sub Window.
601*53ee8cc1Swenshuai.xi /// @param  XC_ACE_EX_InfoEx                \b OUT: Specify the extra information returned by driver.
602*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
603*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_GetACEInfoEx( XC_ACE_DeviceId *pDeviceId, MS_BOOL bWindow, XC_ACE_EX_InfoEx *pInfoEx);
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi /********************************************************************************/
606*53ee8cc1Swenshuai.xi /*                   msAPI_ACE_Ext.c                   */
607*53ee8cc1Swenshuai.xi /********************************************************************************/
608*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
609*53ee8cc1Swenshuai.xi /// Picture set contrast
610*53ee8cc1Swenshuai.xi /// @param  eWindow                       \b IN: Indicates the window where the ACE function applies to.
611*53ee8cc1Swenshuai.xi /// @param  bUseYUVSpace                  \b IN: Use YUV format or RGB format.
612*53ee8cc1Swenshuai.xi /// @param  u8Contrast                    \b IN: Contrase value given by user.
613*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
614*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_PicSetContrast( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, MS_U8 u8Contrast);
615*53ee8cc1Swenshuai.xi 
616*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
617*53ee8cc1Swenshuai.xi /// Picture set brightness
618*53ee8cc1Swenshuai.xi /// @param  u8Brightness_R                    \b IN: R value given by user.
619*53ee8cc1Swenshuai.xi /// @param  u8Brightness_G                    \b IN: G value given by user.
620*53ee8cc1Swenshuai.xi /// @param  u8Brightness_B                    \b IN: B value given by user.
621*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
622*53ee8cc1Swenshuai.xi DLL_PUBLIC 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);
623*53ee8cc1Swenshuai.xi 
624*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
625*53ee8cc1Swenshuai.xi /// Picture set precise brightness
626*53ee8cc1Swenshuai.xi /// @param  u16Brightness_R                    \b IN: R value given by user.
627*53ee8cc1Swenshuai.xi /// @param  u16Brightness_G                    \b IN: G value given by user.
628*53ee8cc1Swenshuai.xi /// @param  u16Brightness_B                    \b IN: B value given by user.
629*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
630*53ee8cc1Swenshuai.xi DLL_PUBLIC 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);
631*53ee8cc1Swenshuai.xi 
632*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
633*53ee8cc1Swenshuai.xi ///-This function will set Pre Y Offset
634*53ee8cc1Swenshuai.xi ///@param eWindow        \b IN: Window type
635*53ee8cc1Swenshuai.xi ///@param u8PreYOffset \b IN: Pre Y Offset value
636*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
637*53ee8cc1Swenshuai.xi DLL_PUBLIC E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_PicSetPreYOffset(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 u8PreYOffset);
638*53ee8cc1Swenshuai.xi 
639*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
640*53ee8cc1Swenshuai.xi ///-This function will get Pre Y Offset
641*53ee8cc1Swenshuai.xi ///@param eWindow        \b IN: Window type
642*53ee8cc1Swenshuai.xi ///@param pu8PreYOffset \b OUT: Pre Y Offset value
643*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
644*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_ACE_EX_PicGetPreYOffset(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow);
645*53ee8cc1Swenshuai.xi 
646*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
647*53ee8cc1Swenshuai.xi /// Picture set Hue
648*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
649*53ee8cc1Swenshuai.xi /// @param  bUseYUVSpace             \b IN: Use YUV format or RGB format.
650*53ee8cc1Swenshuai.xi /// @param  u8Hue                    \b IN: Hue value given by user.
651*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
652*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_PicSetHue( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, MS_U8 u8Hue );
653*53ee8cc1Swenshuai.xi 
654*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
655*53ee8cc1Swenshuai.xi /// Skip Wait Vsync
656*53ee8cc1Swenshuai.xi /// @param eWindow               \b IN: Enable
657*53ee8cc1Swenshuai.xi /// @param Skip wait Vsync      \b IN: Disable wait Vsync
658*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
659*53ee8cc1Swenshuai.xi DLL_PUBLIC E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_SkipWaitVsync( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn);
660*53ee8cc1Swenshuai.xi 
661*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
662*53ee8cc1Swenshuai.xi /// Picture set Saturation
663*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
664*53ee8cc1Swenshuai.xi /// @param  bUseYUVSpace             \b IN: Use YUV format or RGB format.
665*53ee8cc1Swenshuai.xi /// @param  u8Saturation             \b IN: Saturation value given by user.
666*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
667*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_PicSetSaturation(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, MS_U8 u8Saturation );
668*53ee8cc1Swenshuai.xi 
669*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
670*53ee8cc1Swenshuai.xi ///-Adjust sharpness
671*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
672*53ee8cc1Swenshuai.xi /// @param u8Sharpness                \b IN: sharpness value
673*53ee8cc1Swenshuai.xi ///- 0 -0x3f
674*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
675*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_PicSetSharpness( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 u8Sharpness );
676*53ee8cc1Swenshuai.xi 
677*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
678*53ee8cc1Swenshuai.xi /// Picture set color temp.
679*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
680*53ee8cc1Swenshuai.xi /// @param  bUseYUVSpace             \b IN: Use YUV format or RGB format.
681*53ee8cc1Swenshuai.xi /// @param  pstColorTemp             \b IN: Color temp info given by user.
682*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
683*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_PicSetColorTemp( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp* pstColorTemp);
684*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
685*53ee8cc1Swenshuai.xi /// Picture set color temp ex.
686*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
687*53ee8cc1Swenshuai.xi /// @param  bUseYUVSpace             \b IN: Use YUV format or RGB format.
688*53ee8cc1Swenshuai.xi /// @param  pstColorTemp             \b IN: Color temp info given by user.
689*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
690*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_PicSetColorTempEx( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp_ex* pstColorTemp);
691*53ee8cc1Swenshuai.xi 
692*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
693*53ee8cc1Swenshuai.xi /// Picture set post color temp
694*53ee8cc1Swenshuai.xi /// V02. Change the fields in XC_ACE_EX_color_temp_ex structure to MS_U16
695*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
696*53ee8cc1Swenshuai.xi /// @param  pstColorTemp             \b IN: Color temp info given by user.
697*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
698*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_PicSetPostColorTemp_V02(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_color_temp_ex2* pstColorTemp);
699*53ee8cc1Swenshuai.xi 
700*53ee8cc1Swenshuai.xi #ifndef _API_XC_ACE_EX_C_
701*53ee8cc1Swenshuai.xi // Projects without EX_ENABLE_NEW_COLORTEMP_METHOD defined will set EX_ENABLE_NEW_COLORTEMP_METHOD to 0
702*53ee8cc1Swenshuai.xi #ifndef EX_ENABLE_NEW_COLORTEMP_METHOD
703*53ee8cc1Swenshuai.xi   #define EX_ENABLE_NEW_COLORTEMP_METHOD 0
704*53ee8cc1Swenshuai.xi #endif
705*53ee8cc1Swenshuai.xi 
706*53ee8cc1Swenshuai.xi #ifndef EX_ENABLE_PRECISE_RGBBRIGHTNESS
707*53ee8cc1Swenshuai.xi   #define EX_ENABLE_PRECISE_RGBBRIGHTNESS 0
708*53ee8cc1Swenshuai.xi #endif
709*53ee8cc1Swenshuai.xi 
710*53ee8cc1Swenshuai.xi #if EX_ENABLE_NEW_COLORTEMP_METHOD
711*53ee8cc1Swenshuai.xi     #if EX_ENABLE_PRECISE_RGBBRIGHTNESS
712*53ee8cc1Swenshuai.xi         #define MApi_XC_ACE_EX_PicSetColorTemp(pDeviceId, x, y, z) MApi_XC_ACE_EX_PicSetPostColorTemp2Ex(pDeviceId, x, y, z)
713*53ee8cc1Swenshuai.xi     #else
714*53ee8cc1Swenshuai.xi         #define MApi_XC_ACE_EX_PicSetColorTemp(pDeviceId, x, y, z) MApi_XC_ACE_EX_PicSetPostColorTemp2(pDeviceId, x, y, z)
715*53ee8cc1Swenshuai.xi     #endif
716*53ee8cc1Swenshuai.xi #else
717*53ee8cc1Swenshuai.xi     #if EX_ENABLE_PRECISE_RGBBRIGHTNESS
718*53ee8cc1Swenshuai.xi         #define MApi_XC_ACE_EX_PicSetColorTemp(pDeviceId, x, y, z) MApi_XC_ACE_EX_PicSetColorTempEx(pDeviceId, x, y, z)
719*53ee8cc1Swenshuai.xi     #endif
720*53ee8cc1Swenshuai.xi #endif
721*53ee8cc1Swenshuai.xi 
722*53ee8cc1Swenshuai.xi #define MApi_XC_ACE_EX_PicSetBrightnessInVsync(pDeviceId, bWin, x, y, z) {MApi_XC_EX_WaitOutputVSync(pDeviceId, 2, 100, bWin); MApi_XC_ACE_EX_PicSetBrightness(pDeviceId, bWin, x, y, z);}
723*53ee8cc1Swenshuai.xi #define MApi_XC_ACE_EX_PicSetBrightnessPreciseInVsync(pDeviceId, bWin, x, y, z) {MApi_XC_EX_WaitOutputVSync(pDeviceId, 2, 100, bWin); MApi_XC_ACE_EX_PicSetBrightnessPrecise(pDeviceId, bWin, x, y, z);}
724*53ee8cc1Swenshuai.xi 
725*53ee8cc1Swenshuai.xi #endif
726*53ee8cc1Swenshuai.xi 
727*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
728*53ee8cc1Swenshuai.xi /// Set Flesh tone
729*53ee8cc1Swenshuai.xi /// @param  eWindow                  \b IN: Indicates the window where the ACE function applies to.
730*53ee8cc1Swenshuai.xi /// @param  bEn                      \b IN: @ref MS_BOOL
731*53ee8cc1Swenshuai.xi /// @param  u8FleshTone              \b IN: Flesh Tone Value
732*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
733*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_SetFleshTone(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bEn, MS_U8 u8FleshTone);
734*53ee8cc1Swenshuai.xi 
735*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
736*53ee8cc1Swenshuai.xi /// black adjsutment
737*53ee8cc1Swenshuai.xi /// @param  eWindow                           \b IN: window type.
738*53ee8cc1Swenshuai.xi /// @param  u8BlackAdjust                     \b IN: adjust value given.
739*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
740*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_SetBlackAdjust(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_U8 u8BlackAdjust);
741*53ee8cc1Swenshuai.xi 
742*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
743*53ee8cc1Swenshuai.xi /// IHC sram
744*53ee8cc1Swenshuai.xi /// @param  pBuf                            \b IN: sram data
745*53ee8cc1Swenshuai.xi /// @param  u16ByteSize                     \b IN: size of sram
746*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
747*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_Set_IHC_SRAM(XC_ACE_DeviceId *pDeviceId, MS_U16 *pBuf, MS_U16 u16ByteSize);
748*53ee8cc1Swenshuai.xi 
749*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
750*53ee8cc1Swenshuai.xi /// IHC sram
751*53ee8cc1Swenshuai.xi /// @param  pBuf                            \b IN: sram data
752*53ee8cc1Swenshuai.xi /// @param  u16ByteSize                     \b IN: size of sram
753*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
754*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_Set_ICC_SRAM(XC_ACE_DeviceId *pDeviceId, MS_U16 *pBuf, MS_U16 u16ByteSize);
755*53ee8cc1Swenshuai.xi 
756*53ee8cc1Swenshuai.xi /********************************************************************************/
757*53ee8cc1Swenshuai.xi /*                  MWE function                  */
758*53ee8cc1Swenshuai.xi /********************************************************************************/
759*53ee8cc1Swenshuai.xi 
760*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
761*53ee8cc1Swenshuai.xi /// Enable MWE
762*53ee8cc1Swenshuai.xi /// @param  bEnable                     \b IN: @ref MS_BOOL
763*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
764*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_EnableMWE(XC_ACE_DeviceId *pDeviceId, MS_BOOL bEnable);
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
767*53ee8cc1Swenshuai.xi /// MWE Clone Main Window Visual Effect
768*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
769*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_MWECloneVisualEffect(XC_ACE_DeviceId *pDeviceId);
770*53ee8cc1Swenshuai.xi 
771*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
772*53ee8cc1Swenshuai.xi /// MWE Apply Visual Effect From Reg Table
773*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
774*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_MWESetRegTable(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_TAB_Info *pMWETable);
775*53ee8cc1Swenshuai.xi 
776*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
777*53ee8cc1Swenshuai.xi /// Flag for MWE Visual Effect Coming From Reg Table
778*53ee8cc1Swenshuai.xi /// @param  bEnable                     \b IN: @ref MS_BOOL
779*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
780*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_SetMWELoadFromPQ(XC_ACE_DeviceId *pDeviceId, MS_BOOL bEnable);
781*53ee8cc1Swenshuai.xi 
782*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
783*53ee8cc1Swenshuai.xi /// MWE status
784*53ee8cc1Swenshuai.xi /// @retval  @ref MS_BOOL
785*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
786*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_MWEStatus(XC_ACE_DeviceId *pDeviceId);
787*53ee8cc1Swenshuai.xi 
788*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
789*53ee8cc1Swenshuai.xi /// MWE Handle
790*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
791*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_MWEHandle( XC_ACE_DeviceId *pDeviceId );
792*53ee8cc1Swenshuai.xi 
793*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
794*53ee8cc1Swenshuai.xi /// MWE function selection
795*53ee8cc1Swenshuai.xi /// @param  eWindow                 \b IN: Indicates the window where the ACE function applies to.
796*53ee8cc1Swenshuai.xi /// @param  mwe_func                     \b IN: @ref E_XC_ACE_EX_MWE_FUNC
797*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
798*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MApi_XC_ACE_EX_MWEFuncSel( XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, E_XC_ACE_EX_MWE_FUNC  mwe_func);
799*53ee8cc1Swenshuai.xi 
800*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
801*53ee8cc1Swenshuai.xi /// MWE set display window
802*53ee8cc1Swenshuai.xi /// @param  u16MWE_Disp_Hstart             \b IN: Horizotal position of start point. 0:means leftest position.
803*53ee8cc1Swenshuai.xi /// @param  u16MWE_Disp_Vstart             \b IN: Vertical position of start point, 0: mean up most position.
804*53ee8cc1Swenshuai.xi /// @param  u16MWE_Disp_Width              \b IN: Width of display window.
805*53ee8cc1Swenshuai.xi /// @param  u16MWE_Disp_Height             \b IN: Height of display winodw.
806*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
807*53ee8cc1Swenshuai.xi DLL_PUBLIC 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);
808*53ee8cc1Swenshuai.xi 
809*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
810*53ee8cc1Swenshuai.xi /// 3D clone main and sub window's PQmap
811*53ee8cc1Swenshuai.xi /// @param  enWeaveType             \b IN: Output WeaveType
812*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
813*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_3DClonePQMap(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_WEAVETYPE enWeaveType);
814*53ee8cc1Swenshuai.xi 
815*53ee8cc1Swenshuai.xi /********************************************************************************/
816*53ee8cc1Swenshuai.xi /*                  DynamicNR function                                          */
817*53ee8cc1Swenshuai.xi /********************************************************************************/
818*53ee8cc1Swenshuai.xi 
819*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
820*53ee8cc1Swenshuai.xi /// DNR Blending NR table
821*53ee8cc1Swenshuai.xi /// @param  pu8NewNR              \b IN: new NR target values.
822*53ee8cc1Swenshuai.xi /// @param  u8Weight              \b IN: Blending weighting.
823*53ee8cc1Swenshuai.xi /// @param  u8Step                \b IN: maxmium step size.
824*53ee8cc1Swenshuai.xi /// @param  pu16PreY0             \b IN: previous NR value 0.
825*53ee8cc1Swenshuai.xi /// @param  pu16PreY1             \b IN: previous NR value 1.
826*53ee8cc1Swenshuai.xi /// @param  pu8NRTBL              \b OUT: The new NR Table.
827*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
828*53ee8cc1Swenshuai.xi DLL_PUBLIC void   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);
829*53ee8cc1Swenshuai.xi 
830*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
831*53ee8cc1Swenshuai.xi /// DNR Blending MISC
832*53ee8cc1Swenshuai.xi /// @param  u8NewItem              \b IN: New DNR blending target value.
833*53ee8cc1Swenshuai.xi /// @param  u16PreItem             \b IN: previous value.
834*53ee8cc1Swenshuai.xi /// @param  u8Weight               \b IN: Blending weighting.
835*53ee8cc1Swenshuai.xi /// @param  u8Step                 \b IN: Maxmium step size.
836*53ee8cc1Swenshuai.xi /// @retval new DNR blending value.
837*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
838*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_ACE_EX_DNR_Blending_MISC(XC_ACE_DeviceId *pDeviceId, MS_U8 u8NewItem, MS_U16 u16PreItem, MS_U8 u8Weight, MS_U8 u8Step);
839*53ee8cc1Swenshuai.xi 
840*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
841*53ee8cc1Swenshuai.xi /// DNR Blending
842*53ee8cc1Swenshuai.xi /// @param  u8NewItem              \b IN: New DNR blending target value.
843*53ee8cc1Swenshuai.xi /// @param  u16PreItem             \b IN: previous value.
844*53ee8cc1Swenshuai.xi /// @param  u8Weight               \b IN: Blending weighting.
845*53ee8cc1Swenshuai.xi /// @retval new DNR blending value.
846*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
847*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8  MApi_XC_ACE_EX_DNR_Blending(XC_ACE_DeviceId *pDeviceId, MS_U8 u8NewItem, MS_U16 u16PreItem, MS_U8 u8Weight);
848*53ee8cc1Swenshuai.xi 
849*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
850*53ee8cc1Swenshuai.xi /// DNR get precision shift
851*53ee8cc1Swenshuai.xi /// @retval shift value.
852*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
853*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_ACE_EX_DNR_Get_PrecisionShift(XC_ACE_DeviceId *pDeviceId);
854*53ee8cc1Swenshuai.xi 
855*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
856*53ee8cc1Swenshuai.xi /// DNR get motion weight
857*53ee8cc1Swenshuai.xi /// @param  u8CurMotion                 \b IN: current motion value
858*53ee8cc1Swenshuai.xi /// @param  u8PreMotion                 \b IN: previous motion value
859*53ee8cc1Swenshuai.xi /// @param  u8CurMotionLvl              \b IN: current motion catalog-level
860*53ee8cc1Swenshuai.xi /// @param  u8PreMotionLvl              \b IN: previous motion catalog-level
861*53ee8cc1Swenshuai.xi /// @param  u8DeFlick_Thre              \b IN: de-flick threshold.
862*53ee8cc1Swenshuai.xi /// @param  u8DeFilick_Step             \b IN: de-flick step size.
863*53ee8cc1Swenshuai.xi /// @retval motion weight
864*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
865*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8  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);
866*53ee8cc1Swenshuai.xi 
867*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
868*53ee8cc1Swenshuai.xi /// DNR get Luma weight
869*53ee8cc1Swenshuai.xi /// @param  u8CurAvgLuma                 \b IN: current avergae luma
870*53ee8cc1Swenshuai.xi /// @param  u8PreAvgLuam                 \b IN: previous average luma
871*53ee8cc1Swenshuai.xi /// @param  u8CurLumaLvl                 \b IN: current avergae luma catalog-level
872*53ee8cc1Swenshuai.xi /// @param  u8PreLumaLvl                 \b IN: previous avergae luma catalog-level
873*53ee8cc1Swenshuai.xi /// @param  u8DeFlick_Th                 \b IN: de-flick threshold.
874*53ee8cc1Swenshuai.xi /// @param  u8DeFlick_Step               \b IN: de-flick step size.
875*53ee8cc1Swenshuai.xi /// @retval luma weight
876*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
877*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8  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);
878*53ee8cc1Swenshuai.xi 
879*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
880*53ee8cc1Swenshuai.xi /// DNR get noise weight
881*53ee8cc1Swenshuai.xi /// @param  u8CurNoise                 \b IN: current noise.
882*53ee8cc1Swenshuai.xi /// @param  u8PreNoise                 \b IN: previous noise.
883*53ee8cc1Swenshuai.xi /// @param  u8Range                    \b IN: noise threshold, if difference between PreNoise and
884*53ee8cc1Swenshuai.xi ///                                          CurNoise > this value, then the stable status is down
885*53ee8cc1Swenshuai.xi ///                                          -grade for 1 degree.
886*53ee8cc1Swenshuai.xi /// @param  u8DeFlick_Th              \b IN: de-flick threshold.
887*53ee8cc1Swenshuai.xi /// @param  u8DeFlick_Step            \b IN: de-flick step size.
888*53ee8cc1Swenshuai.xi /// @retval Noise weighting value.
889*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
890*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8  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);
891*53ee8cc1Swenshuai.xi 
892*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
893*53ee8cc1Swenshuai.xi /// DNR get motion degree, lower one means its more like a still video.
894*53ee8cc1Swenshuai.xi /// @retval motion degree value.
895*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
896*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8  MApi_XC_ACE_EX_DNR_GetMotion(XC_ACE_DeviceId *pDeviceId);
897*53ee8cc1Swenshuai.xi 
898*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
899*53ee8cc1Swenshuai.xi /// DNR init motion
900*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
901*53ee8cc1Swenshuai.xi DLL_PUBLIC void   MApi_XC_ACE_EX_DNR_Init_Motion(XC_ACE_DeviceId *pDeviceId);
902*53ee8cc1Swenshuai.xi 
903*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
904*53ee8cc1Swenshuai.xi /// DNR init luma
905*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
906*53ee8cc1Swenshuai.xi DLL_PUBLIC void   MApi_XC_ACE_EX_DNR_Init_Luma(XC_ACE_DeviceId *pDeviceId);
907*53ee8cc1Swenshuai.xi 
908*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
909*53ee8cc1Swenshuai.xi /// DNR init noise
910*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
911*53ee8cc1Swenshuai.xi DLL_PUBLIC void   MApi_XC_ACE_EX_DNR_Init_Noise(XC_ACE_DeviceId *pDeviceId);
912*53ee8cc1Swenshuai.xi 
913*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
914*53ee8cc1Swenshuai.xi /// Set parameter of a DNR item specified by user.
915*53ee8cc1Swenshuai.xi /// @param  eWindow                 \b IN: Indicates the window where the ACE function applies to.
916*53ee8cc1Swenshuai.xi /// @param  eParam                 \b IN: @ref XC_ACE_EX_DNR_Param
917*53ee8cc1Swenshuai.xi /// @param  u16val                 \b IN: Setting value of DNR item.
918*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
919*53ee8cc1Swenshuai.xi DLL_PUBLIC void   MApi_XC_ACE_EX_DNR_SetParam(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_DNR_Param eParam, MS_U16 u16val);
920*53ee8cc1Swenshuai.xi 
921*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
922*53ee8cc1Swenshuai.xi /// Get parameter of a DNR item specified by user.
923*53ee8cc1Swenshuai.xi /// @param  eWindow                 \b IN: Indicates the window where the ACE function applies to.
924*53ee8cc1Swenshuai.xi /// @param  eParam                 \b IN: @ref XC_ACE_EX_DNR_Param
925*53ee8cc1Swenshuai.xi /// @return @ref MS_U8
926*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
927*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8  MApi_XC_ACE_EX_DNR_GetParam(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_DNR_Param eParam);
928*53ee8cc1Swenshuai.xi 
929*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
930*53ee8cc1Swenshuai.xi /// Set NR table
931*53ee8cc1Swenshuai.xi /// @param  pu8Tbl                 \b IN: NR table given by user.
932*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
933*53ee8cc1Swenshuai.xi DLL_PUBLIC void   MApi_XC_ACE_EX_DNR_SetNRTbl(XC_ACE_DeviceId *pDeviceId, MS_U8 *pu8Tbl);
934*53ee8cc1Swenshuai.xi 
935*53ee8cc1Swenshuai.xi // must have functions
936*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
937*53ee8cc1Swenshuai.xi /// Get version (without Mutex protect)
938*53ee8cc1Swenshuai.xi /// @param  ppVersion                 \b OUT: Version information of ACE lib.
939*53ee8cc1Swenshuai.xi /// @return @ref E_XC_ACE_EX_RESULT
940*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
941*53ee8cc1Swenshuai.xi DLL_PUBLIC E_XC_ACE_EX_RESULT MApi_XC_ACE_EX_GetLibVer(const MSIF_Version **ppVersion);
942*53ee8cc1Swenshuai.xi 
943*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
944*53ee8cc1Swenshuai.xi /// Get info from driver (without Mutex protect)
945*53ee8cc1Swenshuai.xi /// @return XC_ACE_EX_ApiInfo
946*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
947*53ee8cc1Swenshuai.xi const XC_ACE_EX_ApiInfo * MApi_XC_ACE_EX_GetInfo(XC_ACE_DeviceId *pDeviceId);
948*53ee8cc1Swenshuai.xi 
949*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
950*53ee8cc1Swenshuai.xi /// Get panel current status
951*53ee8cc1Swenshuai.xi /// @param  pDrvStatus                 \b IN: @ref XC_ACE_EX_ApiStatus
952*53ee8cc1Swenshuai.xi /// @param  bWindow                    \b IN: Indicates the window where the ACE function
953*53ee8cc1Swenshuai.xi ///                                           applies to, 0: Main Window, 1: Sub Window.
954*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
955*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
956*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_GetStatus(XC_ACE_DeviceId *pDeviceId, XC_ACE_EX_ApiStatus *pDrvStatus, MS_BOOL bWindow);
957*53ee8cc1Swenshuai.xi 
958*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
959*53ee8cc1Swenshuai.xi /// Set debug level (without Mutex protect)
960*53ee8cc1Swenshuai.xi /// @param  u16DbgSwitch                 \b IN: debug switch value, use TRUE/FALSE to turn on/off.
961*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
962*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
963*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_ACE_EX_SetDbgLevel(MS_U16 u16DbgSwitch);
964*53ee8cc1Swenshuai.xi 
965*53ee8cc1Swenshuai.xi 
966*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_ColorCorrectionTable( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, MS_S16 *psColorCorrectionTable );
967*53ee8cc1Swenshuai.xi 
968*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_SetColorMatrixControl( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, MS_BOOL bEnable );
969*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_SetRBChannelRange( XC_ACE_DeviceId *pDeviceId, MS_BOOL bScalerWin, MS_BOOL bRange );
970*53ee8cc1Swenshuai.xi 
971*53ee8cc1Swenshuai.xi 
972*53ee8cc1Swenshuai.xi //////////////////////////////////////////////
973*53ee8cc1Swenshuai.xi // Below functions are obosolted ! Please do not use them if you do not use them yet.
974*53ee8cc1Swenshuai.xi //////////////////////////////////////////////
975*53ee8cc1Swenshuai.xi 
976*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
977*53ee8cc1Swenshuai.xi ///-obosolte!! use MApi_XC_ACE_EX_PicSetPostColorTemp_V02 instead
978*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
979*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_PicSetPostColorTemp(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_color_temp* pstColorTemp);
980*53ee8cc1Swenshuai.xi 
981*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
982*53ee8cc1Swenshuai.xi ///-obosolte!! use MApi_XC_ACE_EX_PicSetPostColorTemp_V02 instead
983*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
984*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_PicSetPostColorTempEx(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, XC_ACE_EX_color_temp_ex* pstColorTemp);
985*53ee8cc1Swenshuai.xi 
986*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
987*53ee8cc1Swenshuai.xi ///-obosolte!! use MApi_XC_ACE_EX_PicSetPostColorTempWithBypassACESetting instead
988*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
989*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_PicSetPostColorTemp2(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp* pstColorTemp);
990*53ee8cc1Swenshuai.xi 
991*53ee8cc1Swenshuai.xi //*************************************************************************
992*53ee8cc1Swenshuai.xi ///-obosolte!! Please bypass color temp by using MApi_XC_ACE_EX_PicSetColorTemp and then set post color temp by using MApi_XC_ACE_EX_PicSetPostColorTemp_V02
993*53ee8cc1Swenshuai.xi //*************************************************************************
994*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_ACE_EX_PicSetPostColorTemp2Ex(XC_ACE_DeviceId *pDeviceId, MS_BOOL eWindow, MS_BOOL bUseYUVSpace, XC_ACE_EX_color_temp_ex* pstColorTemp);
995*53ee8cc1Swenshuai.xi 
996*53ee8cc1Swenshuai.xi 
997*53ee8cc1Swenshuai.xi 
998*53ee8cc1Swenshuai.xi #ifdef __cplusplus
999*53ee8cc1Swenshuai.xi }
1000*53ee8cc1Swenshuai.xi #endif
1001*53ee8cc1Swenshuai.xi 
1002*53ee8cc1Swenshuai.xi #endif // _API_XC_ACE_EX_H_
1003*53ee8cc1Swenshuai.xi 
1004