xref: /utopia/UTPA2-700.0.x/projects/tmplib/include/apiXC_Dlc.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_Dlc.h
98*53ee8cc1Swenshuai.xi /// @brief  DLC API layer Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi //  CL171075++: sync to DLC libv32.59 :
101*53ee8cc1Swenshuai.xi //      1.Add guard condition to msDlcOnOff & msDlc_CGC_Init; msDlcOnOff & msDlc_CGC_Init will check
102*53ee8cc1Swenshuai.xi //        DLC On/Off status before execution.
103*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi /*! \defgroup Video Video modules
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi  *  \defgroup XC_BE XC_BE modules
108*53ee8cc1Swenshuai.xi  *  \ingroup Video
109*53ee8cc1Swenshuai.xi 
110*53ee8cc1Swenshuai.xi     DLC is used for\n
111*53ee8cc1Swenshuai.xi     1. Dynamic Luma Curve : Calculate the DLC curve base on histogram and average value.\n
112*53ee8cc1Swenshuai.xi     For more information,see \link DLC DLC interface (apiXC_DLC.h) \endlink
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi  *  \defgroup DLC DLC interface (apiXC_DLC.h)
115*53ee8cc1Swenshuai.xi  *  \ingroup XC_BE
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi     DLC is used for:
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi     - Dynamic Luma Curve : Calculate the DLC curve base on histogram and average value.
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi     <b> Operation Code Flow: </b> \n
122*53ee8cc1Swenshuai.xi     check flow chart directly.
123*53ee8cc1Swenshuai.xi     \image html apiXC_DLC_DBC_Handler_flow.png
124*53ee8cc1Swenshuai.xi 
125*53ee8cc1Swenshuai.xi  *  \defgroup DLC_INIT DLC init control
126*53ee8cc1Swenshuai.xi  *  \ingroup DLC
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi  *! \defgroup DLC_FEATURE DLC feature operation
129*53ee8cc1Swenshuai.xi  *  \ingroup DLC
130*53ee8cc1Swenshuai.xi 
131*53ee8cc1Swenshuai.xi  *! \defgroup DLC_INFO DLC Infomation pool
132*53ee8cc1Swenshuai.xi  *  \ingroup DLC
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi  *! \defgroup DLC_ToBeModified DLC api to be modified
135*53ee8cc1Swenshuai.xi  *  \ingroup DLC
136*53ee8cc1Swenshuai.xi 
137*53ee8cc1Swenshuai.xi  *! \defgroup DLC_ToBeRemove DLC api to be removed
138*53ee8cc1Swenshuai.xi  *  \ingroup DLC
139*53ee8cc1Swenshuai.xi  */
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi #ifndef _API_XC_DLC_H_
142*53ee8cc1Swenshuai.xi #define _API_XC_DLC_H_
143*53ee8cc1Swenshuai.xi #include "MsCommon.h"
144*53ee8cc1Swenshuai.xi #include "MsDevice.h"
145*53ee8cc1Swenshuai.xi 
146*53ee8cc1Swenshuai.xi #ifdef __cplusplus
147*53ee8cc1Swenshuai.xi extern "C"
148*53ee8cc1Swenshuai.xi {
149*53ee8cc1Swenshuai.xi #endif
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
152*53ee8cc1Swenshuai.xi //  Macro and Define
153*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
157*53ee8cc1Swenshuai.xi //  Type and Structure
158*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
159*53ee8cc1Swenshuai.xi #define MSIF_DLC_LIB_CODE               {'D','L','C','_'}
160*53ee8cc1Swenshuai.xi #define MSIF_DLC_LIBVER                 {'0','0'}
161*53ee8cc1Swenshuai.xi #define MSIF_DLC_BUILDNUM               {'3','0'}
162*53ee8cc1Swenshuai.xi #define MSIF_DLC_CHANGELIST             {'0','0','6','1','8','0','7','0'}
163*53ee8cc1Swenshuai.xi #define XC_DLC_API_VERSION /* Character String for DRV/API version */  \
164*53ee8cc1Swenshuai.xi     MSIF_TAG           ,   /* 'MSIF'                               */  \
165*53ee8cc1Swenshuai.xi     MSIF_CLASS         ,   /* '00'                                 */  \
166*53ee8cc1Swenshuai.xi     MSIF_CUS           ,   /* 0x0000                               */  \
167*53ee8cc1Swenshuai.xi     MSIF_MOD           ,   /* 0x0000                               */  \
168*53ee8cc1Swenshuai.xi     MSIF_CHIP          , \
169*53ee8cc1Swenshuai.xi     MSIF_CPU           , \
170*53ee8cc1Swenshuai.xi     MSIF_DLC_LIB_CODE  ,   /* IP__                                 */  \
171*53ee8cc1Swenshuai.xi     MSIF_DLC_LIBVER    ,   /* 0.0 ~ Z.Z                            */  \
172*53ee8cc1Swenshuai.xi     MSIF_DLC_BUILDNUM  ,   /* 00 ~ 99                              */  \
173*53ee8cc1Swenshuai.xi     MSIF_DLC_CHANGELIST,   /* CL#                                  */  \
174*53ee8cc1Swenshuai.xi     MSIF_OS
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi #define XC_DLC_HDR_VERSION  1
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi #define ENABLE_10_BIT_DLC   0
179*53ee8cc1Swenshuai.xi 
180*53ee8cc1Swenshuai.xi /// DLC_MFINIT_Ex version of current DLC lib
181*53ee8cc1Swenshuai.xi #define DLC_MFINIT_EX_VERSION                      1
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi /// The ucDlcHistogramLimitCurve arrary num
184*53ee8cc1Swenshuai.xi #define DLC_HISTOGRAM_LIMIT_CURVE_ARRARY_NUM       17
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi #ifndef UNUSED
187*53ee8cc1Swenshuai.xi #define UNUSED(x) (void)(x)
188*53ee8cc1Swenshuai.xi #endif
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi /*!
191*53ee8cc1Swenshuai.xi  *  The DLC curve settings, ways of enable DLC or, disable DLC.
192*53ee8cc1Swenshuai.xi  */
193*53ee8cc1Swenshuai.xi typedef enum
194*53ee8cc1Swenshuai.xi {
195*53ee8cc1Swenshuai.xi     /// DLC curve
196*53ee8cc1Swenshuai.xi     E_XC_DLC_PURE_IMAGE_DLC_CURVE = 0,
197*53ee8cc1Swenshuai.xi     /// Linear curve
198*53ee8cc1Swenshuai.xi     E_XC_DLC_PURE_IMAGE_LINEAR_CURVE ,
199*53ee8cc1Swenshuai.xi     /// get base address failed when initialize panel driver
200*53ee8cc1Swenshuai.xi     E_XC_DLC_PURE_IMAGE_DO_NOTHING ,
201*53ee8cc1Swenshuai.xi } E_XC_DLC_PURE_IMAGE_CURVE ;
202*53ee8cc1Swenshuai.xi 
203*53ee8cc1Swenshuai.xi /*!
204*53ee8cc1Swenshuai.xi  *  The DLC curve mode, ways of decide DLC algorithm.
205*53ee8cc1Swenshuai.xi  */
206*53ee8cc1Swenshuai.xi typedef enum
207*53ee8cc1Swenshuai.xi {
208*53ee8cc1Swenshuai.xi     ///
209*53ee8cc1Swenshuai.xi     E_XC_DLC_CURVE_MODE_BY_YAVG = 0,
210*53ee8cc1Swenshuai.xi     ///
211*53ee8cc1Swenshuai.xi     E_XC_DLC_CURVE_MODE_BY_HISTOGRAM ,
212*53ee8cc1Swenshuai.xi     ///
213*53ee8cc1Swenshuai.xi     E_XC_DLC_CURVE_MODE_BY_MIX ,
214*53ee8cc1Swenshuai.xi } E_XC_DLC_CURVE_MODE ;
215*53ee8cc1Swenshuai.xi 
216*53ee8cc1Swenshuai.xi /*!
217*53ee8cc1Swenshuai.xi  *  The DLC algorthm mode, ways of decide DLC algorithm.
218*53ee8cc1Swenshuai.xi  */
219*53ee8cc1Swenshuai.xi typedef enum
220*53ee8cc1Swenshuai.xi {
221*53ee8cc1Swenshuai.xi     ///
222*53ee8cc1Swenshuai.xi     E_XC_DLC_ALGORITHM_OLD = 0,
223*53ee8cc1Swenshuai.xi     ///
224*53ee8cc1Swenshuai.xi     E_XC_DLC_ALGORITHM_NEW ,
225*53ee8cc1Swenshuai.xi } E_XC_DLC_ALGORITHM_MODE ;
226*53ee8cc1Swenshuai.xi /*!
227*53ee8cc1Swenshuai.xi  *  The DLC curve settings, ways of enable DLC or, disable DLC.
228*53ee8cc1Swenshuai.xi  */
229*53ee8cc1Swenshuai.xi typedef enum
230*53ee8cc1Swenshuai.xi {
231*53ee8cc1Swenshuai.xi     /// fail
232*53ee8cc1Swenshuai.xi     E_XC_DLC_FAIL = 0,
233*53ee8cc1Swenshuai.xi     /// ok
234*53ee8cc1Swenshuai.xi     E_XC_DLC_OK = 1,
235*53ee8cc1Swenshuai.xi     /// get base address failed when initialize panel driver
236*53ee8cc1Swenshuai.xi     E_XC_DLC_GET_BASEADDR_FAIL,
237*53ee8cc1Swenshuai.xi     /// obtain mutex timeout when calling this function
238*53ee8cc1Swenshuai.xi     E_XC_DLC_OBTAIN_MUTEX_FAIL,
239*53ee8cc1Swenshuai.xi } E_XC_DLC_RESULT;
240*53ee8cc1Swenshuai.xi 
241*53ee8cc1Swenshuai.xi 
242*53ee8cc1Swenshuai.xi typedef enum
243*53ee8cc1Swenshuai.xi {
244*53ee8cc1Swenshuai.xi     E_XC_DLC_HISTOGRAM_32,
245*53ee8cc1Swenshuai.xi     E_XC_DLC_HISTOGRAM_8,
246*53ee8cc1Swenshuai.xi }E_XC_DLC_HISTOGRAM_TYPE;
247*53ee8cc1Swenshuai.xi /******************************************************************************/
248*53ee8cc1Swenshuai.xi /*         Structures                                                         */
249*53ee8cc1Swenshuai.xi /******************************************************************************/
250*53ee8cc1Swenshuai.xi 
251*53ee8cc1Swenshuai.xi //----------------------------
252*53ee8cc1Swenshuai.xi // XC DLC initialize
253*53ee8cc1Swenshuai.xi //----------------------------
254*53ee8cc1Swenshuai.xi /*!
255*53ee8cc1Swenshuai.xi  *  Initial Settings of MF Dyanmic Luma Curve
256*53ee8cc1Swenshuai.xi  */
257*53ee8cc1Swenshuai.xi typedef struct
258*53ee8cc1Swenshuai.xi {
259*53ee8cc1Swenshuai.xi     /// Default luma curve
260*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve[16];
261*53ee8cc1Swenshuai.xi     /// Default luma curve 2a
262*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_a[16];
263*53ee8cc1Swenshuai.xi     /// Default luma curve 2b
264*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_b[16];
265*53ee8cc1Swenshuai.xi     /// Default luma curve 2
266*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2[16];
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi     /// default value: 10
269*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_U;
270*53ee8cc1Swenshuai.xi     /// default value: 10
271*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_D;
272*53ee8cc1Swenshuai.xi     /// default value: 10
273*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_U;
274*53ee8cc1Swenshuai.xi     /// default value: 10
275*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_D;
276*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
277*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_U;
278*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
279*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_D;
280*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
281*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_U;
282*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
283*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_D;
284*53ee8cc1Swenshuai.xi     /// -31 ~ 31 (bit7 = minus, ex. 0x88 => -8)
285*53ee8cc1Swenshuai.xi     MS_U8 ucCGCCGain_offset;
286*53ee8cc1Swenshuai.xi     /// 0x00~0x6F
287*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitH;
288*53ee8cc1Swenshuai.xi     /// 0x00~0x10
289*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitL;
290*53ee8cc1Swenshuai.xi     /// 0x01~0x20
291*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYCslope;
292*53ee8cc1Swenshuai.xi     /// 0x01
293*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYth;
294*53ee8cc1Swenshuai.xi     /// Compare difference of max and min bright
295*53ee8cc1Swenshuai.xi     MS_U8 ucDlcPureImageMode;
296*53ee8cc1Swenshuai.xi     /// n = 0 ~ 4 => Limit n levels => ex. n=2, limit 2 level 0xF7, 0xE7
297*53ee8cc1Swenshuai.xi     MS_U8 ucDlcLevelLimit;
298*53ee8cc1Swenshuai.xi     /// n = 0 ~ 50, default value: 12
299*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDelta;
300*53ee8cc1Swenshuai.xi     /// n = 0 ~ 15 => 0: disable still curve, 1 ~ 15: enable still curve
301*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDeltaStill;
302*53ee8cc1Swenshuai.xi     /// min 17 ~ max 32
303*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFastAlphaBlending;
304*53ee8cc1Swenshuai.xi     /// some event is triggered, DLC must do slowly // for PIP On/Off, msMultiPic.c
305*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSlowEvent;
306*53ee8cc1Swenshuai.xi     /// for IsrApp.c
307*53ee8cc1Swenshuai.xi     MS_U8 ucDlcTimeOut;
308*53ee8cc1Swenshuai.xi     /// for force to do fast DLC in a while
309*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFlickAlphaStart;
310*53ee8cc1Swenshuai.xi     /// default value: 128
311*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdH;
312*53ee8cc1Swenshuai.xi     /// default value: 0
313*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdL;
314*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
315*53ee8cc1Swenshuai.xi     MS_U8 ucDlcBLEPoint;
316*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
317*53ee8cc1Swenshuai.xi     MS_U8 ucDlcWLEPoint;
318*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
319*53ee8cc1Swenshuai.xi     MS_U8 bCGCCGainCtrl : 1;
320*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
321*53ee8cc1Swenshuai.xi     MS_U8 bEnableBLE : 1;
322*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
323*53ee8cc1Swenshuai.xi     MS_U8 bEnableWLE : 1;
324*53ee8cc1Swenshuai.xi } XC_DLC_MFinit;
325*53ee8cc1Swenshuai.xi 
326*53ee8cc1Swenshuai.xi 
327*53ee8cc1Swenshuai.xi typedef struct
328*53ee8cc1Swenshuai.xi {
329*53ee8cc1Swenshuai.xi     MS_U32 u32DLC_MFinit_Ex_Version;   ///<Version of current structure. Please always set to "DLC_MFINIT_EX_VERSION" as input
330*53ee8cc1Swenshuai.xi     /// Default luma curve
331*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve[16];
332*53ee8cc1Swenshuai.xi     /// Default luma curve 2a
333*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_a[16];
334*53ee8cc1Swenshuai.xi     /// Default luma curve 2b
335*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_b[16];
336*53ee8cc1Swenshuai.xi     /// Default luma curve 2
337*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2[16];
338*53ee8cc1Swenshuai.xi 
339*53ee8cc1Swenshuai.xi     /// default value: 10
340*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_U;
341*53ee8cc1Swenshuai.xi     /// default value: 10
342*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_D;
343*53ee8cc1Swenshuai.xi     /// default value: 10
344*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_U;
345*53ee8cc1Swenshuai.xi     /// default value: 10
346*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_D;
347*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
348*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_U;
349*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
350*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_D;
351*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
352*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_U;
353*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
354*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_D;
355*53ee8cc1Swenshuai.xi     /// -31 ~ 31 (bit7 = minus, ex. 0x88 => -8)
356*53ee8cc1Swenshuai.xi     MS_U8 ucCGCCGain_offset;
357*53ee8cc1Swenshuai.xi     /// 0x00~0x6F
358*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitH;
359*53ee8cc1Swenshuai.xi     /// 0x00~0x10
360*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitL;
361*53ee8cc1Swenshuai.xi     /// 0x01~0x20
362*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYCslope;
363*53ee8cc1Swenshuai.xi     /// 0x01
364*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYth;
365*53ee8cc1Swenshuai.xi     /// Compare difference of max and min bright
366*53ee8cc1Swenshuai.xi     MS_U8 ucDlcPureImageMode;
367*53ee8cc1Swenshuai.xi     /// n = 0 ~ 4 => Limit n levels => ex. n=2, limit 2 level 0xF7, 0xE7
368*53ee8cc1Swenshuai.xi     MS_U8 ucDlcLevelLimit;
369*53ee8cc1Swenshuai.xi     /// n = 0 ~ 50, default value: 12
370*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDelta;
371*53ee8cc1Swenshuai.xi     /// n = 0 ~ 15 => 0: disable still curve, 1 ~ 15: enable still curve
372*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDeltaStill;
373*53ee8cc1Swenshuai.xi     /// min 17 ~ max 32
374*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFastAlphaBlending;
375*53ee8cc1Swenshuai.xi     /// some event is triggered, DLC must do slowly // for PIP On/Off, msMultiPic.c
376*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSlowEvent;
377*53ee8cc1Swenshuai.xi     /// for IsrApp.c
378*53ee8cc1Swenshuai.xi     MS_U8 ucDlcTimeOut;
379*53ee8cc1Swenshuai.xi     /// for force to do fast DLC in a while
380*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFlickAlphaStart;
381*53ee8cc1Swenshuai.xi     /// default value: 128
382*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdH;
383*53ee8cc1Swenshuai.xi     /// default value: 0
384*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdL;
385*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
386*53ee8cc1Swenshuai.xi     MS_U8 ucDlcBLEPoint;
387*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
388*53ee8cc1Swenshuai.xi     MS_U8 ucDlcWLEPoint;
389*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
390*53ee8cc1Swenshuai.xi     MS_U8 bCGCCGainCtrl : 1;
391*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
392*53ee8cc1Swenshuai.xi     MS_U8 bEnableBLE : 1;
393*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
394*53ee8cc1Swenshuai.xi     MS_U8 bEnableWLE : 1;
395*53ee8cc1Swenshuai.xi     /// default value: 64
396*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdM;
397*53ee8cc1Swenshuai.xi     /// Compare difference of max and min bright
398*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveMode;
399*53ee8cc1Swenshuai.xi     /// min 00 ~ max 128
400*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveModeMixAlpha;
401*53ee8cc1Swenshuai.xi     ///
402*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAlgorithmMode;
403*53ee8cc1Swenshuai.xi     /// Dlc Histogram Limit Curve
404*53ee8cc1Swenshuai.xi     MS_U8 ucDlcHistogramLimitCurve[DLC_HISTOGRAM_LIMIT_CURVE_ARRARY_NUM];
405*53ee8cc1Swenshuai.xi     ///
406*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSepPointH;
407*53ee8cc1Swenshuai.xi     ///
408*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSepPointL;
409*53ee8cc1Swenshuai.xi     ///
410*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBleStartPointTH;
411*53ee8cc1Swenshuai.xi     ///
412*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBleEndPointTH;
413*53ee8cc1Swenshuai.xi     ///
414*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveDiff_L_TH;
415*53ee8cc1Swenshuai.xi     ///
416*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveDiff_H_TH;
417*53ee8cc1Swenshuai.xi     ///
418*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_1;
419*53ee8cc1Swenshuai.xi     ///
420*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_2;
421*53ee8cc1Swenshuai.xi     ///
422*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_3;
423*53ee8cc1Swenshuai.xi     ///
424*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_4;
425*53ee8cc1Swenshuai.xi     ///
426*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_5;
427*53ee8cc1Swenshuai.xi     ///
428*53ee8cc1Swenshuai.xi     MS_U16 uwDlcDark_BLE_Slop_Min;
429*53ee8cc1Swenshuai.xi     ///
430*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveDiffCoringTH;
431*53ee8cc1Swenshuai.xi     ///
432*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAlphaBlendingMin;
433*53ee8cc1Swenshuai.xi     ///
434*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAlphaBlendingMax;
435*53ee8cc1Swenshuai.xi     ///
436*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFlicker_alpha;
437*53ee8cc1Swenshuai.xi     ///
438*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAVG_L_TH;
439*53ee8cc1Swenshuai.xi     ///
440*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAVG_H_TH;
441*53ee8cc1Swenshuai.xi     ///
442*53ee8cc1Swenshuai.xi     MS_U8 ucDlcDiffBase_L;
443*53ee8cc1Swenshuai.xi     ///
444*53ee8cc1Swenshuai.xi     MS_U8 ucDlcDiffBase_M;
445*53ee8cc1Swenshuai.xi     ///
446*53ee8cc1Swenshuai.xi     MS_U8 ucDlcDiffBase_H;
447*53ee8cc1Swenshuai.xi } XC_DLC_MFinit_Ex;
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi /*!
450*53ee8cc1Swenshuai.xi  *  Initial Settings of Dynamic Backlight Control
451*53ee8cc1Swenshuai.xi  */
452*53ee8cc1Swenshuai.xi typedef struct
453*53ee8cc1Swenshuai.xi {
454*53ee8cc1Swenshuai.xi     /// Max PWM
455*53ee8cc1Swenshuai.xi     MS_U8 ucMaxPWM;
456*53ee8cc1Swenshuai.xi     /// Min PWM
457*53ee8cc1Swenshuai.xi     MS_U8 ucMinPWM;
458*53ee8cc1Swenshuai.xi     /// Max Video
459*53ee8cc1Swenshuai.xi     MS_U8 ucMax_Video;
460*53ee8cc1Swenshuai.xi     /// Mid Video
461*53ee8cc1Swenshuai.xi     MS_U8 ucMid_Video;
462*53ee8cc1Swenshuai.xi     /// Min Video
463*53ee8cc1Swenshuai.xi     MS_U8 ucMin_Video;
464*53ee8cc1Swenshuai.xi     /// Current PWM
465*53ee8cc1Swenshuai.xi     MS_U8 ucCurrentPWM;
466*53ee8cc1Swenshuai.xi     /// Alpha
467*53ee8cc1Swenshuai.xi     MS_U8 ucAlpha;
468*53ee8cc1Swenshuai.xi     /// Backlight thres
469*53ee8cc1Swenshuai.xi     MS_U8 ucBackLight_Thres;
470*53ee8cc1Swenshuai.xi     /// Avg delta
471*53ee8cc1Swenshuai.xi     MS_U8 ucAvgDelta;
472*53ee8cc1Swenshuai.xi     /// Flick alpha
473*53ee8cc1Swenshuai.xi     MS_U8 ucFlickAlpha;
474*53ee8cc1Swenshuai.xi     /// Fast alpha blending, min 17 ~ max 32
475*53ee8cc1Swenshuai.xi     MS_U8 ucFastAlphaBlending;
476*53ee8cc1Swenshuai.xi     // TBD
477*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly;
478*53ee8cc1Swenshuai.xi     // TBD
479*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_H_Init;
480*53ee8cc1Swenshuai.xi     // TBD
481*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_MH_Init;
482*53ee8cc1Swenshuai.xi     // TBD
483*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_ML_Init;
484*53ee8cc1Swenshuai.xi     // TBD
485*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_L_Init;
486*53ee8cc1Swenshuai.xi     /// Y gain H
487*53ee8cc1Swenshuai.xi     MS_U8 ucY_Gain_H;
488*53ee8cc1Swenshuai.xi     /// C gain H
489*53ee8cc1Swenshuai.xi     MS_U8 ucC_Gain_H;
490*53ee8cc1Swenshuai.xi     /// Y gain M
491*53ee8cc1Swenshuai.xi     MS_U8 ucY_Gain_M;
492*53ee8cc1Swenshuai.xi     /// C gain M
493*53ee8cc1Swenshuai.xi     MS_U8 ucC_Gain_M;
494*53ee8cc1Swenshuai.xi     /// Y gain L
495*53ee8cc1Swenshuai.xi     MS_U8 ucY_Gain_L;
496*53ee8cc1Swenshuai.xi     /// C gain L
497*53ee8cc1Swenshuai.xi     MS_U8 ucC_Gain_L;
498*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
499*53ee8cc1Swenshuai.xi     MS_U8 bYGainCtrl : 1;
500*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
501*53ee8cc1Swenshuai.xi     MS_U8 bCGainCtrl : 1;
502*53ee8cc1Swenshuai.xi }XC_DLC_DBC_MFinit;
503*53ee8cc1Swenshuai.xi 
504*53ee8cc1Swenshuai.xi typedef struct
505*53ee8cc1Swenshuai.xi {
506*53ee8cc1Swenshuai.xi     MS_U8      u8ColorPrimaries;
507*53ee8cc1Swenshuai.xi     MS_U8      u8TransferCharacteristics;
508*53ee8cc1Swenshuai.xi     MS_U8      u8MatrixCoefficients;
509*53ee8cc1Swenshuai.xi } XC_DLC_HDRMetadataMpegVUI;
510*53ee8cc1Swenshuai.xi 
511*53ee8cc1Swenshuai.xi ///HDR Code////
512*53ee8cc1Swenshuai.xi typedef struct
513*53ee8cc1Swenshuai.xi {
514*53ee8cc1Swenshuai.xi     MS_U16 u16Smin; // 0.10
515*53ee8cc1Swenshuai.xi     MS_U16 u16Smed; // 0.10
516*53ee8cc1Swenshuai.xi     MS_U16 u16Smax; // 0.10
517*53ee8cc1Swenshuai.xi     MS_U16 u16Tmin; // 0.10
518*53ee8cc1Swenshuai.xi     MS_U16 u16Tmed; // 0.10
519*53ee8cc1Swenshuai.xi     MS_U16 u16Tmax; // 0.10
520*53ee8cc1Swenshuai.xi     MS_U16 u16MidSourceOffset;
521*53ee8cc1Swenshuai.xi     MS_U16 u16MidTargetOffset;
522*53ee8cc1Swenshuai.xi     MS_U16 u16MidSourceRatio;
523*53ee8cc1Swenshuai.xi     MS_U16 u16MidTargetRatio;
524*53ee8cc1Swenshuai.xi } XC_DLC_HDRToneMappingData;
525*53ee8cc1Swenshuai.xi 
526*53ee8cc1Swenshuai.xi typedef struct
527*53ee8cc1Swenshuai.xi {
528*53ee8cc1Swenshuai.xi     MS_U16 u16tRx; // target Rx
529*53ee8cc1Swenshuai.xi     MS_U16 u16tRy; // target Ry
530*53ee8cc1Swenshuai.xi     MS_U16 u16tGx; // target Gx
531*53ee8cc1Swenshuai.xi     MS_U16 u16tGy; // target Gy
532*53ee8cc1Swenshuai.xi     MS_U16 u16tBx; // target Bx
533*53ee8cc1Swenshuai.xi     MS_U16 u16tBy; // target By
534*53ee8cc1Swenshuai.xi     MS_U16 u16tWx; // target Wx
535*53ee8cc1Swenshuai.xi     MS_U16 u16tWy; // target Wy
536*53ee8cc1Swenshuai.xi } XC_DLC_HDRGamutMappingData;
537*53ee8cc1Swenshuai.xi 
538*53ee8cc1Swenshuai.xi typedef struct
539*53ee8cc1Swenshuai.xi {
540*53ee8cc1Swenshuai.xi     MS_U8      u8EOTF; // 0:SDR gamma, 1:HDR gamma, 2:SMPTE ST2084, 3:Future EOTF, 4-7:Reserved
541*53ee8cc1Swenshuai.xi     MS_U16     u16Rx; // display primaries Rx
542*53ee8cc1Swenshuai.xi     MS_U16     u16Ry; // display primaries Ry
543*53ee8cc1Swenshuai.xi     MS_U16     u16Gx; // display primaries Gx
544*53ee8cc1Swenshuai.xi     MS_U16     u16Gy; // display primaries Gy
545*53ee8cc1Swenshuai.xi     MS_U16     u16Bx; // display primaries Bx
546*53ee8cc1Swenshuai.xi     MS_U16     u16By; // display primaries By
547*53ee8cc1Swenshuai.xi     MS_U16     u16Wx; // display primaries Wx
548*53ee8cc1Swenshuai.xi     MS_U16     u16Wy; // display primaries Wy
549*53ee8cc1Swenshuai.xi     MS_U16     u16Lmax; // max display mastering luminance
550*53ee8cc1Swenshuai.xi     MS_U16     u16Lmin; // min display mastering luminance
551*53ee8cc1Swenshuai.xi     MS_U16     u16MaxCLL; // maximum content light level
552*53ee8cc1Swenshuai.xi     MS_U16     u16MaxFALL; // maximum frame-average light level
553*53ee8cc1Swenshuai.xi } XC_DLC_HDRMetadataHdmiTxInfoFrame;
554*53ee8cc1Swenshuai.xi 
555*53ee8cc1Swenshuai.xi /*!
556*53ee8cc1Swenshuai.xi  *  Initial  HDR   Settings
557*53ee8cc1Swenshuai.xi  */
558*53ee8cc1Swenshuai.xi typedef struct
559*53ee8cc1Swenshuai.xi {
560*53ee8cc1Swenshuai.xi     /// HDR Version Info
561*53ee8cc1Swenshuai.xi     MS_U16 u16HDRVerInfo;
562*53ee8cc1Swenshuai.xi     /// HDR init Length
563*53ee8cc1Swenshuai.xi     MS_U16 u16HDRInitLength;
564*53ee8cc1Swenshuai.xi     /// HDR Enable
565*53ee8cc1Swenshuai.xi     MS_BOOL bHDREnable;
566*53ee8cc1Swenshuai.xi     /// HDR Function Select
567*53ee8cc1Swenshuai.xi     MS_U16 u16HDRFunctionSelect;
568*53ee8cc1Swenshuai.xi     /// HDR Metadata Mpeg VUI
569*53ee8cc1Swenshuai.xi     XC_DLC_HDRMetadataMpegVUI DLC_HDRMetadataMpegVUI;
570*53ee8cc1Swenshuai.xi     //HDR Tone Mapping Data
571*53ee8cc1Swenshuai.xi     XC_DLC_HDRToneMappingData DLC_HDRToneMappingData;
572*53ee8cc1Swenshuai.xi     //HDR Gamut Mapping Data
573*53ee8cc1Swenshuai.xi     XC_DLC_HDRGamutMappingData DLC_HDRGamutMappingData;
574*53ee8cc1Swenshuai.xi     //HDR Metadata Hdmi Tx Info Frame
575*53ee8cc1Swenshuai.xi     XC_DLC_HDRMetadataHdmiTxInfoFrame DLC_HDRMetadataHdmiTxInfoFrame;
576*53ee8cc1Swenshuai.xi 
577*53ee8cc1Swenshuai.xi } XC_DLC_HDRinit;
578*53ee8cc1Swenshuai.xi 
579*53ee8cc1Swenshuai.xi 
580*53ee8cc1Swenshuai.xi /*!
581*53ee8cc1Swenshuai.xi  *  Initial Settings of Dyanmic Luma Curve
582*53ee8cc1Swenshuai.xi  */
583*53ee8cc1Swenshuai.xi typedef struct
584*53ee8cc1Swenshuai.xi {
585*53ee8cc1Swenshuai.xi     /// Scaler DCL MF init
586*53ee8cc1Swenshuai.xi     XC_DLC_MFinit DLC_MFinit;
587*53ee8cc1Swenshuai.xi     /// Scaler DCL MF init Ex
588*53ee8cc1Swenshuai.xi     XC_DLC_MFinit_Ex DLC_MFinit_Ex;
589*53ee8cc1Swenshuai.xi     /// Curve Horizontal start
590*53ee8cc1Swenshuai.xi     MS_U16 u16CurveHStart;
591*53ee8cc1Swenshuai.xi     /// Curve Horizontal end
592*53ee8cc1Swenshuai.xi     MS_U16 u16CurveHEnd;
593*53ee8cc1Swenshuai.xi     /// Curve Vertical start
594*53ee8cc1Swenshuai.xi     MS_U16 u16CurveVStart;
595*53ee8cc1Swenshuai.xi     /// Curve Vertical end
596*53ee8cc1Swenshuai.xi     MS_U16 u16CurveVEnd;
597*53ee8cc1Swenshuai.xi     /// Scaler DLC MF init
598*53ee8cc1Swenshuai.xi     XC_DLC_DBC_MFinit DLC_DBC_MFinit;
599*53ee8cc1Swenshuai.xi #if (ENABLE_10_BIT_DLC)
600*53ee8cc1Swenshuai.xi     /// DLC init ext
601*53ee8cc1Swenshuai.xi     MS_BOOL b10BitsEn;
602*53ee8cc1Swenshuai.xi #endif
603*53ee8cc1Swenshuai.xi } XC_DLC_init;
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi /*!
606*53ee8cc1Swenshuai.xi  *  Luma Statistics & Data of Dyanmic Luma Curve
607*53ee8cc1Swenshuai.xi  */
608*53ee8cc1Swenshuai.xi typedef struct
609*53ee8cc1Swenshuai.xi {
610*53ee8cc1Swenshuai.xi     /// Luma histogram 32H
611*53ee8cc1Swenshuai.xi     MS_U16 g_wLumaHistogram32H[32];
612*53ee8cc1Swenshuai.xi     /// Luma total count
613*53ee8cc1Swenshuai.xi     MS_U16 g_wLumiTotalCount;
614*53ee8cc1Swenshuai.xi     /// Luma average temp
615*53ee8cc1Swenshuai.xi     MS_U16 g_wLumiAverageTemp;
616*53ee8cc1Swenshuai.xi     /// table
617*53ee8cc1Swenshuai.xi     MS_U8 g_ucTable[16];
618*53ee8cc1Swenshuai.xi     /// Histogram max
619*53ee8cc1Swenshuai.xi     MS_U8 g_ucHistogramMax;
620*53ee8cc1Swenshuai.xi     /// Histogram min
621*53ee8cc1Swenshuai.xi     MS_U8 g_ucHistogramMin;
622*53ee8cc1Swenshuai.xi } XC_DLC_lumadata;
623*53ee8cc1Swenshuai.xi 
624*53ee8cc1Swenshuai.xi /*!
625*53ee8cc1Swenshuai.xi  *  Infomation of XC_DLC library.
626*53ee8cc1Swenshuai.xi  */
627*53ee8cc1Swenshuai.xi typedef struct
628*53ee8cc1Swenshuai.xi {
629*53ee8cc1Swenshuai.xi 
630*53ee8cc1Swenshuai.xi } XC_DLC_ApiInfo;
631*53ee8cc1Swenshuai.xi 
632*53ee8cc1Swenshuai.xi 
633*53ee8cc1Swenshuai.xi /*!
634*53ee8cc1Swenshuai.xi  *  Current Status of XC_DLC and library info.
635*53ee8cc1Swenshuai.xi  */
636*53ee8cc1Swenshuai.xi typedef struct
637*53ee8cc1Swenshuai.xi {
638*53ee8cc1Swenshuai.xi     /// Scaler DLC init
639*53ee8cc1Swenshuai.xi     XC_DLC_init DLCinit;
640*53ee8cc1Swenshuai.xi     /// Scaler DLC Luma data
641*53ee8cc1Swenshuai.xi     XC_DLC_lumadata DLCluma;
642*53ee8cc1Swenshuai.xi     /// DLC Lib version
643*53ee8cc1Swenshuai.xi     MS_U8  u8DLC_LibVer;
644*53ee8cc1Swenshuai.xi     /// DLC MF version
645*53ee8cc1Swenshuai.xi     MS_U16 u16DLC_MFVer;
646*53ee8cc1Swenshuai.xi     /// DLC CGC MF version
647*53ee8cc1Swenshuai.xi     MS_U16 u16DLC_CGC_MFVer;
648*53ee8cc1Swenshuai.xi     /// DLC DBC init
649*53ee8cc1Swenshuai.xi     XC_DLC_DBC_MFinit DLC_DBCinit;
650*53ee8cc1Swenshuai.xi     /// DLC DBC MF version
651*53ee8cc1Swenshuai.xi     MS_U16 u16DLC_DBC_MFVer;
652*53ee8cc1Swenshuai.xi } XC_DLC_ApiStatus;
653*53ee8cc1Swenshuai.xi /*
654*53ee8cc1Swenshuai.xi  * DLC capture Range
655*53ee8cc1Swenshuai.xi  */
656*53ee8cc1Swenshuai.xi typedef struct
657*53ee8cc1Swenshuai.xi {
658*53ee8cc1Swenshuai.xi     MS_U16 wHStart;
659*53ee8cc1Swenshuai.xi     MS_U16 wHEnd;
660*53ee8cc1Swenshuai.xi     MS_U16 wVStart;
661*53ee8cc1Swenshuai.xi     MS_U16 wVEnd;
662*53ee8cc1Swenshuai.xi }XC_DLC_CAPTURE_Range;
663*53ee8cc1Swenshuai.xi 
664*53ee8cc1Swenshuai.xi 
665*53ee8cc1Swenshuai.xi /******************************************************************************/
666*53ee8cc1Swenshuai.xi /*         Variables                                                         */
667*53ee8cc1Swenshuai.xi /******************************************************************************/
668*53ee8cc1Swenshuai.xi 
669*53ee8cc1Swenshuai.xi /******************************************************************************/
670*53ee8cc1Swenshuai.xi /*         Function Prototypes                                                */
671*53ee8cc1Swenshuai.xi /******************************************************************************/
672*53ee8cc1Swenshuai.xi 
673*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
674*53ee8cc1Swenshuai.xi /// DLC initiation
675*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
676*53ee8cc1Swenshuai.xi // @param  pstXC_DLC_InitData             \b IN: TBD
677*53ee8cc1Swenshuai.xi // @param  u32InitDataLen                 \b IN: TBD
678*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
679*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
680*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_Init_Ex(XC_DLC_init *pstXC_DLC_InitData, MS_U32 u32InitDataLen);
681*53ee8cc1Swenshuai.xi 
682*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
683*53ee8cc1Swenshuai.xi /// Setting DLC
684*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
685*53ee8cc1Swenshuai.xi // @param  DLC_MFinit_Ex             \b IN: DLC data
686*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
687*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetSetting_Ex(XC_DLC_MFinit_Ex *DLC_MFinit_Ex );
688*53ee8cc1Swenshuai.xi 
689*53ee8cc1Swenshuai.xi 
690*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
691*53ee8cc1Swenshuai.xi /// Set DLC curve
692*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
693*53ee8cc1Swenshuai.xi // @param  pNormal             \b IN: DLC normal curve
694*53ee8cc1Swenshuai.xi // @param  pLight              \b IN: DLC light curve
695*53ee8cc1Swenshuai.xi // @param  pDark               \b IN: DLC dark curve
696*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
697*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetCurve(MS_U8 *pNormal, MS_U8 *pLight, MS_U8 *pDark);
698*53ee8cc1Swenshuai.xi 
699*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
700*53ee8cc1Swenshuai.xi /// Set BLE Slop Point
701*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
702*53ee8cc1Swenshuai.xi // @param  pBLESlopPoint             \b IN: BLE Slop Point
703*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
704*53ee8cc1Swenshuai.xi // void MApi_XC_DLC_SetBleSlopPoint(MS_U16 *pBLESlopPoint);
705*53ee8cc1Swenshuai.xi 
706*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
707*53ee8cc1Swenshuai.xi /// Set Set HDR Init
708*53ee8cc1Swenshuai.xi // @param  pstDLC_HDRInitData             \b IN: HDR Init Info
709*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
710*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_DLC_SetHDRInit(XC_DLC_HDRinit *pstDLC_HDRInitData);
711*53ee8cc1Swenshuai.xi 
712*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
713*53ee8cc1Swenshuai.xi /// DLC exit
714*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
715*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
716*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
717*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_DLC_Exit(void);
718*53ee8cc1Swenshuai.xi 
719*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
720*53ee8cc1Swenshuai.xi ///Enable/disable DLC to control MDrv_DLC_SetOnOff ,used DLC enbale register to control.
721*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
722*53ee8cc1Swenshuai.xi ///@param bSwitch \b IN:
723*53ee8cc1Swenshuai.xi ///   - # TRUE  Enable
724*53ee8cc1Swenshuai.xi ///   - # FALSE Disable
725*53ee8cc1Swenshuai.xi ///@param  bWindow                 \b IN: The window which applys the function effect, MAIN_WINDOW:0
726*53ee8cc1Swenshuai.xi ///                                                                                    SUB_WINDOW: 1
727*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
728*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_SetOnOff(MS_BOOL bSwitch, MS_BOOL bWindow);
729*53ee8cc1Swenshuai.xi 
730*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
731*53ee8cc1Swenshuai.xi ///Enable/disable DLC to control MDrv_DLC_Handler function.
732*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
733*53ee8cc1Swenshuai.xi ///@param bSwitch \b IN:
734*53ee8cc1Swenshuai.xi ///   - # TRUE  Enable
735*53ee8cc1Swenshuai.xi ///   - # FALSE Disable
736*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
737*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
738*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_DLC_SetDlcHandlerOnOff(MS_BOOL bDlcEnable );
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi /******************************************************************************/
741*53ee8cc1Swenshuai.xi //Enable/disable BLE to control BLE function.
742*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
743*53ee8cc1Swenshuai.xi //@param bSwitch \b IN
744*53ee8cc1Swenshuai.xi //   - # TRUE  Enable
745*53ee8cc1Swenshuai.xi //   - # FALSE Disable
746*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
747*53ee8cc1Swenshuai.xi /******************************************************************************/
748*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_SetBleOnOff( MS_BOOL bSwitch );
749*53ee8cc1Swenshuai.xi 
750*53ee8cc1Swenshuai.xi /******************************************************************************/
751*53ee8cc1Swenshuai.xi //Enable/disable DLC Set Curve Both for main and sub.
752*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
753*53ee8cc1Swenshuai.xi //@param bEnable \b IN
754*53ee8cc1Swenshuai.xi //   - # TRUE  Enable
755*53ee8cc1Swenshuai.xi //   - # FALSE Disable
756*53ee8cc1Swenshuai.xi /******************************************************************************/
757*53ee8cc1Swenshuai.xi void MApi_XC_DLC_EnableMainSubCurveSynchronization (MS_BOOL bEnable);
758*53ee8cc1Swenshuai.xi 
759*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
760*53ee8cc1Swenshuai.xi /// DLC handler
761*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
762*53ee8cc1Swenshuai.xi ///@param  bWindow                 \b IN: The window which applys the function effect, MAIN_WINDOW:0
763*53ee8cc1Swenshuai.xi ///                                                                                    SUB_WINDOW: 1
764*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
765*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_Handler(MS_BOOL bWindow);
766*53ee8cc1Swenshuai.xi 
767*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
768*53ee8cc1Swenshuai.xi /// DLC get histogram handler
769*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
770*53ee8cc1Swenshuai.xi ///@param  bWindow                 \b IN: The window which applys the function effect, MAIN_WINDOW:0
771*53ee8cc1Swenshuai.xi ///                                                                                    SUB_WINDOW: 1
772*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
773*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
774*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetHistogramHandler(MS_BOOL bWindow);
775*53ee8cc1Swenshuai.xi 
776*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
777*53ee8cc1Swenshuai.xi /// DLC get average value from 0 to 255
778*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
779*53ee8cc1Swenshuai.xi /// @return @ref MS_U8
780*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
781*53ee8cc1Swenshuai.xi MS_U8   MApi_XC_DLC_GetAverageValue(void);
782*53ee8cc1Swenshuai.xi 
783*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
784*53ee8cc1Swenshuai.xi /// DLC get average exactness value from 0 to 1023
785*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
786*53ee8cc1Swenshuai.xi /// @return @ref MS_U16
787*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
788*53ee8cc1Swenshuai.xi // MS_U16 MApi_XC_DLC_GetAverageValue_Ex(void);
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
791*53ee8cc1Swenshuai.xi /// DLC initilization curve
792*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
793*53ee8cc1Swenshuai.xi // @param  u16HStart               \b IN: TBD
794*53ee8cc1Swenshuai.xi // @param  u16HEnd                 \b IN: TBD
795*53ee8cc1Swenshuai.xi // @param  u16VStart               \b IN: TBD
796*53ee8cc1Swenshuai.xi // @param  u16VEnd                 \b IN: TBD
797*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
798*53ee8cc1Swenshuai.xi // void    MApi_XC_DLC_InitCurve (MS_U16 u16HStart, MS_U16 u16HEnd, MS_U16 u16VStart, MS_U16 u16VEnd);
799*53ee8cc1Swenshuai.xi 
800*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
801*53ee8cc1Swenshuai.xi /// DLC speedup trigger
802*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
803*53ee8cc1Swenshuai.xi // @param  u8Loop               \b IN: TBD
804*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
805*53ee8cc1Swenshuai.xi // void    MApi_XC_DLC_SpeedupTrigger (MS_U8 u8Loop);
806*53ee8cc1Swenshuai.xi 
807*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
808*53ee8cc1Swenshuai.xi /// DLC get luma curve status
809*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
810*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
811*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
812*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetLumaCurveStatus( void );
813*53ee8cc1Swenshuai.xi 
814*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
815*53ee8cc1Swenshuai.xi /// DLC CGC reset C gain
816*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
817*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
818*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_ResetCGain(void);
819*53ee8cc1Swenshuai.xi 
820*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
821*53ee8cc1Swenshuai.xi /// DLC CGC check C gain in PQCom
822*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
823*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
824*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_CheckCGainInPQCom(void);
825*53ee8cc1Swenshuai.xi 
826*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
827*53ee8cc1Swenshuai.xi /// DLC CGC reset Y gain
828*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
829*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
830*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_ResetYGain(void);
831*53ee8cc1Swenshuai.xi 
832*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
833*53ee8cc1Swenshuai.xi /// DLC CGC reset Y gain in PQCom
834*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
835*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
836*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_CheckYGainInPQCom(void);
837*53ee8cc1Swenshuai.xi 
838*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
839*53ee8cc1Swenshuai.xi /// DLC CGC reset
840*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
841*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
842*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_Reset(void);
843*53ee8cc1Swenshuai.xi 
844*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
845*53ee8cc1Swenshuai.xi /// DLC CGC initilization
846*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
847*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
848*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_Init(void);
849*53ee8cc1Swenshuai.xi 
850*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
851*53ee8cc1Swenshuai.xi /// DLC CGC Re-initilization
852*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
853*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
854*53ee8cc1Swenshuai.xi // void    MApi_XC_DLC_CGC_ReInit(void);
855*53ee8cc1Swenshuai.xi 
856*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
857*53ee8cc1Swenshuai.xi /// DLC CGC handler
858*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
859*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
860*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_Handler(void);
861*53ee8cc1Swenshuai.xi 
862*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
863*53ee8cc1Swenshuai.xi /// Get version (without Mutex protect)
864*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
865*53ee8cc1Swenshuai.xi // @param ppVersion               \b IN: TBD
866*53ee8cc1Swenshuai.xi /// @return @ref E_XC_DLC_RESULT
867*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
868*53ee8cc1Swenshuai.xi // E_XC_DLC_RESULT MApi_XC_DLC_GetLibVer(const MSIF_Version **ppVersion) ;
869*53ee8cc1Swenshuai.xi 
870*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
871*53ee8cc1Swenshuai.xi /// DLC get information
872*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
873*53ee8cc1Swenshuai.xi /// @return XC_DLC_ApiInfo
874*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
875*53ee8cc1Swenshuai.xi // const XC_DLC_ApiInfo * MApi_XC_DLC_GetInfo(void);                                      ///< Get info from driver (without Mutex protect)
876*53ee8cc1Swenshuai.xi 
877*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
878*53ee8cc1Swenshuai.xi /// Get DLC current status
879*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
880*53ee8cc1Swenshuai.xi // @param pDrvStatus               \b IN: TBD
881*53ee8cc1Swenshuai.xi // @param bWindow                  \b IN: TBD
882*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
883*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
884*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetStatus_Ex(XC_DLC_ApiStatus *pDrvStatus, MS_BOOL bWindow);       ///< Get panel current status
885*53ee8cc1Swenshuai.xi 
886*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
887*53ee8cc1Swenshuai.xi /// DLC get Dbg level
888*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
889*53ee8cc1Swenshuai.xi /// @param u16DbgSwitch               \b IN: Set debug level
890*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
891*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
892*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_SetDbgLevel(MS_U16 u16DbgSwitch);                                  ///< Set debug level (without Mutex protect), refer to XC_DBGLEVEL_OFF
893*53ee8cc1Swenshuai.xi 
894*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
895*53ee8cc1Swenshuai.xi /// Write DLC curve
896*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
897*53ee8cc1Swenshuai.xi /// @param pu8Table                     \b IN: the value of curve
898*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
899*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
900*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_WriteCurve(MS_U8 *pu8Table);
901*53ee8cc1Swenshuai.xi 
902*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
903*53ee8cc1Swenshuai.xi /// Write DLC curve
904*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
905*53ee8cc1Swenshuai.xi /// @param pu8Table                     \b IN: the value of curve
906*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
907*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
908*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_DLC_WriteCurve_Sub(MS_U8 *pu8Table);
909*53ee8cc1Swenshuai.xi 
910*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
911*53ee8cc1Swenshuai.xi /// get histogram data
912*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
913*53ee8cc1Swenshuai.xi /// @param pu16Histogram                \b OUT: the value of histogram
914*53ee8cc1Swenshuai.xi /// @param u8section_num                \b IN: the number of histogram section
915*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
916*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
917*53ee8cc1Swenshuai.xi // MS_BOOL MApi_XC_DLC_GetHistogram(MS_U16 *pu16Histogram, E_XC_DLC_HISTOGRAM_TYPE enHistogramType);
918*53ee8cc1Swenshuai.xi 
919*53ee8cc1Swenshuai.xi /******************************************************************************/
920*53ee8cc1Swenshuai.xi /// API DLC DBC library start
921*53ee8cc1Swenshuai.xi /******************************************************************************/
922*53ee8cc1Swenshuai.xi typedef void   (*MApi_XC_DLC_Print_Callback)(MS_U8 /*PWM_VALUE*/);
923*53ee8cc1Swenshuai.xi 
924*53ee8cc1Swenshuai.xi typedef struct {
925*53ee8cc1Swenshuai.xi     MS_U8 *pCmdBuff;                           ///<1. command buffer from UART
926*53ee8cc1Swenshuai.xi     MS_U16 u16PNL_Width;                       ///<2. Panel Widht
927*53ee8cc1Swenshuai.xi     MS_U16 u16PNL_Height;                      ///<3. Panel Height
928*53ee8cc1Swenshuai.xi     MApi_XC_DLC_Print_Callback fnDLC_Putchar;  ///<4. User putchar function
929*53ee8cc1Swenshuai.xi }tDLC_CONTROL_PARAMS;
930*53ee8cc1Swenshuai.xi 
931*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
932*53ee8cc1Swenshuai.xi /// brief uart debug command decoder for Dynamic Luminance Control.
933*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
934*53ee8cc1Swenshuai.xi /// @param params   passin params
935*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
936*53ee8cc1Swenshuai.xi void MApi_XC_DLC_DecodeExtCmd(tDLC_CONTROL_PARAMS *params);
937*53ee8cc1Swenshuai.xi 
938*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
939*53ee8cc1Swenshuai.xi /// Setup DLC capture range
940*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
941*53ee8cc1Swenshuai.xi /// @param StuDlc_Range                     \b IN: Hstart, Hend, Vstart, Vend
942*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
943*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetCaptureRange(XC_DLC_CAPTURE_Range *pu16_Range);
944*53ee8cc1Swenshuai.xi 
945*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
946*53ee8cc1Swenshuai.xi /// Dlc power state control for fastboot
947*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
948*53ee8cc1Swenshuai.xi /// @param  u16PowerState                 \b IN: power state
949*53ee8cc1Swenshuai.xi // @return @ref MS_U32                      \b return result of power state control.
950*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
951*53ee8cc1Swenshuai.xi // MS_U32 MApi_XC_DLC_SetPowerState(EN_POWER_MODE enPowerState);
952*53ee8cc1Swenshuai.xi 
953*53ee8cc1Swenshuai.xi /******************************************************************************/
954*53ee8cc1Swenshuai.xi /// API DLC DBC library end
955*53ee8cc1Swenshuai.xi /******************************************************************************/
956*53ee8cc1Swenshuai.xi 
957*53ee8cc1Swenshuai.xi 
958*53ee8cc1Swenshuai.xi //================================ Obsolete Function Start =======================================
959*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
960*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
961*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
962*53ee8cc1Swenshuai.xi /// !!! below function will be "REMOVED" or "REFACTORING" later, please do not use it !!!!!!!!!
963*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
964*53ee8cc1Swenshuai.xi 
965*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
966*53ee8cc1Swenshuai.xi /// @ingroup DLC_ToBeRemove
967*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
968*53ee8cc1Swenshuai.xi 
969*53ee8cc1Swenshuai.xi // void MApi_XC_DLC_SetSetting(XC_DLC_MFinit DLC_MFinit ); // Setting DLC
970*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
971*53ee8cc1Swenshuai.xi /// @ingroup DLC_ToBeRemove
972*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
973*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_Init(XC_DLC_init *pstXC_DLC_InitData, MS_U32 u32InitDataLen); // DLC initiation
974*53ee8cc1Swenshuai.xi 
975*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
976*53ee8cc1Swenshuai.xi /// @ingroup DLC_ToBeRemove
977*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
978*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetStatus(XC_DLC_ApiStatus *pDrvStatus, MS_BOOL bWindow);  // Get DLC current status
979*53ee8cc1Swenshuai.xi 
980*53ee8cc1Swenshuai.xi //================================ Obsolete Function End =======================================
981*53ee8cc1Swenshuai.xi 
982*53ee8cc1Swenshuai.xi 
983*53ee8cc1Swenshuai.xi #ifdef __cplusplus
984*53ee8cc1Swenshuai.xi }
985*53ee8cc1Swenshuai.xi #endif
986*53ee8cc1Swenshuai.xi 
987*53ee8cc1Swenshuai.xi #endif // _API_XC_DLC_H_
988*53ee8cc1Swenshuai.xi 
989*53ee8cc1Swenshuai.xi 
990