// //****************************************************************************** // MStar Software // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. // All software, firmware and related documentation herein ("MStar Software") are // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by // law, including, but not limited to, copyright law and international treaties. // Any use, modification, reproduction, retransmission, or republication of all // or part of MStar Software is expressly prohibited, unless prior written // permission has been granted by MStar. // // By accessing, browsing and/or using MStar Software, you acknowledge that you // have read, understood, and agree, to be bound by below terms ("Terms") and to // comply with all applicable laws and regulations: // // 1. MStar shall retain any and all right, ownership and interest to MStar // Software and any modification/derivatives thereof. // No right, ownership, or interest to MStar Software and any // modification/derivatives thereof is transferred to you under Terms. // // 2. You understand that MStar Software might include, incorporate or be // supplied together with third party`s software and the use of MStar // Software may require additional licenses from third parties. // Therefore, you hereby agree it is your sole responsibility to separately // obtain any and all third party right and license necessary for your use of // such third party`s software. // // 3. MStar Software and any modification/derivatives thereof shall be deemed as // MStar`s confidential information and you agree to keep MStar`s // confidential information in strictest confidence and not disclose to any // third party. // // 4. MStar Software is provided on an "AS IS" basis without warranties of any // kind. Any warranties are hereby expressly disclaimed by MStar, including // without limitation, any warranties of merchantability, non-infringement of // intellectual property rights, fitness for a particular purpose, error free // and in conformity with any international standard. You agree to waive any // claim against MStar for any loss, damage, cost or expense that you may // incur related to your use of MStar Software. // In no event shall MStar be liable for any direct, indirect, incidental or // consequential damages, including without limitation, lost of profit or // revenues, lost or damage of data, and unauthorized system use. // You agree that this Section 4 shall still apply without being affected // even if MStar Software has been modified by MStar in accordance with your // request or instruction for your use, except otherwise agreed by both // parties in writing. // // 5. If requested, MStar may from time to time provide technical supports or // services in relation with MStar Software to you for your use of // MStar Software in conjunction with your or your customer`s product // ("Services"). // You understand and agree that, except otherwise agreed by both parties in // writing, Services are provided on an "AS IS" basis and the warranty // disclaimer set forth in Section 4 above shall apply. // // 6. Nothing contained herein shall be construed as by implication, estoppels // or otherwise: // (a) conferring any license or right to use MStar name, trademark, service // mark, symbol or any other identification; // (b) obligating MStar or any of its affiliates to furnish any person, // including without limitation, you and your customers, any assistance // of any kind whatsoever, or any information; or // (c) conferring any license or right under any intellectual property right. // // 7. These terms shall be governed by and construed in accordance with the laws // of Taiwan, R.O.C., excluding its conflict of law rules. // Any and all dispute arising out hereof or related hereto shall be finally // settled by arbitration referred to the Chinese Arbitration Association, // Taipei in accordance with the ROC Arbitration Law and the Arbitration // Rules of the Association by three (3) arbitrators appointed in accordance // with the said Rules. // The place of arbitration shall be in Taipei, Taiwan and the language shall // be English. // The arbitration award shall be final and binding to both parties. // //****************************************************************************** // //////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2008-2009 MStar Semiconductor, Inc. // All rights reserved. // // Unless otherwise stipulated in writing, any and all information contained // herein regardless in any format shall remain the sole proprietary of // MStar Semiconductor Inc. and be kept in strict confidence // ("MStar Confidential Information") by the recipient. // Any unauthorized act including without limitation unauthorized disclosure, // copying, use, reproduction, sale, distribution, modification, disassembling, // reverse engineering and compiling of the contents of MStar Confidential // Information is unlawful and strictly prohibited. MStar hereby reserves the // rights to any and all damages, losses, costs and expenses resulting therefrom. // //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /// /// @file apiXC_EX.h /// @brief XC EXTENSION Interface FOR DUAL STREAMS /// @author MStar Semiconductor Inc. /////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef _API_XC_EX_H_ #define _API_XC_EX_H_ #include "MsCommon.h" // Driver #include "drvXC_IOPort.h" #ifdef __cplusplus extern "C" { #endif //------------------------------------------------------------------------------------------------- // Macro and Define //------------------------------------------------------------------------------------------------- // library information #define MSIF_XC_EX_LIB_CODE {'X','C','E','X'} #define MSIF_XC_EX_LIBVER {'0','9'} #define MSIF_XC_EX_BUILDNUM {'0','8'} #define MSIF_XC_EX_CHANGELIST {'0','0','7','0','9','8','0','1'} #define XC_EX_API_VERSION /* Character String for DRV/API version */ \ MSIF_TAG, /* 'MSIF' */ \ MSIF_CLASS, /* '00' */ \ MSIF_CUS, /* 0x0000 */ \ MSIF_MOD, /* 0x0000 */ \ MSIF_CHIP, \ MSIF_CPU, \ MSIF_XC_EX_LIB_CODE , /* IP__ */ \ MSIF_XC_EX_LIBVER , /* 0.0 ~ Z.Z */ \ MSIF_XC_EX_BUILDNUM , /* 00 ~ 99 */ \ MSIF_XC_EX_CHANGELIST, /* CL# */ \ MSIF_OS #define XC_EX_INITDATA_VERSION 1 #define XC_EX_OUTPUT_TIMING_ADJUST_VERSION 1 /// PANEL_INFO_EX version of current XC lib #define XC_EX_PANEL_INFO_EX_VERSION 2 /// hw 2d to 3d para version #define XC_EX_HW2DTO3DPARA_VERSION 2 /// 3d detect format para version #define XC_EX_DETECT3DFORMATPARA_VERSION 1 /// ApiStatusEX version of current XC lib /// Define below to distinguish from API_PNLSTATUS_EX_VERSION #define XC_EX_APISTATUS_EX_VERSION 2 //#define API_STATUS_EX_VERSION XC_EX_APISTATUS_EX_VERSION /// 3d fp info version of current XC lib #define XC_EX_3D_FPINFOPARA_VERSION 1 /// report pixel info version of current XC lib #define XC_EX_REPORT_PIXELINFO_VERSION 1 /// osdc disp info version of current XC lib #define XC_EX_ODSC_DISPINFO_VERSIN 1 #define _XC_EX_BIT(_bit_) (1 << (_bit_)) //---------------------------- // Return value //---------------------------- /// XC Return Value typedef enum { E_XC_EX_RET_FAIL = 0, ///Not using it by now #define XC_EX_DBGLEVEL_MUX (0x0008) ///< Mux / Path Creation #define XC_EX_DBGLEVEL_MODEPARSE (0x0010) ///< Mode Parse ======>Not using it by now #define XC_EX_DBGLEVEL_HDMIMONITOR (0x0020) ///< HDMI and Package Monitor ===>Not using it by now #define XC_EX_DBGLEVEL_AUTOGEOMETRY (0x0040) ///< Auto Geometry / Auto Calibration #define XC_EX_DGBLEVEL_CROPCALC (0x0080) ///< Crop Window / Memory / OPM / IPM calculation #define XC_EX_DBGLEVEL_SETTIMING_ISR (0x0100) ///< ISR / SetPanelTiming #define XC_EX_DBGLEVEL_DWIN_SETWINDOW (0x0200) ///< DWIN / Set Window #define XC_EX_DBGLEVEL_FUNCTION_TRACE (0x0400) ///< Trace XC function using status #define XC_EX_DBGLEVEL_PARAMETER_TRACE (0x0800) ///< Trace XC function parameter //---------------------------- // Input signal detect //---------------------------- #define XC_EX_MD_VSYNC_POR_BIT _XC_EX_BIT(0) ///< VSnc polarity bit(0/1 = positive/negative) #define XC_EX_MD_HSYNC_POR_BIT _XC_EX_BIT(1) ///< HSync polarity bit(0/1 = positive/negative) #define XC_EX_MD_HSYNC_LOSS_BIT _XC_EX_BIT(2) ///< HSync loss bit #define XC_EX_MD_VSYNC_LOSS_BIT _XC_EX_BIT(3) ///< VSync loss bit #define XC_EX_MD_INTERLACE_BIT _XC_EX_BIT(4) ///< Interlace mode #define XC_EX_MD_USER_MODE_BIT _XC_EX_BIT(7) ///< User new mode (Not found in mode table) #define XC_EX_MD_SYNC_LOSS (XC_EX_MD_HSYNC_LOSS_BIT | XC_EX_MD_VSYNC_LOSS_BIT) ///< VSync & HSync loss bit //---------------------------- // 3D macros //---------------------------- #define XC_EX_DOUBLEHD_PRESCALE_VONEHDSIZE (540) #define XC_EX_DOUBLEHD_1080X2I_FRAME_VSIZE (1080) #define XC_EX_DOUBLEHD_1080X2I_FIELD_VSIZE (540) #define XC_EX_DOUBLEHD_1080X2I_HSIZE (1920) #define XC_EX_DOUBLEHD_1080X2I_VACT_SPACE1 (23) #define XC_EX_DOUBLEHD_1080X2I_VACT_SPACE2 (22) #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) #define XC_EX_DOUBLEHD_1080X2P_VSIZE (2205) #define XC_EX_DOUBLEHD_1080X2P_FRAME_VSIZE (1080) #define XC_EX_DOUBLEHD_1080X2P_HSIZE (1920) #define XC_EX_DOUBLEHD_1080X2P_GARBAGE_VSIZE (45) #define XC_EX_DOUBLEHD_720X2P_VSIZE (1470) #define XC_EX_DOUBLEHD_720X2P_FRAME_VSIZE (720) #define XC_EX_DOUBLEHD_720X2P_HSIZE (1280) #define XC_EX_DOUBLEHD_720X2P_GARBAGE_VSIZE (30) #define XC_EX_DOUBLEHD_576X2P_VSIZE (1201) #define XC_EX_DOUBLEHD_576X2P_FRAME_VSIZE (576) #define XC_EX_DOUBLEHD_576X2P_HSIZE (720) #define XC_EX_DOUBLEHD_576X2P_GARBAGE_VSIZE (49) #define XC_EX_DOUBLEHD_480X2P_VSIZE (1005) #define XC_EX_DOUBLEHD_480X2P_FRAME_VSIZE (480) #define XC_EX_DOUBLEHD_480X2P_HSIZE (720) #define XC_EX_DOUBLEHD_480X2P_GARBAGE_VSIZE (45) // Field Interleave #define XC_EX_FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE (1080) #define XC_EX_FIELD_INTERLEAVE_1080X2I_FIELD_VISZE (540) #define XC_EX_FIELD_INTERLEAVE_1080X2I_HISZE (1920) #define XC_EX_FIELD_INTERLEAVE_1080X2I_VACT_SPACE (23) #define XC_EX_FIELD_INTERLEAVE_1080X2I_VISZE (XC_EX_FIELD_INTERLEAVE_1080X2I_FRAME_VSIZE+XC_EX_FIELD_INTERLEAVE_1080X2I_VACT_SPACE) ///< When disable panel_info_ex, this means disable all valid panel info #define XC_EX_PANEL_INFO_EX_INVALID_ALL 0xFFFF //------------------------------------------------------------------------------------------------- // Type and Structure //------------------------------------------------------------------------------------------------- //---------------------------- // Common //---------------------------- /// Define window type typedef enum { E_XC_EX_MAIN_WINDOW=0, ///< main window if with PIP or without PIP E_XC_EX_SUB_WINDOW=1, ///< sub window if PIP E_XC_EX_MAX_WINDOW /// The max support window } XC_EX_SCALER_WIN; #define XC_EX_PIP_WINDOWS E_XC_EX_MAX_WINDOW /// Define Window position and size attribute typedef struct { MS_U16 x; ///=E_XC_EX_INPUT_SOURCE_CVBS)&&((x)<=E_XC_EX_INPUT_SOURCE_CVBS_MAX))/// x is AV #define XC_EX_IsSrcTypeSV(x) (((x)>=E_XC_EX_INPUT_SOURCE_SVIDEO)&&((x)<=E_XC_EX_INPUT_SOURCE_SVIDEO_MAX))///< x is SV #define XC_EX_IsSrcTypeATV(x) ((x)==E_XC_EX_INPUT_SOURCE_TV)///< x is ATV #define XC_EX_IsSrcTypeScart(x) (((x)>=E_XC_EX_INPUT_SOURCE_SCART)&&((x)<=E_XC_EX_INPUT_SOURCE_SCART_MAX))///< x is Scart #define XC_EX_IsSrcTypeHDMI(x) (((x)>=E_XC_EX_INPUT_SOURCE_HDMI)&&((x)<=E_XC_EX_INPUT_SOURCE_HDMI_MAX))///< x is HDMI #define XC_EX_IsSrcTypeVga(x) ((x)==E_XC_EX_INPUT_SOURCE_VGA)///< x is VGA #define XC_EX_IsSrcTypeYPbPr(x) (((x)>=E_XC_EX_INPUT_SOURCE_YPBPR)&&((x)<=E_XC_EX_INPUT_SOURCE_YPBPR_MAX))///< x is YPbPr #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 #define XC_EX_IsSrcTypeDVI(x) (((x)>=E_XC_EX_INPUT_SOURCE_DVI)&&((x)<=E_XC_EX_INPUT_SOURCE_DVI_MAX))///< x is DVI #define XC_EX_IsSrcTypeJpeg(x) ((x)==E_XC_EX_INPUT_SOURCE_JPEG)///< x is JPEG #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 #define XC_EX_IsSrcTypeDigitalVD(x) ( XC_EX_IsSrcTypeAV(x)||XC_EX_IsSrcTypeSV(x)||XC_EX_IsSrcTypeATV(x)||XC_EX_IsSrcTypeScart(x))///< x is VD #define XC_EX_IsSrcTypeAnalog(x) ( XC_EX_IsSrcTypeVga(x)|| XC_EX_IsSrcTypeYPbPr(x))///< x is Analog #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 #define XC_EX_IsSrcTypeCapture(x) ((x)==E_XC_EX_INPUT_SOURCE_SCALER_OP)///< x is scaler OP //////////////////////////////////////////////////////////////////////////////// // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // This is abstract output source for XC library. If you want to add another one. // Please contace with XC member //////////////////////////////////////////////////////////////////////////////// /// Define XC device ID typedef struct { MS_U32 u32Version; MS_U32 u32Id; } XC_DEVICE_ID; /// Define XC device enum typedef enum { E_XC_EX_DEVICE0, E_XC_EX_DEVICE1, E_XC_EX_DEVICE_MAX, } XC_EX_DEVICE_NUM; /// Define output type typedef enum { E_XC_EX_OUTPUT_NONE = 0, /// MSB /// OP (32bits) -> IP (32bits) /// [7:0] [15:8] [23:16] [31:24] /// Data_L Data_H Reg_Addr(16bit) Reg_Bank /// /// 16 bit alignment /// LSB ----> MSB /// OP (32bits) -> IP (32bits) -> 0xFFFFFFFF, 0xFFFFFFFF (dummy) /// /// If bIP_DS_On == FALSE, the DS will ignore the IP information /// If bOP_DS_On == FALSE, the DS will ignore the OP information typedef struct { MS_PHY u32DS_Info_BaseAddr; ///< The memory base address to update IP/OP dynamic scaling registers. Absolute without any alignment. MS_U8 u8MIU_Select; ///< 0: MIU0, 1: MIU1, etc. MS_U8 u8DS_Index_Depth; ///< The index depth (how many entries to fire per MVOP Vsync falling) of DS MS_BOOL bOP_DS_On; ///< OP dynamic scaling on/off MS_BOOL bIPS_DS_On; ///< IPS dynamic scaling on/off MS_BOOL bIPM_DS_On; ///< IPM dynamic scaling on/off } XC_EX_DynamicScaling_Info; /// define the prescaling destiniation size limit typedef struct { MS_U16 u16MinDstWidth; ///Minimum destination Width MS_U16 u16MinDstHeight; ///Minimum destination Height MS_BOOL bEna; ///Enable this limit } XC_EX_PreScalingLimit_Info; /// Define source type for DIP typedef enum { E_XC_DIP_EX_SOURCE_TYPE_SUB2 = 0, ///< DIP from SUB2(IP_F3) E_XC_DIP_EX_SOURCE_TYPE_MAIN = 1, ///< DIP from MAIN(IP_MAIN) E_XC_DIP_EX_SOURCE_TYPE_SUB = 2, ///< DIP from SUB (IP_SUB) E_XC_DIP_EX_SOURCE_TYPE_OP_MAIN = 3, ///< HVSP MAIN E_XC_DIP_EX_SOURCE_TYPE_OP_SUB = 4, ///< HVSP SUB E_XC_DIP_EX_SOURCE_TYPE_DRAM = 5, ///< DIP from DRAM E_XC_DIP_EX_SOURCE_TYPE_OP_CAPTURE = 6, ///< DIP from OP capture E_XC_DIP_EX_SOURCE_TYPE_OP_SC1_CAPTURE = 7, ///< DIP from OP SC1 capture E_XC_DIP_EX_MAX_SOURCE_NUM ///< The max support window } XC_DIP_EX_SOURCE_TYPE; /// Define the path type typedef enum { E_XC_EX_PATH_TYPE_SYNCHRONOUS, ///50,30-->60,24-->48,50-->100,60-->120----FRC 1:2 E_XC_EX_3D_OUTPUT_FRAME_L, E_XC_EX_3D_OUTPUT_FRAME_R, E_XC_EX_3D_OUTPUT_FRAME_ALTERNATIVE_NOFRC, //50->50, 60->60-------------------------------FRC 1:1 E_XC_EX_3D_OUTPUT_CHECKBOARD_HW, //for hw 2d to 3d use E_XC_EX_3D_OUTPUT_LINE_ALTERNATIVE_HW, //for hw 2d to 3d use E_XC_EX_3D_OUTPUT_PIXEL_ALTERNATIVE_HW, //for hw 2d to 3d use E_XC_EX_3D_OUTPUT_FRAME_L_HW, //for hw 2d to 3d use E_XC_EX_3D_OUTPUT_FRAME_R_HW, //for hw 2d to 3d use E_XC_EX_3D_OUTPUT_FRAME_ALTERNATIVE_HW, //for hw 2d to 3d use E_XC_EX_3D_OUTPUT_TOP_BOTTOM_HW, //for hw 2d to 3d use, it based on E_XC_3D_OUTPUT_TOP_BOTTOM implement 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 E_XC_EX_3D_OUTPUT_FRAME_PACKING, } XC_EX_3D_OUTPUT_MODE; typedef enum { E_XC_EX_3D_OUTPUT_FI_MODE_NONE , E_XC_EX_3D_OUTPUT_FI_1920x1080 , E_XC_EX_3D_OUTPUT_FI_960x1080 , E_XC_EX_3D_OUTPUT_FI_1920x540 , E_XC_EX_3D_OUTPUT_FI_1280x720 , } XC_EX_3D_OUTPUT_FI_MODE; typedef enum { E_XC_EX_3D_AUTODETECT_SW, E_XC_EX_3D_AUTODETECT_HW, E_XC_EX_3D_AUTODETECT_HW_COMPATIBLE, E_XC_EX_3D_AUTODETECT_MAX } XC_EX_3D_AUTODETECT_METHOD; typedef enum { E_XC_EX_3D_PANEL_NONE, E_XC_EX_3D_PANEL_SHUTTER, //240hz panel, which can process updown, leftright,vertical or horizontal line weave E_XC_EX_3D_PANEL_PELLICLE, //120hz panel, which can only process horizontal line weave E_XC_EX_3D_PANEL_4K1K_SHUTTER, //120hz 4K1K panel, which can process updown, leftright,vertical or horizontal line weave E_XC_EX_3D_PANEL_MAX, } XC_EX_3D_PANEL_TYPE; //hw 2d to 3d para typedef struct { MS_U32 u32Hw2dTo3dPara_Version; MS_U16 u16Concave; MS_U16 u16Gain; MS_U16 u16Offset; MS_U16 u16ArtificialGain; MS_U16 u16EleSel; MS_U16 u16ModSel; MS_U16 u16EdgeBlackWidth; } XC_EX_3D_HW2DTO3D_PARA; //detect 3d format para typedef struct { MS_U32 u32Detect3DFormatPara_Version; //version control, back compatible //////////////////obsolete field begin/////////////////////////////////////////////////////////////////////////////////////////////////////////// MS_U16 u16HorSearchRange; //the horizontal range for find the similar pixel at R image MS_U16 u16VerSearchRange; //the vertical range for find the similar pixel at R image MS_U16 u16GYPixelThreshold; //g/y pixel threshold for define the similar pixel MS_U16 u16RCrPixelThreshold; //r/cr pixel threshold for define the similar pixel MS_U16 u16BCbPixelThreshold; //b/cb pixel threshold for define the similar pixel MS_U16 u16HorSampleCount; //the horizontal sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount MS_U16 u16VerSampleCount; //the vertical sample count, the total checked pixel will be u16HorSampleCount*u16VerSampleCount MS_U16 u16MaxCheckingFrameCount; //the max checking frame count MS_U16 u16HitPixelPercentage; //the percentage about hit pixel in one frame total checked pixel, for example: 70%, need set as 70 //////////////////obsolete field end///////////////////////////////////////////////////////////////////////////////////////////////////////////// MS_BOOL bEnableOverscan; //detect 3d format for considering overscan shift } XC_EX_3D_DETECT3DFORMAT_PARA; //define 3d fp info para typedef struct { MS_U32 u32FPInfoPara_Version; //version control, back compatible MS_U16 u16HBlank; //horizontal blank MS_BOOL bEnableUserSetting; //enable user setting } XC_EX_3D_FPINFO_PARA; typedef enum { E_XC_EX_DBG_FPLL_MODE_DISABLE_ALL = 0, E_XC_EX_DBG_FPLL_MODE_DISABLE = 1, E_XC_EX_DBG_FPLL_MODE_ENABLE = 2, E_XC_EX_DBG_FPLL_MODE_MAX, } XC_EX_FPLL_DBG_MODE;//For debug purpose only! typedef enum { E_XC_EX_DBG_FPLL_FLAG_PHASELIMIT = 0, E_XC_EX_DBG_FPLL_FLAG_D5D6D7 = 1, E_XC_EX_DBG_FPLL_FLAG_IGAIN = 2, E_XC_EX_DBG_FPLL_FLAG_PGAIN = 3, E_XC_EX_DBG_FPLL_FLAG_INITSETSTEP = 4, E_XC_EX_DBG_FPLL_FLAG_INITSETDELAY= 5, E_XC_EX_DBG_FPLL_FLAG_MAX, } XC_EX_FPLL_DBG_FLAG;//For debug purpose only! typedef enum { E_XC_EX_FPLL_MODE_DISABLE_ALL = 0, /// Disable all current FPLL customer setting(then scaler will auto decide it) E_XC_EX_FPLL_MODE_DISABLE = 1, /// Disable the specified(by other function parameter) FPLL customer setting E_XC_EX_FPLL_MODE_ENABLE = 2, /// Enable the specified(by other function parameter) FPLL customer setting E_XC_EX_FPLL_MODE_MAX, } XC_EX_FPLL_MODE; typedef enum { E_XC_EX_FPLL_FLAG_PHASELIMIT = 0, ///Set customer setting of PHASE limit E_XC_EX_FPLL_FLAG_D5D6D7 = 1,///Set customer setting of D5D6D7 limit E_XC_EX_FPLL_FLAG_IGAIN = 2,///Set customer setting of IGAIN E_XC_EX_FPLL_FLAG_PGAIN = 3,///Set customer setting of PGAIN E_XC_EX_FPLL_FLAG_INITSETSTEP = 4, ///steps to set DCLK E_XC_EX_FPLL_FLAG_INITSETDELAY= 5, ///delay between steps when setting DCLK E_XC_EX_FPLL_FLAG_MAX, } XC_EX_FPLL_FLAG; typedef enum { E_XC_EX_MLOAD_UNSUPPORTED = 0, E_XC_EX_MLOAD_DISABLED = 1, E_XC_EX_MLOAD_ENABLED = 2, } XC_EX_MLOAD_TYPE; typedef enum { E_XC_EX_MLG_UNSUPPORTED = 0, E_XC_EX_MLG_DISABLED = 1, E_XC_EX_MLG_ENABLED = 2, } XC_EX_MLG_TYPE; typedef enum { E_XC_EX_HDMI_SYNC_DE, E_XC_EX_HDMI_SYNC_HV, } XC_EX_HDMI_SYNC_TYPE; typedef enum { E_XC_EX_FRC_1_1 = 0, E_XC_EX_FRC_1_2 = 1, E_XC_EX_FRC_5_12 = 2, E_XC_EX_FRC_2_5 = 3, E_XC_EX_FRC_1_4 = 4, } XC_EX_FRC_TYPE; // scaler FRC table typedef struct { MS_U16 u16LowerBound; MS_U16 u16HigherBound; MS_U8 u8FRC_In:4; // ivs MS_U8 u8FRC_Out:4; // ovs XC_EX_FRC_TYPE eFRC_Type; } XC_EX_FRC_SETTING; typedef enum { E_PQ_ex_IOCTL_GET_HSD_SAMPLING, E_PQ_ex_IOCTL_MAX, } E_PQ_ex_IOCTL_FLAG; typedef enum { E_XC_EX_GET_PIXEL_RET_FAIL = 0, /// valid, valid -> none) E_SC_EX_INT_F1_CSOG, E_SC_EX_INT_F2_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATS_READY E_SC_EX_INT_F1_RESERVED2, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATS_READY E_SC_EX_INT_F2_ATP_READY, // auto phase ready interrupt E_SC_EX_INT_F1_ATP_READY, E_SC_EX_INT_F2_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F2_ATG_READY E_SC_EX_INT_F1_RESERVED3, // scaler dosen't have this interrupt now, before is SC_INT_F1_ATG_READY E_SC_EX_MAX_SC_INT, } SC_EX_INT_SRC; typedef enum { // 0x00, first 4 bits are unused E_XC_EX_INT_RESERVED1 = 4, ///< scaler dosen't have this interrupt now E_XC_EX_INT_VSINT, ///< output Vsync interrupt E_XC_EX_INT_F2_VTT_CHG, ///< main window, HDMI mute or Vsync polarity changed, Vtt change exceed BK1_1D[11:8] E_XC_EX_INT_F1_VTT_CHG, E_XC_EX_INT_F2_VS_LOSE, ///< didn't received Vsync for a while or Vtt count BK1_1F[10:0] exceed max value E_XC_EX_INT_F1_VS_LOSE, E_XC_EX_INT_F2_JITTER, ///< H/V start/end didn't be the same with privous value, usually used in HDMI/DVI input E_XC_EX_INT_F1_JITTER, E_XC_EX_INT_F2_IPVS_SB, ///< input V sync interrupt E_XC_EX_INT_F1_IPVS_SB, E_XC_EX_INT_F2_IPHCS_DET, ///< input H sync interrupt E_XC_EX_INT_F1_IPHCS_DET, // 0x10 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 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 E_XC_EX_INT_F2_HTT_CHG, ///< Hsync polarity changed or Hperiod change exceed BK1_1D[5:0] E_XC_EX_INT_F1_HTT_CHG, 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 E_XC_EX_INT_F1_HS_LOSE, 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 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 E_XC_EX_INT_F2_CSOG, ///< composite sync or SoG input signal type changed (for example, SoG signal from none -> valid, valid -> none) E_XC_EX_INT_F1_CSOG, E_XC_EX_INT_F2_RESERVED2, ///< scaler dosen't have this interrupt now E_XC_EX_INT_F1_RESERVED2, E_XC_EX_INT_F2_ATP_READY, ///< auto phase ready interrupt E_XC_EX_INT_F1_ATP_READY, E_XC_EX_INT_F2_RESERVED3, ///< scaler dosen't have this interrupt now E_XC_EX_INT_F1_RESERVED3, } XC_EX_INT_SRC; /// OP2 Video/GOP layer switch typedef enum { E_XC_EX_VOP_LAYER_VIDEO_MUX1_MUX2 = 0, ///<0: Video->GOP1->GOP2 (GOP2 is one pipe later than GOP1) E_XC_EX_VOP_LAYER_FRAME_VIDEO_MUX1_MUX2, ///<1: FrameColor->Video->GOP1->GOP2 (GOP1/GOP2 smae pipe) E_XC_EX_VOP_LAYER_FRAME_VIDEO_MUX2_MUX1, ///<2: FrameColor->Video->GOP2->GOP1 (GOP1/GOP2 smae pipe) E_XC_EX_VOP_LAYER_FRAME_MUX1_VIDEO_MUX2, ///<3: FrameColor->GOP1->Video->GOP2 (GOP1/GOP2 smae pipe) E_XC_EX_VOP_LAYER_FRAME_MUX1_MUX2_VIDEO, ///<4: FrameColor->GOP1->GOP2->Video (GOP1/GOP2 smae pipe) E_XC_EX_VOP_LAYER_FRAME_MUX2_VIDEO_MUX1, ///<5: FrameColor->GOP2->Video->GOP1 (GOP1/GOP2 smae pipe) E_XC_EX_VOP_LAYER_FRAME_MUX2_MUX1_VIDEO, ///<6: FrameColor->GOP2->GOP1->Video (GOP1/GOP2 smae pipe) E_XC_EX_VOP_LAYER_RESERVED, } XC_EX_VOP_OSD_LAYER_SEL; /// OP2VOP de select typedef enum { E_XC_EX_OP2VOPDE_MAINWINDOW = 0, ///<0: capture main display window, no osd E_XC_EX_OP2VOPDE_SUBWINDOW, ///<1: capture sub display window, no osd E_XC_EX_OP2VOPDE_WHOLEFRAME, ///<2: Whole frame of panel DE, no osd E_XC_EX_OP2VOPDE_WHOLEFRAME_WITHOSD, ///<3: Whole frame of panel DE, with osd } XC_EX_OP2VOP_DE_SEL; typedef void (*SC_EX_InterruptCb) (SC_EX_INT_SRC enIntNum, void *pParam); ///< Interrupt callback function //Define Output Frame control typedef struct { MS_U32 u32XC_version; /// osd layer 0 -> osd layer 1 -> osd layer 2 -> osd layer 3 E_XC_EX_VIDEO_ON_OSD_LAYER_0 = 1, ///< osd layer 0 -> video -> osd layer 1 -> osd layer 2 -> osd layer 3 E_XC_EX_VIDEO_ON_OSD_LAYER_1 = 2, ///< osd layer 0 -> osd layer 1 -> video -> osd layer 2 -> osd layer 3 E_XC_EX_VIDEO_ON_OSD_LAYER_2 = 3, ///< osd layer 0 -> osd layer 1 -> osd layer 2 -> video -> osd layer 3 E_XC_EX_VIDEO_ON_OSD_LAYER_3 = 4, ///< osd layer 0 -> osd layer 1 -> osd layer 2 -> osd layer 3 -> video E_XC_EX_VIDEO_ON_OSD_LAYER_NUM, } XC_EX_VIDEO_ON_OSD_LAYER; /// Osd Index typedef enum { E_XC_EX_OSD_0 = 0, ///< osd0 E_XC_EX_OSD_1 = 1, ///< osd1 E_XC_EX_OSD_2 = 2, ///< osd2 E_XC_EX_OSD_3 = 3, ///< osd3 E_XC_EX_OSD_NUM, } E_XC_EX_OSD_INDEX; /// Osd Index typedef enum { E_XC_EX_OSD_BlENDING_MODE0 = 0, ///< a*OSD + (1-a)*Video E_XC_EX_OSD_BlENDING_MODE1 = 1, ///< OSD + (1-a)*Video E_XC_EX_OSD_BlENDING_TYPE_NUM, } XC_EX_OSD_BlENDING_TYPE; /// Scaling type typedef enum { E_XC_EX_PRE_SCALING = 0, E_XC_EX_POST_SCALING, E_XC_EX_BOTH_SCALING, } XC_EX_SCALING_TYPE; /// HV Vector type typedef enum { E_XC_EX_H_VECTOR = 0, E_XC_EX_V_VECTOR, E_XC_EX_HV_VECTOR, } XC_EX_VECTOR_TYPE; /// Define MCDI buffer type typedef enum { E_XC_EX_MCDI_ME1 = 0, ///< Main MDCI ME1 E_XC_EX_MCDI_ME2 = 1, ///< Main MDCI ME2 E_XC_EX_MCDI_BOTH, ///< Main MDCI ME1+ME2 E_XC_EX_MCDI_SUB_ME1, ///< Sub MDCI ME1 E_XC_EX_MCDI_SUB_ME2, ///< Sub MDCI ME2 E_XC_EX_MCDI_SUB_BOTH, ///< Sub MDCI ME1+ME2 } XC_EX_MCDI_TYPE; typedef struct { MS_U8 p1; MS_U8 p2; MS_U8 p3; MS_U8 p4; MS_U8 p5; MS_U8 p6; MS_U8 p7; MS_U8 p8; } XC_EX_FRC_R2_CMD_PARAMETER, *p_XC_EX_FRC_R2_CMD_PARAMETER; //LD typedef enum { E_XC_EX_LD_PANEL_LG32inch_LR10 = 0x0, E_XC_EX_LD_PANEL_LG37inch_LR10 = 0x1, E_XC_EX_LD_PANEL_LG42inch_LR16 = 0x2, E_XC_EX_LD_PANEL_LG47inch_LR16 = 0x3, E_XC_EX_LD_PANEL_LG55inch_LR16 = 0x4, E_XC_EX_LD_PANEL_LG55inch_LR12 = 0x5, E_XC_EX_LD_PANEL_CMO42inch_LR16 = 0x6, E_XC_EX_LD_PANEL_DEFAULT, E_XC_EX_LD_PANEL_NUMS, } XC_EX_LD_PANEL_TYPE; typedef enum { E_XC_EX_LD_MODE_OFF = 0, E_XC_EX_LD_MODE_LOW = 1, E_XC_EX_LD_MODE_MID = 2, E_XC_EX_LD_MODE_HIGH = 3, } XC_EX_LD_MODE; //parameters for detecting nine lattice typedef struct { MS_U16 u16PixelStep; // distance between sample points MS_U8 u8ColorThreshold; // max color difference MS_U8 u8TryTimes; // max times for detecting MS_U16 u16LinearDiff; // difference for every 3 lattice in a line } XC_EX_DETECTNL_PARA; #define XC_EX_FRC_PATHCTRL_ALLOFF (0x0000) #define XC_EX_FRC_PATHCTRL_OP2COLORMATRIX (0x0001) #define XC_EX_FRC_PATHCTRL_OP2CSCDITHER (0x0002) #define XC_EX_FRC_PATHCTRL_OP2BRIGHTNESS (0x0004) #define XC_EX_FRC_PATHCTRL_OP2CONTRAST (0x0008) #define XC_EX_FRC_PATHCTRL_OP2NOISEROUND (0x0010) // OSDC TIMING GEN typedef struct { MS_U16 u16OC_Tgen_HTotal; MS_U16 u16OC_Tgen_VTotal; MS_U16 u16OC_Tgen_Hsync_Start; MS_U16 u16OC_Tgen_Hsync_End; MS_U16 u16OC_Tgen_HframDE_Start; MS_U16 u16OC_Tgen_HframDE_End; MS_U16 u16OC_Tgen_Vsync_Start; MS_U16 u16OC_Tgen_Vsync_End; MS_U16 u16OC_Tgen_VframDE_Start; MS_U16 u16OC_Tgen_VframDE_End; } XC_EX_OSDC_TGEN_INFO; // OSDC MISC Control typedef struct { MS_BOOL bOC_ClK_En; MS_BOOL bOC_Mixer_Bypass_En; MS_BOOL bOC_Mixer_InvAlpha_En; MS_BOOL bOC_Mixer_Hsync_Vfde_Out; // 1:hs_out = hs&vfde MS_BOOL bOC_Mixer_Hfde_Vfde_Out; // 1:hs_out = de(hfde)&vfde MS_U16 u16OC_Lpll_type; MS_U8 u8OC_OutputFormat; // output bit order } XC_EX_OSDC_CTRL_INFO; typedef enum { E_XC_EX_OSDC_TGEN_MANUAL = 0, E_XC_EX_OSDC_TGEN_1366x768, E_XC_EX_OSDC_TGEN_1920x1080, E_XC_EX_OSDC_TGEN_3840x2160, E_XC_EX_OSDC_TGEN_MAX, } XC_EX_OSDC_TGEN_Type; typedef enum { E_XC_EX_OSDC_INIT = 0, E_XC_EX_OSDC_CTRL_TGEN, E_XC_EX_OSDC_CTRL_MISC, } XC_EX_OSDC_CTRL_TYPE; //OSDC Display information typedef struct { MS_U32 ODSC_DISPInfo_Version; /// R 7:5, G 4:2, B 1:0 /// @param eWindow \b IN: The window which need to be set. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetDispWindowColor(XC_DEVICE_ID *pDeviceId, MS_U8 u8Color, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Query the capability of scaler about source to Video encoder(VE) /// @param OutputCapability \b OUT: Which part of scaler can output data to Video Encoder (VE). ///Check E_XC_SOURCE_TO_VE for capability bit. Take an example, if bit0 of OutputCapability equal to 1, ///Scaler can output data to ve from its E_XC_IP(IP) ///@return @ref MS_BOOL True if query success. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SupportSourceToVE(XC_DEVICE_ID *pDeviceId, MS_U16* pOutputCapability); //------------------------------------------------------------------------------------------------- /// Enable output capture for output data to VE. Return False if current platform does not support E_XC_SOURCE_TO_VE /// Note: this source is not only for VE, but Scaler IP or DIP /// @param bEnable \b IN: Enable output capture function /// @param eSourceToVE \b IN: Specific output source. The source listed in E_XC_SOURCE_TO_VE is a "point" which can be retrieve data. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetOutputCapture(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SOURCE_TO_VE eSourceToVE); //------------------------------------------------------------------------------------------------- /// Setup Gamma function ON/OFF /// @param bEnable \b IN: Enable or Disable //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetGammaOnOff (XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Set VOP Gain for Main Window(after 3x3 before Gamma) /// @param eVop_Channel \b IN: Select VOP R/G/B /// @param u16Val \b IN: Set value //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// Set VOP Offset for Main Window(after 3x3 before Gamma) /// @param eVop_Channel \b IN: Select VOP R/G/B /// @param u16Val \b IN: Set value //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- // Output timing related //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- /// Setup panel timing (output DCLK)/FRC/FramePLL, and enable input source /// @param pTimingInfo \b IN: the information of the timing to set @ref XC_SetTiming_Info //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetPanelTiming(XC_DEVICE_ID *pDeviceId, XC_EX_SetTiming_Info *pTimingInfo, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Set current output type. This is set in Panel structure. You can adjust it here. /// @param enPnl_Out_Timing_Mode \b IN: The output type //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetOutTimingMode(XC_DEVICE_ID *pDeviceId, XC_EX_PNL_OUT_TIMING_MODE enPnl_Out_Timing_Mode); //------------------------------------------------------------------------------------------------- /// set free run display window timing /// @return void Output type. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetFreeRunTiming(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Adjust V sync FrontPorch , Sync Width for specific output frame rate (You can adjust in advance by using MApi_XC_EX_SetExPanelInfo) /// @param u16FrontPorch \b IN: Front porch of output Vsync /// @param u16SyncWidth \b IN: Sync width of output Vsync /// @param u16OutputVfreq \b IN: The output frame rate you want to adjust. /// @return MS_BOOL True: Success False : Fail //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_CustomerSyncInfo(XC_DEVICE_ID *pDeviceId, MS_U16 u16FrontPorch, MS_U16 u16SyncWidth, MS_U16 u16OutputVfreq); //------------------------------------------------------------------------------------------------- /// Wait FPLL finished /// @return @ref MS_BOOL indicate FPLL finished or not (frame lock finished or not) //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_WaitFPLLDone(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Get scaler output vertical frequency /// @return @ref MS_U16 return output vertical frequency x 100 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U16 MApi_XC_EX_GetOutputVFreqX100(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Frame Lock Check /// @ref MS_BOOL TURE=Frame Lock ; FALSE= Not Frame Lock //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_FrameLockCheck(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Set a customize FRC table into driver /// You can customize frc table in driver. The max number of FRC setting is 5 (Can be changed in driver layer). /// /// Here is an example of 5 FRC items with 6 maximal number of FRC setting. /// Please fill {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} at unused FRC item slot. /// /// {0, 160, 1, 4, MS_FRC_1_4}, <-- FRC item 0 /// {160, 245, 2, 5, MS_FRC_2_5}, <-- FRC item 1 /// {245, 260, 1, 2, MS_FRC_1_2}, <-- FRC item 2 /// {260, 400, 1, 2, MS_FRC_1_2}, <-- FRC item 3 /// {400, 0xFFFF, 1, 1, MS_FRC_1_1}, <-- FRC item 4 /// {0xFFFF, 0xFFFF, 1, 1, MS_FRC_1_1} <-- FRC item 5 (Unused) /// @param stFRCTable \b IN: The pointer which point to a FRC table. You can refer above description. /// if pass NULL, driver will use default frc table. /// @return @ref XC_EX_RETURN_VALUE Return status. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_CustomizeFRCTable(XC_DEVICE_ID *pDeviceId, XC_EX_FRC_SETTING* stFRCTable); //------------------------------------------------------------------------------------------------- /// Set specific in / out framerate control (Using in Box proejct only.) /// @param bEnable \b IN: TRUE: Enable ouput frame control /// @param pPanelInfoEx \b IN: The information about in / out framerate. /// @param pPanelInfoEx \b IN: The window which need to be controlled. /// @return @ref XC_EX_RETURN_VALUE return type. //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// Set the FPLL mode: /// @param bTrue \b IN: True: FSM mode, False: Non FSM mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_SC_EX_Enable_FPLL_FSM(XC_DEVICE_ID *pDeviceId, MS_BOOL bTrue); //------------------------------------------------------------------------------------------------- /// This function will force freerun in MDrv_Scaler_SetPanelTiming(), /// otherwise MDrv_Scaler_SetPanelTiming() will decide to do framelock or not by itself. /// /// Note: this function is difference with MDrv_SC_set_fpll() which is used to /// unlock framelock after MDrv_Scaler_SetPanelTiming(). /// But this function is used to affect MDrv_Scaler_SetPanelTiming()'s behavior. /// @param bEnable \b IN: TRUE: Enable force freerun. FALSE: disable force free run. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_SC_EX_ForceFreerun(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Get Force freerun status. /// @return @ref MS_BOOL True: Current is in Force freerun mode. False: Current is not in Force Freerun mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_SC_EX_IsForceFreerun(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Set specific in / out framerate control (Using in Box proejct only.) /// @param bEnable \b IN: TRUE: Enable ouput frame control /// @param pPanelInfoEx \b IN: The information about in / out framerate. /// @param pPanelInfoEx \b IN: The window which need to be controlled. /// @return @ref XC_EX_RETURN_VALUE return type. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_SC_EX_SetFreerunVFreq(XC_DEVICE_ID *pDeviceId, XC_EX_VFREQ_SEL VFreq); //------------------------------------------------------------------------------------------------- /// Set external panel info for output /// Currently, only support setting of two different vfreqs at same time /// The set ExPanelInfo will take effect after running of function MApi_XC_SetPanelTiming /// @param bEnable \b IN: TRUE: Enable this XC_PANEL_INFO_EX, FALSE: Disable this XC_PANEL_INFO_EX /// @param pPanelInfoEx \b IN: The extern panel information to set @ref XC_PANEL_INFO_EX /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_SetExPanelInfo(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_PANEL_INFO_EX *pPanelInfoEx); //------------------------------------------------------------------------------------------------- /// Set the FPLL thresh mode: /// @param bEnable \b IN: TRUE: Thresh mode, FALSE: Non-Thresh mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_Enable_FPLL_Thresh_Mode(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Enable auto no signal mode /// @param bEnable \b IN: True: Enable auto no signal mode. /// @eWindow \b IN: The window (main or sub) which need to be controled. /// @return @ref XC_EX_RETURN_VALUE TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_EnableIPAutoNoSignal(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow ); //------------------------------------------------------------------------------------------------- /// Return true is current is in auto nosignal mode. /// @param eWindow \b IN: IP auto nosignal in specific window /// @return @ref MS_BOOL TRUE: eWindow is in auto no signal mode. FALSE: eWindow is not in auto no signal mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_GetIPAutoNoSignal(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow ); //------------------------------------------------------------------------------------------------- /// Enable or disable IP auto coast /// @param bEnable \b IN: Enable or Disable //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableIPAutoCoast(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Enable IP auto Coast debounce (the debounce time is 1 (default) in driver) /// @return void //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableIPCoastDebounce(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Clear IP auto Coast debounce /// @return void //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_ClearIPCoastStatus(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Enable FPLL related settings not by program but by user's setting from TV tool /// Including PhaseLimit, limitD5D6D7_RK /// @param bEnable @ref MS_BOOL \b IN: enable or not //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableFpllManualSetting(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); // debug purpose //-------------------------------------------------------------------------------------------------------------------- /// Test if panel output is ok by changing output DClk, this is to test max range that FPLL can do /// @param u32FpllSetOffset @ref MS_U32 \b IN: the offset to be add/minus the typical DClk output, unit is SET /// @param u16TestCnt @ref MS_U16 \b IN: the times to do boundary test //-------------------------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_FpllBoundaryTest(XC_DEVICE_ID *pDeviceId, MS_U32 u32FpllSetOffset, MS_U16 u16TestCnt); // debug purpose //------------------------------ // Offline signal detection related //------------------------------ //----------------------------------------------------------------------------- /// Set the source need to be detect in offline detection. /// @param XC_EX_INPUT_SOURCE_TYPE \b IN: The source need to be monitor //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetOffLineDetection ( XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE u8InputSourceType ); //------------------------------------------------------------------------------------------------- /// Get Offline detection status to specific input source /// @param u8InputSourceType \b IN: the specific input source type to do offline detection /// @return @ref MS_U8 TRUE: Success, FALSE: Failed //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U8 MApi_XC_EX_GetOffLineDetection( XC_DEVICE_ID *pDeviceId, XC_EX_INPUT_SOURCE_TYPE u8InputSourceType); //------------------------------------------------------------------------------------------------- /// Set Offline detection Sog Threshold /// @param u8Threshold \b IN: threshold value t2,u3,u4: 0~31 other chip: 0~255 /// @Return TRUE: Successful FALSE: Fail //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_SetOffLineSogThreshold(XC_DEVICE_ID *pDeviceId, MS_U8 u8Threshold); //t2,u3,u4: 0~31 other chip: 0~255 //------------------------------------------------------------------------------------------------- /// Set Offline Detection Sog filter bandwidth /// @param u8BW \b IN: bandwidth value t2,u3,u4: 0~7 other chip: 0~31 /// @Return TRUE: Successful FALSE: Fail //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_SetOffLineSogBW(XC_DEVICE_ID *pDeviceId, MS_U8 u8BW); //----------------------------------------------------------------------------- /// Initial offline detect procedure. /// @return @ref MS_BOOL TRUE: Success, FALSE: Failed //----------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_OffLineInit(XC_DEVICE_ID *pDeviceId); //------------------------------ // PIP //------------------------------ //------------------------------------------------------------------------------------------------- /// Set Extra fetch number. (This setting is usually used in PIP mode. Please set carefully) /// @param u8val \b IN: The extra fetch number. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_Set_Extra_fetch_adv_line(XC_DEVICE_ID *pDeviceId, MS_U8 u8val); //------------------------------------------------------------------------------------------------- /// Set the VGA SOG on or off /// @param bEnable \b IN: bEnable =1, Turn on the VGA SOG; bEnable =0, Turn off the VGA SOG //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetVGASogEn(XC_DEVICE_ID *pDeviceId, MS_BOOL bVGASogEn); //------------------------------------------------------------------------------------------------- /// Control the output window(Main/Sub) on or off /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window /// @param eWindow \b IN: eWindow =0, for MAIN; eWindow =1, for SUB; //------------------------------------------------------------------------------------------------- DLL_PUBLIC void MApi_XC_EX_EnableWindow(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// whether sub window is enable /// @param void \b IN: none //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Is_SubWindowEanble(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Set Border format /// @param u8WidthIn \b IN: In-box width /// @param u8WidthOut \b IN: Out-box width /// @param u8color \b IN: border color /// @param eWindow \b IN: which window we are going to set //------------------------------------------------------------------------------------------------- // 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 ); //------------------------------------------------------------------------------------------------- /// enable or disable Border /// @param bEnable \b IN: Enable or Disable /// @param eWindow \b IN: which window we are going to set //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableBorder(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Set Z-order main window first or not /// @param bMainFirst \b IN: TRUE: Main window first; FALSE: Sub window first //------------------------------------------------------------------------------------------------- DLL_PUBLIC void MApi_XC_EX_ZorderMainWindowFirst(XC_DEVICE_ID *pDeviceId, MS_BOOL bMainFirst); //------------------------------ // PQ Load Function //------------------------------ //------------------------------------------------------------------------------------------------- /// Create a function for PQ in SC. /// @param PQ_Function_Info \b IN: the information of the function /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info //------------------------------------------------------------------------------------------------- DLL_PUBLIC void MApi_XC_EX_PQ_LoadFunction(XC_DEVICE_ID *pDeviceId, PQ_EX_Function_Info* function_Info , MS_U32 u32InitDataLen); //------------------------------------------------------------------------------------------------- /// Return true if current status is H nonlinear scaling /// @param u32InitDataLen \b IN: the length of the PQ_Function_Info /// @return @ref MS_U8 True: Using HNonLinearScaling False: Not in Nonlinear status //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Check_HNonLinearScaling(XC_DEVICE_ID *pDeviceId); //------------------------------ // EURO Function //------------------------------ // Enable/Disable Euro/Australia Hdtv Detection support in driver //----------------------------------------------------------------------------- /// Enable/Disable Euro/Australia Hdtv Detection support in driver /// @param bEnable: /// - ENABLE : enable support /// - DISABLE : disable disable /// @return None. //----------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableEuroHdtvSupport(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //----------------------------------------------------------------------------- /// Enable Euro/Australia Hdtv Detection /// @param bEnable: /// - ENABLE : enable detection /// - DISABLE : disable detection /// @return None. //----------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableEuroHdtvDetection(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); //------------------------------ // Genenal R/W Function //------------------------------ //------------------------------------------------------------------------------------------------- /// General Read Byte Function /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address /// @return @ref MS_U8 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U8 MApi_XC_EX_ReadByte(MS_U32 u32Reg); //------------------------------------------------------------------------------------------------- /// General Write Byte Function /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address /// @return @ref MS_U8 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_WriteByte(MS_U32 u32Reg, MS_U8 u8Val); //------------------------------------------------------------------------------------------------- /// General Write Byte Function /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address /// @param u8Val \b IN: setting value /// @param u8Msk \b IN: setting value //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_WriteByteMask(MS_U32 u32Reg, MS_U8 u8Val, MS_U8 u8Msk); //------------------------------------------------------------------------------------------------- /// General 2 Write Byte Function /// @param u32Reg \b IN: which value shouldn't contain xc sub bank and address /// @param u16Val \b IN: setting value /// @param u16Msk \b IN: setting value //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_Write2ByteMask(MS_U32 u32Reg, MS_U16 u16val, MS_U16 u16Mask); //------------------------------ // XC R/W Function, using mutex to protect //------------------------------ //------------------------------------------------------------------------------------------------- /// Scaler Write 2 Byte Function, and use mutex to protect while switch bank and write address /// @param u32Reg \b IN: which value contain xc sub bank and address /// @param u16Val \b IN: setting value //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_W2BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U16 u16Val); //------------------------------------------------------------------------------------------------- /// Scaler Read 2 Byte Function, and use mutex to protect while switch bank and write address /// @param u32Reg \b IN: which value contain xc sub bank and address /// @return @ref MS_U16 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U16 MApi_XC_EX_R2BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg); //------------------------------------------------------------------------------------------------- /// Scaler Write 4 Byte Function, and use mutex to protect while switch bank and write address /// @param u32Reg \b IN: which value contain xc sub bank and address /// @param u32Val \b IN: setting value //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_W4BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U32 u32Val); //------------------------------------------------------------------------------------------------- /// Scaler Read 4 Byte Function, and use mutex to protect while switch bank and write address /// @param u32Reg \b IN: which value contain xc sub bank and address /// @return @ref MS_U32 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U32 MApi_XC_EX_R4BYTE(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg); //------------------------------------------------------------------------------------------------- /// Scaler Read 2 Byte Mask Function, and use mutex to protect while switch bank and write address /// @param u32Reg \b IN: which value contain xc sub bank and address /// @param u16mask \b IN: decide which bit is valied /// @return @ref MS_U16 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U16 MApi_XC_EX_R2BYTEMSK(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U16 u16Mask); //------------------------------------------------------------------------------------------------- /// Scaler Write 2 Byte Mask Function, and use mutex to protect while switch bank and write address /// @param u32Reg \b IN: which value contain xc sub bank and address /// @param u16Val \b IN: Setting value /// @param u16mask \b IN: decide which bit is valied //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_W2BYTEMSK(XC_DEVICE_ID *pDeviceId, MS_U32 u32Reg, MS_U16 u16Val, MS_U16 u16Mask); //------------------------------ // MLoad Function, xc command burst //------------------------------ //------------------------------------------------------------------------------------------------- /// Initialize the Menuload /// @param PhyAddr \b IN: the physical address for the menuload /// @param u32BufByteLen \b IN: the buffer length of the menu load commands //------------------------------------------------------------------------------------------------- DLL_PUBLIC void MApi_XC_EX_MLoad_Init(XC_DEVICE_ID *pDeviceId, MS_PHY PhyAddr, MS_U32 u32BufByteLen); //------------------------------------------------------------------------------------------------- /// Enable/Disable the MLoad /// @return void //------------------------------------------------------------------------------------------------- DLL_PUBLIC void MApi_XC_EX_MLoad_Enable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Get the status of MLoad //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_MLOAD_TYPE MApi_XC_EX_MLoad_GetStatus(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// write signal command to Mload and fire /// @param u32Addr \b IN: register /// @param u16Data \b IN: value /// @param u16Mask \b IN: mask //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_MLoad_WriteCmd_And_Fire(XC_DEVICE_ID *pDeviceId, MS_U32 u32Addr, MS_U16 u16Data, MS_U16 u16Mask); //------------------------------------------------------------------------------------------------- /// write multi commands to Mload and fire /// @param pu32Addr \b IN: buffer of register /// @param pu16Data \b IN: buffer of value /// @param pu16Mask \b IN: buffer of mask /// @param u16CmdCnt \b IN: counter of command //------------------------------------------------------------------------------------------------- // 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); //------------------------------ // Menuload Gamma Function //------------------------------ //------------------------------------------------------------------------------------------------- /// Initialize the Menuload Gamma /// @param PhyAddr \b IN: the physical address for the menuload /// @param u32BufByteLen \b IN: the buffer length of the menu load commands //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_MLG_Init(XC_DEVICE_ID *pDeviceId, MS_PHY PhyAddr, MS_U32 u32BufByteLen); //------------------------------------------------------------------------------------------------- /// Enable/Disable the Menuload Gamma /// @return void //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_MLG_Enable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Get the caps of Menuload Gamma /// @return TRUE if succeed, FALSE if failed //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_MLG_GetCaps(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Get the status of MLoad /// @return @ref MLG_TYPE //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_MLG_TYPE MApi_XC_EX_MLG_GetStatus(XC_DEVICE_ID *pDeviceId); //------------------------------ // For U4 set VOP data mux to VE //------------------------------ //------------------------------------------------------------------------------------------------- /// Select the source which need to connect to VE. /// @param eVOPSelOSD_MUX \b IN: The source need to connect to VE. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetOSD2VEMode(XC_DEVICE_ID *pDeviceId, XC_EX_VOP_SEL_OSD_XC2VE_MUX eVOPSelOSD_MUX); //------------------------------------------------------------------------------------------------- /// Enable or disable prefilter in Scaler. /// @param bEnable \b IN: True: Enable: pre-filter. Disable: pre-filter //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_IP2_PreFilter_Enable(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Get pixel data with RGB format. /// @param u16x \b IN: X coordinate /// @param u16Y \b IN: Y coordinate /// @param eWindow \b IN: The window for retrieving data. /// @return @ref u32r return the R data /// @return @ref u32g return the G data /// @return @ref u32b return the B data //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// During retrieve pixel data, system have a cursor on the screen. This function can keep the cursor on the screen. /// @param bEnable \b IN: Enable if you want to keep cursor on the screen //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_KeepPixelPointerAppear(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// @param eMemFmt \b IN: the format of memory /// Set memory format /// @ref MS_BOOL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_MemFmtEx(XC_DEVICE_ID *pDeviceId, XC_EX_MEM_FMT eMemFmt, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Get frame buffer less mode status /// @return @ref MS_BOOL retun the status about FrameBufferLess mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_IsRequestFrameBufferLessMode(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Set Flag to bypass software reset in MApi_XC_EX_Init() /// @param bFlag \b TRUE: initialize XC by skipping SW reset; FALSE: initialize XC in normal case /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SkipSWReset(XC_DEVICE_ID *pDeviceId, MS_BOOL bFlag); // DLL_PUBLIC void MApi_XC_EX_EnableRepWindowForFrameColor(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Set VOP Video and OSD Laler //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- /// Set OSD Layer in Box Project ( In TV chips, please use MApi_XC_SetVideoOnOSD) /// @param eVOPOSDLayer \b IN: OSD and Video layer selection /// @param eWindow \b IN: The window The alpha value of current window. //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// Get OSD Layer in Box Project /// @param eWindow \b IN: The window The alpha value of current window. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_VOP_OSD_LAYER_SEL MApi_XC_EX_GetOSDLayer(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Set Constant Alpha of Video //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- /// Set alpha value of video (now only support in box) /// @param u8Val \b IN: The alpha value of video with specific window /// @param eWindow \b IN: The window which need to be adjust //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetVideoAlpha(XC_DEVICE_ID *pDeviceId, MS_U8 u8Val, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Get alpha value of video (now only support in box) /// @param pu8Val \b IN: The alpha value of video with specific window /// @param eWindow \b IN: The alpha value of a window. //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_GetVideoAlpha(XC_DEVICE_ID *pDeviceId, MS_U8 *pu8Val, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Skip Wait Vsync /// @param eWindow \b IN: Enable /// @param Skip wait Vsync \b IN: Disable wait Vsync //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SkipWaitVsync( XC_DEVICE_ID *pDeviceId, MS_BOOL eWindow, MS_BOOL bIsSkipWaitVsyn); //------------------------------------------------------------------------------------------------- /// Select which DE to vop /// @param bFlag \b IN: @ref E_OP2VOP_DE_SEL /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OP2VOPDESel(XC_DEVICE_ID *pDeviceId, XC_EX_OP2VOP_DE_SEL eVopDESel); //------------------------------------------------------------------------------------------------- /// Set FRC Window /// @param e3dInputMode \b IN: @ref E_XC_3D_INPUT_MODE /// @param e3dOutputMode \b IN: @ref E_XC_3D_OUTPUT_MODE /// @param e3dPanelType \b IN: @ref E_XC_3D_PANEL_TYPE //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// Set two initial factors mode to improve quality in FBL /// @param bEnable \b IN: enable or disable two initial factors mode /// @param eWindow \b IN: @ref XC_EX_SCALER_WIN //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Enable_TwoInitFactor(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Get field packing mode support status /// @return TRUE(success) or FALSE(fail) //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_IsFieldPackingModeSupported(void); //------------------------------------------------------------------------------------------------- /// Pre Init before XC Init /// @param u16Type \b IN: @ref E_OP2VOP_DE_SEL /// @param para \b IN: parameter /// @param u32Length \b IN: size of parameter /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_PreInit( XC_DEVICE_ID *pDeviceId, XC_EX_PREINIT eType ,void* para, MS_U32 u32Length); //------------------------------------------------------------------------------------------------- /// Get RGB data from memory buffer /// @param eBufType \b IN: get RGB 8 bits or 10 bits format data /// @param pRect \b IN: the widnow for getting data area in memory, need to refer to pre-scaling /// @param pRectBuf \b IN: the buffer for getting data, the buffer typs must be the same as eBufType /// @param eWindow \b IN: get main or sub video data from memory //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// Set RGB data to memory buffer /// @param eBufType \b IN: set RGB 8 bits or 10 bits format data /// @param pDstRect \b IN: the widnow for setting data area in memory, need to refer to pre-scaling /// @param pSrcBuf \b IN: the buffer with RGB data for setting to memory, the buffer typs must be the same as eBufType /// @param pSrcRect \b IN: the widnow for picking data area in pSrcBuf /// @param eWindow \b IN: set main or sub video data to memory //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// Control the main window on or off /// @param bEnable \b IN: bEnable =1, Turn on the window; bEnable =0, Turn off the window //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableMainWindow(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); // Turn on/off main/sub window //------------------------------------------------------------------------------------------------- /// Enable sub window and control the window size /// @param *pstDispWin \b IN: Window type //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableSubWindow(XC_DEVICE_ID *pDeviceId, XC_EX_WINDOW_TYPE *pstDispWin); //------------------------------------------------------------------------------------------------- /// Disable sub window /// @param void \b IN: none //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_DisableSubWindow(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// Set pixel shift /// @param s8H \b IN: pixel shift H /// @param s8V \b IN: pixel shift V /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetPixelShift(XC_DEVICE_ID *pDeviceId, MS_S8 s8H, MS_S8 s8V); //------------------------------------------------------------------------------------------------- /// MApi_XC_SetVideoOnOSD /// @param E_VDO_ON_OSD_LAYER \b IN: set video show on which osd layer /// @param eWindow \b IN: set main or sub video data to memory /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// MApi_XC_SetOSDBlendingFormula /// @param enOsdIndex \b IN: osd index /// @param enType \b IN: osd blending type /// @param eWindow \b IN: blending with main or sub video /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- // usage: // MS_XC_REPORT_PIXELINFO stRepPixInfo; // memset(&stRepPixInfo, 0, sizeof(MS_XC_REPORT_PIXELINFO)); // stRepPixInfo.u32ReportPixelInfo_Version = XC_EX_REPORT_PIXELINFO_VERSION; // stRepPixInfo.u16ReportPixelInfo_Length = sizeof(MS_XC_REPORT_PIXELINFO); // stRepPixInfo.enStage = E_XC_GET_PIXEL_STAGE_AFTER_OSD; // stRepPixInfo.u16XStart = xxxx; // stRepPixInfo.u16XEnd = xxxx; // stRepPixInfo.u16YStart = xxxx; // stRepPixInfo.u16YEnd = xxxx; // MApi_XC_ReportPixelInfo(&stRepPixInfo); // /// Report Pixel Info /// @param pstRepPixInfo \b IN: pointer to struct MS_XC_REPORT_PIXELINFO /// @return TRUE if succeed, FALSE if failed //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_ReportPixelInfo(XC_DEVICE_ID *pDeviceId, XC_EX_REPORT_PIXELINFO *pstRepPixInfo); //------------------------------------------------------------------------------------------------- /// MApi_XC_SetScaling /// @param bEnable \b IN: set enable or disable /// @param eScaling_type \b IN: set scaling type, pre-scaling, post-scaling, both-scaling /// @param eVector_type \b IN: set H vector, v vector, and HV vector /// @param eWindow \b IN: set main or sub video data to memory //------------------------------------------------------------------------------------------------- // 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 ); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_SetMCDIBufferAddress /// @param u32FBAddress \b IN: frame buffer base addr /// @param u32FBSize \b IN: frame buffer size /// @param eType \b IN: set frame buffer for MCDI ME1 or ME2 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetMCDIBufferAddress(XC_DEVICE_ID *pDeviceId, MS_PHY u32FBAddress, MS_PHY u32FBSize, XC_EX_MCDI_TYPE eType); //------------------------------------------------------------------------------------------------- /// MApi_XC_EnableMCDI /// @param bEnable \b IN: enable/disable MCDI /// @param eType \b IN: control MCDI ME1 or ME2 or both //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableMCDI(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_MCDI_TYPE eType); //------------------------------------------------------------------------------------------------- /// MApi_XC_SendCmdToFRC /// @param u8Cmd \b IN: CMD /// @param count \b IN: parameter Counter /// @param pFRC_R2_Para \b IN: input parameter /// @return TRUE if succeed, FALSE if failed //------------------------------------------------------------------------------------------------- // 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 ); //------------------------------------------------------------------------------------------------- /// MApi_XC_GetMsgFromFRC /// @param u8Cmd \b IN: CMD /// @param pu8ParaCount \b IN: Counter /// @param pu8Para \b IN: input parameter /// @return TRUE if succeed, FALSE if failed //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_GetMsgFromFRC(XC_DEVICE_ID *pDeviceId, MS_U8* pu8Cmd, MS_U8* pu8ParaCount, MS_U8* pu8Para); //------------------------------------------------------------------------------------------------- /// Enable/Disable RW bank auto /// @param bEnable \b IN: enable or disable /// @param eWindow \b IN: which window we are going to enable or disable //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_EnableRWBankAuto(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Set XC W/R Bank Mapping Number /// @param u8Val \b IN: W/R bank mapping value /// @param eWindow \b IN: which window we are going to set //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetWRBankMappingNum(XC_DEVICE_ID *pDeviceId, MS_U8 u8Val, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Get XC W/R Bank Mapping Number /// @param eWindow \b IN: which window we are going to get /// @return MS_U8 W/R bank mapping number //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U8 MApi_XC_EX_GetWRBankMappingNum(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Get XC W/R Bank Mapping Number for Zap (including UC effect) /// @param eWindow \b IN: which window we are going to get /// @return MS_U8 W/R bank mapping number //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_U8 MApi_XC_EX_GetWRBankMappingNumForZap(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Set BOB mode /// @param bEnable \b IN: Enable BOB mode or not /// @param eWindow \b IN: which window we are going to set /// @return TRUE - succeed, FALSE - fail //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_SetBOBMode(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// Set XC force read bank /// @param bEnable \b IN: Enable force read bank or not /// @param u8Bank \b IN: Force read bank index /// @param eWindow \b IN: which window we are going to set //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetForceReadBank(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, MS_U8 u8Bank, XC_EX_SCALER_WIN eWindow); //------------------------------ // LD //------------------------------------------------------------------------------------------------- /// LD set panel type /// @param eLdPanelType \b IN: panel type /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_LD_Init(XC_DEVICE_ID *pDeviceId, XC_EX_LD_PANEL_TYPE eLDPanelType ); //------------------------------------------------------------------------------------------------- /// LD set memory address /// @param u8MIU \b IN: MIU Select /// @param u32LDFBase0 \b IN: LDF memeory0 address /// @param u32LDFBase1 \b IN: LDF memeory1 address /// @param u32LDBBase0 \b IN: LDB memeory0 address /// @param u32LDBBase1 \b IN: LDB memeory1 address /// @param u32EDGE2DBase \b IN: EDGE2D memeory address /// @param u32LEDoffset \b IN: LED data offset /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// set LD Level /// @param eMode \b IN: LD level /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_LD_SetLevel(XC_DEVICE_ID *pDeviceId, XC_EX_LD_MODE eMode); //------------------------------------------------------------------------------------------------- /// set LD backlight is zero flags /// @param eMode \b IN: backlight is zero flags /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_TurnoffLDBL(XC_DEVICE_ID *pDeviceId, MS_BOOL bturnoffbl); //------------------------------------------------------------------------------------------------- /// set not update SPI data Flags /// @param brefreshSpidata \b IN: refresh Spi data flags /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_notUpdateSPIDataFlags(XC_DEVICE_ID *pDeviceId, MS_BOOL brefreshSpidata); //------------------------------------------------------------------------------------------------- /// set User mode LD Flags /// @param buserLDFlags \b IN: User mode LD Flags /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_UsermodeLDFlags(XC_DEVICE_ID *pDeviceId, MS_BOOL buserLDFlags); //------------------------------------------------------------------------------------------------- /// set LD backlight level /// @param u8BLLeve \b IN: backlight level /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Set_BLLevel(XC_DEVICE_ID *pDeviceId, MS_U8 u8BLLevel); //------------------------------------------------------------------------------------------------- /// set XC bandwidth saving X-mode /// @param bEnable \b IN: enable or disable /// @param eWindow \b IN: which window we are going to enable or disable //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_Set_BWS_Mode(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// set FRC ColorPathCtrl /// @param epath_type \b IN: Select one of path in the FRC_COLOR_PATH_TYPE /// @param bEnable \b IN: enable or disable //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_FRC_ColorPathCtrl(XC_DEVICE_ID *pDeviceId, MS_U16 u16Path_sel, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// set FRC_OP2 SetRGBGain /// @param u16RedGain \b IN: Red Gain /// @param u16GreenGain \b IN: Green Gain /// @param u16BlueGain \b IN: Blue Gain //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_FRC_OP2_SetRGBGain(XC_DEVICE_ID *pDeviceId, MS_U16 u16RedGain, MS_U16 u16GreenGain, MS_U16 u16BlueGain); //------------------------------------------------------------------------------------------------- /// set FRC_OP2 SetRGBOffset /// @param u16RedOffset \b IN: Red Offset /// @param u16GreenOffset \b IN: Green Offset /// @param u16BlueOffset \b IN: Blue Offset //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_FRC_OP2_SetRGBOffset(XC_DEVICE_ID *pDeviceId, MS_U16 u16RedOffset, MS_U16 u16GreenOffset, MS_U16 u16BlueOffset); //------------------------------------------------------------------------------------------------- /// set FRC_OP2 SetDither /// @param u16dither \b IN: Dither setting //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_FRC_OP2_SetDither(XC_DEVICE_ID *pDeviceId, MS_U16 u16dither); //------------------------------------------------------------------------------------------------- /// set XC Bypass MFC /// @param eEnable \b IN: Enable or Disable /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_FRC_BypassMFC(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// MApi_XC_ForceReadFrame /// @param bEnable \b IN: enable/disable keep specified frame /// @param u16FrameIndex \b IN: control specified frame to show //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_ForceReadFrame(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, MS_U16 u16FrameIndex); //------------------------------------------------------------------------------------------------- /// MApi_XC_SetCsc /// @param bEnable \b IN: enable/disable keep specified frame /// @param eWindow \b IN: which window we are going to enable or disable //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_SetCsc( XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_SCALER_WIN eWindow ); //------------------------------------------------------------------------------------------------- /// Register PQ Set FPLL thresh mode function /// @param fpPQCB \b IN: function pointer of PQ set FPLL thresh mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_RegisterPQSetFPLLThreshMode(XC_DEVICE_ID *pDeviceId, void (*fpPQCB)(MS_U8 u8PQWin)); //------------------------------------------------------------------------------------------------- /// Get XC free run status /// @return TRUE if it is free run, FALSE if not //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_GetFreeRunStatus(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// MApi_XC_Get_DSForceIndexSupported /// @param eWindow \b IN: which window we are going to enable or disable //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Get_DSForceIndexSupported(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// MApi_XC_Set_DSForceIndex /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not /// @param u8Index \b IN: the index that needs to be forced in. /// @param eWindow \b IN: which window we are going to enable or disable //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// MApi_XC_Set_DSIndexSourceSelect /// @param eDSIdxSrc \b IN: choose where the DS index comes from. /// @param eWindow \b IN: which window we are going to enable or disable //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// MApi_XC_Set_DSForceIndex /// @param bEnable \b IN: ENABLE/DISABLE force DS index or not /// @param u8Index \b IN: the index that needs to be forced in. /// @param eWindow \b IN: which window we are going to enable or disable /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OSDC_InitSetting(XC_DEVICE_ID *pDeviceId, // XC_EX_OSDC_TGEN_Type E_XC_OSDC_TGEN_Type, // XC_EX_OSDC_TGEN_INFO *pstOC_Tgen_Cus, // XC_EX_OSDC_CTRL_INFO *pstOC_Ctrl); //------------------------------------------------------------------------------------------------- /// MApi_XC_Set_DSForceIndex /// @param eCtrl_type \b IN: ENABLE/DISABLE force DS index or not /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OSDC_Control(XC_DEVICE_ID *pDeviceId, MS_U32 eCtrl_type); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_OSDC_GetDstInfo /// @param pDstInfo \b IN: get the Desternation info /// @param u32SizeofDstInfo \b IN: size check /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_OSDC_GetDstInfo(XC_DEVICE_ID *pDeviceId, XC_EX_OSDC_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_OSDC_SetOutVfreqx10 /// @param u16Vfreq \b IN: output V freq x10 //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_OSDC_SetOutVfreqx10(XC_DEVICE_ID *pDeviceId, MS_U16 u16Vfreq); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_SetByPassOSDVsyncPos /// @param u16VsyncStart \b IN: OSD vsync start /// @param u16VsyncEnd \b IN: OSD vsync end //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_BYPASS_SetOSDVsyncPos(XC_DEVICE_ID *pDeviceId, MS_U16 u16VsyncStart, MS_U16 u16VsyncEnd); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_BYPASS_SetInputSrc /// @param bEnable \b IN: ENABLE/DISABLE bypass mode /// @param input \b IN: Select the input source for bypass mode //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_BYPASS_SetInputSrc(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable, XC_EX_BYPASS_InputSource input); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_BYPASS_SetCSC /// @param bEnable \b IN: ENABLE/DISABLE the color space convert //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_BYPASS_SetCSC(XC_DEVICE_ID *pDeviceId, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_SetSeamlessZapping /// @param pDeviceId \b IN: which XC device we are going to enable or disable /// @param eWindow \b IN: which window we are going to enable or disable /// @param bEnable \b IN: ENABLE/DISABLE seamless zapping /// @return E_XC_EX_RET_OK or E_XC_EX_RET_FAIL //------------------------------------------------------------------------------------------------- DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_SetSeamlessZapping(XC_DEVICE_ID *pDeviceId, XC_EX_SCALER_WIN eWindow, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_Vtrack_SetPayloadData /// @param u16Timecode \b IN: The time code is coded on 16 bits. It is calculated based on the number of days from January 1st. /// @param u8ID \b IN: Operator ID //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Vtrack_SetPayloadData(XC_DEVICE_ID *pDeviceId, MS_U16 u16Timecode, MS_U8 u8OperatorID); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_Vtrack_SetUserDefindedSetting /// @param bEnable \b IN: ENABLE/DISABLE Customized Setting /// @param pu8Setting \b IN: pointer to targert user definded setting data (include setting1 to setting3) //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Vtrack_SetUserDefindedSetting(XC_DEVICE_ID *pDeviceId, MS_BOOL bUserDefinded, MS_U8 *pu8Setting); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_Vtrack_Enable /// @param u8FrameRate \b IN: ENABLE/DISABLE The FrameRateIn is based on the output format of the box /// @param bEnable \b IN: ENABLE/DISABLE Vtrack //------------------------------------------------------------------------------------------------- // DLL_PUBLIC XC_EX_RETURN_VALUE MApi_XC_EX_Vtrack_Enable(XC_DEVICE_ID *pDeviceId, MS_U8 u8FrameRate, MS_BOOL bEnable); //------------------------------------------------------------------------------------------------- /// Pre-set the specific window with PQ info /// @param pstXC_SetWin_Info \b IN: the information of the window setting /// @param eWindow \b IN: which window we are going to set //------------------------------------------------------------------------------------------------- // DLL_PUBLIC void MApi_XC_EX_PreSetPQInfo(XC_DEVICE_ID *pDeviceId, XC_EX_SETWIN_INFO *pstXC_SetWin_Info, XC_EX_SCALER_WIN eWindow); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_Is_OP1_TestPattern_Enabled /// @return MS_BOOL: TRUE - enabled, FALSED - disabled //------------------------------------------------------------------------------------------------- // DLL_PUBLIC MS_BOOL MApi_XC_EX_Is_OP1_TestPattern_Enabled(XC_DEVICE_ID *pDeviceId); //------------------------------------------------------------------------------------------------- /// MApi_XC_EX_Set_OP1_TestPattern /// @param ePattern \b IN: select test pattern /// @param eMode \b IN: choose the patgen mode (only support E_XC_OP1_PATGEN_DISP_LB_MODE now) /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT //------------------------------------------------------------------------------------------------- // 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); //------------------------------------------------------------------------------------------------- /// MApi_XC_Set_WhiteBalance_Pattern /// @param bEnable \b IN: enable/disable white balance test pattern /// @param u16R_CR_Data \b IN: when enable white balance test pattern ,Data Generator for r_cr constant /// @param u16G_Y_Data \b IN: when enable white balance test pattern ,Data Generator for g_y constant /// @param u16B_CB_Data \b IN: when enable white balance test pattern ,Data Generator for b_cb constant /// @return E_APIXC_RET_OK or E_APIXC_RET_FAIL or E_APIXC_RET_FAIL_FUN_NOT_SUPPORT //------------------------------------------------------------------------------------------------- // 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); #ifdef __cplusplus } #endif #endif /* _API_XC_EX_H_ */