xref: /utopia/UTPA2-700.0.x/modules/xc/drv/ace/drvACE.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 /// @file  drvACE.h
94*53ee8cc1Swenshuai.xi /// @brief ACE library interface header file
95*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
96*53ee8cc1Swenshuai.xi ///
97*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
98*53ee8cc1Swenshuai.xi 
99*53ee8cc1Swenshuai.xi #ifndef DRV_ACE_H
100*53ee8cc1Swenshuai.xi #define DRV_ACE_H
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #ifdef _MDRV_ACE_C_
103*53ee8cc1Swenshuai.xi #define INTERFACE
104*53ee8cc1Swenshuai.xi #else
105*53ee8cc1Swenshuai.xi #define INTERFACE extern
106*53ee8cc1Swenshuai.xi #endif
107*53ee8cc1Swenshuai.xi #ifdef __cplusplus
108*53ee8cc1Swenshuai.xi extern "C"
109*53ee8cc1Swenshuai.xi {
110*53ee8cc1Swenshuai.xi #endif
111*53ee8cc1Swenshuai.xi //******** ENUM DEFINITIONS ********//
112*53ee8cc1Swenshuai.xi INTERFACE enum
113*53ee8cc1Swenshuai.xi {
114*53ee8cc1Swenshuai.xi     E_ACE_POOL_ID_INTERNAL = 0, // just for test, please refine.
115*53ee8cc1Swenshuai.xi     E_ACE_POOL_ID_INTERNAL_1, // just for test, please refine.
116*53ee8cc1Swenshuai.xi     E_ACE_POOL_ID_MAX, // just for test, please refine.
117*53ee8cc1Swenshuai.xi } E_ACE_POOL_ID;
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi /******************************************************************************/
120*53ee8cc1Swenshuai.xi /*                   Export variables                                                                                     */
121*53ee8cc1Swenshuai.xi /******************************************************************************/
122*53ee8cc1Swenshuai.xi typedef enum
123*53ee8cc1Swenshuai.xi {
124*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_VERSION,
125*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_CONTRAST,
126*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_R_GAIN,
127*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_G_GAIN,
128*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_B_GAIN,
129*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_SATURATION,
130*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_HUE,
131*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_COLOR_CORRECTION_XY_R,
132*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_COLOR_CORRECTION_XY_G,
133*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_COLOR_CORRECTION_XY_B,
134*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_R,
135*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_G,
136*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_COLOR_CORRECTION_OFFSET_B,
137*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_BRIGHTNESS_R,
138*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_BRIGHTNESS_G,
139*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_BRIGHTNESS_B,
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_COMPILER_VERSION,
142*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_YUV_TO_RGB_MATRIX_SEL,
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR1,
145*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR2,
146*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR3,
147*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR4,
148*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR5,
149*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR6,
150*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR7,
151*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR8,
152*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR9,
153*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR10,
154*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR11,
155*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR12,
156*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR13,
157*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR14,
158*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR15,
159*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IHC_USER_COLOR0,
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR1,
162*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR2,
163*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR3,
164*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR4,
165*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR5,
166*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR6,
167*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR7,
168*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR8,
169*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR9,
170*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR10,
171*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR11,
172*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR12,
173*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR13,
174*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR14,
175*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR15,
176*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_ICC_USER_COLOR0,
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR1,
179*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR2,
180*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR3,
181*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR4,
182*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR5,
183*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR6,
184*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR7,
185*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR8,
186*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR9,
187*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR10,
188*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR11,
189*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR12,
190*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR13,
191*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR14,
192*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR15,
193*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_IBC_USER_COLOR0,
194*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_CONTRAST_MIN_VALUE,
195*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_CONTRAST_MAX_VALUE,
196*53ee8cc1Swenshuai.xi     ACE_INFO_TYPE_DUMMY,
197*53ee8cc1Swenshuai.xi } EnuACEInfoType;
198*53ee8cc1Swenshuai.xi 
199*53ee8cc1Swenshuai.xi typedef enum
200*53ee8cc1Swenshuai.xi {
201*53ee8cc1Swenshuai.xi     ACE_MATRIX_ID__YUV_TO_RGB,
202*53ee8cc1Swenshuai.xi     ACE_MATRIX_ID__COLOR_CORRECTION,
203*53ee8cc1Swenshuai.xi     ACE_MATRIX_ID__SRGB
204*53ee8cc1Swenshuai.xi }EnuAceMatrixId;
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi typedef enum
207*53ee8cc1Swenshuai.xi {
208*53ee8cc1Swenshuai.xi     ACE_YUV_TO_RGB_MATRIX_SDTV, // Use Std CSCM for SDTV
209*53ee8cc1Swenshuai.xi     ACE_YUV_TO_RGB_MATRIX_HDTV, // Use Std CSCM for HDTV
210*53ee8cc1Swenshuai.xi     ACE_YUV_TO_RGB_MATRIX_USER, // Use user define CSCM, specified by tUserYVUtoRGBMatrix
211*53ee8cc1Swenshuai.xi } E_ACE_YUVTORGBInfoType;
212*53ee8cc1Swenshuai.xi 
213*53ee8cc1Swenshuai.xi /// MWE border color
214*53ee8cc1Swenshuai.xi typedef enum
215*53ee8cc1Swenshuai.xi {
216*53ee8cc1Swenshuai.xi     MWE_BORDER_COLOR_BLACK,
217*53ee8cc1Swenshuai.xi     MWE_BORDER_COLOR_WHITE,
218*53ee8cc1Swenshuai.xi     MWE_BORDER_COLOR_BLUE,
219*53ee8cc1Swenshuai.xi     MWE_BORDER_COLOR_RED,
220*53ee8cc1Swenshuai.xi     MWE_BORDER_COLOR_GREEN,
221*53ee8cc1Swenshuai.xi     MWE_BORDER_COLOR_MAX,
222*53ee8cc1Swenshuai.xi }EN_MWE_BORDER_COLOR;
223*53ee8cc1Swenshuai.xi 
224*53ee8cc1Swenshuai.xi typedef struct  __attribute__((packed))
225*53ee8cc1Swenshuai.xi {
226*53ee8cc1Swenshuai.xi     MS_U32 Xpos;
227*53ee8cc1Swenshuai.xi     MS_U32 Ypos;
228*53ee8cc1Swenshuai.xi     MS_U32 Xsize;
229*53ee8cc1Swenshuai.xi     MS_U32 Ysize;
230*53ee8cc1Swenshuai.xi }MWE_RECT;
231*53ee8cc1Swenshuai.xi 
232*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) _PanelSizeType
233*53ee8cc1Swenshuai.xi {
234*53ee8cc1Swenshuai.xi     MS_U16 u16Pnl_Hstart;
235*53ee8cc1Swenshuai.xi     MS_U16 u16Pnl_Vstart;
236*53ee8cc1Swenshuai.xi     MS_U16 u16Pnl_Width;
237*53ee8cc1Swenshuai.xi     MS_U16 u16Pnl_Height;
238*53ee8cc1Swenshuai.xi }PanelSizeType;
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi typedef enum MWEType
241*53ee8cc1Swenshuai.xi {
242*53ee8cc1Swenshuai.xi     MWE_OFF,
243*53ee8cc1Swenshuai.xi     MWE_H_SPLIT,
244*53ee8cc1Swenshuai.xi     MWE_MOVE,
245*53ee8cc1Swenshuai.xi     MWE_ZOOM,
246*53ee8cc1Swenshuai.xi     MWE_NUMS,
247*53ee8cc1Swenshuai.xi }MWEType;
248*53ee8cc1Swenshuai.xi 
249*53ee8cc1Swenshuai.xi typedef struct
250*53ee8cc1Swenshuai.xi {
251*53ee8cc1Swenshuai.xi     MS_BOOL bSValid; // source data valid
252*53ee8cc1Swenshuai.xi     MS_BOOL bTValid; // target data valid
253*53ee8cc1Swenshuai.xi     MS_U8 u8SMode; // 0->KbKr, 1->YCgCo, 2->2020CL
254*53ee8cc1Swenshuai.xi     MS_U16 u16SKb;
255*53ee8cc1Swenshuai.xi     MS_U16 u16SKr;
256*53ee8cc1Swenshuai.xi     MS_U8 u8TMode; // 0->KbKr, 1->YCgCo, 2->2020CL
257*53ee8cc1Swenshuai.xi     MS_U16 u16TKb;
258*53ee8cc1Swenshuai.xi     MS_U16 u16TKr;
259*53ee8cc1Swenshuai.xi } ACE_DRV_HDR_YUV2RGBData;
260*53ee8cc1Swenshuai.xi 
261*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
262*53ee8cc1Swenshuai.xi {
263*53ee8cc1Swenshuai.xi     MS_U8      u8ColorPrimaries;
264*53ee8cc1Swenshuai.xi     MS_U8      u8TransferCharacteristics;
265*53ee8cc1Swenshuai.xi     MS_U8      u8MatrixCoefficients;
266*53ee8cc1Swenshuai.xi } ACE_DRV_HDRMetadataMpegVUI;
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
269*53ee8cc1Swenshuai.xi {
270*53ee8cc1Swenshuai.xi     MS_U16 u16Smin; // 0.10
271*53ee8cc1Swenshuai.xi     MS_U16 u16Smed; // 0.10
272*53ee8cc1Swenshuai.xi     MS_U16 u16Smax; // 0.10
273*53ee8cc1Swenshuai.xi     MS_U16 u16Tmin; // 0.10
274*53ee8cc1Swenshuai.xi     MS_U16 u16Tmed; // 0.10
275*53ee8cc1Swenshuai.xi     MS_U16 u16Tmax; // 0.10
276*53ee8cc1Swenshuai.xi     MS_U16 u16MidSourceOffset;
277*53ee8cc1Swenshuai.xi     MS_U16 u16MidTargetOffset;
278*53ee8cc1Swenshuai.xi     MS_U16 u16MidSourceRatio;
279*53ee8cc1Swenshuai.xi     MS_U16 u16MidTargetRatio;
280*53ee8cc1Swenshuai.xi } ACE_DRV_HDRToneMappingData;
281*53ee8cc1Swenshuai.xi 
282*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
283*53ee8cc1Swenshuai.xi {
284*53ee8cc1Swenshuai.xi     MS_U16 u16tRx; // target Rx
285*53ee8cc1Swenshuai.xi     MS_U16 u16tRy; // target Ry
286*53ee8cc1Swenshuai.xi     MS_U16 u16tGx; // target Gx
287*53ee8cc1Swenshuai.xi     MS_U16 u16tGy; // target Gy
288*53ee8cc1Swenshuai.xi     MS_U16 u16tBx; // target Bx
289*53ee8cc1Swenshuai.xi     MS_U16 u16tBy; // target By
290*53ee8cc1Swenshuai.xi     MS_U16 u16tWx; // target Wx
291*53ee8cc1Swenshuai.xi     MS_U16 u16tWy; // target Wy
292*53ee8cc1Swenshuai.xi } ACE_DRV_HDRGamutMappingData;
293*53ee8cc1Swenshuai.xi 
294*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
295*53ee8cc1Swenshuai.xi {
296*53ee8cc1Swenshuai.xi     MS_U8      u8EOTF; // 0:SDR gamma, 1:HDR gamma, 2:SMPTE ST2084, 3:Future EOTF, 4-7:Reserved
297*53ee8cc1Swenshuai.xi     MS_U16     u16Rx; // display primaries Rx
298*53ee8cc1Swenshuai.xi     MS_U16     u16Ry; // display primaries Ry
299*53ee8cc1Swenshuai.xi     MS_U16     u16Gx; // display primaries Gx
300*53ee8cc1Swenshuai.xi     MS_U16     u16Gy; // display primaries Gy
301*53ee8cc1Swenshuai.xi     MS_U16     u16Bx; // display primaries Bx
302*53ee8cc1Swenshuai.xi     MS_U16     u16By; // display primaries By
303*53ee8cc1Swenshuai.xi     MS_U16     u16Wx; // display primaries Wx
304*53ee8cc1Swenshuai.xi     MS_U16     u16Wy; // display primaries Wy
305*53ee8cc1Swenshuai.xi     MS_U16     u16Lmax; // max display mastering luminance
306*53ee8cc1Swenshuai.xi     MS_U16     u16Lmin; // min display mastering luminance
307*53ee8cc1Swenshuai.xi     MS_U16     u16MaxCLL; // maximum content light level
308*53ee8cc1Swenshuai.xi     MS_U16     u16MaxFALL; // maximum frame-average light level
309*53ee8cc1Swenshuai.xi } ACE_DRV_HDRMetadataHdmiTxInfoFrame;
310*53ee8cc1Swenshuai.xi 
311*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
312*53ee8cc1Swenshuai.xi {
313*53ee8cc1Swenshuai.xi     MS_U8 PixelFormat;              // Pixel Format
314*53ee8cc1Swenshuai.xi     MS_U8 Colorimetry;              // Color imetry
315*53ee8cc1Swenshuai.xi     MS_U8 ExtendedColorimetry;      // Extended Color imetry
316*53ee8cc1Swenshuai.xi     MS_U8 RgbQuantizationRange;     // Rgb Quantization Range
317*53ee8cc1Swenshuai.xi     MS_U8 YccQuantizationRange;     // Ycc Quantization Range
318*53ee8cc1Swenshuai.xi     MS_U8 StaticMetadataDescriptorID; //Static Metadata Descriptor ID
319*53ee8cc1Swenshuai.xi } ACE_DRV_HDRHdmiTxAviInfoFrame;
320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi /*!
322*53ee8cc1Swenshuai.xi  *  Initial  HDR   Settings
323*53ee8cc1Swenshuai.xi  */
324*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
325*53ee8cc1Swenshuai.xi {
326*53ee8cc1Swenshuai.xi     /// HDR Version Info
327*53ee8cc1Swenshuai.xi     MS_U16 u16HDRVerInfo;
328*53ee8cc1Swenshuai.xi     /// HDR init Length
329*53ee8cc1Swenshuai.xi     MS_U16 u16HDRInitLength;
330*53ee8cc1Swenshuai.xi     /// HDR Enable
331*53ee8cc1Swenshuai.xi     MS_BOOL bHDREnable;
332*53ee8cc1Swenshuai.xi     /// HDR Function Select
333*53ee8cc1Swenshuai.xi     MS_U16 u16HDRFunctionSelect;
334*53ee8cc1Swenshuai.xi     /// HDR Metadata Mpeg VUI
335*53ee8cc1Swenshuai.xi     ACE_DRV_HDRMetadataMpegVUI ACE_HDRMetadataMpegVUI;
336*53ee8cc1Swenshuai.xi     //HDR Tone Mapping Data
337*53ee8cc1Swenshuai.xi     ACE_DRV_HDRToneMappingData ACE_HDRToneMappingData;
338*53ee8cc1Swenshuai.xi     //HDR Gamut Mapping Data
339*53ee8cc1Swenshuai.xi     ACE_DRV_HDRGamutMappingData ACE_HDRGamutMappingData;
340*53ee8cc1Swenshuai.xi     //HDR Metadata Hdmi Tx Info Frame
341*53ee8cc1Swenshuai.xi     ACE_DRV_HDRMetadataHdmiTxInfoFrame ACE_HDRMetadataHdmiTxInfoFrame;
342*53ee8cc1Swenshuai.xi     //HDR Metadata Hdmi Tx Info Frame
343*53ee8cc1Swenshuai.xi     ACE_DRV_HDRHdmiTxAviInfoFrame ACE_HDRHdmiTxAviInfoFrame;
344*53ee8cc1Swenshuai.xi } ACE_DRV_HDRinit;
345*53ee8cc1Swenshuai.xi 
346*53ee8cc1Swenshuai.xi INTERFACE ACE_DRV_HDRinit g_ACEinitParameters;
347*53ee8cc1Swenshuai.xi 
348*53ee8cc1Swenshuai.xi 
349*53ee8cc1Swenshuai.xi MS_U16  msACE_GetVersion(void);
350*53ee8cc1Swenshuai.xi void    InitACEVar(void* pInstance);
351*53ee8cc1Swenshuai.xi void    msACEPCForceYUVtoRGB(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEnable );
352*53ee8cc1Swenshuai.xi void    msAdjustPCContrast(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Contrast );
353*53ee8cc1Swenshuai.xi void    msAdjustPCRGB(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Red, MS_U8 u8Green, MS_U8 u8Blue );
354*53ee8cc1Swenshuai.xi void    msAdjustVideoContrast(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Contrast );
355*53ee8cc1Swenshuai.xi void    msAdjustVideoRGB(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Red, MS_U8 u8Green, MS_U8 u8Blue);
356*53ee8cc1Swenshuai.xi void    msAdjustPCRGB_10Bits( void* pInstance, MS_BOOL bScalerWin, MS_U16 u16Red, MS_U16 u16Green, MS_U16 u16Blue );
357*53ee8cc1Swenshuai.xi void    msAdjustVideoRGB_10Bits(void* pInstance,  MS_BOOL bScalerWin, MS_U16 u16RCon, MS_U16 u16GCon, MS_U16 u16BCon);
358*53ee8cc1Swenshuai.xi void    msACESelectYUVtoRGBMatrix(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Matrix, MS_S16 *psUserYUVtoRGBMatrix );
359*53ee8cc1Swenshuai.xi void    msACESetColorCorrectionTable(void* pInstance, MS_BOOL bScalerWin, MS_S16 *psColorCorrectionTable );
360*53ee8cc1Swenshuai.xi void    msACESetPCsRGBTable(void* pInstance, MS_BOOL bScalerWin, MS_S16 *psPCsRGBTable );
361*53ee8cc1Swenshuai.xi void    msAdjustVideoSaturation(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Saturation );
362*53ee8cc1Swenshuai.xi void    msAdjustVideoHue(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Hue );
363*53ee8cc1Swenshuai.xi MS_U16  msACE_GetInfo(void* pInstance, MS_BOOL bWindow, EnuACEInfoType eACEInfoType );
364*53ee8cc1Swenshuai.xi void    msSetVideoColorMatrix(void* pInstance, MS_BOOL bScalerWin );
365*53ee8cc1Swenshuai.xi void    msSetPCColorMatrix(void* pInstance, MS_BOOL bScalerWin );
366*53ee8cc1Swenshuai.xi void    msACE_SetColorMatrixControl(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEnable );
367*53ee8cc1Swenshuai.xi void    msACE_SetRBChannelRange(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bRange );
368*53ee8cc1Swenshuai.xi MS_BOOL  msACESetBypassColorMatrix(void* pInstance, MS_BOOL bEnable);
369*53ee8cc1Swenshuai.xi 
370*53ee8cc1Swenshuai.xi /******************************************************************************/
371*53ee8cc1Swenshuai.xi /*                   Function Prototypes                                      */
372*53ee8cc1Swenshuai.xi /******************************************************************************/
373*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
374*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_GetVersion()
375*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get version of ACE library
376*53ee8cc1Swenshuai.xi /// @param <IN>        \b None
377*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
378*53ee8cc1Swenshuai.xi /// @param <RET>       \b Version
379*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
380*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
381*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_GetVersion(void);
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
384*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_Init()
385*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Initialize ACE
386*53ee8cc1Swenshuai.xi /// @param <IN>        \b None
387*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
388*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
389*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
390*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
391*53ee8cc1Swenshuai.xi void MDrv_ACE_Init(void* pInstance, MS_BOOL bScalerWin, MS_S16* psColorCorrectionTable, MS_S16* psPCsRGBTable );
392*53ee8cc1Swenshuai.xi 
393*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
394*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PCForceYUVtoRGB()
395*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Force transfer YUV to RGB
396*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
397*53ee8cc1Swenshuai.xi /// @param <IN>        \b bEnable
398*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
399*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
400*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
401*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
402*53ee8cc1Swenshuai.xi void MDrv_ACE_PCForceYUVtoRGB(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEnable );
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
405*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetContrast()
406*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Contrast
407*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
408*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Contrast
409*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
410*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
411*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
412*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
413*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetContrast(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bUseYUVSpace, MS_U8 u8Contrast );
414*53ee8cc1Swenshuai.xi 
415*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
416*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetRGB()
417*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video RGB
418*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
419*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Red
420*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Green
421*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Blue
422*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
423*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
424*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
425*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
426*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetRGB(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bUseYUVSpace, MS_U8 u8Red, MS_U8 u8Green, MS_U8 u8Blue );
427*53ee8cc1Swenshuai.xi 
428*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
429*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetRGB_10Bits()
430*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video RGB
431*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
432*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16Red
433*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16Green
434*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16Blue
435*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
436*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
437*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
438*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
439*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetRGB_10Bits( void* pInstance,MS_BOOL bScalerWin, MS_BOOL bUseYUVSpace, MS_U16 u16Red, MS_U16 u16Green, MS_U16 u16Blue );
440*53ee8cc1Swenshuai.xi 
441*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
442*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetPostRGBGain()
443*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video Post RGB Gain
444*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
445*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8RedGain
446*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8GreenGain
447*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8BlueGain
448*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
449*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
450*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
451*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
452*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetPostRGBGain(void* pInstance,MS_BOOL bScalerWin, MS_U16 u8RedGain, MS_U16 u8GreenGain, MS_U16 u8BlueGain);
453*53ee8cc1Swenshuai.xi 
454*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
455*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetPostRGBGainOffset()
456*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Post RGB Gain and Offset simultaneously
457*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
458*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8RedGain
459*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8GreenGain
460*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8BlueGain
461*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16RedOffset
462*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16GreenOffset
463*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16BlueOffset
464*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
465*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
466*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
467*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
468*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetPostRGBGainOffset(void* pInstance,MS_BOOL bScalerWin,
469*53ee8cc1Swenshuai.xi                                       MS_U16 u8RedGain,    MS_U16 u8GreenGain,    MS_U16 u8BlueGain,
470*53ee8cc1Swenshuai.xi                                       MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset, MS_U8 u8Step);
471*53ee8cc1Swenshuai.xi 
472*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
473*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_GetInfo()
474*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get ACE Info
475*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
476*53ee8cc1Swenshuai.xi /// @param <IN>        \b ucInfoType
477*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
478*53ee8cc1Swenshuai.xi /// @param <RET>       \b wReturnValue
479*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
480*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
481*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_GetPostRGBGain(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16ACEinfo);
482*53ee8cc1Swenshuai.xi 
483*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
484*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_PicSetPostRGBOffset()
485*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video Post RGB Offset
486*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
487*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16RedOffset
488*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16GreenOffset
489*53ee8cc1Swenshuai.xi /// @param <IN>        \b u16BlueOffset
490*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Step
491*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
492*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
493*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
494*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
495*53ee8cc1Swenshuai.xi void MDrv_ACE_PicSetPostRGBOffset(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset, MS_U8 u8Step);
496*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
497*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SelectYUVtoRGBMatrix()
498*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Select YUV to RGB Matrix
499*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
500*53ee8cc1Swenshuai.xi /// @param <IN>        \b ucMatrix
501*53ee8cc1Swenshuai.xi /// @param <IN>        \b psUserYUVtoRGBMatrix
502*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
503*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
504*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
505*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
506*53ee8cc1Swenshuai.xi void MDrv_ACE_SelectYUVtoRGBMatrix(void* pInstance, MS_BOOL bScalerWin, MS_U8 ucMatrix, MS_S16* psUserYUVtoRGBMatrix );
507*53ee8cc1Swenshuai.xi 
508*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
509*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SetColorCorrectionTable()
510*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Set Color Correction Table
511*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
512*53ee8cc1Swenshuai.xi /// @param <IN>        \b psColorCorrectionTable
513*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
514*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
515*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
516*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
517*53ee8cc1Swenshuai.xi void MDrv_ACE_SetColorCorrectionTable(void* pInstance, MS_BOOL bScalerWin);
518*53ee8cc1Swenshuai.xi 
519*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
520*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SetPCsRGBTable()
521*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Set PCs RGB Table
522*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
523*53ee8cc1Swenshuai.xi /// @param <IN>        \b psPCsRGBTable
524*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
525*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
526*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
527*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
528*53ee8cc1Swenshuai.xi void MDrv_ACE_SetPCsRGBTable(void* pInstance, MS_BOOL bScalerWin);
529*53ee8cc1Swenshuai.xi 
530*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
531*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_AdjustVideoSaturation()
532*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video Saturation
533*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
534*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Saturation
535*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
536*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
537*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
538*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
539*53ee8cc1Swenshuai.xi void MDrv_ACE_SetSaturation(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Saturation );
540*53ee8cc1Swenshuai.xi 
541*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
542*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_SetHue()
543*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Adjust Video Hue
544*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
545*53ee8cc1Swenshuai.xi /// @param <IN>        \b u8Hue
546*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
547*53ee8cc1Swenshuai.xi /// @param <RET>       \b None
548*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
549*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
550*53ee8cc1Swenshuai.xi void MDrv_ACE_SetHue(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Hue );
551*53ee8cc1Swenshuai.xi 
552*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
553*53ee8cc1Swenshuai.xi /// @brief \b Function \b Name: MDrv_ACE_GetInfo()
554*53ee8cc1Swenshuai.xi /// @brief \b Function \b Description:  Get ACE Info
555*53ee8cc1Swenshuai.xi /// @param <IN>        \b bScalerWin
556*53ee8cc1Swenshuai.xi /// @param <IN>        \b ucInfoType
557*53ee8cc1Swenshuai.xi /// @param <OUT>       \b None
558*53ee8cc1Swenshuai.xi /// @param <RET>       \b wReturnValue
559*53ee8cc1Swenshuai.xi /// @param <GLOBAL>    \b None
560*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
561*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_GetACEInfo(void* pInstance, MS_BOOL bWindow, MS_U16 u16ACEinfo );
562*53ee8cc1Swenshuai.xi 
563*53ee8cc1Swenshuai.xi 
564*53ee8cc1Swenshuai.xi void MDrv_ACE_DMS(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bisATV );
565*53ee8cc1Swenshuai.xi void MDrv_ACE_GetColorMatrix(void* pInstance, MS_BOOL bScalerWin, MS_U16* pu16Matrix );
566*53ee8cc1Swenshuai.xi void MDrv_ACE_SetColorMatrix(void* pInstance, MS_BOOL bScalerWin, MS_U16* pu16Matrix );
567*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetBypassColorMatrix(void* pInstance, MS_BOOL bEnable );
568*53ee8cc1Swenshuai.xi void MDrv_ACE_PatchDTGColorChecker(void* pInstance, MS_U8 u8Mode);
569*53ee8cc1Swenshuai.xi void MDrv_ACE_SetFleshTone(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEn, MS_U8 u8FlashTone); ///< set flash tone
570*53ee8cc1Swenshuai.xi void MDrv_ACE_SetBlackAdjust(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8BlackAdjust);
571*53ee8cc1Swenshuai.xi 
572*53ee8cc1Swenshuai.xi void MDrv_ACE_init_riu_base(MS_VIRT ptr_riu_base );
573*53ee8cc1Swenshuai.xi void MDrv_ACE_SetSharpness(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8Sharpness );
574*53ee8cc1Swenshuai.xi void MDrv_ACE_SetBrightness (void* pInstance, MS_BOOL bScalerWin, MS_U8 u8RedBrightness, MS_U8 u8GreenBrightness, MS_U8 u8BlueBrightness );
575*53ee8cc1Swenshuai.xi void MDrv_ACE_SetBrightnessPrecise(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16RedBrightness, MS_U16 u16GreenBrightness, MS_U16 u16BlueBrightness);
576*53ee8cc1Swenshuai.xi MS_U16 MDrv_ACE_GetBrightness (void* pInstance, MS_BOOL bScalerWin, EnuACEInfoType eACEInfoType);
577*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetPreYOffset(void* pInstance, MS_BOOL bScalerWin, MS_U8 u8PreYOffset);
578*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_GetPreYOffset(void* pInstance, MS_BOOL bScalerWin);
579*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_IsPostRGBGain(void* pInstance, MS_BOOL bWindow);
580*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_IsPostRGBOffset(void* pInstance, MS_BOOL bWindow);
581*53ee8cc1Swenshuai.xi MS_BOOL MDrv_XC_ACE_Set_IHC_SRAM(void* pInstance, MS_U16 *pBuf, MS_U16 u16ByteSize);
582*53ee8cc1Swenshuai.xi MS_BOOL MDrv_XC_ACE_Set_ICC_SRAM(void* pInstance, MS_U16 *pBuf, MS_U16 u16ByteSize);
583*53ee8cc1Swenshuai.xi 
584*53ee8cc1Swenshuai.xi //------------------------------
585*53ee8cc1Swenshuai.xi // MWE related
586*53ee8cc1Swenshuai.xi //------------------------------
587*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWEinit(void* pInstance, MS_U16 u16MWEHstart, MS_U16 u16MWEVstart, MS_U16 u16MWEWidth, MS_U16 u16MWEHeight);
588*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWESetWin(void* pInstance, MWE_RECT *pRect);
589*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWESetBorder(void* pInstance, MS_BOOL bScalerWin, MS_BOOL ben, MS_U8 u8color, MS_U16 u16_l, MS_U16 u16_r, MS_U16 u16_t, MS_U16 u16_d);
590*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWEEnable(void* pInstance, MS_BOOL bEnable, MS_BOOL bLoadFromTable);
591*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWECloneVisualEffect(void* pInstance);
592*53ee8cc1Swenshuai.xi void MDrv_ACE_3DClonePQMap(void* pInstance, XC_ACE_WEAVETYPE enWeaveType);
593*53ee8cc1Swenshuai.xi void MDrv_XC_ACE_MWESetRegRow(void* pInstance, MS_U32 u32Addr, MS_U8 u8Value, MS_U8 u8Mask);
594*53ee8cc1Swenshuai.xi 
595*53ee8cc1Swenshuai.xi //------------------------------
596*53ee8cc1Swenshuai.xi // DynamicnNR related
597*53ee8cc1Swenshuai.xi //------------------------------
598*53ee8cc1Swenshuai.xi 
599*53ee8cc1Swenshuai.xi MS_U8 MDrv_XC_ACE_DNR_GetMotion(void* pInstance);
600*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_DNR_GetCoringThreshold(void* pInstance, MS_BOOL bScalerWin);
601*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_DNR_GetSharpnessAdjust(void* pInstance, MS_BOOL bScalerWin);
602*53ee8cc1Swenshuai.xi MS_U8 MDrv_ACE_DNR_GetGuassin_SNR_Threshold(void* pInstance, MS_BOOL bScalerWin);
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetCoringThreshold(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
605*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSharpnessAdjust(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
606*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNM_V(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
607*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGNR_0(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
608*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGNR_1(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
609*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetCP(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
610*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetDP(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
611*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNM_H_0(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
612*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNM_H_1(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
613*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGray_Ground_Gain(void* pInstance, MS_U16 u16val);
614*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGray_Ground_En(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
615*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSC_Coring(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
616*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSpikeNR_0(void* pInstance, MS_U16 u16val);
617*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSpikeNR_1(void* pInstance, MS_U16 u16val);
618*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetSNR_NM(void* pInstance, MS_U16 u16val);
619*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetBank_Coring(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
620*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetGuassin_SNR_Threshold(void* pInstance, MS_BOOL bScalerWin, MS_U16 u16val);
621*53ee8cc1Swenshuai.xi void MDrv_ACE_DNR_SetNRTable(void* pInstance, MS_U8 *pTbl);
622*53ee8cc1Swenshuai.xi void MDrv_ACE_SetColorMatrixControl(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bEnable );
623*53ee8cc1Swenshuai.xi void MDrv_ACE_SetRBChannelRange(void* pInstance, MS_BOOL bScalerWin, MS_BOOL bRange);
624*53ee8cc1Swenshuai.xi void MDrv_ACE_WriteColorMatrixBurst(void* pInstance, MS_BOOL bWindow, MS_U16* psMatrix );
625*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_IsSupportMLoad(void* pInstance);
626*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetIHC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IHC_COLOR_TYPE eIHC, MS_U8 u8Val);
627*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetIHC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IHC_COLOR_TYPE eIHC, MS_U8* pu8Val);
628*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetICC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_ICC_COLOR_TYPE eICC, MS_U8 u8Val);
629*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetICC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_ICC_COLOR_TYPE eICC, MS_U8* pu8Val);
630*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetIBC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IBC_COLOR_TYPE eIBC, MS_U8 u8Val);
631*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetIBC(void* pInstance, MS_BOOL bScalerWin, XC_ACE_IBC_COLOR_TYPE eIBC, MS_U8* pu8Val);
632*53ee8cc1Swenshuai.xi 
633*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_SetHDRInit(void* pInstance,ACE_DRV_HDRinit * pstACE_HDRInitData);
634*53ee8cc1Swenshuai.xi void msACE_HDR_Main(void *pInstance);
635*53ee8cc1Swenshuai.xi 
636*53ee8cc1Swenshuai.xi void MDrv_ACE_ColorCorrectionTable(void* pInstance, MS_BOOL bScalerWin, MS_S16 *psColorCorrectionTable );
637*53ee8cc1Swenshuai.xi //OS dependent.
638*53ee8cc1Swenshuai.xi 
639*53ee8cc1Swenshuai.xi void MDrv_ACE_SetSkipWaitVsync(void* pInstance, MS_BOOL eWindow,MS_BOOL bIsSkipWaitVsyn);
640*53ee8cc1Swenshuai.xi MS_BOOL MDrv_ACE_GetSkipWaitVsync(void* pInstance, MS_BOOL bScalerWin);
641*53ee8cc1Swenshuai.xi 
642*53ee8cc1Swenshuai.xi MS_U32 MDrv_ACE_GetDeviceNum(void);
643*53ee8cc1Swenshuai.xi 
644*53ee8cc1Swenshuai.xi 
645*53ee8cc1Swenshuai.xi #ifdef __cplusplus
646*53ee8cc1Swenshuai.xi }
647*53ee8cc1Swenshuai.xi #endif
648*53ee8cc1Swenshuai.xi #endif // DRV_ACE_H
649*53ee8cc1Swenshuai.xi 
650