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