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_EX.h 98*53ee8cc1Swenshuai.xi /// @brief XC EXTENSION Interface FOR DUAL STREAMS 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi #ifndef _API_XC_EX_H_ 103*53ee8cc1Swenshuai.xi #define _API_XC_EX_H_ 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi #include "MsCommon.h" 106*53ee8cc1Swenshuai.xi #include "MsDevice.h" 107*53ee8cc1Swenshuai.xi // Driver 108*53ee8cc1Swenshuai.xi #include "drvXC_IOPort.h" 109*53ee8cc1Swenshuai.xi #include "UFO.h" 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi #ifdef __cplusplus 112*53ee8cc1Swenshuai.xi extern "C" 113*53ee8cc1Swenshuai.xi { 114*53ee8cc1Swenshuai.xi #endif 115*53ee8cc1Swenshuai.xi 116*53ee8cc1Swenshuai.xi 117*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 118*53ee8cc1Swenshuai.xi // Macro and Define 119*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 120*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 121*53ee8cc1Swenshuai.xi // This macro defined in mscommon.h originally, here just for avoid SN compile error 122*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 123*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX_KERNEL 124*53ee8cc1Swenshuai.xi #define SYMBOL_WEAK 125*53ee8cc1Swenshuai.xi #else 126*53ee8cc1Swenshuai.xi #define SYMBOL_WEAK __attribute__((weak)) 127*53ee8cc1Swenshuai.xi #endif 128*53ee8cc1Swenshuai.xi // library information 129*53ee8cc1Swenshuai.xi #define MSIF_XC_EX_LIB_CODE {'X','C','E','X'} 130*53ee8cc1Swenshuai.xi #define MSIF_XC_EX_LIBVER {'0','9'} 131*53ee8cc1Swenshuai.xi #define MSIF_XC_EX_BUILDNUM {'0','8'} 132*53ee8cc1Swenshuai.xi #define MSIF_XC_EX_CHANGELIST {'0','0','7','0','9','8','0','1'} 133*53ee8cc1Swenshuai.xi #define XC_EX_API_VERSION /* Character String for DRV/API version */ \ 134*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 135*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 136*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 137*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 138*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 139*53ee8cc1Swenshuai.xi MSIF_CPU, \ 140*53ee8cc1Swenshuai.xi MSIF_XC_EX_LIB_CODE , /* IP__ */ \ 141*53ee8cc1Swenshuai.xi MSIF_XC_EX_LIBVER , /* 0.0 ~ Z.Z */ \ 142*53ee8cc1Swenshuai.xi MSIF_XC_EX_BUILDNUM , /* 00 ~ 99 */ \ 143*53ee8cc1Swenshuai.xi MSIF_XC_EX_CHANGELIST, /* CL# */ \ 144*53ee8cc1Swenshuai.xi MSIF_OS 145*53ee8cc1Swenshuai.xi 146*53ee8cc1Swenshuai.xi #define XC_EX_INITDATA_VERSION 1 147*53ee8cc1Swenshuai.xi #define XC_EX_OUTPUT_TIMING_ADJUST_VERSION 1 148*53ee8cc1Swenshuai.xi /// PANEL_INFO_EX version of current XC lib 149*53ee8cc1Swenshuai.xi #define XC_EX_PANEL_INFO_EX_VERSION 2 150*53ee8cc1Swenshuai.xi /// hw 2d to 3d para version 151*53ee8cc1Swenshuai.xi #define XC_EX_HW2DTO3DPARA_VERSION 2 152*53ee8cc1Swenshuai.xi /// 3d detect format para version 153*53ee8cc1Swenshuai.xi #define XC_EX_DETECT3DFORMATPARA_VERSION 1 154*53ee8cc1Swenshuai.xi 155*53ee8cc1Swenshuai.xi /// ApiStatusEX version of current XC lib 156*53ee8cc1Swenshuai.xi /// Define below to distinguish from API_PNLSTATUS_EX_VERSION 157*53ee8cc1Swenshuai.xi #define XC_EX_APISTATUS_EX_VERSION 5 158*53ee8cc1Swenshuai.xi //#define API_STATUS_EX_VERSION XC_EX_APISTATUS_EX_VERSION 159*53ee8cc1Swenshuai.xi 160*53ee8cc1Swenshuai.xi /// 3d fp info version of current XC lib 161*53ee8cc1Swenshuai.xi #define XC_EX_3D_FPINFOPARA_VERSION 1 162*53ee8cc1Swenshuai.xi /// report pixel info version of current XC lib 163*53ee8cc1Swenshuai.xi #define XC_EX_REPORT_PIXELINFO_VERSION 1 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xi /// osdc disp info version of current XC lib 166*53ee8cc1Swenshuai.xi #define XC_EX_ODSC_DISPINFO_VERSIN 1 167*53ee8cc1Swenshuai.xi 168*53ee8cc1Swenshuai.xi #define _XC_EX_BIT(_bit_) (1 << (_bit_)) 169*53ee8cc1Swenshuai.xi 170*53ee8cc1Swenshuai.xi //---------------------------- 171*53ee8cc1Swenshuai.xi // Return value 172*53ee8cc1Swenshuai.xi //---------------------------- 173*53ee8cc1Swenshuai.xi 174*53ee8cc1Swenshuai.xi /// XC Return Value 175*53ee8cc1Swenshuai.xi typedef enum 176*53ee8cc1Swenshuai.xi { 177*53ee8cc1Swenshuai.xi E_XC_EX_RET_FAIL = 0, ///<Fail 178*53ee8cc1Swenshuai.xi E_XC_EX_RET_OK, ///<OK 179*53ee8cc1Swenshuai.xi E_XC_EX_RET_FAIL_FUN_NOT_SUPPORT, ///<Fail 180*53ee8cc1Swenshuai.xi E_XC_EX_RET_FAIL_ENUM_NOT_SUPPORT, ///<Fail 181*53ee8cc1Swenshuai.xi E_XC_EX_RET_FAIL_INVALID_PARAMETER, ///<Fail 182*53ee8cc1Swenshuai.xi } XC_EX_RETURN_VALUE; 183*53ee8cc1Swenshuai.xi 184*53ee8cc1Swenshuai.xi //---------------------------- 185*53ee8cc1Swenshuai.xi // Debug Switch 186*53ee8cc1Swenshuai.xi //---------------------------- 187*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_OFF (0x0000) ///< Turn off 188*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_SETWINDOW (0x0001) ///< Set Window 189*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_SETTIMING (0x0002) ///< LPLL / SetPanelTiming 190*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_SYNCDETECT (0x0004) ///< Sync detection ======>Not using it by now 191*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_MUX (0x0008) ///< Mux / Path Creation 192*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_MODEPARSE (0x0010) ///< Mode Parse ======>Not using it by now 193*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_HDMIMONITOR (0x0020) ///< HDMI and Package Monitor ===>Not using it by now 194*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_AUTOGEOMETRY (0x0040) ///< Auto Geometry / Auto Calibration 195*53ee8cc1Swenshuai.xi #define XC_EX_DGBLEVEL_CROPCALC (0x0080) ///< Crop Window / Memory / OPM / IPM calculation 196*53ee8cc1Swenshuai.xi 197*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_SETTIMING_ISR (0x0100) ///< ISR / SetPanelTiming 198*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_DWIN_SETWINDOW (0x0200) ///< DWIN / Set Window 199*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_FUNCTION_TRACE (0x0400) ///< Trace XC function using status 200*53ee8cc1Swenshuai.xi #define XC_EX_DBGLEVEL_PARAMETER_TRACE (0x0800) ///< Trace XC function parameter 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xi //---------------------------- 203*53ee8cc1Swenshuai.xi // Input signal detect 204*53ee8cc1Swenshuai.xi //---------------------------- 205*53ee8cc1Swenshuai.xi 206*53ee8cc1Swenshuai.xi #define XC_EX_MD_VSYNC_POR_BIT _XC_EX_BIT(0) ///< VSnc polarity bit(0/1 = positive/negative) 207*53ee8cc1Swenshuai.xi #define XC_EX_MD_HSYNC_POR_BIT _XC_EX_BIT(1) ///< HSync polarity bit(0/1 = positive/negative) 208*53ee8cc1Swenshuai.xi #define XC_EX_MD_HSYNC_LOSS_BIT _XC_EX_BIT(2) ///< HSync loss bit 209*53ee8cc1Swenshuai.xi #define XC_EX_MD_VSYNC_LOSS_BIT _XC_EX_BIT(3) ///< VSync loss bit 210*53ee8cc1Swenshuai.xi #define XC_EX_MD_INTERLACE_BIT _XC_EX_BIT(4) ///< Interlace mode 211*53ee8cc1Swenshuai.xi #define XC_EX_MD_USER_MODE_BIT _XC_EX_BIT(7) ///< User new mode (Not found in mode table) 212*53ee8cc1Swenshuai.xi #define XC_EX_MD_SYNC_LOSS (XC_EX_MD_HSYNC_LOSS_BIT | XC_EX_MD_VSYNC_LOSS_BIT) ///< VSync & HSync loss bit 213*53ee8cc1Swenshuai.xi 214*53ee8cc1Swenshuai.xi //---------------------------- 215*53ee8cc1Swenshuai.xi // 3D macros 216*53ee8cc1Swenshuai.xi //---------------------------- 217*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_PRESCALE_VONEHDSIZE (540) 218*53ee8cc1Swenshuai.xi 219*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2I_FRAME_VSIZE (1080) 220*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2I_FIELD_VSIZE (540) 221*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2I_HSIZE (1920) 222*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2I_VACT_SPACE1 (23) 223*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2I_VACT_SPACE2 (22) 224*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2I_VSIZE (XC_EX_DOUBLEHD_1080X2I_FRAME_VSIZE*2+XC_EX_DOUBLEHD_1080X2I_VACT_SPACE1*2+XC_EX_DOUBLEHD_1080X2I_VACT_SPACE2) 225*53ee8cc1Swenshuai.xi 226*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2P_VSIZE (2205) 227*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2P_FRAME_VSIZE (1080) 228*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2P_HSIZE (1920) 229*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_1080X2P_GARBAGE_VSIZE (45) 230*53ee8cc1Swenshuai.xi 231*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_720X2P_VSIZE (1470) 232*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_720X2P_FRAME_VSIZE (720) 233*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_720X2P_HSIZE (1280) 234*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_720X2P_GARBAGE_VSIZE (30) 235*53ee8cc1Swenshuai.xi 236*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2P_VSIZE (1201) 237*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2P_FRAME_VSIZE (576) 238*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2P_HSIZE (720) 239*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2P_GARBAGE_VSIZE (49) 240*53ee8cc1Swenshuai.xi 241*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2I_FRAME_VSIZE (576) 242*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2I_FIELD_VSIZE (288) 243*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2I_HSIZE (720) 244*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2I_VACT_SPACE1 (21) 245*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2I_VACT_SPACE2 (22) 246*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_576X2I_VSIZE (XC_EX_DOUBLEHD_576X2I_FRAME_VSIZE*2+XC_EX_DOUBLEHD_576X2I_VACT_SPACE1*2+XC_EX_DOUBLEHD_576X2I_VACT_SPACE2) 247*53ee8cc1Swenshuai.xi 248*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2P_VSIZE (1005) 249*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2P_FRAME_VSIZE (480) 250*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2P_HSIZE (720) 251*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2P_GARBAGE_VSIZE (45) 252*53ee8cc1Swenshuai.xi 253*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2I_FRAME_VSIZE (480) 254*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2I_FIELD_VSIZE (240) 255*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2I_HSIZE (720) 256*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2I_VACT_SPACE1 (23) 257*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2I_VACT_SPACE2 (22) 258*53ee8cc1Swenshuai.xi #define XC_EX_DOUBLEHD_480X2I_VSIZE (XC_EX_DOUBLEHD_480X2I_FRAME_VSIZE*2+XC_EX_DOUBLEHD_480X2I_VACT_SPACE1*2+XC_EX_DOUBLEHD_480X2I_VACT_SPACE2) 259*53ee8cc1Swenshuai.xi 260*53ee8cc1Swenshuai.xi // Field Interleave 261*53ee8cc1Swenshuai.xi #define XC_EX_FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE (1080) 262*53ee8cc1Swenshuai.xi #define XC_EX_FIELD_INTERLEAVE_1080X2I_FIELD_VISZE (540) 263*53ee8cc1Swenshuai.xi #define XC_EX_FIELD_INTERLEAVE_1080X2I_HISZE (1920) 264*53ee8cc1Swenshuai.xi #define XC_EX_FIELD_INTERLEAVE_1080X2I_VACT_SPACE (23) 265*53ee8cc1Swenshuai.xi #define XC_EX_FIELD_INTERLEAVE_1080X2I_VISZE (XC_EX_FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE+XC_EX_FIELD_INTERLEAVE_1080X2I_VACT_SPACE) 266*53ee8cc1Swenshuai.xi 267*53ee8cc1Swenshuai.xi 268*53ee8cc1Swenshuai.xi ///< When disable panel_info_ex, this means disable all valid panel info 269*53ee8cc1Swenshuai.xi #define XC_EX_PANEL_INFO_EX_INVALID_ALL 0xFFFF 270*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 271*53ee8cc1Swenshuai.xi // Type and Structure 272*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 273*53ee8cc1Swenshuai.xi 274*53ee8cc1Swenshuai.xi //---------------------------- 275*53ee8cc1Swenshuai.xi // Common 276*53ee8cc1Swenshuai.xi //---------------------------- 277*53ee8cc1Swenshuai.xi 278*53ee8cc1Swenshuai.xi /// Define window type 279*53ee8cc1Swenshuai.xi typedef enum 280*53ee8cc1Swenshuai.xi { 281*53ee8cc1Swenshuai.xi E_XC_EX_MAIN_WINDOW=0, ///< main window if with PIP or without PIP 282*53ee8cc1Swenshuai.xi E_XC_EX_SUB_WINDOW=1, ///< sub window if PIP 283*53ee8cc1Swenshuai.xi E_XC_EX_MAX_WINDOW /// The max support window 284*53ee8cc1Swenshuai.xi } XC_EX_SCALER_WIN; 285*53ee8cc1Swenshuai.xi 286*53ee8cc1Swenshuai.xi #define XC_EX_PIP_WINDOWS E_XC_EX_MAX_WINDOW 287*53ee8cc1Swenshuai.xi 288*53ee8cc1Swenshuai.xi /// Define Window position and size attribute 289*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 290*53ee8cc1Swenshuai.xi { 291*53ee8cc1Swenshuai.xi MS_U16 x; ///<start x of the window 292*53ee8cc1Swenshuai.xi MS_U16 y; ///<start y of the window 293*53ee8cc1Swenshuai.xi MS_U16 width; ///<width of the window 294*53ee8cc1Swenshuai.xi MS_U16 height; ///<height of the window 295*53ee8cc1Swenshuai.xi } XC_EX_WINDOW_TYPE; 296*53ee8cc1Swenshuai.xi 297*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 298*53ee8cc1Swenshuai.xi // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 299*53ee8cc1Swenshuai.xi // This is abstract input source for XC library. If you want to add another one. 300*53ee8cc1Swenshuai.xi // Please contace with XC member 301*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 302*53ee8cc1Swenshuai.xi 303*53ee8cc1Swenshuai.xi /// Define Input type 304*53ee8cc1Swenshuai.xi typedef enum 305*53ee8cc1Swenshuai.xi { 306*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_VGA, ///<0 VGA input 307*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_TV, ///<1 TV input 308*53ee8cc1Swenshuai.xi 309*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS, ///<2 AV 1 310*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS2, ///<3 AV 2 311*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS3, ///<4 AV 3 312*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS4, ///<5 AV 4 313*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS5, ///<6 AV 5 314*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS6, ///<7 AV 6 315*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS7, ///<8 AV 7 316*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS8, ///<9 AV 8 317*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_CVBS_MAX, ///<10 AV max 318*53ee8cc1Swenshuai.xi 319*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SVIDEO, ///<11 S-video 1 320*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SVIDEO2, ///<12 S-video 2 321*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SVIDEO3, ///<13 S-video 3 322*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SVIDEO4, ///<14 S-video 4 323*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SVIDEO_MAX, ///<15 S-video max 324*53ee8cc1Swenshuai.xi 325*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_YPBPR, ///<16 Component 1 326*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_YPBPR2, ///<17 Component 2 327*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_YPBPR3, ///<18 Component 3 328*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_YPBPR_MAX, ///<19 Component max 329*53ee8cc1Swenshuai.xi 330*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SCART, ///<20 Scart 1 331*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SCART2, ///<21 Scart 2 332*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SCART_MAX, ///<22 Scart max 333*53ee8cc1Swenshuai.xi 334*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_HDMI, ///<23 HDMI 1 335*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_HDMI2, ///<24 HDMI 2 336*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_HDMI3, ///<25 HDMI 3 337*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_HDMI4, ///<26 HDMI 4 338*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_HDMI_MAX, ///<27 HDMI max 339*53ee8cc1Swenshuai.xi 340*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DTV, ///<28 DTV 341*53ee8cc1Swenshuai.xi 342*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DVI, ///<29 DVI 1 343*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DVI2, ///<30 DVI 2 344*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DVI3, ///<31 DVI 2 345*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DVI4, ///<32 DVI 4 346*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DVI_MAX, ///<33 DVI max 347*53ee8cc1Swenshuai.xi 348*53ee8cc1Swenshuai.xi // Application source 349*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_STORAGE, ///<34 Storage 350*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_KTV, ///<35 KTV 351*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_JPEG, ///<36 JPEG 352*53ee8cc1Swenshuai.xi 353*53ee8cc1Swenshuai.xi //Support Dual MVOP port 354*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DTV2, ///<37 DTV 355*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_STORAGE2, ///<38 Storage 356*53ee8cc1Swenshuai.xi 357*53ee8cc1Swenshuai.xi //Support Third MVOP port 358*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_DTV3, ///<39 DTV 359*53ee8cc1Swenshuai.xi 360*53ee8cc1Swenshuai.xi // Support OP capture 361*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_SCALER_OP, ///<40 scaler OP 362*53ee8cc1Swenshuai.xi 363*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_VGA2, /// <41 VGA2 364*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_VGA3, /// <42 VGA3 365*53ee8cc1Swenshuai.xi 366*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_NUM, ///<43 number of the source 367*53ee8cc1Swenshuai.xi E_XC_EX_INPUT_SOURCE_NONE = E_XC_EX_INPUT_SOURCE_NUM, ///<NULL input 368*53ee8cc1Swenshuai.xi } XC_EX_INPUT_SOURCE_TYPE; 369*53ee8cc1Swenshuai.xi 370*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeAV(x) (((x)>=E_XC_EX_INPUT_SOURCE_CVBS)&&((x)<=E_XC_EX_INPUT_SOURCE_CVBS_MAX))/// x is AV 371*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeSV(x) (((x)>=E_XC_EX_INPUT_SOURCE_SVIDEO)&&((x)<=E_XC_EX_INPUT_SOURCE_SVIDEO_MAX))///< x is SV 372*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeATV(x) ((x)==E_XC_EX_INPUT_SOURCE_TV)///< x is ATV 373*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeScart(x) (((x)>=E_XC_EX_INPUT_SOURCE_SCART)&&((x)<=E_XC_EX_INPUT_SOURCE_SCART_MAX))///< x is Scart 374*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeHDMI(x) (((x)>=E_XC_EX_INPUT_SOURCE_HDMI)&&((x)<=E_XC_EX_INPUT_SOURCE_HDMI_MAX))///< x is HDMI 375*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeVga(x) ((x)==E_XC_EX_INPUT_SOURCE_VGA)///< x is VGA 376*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeYPbPr(x) (((x)>=E_XC_EX_INPUT_SOURCE_YPBPR)&&((x)<=E_XC_EX_INPUT_SOURCE_YPBPR_MAX))///< x is YPbPr 377*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeDTV(x) (((x)==E_XC_EX_INPUT_SOURCE_DTV) || ((x)==E_XC_EX_INPUT_SOURCE_DTV2) || ((x)==E_XC_EX_INPUT_SOURCE_DTV3))///< x is DTV 378*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeDVI(x) (((x)>=E_XC_EX_INPUT_SOURCE_DVI)&&((x)<=E_XC_EX_INPUT_SOURCE_DVI_MAX))///< x is DVI 379*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeJpeg(x) ((x)==E_XC_EX_INPUT_SOURCE_JPEG)///< x is JPEG 380*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeStorage(x) (((x)==E_XC_EX_INPUT_SOURCE_STORAGE) || ((x)==E_XC_EX_INPUT_SOURCE_STORAGE2) || XC_EX_IsSrcTypeJpeg(x))///< x is Storage 381*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeDigitalVD(x) ( XC_EX_IsSrcTypeAV(x)||XC_EX_IsSrcTypeSV(x)||XC_EX_IsSrcTypeATV(x)||XC_EX_IsSrcTypeScart(x))///< x is VD 382*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeAnalog(x) ( XC_EX_IsSrcTypeVga(x)|| XC_EX_IsSrcTypeYPbPr(x))///< x is Analog 383*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeVideo(x) ( XC_EX_IsSrcTypeYPbPr(x) || XC_EX_IsSrcTypeATV(x) || XC_EX_IsSrcTypeAV(x) || XC_EX_IsSrcTypeSV(x) || XC_EX_IsSrcTypeScart(x) || XC_EX_IsSrcTypeDTV(x) ) ///< x is Video 384*53ee8cc1Swenshuai.xi #define XC_EX_IsSrcTypeCapture(x) ((x)==E_XC_EX_INPUT_SOURCE_SCALER_OP)///< x is scaler OP 385*53ee8cc1Swenshuai.xi 386*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 387*53ee8cc1Swenshuai.xi // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 388*53ee8cc1Swenshuai.xi // This is abstract output source for XC library. If you want to add another one. 389*53ee8cc1Swenshuai.xi // Please contace with XC member 390*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 391*53ee8cc1Swenshuai.xi 392*53ee8cc1Swenshuai.xi /// Define XC device ID 393*53ee8cc1Swenshuai.xi typedef struct 394*53ee8cc1Swenshuai.xi { 395*53ee8cc1Swenshuai.xi MS_U32 u32Version; 396*53ee8cc1Swenshuai.xi MS_U32 u32Id; 397*53ee8cc1Swenshuai.xi } XC_DEVICE_ID; 398*53ee8cc1Swenshuai.xi 399*53ee8cc1Swenshuai.xi /// Define XC device enum 400*53ee8cc1Swenshuai.xi typedef enum 401*53ee8cc1Swenshuai.xi { 402*53ee8cc1Swenshuai.xi E_XC_EX_DEVICE0, 403*53ee8cc1Swenshuai.xi E_XC_EX_DEVICE1, 404*53ee8cc1Swenshuai.xi E_XC_EX_DEVICE_MAX, 405*53ee8cc1Swenshuai.xi } XC_EX_DEVICE_NUM; 406*53ee8cc1Swenshuai.xi 407*53ee8cc1Swenshuai.xi /// Define output type 408*53ee8cc1Swenshuai.xi typedef enum 409*53ee8cc1Swenshuai.xi { 410*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_NONE = 0, ///<NULL output 411*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_SCALER_MAIN_WINDOW, ///<output to Scaler main window 412*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_SCALER_SUB_WINDOW = 10, ///<output to Scaler sub window 413*53ee8cc1Swenshuai.xi 414*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_CVBS1 = 20, ///<output to CVBS1 415*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_CVBS2, ///<output to CVBS2 416*53ee8cc1Swenshuai.xi // Reserved area 417*53ee8cc1Swenshuai.xi 418*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_YPBPR0 = 40, ///<output to YPBPR0 419*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_YPBPR1, ///<output to YPBPR1 420*53ee8cc1Swenshuai.xi // Reserved area 421*53ee8cc1Swenshuai.xi 422*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_HDMI1 = 60, ///<output to HDMI1 423*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_HDMI2, ///<output to HDMI2 424*53ee8cc1Swenshuai.xi 425*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_OFFLINE_DETECT = 80, ///<output to OFFLINE detect 426*53ee8cc1Swenshuai.xi 427*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_SCALER_DWIN = 100, ///<output to Dwin 428*53ee8cc1Swenshuai.xi 429*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUT_NUM, ///<number of outputs 430*53ee8cc1Swenshuai.xi }XC_EX_DEST_TYPE; 431*53ee8cc1Swenshuai.xi 432*53ee8cc1Swenshuai.xi 433*53ee8cc1Swenshuai.xi /// Define DeInterlace mode 434*53ee8cc1Swenshuai.xi typedef enum 435*53ee8cc1Swenshuai.xi { 436*53ee8cc1Swenshuai.xi 437*53ee8cc1Swenshuai.xi E_XC_EX_DEINT_OFF=0, ///<deinterlace mode off 438*53ee8cc1Swenshuai.xi E_XC_EX_DEINT_2DDI_BOB, ///<deinterlace mode: BOB 439*53ee8cc1Swenshuai.xi E_XC_EX_DEINT_2DDI_AVG, ///<deinterlace mode: AVG 440*53ee8cc1Swenshuai.xi E_XC_EX_DEINT_3DDI_HISTORY, ///<deinterlace mode: HISTORY // 24 bit 441*53ee8cc1Swenshuai.xi E_XC_EX_DEINT_3DDI, ///<deinterlace mode:3DDI// 16 bit 442*53ee8cc1Swenshuai.xi } XC_EX_DEINTERLACE_MODE; 443*53ee8cc1Swenshuai.xi 444*53ee8cc1Swenshuai.xi 445*53ee8cc1Swenshuai.xi /// Define the members of IP Sync Status 446*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 447*53ee8cc1Swenshuai.xi { 448*53ee8cc1Swenshuai.xi MS_U8 u8SyncStatus; ///< IP Sync status: refer to MD_VSYNC_POR_BIT, etc 449*53ee8cc1Swenshuai.xi MS_U16 u16Hperiod; ///<H Period 450*53ee8cc1Swenshuai.xi MS_U16 u16Vtotal; ///<Vertcal total 451*53ee8cc1Swenshuai.xi } XC_EX_IP_SYNC_STATUS; 452*53ee8cc1Swenshuai.xi 453*53ee8cc1Swenshuai.xi /// Define Freerun color 454*53ee8cc1Swenshuai.xi typedef enum 455*53ee8cc1Swenshuai.xi { 456*53ee8cc1Swenshuai.xi E_XC_EX_FREE_RUN_COLOR_BLACK, 457*53ee8cc1Swenshuai.xi E_XC_EX_FREE_RUN_COLOR_WHITE, 458*53ee8cc1Swenshuai.xi E_XC_EX_FREE_RUN_COLOR_BLUE, 459*53ee8cc1Swenshuai.xi E_XC_EX_FREE_RUN_COLOR_RED, 460*53ee8cc1Swenshuai.xi E_XC_EX_FREE_RUN_COLOR_GREEN, 461*53ee8cc1Swenshuai.xi E_XC_EX_FREE_RUN_COLOR_MAX, 462*53ee8cc1Swenshuai.xi } XC_EX_FREERUN_COLOR; 463*53ee8cc1Swenshuai.xi 464*53ee8cc1Swenshuai.xi /// Define which panel output timing change mode is used to change VFreq for same panel 465*53ee8cc1Swenshuai.xi typedef enum 466*53ee8cc1Swenshuai.xi { 467*53ee8cc1Swenshuai.xi E_XC_EX_PNL_CHG_DCLK = 0, ///<change output DClk to change Vfreq. 468*53ee8cc1Swenshuai.xi E_XC_EX_PNL_CHG_HTOTAL = 1, ///<change H total to change Vfreq. 469*53ee8cc1Swenshuai.xi E_XC_EX_PNL_CHG_VTOTAL = 2, ///<change V total to change Vfreq. 470*53ee8cc1Swenshuai.xi } XC_EX_PNL_OUT_TIMING_MODE; 471*53ee8cc1Swenshuai.xi 472*53ee8cc1Swenshuai.xi typedef enum 473*53ee8cc1Swenshuai.xi { 474*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_TTL, ///< TTL type 475*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_LVDS, ///< LVDS type 476*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_RSDS, ///< RSDS type 477*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS, ///< TCON //E_XC_EX_PNL_LPLL_MINILVDS_6P_2Link 478*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_ANALOG_MINILVDS, ///< Analog TCON 479*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_DIGITAL_MINILVDS, ///< Digital TCON 480*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MFC, ///< Ursa (TTL output to Ursa) 481*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_DAC_I, ///< DAC output 482*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_DAC_P, ///< DAC output 483*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_PDPLVDS, ///< For PDP(Vsync use Manually MODE) 484*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_EXT, 485*53ee8cc1Swenshuai.xi } XC_EX_PNL_LPLL_TYPE; 486*53ee8cc1Swenshuai.xi 487*53ee8cc1Swenshuai.xi 488*53ee8cc1Swenshuai.xi typedef enum 489*53ee8cc1Swenshuai.xi { 490*53ee8cc1Swenshuai.xi 491*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_EPI34_8P = E_XC_EX_PNL_LPLL_EXT, 492*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_EPI28_8P, 493*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_EPI34_6P, 494*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_EPI28_6P, 495*53ee8cc1Swenshuai.xi 496*53ee8cc1Swenshuai.xi ///< replace this with E_XC_EX_PNL_LPLL_MINILVD 497*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_5P_2L, 498*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_4P_2L, 499*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_3P_2L, 500*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_6P_1L, 501*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_5P_1L, 502*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_4P_1L, 503*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_3P_1L, 504*53ee8cc1Swenshuai.xi 505*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_HS_LVDS, ///< High speed LVDS 506*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_HF_LVDS, ///< High Freqquency LVDS 507*53ee8cc1Swenshuai.xi 508*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_TTL_TCON, 509*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_3P_8BIT, ///< 2 channel, 3 pair, 8 bits 510*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_4P_8BIT, ///< 2 channel, 4 pair, 8 bits 511*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_5P_8BIT, ///< 2 channel, 5 pair, 8 bits 512*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_6P_8BIT, ///< 2 channel, 6 pair, 8 bits 513*53ee8cc1Swenshuai.xi 514*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_3P_8BIT, ///< 1 channel, 3 pair, 8 bits 515*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_4P_8BIT, ///< 1 channel, 4 pair, 8 bits 516*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_5P_8BIT, ///< 1 channel, 5 pair, 8 bits 517*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_6P_8BIT, ///< 1 channel, 6 pair, 8 bits 518*53ee8cc1Swenshuai.xi 519*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_3P_6BIT, ///< 2 channel, 3 pari, 6 bits 520*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_4P_6BIT, ///< 2 channel, 4 pari, 6 bits 521*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_5P_6BIT, ///< 2 channel, 5 pari, 6 bits 522*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_2CH_6P_6BIT, ///< 2 channel, 6 pari, 6 bits 523*53ee8cc1Swenshuai.xi 524*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_3P_6BIT, ///< 1 channel, 3 pair, 6 bits 525*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_4P_6BIT, ///< 1 channel, 4 pair, 6 bits 526*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_5P_6BIT, ///< 1 channel, 5 pair, 6 bits 527*53ee8cc1Swenshuai.xi E_XC_EX_PNL_LPLL_MINILVDS_1CH_6P_6BIT, ///< 1 channel, 6 pair, 6 bits 528*53ee8cc1Swenshuai.xi 529*53ee8cc1Swenshuai.xi } XC_EX_PNL_LPLL_EXT_TYPE; 530*53ee8cc1Swenshuai.xi 531*53ee8cc1Swenshuai.xi typedef enum 532*53ee8cc1Swenshuai.xi { 533*53ee8cc1Swenshuai.xi E_XC_EX_MOD_OUTPUT_SINGLE = 0, ///< single channel 534*53ee8cc1Swenshuai.xi E_XC_EX_MOD_OUTPUT_DUAL = 1, ///< dual channel 535*53ee8cc1Swenshuai.xi 536*53ee8cc1Swenshuai.xi E_XC_EX_MOD_OUTPUT_QUAD = 2, ///< quad channel 537*53ee8cc1Swenshuai.xi 538*53ee8cc1Swenshuai.xi } XC_EX_OUTPUT_MODE; 539*53ee8cc1Swenshuai.xi 540*53ee8cc1Swenshuai.xi typedef enum 541*53ee8cc1Swenshuai.xi { 542*53ee8cc1Swenshuai.xi E_XC_EX_VFREQ_50HZ = 0x00, 543*53ee8cc1Swenshuai.xi E_XC_EX_VFREQ_60HZ = 0x01, 544*53ee8cc1Swenshuai.xi E_XC_EX_VFREQ_FROM_SRC = 0x02, 545*53ee8cc1Swenshuai.xi E_XC_EX_VFREQ_FROM_PANEL = 0x03, 546*53ee8cc1Swenshuai.xi } XC_EX_VFREQ_SEL; 547*53ee8cc1Swenshuai.xi 548*53ee8cc1Swenshuai.xi /// Sources to VE 549*53ee8cc1Swenshuai.xi typedef enum 550*53ee8cc1Swenshuai.xi { 551*53ee8cc1Swenshuai.xi E_XC_EX_NONE =0x00, 552*53ee8cc1Swenshuai.xi E_XC_EX_IP = 0x01, ///< Scaler IP 553*53ee8cc1Swenshuai.xi E_XC_EX_VOP2 = 0x02, ///< Scaler VOP2 554*53ee8cc1Swenshuai.xi E_XC_EX_BRI = 0x04, ///< Scaler BRI 555*53ee8cc1Swenshuai.xi 556*53ee8cc1Swenshuai.xi /// Please use this for OSD OP video capture!!! 557*53ee8cc1Swenshuai.xi E_XC_EX_OP2 = 0x08, ///< Scaler OP2 - After Blending with OSD 558*53ee8cc1Swenshuai.xi E_XC_EX_GAM = 0x10, ///< Scaler Gamma - Without Blending with OSD 559*53ee8cc1Swenshuai.xi E_XC_EX_DITHER = 0x20, ///< Scaler noise dither - Without Blending with OSD 560*53ee8cc1Swenshuai.xi 561*53ee8cc1Swenshuai.xi /// Please use this for non-OSD OP video capture!!! 562*53ee8cc1Swenshuai.xi E_XC_EX_OVERLAP = 0x40, ///< Scaler color overlap - Without Blending with OSD 563*53ee8cc1Swenshuai.xi E_XC_EX_IP_SUB = 0x80, ///< Scaler IP of sub window 564*53ee8cc1Swenshuai.xi } XC_EX_SOURCE_TO_VE; 565*53ee8cc1Swenshuai.xi 566*53ee8cc1Swenshuai.xi ///Port connect to pin 8 of SCART 567*53ee8cc1Swenshuai.xi typedef enum 568*53ee8cc1Swenshuai.xi { 569*53ee8cc1Swenshuai.xi E_XC_EX_SCARTID_NONE = 0x00, ///< No connection 570*53ee8cc1Swenshuai.xi E_XC_EX_SCARTID_TO_HSYNC0 = 0x01, ///< Pin 8 of SCART connects to Hsync 0 571*53ee8cc1Swenshuai.xi E_XC_EX_SCARTID_TO_HSYNC1 = 0x02, ///< Pin 8 of SCART connects to Hsync 1 572*53ee8cc1Swenshuai.xi E_XC_EX_SCARTID_TO_HSYNC2 = 0x04, ///< Pin 8 of SCART connects to Hsync 2 573*53ee8cc1Swenshuai.xi E_XC_EX_SCARTID_TO_SOG0 = 0x08, ///< Pin 8 of SCART connects to SOG0 574*53ee8cc1Swenshuai.xi E_XC_EX_SCARTID_TO_SOG1 = 0x10, ///< Pin 8 of SCART connects to SOG1 575*53ee8cc1Swenshuai.xi E_XC_EX_SCARTID_TO_SOG2 = 0x20, ///< Pin 8 of SCART connects to SOG2 576*53ee8cc1Swenshuai.xi } XC_EX_SCART_ID_PORT; 577*53ee8cc1Swenshuai.xi 578*53ee8cc1Swenshuai.xi /// Items for query driver or H/W capability. 579*53ee8cc1Swenshuai.xi typedef enum 580*53ee8cc1Swenshuai.xi { 581*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_IMMESWITCH = 0x00000001, ///< return true if H/W support HDMI immeswitch 582*53ee8cc1Swenshuai.xi 583*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_DVI_AUTO_EQ = 0x00000005, ///< return true if driver support Auto EQ. 584*53ee8cc1Swenshuai.xi 585*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_FRC_INSIDE = 0x00000100, ///< return true if scaler driver support FRC (MFC) function. 586*53ee8cc1Swenshuai.xi 587*53ee8cc1Swenshuai.xi } XC_EX_CAPABILITY; 588*53ee8cc1Swenshuai.xi 589*53ee8cc1Swenshuai.xi typedef enum 590*53ee8cc1Swenshuai.xi { 591*53ee8cc1Swenshuai.xi E_XC_EX_IMMESWITCH = 0x00000001, ///< return true if H/W support HDMI immeswitch 592*53ee8cc1Swenshuai.xi 593*53ee8cc1Swenshuai.xi E_XC_EX_DVI_AUTO_EQ = 0x00000002, ///< return true if driver support Auto EQ. 594*53ee8cc1Swenshuai.xi 595*53ee8cc1Swenshuai.xi E_XC_EX_FRC_INSIDE = 0x00000004, ///< return true if scaler driver support FRC (MFC) function. 596*53ee8cc1Swenshuai.xi 597*53ee8cc1Swenshuai.xi E_XC_EX_DIP_CHIP_CAPS = 0x00000008, ///< return dip chip caps. 598*53ee8cc1Swenshuai.xi 599*53ee8cc1Swenshuai.xi E_XC_EX_3D_FBL_CAPS = 0x00000010, ///< return true if chip support fbl 3d.attention:fbl 3d only support sbs to lbl and sbs to sbs 600*53ee8cc1Swenshuai.xi 601*53ee8cc1Swenshuai.xi E_XC_EX_HW_SEAMLESS_ZAPPING = 0x00000020, ///< return true if H/W support seamless zapping 602*53ee8cc1Swenshuai.xi 603*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_DEVICE1 = 0x00000040, ///< return true if H/W support scaler device1 604*53ee8cc1Swenshuai.xi 605*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_DETECT3D_IN3DMODE = 0x00000080, ///< return true if H/W support detecting 3d when already in 3d mode 606*53ee8cc1Swenshuai.xi 607*53ee8cc1Swenshuai.xi E_XC_EX_2DTO3D_VERSION = 0x00000100, ///< return value 2D-to-3D version 608*53ee8cc1Swenshuai.xi 609*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_FORCE_VSP_IN_DS_MODE = 0x00000200, ///< return if H/W support force post-Vscalin-down in DS mode 610*53ee8cc1Swenshuai.xi 611*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_FRCM_MODE = 0x00000400, ///< return if H/W support frcm 612*53ee8cc1Swenshuai.xi 613*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_INTERLACE_OUT = 0x00000800, ///< return if H/W supports interlace output timing 614*53ee8cc1Swenshuai.xi 615*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_4K2K_WITH_PIP = 0x00001000, ///< return if H/W supports output is 4k2k and open pip 616*53ee8cc1Swenshuai.xi 617*53ee8cc1Swenshuai.xi E_XC_EX_SUPPORT_4K2K_60P = 0x00002000, ///< return if H/W supports output is 4k2k_60P timing 618*53ee8cc1Swenshuai.xi 619*53ee8cc1Swenshuai.xi } XC_EX_CAPS; 620*53ee8cc1Swenshuai.xi 621*53ee8cc1Swenshuai.xi typedef enum 622*53ee8cc1Swenshuai.xi { 623*53ee8cc1Swenshuai.xi E_XC_EX_DS_INDEX_MVOP, 624*53ee8cc1Swenshuai.xi E_XC_EX_DS_INDEX_SCALER, 625*53ee8cc1Swenshuai.xi E_XC_EX_DS_INDEX_MAX, 626*53ee8cc1Swenshuai.xi } XC_EX_DS_INDEX_SOURCE; 627*53ee8cc1Swenshuai.xi 628*53ee8cc1Swenshuai.xi /// Define panel information 629*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 630*53ee8cc1Swenshuai.xi { 631*53ee8cc1Swenshuai.xi // XC need below information do to frame lock 632*53ee8cc1Swenshuai.xi 633*53ee8cc1Swenshuai.xi MS_U16 u16HStart; ///<DE H start 634*53ee8cc1Swenshuai.xi 635*53ee8cc1Swenshuai.xi MS_U16 u16VStart; ///<DE V start 636*53ee8cc1Swenshuai.xi 637*53ee8cc1Swenshuai.xi MS_U16 u16Width; ///<DE H width 638*53ee8cc1Swenshuai.xi 639*53ee8cc1Swenshuai.xi MS_U16 u16Height; ///< DE V height 640*53ee8cc1Swenshuai.xi 641*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///<H total 642*53ee8cc1Swenshuai.xi 643*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///<V total 644*53ee8cc1Swenshuai.xi 645*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVFreq; ///<Panel output Vfreq., used in free run 646*53ee8cc1Swenshuai.xi 647*53ee8cc1Swenshuai.xi MS_U8 u8LPLL_Mode; ///<0: single mode, 1: dual mode 648*53ee8cc1Swenshuai.xi XC_EX_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode; ///<Define which panel output timing change mode is used to change VFreq for same panel 649*53ee8cc1Swenshuai.xi 650*53ee8cc1Swenshuai.xi // Later need to refine to use Min/Max SET for PDP panel, but for LCD, it maybe no need to check the Min/Max SET 651*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHTotal; ///<default H total 652*53ee8cc1Swenshuai.xi MS_U16 u16DefaultVTotal; ///<default V total 653*53ee8cc1Swenshuai.xi 654*53ee8cc1Swenshuai.xi MS_U32 u32MinSET; 655*53ee8cc1Swenshuai.xi MS_U32 u32MaxSET; 656*53ee8cc1Swenshuai.xi XC_EX_PNL_LPLL_TYPE eLPLL_Type; /// 657*53ee8cc1Swenshuai.xi } XC_EX_PANEL_INFO; 658*53ee8cc1Swenshuai.xi 659*53ee8cc1Swenshuai.xi 660*53ee8cc1Swenshuai.xi /// Define the extern special panel information for FPLL or other usage 661*53ee8cc1Swenshuai.xi /// Usage: 662*53ee8cc1Swenshuai.xi /// The first 3 members of below structure must be set as their corresponding description 663*53ee8cc1Swenshuai.xi /// The other members are set according to your request, none used members should be cleared to zero 664*53ee8cc1Swenshuai.xi /// Example code of set VTT slowly: 665*53ee8cc1Swenshuai.xi /// XC_PANEL_INFO_EX stPanelInfoEx; 666*53ee8cc1Swenshuai.xi /// memset(&stPanelInfoEx, 0, sizeof(XC_PANEL_INFO_EX)); 667*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u32PanelInfoEx_Version = EX_PANEL_INFO_EX_VERSION; 668*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16PanelInfoEX_Length = sizeof(XC_PANEL_INFO_EX); 669*53ee8cc1Swenshuai.xi /// 670*53ee8cc1Swenshuai.xi /// stPanelInfoEx.bVttStepsValid = TRUE; 671*53ee8cc1Swenshuai.xi /// stPanelInfoEx.bVttDelayValid = TRUE; 672*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VttSteps = xx; //set how many steps u want to set the vtt 673*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VttDelay = xx;// set the delay between steps of setting vtt 674*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VFreq = 500; //this step setting info is only for 50hz 675*53ee8cc1Swenshuai.xi /// if(MApi_XC_EX_SetExPanelInfo(TRUE, &stPanelInfoEx))//Check the set is accepted or not 676*53ee8cc1Swenshuai.xi /// stPanelInfoEx.u16VFreq = 600; //set same steps info for 60 hz 677*53ee8cc1Swenshuai.xi /// if(MApi_XC_EX_SetExPanelInfo(TRUE, &stPanelInfoEx))//Check the set is accepted or not 678*53ee8cc1Swenshuai.xi /// 679*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 680*53ee8cc1Swenshuai.xi { 681*53ee8cc1Swenshuai.xi MS_U32 u32PanelInfoEx_Version; ///<Version of current structure. Please always set to "EX_PANEL_INFO_EX_VERSION" as input 682*53ee8cc1Swenshuai.xi MS_U16 u16PanelInfoEX_Length; ///<Length of this structure, u16PanelInfoEX_Length=sizeof(XC_PANEL_INFO_EX) 683*53ee8cc1Swenshuai.xi MS_U16 u16VFreq; ///<Output Vfreq, unit: (1Hz/10), range 0~EX_PANEL_INFO_EX_INVALID_ALL 684*53ee8cc1Swenshuai.xi ///<If disable ex panel info and u16VFreq = 0xFFFF means disable all valid ex panel info 685*53ee8cc1Swenshuai.xi ///<If disable ex panel info and u16VFreq = 600 means disable the valid ex panel info for 60 hz 686*53ee8cc1Swenshuai.xi MS_U16 u16HTotal; ///<H total of output "u16VFreq" 687*53ee8cc1Swenshuai.xi MS_BOOL bHTotalValid; ///H total setting is valid in this structure 688*53ee8cc1Swenshuai.xi MS_U16 u16VTotal; ///<V total of output "u16VFreq" 689*53ee8cc1Swenshuai.xi MS_BOOL bVTotalValid; ///V total setting is valid in this structure 690*53ee8cc1Swenshuai.xi MS_U32 u32DClk; ///<DCLK of output "u16VFreq", unit: KHz 691*53ee8cc1Swenshuai.xi MS_BOOL bDClkValid; ///DCLK, unit: KHz 692*53ee8cc1Swenshuai.xi MS_U16 u16MinHTotal; ///<Min H total 693*53ee8cc1Swenshuai.xi MS_BOOL bMinHTotalValid; ///Min H total 694*53ee8cc1Swenshuai.xi MS_U16 u16MinVTotal; ///<Min V total 695*53ee8cc1Swenshuai.xi MS_BOOL bMinVTotalValid; ///Min V total 696*53ee8cc1Swenshuai.xi MS_U32 u32MinDClk; ///<Min DCLK, unit: KHz 697*53ee8cc1Swenshuai.xi MS_BOOL bMinDClkValid; ///Min DCLK, unit: KHz 698*53ee8cc1Swenshuai.xi MS_U16 u16MaxHTotal; ///<Max H total 699*53ee8cc1Swenshuai.xi MS_BOOL bMaxHTotalValid; ///Max H total 700*53ee8cc1Swenshuai.xi MS_U16 u16MaxVTotal; ///<Max V total 701*53ee8cc1Swenshuai.xi MS_BOOL bMaxVTotalValid; ///Max V total 702*53ee8cc1Swenshuai.xi MS_U32 u32MaxDClk; ///<Min DCLK, unit: KHz 703*53ee8cc1Swenshuai.xi MS_BOOL bMaxDClkValid; ///Min DCLK, unit: KHz 704*53ee8cc1Swenshuai.xi // sync related 705*53ee8cc1Swenshuai.xi MS_U16 u16HSyncWidth; ///<VOP_01[7:0], PANEL_HSYNC_WIDTH 706*53ee8cc1Swenshuai.xi MS_BOOL bHSyncWidthValid; ///< VOP_01[7:0], PANEL_HSYNC_WIDTH 707*53ee8cc1Swenshuai.xi MS_U16 u16HSyncBackPorch; ///<PANEL_HSYNC_BACK_PORCH, no register setting, provide value for query only 708*53ee8cc1Swenshuai.xi ///<not support Manuel VSync Start/End now 709*53ee8cc1Swenshuai.xi ///<VOP_02[10:0] VSync start = Vtt - VBackPorch - VSyncWidth 710*53ee8cc1Swenshuai.xi ///<VOP_03[10:0] VSync end = Vtt - VBackPorch 711*53ee8cc1Swenshuai.xi MS_BOOL bHSyncBackPorchValid; 712*53ee8cc1Swenshuai.xi MS_U16 u16VSyncWidth; ///<define PANEL_VSYNC_WIDTH 713*53ee8cc1Swenshuai.xi MS_BOOL bVSyncWidthValid; 714*53ee8cc1Swenshuai.xi MS_U16 u16VSyncBackPorch; ///<define PANEL_VSYNC_BACK_PORCH 715*53ee8cc1Swenshuai.xi MS_BOOL bVSyncBackPorchValid; 716*53ee8cc1Swenshuai.xi //step by step adjustment when 50/60 HZ Output switch 717*53ee8cc1Swenshuai.xi MS_U16 u16HttSteps; ///<Number of adjusting step from Old Htt to new htt 718*53ee8cc1Swenshuai.xi MS_BOOL bHttStepsValid; 719*53ee8cc1Swenshuai.xi MS_U16 u16HttDelay; ///<Delay time in two steps 720*53ee8cc1Swenshuai.xi MS_BOOL bHttDelayValid; 721*53ee8cc1Swenshuai.xi MS_U16 u16VttSteps; ///<Number of adjusting step from Old Htt to new htt 722*53ee8cc1Swenshuai.xi MS_BOOL bVttStepsValid; 723*53ee8cc1Swenshuai.xi MS_U16 u16VttDelay; ///<Delay time in two steps 724*53ee8cc1Swenshuai.xi MS_BOOL bVttDelayValid; 725*53ee8cc1Swenshuai.xi MS_U16 u16DclkSteps; ///<Number of adjusting step from Old Htt to new htt 726*53ee8cc1Swenshuai.xi MS_BOOL bDclkStepsValid; 727*53ee8cc1Swenshuai.xi MS_U16 u16DclkDelay; ///<Delay time in two steps 728*53ee8cc1Swenshuai.xi MS_BOOL bDclkDelayValid; ///<DclkDelay setting is valid in this structure 729*53ee8cc1Swenshuai.xi }XC_EX_PANEL_INFO_EX; 730*53ee8cc1Swenshuai.xi 731*53ee8cc1Swenshuai.xi /// Define new panel information 732*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 733*53ee8cc1Swenshuai.xi { 734*53ee8cc1Swenshuai.xi MS_U32 u32TimingAdjustSetting_version; ///<Version of current structure. Please always set this value as XC_EX_OUTPUT_TIMING_ADJUST_VERSION 735*53ee8cc1Swenshuai.xi 736*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Step; ///<Number of adjusting step from Old Htt to new htt 737*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Delay; ///<Delay time in two steps 738*53ee8cc1Swenshuai.xi MS_U16 u16HTotal_Ratio; ///<Ratio of Htt for change to specific framerate (X10). 739*53ee8cc1Swenshuai.xi 740*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Step; ///<Number of adjusting step from Old Vtt to new Vtt 741*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Delay; ///<Delay time in two steps 742*53ee8cc1Swenshuai.xi MS_U16 u16VTotal_Ratio; ///<Ratio of Vtt for change to specific framerate (X10). 743*53ee8cc1Swenshuai.xi 744*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Step; ///<Number of adjusting step from Old Dclk to new Dclk 745*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Delay; ///<Delay time in two steps 746*53ee8cc1Swenshuai.xi MS_U16 u16Dclk_Ratio; ///<Ratio of Dclk for change to specific framerate (X10). 747*53ee8cc1Swenshuai.xi 748*53ee8cc1Swenshuai.xi } XC_EX_OUTPUT_TIMING_ADJUST_SETTING; 749*53ee8cc1Swenshuai.xi 750*53ee8cc1Swenshuai.xi /// Define the initial data for XC 751*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 752*53ee8cc1Swenshuai.xi { 753*53ee8cc1Swenshuai.xi MS_U32 u32XC_version; ///<Version of current structure. 754*53ee8cc1Swenshuai.xi // system related 755*53ee8cc1Swenshuai.xi MS_U32 u32XTAL_Clock; ///<Crystal clock in Hz 756*53ee8cc1Swenshuai.xi 757*53ee8cc1Swenshuai.xi // frame buffer related 758*53ee8cc1Swenshuai.xi MS_PHY u32Main_FB_Start_Addr; ///<scaler main window frame buffer start address, absolute without any alignment 759*53ee8cc1Swenshuai.xi MS_PHY u32Main_FB_Size; ///<scaler main window frame buffer size, the unit is BYTES 760*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FB_Start_Addr; ///<scaler sub window frame buffer start address, absolute without any alignment 761*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FB_Size; ///<scaler sub window frame buffer size, the unit is BYTES 762*53ee8cc1Swenshuai.xi 763*53ee8cc1Swenshuai.xi // HDMI related, will be moved to HDMI module 764*53ee8cc1Swenshuai.xi MS_BOOL bCEC_Use_Interrupt; ///<CEC use interrupt or not, if not, will use polling 765*53ee8cc1Swenshuai.xi 766*53ee8cc1Swenshuai.xi // This is related to chip package. ( Share Ground / Non-Share Ground ) 767*53ee8cc1Swenshuai.xi MS_BOOL bIsShareGround; 768*53ee8cc1Swenshuai.xi 769*53ee8cc1Swenshuai.xi // function related 770*53ee8cc1Swenshuai.xi MS_BOOL bEnableIPAutoCoast; ///<Enable IP auto coast 771*53ee8cc1Swenshuai.xi 772*53ee8cc1Swenshuai.xi MS_BOOL bMirror; ///<mirror mode 773*53ee8cc1Swenshuai.xi 774*53ee8cc1Swenshuai.xi // panel related 775*53ee8cc1Swenshuai.xi XC_EX_PANEL_INFO stPanelInfo; ///<panel infomation 776*53ee8cc1Swenshuai.xi 777*53ee8cc1Swenshuai.xi // DLC 778*53ee8cc1Swenshuai.xi MS_BOOL bDLC_Histogram_From_VBlank; ///<If set to TRUE, the Y max/min report value is read from V blanking area 779*53ee8cc1Swenshuai.xi 780*53ee8cc1Swenshuai.xi // This is related to layout 781*53ee8cc1Swenshuai.xi MS_U16 eScartIDPort_Sel; ///<This is port selection (E_XC_SCART_ID_PORT) of Scart ID pin 8 782*53ee8cc1Swenshuai.xi 783*53ee8cc1Swenshuai.xi // frcm frame buffer related 784*53ee8cc1Swenshuai.xi MS_PHY u32Main_FRCM_FB_Start_Addr; ///<scaler main window frcm frame buffer start address, absolute without any alignment 785*53ee8cc1Swenshuai.xi MS_PHY u32Main_FRCM_FB_Size; ///<scaler main window frcm frame buffer size, the unit is BYTES 786*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FRCM_FB_Start_Addr; ///<scaler sub window frcm frame buffer start address, absolute without any alignment 787*53ee8cc1Swenshuai.xi MS_PHY u32Sub_FRCM_FB_Size; ///<scaler sub window frcm frame buffer size, the unit is BYTES 788*53ee8cc1Swenshuai.xi } XC_EX_INITDATA; 789*53ee8cc1Swenshuai.xi 790*53ee8cc1Swenshuai.xi /// define generic API infomation 791*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 792*53ee8cc1Swenshuai.xi { 793*53ee8cc1Swenshuai.xi MS_U8 u8MaxWindowNum; ///<max window number that XC driver supports such as MAIN/SUB window 794*53ee8cc1Swenshuai.xi MS_U8 u8NumOfDigitalDDCRam; ///<indicate how many Digital DDCRam that use can use without external EDID EEPROM 795*53ee8cc1Swenshuai.xi MS_U8 u8MaxFrameNumInMem; ///<indicate maximal number of frames (Progressive mode) supported by scaler simultaneously 796*53ee8cc1Swenshuai.xi MS_U8 u8MaxFieldNumInMem; ///<indicate maximal number of fields (Interlace mode) supported by scaler simultaneously 797*53ee8cc1Swenshuai.xi } XC_EX_ApiInfo; 798*53ee8cc1Swenshuai.xi 799*53ee8cc1Swenshuai.xi /// define the information of set window 800*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 801*53ee8cc1Swenshuai.xi { 802*53ee8cc1Swenshuai.xi //------------- 803*53ee8cc1Swenshuai.xi // Input 804*53ee8cc1Swenshuai.xi //------------- 805*53ee8cc1Swenshuai.xi XC_EX_INPUT_SOURCE_TYPE enInputSourceType; ///<Input source 806*53ee8cc1Swenshuai.xi 807*53ee8cc1Swenshuai.xi //------------- 808*53ee8cc1Swenshuai.xi // Window 809*53ee8cc1Swenshuai.xi //------------- 810*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stCapWin; ///<Capture window 811*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stDispWin; ///<Display window 812*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stCropWin; ///<Crop window 813*53ee8cc1Swenshuai.xi 814*53ee8cc1Swenshuai.xi //------------- 815*53ee8cc1Swenshuai.xi // Timing 816*53ee8cc1Swenshuai.xi //------------- 817*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 818*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 819*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 820*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 821*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 822*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete 823*53ee8cc1Swenshuai.xi 824*53ee8cc1Swenshuai.xi //------------------------- 825*53ee8cc1Swenshuai.xi // customized post scaling 826*53ee8cc1Swenshuai.xi //------------------------- 827*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign post H customized scaling instead of using XC scaling 828*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<post H customized scaling src width 829*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<post H customized scaling dst width 830*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign post V manuel scaling instead of using XC scaling 831*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<post V customized scaling src height 832*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<post V customized scaling dst height 833*53ee8cc1Swenshuai.xi 834*53ee8cc1Swenshuai.xi //-------------- 835*53ee8cc1Swenshuai.xi // 9 lattice 836*53ee8cc1Swenshuai.xi //-------------- 837*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 838*53ee8cc1Swenshuai.xi 839*53ee8cc1Swenshuai.xi //------------------------- 840*53ee8cc1Swenshuai.xi // customized pre scaling 841*53ee8cc1Swenshuai.xi //------------------------- 842*53ee8cc1Swenshuai.xi MS_BOOL bPreHCusScaling; ///<assign pre H customized scaling instead of using XC scaling 843*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingSrc; ///<pre H customized scaling src width 844*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingDst; ///<pre H customized scaling dst width 845*53ee8cc1Swenshuai.xi MS_BOOL bPreVCusScaling; ///<assign pre V manuel scaling instead of using XC scaling 846*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingSrc; ///<pre V customized scaling src height 847*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingDst; ///<pre V customized scaling dst height 848*53ee8cc1Swenshuai.xi MS_U16 u16DefaultPhase; ///<Default Phase for VGA/YPbPr input 849*53ee8cc1Swenshuai.xi } XC_EX_SETWIN_INFO; 850*53ee8cc1Swenshuai.xi 851*53ee8cc1Swenshuai.xi /// define the information for dynamic scaling (DS) 852*53ee8cc1Swenshuai.xi /// one entry of DS is: 853*53ee8cc1Swenshuai.xi /// 854*53ee8cc1Swenshuai.xi /// 8 bit alignment 855*53ee8cc1Swenshuai.xi /// LSB ----> MSB 856*53ee8cc1Swenshuai.xi /// OP (32bits) -> IP (32bits) 857*53ee8cc1Swenshuai.xi /// [7:0] [15:8] [23:16] [31:24] 858*53ee8cc1Swenshuai.xi /// Data_L Data_H Reg_Addr(16bit) Reg_Bank 859*53ee8cc1Swenshuai.xi /// 860*53ee8cc1Swenshuai.xi /// 16 bit alignment 861*53ee8cc1Swenshuai.xi /// LSB ----> MSB 862*53ee8cc1Swenshuai.xi /// OP (32bits) -> IP (32bits) -> 0xFFFFFFFF, 0xFFFFFFFF (dummy) 863*53ee8cc1Swenshuai.xi /// 864*53ee8cc1Swenshuai.xi /// If bIP_DS_On == FALSE, the DS will ignore the IP information 865*53ee8cc1Swenshuai.xi /// If bOP_DS_On == FALSE, the DS will ignore the OP information 866*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 867*53ee8cc1Swenshuai.xi { 868*53ee8cc1Swenshuai.xi MS_PHY u32DS_Info_BaseAddr; ///< The memory base address to update IP/OP dynamic scaling registers. Absolute without any alignment. 869*53ee8cc1Swenshuai.xi MS_U8 u8MIU_Select; ///< 0: MIU0, 1: MIU1, etc. 870*53ee8cc1Swenshuai.xi MS_U8 u8DS_Index_Depth; ///< The index depth (how many entries to fire per MVOP Vsync falling) of DS 871*53ee8cc1Swenshuai.xi MS_BOOL bOP_DS_On; ///< OP dynamic scaling on/off 872*53ee8cc1Swenshuai.xi MS_BOOL bIPS_DS_On; ///< IPS dynamic scaling on/off 873*53ee8cc1Swenshuai.xi MS_BOOL bIPM_DS_On; ///< IPM dynamic scaling on/off 874*53ee8cc1Swenshuai.xi } XC_EX_DynamicScaling_Info; 875*53ee8cc1Swenshuai.xi 876*53ee8cc1Swenshuai.xi /// define the prescaling destiniation size limit 877*53ee8cc1Swenshuai.xi typedef struct 878*53ee8cc1Swenshuai.xi { 879*53ee8cc1Swenshuai.xi MS_U16 u16MinDstWidth; ///Minimum destination Width 880*53ee8cc1Swenshuai.xi MS_U16 u16MinDstHeight; ///Minimum destination Height 881*53ee8cc1Swenshuai.xi MS_BOOL bEna; ///Enable this limit 882*53ee8cc1Swenshuai.xi } XC_EX_PreScalingLimit_Info; 883*53ee8cc1Swenshuai.xi 884*53ee8cc1Swenshuai.xi /// Define source type for DIP 885*53ee8cc1Swenshuai.xi typedef enum 886*53ee8cc1Swenshuai.xi { 887*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_SUB2 = 0, ///< DIP from SUB2(IP_F3) 888*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_MAIN = 1, ///< DIP from MAIN(IP_MAIN) 889*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_SUB = 2, ///< DIP from SUB (IP_SUB) 890*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_OP_MAIN = 3, ///< HVSP MAIN 891*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_OP_SUB = 4, ///< HVSP SUB 892*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_DRAM = 5, ///< DIP from DRAM 893*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_OP_CAPTURE = 6, ///< DIP from OP capture 894*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_OP_SC1_CAPTURE = 7, ///< DIP from OP SC1 capture 895*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_SC2_OP_CAPTURE = 8, ///< DIP from SC2 OP capture 896*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_OSD = 9, ///< DIP from OSD capture 897*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_MVOP0 =10, ///< DIP from MVOP0 capture 898*53ee8cc1Swenshuai.xi E_XC_DIP_EX_SOURCE_TYPE_MVOP1 =11, ///< DIP from MVOP1 capture 899*53ee8cc1Swenshuai.xi E_XC_DIP_EX_MAX_SOURCE_NUM ///< The max support window 900*53ee8cc1Swenshuai.xi } XC_DIP_EX_SOURCE_TYPE; 901*53ee8cc1Swenshuai.xi 902*53ee8cc1Swenshuai.xi /// Define the path type 903*53ee8cc1Swenshuai.xi typedef enum 904*53ee8cc1Swenshuai.xi { 905*53ee8cc1Swenshuai.xi E_XC_EX_PATH_TYPE_SYNCHRONOUS, ///<synchronous path type 906*53ee8cc1Swenshuai.xi E_XC_EX_PATH_TYPE_ASYNCHRONOUS, ///<asynchronous path type 907*53ee8cc1Swenshuai.xi } XC_EX_PATH_TYPE; 908*53ee8cc1Swenshuai.xi 909*53ee8cc1Swenshuai.xi /// Define the mux path information 910*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 911*53ee8cc1Swenshuai.xi { 912*53ee8cc1Swenshuai.xi XC_EX_PATH_TYPE Path_Type; ///<path type 913*53ee8cc1Swenshuai.xi XC_EX_INPUT_SOURCE_TYPE src; ///<source input type 914*53ee8cc1Swenshuai.xi XC_EX_DEST_TYPE dest; ///<destination type of output 915*53ee8cc1Swenshuai.xi 916*53ee8cc1Swenshuai.xi void (* path_thread)(XC_EX_INPUT_SOURCE_TYPE src, MS_BOOL bRealTimeMonitorOnly); ///<path read 917*53ee8cc1Swenshuai.xi void (* SyncEventHandler )(XC_EX_INPUT_SOURCE_TYPE src, void* para); ///<sync event handler 918*53ee8cc1Swenshuai.xi void (* DestOnOff_Event_Handler )(XC_EX_INPUT_SOURCE_TYPE src, void* para); ///<destination on off event handler 919*53ee8cc1Swenshuai.xi void (* dest_periodic_handler )(XC_EX_INPUT_SOURCE_TYPE src, MS_BOOL bRealTimeMonitorOnly) ; ///<destination periodic handler 920*53ee8cc1Swenshuai.xi } XC_EX_MUX_PATH_INFO; 921*53ee8cc1Swenshuai.xi 922*53ee8cc1Swenshuai.xi /// Image store format in XC 923*53ee8cc1Swenshuai.xi typedef enum 924*53ee8cc1Swenshuai.xi { 925*53ee8cc1Swenshuai.xi E_XC_EX_IMAGE_STORE_444_24BIT, ///< (8+8+8) Y Cb Cr / B G R 926*53ee8cc1Swenshuai.xi E_XC_EX_IMAGE_STORE_422_16BIT, ///< (8+8) Y Cb Y Cr / G B G R 927*53ee8cc1Swenshuai.xi E_XC_EX_IMAGE_STORE_422_24BIT, ///< (10+10+4) Y Cb Y Cr / G B G R -- Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 - C5 C4 C3 C2 C1 C0 Y9 Y8 - xx xx xx xx C9 C8 C7 C6 928*53ee8cc1Swenshuai.xi } XC_EX_IMAGE_STORE_FMT; 929*53ee8cc1Swenshuai.xi 930*53ee8cc1Swenshuai.xi /// XC API status 931*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 932*53ee8cc1Swenshuai.xi { 933*53ee8cc1Swenshuai.xi //---------------------- 934*53ee8cc1Swenshuai.xi // Customer setting 935*53ee8cc1Swenshuai.xi //---------------------- 936*53ee8cc1Swenshuai.xi XC_EX_INPUT_SOURCE_TYPE enInputSourceType; ///< Input source type 937*53ee8cc1Swenshuai.xi 938*53ee8cc1Swenshuai.xi //---------------------- 939*53ee8cc1Swenshuai.xi // Window 940*53ee8cc1Swenshuai.xi //---------------------- 941*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stCapWin; ///<Capture window 942*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stDispWin; ///<Display window 943*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stCropWin; ///<Crop window 944*53ee8cc1Swenshuai.xi 945*53ee8cc1Swenshuai.xi //---------------------- 946*53ee8cc1Swenshuai.xi // Timing 947*53ee8cc1Swenshuai.xi //---------------------- 948*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 949*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 950*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 951*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 952*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 953*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete, use u16DefaultPhase instead 954*53ee8cc1Swenshuai.xi 955*53ee8cc1Swenshuai.xi //---------------------- 956*53ee8cc1Swenshuai.xi // customized scaling 957*53ee8cc1Swenshuai.xi //---------------------- 958*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign H customized scaling instead of using XC scaling 959*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<H customized scaling src width 960*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<H customized scaling dst width 961*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign V manuel scaling instead of using XC scaling 962*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<V customized scaling src height 963*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<V customized scaling dst height 964*53ee8cc1Swenshuai.xi 965*53ee8cc1Swenshuai.xi //-------------- 966*53ee8cc1Swenshuai.xi // 9 lattice 967*53ee8cc1Swenshuai.xi //-------------- 968*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 969*53ee8cc1Swenshuai.xi 970*53ee8cc1Swenshuai.xi //---------------------- 971*53ee8cc1Swenshuai.xi // XC internal setting 972*53ee8cc1Swenshuai.xi //---------------------- 973*53ee8cc1Swenshuai.xi 974*53ee8cc1Swenshuai.xi /* scaling ratio */ 975*53ee8cc1Swenshuai.xi MS_U16 u16H_SizeAfterPreScaling; ///<Horizontal size after prescaling 976*53ee8cc1Swenshuai.xi MS_U16 u16V_SizeAfterPreScaling; ///<Vertical size after prescaling 977*53ee8cc1Swenshuai.xi MS_BOOL bPreV_ScalingDown; ///<define whether it's pre-Vertical scaling down 978*53ee8cc1Swenshuai.xi 979*53ee8cc1Swenshuai.xi /* real crop win in memory */ 980*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE ScaledCropWin; 981*53ee8cc1Swenshuai.xi 982*53ee8cc1Swenshuai.xi /* others */ 983*53ee8cc1Swenshuai.xi MS_U32 u32Op2DclkSet; ///<OP to Dot clock set 984*53ee8cc1Swenshuai.xi 985*53ee8cc1Swenshuai.xi /* Video screen status */ 986*53ee8cc1Swenshuai.xi MS_BOOL bBlackscreenEnabled; ///<Black screen status 987*53ee8cc1Swenshuai.xi MS_BOOL bBluescreenEnabled; ///<Blue screen status 988*53ee8cc1Swenshuai.xi MS_U16 u16VideoDark; ///<Video dark 989*53ee8cc1Swenshuai.xi 990*53ee8cc1Swenshuai.xi MS_U16 u16V_Length; ///<for MDrv_Scaler_SetFetchNumberLimit 991*53ee8cc1Swenshuai.xi MS_U16 u16BytePerWord; ///<BytePerWord in Scaler 992*53ee8cc1Swenshuai.xi MS_U16 u16OffsetPixelAlignment; ///<Pixel alignment of Offset (including IPM/OPM) 993*53ee8cc1Swenshuai.xi MS_U8 u8BitPerPixel; ///<Bits number Per Pixel 994*53ee8cc1Swenshuai.xi XC_EX_DEINTERLACE_MODE eDeInterlaceMode; ///<De-interlace mode 995*53ee8cc1Swenshuai.xi MS_U8 u8DelayLines; ///<delay lines 996*53ee8cc1Swenshuai.xi MS_BOOL bMemFmt422; ///<whether memory format is 422, for easy usage 997*53ee8cc1Swenshuai.xi XC_EX_IMAGE_STORE_FMT eMemory_FMT; ///<memory format 998*53ee8cc1Swenshuai.xi MS_BOOL bForceNRoff; ///<Force NR off 999*53ee8cc1Swenshuai.xi MS_BOOL bEn3DNR; ///<whether it's 3DNR enabled 1000*53ee8cc1Swenshuai.xi MS_BOOL bUseYUVSpace; ///< color format before 3x3 matrix 1001*53ee8cc1Swenshuai.xi MS_BOOL bMemYUVFmt; ///< memroy color format 1002*53ee8cc1Swenshuai.xi MS_BOOL bForceRGBin; ///<Force set format in memory as RGB (only for RGB input source) 1003*53ee8cc1Swenshuai.xi MS_BOOL bLinearMode; ///<Is current memory format LinearMode? 1004*53ee8cc1Swenshuai.xi 1005*53ee8cc1Swenshuai.xi // frame lock related 1006*53ee8cc1Swenshuai.xi // only main can select FB/FBL because panel output timing depends on main window, sub will always use FB 1007*53ee8cc1Swenshuai.xi MS_BOOL bFBL; ///<whether it's framebufferless case 1008*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether framelock is enabled or not 1009*53ee8cc1Swenshuai.xi MS_BOOL bDoneFPLL; ///<whether the FPLL is done 1010*53ee8cc1Swenshuai.xi MS_BOOL bEnableFPLL; ///<enable FPLL or not 1011*53ee8cc1Swenshuai.xi MS_BOOL bFPLL_LOCK; ///<whether FPLL is locked (in specific threshold.) 1012*53ee8cc1Swenshuai.xi 1013*53ee8cc1Swenshuai.xi // Capture_Memory 1014*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1015*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase0; ///<IPM base 0 1016*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase1; ///<IPM base 1 1017*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase2; ///<IPM base 2 1018*53ee8cc1Swenshuai.xi #else 1019*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase0; ///<IPM base 0 1020*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase1; ///<IPM base 1 1021*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase2; ///<IPM base 2 1022*53ee8cc1Swenshuai.xi #endif 1023*53ee8cc1Swenshuai.xi MS_U16 u16IPMOffset; ///<IPM offset 1024*53ee8cc1Swenshuai.xi MS_U32 u16IPMFetch; ///<IPM fetch 1025*53ee8cc1Swenshuai.xi } XC_EX_ApiStatus; 1026*53ee8cc1Swenshuai.xi 1027*53ee8cc1Swenshuai.xi /// XC API status 1028*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1029*53ee8cc1Swenshuai.xi { 1030*53ee8cc1Swenshuai.xi MS_U32 u32ApiStatusEx_Version; ///<Version of current structure. Please always set to "EX_PANEL_INFO_EX_VERSION" as input 1031*53ee8cc1Swenshuai.xi MS_U16 u16ApiStatusEX_Length; ///<Length of this structure, u16PanelInfoEX_Length=sizeof(XC_PANEL_INFO_EX) 1032*53ee8cc1Swenshuai.xi 1033*53ee8cc1Swenshuai.xi //---------------------- 1034*53ee8cc1Swenshuai.xi // Customer setting 1035*53ee8cc1Swenshuai.xi //---------------------- 1036*53ee8cc1Swenshuai.xi XC_EX_INPUT_SOURCE_TYPE enInputSourceType; ///< Input source type 1037*53ee8cc1Swenshuai.xi 1038*53ee8cc1Swenshuai.xi //---------------------- 1039*53ee8cc1Swenshuai.xi // Window 1040*53ee8cc1Swenshuai.xi //---------------------- 1041*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stCapWin; ///<Capture window 1042*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stDispWin; ///<Display window 1043*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE stCropWin; ///<Crop window 1044*53ee8cc1Swenshuai.xi 1045*53ee8cc1Swenshuai.xi //---------------------- 1046*53ee8cc1Swenshuai.xi // Timing 1047*53ee8cc1Swenshuai.xi //---------------------- 1048*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<Interlaced or Progressive 1049*53ee8cc1Swenshuai.xi MS_BOOL bHDuplicate; ///<flag for vop horizontal duplicate, for MVD, YPbPr, indicate input double sampled or not 1050*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<Input V Frequency, VFreqx10, for calculate output panel timing 1051*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<Input Vertical total, for calculate output panel timing 1052*53ee8cc1Swenshuai.xi MS_U16 u16DefaultHtotal; ///<Default Htotal for VGA/YPbPr input 1053*53ee8cc1Swenshuai.xi MS_U8 u8DefaultPhase; ///<Obsolete, use u16DefaultPhase instead 1054*53ee8cc1Swenshuai.xi 1055*53ee8cc1Swenshuai.xi //---------------------- 1056*53ee8cc1Swenshuai.xi // Post customized scaling 1057*53ee8cc1Swenshuai.xi //---------------------- 1058*53ee8cc1Swenshuai.xi MS_BOOL bHCusScaling; ///<assign H customized scaling instead of using XC scaling 1059*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingSrc; ///<H customized scaling src width 1060*53ee8cc1Swenshuai.xi MS_U16 u16HCusScalingDst; ///<H customized scaling dst width 1061*53ee8cc1Swenshuai.xi MS_BOOL bVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1062*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingSrc; ///<V customized scaling src height 1063*53ee8cc1Swenshuai.xi MS_U16 u16VCusScalingDst; ///<V customized scaling dst height 1064*53ee8cc1Swenshuai.xi 1065*53ee8cc1Swenshuai.xi //-------------- 1066*53ee8cc1Swenshuai.xi // 9 lattice 1067*53ee8cc1Swenshuai.xi //-------------- 1068*53ee8cc1Swenshuai.xi MS_BOOL bDisplayNineLattice; ///<used to indicate where to display in panel and where to put in frame buffer 1069*53ee8cc1Swenshuai.xi 1070*53ee8cc1Swenshuai.xi //---------------------- 1071*53ee8cc1Swenshuai.xi // XC internal setting 1072*53ee8cc1Swenshuai.xi //---------------------- 1073*53ee8cc1Swenshuai.xi 1074*53ee8cc1Swenshuai.xi /* scaling ratio */ 1075*53ee8cc1Swenshuai.xi MS_U16 u16H_SizeAfterPreScaling; ///<Horizontal size after prescaling 1076*53ee8cc1Swenshuai.xi MS_U16 u16V_SizeAfterPreScaling; ///<Vertical size after prescaling 1077*53ee8cc1Swenshuai.xi MS_BOOL bPreV_ScalingDown; ///<define whether it's pre-Vertical scaling down 1078*53ee8cc1Swenshuai.xi 1079*53ee8cc1Swenshuai.xi /* real crop win in memory */ 1080*53ee8cc1Swenshuai.xi XC_EX_WINDOW_TYPE ScaledCropWin; 1081*53ee8cc1Swenshuai.xi 1082*53ee8cc1Swenshuai.xi /* others */ 1083*53ee8cc1Swenshuai.xi MS_U32 u32Op2DclkSet; ///<OP to Dot clock set 1084*53ee8cc1Swenshuai.xi 1085*53ee8cc1Swenshuai.xi /* Video screen status */ 1086*53ee8cc1Swenshuai.xi MS_BOOL bBlackscreenEnabled; ///<Black screen status 1087*53ee8cc1Swenshuai.xi MS_BOOL bBluescreenEnabled; ///<Blue screen status 1088*53ee8cc1Swenshuai.xi MS_U16 u16VideoDark; ///<Video dark 1089*53ee8cc1Swenshuai.xi 1090*53ee8cc1Swenshuai.xi MS_U16 u16V_Length; ///<for MDrv_Scaler_SetFetchNumberLimit 1091*53ee8cc1Swenshuai.xi MS_U16 u16BytePerWord; ///<BytePerWord in Scaler 1092*53ee8cc1Swenshuai.xi MS_U16 u16OffsetPixelAlignment; ///<Pixel alignment of Offset (including IPM/OPM) 1093*53ee8cc1Swenshuai.xi MS_U8 u8BitPerPixel; ///<Bits number Per Pixel 1094*53ee8cc1Swenshuai.xi XC_EX_DEINTERLACE_MODE eDeInterlaceMode; ///<De-interlace mode 1095*53ee8cc1Swenshuai.xi MS_U8 u8DelayLines; ///<delay lines 1096*53ee8cc1Swenshuai.xi MS_BOOL bMemFmt422; ///<whether memory format is 422, for easy usage 1097*53ee8cc1Swenshuai.xi XC_EX_IMAGE_STORE_FMT eMemory_FMT; ///<memory format 1098*53ee8cc1Swenshuai.xi MS_BOOL bForceNRoff; ///<Force NR off 1099*53ee8cc1Swenshuai.xi MS_BOOL bEn3DNR; ///<whether it's 3DNR enabled 1100*53ee8cc1Swenshuai.xi MS_BOOL bUseYUVSpace; ///< color format before 3x3 matrix 1101*53ee8cc1Swenshuai.xi MS_BOOL bMemYUVFmt; ///< memroy color format 1102*53ee8cc1Swenshuai.xi MS_BOOL bForceRGBin; ///<Force set format in memory as RGB (only for RGB input source) 1103*53ee8cc1Swenshuai.xi MS_BOOL bLinearMode; ///<Is current memory format LinearMode? 1104*53ee8cc1Swenshuai.xi 1105*53ee8cc1Swenshuai.xi // frame lock related 1106*53ee8cc1Swenshuai.xi // only main can select FB/FBL because panel output timing depends on main window, sub will always use FB 1107*53ee8cc1Swenshuai.xi MS_BOOL bFBL; ///<whether it's framebufferless case 1108*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether framelock is enabled or not 1109*53ee8cc1Swenshuai.xi MS_BOOL bDoneFPLL; ///<whether the FPLL is done 1110*53ee8cc1Swenshuai.xi MS_BOOL bEnableFPLL; ///<enable FPLL or not 1111*53ee8cc1Swenshuai.xi MS_BOOL bFPLL_LOCK; ///<whether FPLL is locked (in specific threshold.) 1112*53ee8cc1Swenshuai.xi 1113*53ee8cc1Swenshuai.xi // Capture_Memory 1114*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1115*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase0; ///<IPM base 0 1116*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase1; ///<IPM base 1 1117*53ee8cc1Swenshuai.xi MS_PHY u32IPMBase2; ///<IPM base 2 1118*53ee8cc1Swenshuai.xi #else 1119*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase0; ///<IPM base 0 1120*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase1; ///<IPM base 1 1121*53ee8cc1Swenshuai.xi MS_U32 u32IPMBase2; ///<IPM base 2 1122*53ee8cc1Swenshuai.xi #endif 1123*53ee8cc1Swenshuai.xi MS_U16 u16IPMOffset; ///<IPM offset 1124*53ee8cc1Swenshuai.xi MS_U32 u16IPMFetch; ///<IPM fetch 1125*53ee8cc1Swenshuai.xi 1126*53ee8cc1Swenshuai.xi //---------------------- 1127*53ee8cc1Swenshuai.xi // Pre customized scaling 1128*53ee8cc1Swenshuai.xi //---------------------- 1129*53ee8cc1Swenshuai.xi MS_BOOL bPreHCusScaling; ///<assign H customized scaling instead of using XC scaling 1130*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingSrc; ///<H customized scaling src width 1131*53ee8cc1Swenshuai.xi MS_U16 u16PreHCusScalingDst; ///<H customized scaling dst width 1132*53ee8cc1Swenshuai.xi MS_BOOL bPreVCusScaling; ///<assign V manuel scaling instead of using XC scaling 1133*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingSrc; ///<V customized scaling src height 1134*53ee8cc1Swenshuai.xi MS_U16 u16PreVCusScalingDst; ///<V customized scaling dst height 1135*53ee8cc1Swenshuai.xi 1136*53ee8cc1Swenshuai.xi MS_BOOL bPQSetHSD;///<H_SizeAfterPreScaling is changed manually, which will skip PQ HSD sampling and filter 1137*53ee8cc1Swenshuai.xi 1138*53ee8cc1Swenshuai.xi MS_U16 u16DefaultPhase; ///<Default Phase for VGA/YPbPr input 1139*53ee8cc1Swenshuai.xi MS_BOOL bIsHWDepthAdjSupported; ///<Is hw depth adjustment for real 3d supported or not 1140*53ee8cc1Swenshuai.xi MS_BOOL bIs2LineMode; ///<Is 2 line mode or not 1141*53ee8cc1Swenshuai.xi MS_BOOL bIsPNLYUVOutput; ///<Is Scaler YUV output 1142*53ee8cc1Swenshuai.xi 1143*53ee8cc1Swenshuai.xi MS_U8 u8HDMIPixelRepetition; ///<the HDMI pixel repetition info 1144*53ee8cc1Swenshuai.xi 1145*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1146*53ee8cc1Swenshuai.xi MS_PHY u32FRCMBase0; ///<FRCM base 0 1147*53ee8cc1Swenshuai.xi MS_PHY u32FRCMBase1; ///<FRCM base 1 1148*53ee8cc1Swenshuai.xi MS_PHY u32FRCMBase2; ///<FRCM base 2 1149*53ee8cc1Swenshuai.xi #else 1150*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase0; ///<FRCM base 0 1151*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase1; ///<FRCM base 1 1152*53ee8cc1Swenshuai.xi MS_U32 u32FRCMBase2; ///<FRCM base 2 1153*53ee8cc1Swenshuai.xi #endif 1154*53ee8cc1Swenshuai.xi }XC_EX_ApiStatusEx; 1155*53ee8cc1Swenshuai.xi 1156*53ee8cc1Swenshuai.xi /// Define the set timing information 1157*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1158*53ee8cc1Swenshuai.xi { 1159*53ee8cc1Swenshuai.xi MS_U32 u32HighAccurateInputVFreq; ///<high accurate input V frequency 1160*53ee8cc1Swenshuai.xi MS_U16 u16InputVFreq; ///<input V frequency 1161*53ee8cc1Swenshuai.xi MS_U16 u16InputVTotal; ///<input vertical total 1162*53ee8cc1Swenshuai.xi MS_BOOL bMVOPSrc; ///<MVOP source 1163*53ee8cc1Swenshuai.xi MS_BOOL bFastFrameLock; ///<whether it's fast frame lock case 1164*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<whether it's interlace 1165*53ee8cc1Swenshuai.xi } XC_EX_SetTiming_Info; 1166*53ee8cc1Swenshuai.xi 1167*53ee8cc1Swenshuai.xi //------------------------------ 1168*53ee8cc1Swenshuai.xi // XC Auto 1169*53ee8cc1Swenshuai.xi //------------------------------ 1170*53ee8cc1Swenshuai.xi 1171*53ee8cc1Swenshuai.xi /// internal calibration 1172*53ee8cc1Swenshuai.xi typedef struct 1173*53ee8cc1Swenshuai.xi { 1174*53ee8cc1Swenshuai.xi MS_U16 u16CH_AVG[3]; 1175*53ee8cc1Swenshuai.xi } XC_EX_AUTOADC_TYPE; 1176*53ee8cc1Swenshuai.xi 1177*53ee8cc1Swenshuai.xi /// get IP1 report min/max R/G/B 1178*53ee8cc1Swenshuai.xi typedef enum 1179*53ee8cc1Swenshuai.xi { 1180*53ee8cc1Swenshuai.xi E_XC_EX_AUTO_MIN_R , 1181*53ee8cc1Swenshuai.xi E_XC_EX_AUTO_MIN_G , 1182*53ee8cc1Swenshuai.xi E_XC_EX_AUTO_MIN_B , 1183*53ee8cc1Swenshuai.xi E_XC_EX_AUTO_MAX_R , 1184*53ee8cc1Swenshuai.xi E_XC_EX_AUTO_MAX_G , 1185*53ee8cc1Swenshuai.xi E_XC_EX_AUTO_MAX_B , 1186*53ee8cc1Swenshuai.xi } XC_EX_AUTO_GAIN_TYPE; 1187*53ee8cc1Swenshuai.xi 1188*53ee8cc1Swenshuai.xi /// the tming types for internal calibration 1189*53ee8cc1Swenshuai.xi typedef enum 1190*53ee8cc1Swenshuai.xi { 1191*53ee8cc1Swenshuai.xi E_XC_EX_OFF, 1192*53ee8cc1Swenshuai.xi E_XC_EX_480P, 1193*53ee8cc1Swenshuai.xi E_XC_EX_576P, 1194*53ee8cc1Swenshuai.xi E_XC_EX_720P, 1195*53ee8cc1Swenshuai.xi E_XC_EX_1080P, 1196*53ee8cc1Swenshuai.xi E_XC_EX_480I, 1197*53ee8cc1Swenshuai.xi E_XC_EX_576I, 1198*53ee8cc1Swenshuai.xi E_XC_EX_720I, 1199*53ee8cc1Swenshuai.xi E_XC_EX_1080I, 1200*53ee8cc1Swenshuai.xi } XC_EX_Internal_TimingType; 1201*53ee8cc1Swenshuai.xi 1202*53ee8cc1Swenshuai.xi //------------------------------ 1203*53ee8cc1Swenshuai.xi // Software Reset 1204*53ee8cc1Swenshuai.xi //------------------------------ 1205*53ee8cc1Swenshuai.xi /// software reset type 1206*53ee8cc1Swenshuai.xi typedef enum 1207*53ee8cc1Swenshuai.xi { 1208*53ee8cc1Swenshuai.xi E_XC_EX_REST_SCALER_ALL = _XC_EX_BIT(0), 1209*53ee8cc1Swenshuai.xi E_XC_EX_REST_IP_F1 = _XC_EX_BIT(1), 1210*53ee8cc1Swenshuai.xi E_XC_EX_REST_IP_F2 = _XC_EX_BIT(2), 1211*53ee8cc1Swenshuai.xi E_XC_EX_REST_OP = _XC_EX_BIT(3), 1212*53ee8cc1Swenshuai.xi E_XC_EX_REST_IP_ALL = _XC_EX_BIT(4), 1213*53ee8cc1Swenshuai.xi E_XC_EX_REST_CLK = (_XC_EX_BIT(6)|_XC_EX_BIT(3)), 1214*53ee8cc1Swenshuai.xi } XC_EX_SOFTWARE_REST_TYPE_t; 1215*53ee8cc1Swenshuai.xi 1216*53ee8cc1Swenshuai.xi /// Detect Europe HDTV status type 1217*53ee8cc1Swenshuai.xi typedef enum 1218*53ee8cc1Swenshuai.xi { 1219*53ee8cc1Swenshuai.xi E_XC_EX_EURO_AUS_HDTV_NORMAL = 0, ///<not detected Euro or Aus HDTV 1220*53ee8cc1Swenshuai.xi E_XC_EX_EURO_HDTV_DETECTED, ///<Euro HDTV detected 1221*53ee8cc1Swenshuai.xi E_XC_EX_AUSTRALIA_HDTV_DETECTED, ///<Aus HDTV detected 1222*53ee8cc1Swenshuai.xi } XC_EX_DETECT_EURO_HDTV_STATUS_TYPE; 1223*53ee8cc1Swenshuai.xi 1224*53ee8cc1Swenshuai.xi 1225*53ee8cc1Swenshuai.xi //Capture_Memory 1226*53ee8cc1Swenshuai.xi 1227*53ee8cc1Swenshuai.xi /// Define the rectangle information 1228*53ee8cc1Swenshuai.xi typedef struct 1229*53ee8cc1Swenshuai.xi { 1230*53ee8cc1Swenshuai.xi MS_S16 s16X_Start; ///<rectangle start x 1231*53ee8cc1Swenshuai.xi MS_S16 s16Y_Start; ///<rectangle start x 1232*53ee8cc1Swenshuai.xi MS_S16 s16X_Size; ///<rectangle horizontal size 1233*53ee8cc1Swenshuai.xi MS_S16 s16Y_Size; ///<rectangle vertical size 1234*53ee8cc1Swenshuai.xi 1235*53ee8cc1Swenshuai.xi MS_U8 *pRect; ///<the buffer address for the rectangle 1236*53ee8cc1Swenshuai.xi MS_U32 u32RectPitch; ///<rectangle pitch 1237*53ee8cc1Swenshuai.xi MS_U16 u16PointSize; ///<point size, consider the memory size 1238*53ee8cc1Swenshuai.xi } XC_EX_RECT_INFO; 1239*53ee8cc1Swenshuai.xi 1240*53ee8cc1Swenshuai.xi /// Define for format of pixel 24 bit 1241*53ee8cc1Swenshuai.xi typedef struct 1242*53ee8cc1Swenshuai.xi { 1243*53ee8cc1Swenshuai.xi MS_U8 R_Cr; 1244*53ee8cc1Swenshuai.xi MS_U8 G_Y; 1245*53ee8cc1Swenshuai.xi MS_U8 B_Cb; 1246*53ee8cc1Swenshuai.xi } XC_EX_PIXEL_24BIT; 1247*53ee8cc1Swenshuai.xi 1248*53ee8cc1Swenshuai.xi /// Define for format of pixel 32 bit 1249*53ee8cc1Swenshuai.xi typedef struct 1250*53ee8cc1Swenshuai.xi { 1251*53ee8cc1Swenshuai.xi MS_U32 B_Cb :10; 1252*53ee8cc1Swenshuai.xi MS_U32 G_Y :10; 1253*53ee8cc1Swenshuai.xi MS_U32 R_Cr :10; 1254*53ee8cc1Swenshuai.xi MS_U32 u8Dummy:2; 1255*53ee8cc1Swenshuai.xi } XC_EX_PIXEL_32BIT; 1256*53ee8cc1Swenshuai.xi 1257*53ee8cc1Swenshuai.xi /// Define for format of pixel 16 bit 1258*53ee8cc1Swenshuai.xi typedef struct 1259*53ee8cc1Swenshuai.xi { 1260*53ee8cc1Swenshuai.xi MS_U8 u8G_Y; 1261*53ee8cc1Swenshuai.xi MS_U8 u8BR_CbCr; 1262*53ee8cc1Swenshuai.xi } XC_EX_PIXEL_422_8BIT; 1263*53ee8cc1Swenshuai.xi 1264*53ee8cc1Swenshuai.xi typedef enum 1265*53ee8cc1Swenshuai.xi { 1266*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUTDATA_RGB10BITS = 0x00, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1267*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUTDATA_RGB8BITS = 0x01, ///< R[23:16] G[15:8] B[7:0] 1268*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUTDATA_4228BITS = 0x03, ///< CbCr[15:8] Y[7:0] 1269*53ee8cc1Swenshuai.xi 1270*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUTDATA_FRC_RGB10BITS = 0x04, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1271*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUTDATA_FRC_RGB8BITS = 0x05, ///< R[23:16] G[15:8] B[7:0] 1272*53ee8cc1Swenshuai.xi E_XC_EX_OUTPUTDATA_FRC_4228BITS = 0x06, ///< CbCr[15:8] Y[7:0] 1273*53ee8cc1Swenshuai.xi } XC_EX_OUTPUTDATA_TYPE; 1274*53ee8cc1Swenshuai.xi 1275*53ee8cc1Swenshuai.xi typedef enum 1276*53ee8cc1Swenshuai.xi { 1277*53ee8cc1Swenshuai.xi E_XC_EX_INPUTDATA_RGB10BITS = 0x00, ///< Dummy[31:30] R[29:20] G[19:10] B[9:0] 1278*53ee8cc1Swenshuai.xi E_XC_EX_INPUTDATA_RGB8BITS = 0x01, ///< R[23:16] G[15:8] B[7:0] 1279*53ee8cc1Swenshuai.xi E_XC_EX_INPUTDATA_4228BITS = 0x03, ///< CbCr[15:8] Y[7:0] 1280*53ee8cc1Swenshuai.xi } XC_EX_INPUTDATA_TYPE; 1281*53ee8cc1Swenshuai.xi 1282*53ee8cc1Swenshuai.xi 1283*53ee8cc1Swenshuai.xi /// define for the auto calbration window type 1284*53ee8cc1Swenshuai.xi typedef struct 1285*53ee8cc1Swenshuai.xi { 1286*53ee8cc1Swenshuai.xi MS_U16 u16X; ///<window start x 1287*53ee8cc1Swenshuai.xi MS_U16 u16Xsize; ///<window horizontal size 1288*53ee8cc1Swenshuai.xi MS_U16 u16Y; ///<window start y 1289*53ee8cc1Swenshuai.xi MS_U16 u16Ysize; ///<window vertical size 1290*53ee8cc1Swenshuai.xi } XC_EX_AUTO_CAL_WINDOW; 1291*53ee8cc1Swenshuai.xi 1292*53ee8cc1Swenshuai.xi typedef struct 1293*53ee8cc1Swenshuai.xi { 1294*53ee8cc1Swenshuai.xi XC_EX_IMAGE_STORE_FMT eStoreFmt; ///<image store format 1295*53ee8cc1Swenshuai.xi XC_EX_AUTO_CAL_WINDOW eCal_Win_Size; ///<auto calbration window type 1296*53ee8cc1Swenshuai.xi XC_EX_AUTOADC_TYPE pixelMax; ///<maximum value among the pixels 1297*53ee8cc1Swenshuai.xi XC_EX_AUTOADC_TYPE pixelMin; ///<minimum value among the pixels 1298*53ee8cc1Swenshuai.xi XC_EX_AUTOADC_TYPE pixelAverage; ///<average value among the pixels 1299*53ee8cc1Swenshuai.xi } XC_EX_IMAGE_MEM_INFO; 1300*53ee8cc1Swenshuai.xi 1301*53ee8cc1Swenshuai.xi /// defined channel select for contrast adjusting. 1302*53ee8cc1Swenshuai.xi typedef enum 1303*53ee8cc1Swenshuai.xi { 1304*53ee8cc1Swenshuai.xi E_XC_EX_VOP_CHR = 0, ///< Channel R 1305*53ee8cc1Swenshuai.xi E_XC_EX_VOP_CHG, ///< Channel G 1306*53ee8cc1Swenshuai.xi E_XC_EX_VOP_CHB, ///< Channel B 1307*53ee8cc1Swenshuai.xi E_XC_EX_VOP_ALL, ///< All Channel 1308*53ee8cc1Swenshuai.xi } XC_EX_VOP_CHANNEL; 1309*53ee8cc1Swenshuai.xi 1310*53ee8cc1Swenshuai.xi /// Define Scaler GOP IP setting. 1311*53ee8cc1Swenshuai.xi typedef enum 1312*53ee8cc1Swenshuai.xi { 1313*53ee8cc1Swenshuai.xi E_XC_EX_IP0_SEL_GOP0, 1314*53ee8cc1Swenshuai.xi E_XC_EX_IP0_SEL_GOP1, 1315*53ee8cc1Swenshuai.xi E_XC_EX_IP0_SEL_GOP2, 1316*53ee8cc1Swenshuai.xi E_XC_EX_NIP_SEL_GOP0, 1317*53ee8cc1Swenshuai.xi E_XC_EX_NIP_SEL_GOP1, 1318*53ee8cc1Swenshuai.xi E_XC_EX_NIP_SEL_GOP2, 1319*53ee8cc1Swenshuai.xi E_XC_EX_MVOP_SEL, 1320*53ee8cc1Swenshuai.xi } XC_EX_IPSEL_GOP; 1321*53ee8cc1Swenshuai.xi 1322*53ee8cc1Swenshuai.xi /// Define Scaler memory format 1323*53ee8cc1Swenshuai.xi typedef enum 1324*53ee8cc1Swenshuai.xi { 1325*53ee8cc1Swenshuai.xi E_XC_EX_MEM_FMT_AUTO = 0, 1326*53ee8cc1Swenshuai.xi E_XC_EX_MEM_FMT_444 = 1, 1327*53ee8cc1Swenshuai.xi E_XC_EX_MEM_FMT_422 = 2, 1328*53ee8cc1Swenshuai.xi } XC_EX_MEM_FMT; 1329*53ee8cc1Swenshuai.xi 1330*53ee8cc1Swenshuai.xi /// Define the PQ path information 1331*53ee8cc1Swenshuai.xi /** 1332*53ee8cc1Swenshuai.xi * The active Window for PQ function to takes place. 1333*53ee8cc1Swenshuai.xi */ 1334*53ee8cc1Swenshuai.xi typedef enum 1335*53ee8cc1Swenshuai.xi { 1336*53ee8cc1Swenshuai.xi /// Main window 1337*53ee8cc1Swenshuai.xi PQ_EX_MAIN_WINDOW=0, 1338*53ee8cc1Swenshuai.xi /// Sub window 1339*53ee8cc1Swenshuai.xi PQ_EX_SUB_WINDOW=1, 1340*53ee8cc1Swenshuai.xi /// The max support window of PQ 1341*53ee8cc1Swenshuai.xi PQ_EX_MAX_WINDOW 1342*53ee8cc1Swenshuai.xi } PQ_EX_WIN; 1343*53ee8cc1Swenshuai.xi 1344*53ee8cc1Swenshuai.xi typedef enum 1345*53ee8cc1Swenshuai.xi { 1346*53ee8cc1Swenshuai.xi PQ_EX_XC_ID_0, 1347*53ee8cc1Swenshuai.xi PQ_EX_XC_ID_1, 1348*53ee8cc1Swenshuai.xi PQ_EX_XC_ID_NUM, 1349*53ee8cc1Swenshuai.xi }PQ_EX_XC_ID; 1350*53ee8cc1Swenshuai.xi 1351*53ee8cc1Swenshuai.xi /** 1352*53ee8cc1Swenshuai.xi * FOURCE COLOR FMT 1353*53ee8cc1Swenshuai.xi */ 1354*53ee8cc1Swenshuai.xi typedef enum 1355*53ee8cc1Swenshuai.xi { 1356*53ee8cc1Swenshuai.xi /// Default 1357*53ee8cc1Swenshuai.xi PQ_EX_FOURCE_COLOR_DEFAULT, 1358*53ee8cc1Swenshuai.xi /// RGB 1359*53ee8cc1Swenshuai.xi PQ_EX_FOURCE_COLOR_RGB, 1360*53ee8cc1Swenshuai.xi /// YUV 1361*53ee8cc1Swenshuai.xi PQ_EX_FOURCE_COLOR_YUV, 1362*53ee8cc1Swenshuai.xi } PQ_EX_FOURCE_COLOR_FMT; 1363*53ee8cc1Swenshuai.xi 1364*53ee8cc1Swenshuai.xi /** 1365*53ee8cc1Swenshuai.xi * PQ DEINTERLACE MODE 1366*53ee8cc1Swenshuai.xi */ 1367*53ee8cc1Swenshuai.xi typedef enum DLL_PACKED 1368*53ee8cc1Swenshuai.xi { 1369*53ee8cc1Swenshuai.xi /// off 1370*53ee8cc1Swenshuai.xi PQ_EX_DEINT_OFF=0, 1371*53ee8cc1Swenshuai.xi /// 2DDI BOB 1372*53ee8cc1Swenshuai.xi PQ_EX_DEINT_2DDI_BOB, 1373*53ee8cc1Swenshuai.xi /// 2DDI AVG 1374*53ee8cc1Swenshuai.xi PQ_EX_DEINT_2DDI_AVG, 1375*53ee8cc1Swenshuai.xi /// 3DDI History(24 bit) 1376*53ee8cc1Swenshuai.xi PQ_EX_DEINT_3DDI_HISTORY, 1377*53ee8cc1Swenshuai.xi /// 3DDI(16 bit) 1378*53ee8cc1Swenshuai.xi PQ_EX_DEINT_3DDI, 1379*53ee8cc1Swenshuai.xi } PQ_EX_DEINTERLACE_MODE; 1380*53ee8cc1Swenshuai.xi /** 1381*53ee8cc1Swenshuai.xi * Video data information to supply when in PQ mode. 1382*53ee8cc1Swenshuai.xi */ 1383*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1384*53ee8cc1Swenshuai.xi { 1385*53ee8cc1Swenshuai.xi /// is FBL or not 1386*53ee8cc1Swenshuai.xi MS_BOOL bFBL; 1387*53ee8cc1Swenshuai.xi /// is interlace mode or not 1388*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; 1389*53ee8cc1Swenshuai.xi /// input Horizontal size 1390*53ee8cc1Swenshuai.xi MS_U16 u16input_hsize; 1391*53ee8cc1Swenshuai.xi /// input Vertical size 1392*53ee8cc1Swenshuai.xi MS_U16 u16input_vsize; 1393*53ee8cc1Swenshuai.xi /// input Vertical total 1394*53ee8cc1Swenshuai.xi MS_U16 u16input_vtotal; 1395*53ee8cc1Swenshuai.xi /// input Vertical frequency 1396*53ee8cc1Swenshuai.xi MS_U16 u16input_vfreq; 1397*53ee8cc1Swenshuai.xi /// output Vertical frequency 1398*53ee8cc1Swenshuai.xi MS_U16 u16ouput_vfreq; 1399*53ee8cc1Swenshuai.xi /// Display Horizontal size 1400*53ee8cc1Swenshuai.xi MS_U16 u16display_hsize; 1401*53ee8cc1Swenshuai.xi /// Display Vertical size 1402*53ee8cc1Swenshuai.xi MS_U16 u16display_vsize; 1403*53ee8cc1Swenshuai.xi }MS_PQ_EX_Mode_Info; 1404*53ee8cc1Swenshuai.xi /** 1405*53ee8cc1Swenshuai.xi * INPUT SOURCE TYPE 1406*53ee8cc1Swenshuai.xi */ 1407*53ee8cc1Swenshuai.xi typedef enum 1408*53ee8cc1Swenshuai.xi { 1409*53ee8cc1Swenshuai.xi /// VGA 1410*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_VGA, 1411*53ee8cc1Swenshuai.xi /// TV 1412*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_TV, 1413*53ee8cc1Swenshuai.xi 1414*53ee8cc1Swenshuai.xi /// CVBS 1415*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_CVBS, 1416*53ee8cc1Swenshuai.xi 1417*53ee8cc1Swenshuai.xi /// S-video 1418*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_SVIDEO, 1419*53ee8cc1Swenshuai.xi 1420*53ee8cc1Swenshuai.xi /// Component 1421*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_YPBPR, 1422*53ee8cc1Swenshuai.xi /// Scart 1423*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_SCART, 1424*53ee8cc1Swenshuai.xi 1425*53ee8cc1Swenshuai.xi 1426*53ee8cc1Swenshuai.xi /// HDMI 1427*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_HDMI, 1428*53ee8cc1Swenshuai.xi 1429*53ee8cc1Swenshuai.xi /// DTV 1430*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_DTV, 1431*53ee8cc1Swenshuai.xi 1432*53ee8cc1Swenshuai.xi /// DVI 1433*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_DVI, 1434*53ee8cc1Swenshuai.xi 1435*53ee8cc1Swenshuai.xi // Application source 1436*53ee8cc1Swenshuai.xi /// Storage 1437*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_STORAGE, 1438*53ee8cc1Swenshuai.xi /// KTV 1439*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_KTV, 1440*53ee8cc1Swenshuai.xi /// JPEG 1441*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_JPEG, 1442*53ee8cc1Swenshuai.xi 1443*53ee8cc1Swenshuai.xi /// The max support number of PQ input source 1444*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_NUM, 1445*53ee8cc1Swenshuai.xi /// None 1446*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_NONE = PQ_EX_INPUT_SOURCE_NUM, 1447*53ee8cc1Swenshuai.xi } PQ_EX_INPUT_SOURCE_TYPE; 1448*53ee8cc1Swenshuai.xi 1449*53ee8cc1Swenshuai.xi 1450*53ee8cc1Swenshuai.xi // PQ Function 1451*53ee8cc1Swenshuai.xi typedef enum 1452*53ee8cc1Swenshuai.xi { 1453*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_NONE = 0x00000000, 1454*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_HSD_SAMPLING = 0x00000001, 1455*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_PREVSD_BILINEAR = 0x00000002, 1456*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_ADC_SAMPLING = 0x00000003, 1457*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_RFBL_CTRL = 0x00000004, 1458*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_PQ_SUGGESTED_FRAMENUM = 0x00000008, 1459*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_SET_UCFEATURE = 0x00000010, 1460*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_SKIP_MADI_TBL = 0x00000020, 1461*53ee8cc1Swenshuai.xi E_PQ_EX_IOCTL_NUM, 1462*53ee8cc1Swenshuai.xi } PQ_EX_IOCTL_FLAG_TYPE; 1463*53ee8cc1Swenshuai.xi 1464*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED s_PQ_EX_Function 1465*53ee8cc1Swenshuai.xi { 1466*53ee8cc1Swenshuai.xi 1467*53ee8cc1Swenshuai.xi void (* pq_disable_filmmode)(PQ_EX_WIN eWindow, MS_BOOL bOn); 1468*53ee8cc1Swenshuai.xi 1469*53ee8cc1Swenshuai.xi MS_BOOL (* pq_load_scalingtable)(PQ_EX_WIN eWindow, MS_U8 eXRuleType, MS_BOOL bPreV_ScalingDown, 1470*53ee8cc1Swenshuai.xi MS_BOOL bInterlace, MS_BOOL bColorSpaceYUV, MS_U16 u16InputSize, MS_U16 u16SizeAfterScaling); 1471*53ee8cc1Swenshuai.xi 1472*53ee8cc1Swenshuai.xi MS_BOOL (* pq_set_csc)(PQ_EX_WIN eWindow, PQ_EX_FOURCE_COLOR_FMT enFourceColor); 1473*53ee8cc1Swenshuai.xi 1474*53ee8cc1Swenshuai.xi PQ_EX_DEINTERLACE_MODE (* pq_set_memformat)(PQ_EX_WIN eWindow, MS_BOOL bMemFmt422, MS_BOOL bFBL, MS_U8 *u8BitsPerPixel); 1475*53ee8cc1Swenshuai.xi 1476*53ee8cc1Swenshuai.xi void (* pq_set_420upsampling)(PQ_EX_WIN eWindow, MS_BOOL bFBL, MS_BOOL bPreV_ScalingDown, MS_U16 u16V_CropStart); 1477*53ee8cc1Swenshuai.xi 1478*53ee8cc1Swenshuai.xi void (* pq_set_modeInfo)(PQ_EX_WIN eWindow, PQ_EX_INPUT_SOURCE_TYPE enInputSourceType, MS_PQ_EX_Mode_Info *pstPQModeInfo); 1479*53ee8cc1Swenshuai.xi 1480*53ee8cc1Swenshuai.xi void (* pq_deside_srctype)(PQ_EX_WIN eWindow, PQ_EX_INPUT_SOURCE_TYPE enInputSourceType); 1481*53ee8cc1Swenshuai.xi 1482*53ee8cc1Swenshuai.xi MS_BOOL (* pq_get_memyuvfmt)(PQ_EX_WIN eWindow, PQ_EX_FOURCE_COLOR_FMT enFourceColor); 1483*53ee8cc1Swenshuai.xi 1484*53ee8cc1Swenshuai.xi MS_BOOL (* pq_ioctl)(PQ_EX_WIN eWindow, MS_U32 u32Flag, void *pBuf, MS_U32 u32BufSize); 1485*53ee8cc1Swenshuai.xi 1486*53ee8cc1Swenshuai.xi void (* pq_disable_filmmode_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, MS_BOOL bOn); 1487*53ee8cc1Swenshuai.xi 1488*53ee8cc1Swenshuai.xi MS_BOOL (* pq_load_scalingtable_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, MS_U8 eXRuleType, MS_BOOL bPreV_ScalingDown, 1489*53ee8cc1Swenshuai.xi MS_BOOL bInterlace, MS_BOOL bColorSpaceYUV, MS_U16 u16InputSize, MS_U16 u16SizeAfterScaling); 1490*53ee8cc1Swenshuai.xi 1491*53ee8cc1Swenshuai.xi MS_BOOL (* pq_set_csc_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, PQ_EX_FOURCE_COLOR_FMT enFourceColor); 1492*53ee8cc1Swenshuai.xi 1493*53ee8cc1Swenshuai.xi PQ_EX_DEINTERLACE_MODE (* pq_set_memformat_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, MS_BOOL bMemFmt422, MS_BOOL bFBL, MS_U8 *u8BitsPerPixel); 1494*53ee8cc1Swenshuai.xi 1495*53ee8cc1Swenshuai.xi void (* pq_set_420upsampling_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, MS_BOOL bFBL, MS_BOOL bPreV_ScalingDown, MS_U16 u16V_CropStart); 1496*53ee8cc1Swenshuai.xi 1497*53ee8cc1Swenshuai.xi void (* pq_set_modeInfo_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, PQ_EX_INPUT_SOURCE_TYPE enInputSourceType, MS_PQ_EX_Mode_Info *pstPQModeInfo); 1498*53ee8cc1Swenshuai.xi 1499*53ee8cc1Swenshuai.xi void (* pq_deside_srctype_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, PQ_EX_INPUT_SOURCE_TYPE enInputSourceType); 1500*53ee8cc1Swenshuai.xi 1501*53ee8cc1Swenshuai.xi MS_BOOL (* pq_get_memyuvfmt_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, PQ_EX_FOURCE_COLOR_FMT enFourceColor); 1502*53ee8cc1Swenshuai.xi 1503*53ee8cc1Swenshuai.xi MS_BOOL (* pq_ioctl_ex)(PQ_EX_XC_ID eXCID, PQ_EX_WIN eWindow, MS_U32 u32Flag, void *pBuf, MS_U32 u32BufSize); 1504*53ee8cc1Swenshuai.xi }PQ_EX_Function_Info; 1505*53ee8cc1Swenshuai.xi 1506*53ee8cc1Swenshuai.xi typedef struct 1507*53ee8cc1Swenshuai.xi { 1508*53ee8cc1Swenshuai.xi MS_U32 u32ratio; 1509*53ee8cc1Swenshuai.xi MS_BOOL bADVMode; 1510*53ee8cc1Swenshuai.xi } PQ_EX_HSD_SAMPLING_INFO; 1511*53ee8cc1Swenshuai.xi 1512*53ee8cc1Swenshuai.xi typedef struct 1513*53ee8cc1Swenshuai.xi { 1514*53ee8cc1Swenshuai.xi PQ_EX_INPUT_SOURCE_TYPE enPQSourceType; 1515*53ee8cc1Swenshuai.xi MS_PQ_EX_Mode_Info stPQModeInfo; 1516*53ee8cc1Swenshuai.xi MS_U16 u16ratio; 1517*53ee8cc1Swenshuai.xi } PQ_EX_ADC_SAMPLING_INFO; 1518*53ee8cc1Swenshuai.xi 1519*53ee8cc1Swenshuai.xi //Display information 1520*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1521*53ee8cc1Swenshuai.xi { 1522*53ee8cc1Swenshuai.xi MS_U32 VDTOT; //Output vertical total 1523*53ee8cc1Swenshuai.xi MS_U32 DEVST; //Output DE vertical start 1524*53ee8cc1Swenshuai.xi MS_U32 DEVEND;//Output DE Vertical end 1525*53ee8cc1Swenshuai.xi MS_U32 HDTOT;// Output horizontal total 1526*53ee8cc1Swenshuai.xi MS_U32 DEHST; //Output DE horizontal start 1527*53ee8cc1Swenshuai.xi MS_U32 DEHEND;// Output DE horizontal end 1528*53ee8cc1Swenshuai.xi MS_BOOL bInterlaceMode; 1529*53ee8cc1Swenshuai.xi MS_BOOL bYUVInput; 1530*53ee8cc1Swenshuai.xi } XC_EX_DST_DispInfo; 1531*53ee8cc1Swenshuai.xi 1532*53ee8cc1Swenshuai.xi typedef enum 1533*53ee8cc1Swenshuai.xi { 1534*53ee8cc1Swenshuai.xi ///IP2 path. 1535*53ee8cc1Swenshuai.xi E_XC_EX_GOP_XCDST_IP2=0, 1536*53ee8cc1Swenshuai.xi 1537*53ee8cc1Swenshuai.xi /// IP man path. 1538*53ee8cc1Swenshuai.xi E_XC_EX_GOP_XCDST_IP1_MAIN=1, 1539*53ee8cc1Swenshuai.xi 1540*53ee8cc1Swenshuai.xi ///IP sub path. 1541*53ee8cc1Swenshuai.xi E_XC_EX_GOP_XCDST_IP1_SUB=2, 1542*53ee8cc1Swenshuai.xi 1543*53ee8cc1Swenshuai.xi /// op1 main path. 1544*53ee8cc1Swenshuai.xi E_XC_EX_GOP_XCDST_OP1_MAIN=3, 1545*53ee8cc1Swenshuai.xi 1546*53ee8cc1Swenshuai.xi E_XC_EX_MAX_GOP_XCDST_SUPPORT 1547*53ee8cc1Swenshuai.xi 1548*53ee8cc1Swenshuai.xi } XC_EX_GOP_XCDST_TYPE; 1549*53ee8cc1Swenshuai.xi 1550*53ee8cc1Swenshuai.xi /// Set data mux to VE 1551*53ee8cc1Swenshuai.xi typedef enum 1552*53ee8cc1Swenshuai.xi { 1553*53ee8cc1Swenshuai.xi /// GOP mux0 to VE 1554*53ee8cc1Swenshuai.xi E_XC_EX_VOP_SEL_OSD_BLEND0, 1555*53ee8cc1Swenshuai.xi /// GOP mux1 to VE 1556*53ee8cc1Swenshuai.xi E_XC_EX_VOP_SEL_OSD_BLEND1, 1557*53ee8cc1Swenshuai.xi /// GOP mux2 to VE 1558*53ee8cc1Swenshuai.xi E_XC_EX_VOP_SEL_OSD_BLEND2, 1559*53ee8cc1Swenshuai.xi /// mux from XC MACE 1560*53ee8cc1Swenshuai.xi E_XC_EX_VOP_SEL_MACE_RGB, 1561*53ee8cc1Swenshuai.xi 1562*53ee8cc1Swenshuai.xi E_XC_EX_VOP_SEL_OSD_NONE, 1563*53ee8cc1Swenshuai.xi /// Last GOP mux to VE 1564*53ee8cc1Swenshuai.xi E_XC_EX_VOP_SEL_OSD_LAST = 0x80, 1565*53ee8cc1Swenshuai.xi } XC_EX_VOP_SEL_OSD_XC2VE_MUX; 1566*53ee8cc1Swenshuai.xi 1567*53ee8cc1Swenshuai.xi // 3D info 1568*53ee8cc1Swenshuai.xi typedef enum 1569*53ee8cc1Swenshuai.xi { 1570*53ee8cc1Swenshuai.xi //range [0000 ~ 1111] reserved for hdmi 3D spec 1571*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_FRAME_PACKING = 0x00, //0000 1572*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_FIELD_ALTERNATIVE = 0x01, //0001 1573*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_LINE_ALTERNATIVE = 0x02, //0010 1574*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_SIDE_BY_SIDE_FULL = 0x03, //0011 1575*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_L_DEPTH = 0x04, //0100 1576*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_L_DEPTH_GRAPHICS_GRAPHICS_DEPTH = 0x05, //0101 1577*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_TOP_BOTTOM = 0x06, //0110 1578*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_SIDE_BY_SIDE_HALF = 0x08, //1000 1579*53ee8cc1Swenshuai.xi 1580*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_CHECK_BORAD = 0x09, //1001 1581*53ee8cc1Swenshuai.xi 1582*53ee8cc1Swenshuai.xi //user defined 1583*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_MODE_USER = 0x10, 1584*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_MODE_NONE = E_XC_EX_3D_INPUT_MODE_USER, 1585*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_FRAME_ALTERNATIVE, 1586*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_SIDE_BY_SIDE_HALF_INTERLACE, 1587*53ee8cc1Swenshuai.xi // optimize for format: in:E_XC_3D_INPUT_FRAME_PACKING, out:E_XC_3D_OUTPUT_TOP_BOTTOM,E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF 1588*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_FRAME_PACKING_OPT, 1589*53ee8cc1Swenshuai.xi // optimize for format: in:E_XC_3D_INPUT_TOP_BOTTOM, out:E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF 1590*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_TOP_BOTTOM_OPT, 1591*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_NORMAL_2D, 1592*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_NORMAL_2D_INTERLACE, 1593*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_NORMAL_2D_INTERLACE_PTP, 1594*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_SIDE_BY_SIDE_HALF_INTERLACE_OPT, 1595*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_NORMAL_2D_HW, //for hw 2D to 3D use 1596*53ee8cc1Swenshuai.xi E_XC_EX_3D_INPUT_PIXEL_ALTERNATIVE, 1597*53ee8cc1Swenshuai.xi } XC_EX_3D_INPUT_MODE; 1598*53ee8cc1Swenshuai.xi 1599*53ee8cc1Swenshuai.xi 1600*53ee8cc1Swenshuai.xi typedef enum 1601*53ee8cc1Swenshuai.xi { 1602*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_MODE_NONE, 1603*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_LINE_ALTERNATIVE , 1604*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_TOP_BOTTOM, 1605*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_SIDE_BY_SIDE_HALF, 1606*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_ALTERNATIVE, //25-->50,30-->60,24-->48,50-->100,60-->120----FRC 1:2 1607*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_L, 1608*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_R, 1609*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_ALTERNATIVE_NOFRC, //50->50, 60->60-------------------------------FRC 1:1 1610*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_CHECKBOARD_HW, //for hw 2d to 3d use 1611*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_LINE_ALTERNATIVE_HW, //for hw 2d to 3d use 1612*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_PIXEL_ALTERNATIVE_HW, //for hw 2d to 3d use 1613*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_L_HW, //for hw 2d to 3d use 1614*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_R_HW, //for hw 2d to 3d use 1615*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_ALTERNATIVE_HW, //for hw 2d to 3d use 1616*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_TOP_BOTTOM_HW, //for hw 2d to 3d use, it based on E_XC_3D_OUTPUT_TOP_BOTTOM implement 1617*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_SIDE_BY_SIDE_HALF_HW, //for hw 2d to 3d use, it based on E_XC_3D_OUTPUT_SIDE_BY_SIDE_HALF implement 1618*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_PACKING, 1619*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_ALTERNATIVE_LLRR,//for 4k0.5k@240 3D 1620*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FRAME_ALTERNATIVE_LLRR_HW,//for HW 2Dto3D 4k0.5k@240 3D 1621*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_TOP_TOP, 1622*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_BOTTOM_BOTTOM, 1623*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_LEFT_LEFT, 1624*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_RIGHT_RIGHT, 1625*53ee8cc1Swenshuai.xi } XC_EX_3D_OUTPUT_MODE; 1626*53ee8cc1Swenshuai.xi 1627*53ee8cc1Swenshuai.xi typedef enum 1628*53ee8cc1Swenshuai.xi { 1629*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FI_MODE_NONE , 1630*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FI_1920x1080 , 1631*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FI_960x1080 , 1632*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FI_1920x540 , 1633*53ee8cc1Swenshuai.xi 1634*53ee8cc1Swenshuai.xi E_XC_EX_3D_OUTPUT_FI_1280x720 , 1635*53ee8cc1Swenshuai.xi } XC_EX_3D_OUTPUT_FI_MODE; 1636*53ee8cc1Swenshuai.xi 1637*53ee8cc1Swenshuai.xi typedef enum 1638*53ee8cc1Swenshuai.xi { 1639*53ee8cc1Swenshuai.xi E_XC_EX_3D_AUTODETECT_SW, 1640*53ee8cc1Swenshuai.xi E_XC_EX_3D_AUTODETECT_HW, 1641*53ee8cc1Swenshuai.xi E_XC_EX_3D_AUTODETECT_HW_COMPATIBLE, 1642*53ee8cc1Swenshuai.xi E_XC_EX_3D_AUTODETECT_MAX 1643*53ee8cc1Swenshuai.xi } XC_EX_3D_AUTODETECT_METHOD; 1644*53ee8cc1Swenshuai.xi 1645*53ee8cc1Swenshuai.xi typedef enum 1646*53ee8cc1Swenshuai.xi { 1647*53ee8cc1Swenshuai.xi E_XC_EX_3D_PANEL_NONE, 1648*53ee8cc1Swenshuai.xi E_XC_EX_3D_PANEL_SHUTTER, //240hz panel, which can process updown, leftright,vertical or horizontal line weave 1649*53ee8cc1Swenshuai.xi E_XC_EX_3D_PANEL_PELLICLE, //120hz panel, which can only process horizontal line weave 1650*53ee8cc1Swenshuai.xi E_XC_EX_3D_PANEL_4K1K_SHUTTER, //120hz 4K1K panel, which can process updown, leftright,vertical or horizontal line weave 1651*53ee8cc1Swenshuai.xi E_XC_EX_3D_PANEL_MAX, 1652*53ee8cc1Swenshuai.xi } XC_EX_3D_PANEL_TYPE; 1653*53ee8cc1Swenshuai.xi 1654*53ee8cc1Swenshuai.xi //hw 2d to 3d para 1655*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1656*53ee8cc1Swenshuai.xi { 1657*53ee8cc1Swenshuai.xi MS_U32 u32Hw2dTo3dPara_Version; 1658*53ee8cc1Swenshuai.xi MS_U16 u16Concave; 1659*53ee8cc1Swenshuai.xi MS_U16 u16Gain; 1660*53ee8cc1Swenshuai.xi MS_U16 u16Offset; 1661*53ee8cc1Swenshuai.xi MS_U16 u16ArtificialGain; 1662*53ee8cc1Swenshuai.xi MS_U16 u16EleSel; 1663*53ee8cc1Swenshuai.xi MS_U16 u16ModSel; 1664*53ee8cc1Swenshuai.xi MS_U16 u16EdgeBlackWidth; 1665*53ee8cc1Swenshuai.xi } XC_EX_3D_HW2DTO3D_PARA; 1666*53ee8cc1Swenshuai.xi 1667*53ee8cc1Swenshuai.xi //detect 3d format para 1668*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1669*53ee8cc1Swenshuai.xi { 1670*53ee8cc1Swenshuai.xi MS_U32 u32Detect3DFormatPara_Version; //version control, back compatible 1671*53ee8cc1Swenshuai.xi //////////////////obsolete field begin/////////////////////////////////////////////////////////////////////////////////////////////////////////// 1672*53ee8cc1Swenshuai.xi MS_U16 u16HorSearchRange; //the horizontal range for find the similar pixel at R image 1673*53ee8cc1Swenshuai.xi MS_U16 u16VerSearchRange; //the vertical range for find the similar pixel at R image 1674*53ee8cc1Swenshuai.xi MS_U16 u16GYPixelThreshold; //g/y pixel threshold for define the similar pixel 1675*53ee8cc1Swenshuai.xi MS_U16 u16RCrPixelThreshold; //r/cr pixel threshold for define the similar pixel 1676*53ee8cc1Swenshuai.xi MS_U16 u16BCbPixelThreshold; //b/cb pixel threshold for define the similar pixel 1677*53ee8cc1Swenshuai.xi MS_U16 u16HorSampleCount; //the horizontal sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount 1678*53ee8cc1Swenshuai.xi MS_U16 u16VerSampleCount; //the vertical sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount 1679*53ee8cc1Swenshuai.xi MS_U16 u16MaxCheckingFrameCount; //the max checking frame count 1680*53ee8cc1Swenshuai.xi MS_U16 u16HitPixelPercentage; //the percentage about hit pixel in one frame total checked pixel, for example: 70%, need set as 70 1681*53ee8cc1Swenshuai.xi //////////////////obsolete field end///////////////////////////////////////////////////////////////////////////////////////////////////////////// 1682*53ee8cc1Swenshuai.xi MS_BOOL bEnableOverscan; //detect 3d format for considering overscan shift 1683*53ee8cc1Swenshuai.xi } XC_EX_3D_DETECT3DFORMAT_PARA; 1684*53ee8cc1Swenshuai.xi 1685*53ee8cc1Swenshuai.xi //define 3d fp info para 1686*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1687*53ee8cc1Swenshuai.xi { 1688*53ee8cc1Swenshuai.xi MS_U32 u32FPInfoPara_Version; //version control, back compatible 1689*53ee8cc1Swenshuai.xi MS_U16 u16HBlank; //horizontal blank 1690*53ee8cc1Swenshuai.xi MS_BOOL bEnableUserSetting; //enable user setting 1691*53ee8cc1Swenshuai.xi } XC_EX_3D_FPINFO_PARA; 1692*53ee8cc1Swenshuai.xi 1693*53ee8cc1Swenshuai.xi typedef enum 1694*53ee8cc1Swenshuai.xi { 1695*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_MODE_DISABLE_ALL = 0, 1696*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_MODE_DISABLE = 1, 1697*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_MODE_ENABLE = 2, 1698*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_MODE_MAX, 1699*53ee8cc1Swenshuai.xi } XC_EX_FPLL_DBG_MODE;//For debug purpose only! 1700*53ee8cc1Swenshuai.xi 1701*53ee8cc1Swenshuai.xi typedef enum 1702*53ee8cc1Swenshuai.xi { 1703*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_FLAG_PHASELIMIT = 0, 1704*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_FLAG_D5D6D7 = 1, 1705*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_FLAG_IGAIN = 2, 1706*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_FLAG_PGAIN = 3, 1707*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_FLAG_INITSETSTEP = 4, 1708*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_FLAG_INITSETDELAY= 5, 1709*53ee8cc1Swenshuai.xi E_XC_EX_DBG_FPLL_FLAG_MAX, 1710*53ee8cc1Swenshuai.xi } XC_EX_FPLL_DBG_FLAG;//For debug purpose only! 1711*53ee8cc1Swenshuai.xi 1712*53ee8cc1Swenshuai.xi typedef enum 1713*53ee8cc1Swenshuai.xi { 1714*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_MODE_DISABLE_ALL = 0, /// Disable all current FPLL customer setting(then scaler will auto decide it) 1715*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_MODE_DISABLE = 1, /// Disable the specified(by other function parameter) FPLL customer setting 1716*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_MODE_ENABLE = 2, /// Enable the specified(by other function parameter) FPLL customer setting 1717*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_MODE_MAX, 1718*53ee8cc1Swenshuai.xi } XC_EX_FPLL_MODE; 1719*53ee8cc1Swenshuai.xi 1720*53ee8cc1Swenshuai.xi typedef enum 1721*53ee8cc1Swenshuai.xi { 1722*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_FLAG_PHASELIMIT = 0, ///Set customer setting of PHASE limit 1723*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_FLAG_D5D6D7 = 1,///Set customer setting of D5D6D7 limit 1724*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_FLAG_IGAIN = 2,///Set customer setting of IGAIN 1725*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_FLAG_PGAIN = 3,///Set customer setting of PGAIN 1726*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_FLAG_INITSETSTEP = 4, ///steps to set DCLK 1727*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_FLAG_INITSETDELAY= 5, ///delay between steps when setting DCLK 1728*53ee8cc1Swenshuai.xi E_XC_EX_FPLL_FLAG_MAX, 1729*53ee8cc1Swenshuai.xi } XC_EX_FPLL_FLAG; 1730*53ee8cc1Swenshuai.xi 1731*53ee8cc1Swenshuai.xi typedef enum 1732*53ee8cc1Swenshuai.xi { 1733*53ee8cc1Swenshuai.xi E_XC_EX_MLOAD_UNSUPPORTED = 0, 1734*53ee8cc1Swenshuai.xi E_XC_EX_MLOAD_DISABLED = 1, 1735*53ee8cc1Swenshuai.xi E_XC_EX_MLOAD_ENABLED = 2, 1736*53ee8cc1Swenshuai.xi } XC_EX_MLOAD_TYPE; 1737*53ee8cc1Swenshuai.xi 1738*53ee8cc1Swenshuai.xi typedef enum 1739*53ee8cc1Swenshuai.xi { 1740*53ee8cc1Swenshuai.xi E_XC_EX_MLG_UNSUPPORTED = 0, 1741*53ee8cc1Swenshuai.xi E_XC_EX_MLG_DISABLED = 1, 1742*53ee8cc1Swenshuai.xi E_XC_EX_MLG_ENABLED = 2, 1743*53ee8cc1Swenshuai.xi } XC_EX_MLG_TYPE; 1744*53ee8cc1Swenshuai.xi 1745*53ee8cc1Swenshuai.xi typedef enum 1746*53ee8cc1Swenshuai.xi { 1747*53ee8cc1Swenshuai.xi E_XC_EX_HDMI_SYNC_DE, 1748*53ee8cc1Swenshuai.xi E_XC_EX_HDMI_SYNC_HV, 1749*53ee8cc1Swenshuai.xi } XC_EX_HDMI_SYNC_TYPE; 1750*53ee8cc1Swenshuai.xi 1751*53ee8cc1Swenshuai.xi typedef enum 1752*53ee8cc1Swenshuai.xi { 1753*53ee8cc1Swenshuai.xi E_XC_EX_FRC_1_1 = 0, 1754*53ee8cc1Swenshuai.xi E_XC_EX_FRC_1_2 = 1, 1755*53ee8cc1Swenshuai.xi E_XC_EX_FRC_5_12 = 2, 1756*53ee8cc1Swenshuai.xi E_XC_EX_FRC_2_5 = 3, 1757*53ee8cc1Swenshuai.xi E_XC_EX_FRC_1_4 = 4, 1758*53ee8cc1Swenshuai.xi } XC_EX_FRC_TYPE; 1759*53ee8cc1Swenshuai.xi 1760*53ee8cc1Swenshuai.xi // scaler FRC table 1761*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1762*53ee8cc1Swenshuai.xi { 1763*53ee8cc1Swenshuai.xi MS_U16 u16LowerBound; 1764*53ee8cc1Swenshuai.xi MS_U16 u16HigherBound; 1765*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) ||defined(UFO_PUBLIC_HEADER_300)||defined(UFO_PUBLIC_HEADER_700)||defined(UFO_PUBLIC_HEADER_212) 1766*53ee8cc1Swenshuai.xi MS_U8 u8FRC_In:4; // ivs 1767*53ee8cc1Swenshuai.xi MS_U8 u8FRC_Out:4; // ovs 1768*53ee8cc1Swenshuai.xi #else 1769*53ee8cc1Swenshuai.xi MS_U8 u8Padding; 1770*53ee8cc1Swenshuai.xi MS_U8 u8FRC_In; // ivs 1771*53ee8cc1Swenshuai.xi MS_U8 u8FRC_Out; // ovs 1772*53ee8cc1Swenshuai.xi #endif 1773*53ee8cc1Swenshuai.xi XC_EX_FRC_TYPE eFRC_Type; 1774*53ee8cc1Swenshuai.xi } XC_EX_FRC_SETTING; 1775*53ee8cc1Swenshuai.xi 1776*53ee8cc1Swenshuai.xi typedef enum 1777*53ee8cc1Swenshuai.xi { 1778*53ee8cc1Swenshuai.xi E_PQ_ex_IOCTL_GET_HSD_SAMPLING, 1779*53ee8cc1Swenshuai.xi E_PQ_ex_IOCTL_MAX, 1780*53ee8cc1Swenshuai.xi } E_PQ_ex_IOCTL_FLAG; 1781*53ee8cc1Swenshuai.xi 1782*53ee8cc1Swenshuai.xi 1783*53ee8cc1Swenshuai.xi typedef enum 1784*53ee8cc1Swenshuai.xi { 1785*53ee8cc1Swenshuai.xi E_XC_EX_GET_PIXEL_RET_FAIL = 0, ///<Fail 1786*53ee8cc1Swenshuai.xi E_XC_EX_GET_PIXEL_RET_OK, ///<OK 1787*53ee8cc1Swenshuai.xi E_XC_EX_GET_PIXEL_RET_OUT_OF_RANGE, ///< out of range 1788*53ee8cc1Swenshuai.xi } XC_EX_GET_PixelRGB_ReturnValue; 1789*53ee8cc1Swenshuai.xi 1790*53ee8cc1Swenshuai.xi 1791*53ee8cc1Swenshuai.xi typedef enum 1792*53ee8cc1Swenshuai.xi { 1793*53ee8cc1Swenshuai.xi E_XC_EX_GET_PIXEL_STAGE_AFTER_DLC = 0x01, 1794*53ee8cc1Swenshuai.xi E_XC_EX_GET_PIXEL_STAGE_PRE_GAMMA = 0x02, 1795*53ee8cc1Swenshuai.xi E_XC_EX_GET_PIXEL_STAGE_AFTER_OSD = 0x03, 1796*53ee8cc1Swenshuai.xi E_XC_EX_GET_PIXEL_STAGE_MAX = 0xFF, 1797*53ee8cc1Swenshuai.xi } XC_EX_GET_PIXEL_RGB_STAGE; 1798*53ee8cc1Swenshuai.xi 1799*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1800*53ee8cc1Swenshuai.xi { 1801*53ee8cc1Swenshuai.xi XC_EX_GET_PIXEL_RGB_STAGE enStage; 1802*53ee8cc1Swenshuai.xi MS_U16 u16x; 1803*53ee8cc1Swenshuai.xi MS_U16 u16y; 1804*53ee8cc1Swenshuai.xi MS_U32 u32r; 1805*53ee8cc1Swenshuai.xi MS_U32 u32g; 1806*53ee8cc1Swenshuai.xi MS_U32 u32b; 1807*53ee8cc1Swenshuai.xi } XC_EX_Get_Pixel_RGB; 1808*53ee8cc1Swenshuai.xi 1809*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1810*53ee8cc1Swenshuai.xi { 1811*53ee8cc1Swenshuai.xi MS_U32 u32ReportPixelInfo_Version; ///<Input: Version of current structure. Please always set to "XC_EX_REPORT_PIXELINFO_VERSION" as input 1812*53ee8cc1Swenshuai.xi MS_U16 u16ReportPixelInfo_Length; ///<Input: Length of this structure, u16ReportPixelInfo_Length=sizeof(MS_XC_REPORT_PIXELINFO) 1813*53ee8cc1Swenshuai.xi XC_EX_GET_PIXEL_RGB_STAGE enStage; ///<Input: Pixel info report stage 1814*53ee8cc1Swenshuai.xi MS_U16 u16RepWinColor; ///<Input:Report window Color 1815*53ee8cc1Swenshuai.xi MS_U16 u16XStart; ///<Input: X start location of report window 1816*53ee8cc1Swenshuai.xi MS_U16 u16XEnd; ///<Input: X end location of report window 1817*53ee8cc1Swenshuai.xi MS_U16 u16YStart; ///<Input: Y start location of report window 1818*53ee8cc1Swenshuai.xi MS_U16 u16YEnd; ///<Input: Y end location of report window 1819*53ee8cc1Swenshuai.xi MS_U16 u16RCrMin; ///<Output:R or Cr min value 1820*53ee8cc1Swenshuai.xi MS_U16 u16RCrMax; ///<Output:R or Cr max value 1821*53ee8cc1Swenshuai.xi MS_U16 u16GYMin; ///<Output:G or Y min value 1822*53ee8cc1Swenshuai.xi MS_U16 u16GYMax; ///<Output:G or Y max value 1823*53ee8cc1Swenshuai.xi MS_U16 u16BCbMin; ///<Output:B or Cb min value 1824*53ee8cc1Swenshuai.xi MS_U16 u16BCbMax; ///<Output:B or Cb max value 1825*53ee8cc1Swenshuai.xi MS_U32 u32RCrSum; ///<Output:R or Cr sum value 1826*53ee8cc1Swenshuai.xi MS_U32 u32GYSum; ///<Output:G or Y sum value 1827*53ee8cc1Swenshuai.xi MS_U32 u32BCbSum; ///<Output:B or Cb sum value 1828*53ee8cc1Swenshuai.xi MS_BOOL bShowRepWin; ///<Input: Show report window or not 1829*53ee8cc1Swenshuai.xi } XC_EX_REPORT_PIXELINFO; 1830*53ee8cc1Swenshuai.xi 1831*53ee8cc1Swenshuai.xi // scaler interrupt sources 1832*53ee8cc1Swenshuai.xi typedef enum 1833*53ee8cc1Swenshuai.xi { 1834*53ee8cc1Swenshuai.xi // 0x00, first 4 bits are unused 1835*53ee8cc1Swenshuai.xi E_SC_EX_INT_DIPW = 1, //DIPW write one frame done interrupt 1836*53ee8cc1Swenshuai.xi E_SC_EX_INT_MEMSYNC_MAIN = 3, 1837*53ee8cc1Swenshuai.xi E_SC_EX_INT_START = 4, 1838*53ee8cc1Swenshuai.xi E_SC_EX_INT_RESERVED1 = E_SC_EX_INT_START, // before is SC_INT_TUNE_FAIL_P, FBL line buffer overrun/underrun 1839*53ee8cc1Swenshuai.xi // scaler dosen't have this interrupt now, 1840*53ee8cc1Swenshuai.xi 1841*53ee8cc1Swenshuai.xi E_SC_EX_INT_VSINT, // output Vsync interrupt, can select polarity with BK0_04[1] 1842*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_VTT_CHG, // main window, HDMI mute or Vsync polarity changed, Vtt change exceed BK1_1D[11:8] 1843*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_VTT_CHG, 1844*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_VS_LOSE, // didn't received Vsync for a while or Vtt count BK1_1F[10:0] exceed max value 1845*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_VS_LOSE, 1846*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_JITTER, // H/V start/end didn't be the same with privous value, usually used in HDMI/DVI input 1847*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_JITTER, 1848*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_IPVS_SB, // input V sync interrupt, can select which edge to trigger this interrupt with BK0_04[0] 1849*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_IPVS_SB, 1850*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_IPHCS_DET, // input H sync interrupt 1851*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_IPHCS_DET, 1852*53ee8cc1Swenshuai.xi 1853*53ee8cc1Swenshuai.xi // 0x10 1854*53ee8cc1Swenshuai.xi E_SC_EX_INT_PWM_RP_L_INT, // pwm rising edge of left frame 1855*53ee8cc1Swenshuai.xi E_SC_EX_INT_PWM_FP_L_INT, // pwm falling edge of left frame 1856*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_HTT_CHG, // Hsync polarity changed or Hperiod change exceed BK1_1D[5:0] 1857*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_HTT_CHG, 1858*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_HS_LOSE, // didn't received H sync for a while or Hperiod count BK1_20[13:0] exceed max value 1859*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_HS_LOSE, 1860*53ee8cc1Swenshuai.xi E_SC_EX_INT_PWM_RP_R_INT, // pwm rising edge of right frame 1861*53ee8cc1Swenshuai.xi E_SC_EX_INT_PWM_FP_R_INT, // pwm falling edge of right frame 1862*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_CSOG, // composite sync or SoG input signal type changed (for example, SoG signal from none -> valid, valid -> none) 1863*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_CSOG, 1864*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATS_READY 1865*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATS_READY 1866*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_ATP_READY, // auto phase ready interrupt 1867*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_ATP_READY, 1868*53ee8cc1Swenshuai.xi E_SC_EX_INT_F2_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATG_READY 1869*53ee8cc1Swenshuai.xi E_SC_EX_INT_F1_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATG_READY 1870*53ee8cc1Swenshuai.xi 1871*53ee8cc1Swenshuai.xi E_SC_EX_MAX_SC_INT, 1872*53ee8cc1Swenshuai.xi } SC_EX_INT_SRC; 1873*53ee8cc1Swenshuai.xi 1874*53ee8cc1Swenshuai.xi typedef enum 1875*53ee8cc1Swenshuai.xi { 1876*53ee8cc1Swenshuai.xi // 0x00, first 4 bits are unused 1877*53ee8cc1Swenshuai.xi E_XC_EX_INT_RESERVED1 = 4, ///< scaler dosen't have this interrupt now 1878*53ee8cc1Swenshuai.xi E_XC_EX_INT_VSINT, ///< output Vsync interrupt 1879*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_VTT_CHG, ///< main window, HDMI mute or Vsync polarity changed, Vtt change exceed BK1_1D[11:8] 1880*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_VTT_CHG, 1881*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_VS_LOSE, ///< didn't received Vsync for a while or Vtt count BK1_1F[10:0] exceed max value 1882*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_VS_LOSE, 1883*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_JITTER, ///< H/V start/end didn't be the same with privous value, usually used in HDMI/DVI input 1884*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_JITTER, 1885*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_IPVS_SB, ///< input V sync interrupt 1886*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_IPVS_SB, 1887*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_IPHCS_DET, ///< input H sync interrupt 1888*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_IPHCS_DET, 1889*53ee8cc1Swenshuai.xi 1890*53ee8cc1Swenshuai.xi // 0x10 1891*53ee8cc1Swenshuai.xi E_XC_EX_INT_PWM_RP_L_INT, ///< pwm rising edge of left frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 1892*53ee8cc1Swenshuai.xi E_XC_EX_INT_PWM_FP_L_INT, ///< pwm falling edge of left frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 1893*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_HTT_CHG, ///< Hsync polarity changed or Hperiod change exceed BK1_1D[5:0] 1894*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_HTT_CHG, 1895*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_HS_LOSE, ///< didn't received H sync for a while or Hperiod count BK1_20[13:0] exceed max value 1896*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_HS_LOSE, 1897*53ee8cc1Swenshuai.xi E_XC_EX_INT_PWM_RP_R_INT, ///< pwm rising edge of right frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 1898*53ee8cc1Swenshuai.xi E_XC_EX_INT_PWM_FP_R_INT, ///< pwm falling edge of right frame, please use MDrv_XC_InterruptAvaliable() to check if avalible or not 1899*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_CSOG, ///< composite sync or SoG input signal type changed (for example, SoG signal from none -> valid, valid -> none) 1900*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_CSOG, 1901*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_RESERVED2, ///< scaler dosen't have this interrupt now 1902*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_RESERVED2, 1903*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_ATP_READY, ///< auto phase ready interrupt 1904*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_ATP_READY, 1905*53ee8cc1Swenshuai.xi E_XC_EX_INT_F2_RESERVED3, ///< scaler dosen't have this interrupt now 1906*53ee8cc1Swenshuai.xi E_XC_EX_INT_F1_RESERVED3, 1907*53ee8cc1Swenshuai.xi } XC_EX_INT_SRC; 1908*53ee8cc1Swenshuai.xi 1909*53ee8cc1Swenshuai.xi /// OP2 Video/GOP layer switch 1910*53ee8cc1Swenshuai.xi typedef enum 1911*53ee8cc1Swenshuai.xi { 1912*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_VIDEO_MUX1_MUX2 = 0, ///<0: Video->GOP1->GOP2 (GOP2 is one pipe later than GOP1) 1913*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_FRAME_VIDEO_MUX1_MUX2, ///<1: FrameColor->Video->GOP1->GOP2 (GOP1/GOP2 smae pipe) 1914*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_FRAME_VIDEO_MUX2_MUX1, ///<2: FrameColor->Video->GOP2->GOP1 (GOP1/GOP2 smae pipe) 1915*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_FRAME_MUX1_VIDEO_MUX2, ///<3: FrameColor->GOP1->Video->GOP2 (GOP1/GOP2 smae pipe) 1916*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_FRAME_MUX1_MUX2_VIDEO, ///<4: FrameColor->GOP1->GOP2->Video (GOP1/GOP2 smae pipe) 1917*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_FRAME_MUX2_VIDEO_MUX1, ///<5: FrameColor->GOP2->Video->GOP1 (GOP1/GOP2 smae pipe) 1918*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_FRAME_MUX2_MUX1_VIDEO, ///<6: FrameColor->GOP2->GOP1->Video (GOP1/GOP2 smae pipe) 1919*53ee8cc1Swenshuai.xi E_XC_EX_VOP_LAYER_RESERVED, 1920*53ee8cc1Swenshuai.xi } XC_EX_VOP_OSD_LAYER_SEL; 1921*53ee8cc1Swenshuai.xi 1922*53ee8cc1Swenshuai.xi /// OP2VOP de select 1923*53ee8cc1Swenshuai.xi typedef enum 1924*53ee8cc1Swenshuai.xi { 1925*53ee8cc1Swenshuai.xi E_XC_EX_OP2VOPDE_MAINWINDOW = 0, ///<0: capture main display window, no osd 1926*53ee8cc1Swenshuai.xi E_XC_EX_OP2VOPDE_SUBWINDOW, ///<1: capture sub display window, no osd 1927*53ee8cc1Swenshuai.xi E_XC_EX_OP2VOPDE_WHOLEFRAME, ///<2: Whole frame of panel DE, no osd 1928*53ee8cc1Swenshuai.xi E_XC_EX_OP2VOPDE_WHOLEFRAME_WITHOSD, ///<3: Whole frame of panel DE, with osd 1929*53ee8cc1Swenshuai.xi } XC_EX_OP2VOP_DE_SEL; 1930*53ee8cc1Swenshuai.xi 1931*53ee8cc1Swenshuai.xi typedef void (*SC_EX_InterruptCb) (SC_EX_INT_SRC enIntNum, void *pParam); ///< Interrupt callback function 1932*53ee8cc1Swenshuai.xi 1933*53ee8cc1Swenshuai.xi 1934*53ee8cc1Swenshuai.xi //Define Output Frame control 1935*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1936*53ee8cc1Swenshuai.xi { 1937*53ee8cc1Swenshuai.xi MS_U32 u32XC_version; ///<Version of current structure. 1938*53ee8cc1Swenshuai.xi MS_U16 u16InVFreq; ///<input V frequency 1939*53ee8cc1Swenshuai.xi MS_U16 u16OutVFreq; ///<output V frequncy 1940*53ee8cc1Swenshuai.xi MS_BOOL bInterlace; ///<whether it's interlace 1941*53ee8cc1Swenshuai.xi 1942*53ee8cc1Swenshuai.xi } XC_EX_OUTPUTFRAME_Info; 1943*53ee8cc1Swenshuai.xi 1944*53ee8cc1Swenshuai.xi /// Define XC Init MISC 1945*53ee8cc1Swenshuai.xi /// please enum use BIT0 = 1, BIT1 = 2, BIT3 = 4 1946*53ee8cc1Swenshuai.xi typedef enum 1947*53ee8cc1Swenshuai.xi { 1948*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_NULL = 0, 1949*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_IMMESWITCH = 1, 1950*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_IMMESWITCH_DVI_POWERSAVING = 2, 1951*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_DVI_AUTO_EQ = 4, 1952*53ee8cc1Swenshuai.xi 1953*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_FRC_INSIDE = 8, 1954*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_OSD_TO_HSLVDS = 0x10, 1955*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_FRC_INSIDE_60HZ = 0x20, // for 60Hz FRC case 1956*53ee8cc1Swenshuai.xi E_XC_EX_INIT_MISC_A_FRC_INSIDE_240HZ = 0x40, // for 240Hz FRC case 1957*53ee8cc1Swenshuai.xi } XC_EX_INIT_MISC_A; 1958*53ee8cc1Swenshuai.xi 1959*53ee8cc1Swenshuai.xi 1960*53ee8cc1Swenshuai.xi /// Define the initial MISC for XC 1961*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1962*53ee8cc1Swenshuai.xi { 1963*53ee8cc1Swenshuai.xi MS_U32 u32XCMISC_version; ///<Version of current structure. 1964*53ee8cc1Swenshuai.xi MS_U32 u32MISC_A; 1965*53ee8cc1Swenshuai.xi MS_U32 u32MISC_B; 1966*53ee8cc1Swenshuai.xi MS_U32 u32MISC_C; 1967*53ee8cc1Swenshuai.xi MS_U32 u32MISC_D; 1968*53ee8cc1Swenshuai.xi } XC_EX_INITMISC; 1969*53ee8cc1Swenshuai.xi 1970*53ee8cc1Swenshuai.xi typedef enum 1971*53ee8cc1Swenshuai.xi { 1972*53ee8cc1Swenshuai.xi E_XC_EX_FLOCK_DIV_OFF = 0, 1973*53ee8cc1Swenshuai.xi E_XC_EX_FLOCK_DIV_ON, 1974*53ee8cc1Swenshuai.xi E_XC_EX_FLOCK_FPLL_ON, 1975*53ee8cc1Swenshuai.xi 1976*53ee8cc1Swenshuai.xi } XC_EX_FLOCK_TYPE; 1977*53ee8cc1Swenshuai.xi 1978*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1979*53ee8cc1Swenshuai.xi { 1980*53ee8cc1Swenshuai.xi // memory 1981*53ee8cc1Swenshuai.xi MS_PHY u32FRC_MEMC_MemAddr; 1982*53ee8cc1Swenshuai.xi MS_PHY u32FRC_MEMC_MemSize; 1983*53ee8cc1Swenshuai.xi MS_PHY u32FRC_OD_MemAddr; 1984*53ee8cc1Swenshuai.xi MS_PHY u32FRC_OD_MemSize; 1985*53ee8cc1Swenshuai.xi MS_PHY u32FRC_LD_MemAddr; 1986*53ee8cc1Swenshuai.xi MS_PHY u32FRC_LD_MemSize; 1987*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME1_MemAddr; 1988*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME1_MemSize; 1989*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME2_MemAddr; 1990*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ME2_MemSize; 1991*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_MemAddr; 1992*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_MemSize; 1993*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_Detection_MemAddr; 1994*53ee8cc1Swenshuai.xi MS_PHY u32FRC_2D3D_Render_Detection_MemSize; 1995*53ee8cc1Swenshuai.xi MS_PHY u32FRC_Halo_MemAddr; 1996*53ee8cc1Swenshuai.xi MS_PHY u32FRC_Halo_MemSize; 1997*53ee8cc1Swenshuai.xi MS_PHY u32FRC_R2_MemAddr; 1998*53ee8cc1Swenshuai.xi MS_PHY u32FRC_R2_MemSize; 1999*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ADL_MemAddr; 2000*53ee8cc1Swenshuai.xi MS_PHY u32FRC_ADL_MemSize; 2001*53ee8cc1Swenshuai.xi 2002*53ee8cc1Swenshuai.xi MS_PHY u32FRC_FrameSize; 2003*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_700) ||defined(UFO_PUBLIC_HEADER_300) ||defined(UFO_PUBLIC_HEADER_212) 2004*53ee8cc1Swenshuai.xi MS_U16 u16FB_YcountLinePitch; 2005*53ee8cc1Swenshuai.xi #else 2006*53ee8cc1Swenshuai.xi MS_PHY u16FB_YcountLinePitch; 2007*53ee8cc1Swenshuai.xi #endif 2008*53ee8cc1Swenshuai.xi MS_U16 u16PanelWidth; 2009*53ee8cc1Swenshuai.xi MS_U16 u16PanelHeigh; 2010*53ee8cc1Swenshuai.xi MS_U8 u8FRC3DPanelType; 2011*53ee8cc1Swenshuai.xi MS_U8 u83Dmode; 2012*53ee8cc1Swenshuai.xi MS_U8 u8IpMode; 2013*53ee8cc1Swenshuai.xi MS_U8 u8MirrorMode; 2014*53ee8cc1Swenshuai.xi MS_U8 u83D_FI_out; 2015*53ee8cc1Swenshuai.xi MS_BOOL bFRC; 2016*53ee8cc1Swenshuai.xi 2017*53ee8cc1Swenshuai.xi } XC_EX_FRC_INFO, *p_XC_EX_FRC_INFO; 2018*53ee8cc1Swenshuai.xi 2019*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 2020*53ee8cc1Swenshuai.xi { 2021*53ee8cc1Swenshuai.xi MS_U32 u32XC_PREINIT_version; ///<Version of current structure. 2022*53ee8cc1Swenshuai.xi // FRC control info 2023*53ee8cc1Swenshuai.xi XC_EX_FRC_INFO FRCInfo; 2024*53ee8cc1Swenshuai.xi 2025*53ee8cc1Swenshuai.xi MS_U16 u16VTrigX; 2026*53ee8cc1Swenshuai.xi MS_U16 u16VTrigY; 2027*53ee8cc1Swenshuai.xi 2028*53ee8cc1Swenshuai.xi /////////////////////////////////////////////// 2029*53ee8cc1Swenshuai.xi // panel timing spec. 2030*53ee8cc1Swenshuai.xi /////////////////////////////////////////////// 2031*53ee8cc1Swenshuai.xi // sync related 2032*53ee8cc1Swenshuai.xi MS_U8 u8PanelHSyncWidth; ///< VOP_01[7:0], PANEL_HSYNC_WIDTH 2033*53ee8cc1Swenshuai.xi MS_U8 u8PanelHSyncBackPorch; ///< PANEL_HSYNC_BACK_PORCH, no register setting, provide value for query only 2034*53ee8cc1Swenshuai.xi 2035*53ee8cc1Swenshuai.xi ///< not support Manuel VSync Start/End now 2036*53ee8cc1Swenshuai.xi ///< VOP_02[10:0] VSync start = Vtt - VBackPorch - VSyncWidth 2037*53ee8cc1Swenshuai.xi ///< VOP_03[10:0] VSync end = Vtt - VBackPorch 2038*53ee8cc1Swenshuai.xi MS_U8 u8PanelVSyncWidth; ///< define PANEL_VSYNC_WIDTH 2039*53ee8cc1Swenshuai.xi MS_U8 u8PanelVSyncBackPorch; ///< define PANEL_VSYNC_BACK_PORCH 2040*53ee8cc1Swenshuai.xi 2041*53ee8cc1Swenshuai.xi } XC_EX_PREINIT_INFO, *p_XC_EX_PREINIT_INFO; 2042*53ee8cc1Swenshuai.xi 2043*53ee8cc1Swenshuai.xi typedef enum 2044*53ee8cc1Swenshuai.xi { 2045*53ee8cc1Swenshuai.xi E_XC_EX_PREINIT_NULL = 0x00, 2046*53ee8cc1Swenshuai.xi E_XC_EX_PREINIT_FRC = 0x01, 2047*53ee8cc1Swenshuai.xi E_XC_EX_PREINIT_FRC_3D_TYPE = 0x02, 2048*53ee8cc1Swenshuai.xi E_XC_EX_PREINIT_NUM, 2049*53ee8cc1Swenshuai.xi 2050*53ee8cc1Swenshuai.xi } XC_EX_PREINIT; 2051*53ee8cc1Swenshuai.xi 2052*53ee8cc1Swenshuai.xi typedef enum 2053*53ee8cc1Swenshuai.xi { 2054*53ee8cc1Swenshuai.xi E_XC_EX_MIRROR_NORMAL, 2055*53ee8cc1Swenshuai.xi E_XC_EX_MIRROR_H_ONLY, 2056*53ee8cc1Swenshuai.xi E_XC_EX_MIRROR_V_ONLY, 2057*53ee8cc1Swenshuai.xi E_XC_EX_MIRROR_HV, 2058*53ee8cc1Swenshuai.xi E_XC_EX_MIRROR_MAX, 2059*53ee8cc1Swenshuai.xi } XC_EX_MirrorMode; 2060*53ee8cc1Swenshuai.xi 2061*53ee8cc1Swenshuai.xi typedef enum 2062*53ee8cc1Swenshuai.xi { 2063*53ee8cc1Swenshuai.xi E_XC_EX_MEMORY_IP_READ_REQUEST, ///< memory request for IP read 2064*53ee8cc1Swenshuai.xi E_XC_EX_MEMORY_IP_WRITE_REQUEST, ///< memory request for IP write 2065*53ee8cc1Swenshuai.xi E_XC_EX_MEMORY_OP_READ_REQUEST, ///< memory request for OP read 2066*53ee8cc1Swenshuai.xi E_XC_EX_MEMORY_OP_WRITE_REQUEST, ///< memory request for OP write 2067*53ee8cc1Swenshuai.xi E_XC_EX_MEMORY_REQUEST_MAX, ///< Invalid request 2068*53ee8cc1Swenshuai.xi } XC_EX_MEMORY_REQUEST_TYPE; 2069*53ee8cc1Swenshuai.xi 2070*53ee8cc1Swenshuai.xi 2071*53ee8cc1Swenshuai.xi /// OP2 Video/GOP layer switch 2072*53ee8cc1Swenshuai.xi typedef enum 2073*53ee8cc1Swenshuai.xi { 2074*53ee8cc1Swenshuai.xi E_XC_EX_VIDEO_ON_OSD_LAYER_DEAFULT = 0, ///< video -> osd layer 0 -> osd layer 1 -> osd layer 2 -> osd layer 3 2075*53ee8cc1Swenshuai.xi E_XC_EX_VIDEO_ON_OSD_LAYER_0 = 1, ///< osd layer 0 -> video -> osd layer 1 -> osd layer 2 -> osd layer 3 2076*53ee8cc1Swenshuai.xi E_XC_EX_VIDEO_ON_OSD_LAYER_1 = 2, ///< osd layer 0 -> osd layer 1 -> video -> osd layer 2 -> osd layer 3 2077*53ee8cc1Swenshuai.xi E_XC_EX_VIDEO_ON_OSD_LAYER_2 = 3, ///< osd layer 0 -> osd layer 1 -> osd layer 2 -> video -> osd layer 3 2078*53ee8cc1Swenshuai.xi E_XC_EX_VIDEO_ON_OSD_LAYER_3 = 4, ///< osd layer 0 -> osd layer 1 -> osd layer 2 -> osd layer 3 -> video 2079*53ee8cc1Swenshuai.xi E_XC_EX_VIDEO_ON_OSD_LAYER_NUM, 2080*53ee8cc1Swenshuai.xi } XC_EX_VIDEO_ON_OSD_LAYER; 2081*53ee8cc1Swenshuai.xi 2082*53ee8cc1Swenshuai.xi /// Osd Index 2083*53ee8cc1Swenshuai.xi typedef enum 2084*53ee8cc1Swenshuai.xi { 2085*53ee8cc1Swenshuai.xi E_XC_EX_OSD_0 = 0, ///< osd0 2086*53ee8cc1Swenshuai.xi E_XC_EX_OSD_1 = 1, ///< osd1 2087*53ee8cc1Swenshuai.xi E_XC_EX_OSD_2 = 2, ///< osd2 2088*53ee8cc1Swenshuai.xi E_XC_EX_OSD_3 = 3, ///< osd3 2089*53ee8cc1Swenshuai.xi E_XC_EX_OSD_4 = 4, ///< osd3 2090*53ee8cc1Swenshuai.xi E_XC_EX_OSD_NUM, 2091*53ee8cc1Swenshuai.xi } E_XC_EX_OSD_INDEX; 2092*53ee8cc1Swenshuai.xi 2093*53ee8cc1Swenshuai.xi /// Osd Index 2094*53ee8cc1Swenshuai.xi typedef enum 2095*53ee8cc1Swenshuai.xi { 2096*53ee8cc1Swenshuai.xi E_XC_EX_OSD_BlENDING_MODE0 = 0, ///< a*OSD + (1-a)*Video 2097*53ee8cc1Swenshuai.xi E_XC_EX_OSD_BlENDING_MODE1 = 1, ///< OSD + (1-a)*Video 2098*53ee8cc1Swenshuai.xi E_XC_EX_OSD_BlENDING_TYPE_NUM, 2099*53ee8cc1Swenshuai.xi } XC_EX_OSD_BlENDING_TYPE; 2100*53ee8cc1Swenshuai.xi 2101*53ee8cc1Swenshuai.xi /// Scaling type 2102*53ee8cc1Swenshuai.xi typedef enum 2103*53ee8cc1Swenshuai.xi { 2104*53ee8cc1Swenshuai.xi E_XC_EX_PRE_SCALING = 0, 2105*53ee8cc1Swenshuai.xi E_XC_EX_POST_SCALING, 2106*53ee8cc1Swenshuai.xi E_XC_EX_BOTH_SCALING, 2107*53ee8cc1Swenshuai.xi } XC_EX_SCALING_TYPE; 2108*53ee8cc1Swenshuai.xi 2109*53ee8cc1Swenshuai.xi /// HV Vector type 2110*53ee8cc1Swenshuai.xi typedef enum 2111*53ee8cc1Swenshuai.xi { 2112*53ee8cc1Swenshuai.xi E_XC_EX_H_VECTOR = 0, 2113*53ee8cc1Swenshuai.xi E_XC_EX_V_VECTOR, 2114*53ee8cc1Swenshuai.xi E_XC_EX_HV_VECTOR, 2115*53ee8cc1Swenshuai.xi } XC_EX_VECTOR_TYPE; 2116*53ee8cc1Swenshuai.xi 2117*53ee8cc1Swenshuai.xi /// Define MCDI buffer type 2118*53ee8cc1Swenshuai.xi typedef enum 2119*53ee8cc1Swenshuai.xi { 2120*53ee8cc1Swenshuai.xi E_XC_EX_MCDI_ME1 = 0, ///< Main MDCI ME1 2121*53ee8cc1Swenshuai.xi E_XC_EX_MCDI_ME2 = 1, ///< Main MDCI ME2 2122*53ee8cc1Swenshuai.xi E_XC_EX_MCDI_BOTH, ///< Main MDCI ME1+ME2 2123*53ee8cc1Swenshuai.xi E_XC_EX_MCDI_SUB_ME1, ///< Sub MDCI ME1 2124*53ee8cc1Swenshuai.xi E_XC_EX_MCDI_SUB_ME2, ///< Sub MDCI ME2 2125*53ee8cc1Swenshuai.xi E_XC_EX_MCDI_SUB_BOTH, ///< Sub MDCI ME1+ME2 2126*53ee8cc1Swenshuai.xi E_XC_EX_MCDI_MAX, 2127*53ee8cc1Swenshuai.xi } XC_EX_MCDI_TYPE; 2128*53ee8cc1Swenshuai.xi 2129*53ee8cc1Swenshuai.xi typedef struct 2130*53ee8cc1Swenshuai.xi { 2131*53ee8cc1Swenshuai.xi MS_U8 p1; 2132*53ee8cc1Swenshuai.xi MS_U8 p2; 2133*53ee8cc1Swenshuai.xi MS_U8 p3; 2134*53ee8cc1Swenshuai.xi MS_U8 p4; 2135*53ee8cc1Swenshuai.xi MS_U8 p5; 2136*53ee8cc1Swenshuai.xi MS_U8 p6; 2137*53ee8cc1Swenshuai.xi MS_U8 p7; 2138*53ee8cc1Swenshuai.xi MS_U8 p8; 2139*53ee8cc1Swenshuai.xi } XC_EX_FRC_R2_CMD_PARAMETER, *p_XC_EX_FRC_R2_CMD_PARAMETER; 2140*53ee8cc1Swenshuai.xi //LD 2141*53ee8cc1Swenshuai.xi 2142*53ee8cc1Swenshuai.xi typedef enum 2143*53ee8cc1Swenshuai.xi { 2144*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_LG32inch_LR10 = 0x0, 2145*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_LG37inch_LR10 = 0x1, 2146*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_LG42inch_LR16 = 0x2, 2147*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_LG47inch_LR16 = 0x3, 2148*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_LG55inch_LR16 = 0x4, 2149*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_LG55inch_LR12 = 0x5, 2150*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_CMO42inch_LR16 = 0x6, 2151*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_DEFAULT, 2152*53ee8cc1Swenshuai.xi E_XC_EX_LD_PANEL_NUMS, 2153*53ee8cc1Swenshuai.xi } XC_EX_LD_PANEL_TYPE; 2154*53ee8cc1Swenshuai.xi 2155*53ee8cc1Swenshuai.xi typedef enum 2156*53ee8cc1Swenshuai.xi { 2157*53ee8cc1Swenshuai.xi E_XC_EX_LD_MODE_OFF = 0, 2158*53ee8cc1Swenshuai.xi E_XC_EX_LD_MODE_LOW = 1, 2159*53ee8cc1Swenshuai.xi E_XC_EX_LD_MODE_MID = 2, 2160*53ee8cc1Swenshuai.xi E_XC_EX_LD_MODE_HIGH = 3, 2161*53ee8cc1Swenshuai.xi } XC_EX_LD_MODE; 2162*53ee8cc1Swenshuai.xi 2163*53ee8cc1Swenshuai.xi //parameters for detecting nine lattice 2164*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2165*53ee8cc1Swenshuai.xi { 2166*53ee8cc1Swenshuai.xi MS_U16 u16PixelStep; // distance between sample points 2167*53ee8cc1Swenshuai.xi MS_U8 u8ColorThreshold; // max color difference 2168*53ee8cc1Swenshuai.xi MS_U8 u8TryTimes; // max times for detecting 2169*53ee8cc1Swenshuai.xi MS_U16 u16LinearDiff; // difference for every 3 lattice in a line 2170*53ee8cc1Swenshuai.xi } XC_EX_DETECTNL_PARA; 2171*53ee8cc1Swenshuai.xi 2172*53ee8cc1Swenshuai.xi #define XC_EX_FRC_PATHCTRL_ALLOFF (0x0000) 2173*53ee8cc1Swenshuai.xi #define XC_EX_FRC_PATHCTRL_OP2COLORMATRIX (0x0001) 2174*53ee8cc1Swenshuai.xi #define XC_EX_FRC_PATHCTRL_OP2CSCDITHER (0x0002) 2175*53ee8cc1Swenshuai.xi #define XC_EX_FRC_PATHCTRL_OP2BRIGHTNESS (0x0004) 2176*53ee8cc1Swenshuai.xi #define XC_EX_FRC_PATHCTRL_OP2CONTRAST (0x0008) 2177*53ee8cc1Swenshuai.xi #define XC_EX_FRC_PATHCTRL_OP2NOISEROUND (0x0010) 2178*53ee8cc1Swenshuai.xi 2179*53ee8cc1Swenshuai.xi // OSDC TIMING GEN 2180*53ee8cc1Swenshuai.xi typedef struct 2181*53ee8cc1Swenshuai.xi { 2182*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HTotal; 2183*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VTotal; 2184*53ee8cc1Swenshuai.xi 2185*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Hsync_Start; 2186*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Hsync_End; 2187*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HframDE_Start; 2188*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_HframDE_End; 2189*53ee8cc1Swenshuai.xi 2190*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Vsync_Start; 2191*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_Vsync_End; 2192*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VframDE_Start; 2193*53ee8cc1Swenshuai.xi MS_U16 u16OC_Tgen_VframDE_End; 2194*53ee8cc1Swenshuai.xi } XC_EX_OSDC_TGEN_INFO; 2195*53ee8cc1Swenshuai.xi 2196*53ee8cc1Swenshuai.xi // OSDC MISC Control 2197*53ee8cc1Swenshuai.xi typedef struct 2198*53ee8cc1Swenshuai.xi { 2199*53ee8cc1Swenshuai.xi MS_BOOL bOC_ClK_En; 2200*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Bypass_En; 2201*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_InvAlpha_En; 2202*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Hsync_Vfde_Out; // 1:hs_out = hs&vfde 2203*53ee8cc1Swenshuai.xi MS_BOOL bOC_Mixer_Hfde_Vfde_Out; // 1:hs_out = de(hfde)&vfde 2204*53ee8cc1Swenshuai.xi MS_U16 u16OC_Lpll_type; 2205*53ee8cc1Swenshuai.xi MS_U8 u8OC_OutputFormat; // output bit order 2206*53ee8cc1Swenshuai.xi } XC_EX_OSDC_CTRL_INFO; 2207*53ee8cc1Swenshuai.xi 2208*53ee8cc1Swenshuai.xi typedef enum 2209*53ee8cc1Swenshuai.xi { 2210*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_TGEN_MANUAL = 0, 2211*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_TGEN_1366x768, 2212*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_TGEN_1920x1080, 2213*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_TGEN_3840x2160, 2214*53ee8cc1Swenshuai.xi 2215*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_TGEN_MAX, 2216*53ee8cc1Swenshuai.xi } XC_EX_OSDC_TGEN_Type; 2217*53ee8cc1Swenshuai.xi 2218*53ee8cc1Swenshuai.xi typedef enum 2219*53ee8cc1Swenshuai.xi { 2220*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_INIT = 0, 2221*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_CTRL_TGEN, 2222*53ee8cc1Swenshuai.xi E_XC_EX_OSDC_CTRL_MISC, 2223*53ee8cc1Swenshuai.xi 2224*53ee8cc1Swenshuai.xi } XC_EX_OSDC_CTRL_TYPE; 2225*53ee8cc1Swenshuai.xi 2226*53ee8cc1Swenshuai.xi //OSDC Display information 2227*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2228*53ee8cc1Swenshuai.xi { 2229*53ee8cc1Swenshuai.xi MS_U32 ODSC_DISPInfo_Version; ///<Version of current structure. Please always set to "u32Osdc_dispinfo_Version" as input 2230*53ee8cc1Swenshuai.xi 2231*53ee8cc1Swenshuai.xi MS_U32 VDTOT; //Output vertical total 2232*53ee8cc1Swenshuai.xi MS_U32 DEVST; //Output DE Vertical start 2233*53ee8cc1Swenshuai.xi MS_U32 DEVEND; //Output DE Vertical end 2234*53ee8cc1Swenshuai.xi MS_U32 HDTOT; // Output horizontal total 2235*53ee8cc1Swenshuai.xi MS_U32 DEHST; //Output DE horizontal start 2236*53ee8cc1Swenshuai.xi MS_U32 DEHEND; // Output DE horizontal end 2237*53ee8cc1Swenshuai.xi 2238*53ee8cc1Swenshuai.xi MS_U32 SYNCHST; 2239*53ee8cc1Swenshuai.xi MS_U32 SYNCHEND; 2240*53ee8cc1Swenshuai.xi MS_U32 SYNCVST; 2241*53ee8cc1Swenshuai.xi MS_U32 SYNCVEND; 2242*53ee8cc1Swenshuai.xi 2243*53ee8cc1Swenshuai.xi MS_BOOL bCLK_EN; // OUTPUT ENABLE 2244*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_BYPASS_EN; // MIXER BYPASS ENABLE 2245*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_INVALPHA_EN; 2246*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_HSTVFDEOUT_EN;// 1:hs_out = hs&vfde 2247*53ee8cc1Swenshuai.xi MS_BOOL bMIXER_HFDEVFDEOUT_EN;// 1:hs_out = de(hfde)&vfde 2248*53ee8cc1Swenshuai.xi 2249*53ee8cc1Swenshuai.xi } XC_EX_OSDC_DST_DispInfo; 2250*53ee8cc1Swenshuai.xi 2251*53ee8cc1Swenshuai.xi //select the input for bypass mode. 2252*53ee8cc1Swenshuai.xi typedef enum 2253*53ee8cc1Swenshuai.xi { 2254*53ee8cc1Swenshuai.xi E_XC_EX_BYPASS_HDMI = 0, 2255*53ee8cc1Swenshuai.xi E_XC_EX_BYPASS_DC_MAIN, 2256*53ee8cc1Swenshuai.xi E_XC_EX_BYPASS_DC_SUB, 2257*53ee8cc1Swenshuai.xi }XC_EX_BYPASS_InputSource; 2258*53ee8cc1Swenshuai.xi 2259*53ee8cc1Swenshuai.xi 2260*53ee8cc1Swenshuai.xi // For HW internal test pattern 2261*53ee8cc1Swenshuai.xi typedef enum 2262*53ee8cc1Swenshuai.xi { 2263*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PATGEN_DISP_LB_MODE, // pattern gen on display line buffer, can't support post-sclaing 2264*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PATGEN_OPM_MODE, // pattern gen before post scaling engine, can support post-scaling, but not implement now 2265*53ee8cc1Swenshuai.xi }XC_EX_OP1_PATGEN_MODE; 2266*53ee8cc1Swenshuai.xi 2267*53ee8cc1Swenshuai.xi typedef enum{ 2268*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PATTERN_OFF = 0, 2269*53ee8cc1Swenshuai.xi E_XC_EX_OP1_WB_PATTERN, // 1: 2270*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RED_PATTERN, // 2: red 2271*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREEN_PATTERN, // 3: green 2272*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_BLUE_PATTERN, // 4: blue 2273*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_PATTERN, // 5: white 2274*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_BLACK_PATTERN, // 6: black 2275*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREY_PATTERN, // 7: gray 2276*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_COLOR_V_BAR_PATTERN, // 8: vertical color-bar 2277*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_COLOR_H_BAR_PATTERN, // 9: horizontal color-bar 2278*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREY_BAR_16_PATTERN, // 10: 16 vertical gray-bar 2279*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREY_BAR_32_PATTERN, // 11: 32 vertical gray-bar 2280*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREY_BAR_64_PATTERN, // 12: 64 vertical gray-bar 2281*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREY_RGB_32_PATTERN, // 13: 32 vertical 4 color bar 2282*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RGB_CHECKERBOARD_PATTERN, // 14: 3x3 checkerboard R/B/G 2283*53ee8cc1Swenshuai.xi E_XC_EX_OP1_DOAFADE_GRAY_PATTERN, // 15: dotfade gary 2284*53ee8cc1Swenshuai.xi E_XC_EX_OP1_CALIBRATION_COLOR_DOTFADE_PATTERN, // 16: checkerboard + dotfade gary 2285*53ee8cc1Swenshuai.xi E_XC_EX_OP1_CALIBRATION_PATTERN, // 17: checkerboard 2286*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PATTERN_1, // 18 2287*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PATTERN_2, // 19: 2288*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PATTERN_3, // 20: same as pattern2, but not full screen 2289*53ee8cc1Swenshuai.xi E_XC_EX_OP1_3D_PATTERN, // 21: side-by-side, if enable 3D effect, can see the word "3D" 2290*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RED_100IRE_PATTERN, // 22: red 2291*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREEN_100IRE_PATTERN, // 23: green 2292*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_BLUE_100IRE_PATTERN, // 24: blue 2293*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RED_70IRE_PATTERN, // 25 2294*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREEN_70IRE_PATTERN, // 26 2295*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_BLUE_70IRE_PATTERN, // 27 2296*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RED_40IRE_PATTERN, // 28 2297*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREEN_40IRE_PATTERN, // 29 2298*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_BLUE_40IRE_PATTERN, // 30 2299*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RED_20IRE_PATTERN, // 31 2300*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREEN_20IRE_PATTERN, // 32 2301*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_BLUE_20IRE_PATTERN, // 33 2302*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RED_10IRE_PATTERN, // 34 2303*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GREEN_10IRE_PATTERN, // 35 2304*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_BLUE_10IRE_PATTERN, // 36 2305*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_100IRE_PATTERN, // 37 2306*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_90IRE_PATTERN, // 38 2307*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_80IRE_PATTERN, // 39 2308*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_70IRE_PATTERN, // 40 2309*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_60IRE_PATTERN, // 41 2310*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_50IRE_PATTERN, // 42 2311*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_40IRE_PATTERN, // 43 2312*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_30IRE_PATTERN, // 44 2313*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_20IRE_PATTERN, // 45 2314*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_WHITE_10IRE_PATTERN, // 46 2315*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GAMMA_GREY1_PATTERN, // 47: gray 2316*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_GAMMA_GREY2_PATTERN, // 48: gray 2317*53ee8cc1Swenshuai.xi E_XC_EX_OP1_PURE_RGB_CHECKERBOARD_PATTERN_2, // 49: 3x3 checkerboard R/G/B 2318*53ee8cc1Swenshuai.xi }XC_EX_OP1_PATTERN; 2319*53ee8cc1Swenshuai.xi 2320*53ee8cc1Swenshuai.xi //define 3D attribute type 2321*53ee8cc1Swenshuai.xi typedef enum 2322*53ee8cc1Swenshuai.xi { 2323*53ee8cc1Swenshuai.xi E_XC_EX_3D_ATTRIBUTE_OSD, 2324*53ee8cc1Swenshuai.xi E_XC_EX_3D_ATTRIBUTE_NUM, 2325*53ee8cc1Swenshuai.xi } XC_EX_3D_ATTRIBUTE_TYPE; 2326*53ee8cc1Swenshuai.xi 2327*53ee8cc1Swenshuai.xi //define 3D OSD blending point 2328*53ee8cc1Swenshuai.xi typedef enum 2329*53ee8cc1Swenshuai.xi { 2330*53ee8cc1Swenshuai.xi E_XC_EX_3D_OSD_BLENDING_SC_IP, //scaler IP 2331*53ee8cc1Swenshuai.xi E_XC_EX_3D_OSD_BLENDING_SC_OP, //scaler IP 2332*53ee8cc1Swenshuai.xi E_XC_EX_3D_OSD_BLENDING_FRC_IP, // inside FRC IP 2333*53ee8cc1Swenshuai.xi E_XC_EX_3D_OSD_BLENDING_FRC_OP, // inside FRC IP 2334*53ee8cc1Swenshuai.xi E_XC_EX_3D_OSD_BLENDING_NUM, 2335*53ee8cc1Swenshuai.xi } XC_EX_3D_OSD_BLENDING_POINT; 2336*53ee8cc1Swenshuai.xi 2337*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SCAN_TYPE 2338*53ee8cc1Swenshuai.xi //define enum for different scan type 2339*53ee8cc1Swenshuai.xi typedef enum 2340*53ee8cc1Swenshuai.xi { 2341*53ee8cc1Swenshuai.xi E_XC_EX_NORMAL_MODE = 0, 2342*53ee8cc1Swenshuai.xi E_XC_EX_FORCE_P_MODE, 2343*53ee8cc1Swenshuai.xi E_XC_EX_FORCE_I_MODE, 2344*53ee8cc1Swenshuai.xi }XC_EX_SCAN_TYPE; 2345*53ee8cc1Swenshuai.xi #endif 2346*53ee8cc1Swenshuai.xi 2347*53ee8cc1Swenshuai.xi //////////////////////////////////////////// 2348*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2349*53ee8cc1Swenshuai.xi // Function and Variable 2350*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2351*53ee8cc1Swenshuai.xi 2352*53ee8cc1Swenshuai.xi 2353*53ee8cc1Swenshuai.xi //---------------------------- 2354*53ee8cc1Swenshuai.xi // Must have functions 2355*53ee8cc1Swenshuai.xi //---------------------------- 2356*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2357*53ee8cc1Swenshuai.xi /// Get XC library version 2358*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: store the version in this member 2359*53ee8cc1Swenshuai.xi /// @return @ref XC_EX_RETURN_VALUE 2360*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2361*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_GetLibVer(const MSIF_Version **ppVersion); 2362*53ee8cc1Swenshuai.xi 2363*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2364*53ee8cc1Swenshuai.xi /// Get XC Information 2365*53ee8cc1Swenshuai.xi /// @return @ref XC_ApiInfo returnthe XC information in this member 2366*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2367*53ee8cc1Swenshuai.xi DLL_PUBLIC const XC_EX_ApiInfo * MApi_XC_EX_GetInfo(XC_DEVICE_ID *pDeviceId); 2368*53ee8cc1Swenshuai.xi 2369*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2370*53ee8cc1Swenshuai.xi /// Get XC Status of specific window(Main/Sub) 2371*53ee8cc1Swenshuai.xi /// @param pDrvStatus \b OUT: store the status 2372*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(Main/Sub) is going to get status 2373*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2374*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2375*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetStatus(XC_DEVICE_ID *pDeviceId, XC_EX_ApiStatus *pDrvStatus, XC_EX_SCALER_WIN eWindow); 2376*53ee8cc1Swenshuai.xi 2377*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2378*53ee8cc1Swenshuai.xi /// Extended interface to Get XC Status of specific window(Main/Sub) with version info 2379*53ee8cc1Swenshuai.xi /// usage: 2380*53ee8cc1Swenshuai.xi /// XC_ApiStatusEx stXCStatus; 2381*53ee8cc1Swenshuai.xi /// memset(&stXCStatus, 0, sizeof(XC_ApiStatusEx)); 2382*53ee8cc1Swenshuai.xi /// stXCStatus.u16ApiStatusEX_Length = sizeof(XC_ApiStatusEx); 2383*53ee8cc1Swenshuai.xi /// stXCStatus.u32ApiStatusEx_Version = EX_API_STATUS_EX_VERSION; 2384*53ee8cc1Swenshuai.xi /// if(MApi_XC_EX_GetStatusEx(&stXCStatusEx, E_XC_EX_MAIN_WINDOW) == sizeof(XC_ApiStatusEx)) 2385*53ee8cc1Swenshuai.xi /// { 2386*53ee8cc1Swenshuai.xi /// ...... 2387*53ee8cc1Swenshuai.xi /// } 2388*53ee8cc1Swenshuai.xi /// @param pDrvStatusEx \b OUT: store the status 2389*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(Main/Sub) is going to get status 2390*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return the copied length of input structure 2391*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2392*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_GetStatusEx(XC_DEVICE_ID *pDeviceId, XC_EX_ApiStatusEx *pDrvStatusEx, XC_EX_SCALER_WIN eWindow); 2393*53ee8cc1Swenshuai.xi 2394*53ee8cc1Swenshuai.xi //------------------------------- 2395*53ee8cc1Swenshuai.xi // Set Debug Level 2396*53ee8cc1Swenshuai.xi // @para u16DbgSwitch: XC_EX_DBGLEVEL_OFF,XC_EX_DBGLEVEL_SETWINDOW,XC_EX_DBGLEVEL_SETTIMING,XC_EX_DBGLEVEL_SYNCDETECT,XC_EX_DBGLEVEL_MUX 2397*53ee8cc1Swenshuai.xi // currently, only used XC_EX_DBGLEVEL_OFF,XC_EX_DBGLEVEL_SETTIMING 2398*53ee8cc1Swenshuai.xi //------------------------------- 2399*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetDbgLevel(MS_U16 u16DbgSwitch); 2400*53ee8cc1Swenshuai.xi 2401*53ee8cc1Swenshuai.xi //For debug purpose only! 2402*53ee8cc1Swenshuai.xi //------------------------------- 2403*53ee8cc1Swenshuai.xi // Set Debug Mode for scaler framelock 2404*53ee8cc1Swenshuai.xi // @para DbgMode: Disable/Enable debug 2405*53ee8cc1Swenshuai.xi // @para DbgFlag: The debug item 2406*53ee8cc1Swenshuai.xi // @para u32Data: The debug data 2407*53ee8cc1Swenshuai.xi //------------------------------- 2408*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FPLLDbgMode(XC_DEVICE_ID *pDeviceId, XC_EX_FPLL_DBG_MODE DbgMode, XC_EX_FPLL_DBG_FLAG DbgFlag, MS_U32 u32Data); 2409*53ee8cc1Swenshuai.xi 2410*53ee8cc1Swenshuai.xi //------------------------------- 2411*53ee8cc1Swenshuai.xi // Set customer mode for scaler framelock 2412*53ee8cc1Swenshuai.xi // @para eMode: Disable/Enable customer mode 2413*53ee8cc1Swenshuai.xi // @para eFlag: The customer item 2414*53ee8cc1Swenshuai.xi // @para u32Data: The customer data 2415*53ee8cc1Swenshuai.xi //------------------------------- 2416*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FPLLCustomerMode(XC_DEVICE_ID *pDeviceId, XC_EX_FPLL_MODE eMode, XC_EX_FPLL_FLAG eFlag, MS_U32 u32Data); 2417*53ee8cc1Swenshuai.xi 2418*53ee8cc1Swenshuai.xi //---------------------------- 2419*53ee8cc1Swenshuai.xi // Initialize 2420*53ee8cc1Swenshuai.xi //---------------------------- 2421*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_XC_EX_SetIOMapBase(XC_DEVICE_ID *pDeviceId); 2422*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2423*53ee8cc1Swenshuai.xi 2424*53ee8cc1Swenshuai.xi /// Initialize the XC 2425*53ee8cc1Swenshuai.xi /// @param pXC_InitData \b IN: the Initialized Data 2426*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the initialized data 2427*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2428*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2429*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Init(XC_DEVICE_ID *pDeviceId, XC_EX_INITDATA *pXC_InitData, MS_U32 u32InitDataLen); 2430*53ee8cc1Swenshuai.xi 2431*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2432*53ee8cc1Swenshuai.xi /// Initialize the XC MISC 2433*53ee8cc1Swenshuai.xi /// @param pXC_Init_Misc \b IN: the Initialized XC MISC 2434*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 2435*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2436*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Init_MISC(XC_DEVICE_ID *pDeviceId, XC_EX_INITMISC *pXC_Init_Misc, MS_U32 u32InitMiscDataLen); 2437*53ee8cc1Swenshuai.xi 2438*53ee8cc1Swenshuai.xi 2439*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2440*53ee8cc1Swenshuai.xi /// Get XC Init MISC Status 2441*53ee8cc1Swenshuai.xi /// @param pXC_Init_Misc \b OUT: store the status 2442*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 2443*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2444*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_GetMISCStatus(XC_DEVICE_ID *pDeviceId, XC_EX_INITMISC *pXC_Init_Misc); 2445*53ee8cc1Swenshuai.xi 2446*53ee8cc1Swenshuai.xi 2447*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2448*53ee8cc1Swenshuai.xi /// Get XC Capability 2449*53ee8cc1Swenshuai.xi /// @param u32Id (you can get detail from E_XC_CAPABILITY enum) 2450*53ee8cc1Swenshuai.xi /// @return output data for each query item. 2451*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2452*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32 MApi_XC_EX_GetCapability(MS_U32 u32Id); 2453*53ee8cc1Swenshuai.xi 2454*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2455*53ee8cc1Swenshuai.xi /// Get XC Capability 2 2456*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2457*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_GetChipCaps(XC_EX_CAPS eCapType, MS_U32* pRet, MS_U32 ret_size); 2458*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2459*53ee8cc1Swenshuai.xi /// Exit the XC 2460*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2461*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2462*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Exit(XC_DEVICE_ID *pDeviceId); 2463*53ee8cc1Swenshuai.xi 2464*53ee8cc1Swenshuai.xi //------------------------------- 2465*53ee8cc1Swenshuai.xi // Set Window & Scaling 2466*53ee8cc1Swenshuai.xi //------------------------------- 2467*53ee8cc1Swenshuai.xi 2468*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2469*53ee8cc1Swenshuai.xi /// Set Dynamic Scaling 2470*53ee8cc1Swenshuai.xi /// @param pstDSInfo \b IN: the information of Dynamic Scaling 2471*53ee8cc1Swenshuai.xi /// @param u32DSInforLen \b IN: the length of the pstDSInfo 2472*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2473*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2474*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2475*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetDynamicScaling(XC_DEVICE_ID *pDeviceId, XC_EX_DynamicScaling_Info *pstDSInfo, MS_U32 u32DSInfoLen, XC_EX_SCALER_WIN eWindow); 2476*53ee8cc1Swenshuai.xi 2477*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2478*53ee8cc1Swenshuai.xi /// Get Dynamic Scaling Status 2479*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: dynamic scaling is enabled; FALSE: dynamic scaling is not enabled. 2480*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2481*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetDynamicScalingStatus(XC_DEVICE_ID *pDeviceId); 2482*53ee8cc1Swenshuai.xi 2483*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2484*53ee8cc1Swenshuai.xi /// Get DNR Base offset 2485*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2486*53ee8cc1Swenshuai.xi /// @return @ref MS_U32 return the DNR Base offset 2487*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2488*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 2489*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_PHY MApi_XC_EX_Get_DNRBaseOffset(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2490*53ee8cc1Swenshuai.xi #else 2491*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32 MApi_XC_EX_Get_DNRBaseOffset(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2492*53ee8cc1Swenshuai.xi #endif 2493*53ee8cc1Swenshuai.xi 2494*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2495*53ee8cc1Swenshuai.xi /// Get the FrameStoreNum's factor number, which is usually to calcuate buffer offset 2496*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2497*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 return the store frame number factor 2498*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2499*53ee8cc1Swenshuai.xi #define MApi_XC_EX_Get_StoreFrameNum MApi_XC_EX_Get_FrameNumFactor 2500*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_Get_FrameNumFactor(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2501*53ee8cc1Swenshuai.xi 2502*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2503*53ee8cc1Swenshuai.xi /// Set Pre down scaling minimum size 2504*53ee8cc1Swenshuai.xi /// @param pXCPrescalingLimit \b IN: the information of Limit size 2505*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2506*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2507*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetPreScalingLimit(XC_DEVICE_ID *pDeviceId, XC_EX_PreScalingLimit_Info *pXCPrescalingLimit, XC_EX_SCALER_WIN eWindow); 2508*53ee8cc1Swenshuai.xi 2509*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2510*53ee8cc1Swenshuai.xi /// Set the specific window 2511*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 2512*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the pstXC_SetWin_Info 2513*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2514*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2515*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2516*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetWindow(XC_DEVICE_ID *pDeviceId, XC_EX_SETWIN_INFO *pstXC_SetWin_Info, MS_U32 u32InitDataLen, XC_EX_SCALER_WIN eWindow); 2517*53ee8cc1Swenshuai.xi 2518*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2519*53ee8cc1Swenshuai.xi /// Set main and sub window 2520*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info_Main \b IN: the information of the main window setting 2521*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info_Sub \b IN: the information of the sub window setting 2522*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2523*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2524*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetDualWindow(XC_DEVICE_ID *pDeviceId, XC_EX_SETWIN_INFO *pstXC_SetWin_Info_Main, XC_EX_SETWIN_INFO *pstXC_SetWin_Info_Sub); 2525*53ee8cc1Swenshuai.xi 2526*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2527*53ee8cc1Swenshuai.xi /// Set the specific window for traveling mode(VE capture function) 2528*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 2529*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the pstXC_SetWin_Info 2530*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2531*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2532*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2533*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetTravelingWindow(XC_DEVICE_ID *pDeviceId, XC_EX_SETWIN_INFO *pstXC_SetWin_Info, MS_U32 u32InitDataLen, XC_EX_SCALER_WIN eWindow); 2534*53ee8cc1Swenshuai.xi 2535*53ee8cc1Swenshuai.xi //------------------------------- 2536*53ee8cc1Swenshuai.xi // Mode Related 2537*53ee8cc1Swenshuai.xi //------------------------------- 2538*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2539*53ee8cc1Swenshuai.xi /// Set input source type 2540*53ee8cc1Swenshuai.xi /// @param enInputSourceType \b IN: which input source typewe are going to set 2541*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2542*53ee8cc1Swenshuai.xi /// @return void 2543*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2544*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetInputSource( XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE enInputSourceType, XC_EX_SCALER_WIN eWindow ); 2545*53ee8cc1Swenshuai.xi 2546*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2547*53ee8cc1Swenshuai.xi /// check whether the specific window is YUV space 2548*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2549*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2550*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2551*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsYUVSpace(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2552*53ee8cc1Swenshuai.xi 2553*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2554*53ee8cc1Swenshuai.xi /// check whether specific window is memory format 422 2555*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 2556*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2557*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2558*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsMemoryFormat422(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2559*53ee8cc1Swenshuai.xi 2560*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2561*53ee8cc1Swenshuai.xi /// Enable/Disable force RGB in 2562*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 2563*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 2564*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2565*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableForceRGBin(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 2566*53ee8cc1Swenshuai.xi 2567*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2568*53ee8cc1Swenshuai.xi /// Set XC mirror mode for main or sub window 2569*53ee8cc1Swenshuai.xi /// @param eMirrorMode \b IN: enable or disable XC mirror mode 2570*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub window 2571*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2572*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2573*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_EnableMirrorModeEx( XC_DEVICE_ID *pDeviceId, XC_EX_MirrorMode eMirrorMode, XC_EX_SCALER_WIN eWindow); 2574*53ee8cc1Swenshuai.xi 2575*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2576*53ee8cc1Swenshuai.xi /// Get XC mirror mode for main or sub window 2577*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: main or sub window 2578*53ee8cc1Swenshuai.xi /// @return @ref MirrorMode_t 2579*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2580*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_MirrorMode MApi_XC_EX_GetMirrorModeTypeEx(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2581*53ee8cc1Swenshuai.xi 2582*53ee8cc1Swenshuai.xi //------------------------------- 2583*53ee8cc1Swenshuai.xi // Timing detect 2584*53ee8cc1Swenshuai.xi //------------------------------- 2585*53ee8cc1Swenshuai.xi 2586*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2587*53ee8cc1Swenshuai.xi /// Get the specific window's sync status 2588*53ee8cc1Swenshuai.xi /// @param eCurrentSrc \b IN: the current input source 2589*53ee8cc1Swenshuai.xi /// @param sXC_Sync_Status \b OUT:store the sync status 2590*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 2591*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2592*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GetSyncStatus(XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE eCurrentSrc , XC_EX_IP_SYNC_STATUS *sXC_Sync_Status, XC_EX_SCALER_WIN eWindow); 2593*53ee8cc1Swenshuai.xi 2594*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2595*53ee8cc1Swenshuai.xi /// wait for output sync 2596*53ee8cc1Swenshuai.xi /// @param u8NumVSyncs \b IN: the number of VSync we are going to wait 2597*53ee8cc1Swenshuai.xi /// @param u16Timeout \b IN: time out 2598*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 retun the number of left Vsync if timeout 2599*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2600*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_WaitOutputVSync(XC_DEVICE_ID *pDeviceId, MS_U8 u8NumVSyncs, MS_U16 u16Timeout, XC_EX_SCALER_WIN eWindow); 2601*53ee8cc1Swenshuai.xi 2602*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2603*53ee8cc1Swenshuai.xi /// wait for input sync 2604*53ee8cc1Swenshuai.xi /// @param u8NumVSyncs \b IN: the number of VSync we are going to wait 2605*53ee8cc1Swenshuai.xi /// @param u16Timeout \b IN: time out 2606*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 retun the number of left Vsync if timeout 2607*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2608*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_WaitInputVSync(XC_DEVICE_ID *pDeviceId,MS_U8 u8NumVSyncs, MS_U16 u16Timeout, XC_EX_SCALER_WIN eWindow); 2609*53ee8cc1Swenshuai.xi 2610*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2611*53ee8cc1Swenshuai.xi /// Set HDMI detect mode. (HDMI has DE and HV mode. You can set what you want to use.) 2612*53ee8cc1Swenshuai.xi /// @param esynctype \b IN: HDMI detect mode 2613*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2614*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetHdmiSyncMode(XC_EX_HDMI_SYNC_TYPE esynctype); 2615*53ee8cc1Swenshuai.xi 2616*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2617*53ee8cc1Swenshuai.xi /// Set HDMI detect mode. (HDMI has DE and HV mode. You can set what you want to use.) 2618*53ee8cc1Swenshuai.xi /// @return @ref E_HDMI_SYNC_TYPE Get current HDMI sync type 2619*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2620*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_HDMI_SYNC_TYPE MApi_XC_EX_GetHdmiSyncMode(void); 2621*53ee8cc1Swenshuai.xi 2622*53ee8cc1Swenshuai.xi //------------------------------- 2623*53ee8cc1Swenshuai.xi // Display control 2624*53ee8cc1Swenshuai.xi //------------------------------- 2625*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2626*53ee8cc1Swenshuai.xi /// Set report window 2627*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable report window 2628*53ee8cc1Swenshuai.xi /// @param Window \b IN: the window position and size 2629*53ee8cc1Swenshuai.xi /// @param u8Color \b IN: report window's color 2630*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2631*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetRepWindow(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_WINDOW_TYPE Window, MS_U8 u8Color); 2632*53ee8cc1Swenshuai.xi 2633*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2634*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status instead of direcly modifying the register itself 2635*53ee8cc1Swenshuai.xi /// instead, the state machine will take care of modifying the register by checking this status. 2636*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 2637*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 2638*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2639*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Set_OPWriteOffEnable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 2640*53ee8cc1Swenshuai.xi 2641*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2642*53ee8cc1Swenshuai.xi /// update the OPWriteOff variable status, set force flag, and direcly modifying the register 2643*53ee8cc1Swenshuai.xi /// @param bMCNRPQSetting \b IN: MCNR PQ status enable or not. 2644*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 2645*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2646*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_ForceSet_OPWriteOffEnable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable , XC_EX_SCALER_WIN eWindow); 2647*53ee8cc1Swenshuai.xi 2648*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2649*53ee8cc1Swenshuai.xi /// update display window registers with input window 2650*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Main or sub window 2651*53ee8cc1Swenshuai.xi /// @param pdspwin \b IN: window info that will be setted to registers 2652*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2653*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetDispWinToReg(XC_DEVICE_ID *pDeviceId, XC_EX_WINDOW_TYPE *pstDspwin, XC_EX_SCALER_WIN eWindow); 2654*53ee8cc1Swenshuai.xi 2655*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2656*53ee8cc1Swenshuai.xi /// get current display window registers setting 2657*53ee8cc1Swenshuai.xi /// @param eWindow \b IN : Main or sub window 2658*53ee8cc1Swenshuai.xi /// @param pdspwin \b OUT: Pointer for ouput disp window register 2659*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2660*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GetDispWinFromReg(XC_DEVICE_ID *pDeviceId, XC_EX_WINDOW_TYPE *pstDspwin, XC_EX_SCALER_WIN eWindow); 2661*53ee8cc1Swenshuai.xi 2662*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2663*53ee8cc1Swenshuai.xi /// let display video freeze by disable scaler buffer write 2664*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 2665*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2666*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2667*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FreezeImg(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 2668*53ee8cc1Swenshuai.xi 2669*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2670*53ee8cc1Swenshuai.xi /// Query whether the specific window is freeze image status or not 2671*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to query 2672*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2673*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2674*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsFreezeImg(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2675*53ee8cc1Swenshuai.xi 2676*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2677*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 2678*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 2679*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2680*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GenerateBlackVideoForBothWin( XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 2681*53ee8cc1Swenshuai.xi 2682*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2683*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 2684*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 2685*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2686*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Set_BLSK(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 2687*53ee8cc1Swenshuai.xi 2688*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2689*53ee8cc1Swenshuai.xi /// This function will enable/diable output black pattern 2690*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 2691*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2692*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GenerateBlackVideo(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 2693*53ee8cc1Swenshuai.xi 2694*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2695*53ee8cc1Swenshuai.xi /// Query whether current XC is black video enabled or not 2696*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2697*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2698*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsBlackVideoEnable(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2699*53ee8cc1Swenshuai.xi 2700*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2701*53ee8cc1Swenshuai.xi /// This function will enable/diable framebufferless mode 2702*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 2703*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2704*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableFrameBufferLess(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 2705*53ee8cc1Swenshuai.xi 2706*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2707*53ee8cc1Swenshuai.xi /// Query whether current XC is framebufferless or not 2708*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2709*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2710*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsCurrentFrameBufferLessMode(XC_DEVICE_ID *pDeviceId); 2711*53ee8cc1Swenshuai.xi 2712*53ee8cc1Swenshuai.xi 2713*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2714*53ee8cc1Swenshuai.xi /// This function will enable/diable request framebufferless mode 2715*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 2716*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2717*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableRequest_FrameBufferLess(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 2718*53ee8cc1Swenshuai.xi 2719*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2720*53ee8cc1Swenshuai.xi /// Query whether current XC is request framebufferless or not 2721*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2722*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2723*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsCurrentRequest_FrameBufferLessMode(XC_DEVICE_ID *pDeviceId); 2724*53ee8cc1Swenshuai.xi 2725*53ee8cc1Swenshuai.xi //------------------------------- 2726*53ee8cc1Swenshuai.xi // 3D control 2727*53ee8cc1Swenshuai.xi //------------------------------- 2728*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_Get_3D_HW_Version(XC_DEVICE_ID *pDeviceId); 2729*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Get_3D_IsSupportedHW2DTo3D(XC_DEVICE_ID *pDeviceId); 2730*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_Mode(XC_DEVICE_ID *pDeviceId, 2731*53ee8cc1Swenshuai.xi XC_EX_3D_INPUT_MODE e3dInputMode, 2732*53ee8cc1Swenshuai.xi XC_EX_3D_OUTPUT_MODE e3dOutputMode, 2733*53ee8cc1Swenshuai.xi XC_EX_3D_PANEL_TYPE e3dPanelType, 2734*53ee8cc1Swenshuai.xi XC_EX_SCALER_WIN eWindow); 2735*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_MainWin_FirstMode(XC_DEVICE_ID *pDeviceId, MS_BOOL bMainFirst); 2736*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_LR_Frame_Exchg(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2737*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_3D_Is_LR_Frame_Exchged(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2738*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_3D_INPUT_MODE MApi_XC_EX_Get_3D_Input_Mode(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2739*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_3D_OUTPUT_MODE MApi_XC_EX_Get_3D_Output_Mode(XC_DEVICE_ID *pDeviceId); 2740*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_3D_PANEL_TYPE MApi_XC_EX_Get_3D_Panel_Type(XC_DEVICE_ID *pDeviceId); 2741*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Get_3D_MainWin_First(XC_DEVICE_ID *pDeviceId); 2742*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_3DMainSub_IPSync(XC_DEVICE_ID *pDeviceId); 2743*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_VerVideoOffset(XC_DEVICE_ID *pDeviceId, MS_U16 u163DVerVideoOffset); 2744*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_Get_3D_VerVideoOffset(XC_DEVICE_ID *pDeviceId); 2745*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Is3DFormatSupported(XC_DEVICE_ID *pDeviceId, 2746*53ee8cc1Swenshuai.xi XC_EX_3D_INPUT_MODE e3dInputMode, 2747*53ee8cc1Swenshuai.xi XC_EX_3D_OUTPUT_MODE e3dOutputMode); 2748*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_HShift(XC_DEVICE_ID *pDeviceId, MS_U16 u16HShift); 2749*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Enable_3D_LR_Sbs2Line(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 2750*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_Get_3D_HShift(XC_DEVICE_ID *pDeviceId); 2751*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_HW2DTo3D_Buffer(XC_DEVICE_ID *pDeviceId, MS_PHY u32HW2DTO3D_DD_Buf, MS_PHY u32HW2DTO3D_DR_Buf); 2752*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_HW2DTo3D_Parameters(XC_DEVICE_ID *pDeviceId, XC_EX_3D_HW2DTO3D_PARA st3DHw2DTo3DPara); 2753*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Get_3D_HW2DTo3D_Parameters(XC_DEVICE_ID *pDeviceId, XC_EX_3D_HW2DTO3D_PARA *pst3DHw2DTo3DPara); 2754*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_Detect3DFormat_Parameters(XC_DEVICE_ID *pDeviceId, XC_EX_3D_DETECT3DFORMAT_PARA *pstDetect3DFormatPara); 2755*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Get_3D_Detect3DFormat_Parameters(XC_DEVICE_ID *pDeviceId, XC_EX_3D_DETECT3DFORMAT_PARA *pstDetect3DFormatPara); 2756*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_3D_INPUT_MODE MApi_XC_EX_Detect3DFormatByContent(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2757*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_DetectNL(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow, XC_EX_DETECTNL_PARA* pstDetectNLatticePara); 2758*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_3D_PostPQSetting(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2759*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_FPInfo(XC_DEVICE_ID *pDeviceId, XC_EX_3D_FPINFO_PARA *pstFPInfoPara); 2760*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_EnableAutoDetect3D(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_3D_AUTODETECT_METHOD enDetectMethod); 2761*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetAutoDetect3DFlag(XC_DEVICE_ID *pDeviceId, XC_EX_3D_AUTODETECT_METHOD *penDetectMethod, MS_BOOL *pbEnable); 2762*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_3D_SubWinClk(XC_DEVICE_ID *pDeviceId); 2763*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 2764*53ee8cc1Swenshuai.xi /// Is 3D reg_3dlr_side2line_en enabled or not 2765*53ee8cc1Swenshuai.xi /// @return MS_BOOL \b OUT: TRUE: enabled FALSE: is not enabled 2766*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 2767*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_3D_Is_LR_Sbs2Line(XC_DEVICE_ID *pDeviceId); 2768*53ee8cc1Swenshuai.xi 2769*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2770*53ee8cc1Swenshuai.xi /// This function will get the skip status of default flag 2771*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL return the the skip status of default flag 2772*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2773*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_SC_EX_3D_Is_Skip_Default_LR_Flag(XC_DEVICE_ID *pDeviceId); 2774*53ee8cc1Swenshuai.xi 2775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2776*53ee8cc1Swenshuai.xi /// This function will enable/diable skip default LR flag 2777*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: enable, FALSE: otherwise 2778*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 2779*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2780*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_3D_Enable_Skip_Default_LR_Flag(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 2781*53ee8cc1Swenshuai.xi 2782*53ee8cc1Swenshuai.xi #ifdef UFO_XC_SCAN_TYPE 2783*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2784*53ee8cc1Swenshuai.xi /// Set different scan type. 2785*53ee8cc1Swenshuai.xi /// @param enScanType \b IN: scan type. Normal/ForceP/ForceI 2786*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL 2787*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2788*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE SYMBOL_WEAK MApi_XC_EX_SetScanType(XC_EX_SCAN_TYPE enScanType); 2789*53ee8cc1Swenshuai.xi #endif 2790*53ee8cc1Swenshuai.xi 2791*53ee8cc1Swenshuai.xi //------------------------------- 2792*53ee8cc1Swenshuai.xi // Mux control 2793*53ee8cc1Swenshuai.xi //------------------------------- 2794*53ee8cc1Swenshuai.xi #define XC_EX_MAX_SYNC_DATA_PATH_SUPPORTED (6) // (3),3 is not enough, because Main+SUB+Scart 1+Scart 2 =4, but in order to support off-line det + DWIN, modify to 6 first 2795*53ee8cc1Swenshuai.xi #define XC_EX_MAX_ASYNC_DATA_PATH_SUPPORTED (2) 2796*53ee8cc1Swenshuai.xi #define XC_EX_MAX_DATA_PATH_SUPPORTED (XC_EX_MAX_SYNC_DATA_PATH_SUPPORTED+XC_EX_MAX_ASYNC_DATA_PATH_SUPPORTED) 2797*53ee8cc1Swenshuai.xi 2798*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2799*53ee8cc1Swenshuai.xi /// Initialize Mux before using Mux controller 2800*53ee8cc1Swenshuai.xi /// @param input_source_to_input_port \b IN: a function to map from input source to input port 2801*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2802*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Mux_Init(XC_DEVICE_ID *pDeviceId, void (*input_source_to_input_port)(XC_EX_INPUT_SOURCE_TYPE src_ids , E_MUX_INPUTPORT* port_ids , MS_U8* u8port_count ) ); 2803*53ee8cc1Swenshuai.xi 2804*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2805*53ee8cc1Swenshuai.xi /// Monitor the source of Mux 2806*53ee8cc1Swenshuai.xi /// @param bRealTimeMonitorOnly \b IN: define whether do the monitor routine only for real time 2807*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2808*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Mux_SourceMonitor(XC_DEVICE_ID *pDeviceId, MS_BOOL bRealTimeMonitorOnly); 2809*53ee8cc1Swenshuai.xi 2810*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2811*53ee8cc1Swenshuai.xi /// Create a path in Mux Controller. 2812*53ee8cc1Swenshuai.xi /// @param Path_Info \b IN: the information of the path 2813*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the Path_Info 2814*53ee8cc1Swenshuai.xi /// @return @ref MS_S16 return the path id, or -1 when any error is happened 2815*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2816*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_S16 MApi_XC_EX_Mux_CreatePath(XC_DEVICE_ID *pDeviceId, XC_EX_MUX_PATH_INFO* Path_Info, MS_U32 u32InitDataLen); 2817*53ee8cc1Swenshuai.xi 2818*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2819*53ee8cc1Swenshuai.xi /// delete a path from Mux Controller. 2820*53ee8cc1Swenshuai.xi /// @param src \b IN: Type of input source of a path you want to delete 2821*53ee8cc1Swenshuai.xi /// @param dest \b IN: Type of destination of a path you want to delete 2822*53ee8cc1Swenshuai.xi /// @return 1 if delete successfuly. Return -1 if delete fail 2823*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2824*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_S16 MApi_XC_EX_Mux_DeletePath(XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE src, XC_EX_DEST_TYPE dest); 2825*53ee8cc1Swenshuai.xi 2826*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2827*53ee8cc1Swenshuai.xi /// A path is disabled after creating it (\ref MApi_XC_EX_Mux_CreatePath) 2828*53ee8cc1Swenshuai.xi /// If a path is not enabled, \ref MApi_XC_Mux_SourceMonitor will bypass it. 2829*53ee8cc1Swenshuai.xi /// @param PathId \b IN: PathId The Path you want to enable 2830*53ee8cc1Swenshuai.xi /// @return 1 if enable successfuly. Return -1 if enable fail 2831*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2832*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_S16 MApi_XC_EX_Mux_EnablePath(XC_DEVICE_ID *pDeviceId, MS_U16 PathId); 2833*53ee8cc1Swenshuai.xi 2834*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2835*53ee8cc1Swenshuai.xi /// Trigger Sync Event on Mux Controller. 2836*53ee8cc1Swenshuai.xi /// The Mux Controller will pass src and *para to each Sync Event Handler (refer synchronous_event_handler of MUX_DATA_PATH also). 2837*53ee8cc1Swenshuai.xi /// ( Delegate Function: 2838*53ee8cc1Swenshuai.xi /// Send necessary parameter to SyncEventHandler of each synchronous_path which source is 'src' ) 2839*53ee8cc1Swenshuai.xi /// @param src \b IN: The input source which triggers Sync Event 2840*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass to Event Handler 2841*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2842*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Mux_TriggerPathSyncEvent(XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE src , void* para); 2843*53ee8cc1Swenshuai.xi 2844*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2845*53ee8cc1Swenshuai.xi /// Set the specific window 2846*53ee8cc1Swenshuai.xi /// @param src \b IN: the source type for handler 2847*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass to Event Handler 2848*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2849*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Mux_TriggerDestOnOffEvent(XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE src , void* para); 2850*53ee8cc1Swenshuai.xi 2851*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2852*53ee8cc1Swenshuai.xi /// This function was used to enable/disable the destination periodic handler 2853*53ee8cc1Swenshuai.xi /// After enabled periodic hander, Mux Controller will pass the parameters to this handler and execute it periodically 2854*53ee8cc1Swenshuai.xi /// @param src \b IN: the source type for handler 2855*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable/Disable the priodic handler. 2856*53ee8cc1Swenshuai.xi /// @return 1 if successfuly. Return -1 if failed. 2857*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2858*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_S16 MApi_XC_EX_Mux_OnOffPeriodicHandler(XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE src, MS_BOOL bEnable); 2859*53ee8cc1Swenshuai.xi 2860*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2861*53ee8cc1Swenshuai.xi /// Get Paths in driver. 2862*53ee8cc1Swenshuai.xi /// @param Paths \b OUT: Path information 2863*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 2864*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2865*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_Mux_GetPathInfo(XC_DEVICE_ID *pDeviceId, XC_EX_MUX_PATH_INFO* Paths); // Return current all path info. Max path number is MAX_DATA_PATH_SUPPORTED 2866*53ee8cc1Swenshuai.xi 2867*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2868*53ee8cc1Swenshuai.xi /// Set Support MHL Path Info 2869*53ee8cc1Swenshuai.xi /// @param u8MhlSupportInfo \b IN: MHL Support Info 2870*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 2871*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2872*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Mux_SetSupportMhlPathInfo(XC_DEVICE_ID *pDeviceId, MS_U8 u8MhlSupportInfo); 2873*53ee8cc1Swenshuai.xi 2874*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2875*53ee8cc1Swenshuai.xi /// Set MHL Hot Plug Inverse Info 2876*53ee8cc1Swenshuai.xi /// @param bIsMhlHotPlugInverse \b IN: MHL Hot Plug Inverse Info 2877*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 2878*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2879*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Mux_SetMhlHotPlugInverseInfo(XC_DEVICE_ID *pDeviceId, MS_BOOL bIsMhlHotPlugInverse); 2880*53ee8cc1Swenshuai.xi 2881*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2882*53ee8cc1Swenshuai.xi /// Get input port from input HDMI source type 2883*53ee8cc1Swenshuai.xi /// @param src \b IN: the query based on the input HDMI type 2884*53ee8cc1Swenshuai.xi /// @return @ref E_MUX_INPUTPORT 2885*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2886*53ee8cc1Swenshuai.xi DLL_PUBLIC E_MUX_INPUTPORT MApi_XC_EX_Mux_GetHDMIPort( XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE src ); 2887*53ee8cc1Swenshuai.xi 2888*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2889*53ee8cc1Swenshuai.xi /// Map input source to VD Ymux port 2890*53ee8cc1Swenshuai.xi /// @param u8InputSourceType \b IN: input source type 2891*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 2892*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2893*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_MUX_MapInputSourceToVDYMuxPORT( XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE u8InputSourceType ); 2894*53ee8cc1Swenshuai.xi 2895*53ee8cc1Swenshuai.xi //------------------------------ 2896*53ee8cc1Swenshuai.xi // PQ related 2897*53ee8cc1Swenshuai.xi //------------------------------ 2898*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Set_NR(XC_DEVICE_ID *pDeviceId, MS_BOOL bEn, XC_EX_SCALER_WIN eWindow); 2899*53ee8cc1Swenshuai.xi 2900*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FilmMode_P(XC_DEVICE_ID *pDeviceId); 2901*53ee8cc1Swenshuai.xi 2902*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2903*53ee8cc1Swenshuai.xi /// Check if UC is enabled 2904*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 2905*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: UC enabled, FALSE: UC disabled 2906*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2907*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetUCEnabled(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2908*53ee8cc1Swenshuai.xi 2909*53ee8cc1Swenshuai.xi //------------------------------ 2910*53ee8cc1Swenshuai.xi // Auto related 2911*53ee8cc1Swenshuai.xi //------------------------------ 2912*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GenSpecificTiming(XC_DEVICE_ID *pDeviceId, XC_EX_Internal_TimingType timingtype); 2913*53ee8cc1Swenshuai.xi 2914*53ee8cc1Swenshuai.xi //------------------------------ 2915*53ee8cc1Swenshuai.xi // Scaler IP Related 2916*53ee8cc1Swenshuai.xi //------------------------------ 2917*53ee8cc1Swenshuai.xi // DE-Bypass Mode 2918*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2919*53ee8cc1Swenshuai.xi /// This function get DE-Bypass Mode 2920*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 2921*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL 2922*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2923*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetDEBypassMode(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 2924*53ee8cc1Swenshuai.xi 2925*53ee8cc1Swenshuai.xi // Data enable 2926*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2927*53ee8cc1Swenshuai.xi /// This function get DE window 2928*53ee8cc1Swenshuai.xi /// @param psWin \b OUT: window info to get 2929*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 2930*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2931*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GetDEWindow(XC_DEVICE_ID *pDeviceId, XC_EX_WINDOW_TYPE *psWin, XC_EX_SCALER_WIN eWindow); 2932*53ee8cc1Swenshuai.xi 2933*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2934*53ee8cc1Swenshuai.xi /// This function get DE window in DE ByPass Mode. (T12 / T13 can not support HDMI HV mode. So DE window from BK1 can not be retrieved if set to HV mode.) 2935*53ee8cc1Swenshuai.xi /// We Bypass pre-scaling and get H/V size from BK2 MDrv_SC_get_vsd_line_count & MDrv_SC_get_hsd_pixel_count. 2936*53ee8cc1Swenshuai.xi /// Prepare this function for using in the feature. 2937*53ee8cc1Swenshuai.xi /// @param psWin \b OUT: window info to get 2938*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 2939*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2940*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GetDEWidthHeightInDEByPassMode(XC_DEVICE_ID *pDeviceId, MS_U16* pu16Width,MS_U16* pu16Height ,XC_EX_SCALER_WIN eWindow); 2941*53ee8cc1Swenshuai.xi 2942*53ee8cc1Swenshuai.xi //Get Capture Window 2943*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2944*53ee8cc1Swenshuai.xi /// Get the capture window for specific window 2945*53ee8cc1Swenshuai.xi /// @param capture_win \b OUT: the window info to get 2946*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to get 2947*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2948*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_GetCaptureWindow(XC_DEVICE_ID *pDeviceId, XC_EX_WINDOW_TYPE* capture_win, XC_EX_SCALER_WIN eWindow); 2949*53ee8cc1Swenshuai.xi 2950*53ee8cc1Swenshuai.xi 2951*53ee8cc1Swenshuai.xi //Set Capture Window 2952*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2953*53ee8cc1Swenshuai.xi /// Set the Vertical start of capture window for specific window 2954*53ee8cc1Swenshuai.xi /// @param u16Vstart \b IN: the window info to get 2955*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 2956*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2957*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetCaptureWindowVstart(XC_DEVICE_ID *pDeviceId, MS_U16 u16Vstart , XC_EX_SCALER_WIN eWindow); 2958*53ee8cc1Swenshuai.xi 2959*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2960*53ee8cc1Swenshuai.xi /// Set the horizontal start of capture window for specific window 2961*53ee8cc1Swenshuai.xi /// @param u16Hstart \b IN: the window info to get 2962*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 2963*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2964*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetCaptureWindowHstart(XC_DEVICE_ID *pDeviceId, MS_U16 u16Hstart , XC_EX_SCALER_WIN eWindow); 2965*53ee8cc1Swenshuai.xi 2966*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2967*53ee8cc1Swenshuai.xi /// Set the Vertical size of capture window for specific window 2968*53ee8cc1Swenshuai.xi /// @param u16Vsize \b IN: the window info to get 2969*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 2970*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2971*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetCaptureWindowVsize(XC_DEVICE_ID *pDeviceId, MS_U16 u16Vsize , XC_EX_SCALER_WIN eWindow); 2972*53ee8cc1Swenshuai.xi 2973*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2974*53ee8cc1Swenshuai.xi /// Set the Horizontal size of capture window for specific window 2975*53ee8cc1Swenshuai.xi /// @param u16Hsize \b IN: the window info to get 2976*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 2977*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2978*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetCaptureWindowHsize(XC_DEVICE_ID *pDeviceId, MS_U16 u16Hsize , XC_EX_SCALER_WIN eWindow); 2979*53ee8cc1Swenshuai.xi 2980*53ee8cc1Swenshuai.xi // Utility 2981*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2982*53ee8cc1Swenshuai.xi /// do the software reset for the specific window 2983*53ee8cc1Swenshuai.xi /// @param u8Reset \b IN: reset IP @ref SOFTWARE_REST_TYPE_t 2984*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 2985*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2986*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SoftwareReset(XC_DEVICE_ID *pDeviceId, MS_U8 u8Reset, XC_EX_SCALER_WIN eWindow); 2987*53ee8cc1Swenshuai.xi 2988*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2989*53ee8cc1Swenshuai.xi /// This function will calculate and return H Frequency x 10 2990*53ee8cc1Swenshuai.xi /// @param u16HPeriod \b IN: Horizontal period 2991*53ee8cc1Swenshuai.xi /// @return MS_U16: H Frequency x 10 2992*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2993*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_CalculateHFreqx10(XC_DEVICE_ID *pDeviceId, MS_U16 u16HPeriod); 2994*53ee8cc1Swenshuai.xi 2995*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2996*53ee8cc1Swenshuai.xi /// This function will calculate and return H Frequency x 1000 2997*53ee8cc1Swenshuai.xi /// @param u16HPeriod \b IN: Horizontal period 2998*53ee8cc1Swenshuai.xi /// @return MS_U32: H Frequency x 1000 2999*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3000*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32 MApi_XC_EX_CalculateHFreqx1K(XC_DEVICE_ID *pDeviceId, MS_U16 u16HPeriod); 3001*53ee8cc1Swenshuai.xi 3002*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3003*53ee8cc1Swenshuai.xi /// This function will calculate and return V Frequency x 10 3004*53ee8cc1Swenshuai.xi /// @param u16HFreq \b IN: Horizontal frequency 3005*53ee8cc1Swenshuai.xi /// @param u16VTotal \b IN: Vertical Total, usually the scan lines counts of a frame 3006*53ee8cc1Swenshuai.xi /// @return MS_U16: V Frequency x 10 3007*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3008*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_CalculateVFreqx10(XC_DEVICE_ID *pDeviceId, MS_U16 u16HFreq, MS_U16 u16VTotal); 3009*53ee8cc1Swenshuai.xi 3010*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3011*53ee8cc1Swenshuai.xi /// This function will calculate and return V Frequency x 1000 3012*53ee8cc1Swenshuai.xi /// @param u16HFreq \b IN: Horizontal frequency 3013*53ee8cc1Swenshuai.xi /// @param u16VTotal \b IN: Vertical Total, usually the scan lines counts of a frame 3014*53ee8cc1Swenshuai.xi /// @return MS_U32: V Frequency x 1000 3015*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3016*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32 MApi_XC_EX_CalculateVFreqx1K(XC_DEVICE_ID *pDeviceId, MS_U32 u16HFreq, MS_U16 u16VTotal); 3017*53ee8cc1Swenshuai.xi 3018*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3019*53ee8cc1Swenshuai.xi /// This function will get V Frequency x 1000 3020*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: the window we are going to get V frequency 3021*53ee8cc1Swenshuai.xi /// @return MS_U32: Accurate V Frequency x 1000 3022*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3023*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32 MApi_XC_EX_GetAccurateVFreqx1K(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3024*53ee8cc1Swenshuai.xi 3025*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3026*53ee8cc1Swenshuai.xi /// Attach a Call back function info Interrupt. 3027*53ee8cc1Swenshuai.xi /// @param eIntNum \b IN: The interrupt type (@ref SC_INT_SRC) 3028*53ee8cc1Swenshuai.xi /// @param pIntCb \b IN: Call back function prototype. 3029*53ee8cc1Swenshuai.xi /// @param pParam \b IN: Parameter for IntCb 3030*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success , False: Fail 3031*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3032*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_InterruptAttach(XC_DEVICE_ID *pDeviceId, SC_EX_INT_SRC enIntNum, SC_EX_InterruptCb pIntCb, void * pParam); 3033*53ee8cc1Swenshuai.xi 3034*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3035*53ee8cc1Swenshuai.xi /// DeAttach a Call back function info Interrupt. 3036*53ee8cc1Swenshuai.xi /// @param eIntNum \b IN: The interrupt type (@ref SC_INT_SRC) 3037*53ee8cc1Swenshuai.xi /// @param pIntCb \b IN: Call back function prototype. 3038*53ee8cc1Swenshuai.xi /// @param pParam \b IN: Parameter for IntCb 3039*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success , False: Fail 3040*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3041*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_InterruptDeAttach(XC_DEVICE_ID *pDeviceId, SC_EX_INT_SRC enIntNum, SC_EX_InterruptCb pIntCb, void * pParam); 3042*53ee8cc1Swenshuai.xi 3043*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3044*53ee8cc1Swenshuai.xi /// This function will disable input source 3045*53ee8cc1Swenshuai.xi /// @param bDisable \b IN: TRUE : Disable; FALSE: Enable 3046*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3047*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_DisableInputSource(XC_DEVICE_ID *pDeviceId, MS_BOOL bDisable, XC_EX_SCALER_WIN eWidnow); 3048*53ee8cc1Swenshuai.xi 3049*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3050*53ee8cc1Swenshuai.xi /// This function will check is input source disabled or not 3051*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window(main or sub) to set 3052*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: inputsource is disabled, False: inputsource is not disabled 3053*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3054*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsInputSourceDisabled(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3055*53ee8cc1Swenshuai.xi 3056*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3057*53ee8cc1Swenshuai.xi /// This function will change panel type dynamically 3058*53ee8cc1Swenshuai.xi /// @param pstPanelInfo \b IN: the new panel type 3059*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3060*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_ChangePanelType(XC_DEVICE_ID *pDeviceId, XC_EX_PANEL_INFO *pstPanelInfo); 3061*53ee8cc1Swenshuai.xi 3062*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3063*53ee8cc1Swenshuai.xi // 3064*53ee8cc1Swenshuai.xi // Attention! This function should only be used in the xc interrupt!!! 3065*53ee8cc1Swenshuai.xi // 3066*53ee8cc1Swenshuai.xi /// This function will tell the current read bank 3067*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 3068*53ee8cc1Swenshuai.xi /// @return MS_U16 Current read bank 3069*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3070*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_GetCurrentReadBank(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3071*53ee8cc1Swenshuai.xi 3072*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3073*53ee8cc1Swenshuai.xi // 3074*53ee8cc1Swenshuai.xi // Attention! This function should only be used in the xc interrupt!!! 3075*53ee8cc1Swenshuai.xi // 3076*53ee8cc1Swenshuai.xi /// This function will tell the current write bank 3077*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 3078*53ee8cc1Swenshuai.xi /// @return MS_U16 Current write bank 3079*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3080*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_GetCurrentWriteBank(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3081*53ee8cc1Swenshuai.xi 3082*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3083*53ee8cc1Swenshuai.xi /// 1. calculate H/V pre-scaling down ratio accroding to frame buffer size 3084*53ee8cc1Swenshuai.xi /// 2. must be called after MApi_XC_SetFrameBufferAddress() and before MApi_XC_EX_SetWindow() 3085*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable auto pre scaling 3086*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Window 3087*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3088*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetAutoPreScaling(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 3089*53ee8cc1Swenshuai.xi 3090*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3091*53ee8cc1Swenshuai.xi /// Get V sync width of current input source. 3092*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The Vsync width of specific window. 3093*53ee8cc1Swenshuai.xi /// @return MS_U8 Sync width of input V sync 3094*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3095*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_GetVSyncWidth(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3096*53ee8cc1Swenshuai.xi 3097*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3098*53ee8cc1Swenshuai.xi /// Set blanding point of GOP in Scaler. 3099*53ee8cc1Swenshuai.xi /// @param MaxGOP \b IN: The mux number. 3100*53ee8cc1Swenshuai.xi /// @param UseNum \b IN: GOP selection. 3101*53ee8cc1Swenshuai.xi /// @param u8MuxNum \b IN: The mux number. 3102*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable GOP 3103*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: Success FALSE: Fail 3104*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3105*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_set_GOP_Enable(XC_DEVICE_ID *pDeviceId, MS_U8 MaxGOP, MS_U8 UseNum, MS_U8 u8MuxNum, MS_BOOL bEnable); 3106*53ee8cc1Swenshuai.xi 3107*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3108*53ee8cc1Swenshuai.xi /// Set blanding point of GOP in Scaler. 3109*53ee8cc1Swenshuai.xi /// @param u8MuxNum \b IN: The mux number. 3110*53ee8cc1Swenshuai.xi /// @param ipSelGop \b IN: GOP selection. 3111*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3112*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_ip_sel_for_gop(XC_DEVICE_ID *pDeviceId, MS_U8 u8MuxNum , XC_EX_IPSEL_GOP ipSelGop); 3113*53ee8cc1Swenshuai.xi 3114*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3115*53ee8cc1Swenshuai.xi /// Set Scaler VOP New blending level 3116*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3117*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetVOPNBL(XC_DEVICE_ID *pDeviceId); 3118*53ee8cc1Swenshuai.xi 3119*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3120*53ee8cc1Swenshuai.xi /// XC IP0 Get Destination Information for GOP mixer 3121*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE 3122*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3123*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetDstInfo(XC_DEVICE_ID *pDeviceId, XC_EX_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo, XC_EX_GOP_XCDST_TYPE XCDstType); 3124*53ee8cc1Swenshuai.xi 3125*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3126*53ee8cc1Swenshuai.xi /// Allow decoder to control Field R / W bank status of scaler. 3127*53ee8cc1Swenshuai.xi /// @param u8Enable \b IN: True: Decoder can control the R/W bank status. False: Decoder can not control the R/W bank status 3128*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3129*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_set_FD_Mask(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3130*53ee8cc1Swenshuai.xi 3131*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3132*53ee8cc1Swenshuai.xi /// Get XC FD_Mask status. 3133*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE 3134*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3135*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Get_FD_Mask(XC_DEVICE_ID *pDeviceId); 3136*53ee8cc1Swenshuai.xi 3137*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3138*53ee8cc1Swenshuai.xi /// Allow decoder to control Field R / W bank status of scaler. 3139*53ee8cc1Swenshuai.xi /// @param u8Enable \b IN: True: Decoder can control the R/W bank status. False: Decoder can not control the R/W bank status 3140*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3141*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_set_FD_Mask_byWin(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 3142*53ee8cc1Swenshuai.xi 3143*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3144*53ee8cc1Swenshuai.xi /// Get XC FD_Mask master swtich status. 3145*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE 3146*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3147*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Get_FD_Mask_byWin(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3148*53ee8cc1Swenshuai.xi 3149*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3150*53ee8cc1Swenshuai.xi /// Get XC FD_Mask read back status from decoder. 3151*53ee8cc1Swenshuai.xi ///@return MS_BOOL fd mask on/off 3152*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3153*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Get_FD_Mask_Status(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3154*53ee8cc1Swenshuai.xi 3155*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3156*53ee8cc1Swenshuai.xi /// Set Scaler IP input test pattern. 3157*53ee8cc1Swenshuai.xi /// @param u8Enable \b IN: Set 1 to enable. Bit(0) is horizontal pattern and Bit(1) is vertical pattern 3158*53ee8cc1Swenshuai.xi /// @param u6Pattern_type \b IN: The pattern type. (the width of each pattern) 3159*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3160*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3161*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetIP1TestPattern(XC_DEVICE_ID *pDeviceId, MS_U8 u8Enable, MS_U16 u6Pattern_type, XC_EX_SCALER_WIN eWindow); 3162*53ee8cc1Swenshuai.xi 3163*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3164*53ee8cc1Swenshuai.xi /// Auto create input timing. To use this feature, the system must provide clock to scaler. 3165*53ee8cc1Swenshuai.xi /// @param timingtype \b IN: the timing type. 3166*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3167*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_InitIPForInternalTiming(XC_DEVICE_ID *pDeviceId, XC_EX_Internal_TimingType timingtype); 3168*53ee8cc1Swenshuai.xi 3169*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3170*53ee8cc1Swenshuai.xi /// Set Main window IP mux directly. 3171*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: The value need to be set into register 3172*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3173*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetIPMux(XC_DEVICE_ID *pDeviceId, MS_U8 u8Val); 3174*53ee8cc1Swenshuai.xi 3175*53ee8cc1Swenshuai.xi /// status of input H/V sync 3176*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3177*53ee8cc1Swenshuai.xi /// Return true if input H sync of scaler is exist. 3178*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3179*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Exist FALSE: not Exist 3180*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3181*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Is_H_Sync_Active(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3182*53ee8cc1Swenshuai.xi 3183*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3184*53ee8cc1Swenshuai.xi /// Return true if input V sync of scaler is exist. 3185*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3186*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Exist FALSE: not Exist 3187*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3188*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Is_V_Sync_Active(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3189*53ee8cc1Swenshuai.xi 3190*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3191*53ee8cc1Swenshuai.xi /// get auto position window with the corresponding valid data threshold 3192*53ee8cc1Swenshuai.xi /// @param u8ValidData \b IN: valid data threshold 3193*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 3194*53ee8cc1Swenshuai.xi /// @param pstAutoPositionWindow \b OUT: auto position window parameters 3195*53ee8cc1Swenshuai.xi /// @return MS_BOOL TRUE: auto position window is valid FALSE: auto position window is invalid 3196*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3197*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetAutoPositionWindow(XC_DEVICE_ID *pDeviceId, MS_U8 u8ValidData, XC_EX_SCALER_WIN eWindow, XC_EX_WINDOW_TYPE *pstAutoPositionWindow); 3198*53ee8cc1Swenshuai.xi 3199*53ee8cc1Swenshuai.xi 3200*53ee8cc1Swenshuai.xi //------------------------------ 3201*53ee8cc1Swenshuai.xi // Scaler & Memory 3202*53ee8cc1Swenshuai.xi //------------------------------ 3203*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3204*53ee8cc1Swenshuai.xi /// Set Frame buffer address and size for scaler. 3205*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: Start address of frame buffer. 3206*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: Frame buffer size for Scaler 3207*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3208*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3209*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetFrameBufferAddress(XC_DEVICE_ID *pDeviceId, MS_PHY u32FBAddress, MS_PHY u32FBSize, XC_EX_SCALER_WIN eWindow); 3210*53ee8cc1Swenshuai.xi 3211*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3212*53ee8cc1Swenshuai.xi /// Check if the buffer size is enough or not. 3213*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: @ref E_XC_MEMORY_REQUEST_TYPE 3214*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3215*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Buffer size is enough FALSE: Buffer is not enough 3216*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3217*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsFrameBufferEnoughForCusScaling(XC_DEVICE_ID *pDeviceId, XC_EX_SETWIN_INFO *pstXC_SetWin_Info, XC_EX_SCALER_WIN eWindow); 3218*53ee8cc1Swenshuai.xi 3219*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3220*53ee8cc1Swenshuai.xi /// Enable or disable scaler memory read/write request 3221*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TURE=Enable memory request of 'eType'; FALSE= Disable memory request of 'eType' 3222*53ee8cc1Swenshuai.xi /// @param eType \b IN: @ref E_XC_MEMORY_REQUEST_TYPE 3223*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3224*53ee8cc1Swenshuai.xi /// @return @ref XC_EX_RETURN_VALUE 3225*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3226*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetScalerMemoryRequest(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_MEMORY_REQUEST_TYPE eType, XC_EX_SCALER_WIN eWindow); 3227*53ee8cc1Swenshuai.xi 3228*53ee8cc1Swenshuai.xi //Capture_Memory 3229*53ee8cc1Swenshuai.xi 3230*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3231*53ee8cc1Swenshuai.xi /// Get pixel data specify by u16CorX and u16CorY. 3232*53ee8cc1Swenshuai.xi /// This pixel data is catured after scaler memory (not after OSD or gamma). And it will latch 20ms for retrieving data. 3233*53ee8cc1Swenshuai.xi /// Also note the x , y coordinate should be small or equel to input source size. (not panel size) 3234*53ee8cc1Swenshuai.xi /// @param u16CorX \b IN: X coordinate 3235*53ee8cc1Swenshuai.xi /// @param u16CorY \b IN: Y coordinate. 3236*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3237*53ee8cc1Swenshuai.xi /// @return void 3238*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3239*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Get_PixelData(XC_DEVICE_ID *pDeviceId, MS_U16 u16CorX, MS_U16 u16CorY, XC_EX_PIXEL_32BIT* pixel); 3240*53ee8cc1Swenshuai.xi 3241*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3242*53ee8cc1Swenshuai.xi /// calc widht or height based on existed dnr buffer and byte/pixel 3243*53ee8cc1Swenshuai.xi /// Fomula : Scaler buffer size / u8FBNum / (byte / pixel) / InputSize 3244*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window need to be calc 3245*53ee8cc1Swenshuai.xi /// @param u8FBNum \b IN: frame cout 3246*53ee8cc1Swenshuai.xi /// @param u32InputSize \b IN: The input source size. 3247*53ee8cc1Swenshuai.xi /// @return MS_U32 The size of frames. 3248*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3249*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32 MApi_XC_EX_GetAvailableSize(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow, MS_U8 u8FBNum, MS_U32 u32InputSize); 3250*53ee8cc1Swenshuai.xi 3251*53ee8cc1Swenshuai.xi //------------------------------ 3252*53ee8cc1Swenshuai.xi // Display & Output 3253*53ee8cc1Swenshuai.xi //------------------------------ 3254*53ee8cc1Swenshuai.xi // Display related 3255*53ee8cc1Swenshuai.xi 3256*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3257*53ee8cc1Swenshuai.xi /// Set Scaler Frame color 3258*53ee8cc1Swenshuai.xi /// @param u32aRGB \b IN: the 4 bytes in aRGB are "a: no use, R 23:16, G 15:8, B 7:0" (B is in LSB) 3259*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3260*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetFrameColor(XC_DEVICE_ID *pDeviceId, MS_U32 u32aRGB); 3261*53ee8cc1Swenshuai.xi 3262*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3263*53ee8cc1Swenshuai.xi /// Set color of main / sub window. This color will be shown when black screen enabled. 3264*53ee8cc1Swenshuai.xi /// @param u8Color \b IN: format in a byte => R 7:5, G 4:2, B 1:0 3265*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window which need to be set. 3266*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3267*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetDispWindowColor(XC_DEVICE_ID *pDeviceId, MS_U8 u8Color, XC_EX_SCALER_WIN eWindow); 3268*53ee8cc1Swenshuai.xi 3269*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3270*53ee8cc1Swenshuai.xi /// Query the capability of scaler about source to Video encoder(VE) 3271*53ee8cc1Swenshuai.xi /// @param OutputCapability \b OUT: Which part of scaler can output data to Video Encoder (VE). 3272*53ee8cc1Swenshuai.xi ///Check E_XC_SOURCE_TO_VE for capability bit. Take an example, if bit0 of OutputCapability equal to 1, 3273*53ee8cc1Swenshuai.xi ///Scaler can output data to ve from its E_XC_IP(IP) 3274*53ee8cc1Swenshuai.xi ///@return @ref MS_BOOL True if query success. 3275*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3276*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SupportSourceToVE(XC_DEVICE_ID *pDeviceId, MS_U16* pOutputCapability); 3277*53ee8cc1Swenshuai.xi 3278*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3279*53ee8cc1Swenshuai.xi /// Enable output capture for output data to VE. Return False if current platform does not support E_XC_SOURCE_TO_VE 3280*53ee8cc1Swenshuai.xi /// Note: this source is not only for VE, but Scaler IP or DIP 3281*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable output capture function 3282*53ee8cc1Swenshuai.xi /// @param eSourceToVE \b IN: Specific output source. The source listed in E_XC_SOURCE_TO_VE is a "point" which can be retrieve data. 3283*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3284*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetOutputCapture(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SOURCE_TO_VE eSourceToVE); 3285*53ee8cc1Swenshuai.xi 3286*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3287*53ee8cc1Swenshuai.xi /// Setup Gamma function ON/OFF 3288*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 3289*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3290*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetGammaOnOff (XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3291*53ee8cc1Swenshuai.xi 3292*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3293*53ee8cc1Swenshuai.xi /// Set VOP Gain for Main Window(after 3x3 before Gamma) 3294*53ee8cc1Swenshuai.xi /// @param eVop_Channel \b IN: Select VOP R/G/B 3295*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Set value 3296*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3297*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetPreGammaGain(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow, XC_EX_VOP_CHANNEL eVop_Channel, MS_U16 u16Val); 3298*53ee8cc1Swenshuai.xi 3299*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3300*53ee8cc1Swenshuai.xi /// Set VOP Offset for Main Window(after 3x3 before Gamma) 3301*53ee8cc1Swenshuai.xi /// @param eVop_Channel \b IN: Select VOP R/G/B 3302*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Set value 3303*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3304*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetPreGammaOffset(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow, XC_EX_VOP_CHANNEL eVop_Channel, MS_U16 u16Val); 3305*53ee8cc1Swenshuai.xi 3306*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3307*53ee8cc1Swenshuai.xi // Output timing related 3308*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3309*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3310*53ee8cc1Swenshuai.xi /// Setup panel timing (output DCLK)/FRC/FramePLL, and enable input source 3311*53ee8cc1Swenshuai.xi /// @param pTimingInfo \b IN: the information of the timing to set @ref XC_SetTiming_Info 3312*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3313*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetPanelTiming(XC_DEVICE_ID *pDeviceId, XC_EX_SetTiming_Info *pTimingInfo, XC_EX_SCALER_WIN eWindow); 3314*53ee8cc1Swenshuai.xi 3315*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3316*53ee8cc1Swenshuai.xi /// Set current output type. This is set in Panel structure. You can adjust it here. 3317*53ee8cc1Swenshuai.xi /// @param enPnl_Out_Timing_Mode \b IN: The output type 3318*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3319*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetOutTimingMode(XC_DEVICE_ID *pDeviceId, XC_EX_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode); 3320*53ee8cc1Swenshuai.xi 3321*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3322*53ee8cc1Swenshuai.xi /// set free run display window timing 3323*53ee8cc1Swenshuai.xi /// @return void Output type. 3324*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3325*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetFreeRunTiming(XC_DEVICE_ID *pDeviceId); 3326*53ee8cc1Swenshuai.xi 3327*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3328*53ee8cc1Swenshuai.xi /// Adjust V sync FrontPorch , Sync Width for specific output frame rate (You can adjust in advance by using MApi_XC_EX_SetExPanelInfo) 3329*53ee8cc1Swenshuai.xi /// @param u16FrontPorch \b IN: Front porch of output Vsync 3330*53ee8cc1Swenshuai.xi /// @param u16SyncWidth \b IN: Sync width of output Vsync 3331*53ee8cc1Swenshuai.xi /// @param u16OutputVfreq \b IN: The output frame rate you want to adjust. 3332*53ee8cc1Swenshuai.xi /// @return MS_BOOL True: Success False : Fail 3333*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3334*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_CustomerSyncInfo(XC_DEVICE_ID *pDeviceId, MS_U16 u16FrontPorch, MS_U16 u16SyncWidth, MS_U16 u16OutputVfreq); 3335*53ee8cc1Swenshuai.xi 3336*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3337*53ee8cc1Swenshuai.xi /// Wait FPLL finished 3338*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL indicate FPLL finished or not (frame lock finished or not) 3339*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3340*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_WaitFPLLDone(XC_DEVICE_ID *pDeviceId); 3341*53ee8cc1Swenshuai.xi 3342*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3343*53ee8cc1Swenshuai.xi /// Get scaler output vertical frequency 3344*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 return output vertical frequency x 100 3345*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3346*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_GetOutputVFreqX100(XC_DEVICE_ID *pDeviceId); 3347*53ee8cc1Swenshuai.xi 3348*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3349*53ee8cc1Swenshuai.xi /// Frame Lock Check 3350*53ee8cc1Swenshuai.xi /// @ref MS_BOOL TURE=Frame Lock ; FALSE= Not Frame Lock 3351*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3352*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_FrameLockCheck(XC_DEVICE_ID *pDeviceId); 3353*53ee8cc1Swenshuai.xi 3354*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3355*53ee8cc1Swenshuai.xi /// Set a customize FRC table into driver 3356*53ee8cc1Swenshuai.xi /// You can customize frc table in driver. The max number of FRC setting is 5 (Can be changed in driver layer). 3357*53ee8cc1Swenshuai.xi /// 3358*53ee8cc1Swenshuai.xi /// Here is an example of 5 FRC items with 6 maximal number of FRC setting. 3359*53ee8cc1Swenshuai.xi /// Please fill {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} at unused FRC item slot. 3360*53ee8cc1Swenshuai.xi /// 3361*53ee8cc1Swenshuai.xi /// {0, 160, 1, 4, MS_FRC_1_4}, <-- FRC item 0 3362*53ee8cc1Swenshuai.xi /// {160, 245, 2, 5, MS_FRC_2_5}, <-- FRC item 1 3363*53ee8cc1Swenshuai.xi /// {245, 260, 1, 2, MS_FRC_1_2}, <-- FRC item 2 3364*53ee8cc1Swenshuai.xi /// {260, 400, 1, 2, MS_FRC_1_2}, <-- FRC item 3 3365*53ee8cc1Swenshuai.xi /// {400, 0xFFFF, 1, 1, MS_FRC_1_1}, <-- FRC item 4 3366*53ee8cc1Swenshuai.xi /// {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} <-- FRC item 5 (Unused) 3367*53ee8cc1Swenshuai.xi /// @param stFRCTable \b IN: The pointer which point to a FRC table. You can refer above description. 3368*53ee8cc1Swenshuai.xi /// if pass NULL, driver will use default frc table. 3369*53ee8cc1Swenshuai.xi /// @return @ref XC_EX_RETURN_VALUE Return status. 3370*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3371*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_CustomizeFRCTable(XC_DEVICE_ID *pDeviceId, XC_EX_FRC_SETTING* stFRCTable); 3372*53ee8cc1Swenshuai.xi 3373*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3374*53ee8cc1Swenshuai.xi /// Set specific in / out framerate control (Using in Box proejct only.) 3375*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable ouput frame control 3376*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The information about in / out framerate. 3377*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The window which need to be controlled. 3378*53ee8cc1Swenshuai.xi /// @return @ref XC_EX_RETURN_VALUE return type. 3379*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3380*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OutputFrameCtrl(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_OUTPUTFRAME_Info * stOutFrameInfo,XC_EX_SCALER_WIN eWindow); 3381*53ee8cc1Swenshuai.xi 3382*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3383*53ee8cc1Swenshuai.xi /// Set the FPLL mode: 3384*53ee8cc1Swenshuai.xi /// @param bTrue \b IN: True: FSM mode, False: Non FSM mode 3385*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3386*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_SC_EX_Enable_FPLL_FSM(XC_DEVICE_ID *pDeviceId, MS_BOOL bTrue); 3387*53ee8cc1Swenshuai.xi 3388*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3389*53ee8cc1Swenshuai.xi /// This function will force freerun in MDrv_Scaler_SetPanelTiming(), 3390*53ee8cc1Swenshuai.xi /// otherwise MDrv_Scaler_SetPanelTiming() will decide to do framelock or not by itself. 3391*53ee8cc1Swenshuai.xi /// 3392*53ee8cc1Swenshuai.xi /// Note: this function is difference with MDrv_SC_set_fpll() which is used to 3393*53ee8cc1Swenshuai.xi /// unlock framelock after MDrv_Scaler_SetPanelTiming(). 3394*53ee8cc1Swenshuai.xi /// But this function is used to affect MDrv_Scaler_SetPanelTiming()'s behavior. 3395*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable force freerun. FALSE: disable force free run. 3396*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3397*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_SC_EX_ForceFreerun(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3398*53ee8cc1Swenshuai.xi 3399*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3400*53ee8cc1Swenshuai.xi /// Get Force freerun status. 3401*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL True: Current is in Force freerun mode. False: Current is not in Force Freerun mode 3402*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3403*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_SC_EX_IsForceFreerun(XC_DEVICE_ID *pDeviceId); 3404*53ee8cc1Swenshuai.xi 3405*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3406*53ee8cc1Swenshuai.xi /// Set specific in / out framerate control (Using in Box proejct only.) 3407*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable ouput frame control 3408*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The information about in / out framerate. 3409*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The window which need to be controlled. 3410*53ee8cc1Swenshuai.xi /// @return @ref XC_EX_RETURN_VALUE return type. 3411*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3412*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_SC_EX_SetFreerunVFreq(XC_DEVICE_ID *pDeviceId, XC_EX_VFREQ_SEL VFreq); 3413*53ee8cc1Swenshuai.xi 3414*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3415*53ee8cc1Swenshuai.xi /// Set external panel info for output 3416*53ee8cc1Swenshuai.xi /// Currently, only support setting of two different vfreqs at same time 3417*53ee8cc1Swenshuai.xi /// The set ExPanelInfo will take effect after running of function MApi_XC_SetPanelTiming 3418*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Enable this XC_PANEL_INFO_EX, FALSE: Disable this XC_PANEL_INFO_EX 3419*53ee8cc1Swenshuai.xi /// @param pPanelInfoEx \b IN: The extern panel information to set @ref XC_PANEL_INFO_EX 3420*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 3421*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3422*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetExPanelInfo(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_PANEL_INFO_EX *pPanelInfoEx); 3423*53ee8cc1Swenshuai.xi 3424*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3425*53ee8cc1Swenshuai.xi /// Set the FPLL thresh mode: 3426*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: TRUE: Thresh mode, FALSE: Non-Thresh mode 3427*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3428*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Enable_FPLL_Thresh_Mode(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3429*53ee8cc1Swenshuai.xi 3430*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3431*53ee8cc1Swenshuai.xi /// Enable auto no signal mode 3432*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: True: Enable auto no signal mode. 3433*53ee8cc1Swenshuai.xi /// @eWindow \b IN: The window (main or sub) which need to be controled. 3434*53ee8cc1Swenshuai.xi /// @return @ref XC_EX_RETURN_VALUE TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode 3435*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3436*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_EnableIPAutoNoSignal(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow ); 3437*53ee8cc1Swenshuai.xi 3438*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3439*53ee8cc1Swenshuai.xi /// Return true is current is in auto nosignal mode. 3440*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: IP auto nosignal in specific window 3441*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode 3442*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3443*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetIPAutoNoSignal(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow ); 3444*53ee8cc1Swenshuai.xi 3445*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3446*53ee8cc1Swenshuai.xi /// Enable or disable IP auto coast 3447*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 3448*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3449*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableIPAutoCoast(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3450*53ee8cc1Swenshuai.xi 3451*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3452*53ee8cc1Swenshuai.xi /// Enable IP auto Coast debounce (the debounce time is 1 (default) in driver) 3453*53ee8cc1Swenshuai.xi /// @return void 3454*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3455*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableIPCoastDebounce(XC_DEVICE_ID *pDeviceId); 3456*53ee8cc1Swenshuai.xi 3457*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3458*53ee8cc1Swenshuai.xi /// Clear IP auto Coast debounce 3459*53ee8cc1Swenshuai.xi /// @return void 3460*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3461*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_ClearIPCoastStatus(XC_DEVICE_ID *pDeviceId); 3462*53ee8cc1Swenshuai.xi 3463*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3464*53ee8cc1Swenshuai.xi /// Enable FPLL related settings not by program but by user's setting from TV tool 3465*53ee8cc1Swenshuai.xi /// Including PhaseLimit, limitD5D6D7_RK 3466*53ee8cc1Swenshuai.xi /// @param bEnable @ref MS_BOOL \b IN: enable or not 3467*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3468*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableFpllManualSetting(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); // debug purpose 3469*53ee8cc1Swenshuai.xi 3470*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------------------------- 3471*53ee8cc1Swenshuai.xi /// Test if panel output is ok by changing output DClk, this is to test max range that FPLL can do 3472*53ee8cc1Swenshuai.xi /// @param u32FpllSetOffset @ref MS_U32 \b IN: the offset to be add/minus the typical DClk output, unit is SET 3473*53ee8cc1Swenshuai.xi /// @param u16TestCnt @ref MS_U16 \b IN: the times to do boundary test 3474*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------------------------- 3475*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FpllBoundaryTest(XC_DEVICE_ID *pDeviceId, MS_U32 u32FpllSetOffset, MS_U16 u16TestCnt); // debug purpose 3476*53ee8cc1Swenshuai.xi 3477*53ee8cc1Swenshuai.xi //------------------------------ 3478*53ee8cc1Swenshuai.xi // Offline signal detection related 3479*53ee8cc1Swenshuai.xi //------------------------------ 3480*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 3481*53ee8cc1Swenshuai.xi /// Set the source need to be detect in offline detection. 3482*53ee8cc1Swenshuai.xi /// @param XC_EX_INPUT_SOURCE_TYPE \b IN: The source need to be monitor 3483*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3484*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetOffLineDetection ( XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE u8InputSourceType ); 3485*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3486*53ee8cc1Swenshuai.xi /// Get Offline detection status to specific input source 3487*53ee8cc1Swenshuai.xi /// @param u8InputSourceType \b IN: the specific input source type to do offline detection 3488*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 TRUE: Success, FALSE: Failed 3489*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3490*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_GetOffLineDetection( XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE u8InputSourceType); 3491*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3492*53ee8cc1Swenshuai.xi /// Set Offline detection Sog Threshold 3493*53ee8cc1Swenshuai.xi /// @param u8Threshold \b IN: threshold value t2,u3,u4: 0~31 other chip: 0~255 3494*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 3495*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3496*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetOffLineSogThreshold(XC_DEVICE_ID *pDeviceId, MS_U8 u8Threshold); //t2,u3,u4: 0~31 other chip: 0~255 3497*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3498*53ee8cc1Swenshuai.xi /// Set Offline Detection Sog filter bandwidth 3499*53ee8cc1Swenshuai.xi /// @param u8BW \b IN: bandwidth value t2,u3,u4: 0~7 other chip: 0~31 3500*53ee8cc1Swenshuai.xi /// @Return TRUE: Successful FALSE: Fail 3501*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3502*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetOffLineSogBW(XC_DEVICE_ID *pDeviceId, MS_U8 u8BW); 3503*53ee8cc1Swenshuai.xi 3504*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 3505*53ee8cc1Swenshuai.xi /// Initial offline detect procedure. 3506*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed 3507*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 3508*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_OffLineInit(XC_DEVICE_ID *pDeviceId); 3509*53ee8cc1Swenshuai.xi 3510*53ee8cc1Swenshuai.xi //------------------------------ 3511*53ee8cc1Swenshuai.xi // PIP 3512*53ee8cc1Swenshuai.xi //------------------------------ 3513*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3514*53ee8cc1Swenshuai.xi /// Set Extra fetch number. (This setting is usually used in PIP mode. Please set carefully) 3515*53ee8cc1Swenshuai.xi /// @param u8val \b IN: The extra fetch number. 3516*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3517*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Set_Extra_fetch_adv_line(XC_DEVICE_ID *pDeviceId, MS_U8 u8val); 3518*53ee8cc1Swenshuai.xi 3519*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3520*53ee8cc1Swenshuai.xi /// Set the VGA SOG on or off 3521*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the VGA SOG; bEnable =0, Turn off the VGA SOG 3522*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3523*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetVGASogEn(XC_DEVICE_ID *pDeviceId, MS_BOOL bVGASogEn); 3524*53ee8cc1Swenshuai.xi 3525*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3526*53ee8cc1Swenshuai.xi /// Control the output window(Main/Sub) on or off 3527*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window 3528*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: eWindow =0, for MAIN; eWindow =1, for SUB; 3529*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3530*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableWindow(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 3531*53ee8cc1Swenshuai.xi 3532*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3533*53ee8cc1Swenshuai.xi /// whether sub window is enable 3534*53ee8cc1Swenshuai.xi /// @param void \b IN: none 3535*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3536*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Is_SubWindowEanble(XC_DEVICE_ID *pDeviceId); 3537*53ee8cc1Swenshuai.xi 3538*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3539*53ee8cc1Swenshuai.xi /// Set Border format 3540*53ee8cc1Swenshuai.xi /// @param u8WidthIn \b IN: In-box width 3541*53ee8cc1Swenshuai.xi /// @param u8WidthOut \b IN: Out-box width 3542*53ee8cc1Swenshuai.xi /// @param u8color \b IN: border color 3543*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 3544*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3545*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetBorderFormat( XC_DEVICE_ID *pDeviceId, MS_U8 u8Left, MS_U8 u8Right, MS_U8 u8Up, MS_U8 u8Down, MS_U8 u8color, XC_EX_SCALER_WIN eWindow ); 3546*53ee8cc1Swenshuai.xi 3547*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3548*53ee8cc1Swenshuai.xi /// enable or disable Border 3549*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable or Disable 3550*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 3551*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3552*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableBorder(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 3553*53ee8cc1Swenshuai.xi 3554*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3555*53ee8cc1Swenshuai.xi /// Set Z-order main window first or not 3556*53ee8cc1Swenshuai.xi /// @param bMainFirst \b IN: TRUE: Main window first; FALSE: Sub window first 3557*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3558*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_ZorderMainWindowFirst(XC_DEVICE_ID *pDeviceId, MS_BOOL bMainFirst); 3559*53ee8cc1Swenshuai.xi 3560*53ee8cc1Swenshuai.xi //------------------------------ 3561*53ee8cc1Swenshuai.xi // PQ Load Function 3562*53ee8cc1Swenshuai.xi //------------------------------ 3563*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3564*53ee8cc1Swenshuai.xi /// Create a function for PQ in SC. 3565*53ee8cc1Swenshuai.xi /// @param PQ_Function_Info \b IN: the information of the function 3566*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info 3567*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3568*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_PQ_LoadFunction(XC_DEVICE_ID *pDeviceId, PQ_EX_Function_Info* function_Info , MS_U32 u32InitDataLen); 3569*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3570*53ee8cc1Swenshuai.xi /// Return true if current status is H nonlinear scaling 3571*53ee8cc1Swenshuai.xi /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info 3572*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 True: Using HNonLinearScaling False: Not in Nonlinear status 3573*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3574*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Check_HNonLinearScaling(XC_DEVICE_ID *pDeviceId); 3575*53ee8cc1Swenshuai.xi 3576*53ee8cc1Swenshuai.xi //------------------------------ 3577*53ee8cc1Swenshuai.xi // EURO Function 3578*53ee8cc1Swenshuai.xi //------------------------------ 3579*53ee8cc1Swenshuai.xi 3580*53ee8cc1Swenshuai.xi // Enable/Disable Euro/Australia Hdtv Detection support in driver 3581*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 3582*53ee8cc1Swenshuai.xi /// Enable/Disable Euro/Australia Hdtv Detection support in driver 3583*53ee8cc1Swenshuai.xi /// @param bEnable: 3584*53ee8cc1Swenshuai.xi /// - ENABLE : enable support 3585*53ee8cc1Swenshuai.xi /// - DISABLE : disable disable 3586*53ee8cc1Swenshuai.xi /// @return None. 3587*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 3588*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableEuroHdtvSupport(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3589*53ee8cc1Swenshuai.xi 3590*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 3591*53ee8cc1Swenshuai.xi /// Enable Euro/Australia Hdtv Detection 3592*53ee8cc1Swenshuai.xi /// @param bEnable: 3593*53ee8cc1Swenshuai.xi /// - ENABLE : enable detection 3594*53ee8cc1Swenshuai.xi /// - DISABLE : disable detection 3595*53ee8cc1Swenshuai.xi /// @return None. 3596*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------- 3597*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableEuroHdtvDetection(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 3598*53ee8cc1Swenshuai.xi 3599*53ee8cc1Swenshuai.xi //------------------------------ 3600*53ee8cc1Swenshuai.xi // Genenal R/W Function 3601*53ee8cc1Swenshuai.xi //------------------------------ 3602*53ee8cc1Swenshuai.xi 3603*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3604*53ee8cc1Swenshuai.xi /// General Read Byte Function 3605*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 3606*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 3607*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3608*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_ReadByte(MS_U32 u32Reg); 3609*53ee8cc1Swenshuai.xi 3610*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3611*53ee8cc1Swenshuai.xi /// General Write Byte Function 3612*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 3613*53ee8cc1Swenshuai.xi /// @return @ref MS_U8 3614*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3615*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_WriteByte(MS_U32 u32Reg, MS_U8 u8Val); 3616*53ee8cc1Swenshuai.xi 3617*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3618*53ee8cc1Swenshuai.xi /// General Write Byte Function 3619*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 3620*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: setting value 3621*53ee8cc1Swenshuai.xi /// @param u8Msk \b IN: setting value 3622*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3623*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_WriteByteMask(MS_U32 u32Reg, MS_U8 u8Val, MS_U8 u8Msk); 3624*53ee8cc1Swenshuai.xi 3625*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3626*53ee8cc1Swenshuai.xi /// General 2 Write Byte Function 3627*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address 3628*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: setting value 3629*53ee8cc1Swenshuai.xi /// @param u16Msk \b IN: setting value 3630*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3631*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Write2ByteMask(MS_U32 u32Reg, MS_U16 u16val, MS_U16 u16Mask); 3632*53ee8cc1Swenshuai.xi 3633*53ee8cc1Swenshuai.xi //------------------------------ 3634*53ee8cc1Swenshuai.xi // XC R/W Function, using mutex to protect 3635*53ee8cc1Swenshuai.xi //------------------------------ 3636*53ee8cc1Swenshuai.xi 3637*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3638*53ee8cc1Swenshuai.xi /// Scaler Write 2 Byte Function, and use mutex to protect while switch bank and write address 3639*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 3640*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: setting value 3641*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3642*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_W2BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U16 u16Val); 3643*53ee8cc1Swenshuai.xi 3644*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3645*53ee8cc1Swenshuai.xi /// Scaler Read 2 Byte Function, and use mutex to protect while switch bank and write address 3646*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 3647*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 3648*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3649*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_R2BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg); 3650*53ee8cc1Swenshuai.xi 3651*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3652*53ee8cc1Swenshuai.xi /// Scaler Write 4 Byte Function, and use mutex to protect while switch bank and write address 3653*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 3654*53ee8cc1Swenshuai.xi /// @param u32Val \b IN: setting value 3655*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3656*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_W4BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U32 u32Val); 3657*53ee8cc1Swenshuai.xi 3658*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3659*53ee8cc1Swenshuai.xi /// Scaler Read 4 Byte Function, and use mutex to protect while switch bank and write address 3660*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 3661*53ee8cc1Swenshuai.xi /// @return @ref MS_U32 3662*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3663*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32 MApi_XC_EX_R4BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg); 3664*53ee8cc1Swenshuai.xi 3665*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3666*53ee8cc1Swenshuai.xi /// Scaler Read 2 Byte Mask Function, and use mutex to protect while switch bank and write address 3667*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 3668*53ee8cc1Swenshuai.xi /// @param u16mask \b IN: decide which bit is valied 3669*53ee8cc1Swenshuai.xi /// @return @ref MS_U16 3670*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3671*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U16 MApi_XC_EX_R2BYTEMSK(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U16 u16Mask); 3672*53ee8cc1Swenshuai.xi 3673*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3674*53ee8cc1Swenshuai.xi /// Scaler Write 2 Byte Mask Function, and use mutex to protect while switch bank and write address 3675*53ee8cc1Swenshuai.xi /// @param u32Reg \b IN: which value contain xc sub bank and address 3676*53ee8cc1Swenshuai.xi /// @param u16Val \b IN: Setting value 3677*53ee8cc1Swenshuai.xi /// @param u16mask \b IN: decide which bit is valied 3678*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3679*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_W2BYTEMSK(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U16 u16Val, MS_U16 u16Mask); 3680*53ee8cc1Swenshuai.xi 3681*53ee8cc1Swenshuai.xi //------------------------------ 3682*53ee8cc1Swenshuai.xi // MLoad Function, xc command burst 3683*53ee8cc1Swenshuai.xi //------------------------------ 3684*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3685*53ee8cc1Swenshuai.xi /// Initialize the Menuload 3686*53ee8cc1Swenshuai.xi /// @param PhyAddr \b IN: the physical address for the menuload 3687*53ee8cc1Swenshuai.xi /// @param u32BufByteLen \b IN: the buffer length of the menu load commands 3688*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3689*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_MLoad_Init(XC_DEVICE_ID *pDeviceId, MS_PHY PhyAddr, MS_U32 u32BufByteLen); 3690*53ee8cc1Swenshuai.xi 3691*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3692*53ee8cc1Swenshuai.xi /// Enable/Disable the MLoad 3693*53ee8cc1Swenshuai.xi /// @return void 3694*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3695*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_MLoad_Enable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3696*53ee8cc1Swenshuai.xi 3697*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3698*53ee8cc1Swenshuai.xi /// Get the status of MLoad 3699*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3700*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_MLOAD_TYPE MApi_XC_EX_MLoad_GetStatus(XC_DEVICE_ID *pDeviceId); 3701*53ee8cc1Swenshuai.xi 3702*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3703*53ee8cc1Swenshuai.xi /// write signal command to Mload and fire 3704*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN: register 3705*53ee8cc1Swenshuai.xi /// @param u16Data \b IN: value 3706*53ee8cc1Swenshuai.xi /// @param u16Mask \b IN: mask 3707*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3708*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_MLoad_WriteCmd_And_Fire(XC_DEVICE_ID *pDeviceId, MS_U32 u32Addr, MS_U16 u16Data, MS_U16 u16Mask); 3709*53ee8cc1Swenshuai.xi 3710*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3711*53ee8cc1Swenshuai.xi /// write multi commands to Mload and fire 3712*53ee8cc1Swenshuai.xi /// @param pu32Addr \b IN: buffer of register 3713*53ee8cc1Swenshuai.xi /// @param pu16Data \b IN: buffer of value 3714*53ee8cc1Swenshuai.xi /// @param pu16Mask \b IN: buffer of mask 3715*53ee8cc1Swenshuai.xi /// @param u16CmdCnt \b IN: counter of command 3716*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3717*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_MLoad_WriteCmds_And_Fire(XC_DEVICE_ID *pDeviceId, MS_U32 *pu32Addr, MS_U16 *pu16Data, MS_U16 *pu16Mask, MS_U16 u16CmdCnt); 3718*53ee8cc1Swenshuai.xi 3719*53ee8cc1Swenshuai.xi //------------------------------ 3720*53ee8cc1Swenshuai.xi // Menuload Gamma Function 3721*53ee8cc1Swenshuai.xi //------------------------------ 3722*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3723*53ee8cc1Swenshuai.xi /// Initialize the Menuload Gamma 3724*53ee8cc1Swenshuai.xi /// @param PhyAddr \b IN: the physical address for the menuload 3725*53ee8cc1Swenshuai.xi /// @param u32BufByteLen \b IN: the buffer length of the menu load commands 3726*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3727*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_MLG_Init(XC_DEVICE_ID *pDeviceId, MS_PHY PhyAddr, MS_U32 u32BufByteLen); 3728*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3729*53ee8cc1Swenshuai.xi /// Enable/Disable the Menuload Gamma 3730*53ee8cc1Swenshuai.xi /// @return void 3731*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3732*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_MLG_Enable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3733*53ee8cc1Swenshuai.xi 3734*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3735*53ee8cc1Swenshuai.xi /// Get the caps of Menuload Gamma 3736*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 3737*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3738*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_MLG_GetCaps(XC_DEVICE_ID *pDeviceId); 3739*53ee8cc1Swenshuai.xi 3740*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3741*53ee8cc1Swenshuai.xi /// Get the status of MLoad 3742*53ee8cc1Swenshuai.xi /// @return @ref MLG_TYPE 3743*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3744*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_MLG_TYPE MApi_XC_EX_MLG_GetStatus(XC_DEVICE_ID *pDeviceId); 3745*53ee8cc1Swenshuai.xi 3746*53ee8cc1Swenshuai.xi //------------------------------ 3747*53ee8cc1Swenshuai.xi // For U4 set VOP data mux to VE 3748*53ee8cc1Swenshuai.xi //------------------------------ 3749*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3750*53ee8cc1Swenshuai.xi /// Select the source which need to connect to VE. 3751*53ee8cc1Swenshuai.xi /// @param eVOPSelOSD_MUX \b IN: The source need to connect to VE. 3752*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3753*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetOSD2VEMode(XC_DEVICE_ID *pDeviceId, XC_EX_VOP_SEL_OSD_XC2VE_MUX eVOPSelOSD_MUX); 3754*53ee8cc1Swenshuai.xi 3755*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3756*53ee8cc1Swenshuai.xi /// Enable or disable prefilter in Scaler. 3757*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: True: Enable: pre-filter. Disable: pre-filter 3758*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3759*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_IP2_PreFilter_Enable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3760*53ee8cc1Swenshuai.xi 3761*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3762*53ee8cc1Swenshuai.xi /// Get pixel data with RGB format. 3763*53ee8cc1Swenshuai.xi /// @param u16x \b IN: X coordinate 3764*53ee8cc1Swenshuai.xi /// @param u16Y \b IN: Y coordinate 3765*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window for retrieving data. 3766*53ee8cc1Swenshuai.xi /// @return @ref u32r return the R data 3767*53ee8cc1Swenshuai.xi /// @return @ref u32g return the G data 3768*53ee8cc1Swenshuai.xi /// @return @ref u32b return the B data 3769*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3770*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_GET_PixelRGB_ReturnValue MApi_XC_EX_Get_Pixel_RGB(XC_DEVICE_ID *pDeviceId, XC_EX_Get_Pixel_RGB *pData, XC_EX_SCALER_WIN eWindow); 3771*53ee8cc1Swenshuai.xi 3772*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3773*53ee8cc1Swenshuai.xi /// During retrieve pixel data, system have a cursor on the screen. This function can keep the cursor on the screen. 3774*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable if you want to keep cursor on the screen 3775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3776*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_KeepPixelPointerAppear(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3777*53ee8cc1Swenshuai.xi 3778*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3779*53ee8cc1Swenshuai.xi /// @param eMemFmt \b IN: the format of memory 3780*53ee8cc1Swenshuai.xi /// Set memory format 3781*53ee8cc1Swenshuai.xi /// @ref MS_BOOL 3782*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3783*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_MemFmtEx(XC_DEVICE_ID *pDeviceId, XC_EX_MEM_FMT eMemFmt, XC_EX_SCALER_WIN eWindow); 3784*53ee8cc1Swenshuai.xi 3785*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3786*53ee8cc1Swenshuai.xi /// Get frame buffer less mode status 3787*53ee8cc1Swenshuai.xi /// @return @ref MS_BOOL retun the status about FrameBufferLess mode 3788*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3789*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsRequestFrameBufferLessMode(XC_DEVICE_ID *pDeviceId); 3790*53ee8cc1Swenshuai.xi 3791*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3792*53ee8cc1Swenshuai.xi /// Set Flag to bypass software reset in MApi_XC_EX_Init() 3793*53ee8cc1Swenshuai.xi /// @param bFlag \b TRUE: initialize XC by skipping SW reset; FALSE: initialize XC in normal case 3794*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 3795*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3796*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SkipSWReset(XC_DEVICE_ID *pDeviceId, MS_BOOL bFlag); 3797*53ee8cc1Swenshuai.xi 3798*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableRepWindowForFrameColor(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 3799*53ee8cc1Swenshuai.xi 3800*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3801*53ee8cc1Swenshuai.xi /// Set VOP Video and OSD Laler 3802*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3803*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3804*53ee8cc1Swenshuai.xi /// Set OSD Layer in Box Project ( In TV chips, please use MApi_XC_SetVideoOnOSD) 3805*53ee8cc1Swenshuai.xi /// @param eVOPOSDLayer \b IN: OSD and Video layer selection 3806*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window The alpha value of current window. 3807*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3808*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetOSDLayer(XC_DEVICE_ID *pDeviceId, XC_EX_VOP_OSD_LAYER_SEL eVOPOSDLayer, XC_EX_SCALER_WIN eWindow); 3809*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3810*53ee8cc1Swenshuai.xi /// Get OSD Layer in Box Project 3811*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window The alpha value of current window. 3812*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3813*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_VOP_OSD_LAYER_SEL MApi_XC_EX_GetOSDLayer(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 3814*53ee8cc1Swenshuai.xi 3815*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3816*53ee8cc1Swenshuai.xi /// Set Constant Alpha of Video 3817*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3818*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3819*53ee8cc1Swenshuai.xi /// Set alpha value of video (now only support in box) 3820*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: The alpha value of video with specific window 3821*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The window which need to be adjust 3822*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3823*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetVideoAlpha(XC_DEVICE_ID *pDeviceId, MS_U8 u8Val, XC_EX_SCALER_WIN eWindow); 3824*53ee8cc1Swenshuai.xi 3825*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3826*53ee8cc1Swenshuai.xi /// Get alpha value of video (now only support in box) 3827*53ee8cc1Swenshuai.xi /// @param pu8Val \b IN: The alpha value of video with specific window 3828*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: The alpha value of a window. 3829*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3830*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_GetVideoAlpha(XC_DEVICE_ID *pDeviceId, MS_U8 *pu8Val, XC_EX_SCALER_WIN eWindow); 3831*53ee8cc1Swenshuai.xi 3832*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3833*53ee8cc1Swenshuai.xi /// Skip Wait Vsync 3834*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: Enable 3835*53ee8cc1Swenshuai.xi /// @param Skip wait Vsync \b IN: Disable wait Vsync 3836*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3837*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SkipWaitVsync( XC_DEVICE_ID *pDeviceId, MS_BOOL eWindow, MS_BOOL bIsSkipWaitVsyn); 3838*53ee8cc1Swenshuai.xi 3839*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3840*53ee8cc1Swenshuai.xi /// Select which DE to vop 3841*53ee8cc1Swenshuai.xi /// @param bFlag \b IN: @ref E_OP2VOP_DE_SEL 3842*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 3843*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3844*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OP2VOPDESel(XC_DEVICE_ID *pDeviceId, XC_EX_OP2VOP_DE_SEL eVopDESel); 3845*53ee8cc1Swenshuai.xi 3846*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3847*53ee8cc1Swenshuai.xi /// Set FRC Window 3848*53ee8cc1Swenshuai.xi /// @param e3dInputMode \b IN: @ref E_XC_3D_INPUT_MODE 3849*53ee8cc1Swenshuai.xi /// @param e3dOutputMode \b IN: @ref E_XC_3D_OUTPUT_MODE 3850*53ee8cc1Swenshuai.xi /// @param e3dPanelType \b IN: @ref E_XC_3D_PANEL_TYPE 3851*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3852*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FRC_SetWindow(XC_DEVICE_ID *pDeviceId, XC_EX_3D_INPUT_MODE e3dInputMode, XC_EX_3D_OUTPUT_MODE e3dOutputMode, XC_EX_3D_PANEL_TYPE e3dPanelType); 3853*53ee8cc1Swenshuai.xi 3854*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3855*53ee8cc1Swenshuai.xi /// Set two initial factors mode to improve quality in FBL 3856*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable two initial factors mode 3857*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN 3858*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3859*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Enable_TwoInitFactor(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 3860*53ee8cc1Swenshuai.xi 3861*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3862*53ee8cc1Swenshuai.xi /// Get field packing mode support status 3863*53ee8cc1Swenshuai.xi /// @return TRUE(success) or FALSE(fail) 3864*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3865*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_IsFieldPackingModeSupported(void); 3866*53ee8cc1Swenshuai.xi 3867*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3868*53ee8cc1Swenshuai.xi /// Pre Init before XC Init 3869*53ee8cc1Swenshuai.xi /// @param u16Type \b IN: @ref E_OP2VOP_DE_SEL 3870*53ee8cc1Swenshuai.xi /// @param para \b IN: parameter 3871*53ee8cc1Swenshuai.xi /// @param u32Length \b IN: size of parameter 3872*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 3873*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3874*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_PreInit( XC_DEVICE_ID *pDeviceId, XC_EX_PREINIT eType ,void* para, MS_U32 u32Length); 3875*53ee8cc1Swenshuai.xi 3876*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3877*53ee8cc1Swenshuai.xi /// Get RGB data from memory buffer 3878*53ee8cc1Swenshuai.xi /// @param eBufType \b IN: get RGB 8 bits or 10 bits format data 3879*53ee8cc1Swenshuai.xi /// @param pRect \b IN: the widnow for getting data area in memory, need to refer to pre-scaling 3880*53ee8cc1Swenshuai.xi /// @param pRectBuf \b IN: the buffer for getting data, the buffer typs must be the same as eBufType 3881*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: get main or sub video data from memory 3882*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3883*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Get_BufferData(XC_DEVICE_ID *pDeviceId, XC_EX_OUTPUTDATA_TYPE eBufType, XC_EX_WINDOW_TYPE *pRect, void *pRectBuf, XC_EX_SCALER_WIN eWindow); 3884*53ee8cc1Swenshuai.xi 3885*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3886*53ee8cc1Swenshuai.xi /// Set RGB data to memory buffer 3887*53ee8cc1Swenshuai.xi /// @param eBufType \b IN: set RGB 8 bits or 10 bits format data 3888*53ee8cc1Swenshuai.xi /// @param pDstRect \b IN: the widnow for setting data area in memory, need to refer to pre-scaling 3889*53ee8cc1Swenshuai.xi /// @param pSrcBuf \b IN: the buffer with RGB data for setting to memory, the buffer typs must be the same as eBufType 3890*53ee8cc1Swenshuai.xi /// @param pSrcRect \b IN: the widnow for picking data area in pSrcBuf 3891*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 3892*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3893*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Set_BufferData(XC_DEVICE_ID *pDeviceId, XC_EX_INPUTDATA_TYPE eBufType, XC_EX_WINDOW_TYPE *pDstRect, void *pSrcBuf, XC_EX_WINDOW_TYPE *pSrcRect, XC_EX_SCALER_WIN eWindow); 3894*53ee8cc1Swenshuai.xi 3895*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3896*53ee8cc1Swenshuai.xi /// Control the main window on or off 3897*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window 3898*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3899*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableMainWindow(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); // Turn on/off main/sub window 3900*53ee8cc1Swenshuai.xi 3901*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3902*53ee8cc1Swenshuai.xi /// Enable sub window and control the window size 3903*53ee8cc1Swenshuai.xi /// @param *pstDispWin \b IN: Window type 3904*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3905*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableSubWindow(XC_DEVICE_ID *pDeviceId, XC_EX_WINDOW_TYPE *pstDispWin); 3906*53ee8cc1Swenshuai.xi 3907*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3908*53ee8cc1Swenshuai.xi /// Disable sub window 3909*53ee8cc1Swenshuai.xi /// @param void \b IN: none 3910*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3911*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_DisableSubWindow(XC_DEVICE_ID *pDeviceId); 3912*53ee8cc1Swenshuai.xi 3913*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3914*53ee8cc1Swenshuai.xi /// Set pixel shift 3915*53ee8cc1Swenshuai.xi /// @param s8H \b IN: pixel shift H 3916*53ee8cc1Swenshuai.xi /// @param s8V \b IN: pixel shift V 3917*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 3918*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3919*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetPixelShift(XC_DEVICE_ID *pDeviceId, MS_S8 s8H, MS_S8 s8V); 3920*53ee8cc1Swenshuai.xi 3921*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3922*53ee8cc1Swenshuai.xi /// MApi_XC_SetVideoOnOSD 3923*53ee8cc1Swenshuai.xi /// @param E_VDO_ON_OSD_LAYER \b IN: set video show on which osd layer 3924*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 3925*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 3926*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3927*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetVideoOnOSD(XC_DEVICE_ID *pDeviceId, XC_EX_VIDEO_ON_OSD_LAYER enlayer, XC_EX_SCALER_WIN eWindow); 3928*53ee8cc1Swenshuai.xi 3929*53ee8cc1Swenshuai.xi 3930*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3931*53ee8cc1Swenshuai.xi /// MApi_XC_SetOSDBlendingFormula 3932*53ee8cc1Swenshuai.xi /// @param enOsdIndex \b IN: osd index 3933*53ee8cc1Swenshuai.xi /// @param enType \b IN: osd blending type 3934*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: blending with main or sub video 3935*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 3936*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3937*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetOSDBlendingFormula(XC_DEVICE_ID *pDeviceId, E_XC_EX_OSD_INDEX enOsdIndex, XC_EX_OSD_BlENDING_TYPE enType, XC_EX_SCALER_WIN eWindow); 3938*53ee8cc1Swenshuai.xi 3939*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3940*53ee8cc1Swenshuai.xi // usage: 3941*53ee8cc1Swenshuai.xi // MS_XC_REPORT_PIXELINFO stRepPixInfo; 3942*53ee8cc1Swenshuai.xi // memset(&stRepPixInfo, 0, sizeof(MS_XC_REPORT_PIXELINFO)); 3943*53ee8cc1Swenshuai.xi // stRepPixInfo.u32ReportPixelInfo_Version = XC_EX_REPORT_PIXELINFO_VERSION; 3944*53ee8cc1Swenshuai.xi // stRepPixInfo.u16ReportPixelInfo_Length = sizeof(MS_XC_REPORT_PIXELINFO); 3945*53ee8cc1Swenshuai.xi // stRepPixInfo.enStage = E_XC_GET_PIXEL_STAGE_AFTER_OSD; 3946*53ee8cc1Swenshuai.xi // stRepPixInfo.u16XStart = xxxx; 3947*53ee8cc1Swenshuai.xi // stRepPixInfo.u16XEnd = xxxx; 3948*53ee8cc1Swenshuai.xi // stRepPixInfo.u16YStart = xxxx; 3949*53ee8cc1Swenshuai.xi // stRepPixInfo.u16YEnd = xxxx; 3950*53ee8cc1Swenshuai.xi // MApi_XC_ReportPixelInfo(&stRepPixInfo); 3951*53ee8cc1Swenshuai.xi // 3952*53ee8cc1Swenshuai.xi /// Report Pixel Info 3953*53ee8cc1Swenshuai.xi /// @param pstRepPixInfo \b IN: pointer to struct MS_XC_REPORT_PIXELINFO 3954*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 3955*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3956*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_ReportPixelInfo(XC_DEVICE_ID *pDeviceId, XC_EX_REPORT_PIXELINFO *pstRepPixInfo); 3957*53ee8cc1Swenshuai.xi 3958*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3959*53ee8cc1Swenshuai.xi /// MApi_XC_SetScaling 3960*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: set enable or disable 3961*53ee8cc1Swenshuai.xi /// @param eScaling_type \b IN: set scaling type, pre-scaling, post-scaling, both-scaling 3962*53ee8cc1Swenshuai.xi /// @param eVector_type \b IN: set H vector, v vector, and HV vector 3963*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: set main or sub video data to memory 3964*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3965*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetScaling( XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALING_TYPE eScaling_type, XC_EX_VECTOR_TYPE eVector_type, XC_EX_SCALER_WIN eWindow ); 3966*53ee8cc1Swenshuai.xi 3967*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3968*53ee8cc1Swenshuai.xi /// MApi_XC_EX_SetMCDIBufferAddress 3969*53ee8cc1Swenshuai.xi /// @param u32FBAddress \b IN: frame buffer base addr 3970*53ee8cc1Swenshuai.xi /// @param u32FBSize \b IN: frame buffer size 3971*53ee8cc1Swenshuai.xi /// @param eType \b IN: set frame buffer for MCDI ME1 or ME2 3972*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3973*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetMCDIBufferAddress(XC_DEVICE_ID *pDeviceId, MS_PHY u32FBAddress, MS_PHY u32FBSize, XC_EX_MCDI_TYPE eType); 3974*53ee8cc1Swenshuai.xi 3975*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3976*53ee8cc1Swenshuai.xi /// MApi_XC_EnableMCDI 3977*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable MCDI 3978*53ee8cc1Swenshuai.xi /// @param eType \b IN: control MCDI ME1 or ME2 or both 3979*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3980*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableMCDI(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_MCDI_TYPE eType); 3981*53ee8cc1Swenshuai.xi 3982*53ee8cc1Swenshuai.xi 3983*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3984*53ee8cc1Swenshuai.xi /// MApi_XC_SendCmdToFRC 3985*53ee8cc1Swenshuai.xi /// @param u8Cmd \b IN: CMD 3986*53ee8cc1Swenshuai.xi /// @param count \b IN: parameter Counter 3987*53ee8cc1Swenshuai.xi /// @param pFRC_R2_Para \b IN: input parameter 3988*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 3989*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3990*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SendCmdToFRC( XC_DEVICE_ID *pDeviceId, MS_U8 u8Cmd, MS_U8 count, XC_EX_FRC_R2_CMD_PARAMETER pFRC_R2_Para ); 3991*53ee8cc1Swenshuai.xi 3992*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3993*53ee8cc1Swenshuai.xi /// MApi_XC_GetMsgFromFRC 3994*53ee8cc1Swenshuai.xi /// @param u8Cmd \b IN: CMD 3995*53ee8cc1Swenshuai.xi /// @param pu8ParaCount \b IN: Counter 3996*53ee8cc1Swenshuai.xi /// @param pu8Para \b IN: input parameter 3997*53ee8cc1Swenshuai.xi /// @return TRUE if succeed, FALSE if failed 3998*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3999*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetMsgFromFRC(XC_DEVICE_ID *pDeviceId, MS_U8* pu8Cmd, MS_U8* pu8ParaCount, MS_U8* pu8Para); 4000*53ee8cc1Swenshuai.xi 4001*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4002*53ee8cc1Swenshuai.xi /// Enable/Disable RW bank auto 4003*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 4004*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4005*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4006*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_EnableRWBankAuto(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 4007*53ee8cc1Swenshuai.xi 4008*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4009*53ee8cc1Swenshuai.xi /// Set XC W/R Bank Mapping Number 4010*53ee8cc1Swenshuai.xi /// @param u8Val \b IN: W/R bank mapping value 4011*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4012*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4013*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetWRBankMappingNum(XC_DEVICE_ID *pDeviceId, MS_U8 u8Val, XC_EX_SCALER_WIN eWindow); 4014*53ee8cc1Swenshuai.xi 4015*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4016*53ee8cc1Swenshuai.xi /// Get XC W/R Bank Mapping Number 4017*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 4018*53ee8cc1Swenshuai.xi /// @return MS_U8 W/R bank mapping number 4019*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4020*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_GetWRBankMappingNum(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 4021*53ee8cc1Swenshuai.xi 4022*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4023*53ee8cc1Swenshuai.xi /// Get XC W/R Bank Mapping Number for Zap (including UC effect) 4024*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to get 4025*53ee8cc1Swenshuai.xi /// @return MS_U8 W/R bank mapping number 4026*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4027*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U8 MApi_XC_EX_GetWRBankMappingNumForZap(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 4028*53ee8cc1Swenshuai.xi 4029*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4030*53ee8cc1Swenshuai.xi /// Set BOB mode 4031*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable BOB mode or not 4032*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4033*53ee8cc1Swenshuai.xi /// @return TRUE - succeed, FALSE - fail 4034*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4035*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_SetBOBMode(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 4036*53ee8cc1Swenshuai.xi 4037*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4038*53ee8cc1Swenshuai.xi /// Set XC force read bank 4039*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: Enable force read bank or not 4040*53ee8cc1Swenshuai.xi /// @param u8Bank \b IN: Force read bank index 4041*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4042*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4043*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetForceReadBank(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, MS_U8 u8Bank, XC_EX_SCALER_WIN eWindow); 4044*53ee8cc1Swenshuai.xi 4045*53ee8cc1Swenshuai.xi //------------------------------ 4046*53ee8cc1Swenshuai.xi // LD 4047*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4048*53ee8cc1Swenshuai.xi /// LD set panel type 4049*53ee8cc1Swenshuai.xi /// @param eLdPanelType \b IN: panel type 4050*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4051*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4052*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_LD_Init(XC_DEVICE_ID *pDeviceId, XC_EX_LD_PANEL_TYPE eLDPanelType ); 4053*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4054*53ee8cc1Swenshuai.xi /// LD set memory address 4055*53ee8cc1Swenshuai.xi /// @param u8MIU \b IN: MIU Select 4056*53ee8cc1Swenshuai.xi /// @param u32LDFBase0 \b IN: LDF memeory0 address 4057*53ee8cc1Swenshuai.xi /// @param u32LDFBase1 \b IN: LDF memeory1 address 4058*53ee8cc1Swenshuai.xi /// @param u32LDBBase0 \b IN: LDB memeory0 address 4059*53ee8cc1Swenshuai.xi /// @param u32LDBBase1 \b IN: LDB memeory1 address 4060*53ee8cc1Swenshuai.xi /// @param u32EDGE2DBase \b IN: EDGE2D memeory address 4061*53ee8cc1Swenshuai.xi /// @param u32LEDoffset \b IN: LED data offset 4062*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4063*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4064*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_LD_SetMemoryAddress(XC_DEVICE_ID *pDeviceId, MS_U8 u8MIU ,MS_U32 u32LDFBase0,MS_U32 u32LDFBase1,MS_U32 u32LDBBase0,MS_U32 u32LDBBase1,MS_U32 u32EDGE2DBase,MS_U32 u32LEDoffset); 4065*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4066*53ee8cc1Swenshuai.xi /// set LD Level 4067*53ee8cc1Swenshuai.xi /// @param eMode \b IN: LD level 4068*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4069*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4070*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_LD_SetLevel(XC_DEVICE_ID *pDeviceId, XC_EX_LD_MODE eMode); 4071*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4072*53ee8cc1Swenshuai.xi /// set LD backlight is zero flags 4073*53ee8cc1Swenshuai.xi /// @param eMode \b IN: backlight is zero flags 4074*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4075*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4076*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_TurnoffLDBL(XC_DEVICE_ID *pDeviceId, MS_BOOL bturnoffbl); 4077*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4078*53ee8cc1Swenshuai.xi /// set not update SPI data Flags 4079*53ee8cc1Swenshuai.xi /// @param brefreshSpidata \b IN: refresh Spi data flags 4080*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4081*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4082*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_notUpdateSPIDataFlags(XC_DEVICE_ID *pDeviceId, MS_BOOL brefreshSpidata); 4083*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4084*53ee8cc1Swenshuai.xi /// set User mode LD Flags 4085*53ee8cc1Swenshuai.xi /// @param buserLDFlags \b IN: User mode LD Flags 4086*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4087*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4088*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_UsermodeLDFlags(XC_DEVICE_ID *pDeviceId, MS_BOOL buserLDFlags); 4089*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4090*53ee8cc1Swenshuai.xi /// set LD backlight level 4091*53ee8cc1Swenshuai.xi /// @param u8BLLeve \b IN: backlight level 4092*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4093*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4094*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_BLLevel(XC_DEVICE_ID *pDeviceId, MS_U8 u8BLLevel); 4095*53ee8cc1Swenshuai.xi 4096*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4097*53ee8cc1Swenshuai.xi /// set XC bandwidth saving X-mode 4098*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 4099*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4100*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4101*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_Set_BWS_Mode(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); 4102*53ee8cc1Swenshuai.xi 4103*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4104*53ee8cc1Swenshuai.xi /// set FRC ColorPathCtrl 4105*53ee8cc1Swenshuai.xi /// @param epath_type \b IN: Select one of path in the FRC_COLOR_PATH_TYPE 4106*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable or disable 4107*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4108*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FRC_ColorPathCtrl(XC_DEVICE_ID *pDeviceId, MS_U16 u16Path_sel, MS_BOOL bEnable); 4109*53ee8cc1Swenshuai.xi 4110*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4111*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetRGBGain 4112*53ee8cc1Swenshuai.xi /// @param u16RedGain \b IN: Red Gain 4113*53ee8cc1Swenshuai.xi /// @param u16GreenGain \b IN: Green Gain 4114*53ee8cc1Swenshuai.xi /// @param u16BlueGain \b IN: Blue Gain 4115*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4116*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FRC_OP2_SetRGBGain(XC_DEVICE_ID *pDeviceId, MS_U16 u16RedGain, MS_U16 u16GreenGain, MS_U16 u16BlueGain); 4117*53ee8cc1Swenshuai.xi 4118*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4119*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetRGBOffset 4120*53ee8cc1Swenshuai.xi /// @param u16RedOffset \b IN: Red Offset 4121*53ee8cc1Swenshuai.xi /// @param u16GreenOffset \b IN: Green Offset 4122*53ee8cc1Swenshuai.xi /// @param u16BlueOffset \b IN: Blue Offset 4123*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4124*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FRC_OP2_SetRGBOffset(XC_DEVICE_ID *pDeviceId, MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset); 4125*53ee8cc1Swenshuai.xi 4126*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4127*53ee8cc1Swenshuai.xi /// set FRC_OP2 SetDither 4128*53ee8cc1Swenshuai.xi /// @param u16dither \b IN: Dither setting 4129*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4130*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_FRC_OP2_SetDither(XC_DEVICE_ID *pDeviceId, MS_U16 u16dither); 4131*53ee8cc1Swenshuai.xi 4132*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4133*53ee8cc1Swenshuai.xi /// set XC Bypass MFC 4134*53ee8cc1Swenshuai.xi /// @param eEnable \b IN: Enable or Disable 4135*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4136*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4137*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_FRC_BypassMFC(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 4138*53ee8cc1Swenshuai.xi 4139*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4140*53ee8cc1Swenshuai.xi /// MApi_XC_ForceReadFrame 4141*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable keep specified frame 4142*53ee8cc1Swenshuai.xi /// @param u16FrameIndex \b IN: control specified frame to show 4143*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4144*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_ForceReadFrame(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, MS_U16 u16FrameIndex); 4145*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4146*53ee8cc1Swenshuai.xi /// MApi_XC_SetCsc 4147*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable keep specified frame 4148*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4149*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4150*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_SetCsc( XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow ); 4151*53ee8cc1Swenshuai.xi 4152*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4153*53ee8cc1Swenshuai.xi /// Register PQ Set FPLL thresh mode function 4154*53ee8cc1Swenshuai.xi /// @param fpPQCB \b IN: function pointer of PQ set FPLL thresh mode 4155*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4156*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_RegisterPQSetFPLLThreshMode(XC_DEVICE_ID *pDeviceId, void (*fpPQCB)(MS_U8 u8PQWin)); 4157*53ee8cc1Swenshuai.xi 4158*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4159*53ee8cc1Swenshuai.xi /// Get XC free run status 4160*53ee8cc1Swenshuai.xi /// @return TRUE if it is free run, FALSE if not 4161*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4162*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_GetFreeRunStatus(XC_DEVICE_ID *pDeviceId); 4163*53ee8cc1Swenshuai.xi 4164*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4165*53ee8cc1Swenshuai.xi /// MApi_XC_Get_DSForceIndexSupported 4166*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4167*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4168*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Get_DSForceIndexSupported(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); 4169*53ee8cc1Swenshuai.xi 4170*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4171*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 4172*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not 4173*53ee8cc1Swenshuai.xi /// @param u8Index \b IN: the index that needs to be forced in. 4174*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4175*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4176*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Set_DSForceIndex(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, MS_U8 u8Index, XC_EX_SCALER_WIN eWindow); 4177*53ee8cc1Swenshuai.xi 4178*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4179*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSIndexSourceSelect 4180*53ee8cc1Swenshuai.xi /// @param eDSIdxSrc \b IN: choose where the DS index comes from. 4181*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4182*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4183*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Set_DSIndexSourceSelect(XC_DEVICE_ID *pDeviceId, XC_EX_DS_INDEX_SOURCE eDSIdxSrc, XC_EX_SCALER_WIN eWindow); 4184*53ee8cc1Swenshuai.xi 4185*53ee8cc1Swenshuai.xi 4186*53ee8cc1Swenshuai.xi 4187*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4188*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 4189*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not 4190*53ee8cc1Swenshuai.xi /// @param u8Index \b IN: the index that needs to be forced in. 4191*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4192*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4193*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4194*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OSDC_InitSetting(XC_DEVICE_ID *pDeviceId, 4195*53ee8cc1Swenshuai.xi XC_EX_OSDC_TGEN_Type E_XC_OSDC_TGEN_Type, 4196*53ee8cc1Swenshuai.xi XC_EX_OSDC_TGEN_INFO *pstOC_Tgen_Cus, 4197*53ee8cc1Swenshuai.xi XC_EX_OSDC_CTRL_INFO *pstOC_Ctrl); 4198*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4199*53ee8cc1Swenshuai.xi /// MApi_XC_Set_DSForceIndex 4200*53ee8cc1Swenshuai.xi /// @param eCtrl_type \b IN: ENABLE/DISABLE force DS index or not 4201*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4202*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4203*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OSDC_Control(XC_DEVICE_ID *pDeviceId, MS_U32 eCtrl_type); 4204*53ee8cc1Swenshuai.xi 4205*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4206*53ee8cc1Swenshuai.xi /// MApi_XC_EX_OSDC_GetDstInfo 4207*53ee8cc1Swenshuai.xi /// @param pDstInfo \b IN: get the Desternation info 4208*53ee8cc1Swenshuai.xi /// @param u32SizeofDstInfo \b IN: size check 4209*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4210*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4211*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OSDC_GetDstInfo(XC_DEVICE_ID *pDeviceId, XC_EX_OSDC_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo); 4212*53ee8cc1Swenshuai.xi 4213*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4214*53ee8cc1Swenshuai.xi /// MApi_XC_EX_OSDC_SetOutVfreqx10 4215*53ee8cc1Swenshuai.xi /// @param u16Vfreq \b IN: output V freq x10 4216*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4217*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_OSDC_SetOutVfreqx10(XC_DEVICE_ID *pDeviceId, MS_U16 u16Vfreq); 4218*53ee8cc1Swenshuai.xi 4219*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4220*53ee8cc1Swenshuai.xi /// MApi_XC_EX_SetByPassOSDVsyncPos 4221*53ee8cc1Swenshuai.xi /// @param u16VsyncStart \b IN: OSD vsync start 4222*53ee8cc1Swenshuai.xi /// @param u16VsyncEnd \b IN: OSD vsync end 4223*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4224*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_BYPASS_SetOSDVsyncPos(XC_DEVICE_ID *pDeviceId, MS_U16 u16VsyncStart, MS_U16 u16VsyncEnd); 4225*53ee8cc1Swenshuai.xi 4226*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4227*53ee8cc1Swenshuai.xi /// MApi_XC_EX_BYPASS_SetInputSrc 4228*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE bypass mode 4229*53ee8cc1Swenshuai.xi /// @param input \b IN: Select the input source for bypass mode 4230*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4231*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_BYPASS_SetInputSrc(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_BYPASS_InputSource input); 4232*53ee8cc1Swenshuai.xi 4233*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4234*53ee8cc1Swenshuai.xi /// MApi_XC_EX_BYPASS_SetCSC 4235*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE the color space convert 4236*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4237*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_BYPASS_SetCSC(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); 4238*53ee8cc1Swenshuai.xi 4239*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4240*53ee8cc1Swenshuai.xi /// MApi_XC_EX_SetSeamlessZapping 4241*53ee8cc1Swenshuai.xi /// @param pDeviceId \b IN: which XC device we are going to enable or disable 4242*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to enable or disable 4243*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE seamless zapping 4244*53ee8cc1Swenshuai.xi /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL 4245*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4246*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetSeamlessZapping(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow, MS_BOOL bEnable); 4247*53ee8cc1Swenshuai.xi 4248*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4249*53ee8cc1Swenshuai.xi /// MApi_XC_EX_Vtrack_SetPayloadData 4250*53ee8cc1Swenshuai.xi /// @param u16Timecode \b IN: The time code is coded on 16 bits. It is calculated based on the number of days from January 1st. 4251*53ee8cc1Swenshuai.xi /// @param u8ID \b IN: Operator ID 4252*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4253*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Vtrack_SetPayloadData(XC_DEVICE_ID *pDeviceId, MS_U16 u16Timecode, MS_U8 u8OperatorID); 4254*53ee8cc1Swenshuai.xi 4255*53ee8cc1Swenshuai.xi 4256*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4257*53ee8cc1Swenshuai.xi /// MApi_XC_EX_Vtrack_SetUserDefindedSetting 4258*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE Customized Setting 4259*53ee8cc1Swenshuai.xi /// @param pu8Setting \b IN: pointer to targert user definded setting data (include setting1 to setting3) 4260*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4261*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Vtrack_SetUserDefindedSetting(XC_DEVICE_ID *pDeviceId, MS_BOOL bUserDefinded, MS_U8 *pu8Setting); 4262*53ee8cc1Swenshuai.xi 4263*53ee8cc1Swenshuai.xi 4264*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4265*53ee8cc1Swenshuai.xi /// MApi_XC_EX_Vtrack_Enable 4266*53ee8cc1Swenshuai.xi /// @param u8FrameRate \b IN: ENABLE/DISABLE The FrameRateIn is based on the output format of the box 4267*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: ENABLE/DISABLE Vtrack 4268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4269*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Vtrack_Enable(XC_DEVICE_ID *pDeviceId, MS_U8 u8FrameRate, MS_BOOL bEnable); 4270*53ee8cc1Swenshuai.xi 4271*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4272*53ee8cc1Swenshuai.xi /// Pre-set the specific window with PQ info 4273*53ee8cc1Swenshuai.xi /// @param pstXC_SetWin_Info \b IN: the information of the window setting 4274*53ee8cc1Swenshuai.xi /// @param eWindow \b IN: which window we are going to set 4275*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4276*53ee8cc1Swenshuai.xi DLL_PUBLIC void MApi_XC_EX_PreSetPQInfo(XC_DEVICE_ID *pDeviceId, XC_EX_SETWIN_INFO *pstXC_SetWin_Info, XC_EX_SCALER_WIN eWindow); 4277*53ee8cc1Swenshuai.xi 4278*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4279*53ee8cc1Swenshuai.xi /// MApi_XC_EX_Is_OP1_TestPattern_Enabled 4280*53ee8cc1Swenshuai.xi /// @return MS_BOOL: TRUE - enabled, FALSED - disabled 4281*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4282*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MApi_XC_EX_Is_OP1_TestPattern_Enabled(XC_DEVICE_ID *pDeviceId); 4283*53ee8cc1Swenshuai.xi 4284*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4285*53ee8cc1Swenshuai.xi /// MApi_XC_EX_Set_OP1_TestPattern 4286*53ee8cc1Swenshuai.xi /// @param ePattern \b IN: select test pattern 4287*53ee8cc1Swenshuai.xi /// @param eMode \b IN: choose the patgen mode (only support E_XC_OP1_PATGEN_DISP_LB_MODE now) 4288*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 4289*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4290*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Set_OP1_TestPattern(XC_DEVICE_ID *pDeviceId, XC_EX_OP1_PATTERN ePattern, XC_EX_OP1_PATGEN_MODE eMode); 4291*53ee8cc1Swenshuai.xi 4292*53ee8cc1Swenshuai.xi 4293*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4294*53ee8cc1Swenshuai.xi /// MApi_XC_Set_WhiteBalance_Pattern 4295*53ee8cc1Swenshuai.xi /// @param bEnable \b IN: enable/disable white balance test pattern 4296*53ee8cc1Swenshuai.xi /// @param u16R_CR_Data \b IN: when enable white balance test pattern ,Data Generator for r_cr constant 4297*53ee8cc1Swenshuai.xi /// @param u16G_Y_Data \b IN: when enable white balance test pattern ,Data Generator for g_y constant 4298*53ee8cc1Swenshuai.xi /// @param u16B_CB_Data \b IN: when enable white balance test pattern ,Data Generator for b_cb constant 4299*53ee8cc1Swenshuai.xi /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT 4300*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 4301*53ee8cc1Swenshuai.xi DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Set_WhiteBalance_Pattern(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, MS_U16 u16R_CR_Data, MS_U16 u16G_Y_Data ,MS_U16 u16B_CB_Data); 4302*53ee8cc1Swenshuai.xi 4303*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4304*53ee8cc1Swenshuai.xi /// MApi_XC_Get3DFormat 4305*53ee8cc1Swenshuai.xi /// @ingroup XC_ToBeModified 4306*53ee8cc1Swenshuai.xi /// @param e3DAttrType \b IN: The attribute of 3D 4307*53ee8cc1Swenshuai.xi /// @param para \b IN: A pointer points to parameters which need to pass value according to attribute type 4308*53ee8cc1Swenshuai.xi /// @return E_XC_3D_OUTPUT_MODE \b OUT: 3D output mode 4309*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------------ 4310*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL SYMBOL_WEAK MApi_XC_EX_Get3DFormat(XC_DEVICE_ID *pDeviceId, XC_EX_3D_ATTRIBUTE_TYPE e3DAttrType, void* para, void* p3DFormat); 4311*53ee8cc1Swenshuai.xi 4312*53ee8cc1Swenshuai.xi 4313*53ee8cc1Swenshuai.xi #ifdef __cplusplus 4314*53ee8cc1Swenshuai.xi } 4315*53ee8cc1Swenshuai.xi #endif 4316*53ee8cc1Swenshuai.xi 4317*53ee8cc1Swenshuai.xi #endif /* _API_XC_EX_H_ */ 4318*53ee8cc1Swenshuai.xi 4319*53ee8cc1Swenshuai.xi 4320