xref: /utopia/UTPA2-700.0.x/mxlib/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 #include "UFO.h"
146*53ee8cc1Swenshuai.xi 
147*53ee8cc1Swenshuai.xi #ifdef __cplusplus
148*53ee8cc1Swenshuai.xi extern "C"
149*53ee8cc1Swenshuai.xi {
150*53ee8cc1Swenshuai.xi #endif
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
153*53ee8cc1Swenshuai.xi //  Macro and Define
154*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
158*53ee8cc1Swenshuai.xi //  Type and Structure
159*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
160*53ee8cc1Swenshuai.xi #define MSIF_DLC_LIB_CODE               {'D','L','C','_'}
161*53ee8cc1Swenshuai.xi #define MSIF_DLC_LIBVER                 {'0','0'}
162*53ee8cc1Swenshuai.xi #define MSIF_DLC_BUILDNUM               {'3','0'}
163*53ee8cc1Swenshuai.xi #define MSIF_DLC_CHANGELIST             {'0','0','6','1','8','0','7','0'}
164*53ee8cc1Swenshuai.xi #define XC_DLC_API_VERSION /* Character String for DRV/API version */  \
165*53ee8cc1Swenshuai.xi     MSIF_TAG           ,   /* 'MSIF'                               */  \
166*53ee8cc1Swenshuai.xi     MSIF_CLASS         ,   /* '00'                                 */  \
167*53ee8cc1Swenshuai.xi     MSIF_CUS           ,   /* 0x0000                               */  \
168*53ee8cc1Swenshuai.xi     MSIF_MOD           ,   /* 0x0000                               */  \
169*53ee8cc1Swenshuai.xi     MSIF_CHIP          , \
170*53ee8cc1Swenshuai.xi     MSIF_CPU           , \
171*53ee8cc1Swenshuai.xi     MSIF_DLC_LIB_CODE  ,   /* IP__                                 */  \
172*53ee8cc1Swenshuai.xi     MSIF_DLC_LIBVER    ,   /* 0.0 ~ Z.Z                            */  \
173*53ee8cc1Swenshuai.xi     MSIF_DLC_BUILDNUM  ,   /* 00 ~ 99                              */  \
174*53ee8cc1Swenshuai.xi     MSIF_DLC_CHANGELIST,   /* CL#                                  */  \
175*53ee8cc1Swenshuai.xi     MSIF_OS
176*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500)
177*53ee8cc1Swenshuai.xi #define XC_DLC_HDR_VERSION  1
178*53ee8cc1Swenshuai.xi #else
179*53ee8cc1Swenshuai.xi #define XC_DLC_HDR_VERSION  4
180*53ee8cc1Swenshuai.xi #endif
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi #define ENABLE_10_BIT_DLC   0
183*53ee8cc1Swenshuai.xi /// 0: Init
184*53ee8cc1Swenshuai.xi /// 1: Add SDR panel gain
185*53ee8cc1Swenshuai.xi /// 2: Add u16Smin, u16Smed, u16Smax, u16Tmin, u16Tmed, u16Tmax
186*53ee8cc1Swenshuai.xi /// 3: Add bRefMode, used for UHDA test.
187*53ee8cc1Swenshuai.xi /// 4: Add TMO 1D LUT
188*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500)
189*53ee8cc1Swenshuai.xi #define DLC_TMO_INFO_VERSION 3
190*53ee8cc1Swenshuai.xi #else
191*53ee8cc1Swenshuai.xi #define DLC_TMO_INFO_VERSION 4
192*53ee8cc1Swenshuai.xi #endif
193*53ee8cc1Swenshuai.xi /// DLC_MFINIT_Ex version of current DLC lib
194*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_212)
195*53ee8cc1Swenshuai.xi #define DLC_MFINIT_EX_VERSION                      1
196*53ee8cc1Swenshuai.xi #else
197*53ee8cc1Swenshuai.xi #define DLC_MFINIT_EX_VERSION                      2
198*53ee8cc1Swenshuai.xi #endif
199*53ee8cc1Swenshuai.xi /// The ucDlcHistogramLimitCurve arrary num
200*53ee8cc1Swenshuai.xi #define DLC_HISTOGRAM_LIMIT_CURVE_ARRARY_NUM       17
201*53ee8cc1Swenshuai.xi 
202*53ee8cc1Swenshuai.xi #ifndef UNUSED
203*53ee8cc1Swenshuai.xi #define UNUSED(x) (void)(x)
204*53ee8cc1Swenshuai.xi #endif
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi /*!
207*53ee8cc1Swenshuai.xi  *  The DLC curve settings, ways of enable DLC or, disable DLC.
208*53ee8cc1Swenshuai.xi  */
209*53ee8cc1Swenshuai.xi typedef enum
210*53ee8cc1Swenshuai.xi {
211*53ee8cc1Swenshuai.xi     /// DLC curve
212*53ee8cc1Swenshuai.xi     E_XC_DLC_PURE_IMAGE_DLC_CURVE = 0,
213*53ee8cc1Swenshuai.xi     /// Linear curve
214*53ee8cc1Swenshuai.xi     E_XC_DLC_PURE_IMAGE_LINEAR_CURVE ,
215*53ee8cc1Swenshuai.xi     /// get base address failed when initialize panel driver
216*53ee8cc1Swenshuai.xi     E_XC_DLC_PURE_IMAGE_DO_NOTHING ,
217*53ee8cc1Swenshuai.xi } E_XC_DLC_PURE_IMAGE_CURVE ;
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi /*!
220*53ee8cc1Swenshuai.xi  *  The DLC curve mode, ways of decide DLC algorithm.
221*53ee8cc1Swenshuai.xi  */
222*53ee8cc1Swenshuai.xi typedef enum
223*53ee8cc1Swenshuai.xi {
224*53ee8cc1Swenshuai.xi     ///
225*53ee8cc1Swenshuai.xi     E_XC_DLC_CURVE_MODE_BY_YAVG = 0,
226*53ee8cc1Swenshuai.xi     ///
227*53ee8cc1Swenshuai.xi     E_XC_DLC_CURVE_MODE_BY_HISTOGRAM ,
228*53ee8cc1Swenshuai.xi     ///
229*53ee8cc1Swenshuai.xi     E_XC_DLC_CURVE_MODE_BY_MIX ,
230*53ee8cc1Swenshuai.xi } E_XC_DLC_CURVE_MODE ;
231*53ee8cc1Swenshuai.xi 
232*53ee8cc1Swenshuai.xi /*!
233*53ee8cc1Swenshuai.xi  *  The DLC algorthm mode, ways of decide DLC algorithm.
234*53ee8cc1Swenshuai.xi  */
235*53ee8cc1Swenshuai.xi typedef enum
236*53ee8cc1Swenshuai.xi {
237*53ee8cc1Swenshuai.xi     ///
238*53ee8cc1Swenshuai.xi     E_XC_DLC_ALGORITHM_OLD = 0,
239*53ee8cc1Swenshuai.xi     ///
240*53ee8cc1Swenshuai.xi     E_XC_DLC_ALGORITHM_NEW ,
241*53ee8cc1Swenshuai.xi } E_XC_DLC_ALGORITHM_MODE ;
242*53ee8cc1Swenshuai.xi /*!
243*53ee8cc1Swenshuai.xi  *  The DLC curve settings, ways of enable DLC or, disable DLC.
244*53ee8cc1Swenshuai.xi  */
245*53ee8cc1Swenshuai.xi typedef enum
246*53ee8cc1Swenshuai.xi {
247*53ee8cc1Swenshuai.xi     /// fail
248*53ee8cc1Swenshuai.xi     E_XC_DLC_FAIL = 0,
249*53ee8cc1Swenshuai.xi     /// ok
250*53ee8cc1Swenshuai.xi     E_XC_DLC_OK = 1,
251*53ee8cc1Swenshuai.xi     /// get base address failed when initialize panel driver
252*53ee8cc1Swenshuai.xi     E_XC_DLC_GET_BASEADDR_FAIL,
253*53ee8cc1Swenshuai.xi     /// obtain mutex timeout when calling this function
254*53ee8cc1Swenshuai.xi     E_XC_DLC_OBTAIN_MUTEX_FAIL,
255*53ee8cc1Swenshuai.xi } E_XC_DLC_RESULT;
256*53ee8cc1Swenshuai.xi 
257*53ee8cc1Swenshuai.xi 
258*53ee8cc1Swenshuai.xi typedef enum
259*53ee8cc1Swenshuai.xi {
260*53ee8cc1Swenshuai.xi     E_XC_DLC_HISTOGRAM_32,
261*53ee8cc1Swenshuai.xi     E_XC_DLC_HISTOGRAM_8,
262*53ee8cc1Swenshuai.xi }E_XC_DLC_HISTOGRAM_TYPE;
263*53ee8cc1Swenshuai.xi /******************************************************************************/
264*53ee8cc1Swenshuai.xi /*         Structures                                                         */
265*53ee8cc1Swenshuai.xi /******************************************************************************/
266*53ee8cc1Swenshuai.xi 
267*53ee8cc1Swenshuai.xi //----------------------------
268*53ee8cc1Swenshuai.xi // XC DLC initialize
269*53ee8cc1Swenshuai.xi //----------------------------
270*53ee8cc1Swenshuai.xi /*!
271*53ee8cc1Swenshuai.xi  *  Initial Settings of MF Dyanmic Luma Curve
272*53ee8cc1Swenshuai.xi  */
273*53ee8cc1Swenshuai.xi typedef struct
274*53ee8cc1Swenshuai.xi {
275*53ee8cc1Swenshuai.xi     /// Default luma curve
276*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve[16];
277*53ee8cc1Swenshuai.xi     /// Default luma curve 2a
278*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_a[16];
279*53ee8cc1Swenshuai.xi     /// Default luma curve 2b
280*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_b[16];
281*53ee8cc1Swenshuai.xi     /// Default luma curve 2
282*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2[16];
283*53ee8cc1Swenshuai.xi 
284*53ee8cc1Swenshuai.xi     /// default value: 10
285*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_U;
286*53ee8cc1Swenshuai.xi     /// default value: 10
287*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_D;
288*53ee8cc1Swenshuai.xi     /// default value: 10
289*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_U;
290*53ee8cc1Swenshuai.xi     /// default value: 10
291*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_D;
292*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
293*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_U;
294*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
295*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_D;
296*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
297*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_U;
298*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
299*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_D;
300*53ee8cc1Swenshuai.xi     /// -31 ~ 31 (bit7 = minus, ex. 0x88 => -8)
301*53ee8cc1Swenshuai.xi     MS_U8 ucCGCCGain_offset;
302*53ee8cc1Swenshuai.xi     /// 0x00~0x6F
303*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitH;
304*53ee8cc1Swenshuai.xi     /// 0x00~0x10
305*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitL;
306*53ee8cc1Swenshuai.xi     /// 0x01~0x20
307*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYCslope;
308*53ee8cc1Swenshuai.xi     /// 0x01
309*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYth;
310*53ee8cc1Swenshuai.xi     /// Compare difference of max and min bright
311*53ee8cc1Swenshuai.xi     MS_U8 ucDlcPureImageMode;
312*53ee8cc1Swenshuai.xi     /// n = 0 ~ 4 => Limit n levels => ex. n=2, limit 2 level 0xF7, 0xE7
313*53ee8cc1Swenshuai.xi     MS_U8 ucDlcLevelLimit;
314*53ee8cc1Swenshuai.xi     /// n = 0 ~ 50, default value: 12
315*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDelta;
316*53ee8cc1Swenshuai.xi     /// n = 0 ~ 15 => 0: disable still curve, 1 ~ 15: enable still curve
317*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDeltaStill;
318*53ee8cc1Swenshuai.xi     /// min 17 ~ max 32
319*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFastAlphaBlending;
320*53ee8cc1Swenshuai.xi     /// some event is triggered, DLC must do slowly // for PIP On/Off, msMultiPic.c
321*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSlowEvent;
322*53ee8cc1Swenshuai.xi     /// for IsrApp.c
323*53ee8cc1Swenshuai.xi     MS_U8 ucDlcTimeOut;
324*53ee8cc1Swenshuai.xi     /// for force to do fast DLC in a while
325*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFlickAlphaStart;
326*53ee8cc1Swenshuai.xi     /// default value: 128
327*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdH;
328*53ee8cc1Swenshuai.xi     /// default value: 0
329*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdL;
330*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
331*53ee8cc1Swenshuai.xi     MS_U8 ucDlcBLEPoint;
332*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
333*53ee8cc1Swenshuai.xi     MS_U8 ucDlcWLEPoint;
334*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
335*53ee8cc1Swenshuai.xi     MS_U8 bCGCCGainCtrl : 1;
336*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
337*53ee8cc1Swenshuai.xi     MS_U8 bEnableBLE : 1;
338*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
339*53ee8cc1Swenshuai.xi     MS_U8 bEnableWLE : 1;
340*53ee8cc1Swenshuai.xi } XC_DLC_MFinit;
341*53ee8cc1Swenshuai.xi 
342*53ee8cc1Swenshuai.xi 
343*53ee8cc1Swenshuai.xi typedef struct
344*53ee8cc1Swenshuai.xi {
345*53ee8cc1Swenshuai.xi     MS_U32 u32DLC_MFinit_Ex_Version;   ///<Version of current structure. Please always set to "DLC_MFINIT_EX_VERSION" as input
346*53ee8cc1Swenshuai.xi     /// Default luma curve
347*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve[16];
348*53ee8cc1Swenshuai.xi     /// Default luma curve 2a
349*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_a[16];
350*53ee8cc1Swenshuai.xi     /// Default luma curve 2b
351*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2_b[16];
352*53ee8cc1Swenshuai.xi     /// Default luma curve 2
353*53ee8cc1Swenshuai.xi     MS_U8 ucLumaCurve2[16];
354*53ee8cc1Swenshuai.xi 
355*53ee8cc1Swenshuai.xi     /// default value: 10
356*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_U;
357*53ee8cc1Swenshuai.xi     /// default value: 10
358*53ee8cc1Swenshuai.xi     MS_U8 u8_L_L_D;
359*53ee8cc1Swenshuai.xi     /// default value: 10
360*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_U;
361*53ee8cc1Swenshuai.xi     /// default value: 10
362*53ee8cc1Swenshuai.xi     MS_U8 u8_L_H_D;
363*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
364*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_U;
365*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
366*53ee8cc1Swenshuai.xi     MS_U8 u8_S_L_D;
367*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
368*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_U;
369*53ee8cc1Swenshuai.xi     /// default value: 128 (0x80)
370*53ee8cc1Swenshuai.xi     MS_U8 u8_S_H_D;
371*53ee8cc1Swenshuai.xi     /// -31 ~ 31 (bit7 = minus, ex. 0x88 => -8)
372*53ee8cc1Swenshuai.xi     MS_U8 ucCGCCGain_offset;
373*53ee8cc1Swenshuai.xi     /// 0x00~0x6F
374*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitH;
375*53ee8cc1Swenshuai.xi     /// 0x00~0x10
376*53ee8cc1Swenshuai.xi     MS_U8 ucCGCChroma_GainLimitL;
377*53ee8cc1Swenshuai.xi     /// 0x01~0x20
378*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYCslope;
379*53ee8cc1Swenshuai.xi     /// 0x01
380*53ee8cc1Swenshuai.xi     MS_U8 ucCGCYth;
381*53ee8cc1Swenshuai.xi     /// Compare difference of max and min bright
382*53ee8cc1Swenshuai.xi     MS_U8 ucDlcPureImageMode;
383*53ee8cc1Swenshuai.xi     /// n = 0 ~ 4 => Limit n levels => ex. n=2, limit 2 level 0xF7, 0xE7
384*53ee8cc1Swenshuai.xi     MS_U8 ucDlcLevelLimit;
385*53ee8cc1Swenshuai.xi     /// n = 0 ~ 50, default value: 12
386*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDelta;
387*53ee8cc1Swenshuai.xi     /// n = 0 ~ 15 => 0: disable still curve, 1 ~ 15: enable still curve
388*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAvgDeltaStill;
389*53ee8cc1Swenshuai.xi     /// min 17 ~ max 32
390*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFastAlphaBlending;
391*53ee8cc1Swenshuai.xi     /// some event is triggered, DLC must do slowly // for PIP On/Off, msMultiPic.c
392*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSlowEvent;
393*53ee8cc1Swenshuai.xi     /// for IsrApp.c
394*53ee8cc1Swenshuai.xi     MS_U8 ucDlcTimeOut;
395*53ee8cc1Swenshuai.xi     /// for force to do fast DLC in a while
396*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFlickAlphaStart;
397*53ee8cc1Swenshuai.xi     /// default value: 128
398*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdH;
399*53ee8cc1Swenshuai.xi     /// default value: 0
400*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdL;
401*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
402*53ee8cc1Swenshuai.xi     MS_U8 ucDlcBLEPoint;
403*53ee8cc1Swenshuai.xi     /// n = 24 ~ 64, default value: 48
404*53ee8cc1Swenshuai.xi     MS_U8 ucDlcWLEPoint;
405*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
406*53ee8cc1Swenshuai.xi     MS_U8 bCGCCGainCtrl : 1;
407*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
408*53ee8cc1Swenshuai.xi     MS_U8 bEnableBLE : 1;
409*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
410*53ee8cc1Swenshuai.xi     MS_U8 bEnableWLE : 1;
411*53ee8cc1Swenshuai.xi     /// default value: 64
412*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAvgThresholdM;
413*53ee8cc1Swenshuai.xi     /// Compare difference of max and min bright
414*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveMode;
415*53ee8cc1Swenshuai.xi     /// min 00 ~ max 128
416*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveModeMixAlpha;
417*53ee8cc1Swenshuai.xi     ///
418*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAlgorithmMode;
419*53ee8cc1Swenshuai.xi     /// Dlc Histogram Limit Curve
420*53ee8cc1Swenshuai.xi     MS_U8 ucDlcHistogramLimitCurve[DLC_HISTOGRAM_LIMIT_CURVE_ARRARY_NUM];
421*53ee8cc1Swenshuai.xi     ///
422*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSepPointH;
423*53ee8cc1Swenshuai.xi     ///
424*53ee8cc1Swenshuai.xi     MS_U8 ucDlcSepPointL;
425*53ee8cc1Swenshuai.xi     ///
426*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBleStartPointTH;
427*53ee8cc1Swenshuai.xi     ///
428*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBleEndPointTH;
429*53ee8cc1Swenshuai.xi     ///
430*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveDiff_L_TH;
431*53ee8cc1Swenshuai.xi     ///
432*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveDiff_H_TH;
433*53ee8cc1Swenshuai.xi     ///
434*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_1;
435*53ee8cc1Swenshuai.xi     ///
436*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_2;
437*53ee8cc1Swenshuai.xi     ///
438*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_3;
439*53ee8cc1Swenshuai.xi     ///
440*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_4;
441*53ee8cc1Swenshuai.xi     ///
442*53ee8cc1Swenshuai.xi     MS_U16 uwDlcBLESlopPoint_5;
443*53ee8cc1Swenshuai.xi     ///
444*53ee8cc1Swenshuai.xi     MS_U16 uwDlcDark_BLE_Slop_Min;
445*53ee8cc1Swenshuai.xi     ///
446*53ee8cc1Swenshuai.xi     MS_U8 ucDlcCurveDiffCoringTH;
447*53ee8cc1Swenshuai.xi     ///
448*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAlphaBlendingMin;
449*53ee8cc1Swenshuai.xi     ///
450*53ee8cc1Swenshuai.xi     MS_U8 ucDlcAlphaBlendingMax;
451*53ee8cc1Swenshuai.xi     ///
452*53ee8cc1Swenshuai.xi     MS_U8 ucDlcFlicker_alpha;
453*53ee8cc1Swenshuai.xi     ///
454*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAVG_L_TH;
455*53ee8cc1Swenshuai.xi     ///
456*53ee8cc1Swenshuai.xi     MS_U8 ucDlcYAVG_H_TH;
457*53ee8cc1Swenshuai.xi     ///
458*53ee8cc1Swenshuai.xi     MS_U8 ucDlcDiffBase_L;
459*53ee8cc1Swenshuai.xi     ///
460*53ee8cc1Swenshuai.xi     MS_U8 ucDlcDiffBase_M;
461*53ee8cc1Swenshuai.xi     ///
462*53ee8cc1Swenshuai.xi     MS_U8 ucDlcDiffBase_H;
463*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_700)
464*53ee8cc1Swenshuai.xi     MS_U8 u8LMaxThreshold;
465*53ee8cc1Swenshuai.xi     MS_U8 u8LMinThreshold;
466*53ee8cc1Swenshuai.xi     MS_U8 u8LMaxCorrection;
467*53ee8cc1Swenshuai.xi     MS_U8 u8LMinCorrection;
468*53ee8cc1Swenshuai.xi     MS_U8 u8RMaxThreshold;
469*53ee8cc1Swenshuai.xi     MS_U8 u8RMinThreshold;
470*53ee8cc1Swenshuai.xi     MS_U8 u8RMaxCorrection;
471*53ee8cc1Swenshuai.xi     MS_U8 u8RMinCorrection;
472*53ee8cc1Swenshuai.xi     MS_U8 u8AllowLoseContrast;
473*53ee8cc1Swenshuai.xi #endif
474*53ee8cc1Swenshuai.xi } XC_DLC_MFinit_Ex;
475*53ee8cc1Swenshuai.xi 
476*53ee8cc1Swenshuai.xi /*!
477*53ee8cc1Swenshuai.xi  *  Initial Settings of Dynamic Backlight Control
478*53ee8cc1Swenshuai.xi  */
479*53ee8cc1Swenshuai.xi typedef struct
480*53ee8cc1Swenshuai.xi {
481*53ee8cc1Swenshuai.xi     /// Max PWM
482*53ee8cc1Swenshuai.xi     MS_U8 ucMaxPWM;
483*53ee8cc1Swenshuai.xi     /// Min PWM
484*53ee8cc1Swenshuai.xi     MS_U8 ucMinPWM;
485*53ee8cc1Swenshuai.xi     /// Max Video
486*53ee8cc1Swenshuai.xi     MS_U8 ucMax_Video;
487*53ee8cc1Swenshuai.xi     /// Mid Video
488*53ee8cc1Swenshuai.xi     MS_U8 ucMid_Video;
489*53ee8cc1Swenshuai.xi     /// Min Video
490*53ee8cc1Swenshuai.xi     MS_U8 ucMin_Video;
491*53ee8cc1Swenshuai.xi     /// Current PWM
492*53ee8cc1Swenshuai.xi     MS_U8 ucCurrentPWM;
493*53ee8cc1Swenshuai.xi     /// Alpha
494*53ee8cc1Swenshuai.xi     MS_U8 ucAlpha;
495*53ee8cc1Swenshuai.xi     /// Backlight thres
496*53ee8cc1Swenshuai.xi     MS_U8 ucBackLight_Thres;
497*53ee8cc1Swenshuai.xi     /// Avg delta
498*53ee8cc1Swenshuai.xi     MS_U8 ucAvgDelta;
499*53ee8cc1Swenshuai.xi     /// Flick alpha
500*53ee8cc1Swenshuai.xi     MS_U8 ucFlickAlpha;
501*53ee8cc1Swenshuai.xi     /// Fast alpha blending, min 17 ~ max 32
502*53ee8cc1Swenshuai.xi     MS_U8 ucFastAlphaBlending;
503*53ee8cc1Swenshuai.xi     // TBD
504*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly;
505*53ee8cc1Swenshuai.xi     // TBD
506*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_H_Init;
507*53ee8cc1Swenshuai.xi     // TBD
508*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_MH_Init;
509*53ee8cc1Swenshuai.xi     // TBD
510*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_ML_Init;
511*53ee8cc1Swenshuai.xi     // TBD
512*53ee8cc1Swenshuai.xi     MS_U8 ucLoop_Dly_L_Init;
513*53ee8cc1Swenshuai.xi     /// Y gain H
514*53ee8cc1Swenshuai.xi     MS_U8 ucY_Gain_H;
515*53ee8cc1Swenshuai.xi     /// C gain H
516*53ee8cc1Swenshuai.xi     MS_U8 ucC_Gain_H;
517*53ee8cc1Swenshuai.xi     /// Y gain M
518*53ee8cc1Swenshuai.xi     MS_U8 ucY_Gain_M;
519*53ee8cc1Swenshuai.xi     /// C gain M
520*53ee8cc1Swenshuai.xi     MS_U8 ucC_Gain_M;
521*53ee8cc1Swenshuai.xi     /// Y gain L
522*53ee8cc1Swenshuai.xi     MS_U8 ucY_Gain_L;
523*53ee8cc1Swenshuai.xi     /// C gain L
524*53ee8cc1Swenshuai.xi     MS_U8 ucC_Gain_L;
525*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
526*53ee8cc1Swenshuai.xi     MS_U8 bYGainCtrl : 1;
527*53ee8cc1Swenshuai.xi     /// 1: enable; 0: disable
528*53ee8cc1Swenshuai.xi     MS_U8 bCGainCtrl : 1;
529*53ee8cc1Swenshuai.xi }XC_DLC_DBC_MFinit;
530*53ee8cc1Swenshuai.xi 
531*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
532*53ee8cc1Swenshuai.xi {
533*53ee8cc1Swenshuai.xi     MS_U8      u8ColorPrimaries;
534*53ee8cc1Swenshuai.xi     MS_U8      u8TransferCharacteristics;
535*53ee8cc1Swenshuai.xi     MS_U8      u8MatrixCoefficients;
536*53ee8cc1Swenshuai.xi } XC_DLC_HDRMetadataMpegVUI;
537*53ee8cc1Swenshuai.xi 
538*53ee8cc1Swenshuai.xi // Data format follows HDR_Metadata_MpegSEI_MasteringColorVolume
539*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
540*53ee8cc1Swenshuai.xi {
541*53ee8cc1Swenshuai.xi     MS_U16     display_primaries_x[3]; // x = data*0.00002    [709] {15000, 7500, 32000}
542*53ee8cc1Swenshuai.xi     MS_U16     display_primaries_y[3]; // y = data*0.00002    [709] {30000, 3000, 16500}
543*53ee8cc1Swenshuai.xi     MS_U16     white_point_x; // x = data*0.00002    [709] 15635
544*53ee8cc1Swenshuai.xi     MS_U16     white_point_y; // y = data*0.00002    [709] 16450
545*53ee8cc1Swenshuai.xi     MS_U32     max_display_mastering_luminance; // data*0.0001 nits    [600nits] 6000000
546*53ee8cc1Swenshuai.xi     MS_U32     min_display_mastering_luminance; // data*0.0001 nits    [0.3nits] 3000
547*53ee8cc1Swenshuai.xi } XC_DLC_HDRMetadataMpegSEIMasteringColorVolume;
548*53ee8cc1Swenshuai.xi 
549*53ee8cc1Swenshuai.xi ///HDR Code////
550*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
551*53ee8cc1Swenshuai.xi {
552*53ee8cc1Swenshuai.xi     MS_U16 u16Smin; // 0.10
553*53ee8cc1Swenshuai.xi     MS_U16 u16Smed; // 0.10
554*53ee8cc1Swenshuai.xi     MS_U16 u16Smax; // 0.10
555*53ee8cc1Swenshuai.xi     MS_U16 u16Tmin; // 0.10
556*53ee8cc1Swenshuai.xi     MS_U16 u16Tmed; // 0.10
557*53ee8cc1Swenshuai.xi     MS_U16 u16Tmax; // 0.10
558*53ee8cc1Swenshuai.xi     MS_U16 u16MidSourceOffset;
559*53ee8cc1Swenshuai.xi     MS_U16 u16MidTargetOffset;
560*53ee8cc1Swenshuai.xi     MS_U16 u16MidSourceRatio;
561*53ee8cc1Swenshuai.xi     MS_U16 u16MidTargetRatio;
562*53ee8cc1Swenshuai.xi } XC_DLC_HDRToneMappingData;
563*53ee8cc1Swenshuai.xi 
564*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
565*53ee8cc1Swenshuai.xi {
566*53ee8cc1Swenshuai.xi     MS_U16 u16tRx; // target Rx
567*53ee8cc1Swenshuai.xi     MS_U16 u16tRy; // target Ry
568*53ee8cc1Swenshuai.xi     MS_U16 u16tGx; // target Gx
569*53ee8cc1Swenshuai.xi     MS_U16 u16tGy; // target Gy
570*53ee8cc1Swenshuai.xi     MS_U16 u16tBx; // target Bx
571*53ee8cc1Swenshuai.xi     MS_U16 u16tBy; // target By
572*53ee8cc1Swenshuai.xi     MS_U16 u16tWx; // target Wx
573*53ee8cc1Swenshuai.xi     MS_U16 u16tWy; // target Wy
574*53ee8cc1Swenshuai.xi } XC_DLC_HDRGamutMappingData;
575*53ee8cc1Swenshuai.xi 
576*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
577*53ee8cc1Swenshuai.xi {
578*53ee8cc1Swenshuai.xi     MS_U8      u8EOTF; // 0:SDR gamma, 1:HDR gamma, 2:SMPTE ST2084, 3:Future EOTF, 4-7:Reserved
579*53ee8cc1Swenshuai.xi     MS_U16     u16Rx; // display primaries Rx
580*53ee8cc1Swenshuai.xi     MS_U16     u16Ry; // display primaries Ry
581*53ee8cc1Swenshuai.xi     MS_U16     u16Gx; // display primaries Gx
582*53ee8cc1Swenshuai.xi     MS_U16     u16Gy; // display primaries Gy
583*53ee8cc1Swenshuai.xi     MS_U16     u16Bx; // display primaries Bx
584*53ee8cc1Swenshuai.xi     MS_U16     u16By; // display primaries By
585*53ee8cc1Swenshuai.xi     MS_U16     u16Wx; // display primaries Wx
586*53ee8cc1Swenshuai.xi     MS_U16     u16Wy; // display primaries Wy
587*53ee8cc1Swenshuai.xi     MS_U16     u16Lmax; // max display mastering luminance
588*53ee8cc1Swenshuai.xi     MS_U16     u16Lmin; // min display mastering luminance
589*53ee8cc1Swenshuai.xi     MS_U16     u16MaxCLL; // maximum content light level
590*53ee8cc1Swenshuai.xi     MS_U16     u16MaxFALL; // maximum frame-average light level
591*53ee8cc1Swenshuai.xi } XC_DLC_HDRMetadataHdmiTxInfoFrame;
592*53ee8cc1Swenshuai.xi 
593*53ee8cc1Swenshuai.xi // HDR customer DLC curve.
594*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
595*53ee8cc1Swenshuai.xi {
596*53ee8cc1Swenshuai.xi     MS_BOOL bFixHdrCurve;
597*53ee8cc1Swenshuai.xi     MS_U16 u16DlcCurveSize;
598*53ee8cc1Swenshuai.xi     MS_U8 *pucDlcCurve;
599*53ee8cc1Swenshuai.xi #if !defined (__aarch64__)
600*53ee8cc1Swenshuai.xi     void    *pDummy;
601*53ee8cc1Swenshuai.xi #endif
602*53ee8cc1Swenshuai.xi } XC_DLC_HDRCustomerDlcCurve;
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi /// HDR customer color primaries setting.
605*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
606*53ee8cc1Swenshuai.xi {
607*53ee8cc1Swenshuai.xi     MS_BOOL bCustomerEnable;
608*53ee8cc1Swenshuai.xi     MS_U16 u16sWx;
609*53ee8cc1Swenshuai.xi     MS_U16 u16sWy;
610*53ee8cc1Swenshuai.xi } XC_DLC_HDRCustomerColorPrimaries;
611*53ee8cc1Swenshuai.xi 
612*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
613*53ee8cc1Swenshuai.xi {
614*53ee8cc1Swenshuai.xi     MS_U8 PixelFormat;              // Pixel Format
615*53ee8cc1Swenshuai.xi     MS_U8 Colorimetry;              // Color imetry
616*53ee8cc1Swenshuai.xi     MS_U8 ExtendedColorimetry;      // Extended Color imetry
617*53ee8cc1Swenshuai.xi     MS_U8 RgbQuantizationRange;     // Rgb Quantization Range
618*53ee8cc1Swenshuai.xi     MS_U8 YccQuantizationRange;     // Ycc Quantization Range
619*53ee8cc1Swenshuai.xi     MS_U8 StaticMetadataDescriptorID; //Static Metadata Descriptor ID
620*53ee8cc1Swenshuai.xi } XC_DLC_HDRHdmiTxAviInfoFrame;
621*53ee8cc1Swenshuai.xi 
622*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
623*53ee8cc1Swenshuai.xi {
624*53ee8cc1Swenshuai.xi     MS_BOOL bUsed;
625*53ee8cc1Swenshuai.xi     MS_BOOL bContentLightLevelEnabled;
626*53ee8cc1Swenshuai.xi     MS_U16 u16MaxContentLightLevel;
627*53ee8cc1Swenshuai.xi     MS_U16 u16MaxPicAverageLightLevel;
628*53ee8cc1Swenshuai.xi } XC_DLC_HDRMetadataSeiContentLightLevel;
629*53ee8cc1Swenshuai.xi 
630*53ee8cc1Swenshuai.xi // HDR new tone mapping parameters.
631*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
632*53ee8cc1Swenshuai.xi {
633*53ee8cc1Swenshuai.xi     // TMO
634*53ee8cc1Swenshuai.xi     MS_U16 u16SrcMinRatio;            //default 10
635*53ee8cc1Swenshuai.xi     MS_U16 u16SrcMedRatio;                   //default 512
636*53ee8cc1Swenshuai.xi     MS_U16 u16SrcMaxRatio;            //default 990
637*53ee8cc1Swenshuai.xi 
638*53ee8cc1Swenshuai.xi     MS_U8 u8TgtMinFlag;                         //default 1
639*53ee8cc1Swenshuai.xi     MS_U16 u16TgtMin;                    //default 500
640*53ee8cc1Swenshuai.xi     MS_U8 u8TgtMaxFlag;                        //default 0
641*53ee8cc1Swenshuai.xi     MS_U16 u16TgtMax;                //default 300
642*53ee8cc1Swenshuai.xi 
643*53ee8cc1Swenshuai.xi     MS_U16 u16FrontSlopeMin;            //default 256
644*53ee8cc1Swenshuai.xi     MS_U16 u16FrontSlopeMax;            //default 512
645*53ee8cc1Swenshuai.xi     MS_U16 u16BackSlopeMin;            //default 128
646*53ee8cc1Swenshuai.xi     MS_U16 u16BackSlopeMax;            //default 256
647*53ee8cc1Swenshuai.xi 
648*53ee8cc1Swenshuai.xi     MS_U16 u16SceneChangeThrd;        //default 1024
649*53ee8cc1Swenshuai.xi     MS_U16 u16SceneChangeRatioMax;    //default 1024
650*53ee8cc1Swenshuai.xi 
651*53ee8cc1Swenshuai.xi     MS_U8 u8IIRRatio;                    //default 31
652*53ee8cc1Swenshuai.xi     MS_U8 u8TMO_TargetMode;      // default 0. 0 : keeps the value in initial function  1 : from output source
653*53ee8cc1Swenshuai.xi 
654*53ee8cc1Swenshuai.xi } XC_DLC_HDRNewToneMapping;
655*53ee8cc1Swenshuai.xi 
656*53ee8cc1Swenshuai.xi /*!
657*53ee8cc1Swenshuai.xi  *  Initial  HDR   Settings
658*53ee8cc1Swenshuai.xi  */
659*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed))
660*53ee8cc1Swenshuai.xi {
661*53ee8cc1Swenshuai.xi     /// HDR Version Info
662*53ee8cc1Swenshuai.xi     MS_U16 u16HDRVerInfo;
663*53ee8cc1Swenshuai.xi     /// HDR init Length
664*53ee8cc1Swenshuai.xi     MS_U16 u16HDRInitLength;
665*53ee8cc1Swenshuai.xi     /// HDR Enable
666*53ee8cc1Swenshuai.xi     MS_BOOL bHDREnable;
667*53ee8cc1Swenshuai.xi     /// HDR Function Select
668*53ee8cc1Swenshuai.xi     MS_U16 u16HDRFunctionSelect;
669*53ee8cc1Swenshuai.xi     /// HDR Metadata Mpeg VUI
670*53ee8cc1Swenshuai.xi     XC_DLC_HDRMetadataMpegVUI DLC_HDRMetadataMpegVUI;
671*53ee8cc1Swenshuai.xi     // HDR Tone Mapping Data
672*53ee8cc1Swenshuai.xi     XC_DLC_HDRToneMappingData DLC_HDRToneMappingData;
673*53ee8cc1Swenshuai.xi     // HDR Gamut Mapping Data
674*53ee8cc1Swenshuai.xi     XC_DLC_HDRGamutMappingData DLC_HDRGamutMappingData;
675*53ee8cc1Swenshuai.xi     // HDR Metadata Hdmi Tx Info Frame
676*53ee8cc1Swenshuai.xi     XC_DLC_HDRMetadataHdmiTxInfoFrame DLC_HDRMetadataHdmiTxInfoFrame;
677*53ee8cc1Swenshuai.xi     // Customer DLC Curve
678*53ee8cc1Swenshuai.xi     XC_DLC_HDRCustomerDlcCurve DLC_HDRCustomerDlcCurve;
679*53ee8cc1Swenshuai.xi     // Customer color primaries.
680*53ee8cc1Swenshuai.xi     XC_DLC_HDRCustomerColorPrimaries DLC_HDRCustomerColorPrimaries;
681*53ee8cc1Swenshuai.xi     //HDR Hdmi Tx Avi Info Frame
682*53ee8cc1Swenshuai.xi     XC_DLC_HDRHdmiTxAviInfoFrame DLC_HDRHdmiTxAviInfoFrame;
683*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) || defined(UFO_PUBLIC_HEADER_300) || defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_700)
684*53ee8cc1Swenshuai.xi     /// HDR metadata MPEG SEI mastering color volume/
685*53ee8cc1Swenshuai.xi     XC_DLC_HDRMetadataMpegSEIMasteringColorVolume DLC_HDRMetadataMpegSEIMasteringColorVolume;
686*53ee8cc1Swenshuai.xi #endif
687*53ee8cc1Swenshuai.xi 
688*53ee8cc1Swenshuai.xi     /// New tone mapping parameters.
689*53ee8cc1Swenshuai.xi     XC_DLC_HDRNewToneMapping DLC_HDRNewToneMapping;
690*53ee8cc1Swenshuai.xi 
691*53ee8cc1Swenshuai.xi } XC_DLC_HDRinit;
692*53ee8cc1Swenshuai.xi 
693*53ee8cc1Swenshuai.xi /*!
694*53ee8cc1Swenshuai.xi  *  Initial Settings of Dyanmic Luma Curve
695*53ee8cc1Swenshuai.xi  */
696*53ee8cc1Swenshuai.xi typedef struct
697*53ee8cc1Swenshuai.xi {
698*53ee8cc1Swenshuai.xi     /// Scaler DCL MF init
699*53ee8cc1Swenshuai.xi     XC_DLC_MFinit DLC_MFinit;
700*53ee8cc1Swenshuai.xi     /// Scaler DCL MF init Ex
701*53ee8cc1Swenshuai.xi     XC_DLC_MFinit_Ex DLC_MFinit_Ex;
702*53ee8cc1Swenshuai.xi     /// Curve Horizontal start
703*53ee8cc1Swenshuai.xi     MS_U16 u16CurveHStart;
704*53ee8cc1Swenshuai.xi     /// Curve Horizontal end
705*53ee8cc1Swenshuai.xi     MS_U16 u16CurveHEnd;
706*53ee8cc1Swenshuai.xi     /// Curve Vertical start
707*53ee8cc1Swenshuai.xi     MS_U16 u16CurveVStart;
708*53ee8cc1Swenshuai.xi     /// Curve Vertical end
709*53ee8cc1Swenshuai.xi     MS_U16 u16CurveVEnd;
710*53ee8cc1Swenshuai.xi     /// Scaler DLC MF init
711*53ee8cc1Swenshuai.xi     XC_DLC_DBC_MFinit DLC_DBC_MFinit;
712*53ee8cc1Swenshuai.xi #if (ENABLE_10_BIT_DLC)
713*53ee8cc1Swenshuai.xi     /// DLC init ext
714*53ee8cc1Swenshuai.xi     MS_BOOL b10BitsEn;
715*53ee8cc1Swenshuai.xi #endif
716*53ee8cc1Swenshuai.xi 
717*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_700)
718*53ee8cc1Swenshuai.xi #if defined(UFO_XC_HDR_VERSION) && (UFO_XC_HDR_VERSION == 2)
719*53ee8cc1Swenshuai.xi     MS_U8 u8DlcMode;
720*53ee8cc1Swenshuai.xi     MS_U8 u8TmoMode;
721*53ee8cc1Swenshuai.xi #endif
722*53ee8cc1Swenshuai.xi #endif
723*53ee8cc1Swenshuai.xi } XC_DLC_init;
724*53ee8cc1Swenshuai.xi 
725*53ee8cc1Swenshuai.xi /*!
726*53ee8cc1Swenshuai.xi  *  Luma Statistics & Data of Dyanmic Luma Curve
727*53ee8cc1Swenshuai.xi  */
728*53ee8cc1Swenshuai.xi typedef struct
729*53ee8cc1Swenshuai.xi {
730*53ee8cc1Swenshuai.xi     /// Luma histogram 32H
731*53ee8cc1Swenshuai.xi     MS_U16 g_wLumaHistogram32H[32];
732*53ee8cc1Swenshuai.xi     /// Luma total count
733*53ee8cc1Swenshuai.xi     MS_U16 g_wLumiTotalCount;
734*53ee8cc1Swenshuai.xi     /// Luma average temp
735*53ee8cc1Swenshuai.xi     MS_U16 g_wLumiAverageTemp;
736*53ee8cc1Swenshuai.xi     /// table
737*53ee8cc1Swenshuai.xi     MS_U8 g_ucTable[16];
738*53ee8cc1Swenshuai.xi     /// Histogram max
739*53ee8cc1Swenshuai.xi     MS_U8 g_ucHistogramMax;
740*53ee8cc1Swenshuai.xi     /// Histogram min
741*53ee8cc1Swenshuai.xi     MS_U8 g_ucHistogramMin;
742*53ee8cc1Swenshuai.xi } XC_DLC_lumadata;
743*53ee8cc1Swenshuai.xi 
744*53ee8cc1Swenshuai.xi /*!
745*53ee8cc1Swenshuai.xi  *  Infomation of XC_DLC library.
746*53ee8cc1Swenshuai.xi  */
747*53ee8cc1Swenshuai.xi typedef struct
748*53ee8cc1Swenshuai.xi {
749*53ee8cc1Swenshuai.xi 
750*53ee8cc1Swenshuai.xi } XC_DLC_ApiInfo;
751*53ee8cc1Swenshuai.xi 
752*53ee8cc1Swenshuai.xi 
753*53ee8cc1Swenshuai.xi /*!
754*53ee8cc1Swenshuai.xi  *  Current Status of XC_DLC and library info.
755*53ee8cc1Swenshuai.xi  */
756*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
757*53ee8cc1Swenshuai.xi {
758*53ee8cc1Swenshuai.xi     /// Scaler DLC init
759*53ee8cc1Swenshuai.xi     XC_DLC_init DLCinit;
760*53ee8cc1Swenshuai.xi     /// Scaler DLC Luma data
761*53ee8cc1Swenshuai.xi     XC_DLC_lumadata DLCluma;
762*53ee8cc1Swenshuai.xi     /// DLC Lib version
763*53ee8cc1Swenshuai.xi     MS_U8  u8DLC_LibVer;
764*53ee8cc1Swenshuai.xi     /// DLC MF version
765*53ee8cc1Swenshuai.xi     MS_U16 u16DLC_MFVer;
766*53ee8cc1Swenshuai.xi     /// DLC CGC MF version
767*53ee8cc1Swenshuai.xi     MS_U16 u16DLC_CGC_MFVer;
768*53ee8cc1Swenshuai.xi     /// DLC DBC init
769*53ee8cc1Swenshuai.xi     XC_DLC_DBC_MFinit DLC_DBCinit;
770*53ee8cc1Swenshuai.xi     /// DLC DBC MF version
771*53ee8cc1Swenshuai.xi     MS_U16 u16DLC_DBC_MFVer;
772*53ee8cc1Swenshuai.xi } XC_DLC_ApiStatus;
773*53ee8cc1Swenshuai.xi /*
774*53ee8cc1Swenshuai.xi  * DLC capture Range
775*53ee8cc1Swenshuai.xi  */
776*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
777*53ee8cc1Swenshuai.xi {
778*53ee8cc1Swenshuai.xi     MS_U16 wHStart;
779*53ee8cc1Swenshuai.xi     MS_U16 wHEnd;
780*53ee8cc1Swenshuai.xi     MS_U16 wVStart;
781*53ee8cc1Swenshuai.xi     MS_U16 wVEnd;
782*53ee8cc1Swenshuai.xi }XC_DLC_CAPTURE_Range;
783*53ee8cc1Swenshuai.xi 
784*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDR
785*53ee8cc1Swenshuai.xi #if (UFO_XC_HDR_VERSION == 2)
786*53ee8cc1Swenshuai.xi 
787*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700)
788*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
789*53ee8cc1Swenshuai.xi {
790*53ee8cc1Swenshuai.xi     MS_U32 u32OutputNits[512];
791*53ee8cc1Swenshuai.xi     MS_U16 u16InputPoint[512];
792*53ee8cc1Swenshuai.xi     MS_U16 u16ControlPoints;
793*53ee8cc1Swenshuai.xi     MS_S16 s16LastLess1IndexOutputnits;
794*53ee8cc1Swenshuai.xi     MS_S16 s16LastIndexM10000Outputs;
795*53ee8cc1Swenshuai.xi     MS_S16 s16LastIndexM100Outputs;
796*53ee8cc1Swenshuai.xi }ST_XC_DLC_TMO_1DLUT;
797*53ee8cc1Swenshuai.xi #endif
798*53ee8cc1Swenshuai.xi 
799*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
800*53ee8cc1Swenshuai.xi {
801*53ee8cc1Swenshuai.xi     MS_U32 u32TMOInfo_Version;         ///<Version of current structure. Please always set to "DLC_TMO_INFO_VERSION" as input
802*53ee8cc1Swenshuai.xi     MS_U16 u16TMOInfo_Length;          ///<Length of this structure, u163DLutInfo_Length=sizeof(ST_XC_DLC_TMO_INFO)
803*53ee8cc1Swenshuai.xi     // TMO
804*53ee8cc1Swenshuai.xi     MS_U16 u16SrcMinRatio;          //default 10
805*53ee8cc1Swenshuai.xi     MS_U16 u16SrcMedRatio;          //default 512
806*53ee8cc1Swenshuai.xi     MS_U16 u16SrcMaxRatio;          //default 990
807*53ee8cc1Swenshuai.xi 
808*53ee8cc1Swenshuai.xi     MS_U16 u16TgtMin;               //default 500
809*53ee8cc1Swenshuai.xi     MS_U16 u16TgtMed;
810*53ee8cc1Swenshuai.xi     MS_U16 u16TgtMax;               //default 300
811*53ee8cc1Swenshuai.xi 
812*53ee8cc1Swenshuai.xi     MS_U16 u16FrontSlopeMin;        //default 256
813*53ee8cc1Swenshuai.xi     MS_U16 u16FrontSlopeMax;        //default 512
814*53ee8cc1Swenshuai.xi     MS_U16 u16BackSlopeMin;         //default 128
815*53ee8cc1Swenshuai.xi     MS_U16 u16BackSlopeMax;         //default 256
816*53ee8cc1Swenshuai.xi 
817*53ee8cc1Swenshuai.xi     MS_U16 u16SceneChangeThrd;      //default 1024
818*53ee8cc1Swenshuai.xi     MS_U16 u16SceneChangeRatioMax;  //default 1024
819*53ee8cc1Swenshuai.xi 
820*53ee8cc1Swenshuai.xi     MS_U8 u8IIRRatio;               //default 31
821*53ee8cc1Swenshuai.xi     MS_U8 u8TMOTargetMode;          // default 0. 0 : keeps the value in initial function  1 : from output source
822*53ee8cc1Swenshuai.xi     MS_U16 u16SDRPanelGain;        // default 80
823*53ee8cc1Swenshuai.xi 
824*53ee8cc1Swenshuai.xi     MS_U16 u16Smin;
825*53ee8cc1Swenshuai.xi     MS_U16 u16Smed;
826*53ee8cc1Swenshuai.xi     MS_U16 u16Smax;
827*53ee8cc1Swenshuai.xi     MS_U16 u16Tmin;
828*53ee8cc1Swenshuai.xi     MS_U16 u16Tmed;
829*53ee8cc1Swenshuai.xi     MS_U16 u16Tmax;
830*53ee8cc1Swenshuai.xi 
831*53ee8cc1Swenshuai.xi     MS_BOOL bRefMode;
832*53ee8cc1Swenshuai.xi 
833*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700)
834*53ee8cc1Swenshuai.xi     MS_U8 u8TMOUseIniControls;
835*53ee8cc1Swenshuai.xi     ST_XC_DLC_TMO_1DLUT stTMO1DLUT;
836*53ee8cc1Swenshuai.xi #endif
837*53ee8cc1Swenshuai.xi } ST_XC_DLC_TMO_INFO;
838*53ee8cc1Swenshuai.xi #endif
839*53ee8cc1Swenshuai.xi #endif
840*53ee8cc1Swenshuai.xi /******************************************************************************/
841*53ee8cc1Swenshuai.xi /*         Variables                                                         */
842*53ee8cc1Swenshuai.xi /******************************************************************************/
843*53ee8cc1Swenshuai.xi 
844*53ee8cc1Swenshuai.xi /******************************************************************************/
845*53ee8cc1Swenshuai.xi /*         Function Prototypes                                                */
846*53ee8cc1Swenshuai.xi /******************************************************************************/
847*53ee8cc1Swenshuai.xi 
848*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
849*53ee8cc1Swenshuai.xi /// DLC initiation
850*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
851*53ee8cc1Swenshuai.xi // @param  pstXC_DLC_InitData             \b IN: TBD
852*53ee8cc1Swenshuai.xi // @param  u32InitDataLen                 \b IN: TBD
853*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
854*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
855*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_Init_Ex(XC_DLC_init *pstXC_DLC_InitData, MS_U32 u32InitDataLen);
856*53ee8cc1Swenshuai.xi 
857*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
858*53ee8cc1Swenshuai.xi /// Setting DLC
859*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
860*53ee8cc1Swenshuai.xi // @param  DLC_MFinit_Ex             \b IN: DLC data
861*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
862*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetSetting_Ex(XC_DLC_MFinit_Ex *DLC_MFinit_Ex );
863*53ee8cc1Swenshuai.xi 
864*53ee8cc1Swenshuai.xi 
865*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
866*53ee8cc1Swenshuai.xi /// Set DLC curve
867*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
868*53ee8cc1Swenshuai.xi // @param  pNormal             \b IN: DLC normal curve
869*53ee8cc1Swenshuai.xi // @param  pLight              \b IN: DLC light curve
870*53ee8cc1Swenshuai.xi // @param  pDark               \b IN: DLC dark curve
871*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
872*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetCurve(MS_U8 *pNormal, MS_U8 *pLight, MS_U8 *pDark);
873*53ee8cc1Swenshuai.xi 
874*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
875*53ee8cc1Swenshuai.xi /// Set BLE Slop Point
876*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
877*53ee8cc1Swenshuai.xi // @param  pBLESlopPoint             \b IN: BLE Slop Point
878*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
879*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetBleSlopPoint(MS_U16 *pBLESlopPoint);
880*53ee8cc1Swenshuai.xi 
881*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
882*53ee8cc1Swenshuai.xi /// Set Set HDR Init
883*53ee8cc1Swenshuai.xi // @param  pstDLC_HDRInitData             \b IN: HDR Init Info
884*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
885*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_DLC_SetHDRInit(XC_DLC_HDRinit *pstDLC_HDRInitData);
886*53ee8cc1Swenshuai.xi 
887*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
888*53ee8cc1Swenshuai.xi /// Get wether support EOTFor not // 1:E_EOTF_SDR 2:E_EOTF_HDR 4:E_EOTF_SMPTE_ST_2084 8:E_EOTF_HLG
889*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
890*53ee8cc1Swenshuai.xi /// @return @ref MS_U32
891*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
892*53ee8cc1Swenshuai.xi MS_U32 SYMBOL_WEAK MApi_XC_DLC_GetEOTFInfo(void);
893*53ee8cc1Swenshuai.xi 
894*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
895*53ee8cc1Swenshuai.xi /// DLC exit
896*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
897*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
898*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
899*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_Exit(void);
900*53ee8cc1Swenshuai.xi 
901*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
902*53ee8cc1Swenshuai.xi ///Enable/disable DLC to control MDrv_DLC_SetOnOff ,used DLC enbale register to control.
903*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
904*53ee8cc1Swenshuai.xi ///@param bSwitch \b IN:
905*53ee8cc1Swenshuai.xi ///   - # TRUE  Enable
906*53ee8cc1Swenshuai.xi ///   - # FALSE Disable
907*53ee8cc1Swenshuai.xi ///@param  bWindow                 \b IN: The window which applys the function effect, MAIN_WINDOW:0
908*53ee8cc1Swenshuai.xi ///                                                                                    SUB_WINDOW: 1
909*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
910*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_SetOnOff(MS_BOOL bSwitch, MS_BOOL bWindow);
911*53ee8cc1Swenshuai.xi 
912*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
913*53ee8cc1Swenshuai.xi ///Enable/disable DLC to control MDrv_DLC_Handler function.
914*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
915*53ee8cc1Swenshuai.xi ///@param bSwitch \b IN:
916*53ee8cc1Swenshuai.xi ///   - # TRUE  Enable
917*53ee8cc1Swenshuai.xi ///   - # FALSE Disable
918*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
919*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
920*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_SetDlcHandlerOnOff(MS_BOOL bDlcEnable );
921*53ee8cc1Swenshuai.xi 
922*53ee8cc1Swenshuai.xi /******************************************************************************/
923*53ee8cc1Swenshuai.xi //Enable/disable BLE to control BLE function.
924*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
925*53ee8cc1Swenshuai.xi //@param bSwitch \b IN
926*53ee8cc1Swenshuai.xi //   - # TRUE  Enable
927*53ee8cc1Swenshuai.xi //   - # FALSE Disable
928*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
929*53ee8cc1Swenshuai.xi /******************************************************************************/
930*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_SetBleOnOff( MS_BOOL bSwitch );
931*53ee8cc1Swenshuai.xi 
932*53ee8cc1Swenshuai.xi /******************************************************************************/
933*53ee8cc1Swenshuai.xi //Enable/disable DLC Set Curve Both for main and sub.
934*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
935*53ee8cc1Swenshuai.xi //@param bEnable \b IN
936*53ee8cc1Swenshuai.xi //   - # TRUE  Enable
937*53ee8cc1Swenshuai.xi //   - # FALSE Disable
938*53ee8cc1Swenshuai.xi /******************************************************************************/
939*53ee8cc1Swenshuai.xi void MApi_XC_DLC_EnableMainSubCurveSynchronization (MS_BOOL bEnable);
940*53ee8cc1Swenshuai.xi 
941*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
942*53ee8cc1Swenshuai.xi /// DLC handler
943*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
944*53ee8cc1Swenshuai.xi ///@param  bWindow                 \b IN: The window which applys the function effect, MAIN_WINDOW:0
945*53ee8cc1Swenshuai.xi ///                                                                                    SUB_WINDOW: 1
946*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
947*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_Handler(MS_BOOL bWindow);
948*53ee8cc1Swenshuai.xi 
949*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
950*53ee8cc1Swenshuai.xi /// DLC get histogram handler
951*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
952*53ee8cc1Swenshuai.xi ///@param  bWindow                 \b IN: The window which applys the function effect, MAIN_WINDOW:0
953*53ee8cc1Swenshuai.xi ///                                                                                    SUB_WINDOW: 1
954*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
955*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
956*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetHistogramHandler(MS_BOOL bWindow);
957*53ee8cc1Swenshuai.xi 
958*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
959*53ee8cc1Swenshuai.xi /// DLC get average value from 0 to 255
960*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
961*53ee8cc1Swenshuai.xi /// @return @ref MS_U8
962*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
963*53ee8cc1Swenshuai.xi MS_U8   MApi_XC_DLC_GetAverageValue(void);
964*53ee8cc1Swenshuai.xi 
965*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
966*53ee8cc1Swenshuai.xi /// DLC get average exactness value from 0 to 1023
967*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
968*53ee8cc1Swenshuai.xi /// @return @ref MS_U16
969*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
970*53ee8cc1Swenshuai.xi MS_U16 MApi_XC_DLC_GetAverageValue_Ex(void);
971*53ee8cc1Swenshuai.xi 
972*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
973*53ee8cc1Swenshuai.xi /// DLC initilization curve
974*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
975*53ee8cc1Swenshuai.xi // @param  u16HStart               \b IN: TBD
976*53ee8cc1Swenshuai.xi // @param  u16HEnd                 \b IN: TBD
977*53ee8cc1Swenshuai.xi // @param  u16VStart               \b IN: TBD
978*53ee8cc1Swenshuai.xi // @param  u16VEnd                 \b IN: TBD
979*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
980*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_InitCurve (MS_U16 u16HStart, MS_U16 u16HEnd, MS_U16 u16VStart, MS_U16 u16VEnd);
981*53ee8cc1Swenshuai.xi 
982*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
983*53ee8cc1Swenshuai.xi /// DLC speedup trigger
984*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
985*53ee8cc1Swenshuai.xi // @param  u8Loop               \b IN: TBD
986*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
987*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_SpeedupTrigger (MS_U8 u8Loop);
988*53ee8cc1Swenshuai.xi 
989*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
990*53ee8cc1Swenshuai.xi /// DLC get luma curve status
991*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
992*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
993*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
994*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetLumaCurveStatus( void );
995*53ee8cc1Swenshuai.xi 
996*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
997*53ee8cc1Swenshuai.xi /// DLC CGC reset C gain
998*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
999*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1000*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_ResetCGain(void);
1001*53ee8cc1Swenshuai.xi 
1002*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1003*53ee8cc1Swenshuai.xi /// DLC CGC check C gain in PQCom
1004*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1005*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1006*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_CheckCGainInPQCom(void);
1007*53ee8cc1Swenshuai.xi 
1008*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1009*53ee8cc1Swenshuai.xi /// DLC CGC reset Y gain
1010*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1011*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1012*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_ResetYGain(void);
1013*53ee8cc1Swenshuai.xi 
1014*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1015*53ee8cc1Swenshuai.xi /// DLC CGC reset Y gain in PQCom
1016*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1017*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1018*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_CheckYGainInPQCom(void);
1019*53ee8cc1Swenshuai.xi 
1020*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1021*53ee8cc1Swenshuai.xi /// DLC CGC reset
1022*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1023*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1024*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_Reset(void);
1025*53ee8cc1Swenshuai.xi 
1026*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1027*53ee8cc1Swenshuai.xi /// DLC CGC initilization
1028*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
1029*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1030*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_Init(void);
1031*53ee8cc1Swenshuai.xi 
1032*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1033*53ee8cc1Swenshuai.xi /// DLC CGC Re-initilization
1034*53ee8cc1Swenshuai.xi /// @ingroup DLC_INIT
1035*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1036*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_ReInit(void);
1037*53ee8cc1Swenshuai.xi 
1038*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1039*53ee8cc1Swenshuai.xi /// DLC CGC handler
1040*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1041*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1042*53ee8cc1Swenshuai.xi void    MApi_XC_DLC_CGC_Handler(void);
1043*53ee8cc1Swenshuai.xi 
1044*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1045*53ee8cc1Swenshuai.xi /// Get version (without Mutex protect)
1046*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
1047*53ee8cc1Swenshuai.xi // @param ppVersion               \b IN: TBD
1048*53ee8cc1Swenshuai.xi /// @return @ref E_XC_DLC_RESULT
1049*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1050*53ee8cc1Swenshuai.xi E_XC_DLC_RESULT MApi_XC_DLC_GetLibVer(const MSIF_Version **ppVersion) ;
1051*53ee8cc1Swenshuai.xi 
1052*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1053*53ee8cc1Swenshuai.xi /// DLC get information
1054*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
1055*53ee8cc1Swenshuai.xi /// @return XC_DLC_ApiInfo
1056*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1057*53ee8cc1Swenshuai.xi const XC_DLC_ApiInfo * MApi_XC_DLC_GetInfo(void);                                      ///< Get info from driver (without Mutex protect)
1058*53ee8cc1Swenshuai.xi 
1059*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1060*53ee8cc1Swenshuai.xi /// Get DLC current status
1061*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
1062*53ee8cc1Swenshuai.xi // @param pDrvStatus               \b IN: TBD
1063*53ee8cc1Swenshuai.xi // @param bWindow                  \b IN: TBD
1064*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
1065*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1066*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetStatus_Ex(XC_DLC_ApiStatus *pDrvStatus, MS_BOOL bWindow);       ///< Get panel current status
1067*53ee8cc1Swenshuai.xi 
1068*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1069*53ee8cc1Swenshuai.xi /// DLC get Dbg level
1070*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
1071*53ee8cc1Swenshuai.xi /// @param u16DbgSwitch               \b IN: Set debug level
1072*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL
1073*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1074*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_SetDbgLevel(MS_U16 u16DbgSwitch);                                  ///< Set debug level (without Mutex protect), refer to XC_DBGLEVEL_OFF
1075*53ee8cc1Swenshuai.xi 
1076*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1077*53ee8cc1Swenshuai.xi /// Write DLC curve
1078*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1079*53ee8cc1Swenshuai.xi /// @param pu8Table                     \b IN: the value of curve
1080*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
1081*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1082*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_WriteCurve(MS_U8 *pu8Table);
1083*53ee8cc1Swenshuai.xi 
1084*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1085*53ee8cc1Swenshuai.xi /// Write DLC curve
1086*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1087*53ee8cc1Swenshuai.xi /// @param pu8Table                     \b IN: the value of curve
1088*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
1089*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1090*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_WriteCurve_Sub(MS_U8 *pu8Table);
1091*53ee8cc1Swenshuai.xi 
1092*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1093*53ee8cc1Swenshuai.xi /// get histogram data
1094*53ee8cc1Swenshuai.xi /// @ingroup DLC_INFO
1095*53ee8cc1Swenshuai.xi /// @param pu16Histogram                \b OUT: the value of histogram
1096*53ee8cc1Swenshuai.xi /// @param u8section_num                \b IN: the number of histogram section
1097*53ee8cc1Swenshuai.xi // @return @ref MS_BOOL
1098*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1099*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetHistogram(MS_U16 *pu16Histogram, E_XC_DLC_HISTOGRAM_TYPE enHistogramType);
1100*53ee8cc1Swenshuai.xi 
1101*53ee8cc1Swenshuai.xi /******************************************************************************/
1102*53ee8cc1Swenshuai.xi /// API DLC DBC library start
1103*53ee8cc1Swenshuai.xi /******************************************************************************/
1104*53ee8cc1Swenshuai.xi typedef void   (*MApi_XC_DLC_Print_Callback)(MS_U8 /*PWM_VALUE*/);
1105*53ee8cc1Swenshuai.xi 
1106*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED  {
1107*53ee8cc1Swenshuai.xi     MS_U8 *pCmdBuff;                           ///<1. command buffer from UART
1108*53ee8cc1Swenshuai.xi     MS_U16 u16PNL_Width;                       ///<2. Panel Widht
1109*53ee8cc1Swenshuai.xi     MS_U16 u16PNL_Height;                      ///<3. Panel Height
1110*53ee8cc1Swenshuai.xi     MApi_XC_DLC_Print_Callback fnDLC_Putchar;  ///<4. User putchar function
1111*53ee8cc1Swenshuai.xi }tDLC_CONTROL_PARAMS;
1112*53ee8cc1Swenshuai.xi 
1113*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1114*53ee8cc1Swenshuai.xi /// brief uart debug command decoder for Dynamic Luminance Control.
1115*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1116*53ee8cc1Swenshuai.xi /// @param params   passin params
1117*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1118*53ee8cc1Swenshuai.xi void MApi_XC_DLC_DecodeExtCmd(tDLC_CONTROL_PARAMS *params);
1119*53ee8cc1Swenshuai.xi 
1120*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1121*53ee8cc1Swenshuai.xi /// Setup DLC capture range
1122*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1123*53ee8cc1Swenshuai.xi /// @param StuDlc_Range                     \b IN: Hstart, Hend, Vstart, Vend
1124*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1125*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetCaptureRange(XC_DLC_CAPTURE_Range *pu16_Range);
1126*53ee8cc1Swenshuai.xi 
1127*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1128*53ee8cc1Swenshuai.xi /// Dlc power state control for fastboot
1129*53ee8cc1Swenshuai.xi /// @ingroup DLC_FEATURE
1130*53ee8cc1Swenshuai.xi /// @param  u16PowerState                 \b IN: power state
1131*53ee8cc1Swenshuai.xi // @return @ref MS_U32                      \b return result of power state control.
1132*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1133*53ee8cc1Swenshuai.xi MS_U32 MApi_XC_DLC_SetPowerState(EN_POWER_MODE enPowerState);
1134*53ee8cc1Swenshuai.xi 
1135*53ee8cc1Swenshuai.xi /******************************************************************************/
1136*53ee8cc1Swenshuai.xi /// API DLC DBC library end
1137*53ee8cc1Swenshuai.xi /******************************************************************************/
1138*53ee8cc1Swenshuai.xi 
1139*53ee8cc1Swenshuai.xi 
1140*53ee8cc1Swenshuai.xi //================================ Obsolete Function Start =======================================
1141*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1142*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1143*53ee8cc1Swenshuai.xi /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  Alert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1144*53ee8cc1Swenshuai.xi /// !!! below function will be "REMOVED" or "REFACTORING" later, please do not use it !!!!!!!!!
1145*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1146*53ee8cc1Swenshuai.xi 
1147*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1148*53ee8cc1Swenshuai.xi /// @ingroup DLC_ToBeRemove
1149*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1150*53ee8cc1Swenshuai.xi 
1151*53ee8cc1Swenshuai.xi void MApi_XC_DLC_SetSetting(XC_DLC_MFinit DLC_MFinit ); // Setting DLC
1152*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1153*53ee8cc1Swenshuai.xi /// @ingroup DLC_ToBeRemove
1154*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1155*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_Init(XC_DLC_init *pstXC_DLC_InitData, MS_U32 u32InitDataLen); // DLC initiation
1156*53ee8cc1Swenshuai.xi 
1157*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1158*53ee8cc1Swenshuai.xi /// @ingroup DLC_ToBeRemove
1159*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1160*53ee8cc1Swenshuai.xi MS_BOOL MApi_XC_DLC_GetStatus(XC_DLC_ApiStatus *pDrvStatus, MS_BOOL bWindow);  // Get DLC current status
1161*53ee8cc1Swenshuai.xi 
1162*53ee8cc1Swenshuai.xi //================================ Obsolete Function End =======================================
1163*53ee8cc1Swenshuai.xi #ifdef UFO_XC_HDR
1164*53ee8cc1Swenshuai.xi #if (UFO_XC_HDR_VERSION == 2)
1165*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_XC_DLC_SetTMOInfo(ST_XC_DLC_TMO_INFO *pstDLCTmoInfo);
1166*53ee8cc1Swenshuai.xi #endif
1167*53ee8cc1Swenshuai.xi #endif
1168*53ee8cc1Swenshuai.xi #ifdef __cplusplus
1169*53ee8cc1Swenshuai.xi }
1170*53ee8cc1Swenshuai.xi #endif
1171*53ee8cc1Swenshuai.xi 
1172*53ee8cc1Swenshuai.xi #endif // _API_XC_DLC_H_
1173*53ee8cc1Swenshuai.xi 
1174*53ee8cc1Swenshuai.xi 
1175