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