1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 79*53ee8cc1Swenshuai.xi // 80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81*53ee8cc1Swenshuai.xi // All rights reserved. 82*53ee8cc1Swenshuai.xi // 83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained 84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of 85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence 86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient. 87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure, 88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling, 89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential 90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the 91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom. 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 96*53ee8cc1Swenshuai.xi /// 97*53ee8cc1Swenshuai.xi /// @file apiVDEC_EX.h 98*53ee8cc1Swenshuai.xi /// @brief VDEC EXTENSION API FOR DUAL STREAMS 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /*! \defgroup VDEC VDEC Modules 103*53ee8cc1Swenshuai.xi <b> VDEC Arch for HW IP </b> \n 104*53ee8cc1Swenshuai.xi \image html VDEC_Arch_layer.PNG 105*53ee8cc1Swenshuai.xi 106*53ee8cc1Swenshuai.xi <b> VDEC API rule for Get Free Stream </b> \n 107*53ee8cc1Swenshuai.xi \image html GetFreeStreamID_pic.PNG 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi <b> VDEC API call flow for DTV </b> \n 110*53ee8cc1Swenshuai.xi \image html VDEC_DTV_pic1.PNG 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi <b> VDEC API call flow in SN vdplayer </b> \n 113*53ee8cc1Swenshuai.xi \image html apiVDEC_EX_SN_MM.png 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi <b> VDEC TEE API call flow in HK and Secure R2 </b> \n 116*53ee8cc1Swenshuai.xi \image html apiVDEC_EX_TEE.png 117*53ee8cc1Swenshuai.xi 118*53ee8cc1Swenshuai.xi <b> VDEC TEE API call flow in MSTplayer </b> \n 119*53ee8cc1Swenshuai.xi \image html apiVDEC_EX_Mstplayer.png 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi *! \defgroup VDEC_Init VDEC_Init 122*53ee8cc1Swenshuai.xi * \ingroup VDEC 123*53ee8cc1Swenshuai.xi *! \defgroup VDEC_Normal_decode VDEC Normal decode 124*53ee8cc1Swenshuai.xi * \ingroup VDEC 125*53ee8cc1Swenshuai.xi *! \defgroup Decode Decode 126*53ee8cc1Swenshuai.xi * \ingroup VDEC 127*53ee8cc1Swenshuai.xi *! \defgroup VDEC_Display_Q_Control VDEC Display Q_Control 128*53ee8cc1Swenshuai.xi * \ingroup VDEC 129*53ee8cc1Swenshuai.xi *! \defgroup VDEC_ES_buffer_manage VDEC ES buffer manage 130*53ee8cc1Swenshuai.xi * \ingroup VDEC 131*53ee8cc1Swenshuai.xi *! \defgroup VDEC_Flush_pattern VDEC Flush pattern 132*53ee8cc1Swenshuai.xi * \ingroup VDEC 133*53ee8cc1Swenshuai.xi *! \defgroup Get_information Getinformation 134*53ee8cc1Swenshuai.xi * \ingroup VDEC 135*53ee8cc1Swenshuai.xi *! \defgroup VdecEventGroup Vdec Event Group 136*53ee8cc1Swenshuai.xi * \ingroup VDEC 137*53ee8cc1Swenshuai.xi *! \defgroup VDEC_Hardware VDEC Hardware 138*53ee8cc1Swenshuai.xi * \ingroup VDEC 139*53ee8cc1Swenshuai.xi *! \defgroup VDEC_Enhanced VDEC Enhanced 140*53ee8cc1Swenshuai.xi * \ingroup VDEC 141*53ee8cc1Swenshuai.xi *! \defgroup VDEC_DS VDEC DS 142*53ee8cc1Swenshuai.xi * \ingroup VDEC 143*53ee8cc1Swenshuai.xi *! \defgroup VDEC_MHEG_DECODE_I_Frame VDEC MHEG DECODE I Frame 144*53ee8cc1Swenshuai.xi * \ingroup VDEC 145*53ee8cc1Swenshuai.xi *! \defgroup VdecDebug Vdec Debug 146*53ee8cc1Swenshuai.xi * \ingroup VDEC 147*53ee8cc1Swenshuai.xi *! \defgroup VDEC_TEE VDEC TEE 148*53ee8cc1Swenshuai.xi * \ingroup VDEC 149*53ee8cc1Swenshuai.xi *! \defgroup VdecCloseCaption Vdec Close Caption 150*53ee8cc1Swenshuai.xi * \ingroup VDEC 151*53ee8cc1Swenshuai.xi */ 152*53ee8cc1Swenshuai.xi 153*53ee8cc1Swenshuai.xi #ifndef _API_VDEC_EX_H_ 154*53ee8cc1Swenshuai.xi #define _API_VDEC_EX_H_ 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi 157*53ee8cc1Swenshuai.xi #include "UFO.h" 158*53ee8cc1Swenshuai.xi 159*53ee8cc1Swenshuai.xi #ifdef __cplusplus 160*53ee8cc1Swenshuai.xi extern "C" 161*53ee8cc1Swenshuai.xi { 162*53ee8cc1Swenshuai.xi #endif 163*53ee8cc1Swenshuai.xi 164*53ee8cc1Swenshuai.xi #if (!defined(MSOS_TYPE_NUTTX) && !defined(MSOS_TYPE_OPTEE)) || defined(SUPPORT_X_MODEL_FEATURE) 165*53ee8cc1Swenshuai.xi //#define UFO_PUBLIC_HEADER_212 166*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 167*53ee8cc1Swenshuai.xi // Macro and Define 168*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 169*53ee8cc1Swenshuai.xi #define MSIF_VDEC_EX_LIB_CODE {'V','E','X','_'} 170*53ee8cc1Swenshuai.xi #define MSIF_VDEC_EX_LIBVER {'0','5'} 171*53ee8cc1Swenshuai.xi #define MSIF_VDEC_EX_BUILDNUM {'0','3'} 172*53ee8cc1Swenshuai.xi #define MSIF_VDEC_EX_CHANGELIST {'0','0','6','9','3','0','7','7'} 173*53ee8cc1Swenshuai.xi 174*53ee8cc1Swenshuai.xi /// Version string. 175*53ee8cc1Swenshuai.xi #define VDEC_EX_API_VERSION /* Character String for DRV/API version */ \ 176*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 177*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 178*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 179*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 180*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 181*53ee8cc1Swenshuai.xi MSIF_CPU, \ 182*53ee8cc1Swenshuai.xi MSIF_VDEC_EX_LIB_CODE, /* IP__ */ \ 183*53ee8cc1Swenshuai.xi MSIF_VDEC_EX_LIBVER, /* 0.0 ~ Z.Z */ \ 184*53ee8cc1Swenshuai.xi MSIF_VDEC_EX_BUILDNUM, /* 00 ~ 99 */ \ 185*53ee8cc1Swenshuai.xi MSIF_VDEC_EX_CHANGELIST, /* CL# */ \ 186*53ee8cc1Swenshuai.xi MSIF_OS 187*53ee8cc1Swenshuai.xi 188*53ee8cc1Swenshuai.xi #define VDEC_EX_DEFAULT_DBG_MSG_LEVEL E_VDEC_EX_DBG_LEVEL_DBG 189*53ee8cc1Swenshuai.xi #define VDEC_EX_RVD_BROKEN_BY_US 0x80000000 190*53ee8cc1Swenshuai.xi #define VDEC_EX_MVD_PIC_START_FLAG 0x40000000 191*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 192*53ee8cc1Swenshuai.xi #define VDEC_EX_BIT(_bit_) (1 << (_bit_)) 193*53ee8cc1Swenshuai.xi #define VDEC_CAP_REPORT_SCAN_TYPE 194*53ee8cc1Swenshuai.xi #define VDEC_CAP_MULTI_DECODE 195*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR //enable HDR 196*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR_V2 //enable HDR version2 197*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR_V3 198*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V4 199*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V5 200*53ee8cc1Swenshuai.xi #elif defined(UFO_PUBLIC_HEADER_212) 201*53ee8cc1Swenshuai.xi #define VDEC_EX_BIT(_bit_) (1 << (_bit_)) 202*53ee8cc1Swenshuai.xi #define VDEC_CAP_REPORT_SCAN_TYPE 203*53ee8cc1Swenshuai.xi #define VDEC_CAP_DYNAMIC_CMA 204*53ee8cc1Swenshuai.xi #define VDEC_CAP_GET_CODEC_INFO //enable codec cap info 205*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_DV //enable HEVC dolby vision 206*53ee8cc1Swenshuai.xi #define VDEC_CAP_DISABLE_HEVC_10BITS // MApi_VDEC_EX_PreSetControl((VDEC_StreamId *)pHandle, E_VDEC_EX_USER_CMD_VDEC_FEATURE, E_VDEC_EX_FEATURE_FORCE_MAIN_PROFILE); 207*53ee8cc1Swenshuai.xi #define VDEC_CAP_MULTI_DECODE 208*53ee8cc1Swenshuai.xi #define VDEC_CAP_TVOS20_DTV_MODE 209*53ee8cc1Swenshuai.xi #elif defined(UFO_PUBLIC_HEADER_500_3) 210*53ee8cc1Swenshuai.xi #define VDEC_EX_BIT(_bit_) (1 << (_bit_)) 211*53ee8cc1Swenshuai.xi #define VDEC_CAP_REPORT_QOS_INFO // Enable VDEC FW to calculate qos info caps 212*53ee8cc1Swenshuai.xi #define VDEC_CAP_REPORT_SCAN_TYPE //Report Scan type on OMX 213*53ee8cc1Swenshuai.xi #define VDEC_CAP_DYNAMIC_CMA //enable Dynamic Cma 214*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR //enable HDR 215*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR_V2 //enable HDR version2 216*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR_V3 //enable HDR version3 217*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V4 218*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V5 219*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V6 220*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V7 221*53ee8cc1Swenshuai.xi #define VDEC_CAP_GET_CODEC_INFO //enable codec cap info 222*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_DV_XC_SHM_ADDR //enable OMX init VDEC/XC share memory 223*53ee8cc1Swenshuai.xi #define VDEC_CAP_DISABLE_HEVC_10BITS // MApi_VDEC_EX_PreSetControl((VDEC_StreamId *)pHandle, E_VDEC_EX_USER_CMD_VDEC_FEATURE, E_VDEC_EX_FEATURE_FORCE_MAIN_PROFILE); 224*53ee8cc1Swenshuai.xi #define VDEC_CAP_MULTI_DECODE //Support N decode 225*53ee8cc1Swenshuai.xi #define VDEC_CAP_TVOS20_DTV_MODE //Support TVOS 2.0 for DTV mode 226*53ee8cc1Swenshuai.xi #define VDEC_CAP_SUPPORT_REAL_FRAMERATE //All codec support GetRealFrameRate 227*53ee8cc1Swenshuai.xi #define VDEC_CAP_SUPPORT_ADJUST_DECODER_FREQUENCY //Adjust decoder frequency 228*53ee8cc1Swenshuai.xi #else 229*53ee8cc1Swenshuai.xi #define VDEC_EX_BIT(_bit_) (1 << (_bit_)) 230*53ee8cc1Swenshuai.xi #define VDEC_CAP_REPORT_QOS_INFO // Enable VDEC FW to calculate qos info caps 231*53ee8cc1Swenshuai.xi #define VDEC_CAP_REPORT_SCAN_TYPE 232*53ee8cc1Swenshuai.xi #define VDEC_CAP_DYNAMIC_CMA 233*53ee8cc1Swenshuai.xi #define VDEC_CAP_GET_CODEC_INFO //enable codec cap info 234*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_DV //enable HEVC dolby vision 235*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 236*53ee8cc1Swenshuai.xi #define VDEC_CAP_AVC_DV //enable AVC dolby vision 237*53ee8cc1Swenshuai.xi #endif 238*53ee8cc1Swenshuai.xi #define VDEC_CAP_DISABLE_HEVC_10BITS // MApi_VDEC_EX_PreSetControl((VDEC_StreamId *)pHandle, E_VDEC_EX_USER_CMD_VDEC_FEATURE, E_VDEC_EX_FEATURE_FORCE_MAIN_PROFILE); 239*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR //enable HDR 240*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR_V2 //enable HDR version2 241*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_HDR_V3 242*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V4 243*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 244*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V5 245*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V6//V6: for new DV display path(by XC shm) 246*53ee8cc1Swenshuai.xi #define VDEC_CAP_FRAME_INFO_EXT_V7 247*53ee8cc1Swenshuai.xi #endif 248*53ee8cc1Swenshuai.xi #define VDEC_CAP_HEVC_DV_XC_SHM_ADDR //enable OMX init VDEC/XC share memory 249*53ee8cc1Swenshuai.xi #define VDEC_CAP_BUFFER_INFO //enable set buffer info API 250*53ee8cc1Swenshuai.xi #define VDEC_CAP_HDR10_PERFRAME //enable hdr per frame API 251*53ee8cc1Swenshuai.xi #define VDEC_CAP_MULTI_DECODE 252*53ee8cc1Swenshuai.xi #define VDEC_CAP_DV_OTT_API 253*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700)||defined(UFO_PUBLIC_HEADER_500) 254*53ee8cc1Swenshuai.xi #define VDEC_CAP_SYSTEM_PREGET_API 255*53ee8cc1Swenshuai.xi #define VDEC_CAP_DV_OTT_API_V2 256*53ee8cc1Swenshuai.xi #endif 257*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) 258*53ee8cc1Swenshuai.xi #define VDEC_CAP_VP9_HDR 259*53ee8cc1Swenshuai.xi #endif 260*53ee8cc1Swenshuai.xi #endif 261*53ee8cc1Swenshuai.xi #ifndef VDEC_CAP_SYSTEM_PREGET_FB_MEM_USAGE_SIZE 262*53ee8cc1Swenshuai.xi #define VDEC_CAP_SYSTEM_PREGET_FB_MEM_USAGE_SIZE 263*53ee8cc1Swenshuai.xi #endif 264*53ee8cc1Swenshuai.xi #define VDEC_CAP_GET_SEQ_INFO // enable for E_VDEC_EX_USER_CMD_GET_SEQ_INFO 265*53ee8cc1Swenshuai.xi #define VDEC_CAP_REPORT_STR 266*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 267*53ee8cc1Swenshuai.xi // Type and Structure 268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 269*53ee8cc1Swenshuai.xi 270*53ee8cc1Swenshuai.xi #define VDEC_EX_FPA_TYPE_CHECKERBOARD_INTERLEAVING 0 /// FPA type: checker board interleaving 271*53ee8cc1Swenshuai.xi #define VDEC_EX_FPA_TYPE_COLUMN_INTERLEAVEING 1 /// FPA type: column interleaving 272*53ee8cc1Swenshuai.xi #define VDEC_EX_FPA_TYPE_ROW_INTERLEAVEING 2 /// FPA type: row interleaving 273*53ee8cc1Swenshuai.xi #define VDEC_EX_FPA_TYPE_SIDE_BY_SIDE_PACKING 3 /// FPA type: side by side packing 274*53ee8cc1Swenshuai.xi #define VDEC_EX_FPA_TYPE_TOP_BOTTOM_PACKING 4 /// FPA type: Top bottom packing 275*53ee8cc1Swenshuai.xi #define VDEC_EX_FPA_TYPE_TEMPORAL_INTERLEAVING_FRM 5 /// FPA type: temporal interleaving frame 276*53ee8cc1Swenshuai.xi 277*53ee8cc1Swenshuai.xi #define VDEC_MAX_DEC_NUM 2 278*53ee8cc1Swenshuai.xi 279*53ee8cc1Swenshuai.xi #define VDEC_MAX_PROFILE_CAP_INFO_NUM 10 280*53ee8cc1Swenshuai.xi 281*53ee8cc1Swenshuai.xi typedef enum 282*53ee8cc1Swenshuai.xi { 283*53ee8cc1Swenshuai.xi E_VDEC_EX_MAIN_STREAM = 0, 284*53ee8cc1Swenshuai.xi E_VDEC_EX_SUB_STREAM, 285*53ee8cc1Swenshuai.xi E_VDEC_EX_N_STREAM, 286*53ee8cc1Swenshuai.xi } VDEC_EX_Stream; 287*53ee8cc1Swenshuai.xi 288*53ee8cc1Swenshuai.xi typedef enum 289*53ee8cc1Swenshuai.xi { 290*53ee8cc1Swenshuai.xi E_VDEC_EX_INPUT_TSP_0 = 0, 291*53ee8cc1Swenshuai.xi E_VDEC_EX_INPUT_TSP_1, 292*53ee8cc1Swenshuai.xi E_VDEC_EX_INPUT_TSP_2, 293*53ee8cc1Swenshuai.xi E_VDEC_EX_INPUT_TSP_3, 294*53ee8cc1Swenshuai.xi 295*53ee8cc1Swenshuai.xi E_VDEC_EX_INPUT_TSP_NONE = 0xFF, 296*53ee8cc1Swenshuai.xi } VDEC_EX_INPUT_TSP; 297*53ee8cc1Swenshuai.xi 298*53ee8cc1Swenshuai.xi typedef enum 299*53ee8cc1Swenshuai.xi { 300*53ee8cc1Swenshuai.xi E_VDEC_EX_DISPLAY_PATH_MVOP_MAIN = 0, 301*53ee8cc1Swenshuai.xi E_VDEC_EX_DISPLAY_PATH_MVOP_SUB, 302*53ee8cc1Swenshuai.xi 303*53ee8cc1Swenshuai.xi E_VDEC_EX_DISPLAY_PATH_NONE = 0xFF, 304*53ee8cc1Swenshuai.xi } VDEC_EX_DISPLAY_PATH; 305*53ee8cc1Swenshuai.xi 306*53ee8cc1Swenshuai.xi typedef struct 307*53ee8cc1Swenshuai.xi { 308*53ee8cc1Swenshuai.xi MS_BOOL bConnect; ///Status for Display path 309*53ee8cc1Swenshuai.xi VDEC_EX_DISPLAY_PATH eMvopPath;///MVOP Display path 310*53ee8cc1Swenshuai.xi } VDEC_EX_DynmcDispPath;///Dynamic setup Display path 311*53ee8cc1Swenshuai.xi 312*53ee8cc1Swenshuai.xi typedef enum 313*53ee8cc1Swenshuai.xi { 314*53ee8cc1Swenshuai.xi E_VDEC_EX_DISPLAY_MODE_MCU, 315*53ee8cc1Swenshuai.xi E_VDEC_EX_DISPLAY_MODE_HARDWIRE, 316*53ee8cc1Swenshuai.xi } VDEC_EX_DISPLAY_MODE; 317*53ee8cc1Swenshuai.xi 318*53ee8cc1Swenshuai.xi typedef enum 319*53ee8cc1Swenshuai.xi { 320*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_DEFAULT, 321*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_HEVC_HD_LEVEL41 = 0x100, 322*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_HEVC_FHD_LEVEL41 = 0x120, 323*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_HEVC_FHD_LEVEL51, 324*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_HEVC_UHD_LEVEL51 = 0x140, 325*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_H264_HD_LEVEL40 = 0x200, 326*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_H264_FHD_LEVEL40 = 0x220, 327*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEC_H264_UHD_LEVEL50 = 0x240 328*53ee8cc1Swenshuai.xi } VDEC_EX_TASK_SPEC; 329*53ee8cc1Swenshuai.xi 330*53ee8cc1Swenshuai.xi /// decoder event enumerator. 331*53ee8cc1Swenshuai.xi typedef enum 332*53ee8cc1Swenshuai.xi { 333*53ee8cc1Swenshuai.xi /// turn off all event 334*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_OFF = 0x00, 335*53ee8cc1Swenshuai.xi /// display one frame/field 336*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DISP_ONE = VDEC_EX_BIT(0), 337*53ee8cc1Swenshuai.xi /// repeat one frame/field 338*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DISP_REPEAT = VDEC_EX_BIT(1), 339*53ee8cc1Swenshuai.xi /// one CC data should be displayed 340*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DISP_WITH_CC = VDEC_EX_BIT(2), 341*53ee8cc1Swenshuai.xi /// decode one frame 342*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DEC_ONE = VDEC_EX_BIT(3), 343*53ee8cc1Swenshuai.xi /// decode one I frame 344*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DEC_I = VDEC_EX_BIT(4), 345*53ee8cc1Swenshuai.xi /// decode error 346*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DEC_ERR = VDEC_EX_BIT(5), 347*53ee8cc1Swenshuai.xi /// display information is changed 348*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DISP_INFO_CHG = VDEC_EX_BIT(6), 349*53ee8cc1Swenshuai.xi /// find user data 350*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_USER_DATA_FOUND = VDEC_EX_BIT(7), 351*53ee8cc1Swenshuai.xi /// display information ready after be changed 352*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DISP_INFO_RDY = VDEC_EX_BIT(8), 353*53ee8cc1Swenshuai.xi /// first frame decoded 354*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_FIRST_FRAME = VDEC_EX_BIT(9), 355*53ee8cc1Swenshuai.xi /// first picture found 356*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_PIC_FOUND = VDEC_EX_BIT(10), 357*53ee8cc1Swenshuai.xi /// video is ready to display (no garbage and avsync done) 358*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_VIDEO_UNMUTE = VDEC_EX_BIT(11), 359*53ee8cc1Swenshuai.xi /// new sequence header found 360*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_SEQ_HDR_FOUND = VDEC_EX_BIT(12), 361*53ee8cc1Swenshuai.xi /// active format description found 362*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_AFD_FOUND = VDEC_EX_BIT(13), 363*53ee8cc1Swenshuai.xi // ES data invalid 364*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_ES_DATA_ERR = VDEC_EX_BIT(14), 365*53ee8cc1Swenshuai.xi /// speed up the un-mute screen on XC. 366*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_XC_LOW_DEALY = VDEC_EX_BIT(16), 367*53ee8cc1Swenshuai.xi /// VDEC FW need driver to handle CMA action(allocate/release) 368*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DEC_CMA_ACTION = VDEC_EX_BIT(17), 369*53ee8cc1Swenshuai.xi /// PTS_DISCONTINUE. 370*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_PTS_DISCONTINUE = VDEC_EX_BIT(18), 371*53ee8cc1Swenshuai.xi /// Display finish 372*53ee8cc1Swenshuai.xi E_VDEC_EX_EVENT_DISP_FINISH = VDEC_EX_BIT(19), 373*53ee8cc1Swenshuai.xi } VDEC_EX_EventFlag; 374*53ee8cc1Swenshuai.xi 375*53ee8cc1Swenshuai.xi //define VDEC CB type 376*53ee8cc1Swenshuai.xi typedef enum 377*53ee8cc1Swenshuai.xi { 378*53ee8cc1Swenshuai.xi E_VDEC_EX_CB_MAIN = 0, 379*53ee8cc1Swenshuai.xi E_VDEC_EX_CB_SUB, 380*53ee8cc1Swenshuai.xi } VDEC_EX_CB_TYPE; 381*53ee8cc1Swenshuai.xi 382*53ee8cc1Swenshuai.xi /// codec type enumerator 383*53ee8cc1Swenshuai.xi typedef enum 384*53ee8cc1Swenshuai.xi { 385*53ee8cc1Swenshuai.xi ///unsupported codec type 386*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_NONE = 0, 387*53ee8cc1Swenshuai.xi ///MPEG 1/2 388*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_MPEG2, 389*53ee8cc1Swenshuai.xi ///H263 (short video header) 390*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_H263, 391*53ee8cc1Swenshuai.xi ///MPEG4 (default) 392*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_MPEG4, 393*53ee8cc1Swenshuai.xi ///MPEG4 (Divx311) 394*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_DIVX311, 395*53ee8cc1Swenshuai.xi ///MPEG4 (Divx412) 396*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_DIVX412, 397*53ee8cc1Swenshuai.xi ///FLV 398*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_FLV, 399*53ee8cc1Swenshuai.xi ///VC1 advanced profile (VC1) 400*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_VC1_ADV, 401*53ee8cc1Swenshuai.xi ///VC1 main profile (RCV) 402*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_VC1_MAIN, 403*53ee8cc1Swenshuai.xi ///Real Video version 8 404*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_RV8, 405*53ee8cc1Swenshuai.xi ///Real Video version 9 and 10 406*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_RV9, 407*53ee8cc1Swenshuai.xi ///H264 408*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_H264, 409*53ee8cc1Swenshuai.xi ///AVS 410*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_AVS, 411*53ee8cc1Swenshuai.xi ///MJPEG 412*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_MJPEG, 413*53ee8cc1Swenshuai.xi ///MVC 414*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_MVC, 415*53ee8cc1Swenshuai.xi ///VP8 416*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_VP8, 417*53ee8cc1Swenshuai.xi ///HEVC 418*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_HEVC, 419*53ee8cc1Swenshuai.xi ///VP9 420*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_VP9, 421*53ee8cc1Swenshuai.xi ///HEVC_DV 422*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_HEVC_DV, 423*53ee8cc1Swenshuai.xi ///AVC_DV 424*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_H264_DV, 425*53ee8cc1Swenshuai.xi 426*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_TYPE_NUM 427*53ee8cc1Swenshuai.xi } VDEC_EX_CodecType; 428*53ee8cc1Swenshuai.xi 429*53ee8cc1Swenshuai.xi /// input source select enumerator 430*53ee8cc1Swenshuai.xi typedef enum 431*53ee8cc1Swenshuai.xi { 432*53ee8cc1Swenshuai.xi ///DTV mode 433*53ee8cc1Swenshuai.xi E_VDEC_EX_SRC_MODE_DTV = 0, 434*53ee8cc1Swenshuai.xi ///TS file mode 435*53ee8cc1Swenshuai.xi E_VDEC_EX_SRC_MODE_TS_FILE, 436*53ee8cc1Swenshuai.xi ///generic file mode 437*53ee8cc1Swenshuai.xi E_VDEC_EX_SRC_MODE_FILE, 438*53ee8cc1Swenshuai.xi /// TS file and dual ES buffer mode 439*53ee8cc1Swenshuai.xi E_VDEC_EX_SRC_MODE_TS_FILE_DUAL_ES, 440*53ee8cc1Swenshuai.xi ///generic file and dual ES buffer mode 441*53ee8cc1Swenshuai.xi E_VDEC_EX_SRC_MODE_FILE_DUAL_ES, 442*53ee8cc1Swenshuai.xi } VDEC_EX_SrcMode; 443*53ee8cc1Swenshuai.xi 444*53ee8cc1Swenshuai.xi /// function return enumerator 445*53ee8cc1Swenshuai.xi typedef enum 446*53ee8cc1Swenshuai.xi { 447*53ee8cc1Swenshuai.xi ///failed 448*53ee8cc1Swenshuai.xi E_VDEC_EX_FAIL = 0, 449*53ee8cc1Swenshuai.xi ///success 450*53ee8cc1Swenshuai.xi E_VDEC_EX_OK, 451*53ee8cc1Swenshuai.xi ///invalid parameter 452*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_INVALID_PARAM, 453*53ee8cc1Swenshuai.xi ///access not allow 454*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_ILLEGAL_ACCESS, 455*53ee8cc1Swenshuai.xi ///hardware abnormal 456*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_HARDWARE_BREAKDOWN, 457*53ee8cc1Swenshuai.xi ///unsupported 458*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_UNSUPPORTED, 459*53ee8cc1Swenshuai.xi ///timeout 460*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_TIMEOUT, 461*53ee8cc1Swenshuai.xi ///not ready 462*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_NOT_READY, 463*53ee8cc1Swenshuai.xi ///not initial 464*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_NOT_INIT, 465*53ee8cc1Swenshuai.xi ///not exit after last initialization 466*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_NOT_EXIT, 467*53ee8cc1Swenshuai.xi ///not running, counter does not change 468*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_NOT_RUNNING, 469*53ee8cc1Swenshuai.xi ///max value 470*53ee8cc1Swenshuai.xi E_VDEC_EX_RET_NUM, 471*53ee8cc1Swenshuai.xi } VDEC_EX_Result; 472*53ee8cc1Swenshuai.xi 473*53ee8cc1Swenshuai.xi /// Action enumerator of display commands 474*53ee8cc1Swenshuai.xi typedef enum 475*53ee8cc1Swenshuai.xi { 476*53ee8cc1Swenshuai.xi /// Action- display frame 477*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_ACTION_DISPLAY = 1, 478*53ee8cc1Swenshuai.xi /// Action - release frame 479*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_ACTION_RELEASE, 480*53ee8cc1Swenshuai.xi } VDEC_EX_DispCmdAction; 481*53ee8cc1Swenshuai.xi 482*53ee8cc1Swenshuai.xi /// Freeze picture select after flush decoder 483*53ee8cc1Swenshuai.xi typedef enum 484*53ee8cc1Swenshuai.xi { 485*53ee8cc1Swenshuai.xi /// Freeze at current display picture 486*53ee8cc1Swenshuai.xi E_VDEC_EX_FREEZE_AT_CUR_PIC = 1, 487*53ee8cc1Swenshuai.xi /// freeze at the latest decode picture 488*53ee8cc1Swenshuai.xi E_VDEC_EX_FREEZE_AT_LAST_PIC, 489*53ee8cc1Swenshuai.xi /// freeze current display picture and clear decode info 490*53ee8cc1Swenshuai.xi E_VDEC_EX_FREEZE_AT_CUR_PIC_AND_CLEAR_DECODE_INFO, 491*53ee8cc1Swenshuai.xi } VDEC_EX_FreezePicSelect; 492*53ee8cc1Swenshuai.xi 493*53ee8cc1Swenshuai.xi /// error code enumerator 494*53ee8cc1Swenshuai.xi typedef enum 495*53ee8cc1Swenshuai.xi { 496*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_BASE = 0x01000000, 497*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_NOT_SUPPORT, 498*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_ILLEGAL_ACCESS, 499*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_FRMRATE_NOT_SUPPORT, 500*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_DIVX_PLUS_UNSUPPORTED, 501*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_EXCEED_HW_CAP, ///over hw capability ex : avc 4k + avc 4k 502*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_CODEC_COMPARE_CASE1, ///Hash key error 503*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_CODEC_COMPARE_CASE2, ///Hash key error 504*53ee8cc1Swenshuai.xi E_VDEC_EX_ERR_CODE_STR_RESUME_WAIT_RESET, ///str mm not support yet, need ap reset vdec 505*53ee8cc1Swenshuai.xi 506*53ee8cc1Swenshuai.xi 507*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_BASE = 0x02000000, 508*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_SHAPE, 509*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_USED_SPRITE, 510*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_NOT_8_BIT, //error_status : bits per pixel 511*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_NERPRED_ENABLE, 512*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_REDUCED_RES_ENABLE, 513*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_SCALABILITY, 514*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_OTHER, 515*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_H263_ERROR, 516*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_RES_NOT_SUPPORT, //error_status : none 517*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_MPEG4_NOT_SUPPORT, //error_status : none 518*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_PROFILE_NOT_SUPPORT , ///< error_status : none 519*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_RCV_ERROR_OCCUR, 520*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_VC1_NOT_SUPPORT, //error_status : none 521*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_UNKNOW_CODEC_NOT_SUPPORT , ///< error_status : none 522*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_SLQ_TBL_NOT_SUPPORT , ///< error_status : none 523*53ee8cc1Swenshuai.xi E_VDEC_EX_MVD_ERR_CODE_FRAME_BUF_NOT_ENOUGH , ///< error_status : none 524*53ee8cc1Swenshuai.xi 525*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_BASE = 0x03000000, 526*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_GENERAL_BASE = (0x0000|E_VDEC_EX_HVD_ERR_CODE_BASE), 527*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_OUT_OF_SPEC , 528*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_UNKNOW_ERR, 529*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_HW_BREAK_DOWN, 530*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_HW_DEC_TIMEOUT, 531*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_OUT_OF_MEMORY, 532*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_UNKNOWN_CODEC, 533*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RES_NOT_SUPPORT, //resoultion not support 534*53ee8cc1Swenshuai.xi // AVC 535*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_BASE = (0x1000|E_VDEC_EX_HVD_ERR_CODE_BASE), 536*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_SPS_BROKEN, 537*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_SPS_NOT_IN_SPEC, 538*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_SPS_NOT_ENOUGH_FRM, // DPB size at specified level is smaller than the specified number of reference frames. This is not allowed 539*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_PPS_BROKEN, // PPS is not valid 540*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_REF_LIST, 541*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_NO_REF, 542*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVC_RES, // out of supported resolution 543*53ee8cc1Swenshuai.xi // AVS 544*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVS_BASE = (0x2000|E_VDEC_EX_HVD_ERR_CODE_BASE), 545*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_AVS_RES, // out of supported resolution 546*53ee8cc1Swenshuai.xi // RM 547*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_BASE = (0x3000|E_VDEC_EX_HVD_ERR_CODE_BASE), 548*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_PACKET_HEADER, 549*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_FRAME_HEADER, 550*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_SLICE_HEADER, 551*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_BYTE_CNT, 552*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_DISP_TIMEOUT, 553*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_NO_REF, 554*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_RES, // out of supported resolution 555*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_VLC, 556*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_RM_SIZE_OUT_FB_LAYOUT, 557*53ee8cc1Swenshuai.xi 558*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_BASE = 0x04000000, 559*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_PACKET_HEADER, ///< packet header version error 560*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_FRAME_HEADER, ///< frame type error 561*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_SLICE_HEADER, ///<slice header error 562*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_DECODE_TIMEOUT,///< decode MB timeout 563*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_OUT_OF_MEMORY, ///< frame buffer is out of memory 564*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_BYTE_POS, ///< can not find in ID table 565*53ee8cc1Swenshuai.xi E_VDEC_EX_RVD_ERR_CODE_DISPLAY_TIMEOUT, 566*53ee8cc1Swenshuai.xi 567*53ee8cc1Swenshuai.xi E_VDEC_EX_MJPEG_ERR_CODE_BASE = 0x05000000, 568*53ee8cc1Swenshuai.xi E_VDEC_EX_HVD_ERR_CODE_MJPEG_RES, 569*53ee8cc1Swenshuai.xi } VDEC_EX_ErrCode; 570*53ee8cc1Swenshuai.xi 571*53ee8cc1Swenshuai.xi /// frame rate conversion mode enumerator 572*53ee8cc1Swenshuai.xi typedef enum 573*53ee8cc1Swenshuai.xi { 574*53ee8cc1Swenshuai.xi /// disable FRC mode. 575*53ee8cc1Swenshuai.xi E_VDEC_EX_FRC_NORMAL = 0, 576*53ee8cc1Swenshuai.xi /// output rate is twice of input rate (ex. 30p to 60p) 577*53ee8cc1Swenshuai.xi E_VDEC_EX_FRC_DISP_TWICE, 578*53ee8cc1Swenshuai.xi /// 3:2 pulldown mode (ex. 24p to 60i or 60p) 579*53ee8cc1Swenshuai.xi E_VDEC_EX_FRC_3_2_PULLDOWN, 580*53ee8cc1Swenshuai.xi /// PAL to NTSC conversion (50i to 60i) 581*53ee8cc1Swenshuai.xi E_VDEC_EX_FRC_PAL_TO_NTSC, 582*53ee8cc1Swenshuai.xi /// NTSC to PAL conversion (60i to 50i) 583*53ee8cc1Swenshuai.xi E_VDEC_EX_FRC_NTSC_TO_PAL, 584*53ee8cc1Swenshuai.xi /// output rate 50P ->60P 585*53ee8cc1Swenshuai.xi E_VDEC_EX_FRC_MODE_50P_60P, 586*53ee8cc1Swenshuai.xi /// output rate 60P ->50P 587*53ee8cc1Swenshuai.xi E_VDEC_EX_FRC_MODE_60P_50P, 588*53ee8cc1Swenshuai.xi } VDEC_EX_FrcMode; 589*53ee8cc1Swenshuai.xi 590*53ee8cc1Swenshuai.xi /// trick decode mode enumerator 591*53ee8cc1Swenshuai.xi typedef enum 592*53ee8cc1Swenshuai.xi { 593*53ee8cc1Swenshuai.xi /// decode all frame 594*53ee8cc1Swenshuai.xi E_VDEC_EX_TRICK_DEC_ALL = 0, 595*53ee8cc1Swenshuai.xi /// decode all except of non-reference frame 596*53ee8cc1Swenshuai.xi E_VDEC_EX_TRICK_DEC_IP, 597*53ee8cc1Swenshuai.xi /// only decode I frame 598*53ee8cc1Swenshuai.xi E_VDEC_EX_TRICK_DEC_I, 599*53ee8cc1Swenshuai.xi E_VDEC_EX_TRICK_DEC_NUM 600*53ee8cc1Swenshuai.xi } VDEC_EX_TrickDec; 601*53ee8cc1Swenshuai.xi 602*53ee8cc1Swenshuai.xi /// display speed setting enumerator 603*53ee8cc1Swenshuai.xi typedef enum 604*53ee8cc1Swenshuai.xi { 605*53ee8cc1Swenshuai.xi /// default speed type 606*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEED_DEFAULT = 0, 607*53ee8cc1Swenshuai.xi /// fast display 608*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEED_FAST, 609*53ee8cc1Swenshuai.xi /// slow display 610*53ee8cc1Swenshuai.xi E_VDEC_EX_SPEED_SLOW, 611*53ee8cc1Swenshuai.xi } VDEC_EX_SpeedType; 612*53ee8cc1Swenshuai.xi 613*53ee8cc1Swenshuai.xi /// The display speed enumerator 614*53ee8cc1Swenshuai.xi typedef enum 615*53ee8cc1Swenshuai.xi { 616*53ee8cc1Swenshuai.xi /// Normal display speed. 617*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_SPEED_1X = 1, 618*53ee8cc1Swenshuai.xi /// 2X 619*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_SPEED_2X = 2, 620*53ee8cc1Swenshuai.xi /// 4X 621*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_SPEED_4X = 4, 622*53ee8cc1Swenshuai.xi /// 8X 623*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_SPEED_8X = 8, 624*53ee8cc1Swenshuai.xi /// 16X 625*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_SPEED_16X = 16, 626*53ee8cc1Swenshuai.xi /// 32X 627*53ee8cc1Swenshuai.xi E_VDEC_EX_DISP_SPEED_32X = 32, 628*53ee8cc1Swenshuai.xi } VDEC_EX_DispSpeed; 629*53ee8cc1Swenshuai.xi 630*53ee8cc1Swenshuai.xi /// motion JPEG down scale factor enumerator 631*53ee8cc1Swenshuai.xi typedef enum 632*53ee8cc1Swenshuai.xi { 633*53ee8cc1Swenshuai.xi ///original size 634*53ee8cc1Swenshuai.xi E_VDEC_EX_MJPEG_SCALE_1to1 = 0, 635*53ee8cc1Swenshuai.xi ///down scale to 1/2 636*53ee8cc1Swenshuai.xi E_VDEC_EX_MJPEG_SCALE_2to1, 637*53ee8cc1Swenshuai.xi ///down scale to 1/4 638*53ee8cc1Swenshuai.xi E_VDEC_EX_MJPEG_SCALE_4to1, 639*53ee8cc1Swenshuai.xi ///down scale to 1/8 640*53ee8cc1Swenshuai.xi E_VDEC_EX_MJPEG_SCALE_8to1, 641*53ee8cc1Swenshuai.xi } VDEC_EX_MJpegScaleFactor; 642*53ee8cc1Swenshuai.xi 643*53ee8cc1Swenshuai.xi /// timestamp type of command queue 644*53ee8cc1Swenshuai.xi typedef enum 645*53ee8cc1Swenshuai.xi { 646*53ee8cc1Swenshuai.xi ///without timestamp information 647*53ee8cc1Swenshuai.xi E_VDEC_EX_TIME_STAMP_NONE = 0, 648*53ee8cc1Swenshuai.xi ///PTS (Presentation Time Stamp) 649*53ee8cc1Swenshuai.xi E_VDEC_EX_TIME_STAMP_PTS, 650*53ee8cc1Swenshuai.xi ///DTS (Decode Time Stamp) 651*53ee8cc1Swenshuai.xi E_VDEC_EX_TIME_STAMP_DTS, 652*53ee8cc1Swenshuai.xi ///STS (Sorted Time Stamp) 653*53ee8cc1Swenshuai.xi E_VDEC_EX_TIME_STAMP_STS, 654*53ee8cc1Swenshuai.xi ///PTS_RVU (Presentation Time Stamp) 655*53ee8cc1Swenshuai.xi E_VDEC_EX_TIME_STAMP_PTS_MPEG_DIRECTV_SD, 656*53ee8cc1Swenshuai.xi ///DTS_RVU (Decode Time Stamp) 657*53ee8cc1Swenshuai.xi E_VDEC_EX_TIME_STAMP_DTS_MPEG_DIRECTV_SD, 658*53ee8cc1Swenshuai.xi } VDEC_EX_TimeStampType; 659*53ee8cc1Swenshuai.xi 660*53ee8cc1Swenshuai.xi /// The debug level of VDEC 661*53ee8cc1Swenshuai.xi typedef enum 662*53ee8cc1Swenshuai.xi { 663*53ee8cc1Swenshuai.xi /// disable all uart message. 664*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_LEVEL_NONE = 0, 665*53ee8cc1Swenshuai.xi /// Only output error message 666*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_LEVEL_ERR, 667*53ee8cc1Swenshuai.xi /// output general message, and above. 668*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_LEVEL_INFO, 669*53ee8cc1Swenshuai.xi /// output debug message, and above. 670*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_LEVEL_DBG, 671*53ee8cc1Swenshuai.xi /// output function tracing message, and above. 672*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_LEVEL_TRACE, 673*53ee8cc1Swenshuai.xi /// output FW message. 674*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_LEVEL_FW, 675*53ee8cc1Swenshuai.xi } VDEC_EX_DbgLevel; 676*53ee8cc1Swenshuai.xi 677*53ee8cc1Swenshuai.xi /// Type of FW source 678*53ee8cc1Swenshuai.xi typedef enum 679*53ee8cc1Swenshuai.xi { 680*53ee8cc1Swenshuai.xi E_VDEC_EX_FW_SOURCE_NONE, 681*53ee8cc1Swenshuai.xi E_VDEC_EX_FW_SOURCE_DRAM, 682*53ee8cc1Swenshuai.xi E_VDEC_EX_FW_SOURCE_FLASH, 683*53ee8cc1Swenshuai.xi }VDEC_EX_FWSourceType; 684*53ee8cc1Swenshuai.xi 685*53ee8cc1Swenshuai.xi /// Format of CC (Closed Caption) 686*53ee8cc1Swenshuai.xi typedef enum 687*53ee8cc1Swenshuai.xi { 688*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_NONE = 0x00, 689*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_608 = 0x01, //For CC608 or 157 690*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_708 = 0x02, //For CC708 691*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_UNPACKED = 0x03, 692*53ee8cc1Swenshuai.xi } VDEC_EX_CCFormat; 693*53ee8cc1Swenshuai.xi 694*53ee8cc1Swenshuai.xi /// Type of CC 695*53ee8cc1Swenshuai.xi typedef enum 696*53ee8cc1Swenshuai.xi { 697*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_TYPE_NONE = 0, 698*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_TYPE_NTSC_FIELD1 = 1, 699*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_TYPE_NTSC_FIELD2 = 2, 700*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_TYPE_DTVCC = 3, 701*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_TYPE_NTSC_TWOFIELD = 4, 702*53ee8cc1Swenshuai.xi } VDEC_EX_CCType; 703*53ee8cc1Swenshuai.xi 704*53ee8cc1Swenshuai.xi typedef enum 705*53ee8cc1Swenshuai.xi { 706*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_GET_BUFF_START = 0x1, 707*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_GET_BUFF_SIZE, 708*53ee8cc1Swenshuai.xi E_VDEC_EX_CC_GET_708_ENABLE 709*53ee8cc1Swenshuai.xi } VDEC_EX_CCInfoCmd; 710*53ee8cc1Swenshuai.xi 711*53ee8cc1Swenshuai.xi typedef enum 712*53ee8cc1Swenshuai.xi { 713*53ee8cc1Swenshuai.xi E_VDEC_EX_STAGE_STOP = 0, 714*53ee8cc1Swenshuai.xi E_VDEC_EX_STAGE_INIT, 715*53ee8cc1Swenshuai.xi E_VDEC_EX_STAGE_PLAY, 716*53ee8cc1Swenshuai.xi E_VDEC_EX_STAGE_PAUSE, 717*53ee8cc1Swenshuai.xi } VDEC_EX_Stage; 718*53ee8cc1Swenshuai.xi 719*53ee8cc1Swenshuai.xi 720*53ee8cc1Swenshuai.xi typedef enum 721*53ee8cc1Swenshuai.xi { 722*53ee8cc1Swenshuai.xi /// Used before MApi_VDEC_EX_Flush(). 723*53ee8cc1Swenshuai.xi E_VDEC_EX_PATTERN_FLUSH = 0, 724*53ee8cc1Swenshuai.xi /// Used after MApi_VDEC_EX_EnableLastFrameShow(). 725*53ee8cc1Swenshuai.xi E_VDEC_EX_PATTERN_FILEEND, 726*53ee8cc1Swenshuai.xi }VDEC_EX_PatternType; 727*53ee8cc1Swenshuai.xi 728*53ee8cc1Swenshuai.xi typedef enum 729*53ee8cc1Swenshuai.xi { 730*53ee8cc1Swenshuai.xi E_VDEC_EX_FW_STATUS_FLAG_NONE = 0, 731*53ee8cc1Swenshuai.xi E_VDEC_EX_FW_STATUS_FLAG_SEEK_TO_I = VDEC_EX_BIT(0), 732*53ee8cc1Swenshuai.xi }VDEC_EX_FW_STATUS_FLAG; 733*53ee8cc1Swenshuai.xi 734*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 735*53ee8cc1Swenshuai.xi { 736*53ee8cc1Swenshuai.xi MS_BOOL bInit; 737*53ee8cc1Swenshuai.xi MS_BOOL bIdle; 738*53ee8cc1Swenshuai.xi VDEC_EX_Stage eStage; 739*53ee8cc1Swenshuai.xi } VDEC_EX_Status; 740*53ee8cc1Swenshuai.xi 741*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 742*53ee8cc1Swenshuai.xi { 743*53ee8cc1Swenshuai.xi MS_U32 u32Tmp; 744*53ee8cc1Swenshuai.xi } VDEC_EX_Info; 745*53ee8cc1Swenshuai.xi 746*53ee8cc1Swenshuai.xi /// VDEC set info of total buffer 747*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 748*53ee8cc1Swenshuai.xi { 749*53ee8cc1Swenshuai.xi MS_BOOL bSetTotalBuf; /// TRUE: Set, FALSE: None set 750*53ee8cc1Swenshuai.xi MS_PHY phyTotalBufAddr; /// Total buffer start address 751*53ee8cc1Swenshuai.xi MS_SIZE szTotalBufSize; /// Total buffer size 752*53ee8cc1Swenshuai.xi 753*53ee8cc1Swenshuai.xi } VDEC_EX_TotalBufRange; 754*53ee8cc1Swenshuai.xi 755*53ee8cc1Swenshuai.xi /// VDEC define set buffer type 756*53ee8cc1Swenshuai.xi typedef enum 757*53ee8cc1Swenshuai.xi { 758*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_FB_BASE = 0x0000, /// 0x0000 : Frame Buffer Type Base 759*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_FB_MAIN, /// 0x0001 : Frame Buffer Main 760*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_FB_SUB, /// 0x0002 : Frame Buffer Sub 761*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_FB_BW, /// 0x0003 : Frame Buffer Bandwidth Balance 762*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_FB_NUM, /// Number of Frame Buffer Type 763*53ee8cc1Swenshuai.xi 764*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_BS_BASE = 0x0100, /// 0x0100 : Bitstream Buffer Type Base 765*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_BS_MAIN, /// 0x0101 : Bitstream Buffer Main 766*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_BS_SUB, /// 0x0102 : Bitstream Buffer Sub 767*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_BS_NUM, /// Number of Bitstream Buffer Type 768*53ee8cc1Swenshuai.xi 769*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_HDRSHM_BASE = 0x0200, /// 0x0200 : HDR Share Mem Type Base 770*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_HDRSHM_MAIN, /// 0x0201 : HDR Share Mem Main 771*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_HDRSHM_SUB, /// 0x0202 : HDR Share Mem Sub 772*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_HDRSHM_NUM, /// Number of HDR Share Mem Type 773*53ee8cc1Swenshuai.xi 774*53ee8cc1Swenshuai.xi E_VDEC_EX_BUFFERTYPE_NONE = 0xFFFF, /// Undefine Buffer Type 775*53ee8cc1Swenshuai.xi } VDEC_EX_BufferType; 776*53ee8cc1Swenshuai.xi 777*53ee8cc1Swenshuai.xi /// VDEC define get buffer type 778*53ee8cc1Swenshuai.xi typedef enum 779*53ee8cc1Swenshuai.xi { 780*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_BUFFERTYPE_ALLOC_BASE = 0x0000, /// 0x0000 : Allocate Buffer Type Base 781*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_BUFFERTYPE_ALLOC_BS, /// 0x0001 : Allocate Bitstream Buffer 782*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_BUFFERTYPE_ALLOC_DRVPROC, /// 0x0002 : Allocate Driver Processing Buffer 783*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_BUFFERTYPE_ALLOC_NUM, /// Number of Allocate Buffer Type 784*53ee8cc1Swenshuai.xi 785*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_BUFFERTYPE_NONE = 0xFFFF, /// Undefine Buffer Type 786*53ee8cc1Swenshuai.xi } VDEC_EX_GetBufferType; 787*53ee8cc1Swenshuai.xi 788*53ee8cc1Swenshuai.xi /// VDEC set buffer info 789*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 790*53ee8cc1Swenshuai.xi { 791*53ee8cc1Swenshuai.xi VDEC_EX_BufferType eType; /// Buffer type 792*53ee8cc1Swenshuai.xi MS_PHY phyAddr; /// Buffer start address 793*53ee8cc1Swenshuai.xi MS_SIZE szSize; /// Buffer size 794*53ee8cc1Swenshuai.xi MS_U32 u32Config; /// Buffer config 795*53ee8cc1Swenshuai.xi } VDEC_EX_BufferInfo; 796*53ee8cc1Swenshuai.xi 797*53ee8cc1Swenshuai.xi typedef enum 798*53ee8cc1Swenshuai.xi { 799*53ee8cc1Swenshuai.xi E_VDEC_EX_FRM_TYPE_I = 0, 800*53ee8cc1Swenshuai.xi E_VDEC_EX_FRM_TYPE_P, 801*53ee8cc1Swenshuai.xi E_VDEC_EX_FRM_TYPE_B, 802*53ee8cc1Swenshuai.xi E_VDEC_EX_FRM_TYPE_OTHER, 803*53ee8cc1Swenshuai.xi E_VDEC_EX_FRM_TYPE_NUM 804*53ee8cc1Swenshuai.xi } VDEC_EX_FrameType; 805*53ee8cc1Swenshuai.xi /// Frame buffer tile mode 806*53ee8cc1Swenshuai.xi typedef enum 807*53ee8cc1Swenshuai.xi { 808*53ee8cc1Swenshuai.xi /// Tile mode 809*53ee8cc1Swenshuai.xi E_VDEC_EX_TILEMODE_NONE = 0, 810*53ee8cc1Swenshuai.xi /// Frame buffer tile mode 16 x 16 811*53ee8cc1Swenshuai.xi E_VDEC_EX_TILEMODE_16x16, 812*53ee8cc1Swenshuai.xi /// Frame buffer tile mode 16 x 32 813*53ee8cc1Swenshuai.xi E_VDEC_EX_TILEMODE_16x32, 814*53ee8cc1Swenshuai.xi /// Frame buffer tile mode 32 x 16 815*53ee8cc1Swenshuai.xi E_VDEC_EX_TILEMODE_32x16, 816*53ee8cc1Swenshuai.xi /// Frame buffer tile mode 32 x 32 817*53ee8cc1Swenshuai.xi E_VDEC_EX_TILEMODE_32x32, 818*53ee8cc1Swenshuai.xi /// Frame buffer tile mode num 819*53ee8cc1Swenshuai.xi E_VDEC_EX_TILEMODE_NUM 820*53ee8cc1Swenshuai.xi } VDEC_EX_TileMode; 821*53ee8cc1Swenshuai.xi 822*53ee8cc1Swenshuai.xi typedef enum 823*53ee8cc1Swenshuai.xi { 824*53ee8cc1Swenshuai.xi ///< no field. 825*53ee8cc1Swenshuai.xi E_VDEC_EX_FIELDTYPE_NONE, 826*53ee8cc1Swenshuai.xi ///< Top field only. 827*53ee8cc1Swenshuai.xi E_VDEC_EX_FIELDTYPE_TOP, 828*53ee8cc1Swenshuai.xi ///< Bottom field only. 829*53ee8cc1Swenshuai.xi E_VDEC_EX_FIELDTYPE_BOTTOM, 830*53ee8cc1Swenshuai.xi ///< Both fields. 831*53ee8cc1Swenshuai.xi E_VDEC_EX_FIELDTYPE_BOTH, 832*53ee8cc1Swenshuai.xi E_VDEC_EX_FIELDTYPE_NUM 833*53ee8cc1Swenshuai.xi } VDEC_EX_FieldType; 834*53ee8cc1Swenshuai.xi 835*53ee8cc1Swenshuai.xi typedef enum 836*53ee8cc1Swenshuai.xi { 837*53ee8cc1Swenshuai.xi E_VDEC_EX_PATTERN_BEFORE_FRM = 0, 838*53ee8cc1Swenshuai.xi E_VDEC_EX_PATTERN_AFTER_FRM, 839*53ee8cc1Swenshuai.xi E_VDEC_EX_PATTERN_SKIP_DATA, 840*53ee8cc1Swenshuai.xi } VDEC_EX_PatchPattern; 841*53ee8cc1Swenshuai.xi 842*53ee8cc1Swenshuai.xi typedef enum 843*53ee8cc1Swenshuai.xi { 844*53ee8cc1Swenshuai.xi E_VDEC_EX_PIC_STRUCTURE_RSV = 0, //reserved 845*53ee8cc1Swenshuai.xi E_VDEC_EX_PIC_STRUCTURE_TOP, 846*53ee8cc1Swenshuai.xi E_VDEC_EX_PIC_STRUCTURE_BOT, 847*53ee8cc1Swenshuai.xi E_VDEC_EX_PIC_STRCUTURE_FRM, 848*53ee8cc1Swenshuai.xi } VDEC_EX_PicStructure; 849*53ee8cc1Swenshuai.xi 850*53ee8cc1Swenshuai.xi //VDEC FB reduction type 851*53ee8cc1Swenshuai.xi typedef enum 852*53ee8cc1Swenshuai.xi { 853*53ee8cc1Swenshuai.xi VDEC_EX_FB_REDUCTION_NONE = 0, 854*53ee8cc1Swenshuai.xi VDEC_EX_FB_REDUCTION_1_2, 855*53ee8cc1Swenshuai.xi VDEC_EX_FB_REDUCTION_1_4 856*53ee8cc1Swenshuai.xi } VDEC_EX_FBReductionType; 857*53ee8cc1Swenshuai.xi 858*53ee8cc1Swenshuai.xi //VDEC XC_LOW_DELAY 859*53ee8cc1Swenshuai.xi typedef enum 860*53ee8cc1Swenshuai.xi { 861*53ee8cc1Swenshuai.xi // no any XC_LOW_DELAY event happened. 862*53ee8cc1Swenshuai.xi VDEC_EX_XC_LOW_DELAY_NONE = 0x00, 863*53ee8cc1Swenshuai.xi // XC_LOW_DELAY event for disable black screen. 864*53ee8cc1Swenshuai.xi VDEC_EX_XC_DISABLE_BLACK_SCREEN = VDEC_EX_BIT(0), 865*53ee8cc1Swenshuai.xi // XC_LOW_DELAY event for release force_read_bank. 866*53ee8cc1Swenshuai.xi VDEC_EX_XC_RELEASE_FORCE_READ_BANK = VDEC_EX_BIT(1), 867*53ee8cc1Swenshuai.xi // XC_LOW_DELAY event for release bob_mode. 868*53ee8cc1Swenshuai.xi VDEC_EX_XC_RELEASE_BOB_MODE = VDEC_EX_BIT(2), 869*53ee8cc1Swenshuai.xi } VDEC_EX_XcLowDelayType; 870*53ee8cc1Swenshuai.xi 871*53ee8cc1Swenshuai.xi 872*53ee8cc1Swenshuai.xi 873*53ee8cc1Swenshuai.xi // VDEC SEQ change info 874*53ee8cc1Swenshuai.xi typedef enum 875*53ee8cc1Swenshuai.xi { 876*53ee8cc1Swenshuai.xi // seq change due to first sequence 877*53ee8cc1Swenshuai.xi VDEC_EX_SEQ_CHANGE_FIRST_TIME = VDEC_EX_BIT(0), 878*53ee8cc1Swenshuai.xi // seq chagne due to resolution 879*53ee8cc1Swenshuai.xi VDEC_EX_SEQ_CHANGE_RESOLUTION = VDEC_EX_BIT(1), 880*53ee8cc1Swenshuai.xi // seq chagne due to picture type 881*53ee8cc1Swenshuai.xi VDEC_EX_SEQ_CHANGE_PICTURE_TYPE = VDEC_EX_BIT(2), 882*53ee8cc1Swenshuai.xi // seq chagne due to aspect ratio 883*53ee8cc1Swenshuai.xi VDEC_EX_SEQ_CHANGE_ASPECT_RATIO = VDEC_EX_BIT(3), 884*53ee8cc1Swenshuai.xi // seq chagne due to frame rate 885*53ee8cc1Swenshuai.xi VDEC_EX_SEQ_CHANGE_FRAME_RATE = VDEC_EX_BIT(4), 886*53ee8cc1Swenshuai.xi // seq chagne due to HDR info 887*53ee8cc1Swenshuai.xi VDEC_EX_SEQ_CHANGE_HDR_INFO = VDEC_EX_BIT(5), 888*53ee8cc1Swenshuai.xi } VDEC_EX_SeqChangeInfo; 889*53ee8cc1Swenshuai.xi 890*53ee8cc1Swenshuai.xi 891*53ee8cc1Swenshuai.xi 892*53ee8cc1Swenshuai.xi 893*53ee8cc1Swenshuai.xi 894*53ee8cc1Swenshuai.xi 895*53ee8cc1Swenshuai.xi //VDEC set debug mode 896*53ee8cc1Swenshuai.xi typedef enum 897*53ee8cc1Swenshuai.xi { 898*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_MODE_BYPASS_INSERT_START_CODE = 0, /// for UT 899*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_MODE_BYPASS_DIVX_MC_PATCH, /// for UT 900*53ee8cc1Swenshuai.xi E_VDEC_EX_DBG_MODE_NUM 901*53ee8cc1Swenshuai.xi } VDEC_EX_DbgMode; 902*53ee8cc1Swenshuai.xi 903*53ee8cc1Swenshuai.xi //VDEC set clock speed 904*53ee8cc1Swenshuai.xi typedef enum 905*53ee8cc1Swenshuai.xi { 906*53ee8cc1Swenshuai.xi E_VDEC_EX_CLOCK_SPEED_NONE = 0, 907*53ee8cc1Swenshuai.xi E_VDEC_EX_CLOCK_SPEED_HIGHEST, 908*53ee8cc1Swenshuai.xi E_VDEC_EX_CLOCK_SPEED_HIGH, 909*53ee8cc1Swenshuai.xi E_VDEC_EX_CLOCK_SPEED_MEDIUM, 910*53ee8cc1Swenshuai.xi E_VDEC_EX_CLOCK_SPEED_LOW, 911*53ee8cc1Swenshuai.xi E_VDEC_EX_CLOCK_SPEED_LOWEST, 912*53ee8cc1Swenshuai.xi E_VDEC_EX_CLOCK_SPEED_DEFAULT, 913*53ee8cc1Swenshuai.xi } VDEC_EX_ClockSpeed; 914*53ee8cc1Swenshuai.xi 915*53ee8cc1Swenshuai.xi 916*53ee8cc1Swenshuai.xi //VDEC set secure mode 917*53ee8cc1Swenshuai.xi typedef enum 918*53ee8cc1Swenshuai.xi { 919*53ee8cc1Swenshuai.xi E_VDEC_EX_SECURE_MODE_NONE = 0, 920*53ee8cc1Swenshuai.xi E_VDEC_EX_SECURE_MODE_TRUSTZONE 921*53ee8cc1Swenshuai.xi } VDEC_EX_SecureMode; 922*53ee8cc1Swenshuai.xi 923*53ee8cc1Swenshuai.xi //VDEC set smooth rewind 924*53ee8cc1Swenshuai.xi typedef enum 925*53ee8cc1Swenshuai.xi { 926*53ee8cc1Swenshuai.xi E_VDEC_EX_SMOOTH_REWIND_DISABLE = 0, 927*53ee8cc1Swenshuai.xi E_VDEC_EX_SMOOTH_REWIND_SUPPORT, // memory at lastest 300mb 928*53ee8cc1Swenshuai.xi E_VDEC_EX_SMOOTH_REWIND_ENABLE, 929*53ee8cc1Swenshuai.xi }VDEC_EX_Smooth_rewind_mode; 930*53ee8cc1Swenshuai.xi 931*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 932*53ee8cc1Swenshuai.xi { 933*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 934*53ee8cc1Swenshuai.xi MS_U8 u8Tolerance; 935*53ee8cc1Swenshuai.xi }VDEC_EX_Err_Tolerance; 936*53ee8cc1Swenshuai.xi 937*53ee8cc1Swenshuai.xi ///2X trick mode 938*53ee8cc1Swenshuai.xi typedef enum 939*53ee8cc1Swenshuai.xi { 940*53ee8cc1Swenshuai.xi /// 2x mode count vsync 941*53ee8cc1Swenshuai.xi E_VDEC_EX_TRICKPLAY2X_COUNTVSYNC = 0, 942*53ee8cc1Swenshuai.xi /// 2x mode with av sync 943*53ee8cc1Swenshuai.xi E_VDEC_EX_TRICKPLAY2X_AVSYNC 944*53ee8cc1Swenshuai.xi }VDEC_EX_TrickPlay2xMode; 945*53ee8cc1Swenshuai.xi ///VP9 HDR10 Info 946*53ee8cc1Swenshuai.xi typedef struct 947*53ee8cc1Swenshuai.xi { 948*53ee8cc1Swenshuai.xi //VP9 HDR Version info 949*53ee8cc1Swenshuai.xi MS_U32 u32Version; 950*53ee8cc1Swenshuai.xi //VP9 HDR MatrixCoefficients 951*53ee8cc1Swenshuai.xi MS_U8 u8MatrixCoefficients; 952*53ee8cc1Swenshuai.xi //VP9 HDR BitsPerChannel 953*53ee8cc1Swenshuai.xi MS_U8 u8BitsPerChannel; 954*53ee8cc1Swenshuai.xi //VP9 HDR ChromaSubsamplingHorz 955*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSubsamplingHorz; 956*53ee8cc1Swenshuai.xi //VP9 HDR ChromaSubsamplingVert 957*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSubsamplingVert; 958*53ee8cc1Swenshuai.xi //VP9 HDR CbSubsamplingHorz 959*53ee8cc1Swenshuai.xi MS_U8 u8CbSubsamplingHorz; 960*53ee8cc1Swenshuai.xi //VP9 HDR CbSubsamplingVert 961*53ee8cc1Swenshuai.xi MS_U8 u8CbSubsamplingVert; 962*53ee8cc1Swenshuai.xi //VP9 HDR ChromaSitingHorz 963*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSitingHorz; 964*53ee8cc1Swenshuai.xi //VP9 HDR ChromaSitingVert 965*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSitingVert; 966*53ee8cc1Swenshuai.xi //VP9 HDR ColorRange 967*53ee8cc1Swenshuai.xi MS_U8 u8ColorRange; 968*53ee8cc1Swenshuai.xi // VP9 HDR TransferCharacteristics 969*53ee8cc1Swenshuai.xi MS_U8 u8TransferCharacteristics; 970*53ee8cc1Swenshuai.xi // VP9 HDR ColourPrimaries 971*53ee8cc1Swenshuai.xi MS_U8 u8ColourPrimaries; 972*53ee8cc1Swenshuai.xi // VP9 HDR Max Content Light Level 973*53ee8cc1Swenshuai.xi MS_U16 u16MaxCLL; 974*53ee8cc1Swenshuai.xi // VP9 HDR Max Frame Average Light Level 975*53ee8cc1Swenshuai.xi MS_U16 u16MaxFALL; 976*53ee8cc1Swenshuai.xi // VP9 HDR Primaries 977*53ee8cc1Swenshuai.xi MS_U16 u16Primaries[3][2]; 978*53ee8cc1Swenshuai.xi // VP9 HDR WhitePoint 979*53ee8cc1Swenshuai.xi MS_U16 u16WhitePoint[2]; 980*53ee8cc1Swenshuai.xi // VP9 HDR MaxLuminance 981*53ee8cc1Swenshuai.xi MS_U32 u32MaxLuminance; 982*53ee8cc1Swenshuai.xi // VP9 HDR MinLuminance 983*53ee8cc1Swenshuai.xi MS_U32 u32MinLuminance; 984*53ee8cc1Swenshuai.xi } VDEC_EX_Config_VP9HDR10; 985*53ee8cc1Swenshuai.xi //Codec Config type 986*53ee8cc1Swenshuai.xi typedef enum 987*53ee8cc1Swenshuai.xi { 988*53ee8cc1Swenshuai.xi // TYPE_NONE 989*53ee8cc1Swenshuai.xi E_VDEC_EX_CONFIG_TYPE_NONE = 0, 990*53ee8cc1Swenshuai.xi // TYPE_VP9HDR10 991*53ee8cc1Swenshuai.xi E_VDEC_EX_CONFIG_TYPE_VP9HDR10, 992*53ee8cc1Swenshuai.xi } VDEC_EX_ConfigType; 993*53ee8cc1Swenshuai.xi 994*53ee8cc1Swenshuai.xi //Codec config 995*53ee8cc1Swenshuai.xi typedef struct 996*53ee8cc1Swenshuai.xi { 997*53ee8cc1Swenshuai.xi // Codec_Config Type 998*53ee8cc1Swenshuai.xi VDEC_EX_ConfigType config_type; 999*53ee8cc1Swenshuai.xi // Codec_Config Addr 1000*53ee8cc1Swenshuai.xi MS_VIRT config_addr; 1001*53ee8cc1Swenshuai.xi // Codec_Config Size 1002*53ee8cc1Swenshuai.xi MS_U32 config_size; 1003*53ee8cc1Swenshuai.xi } VDEC_EX_Codec_Config; 1004*53ee8cc1Swenshuai.xi 1005*53ee8cc1Swenshuai.xi //VDEC set MFcodec Mode 1006*53ee8cc1Swenshuai.xi typedef enum 1007*53ee8cc1Swenshuai.xi { 1008*53ee8cc1Swenshuai.xi E_VDEC_EX_MFCODEC_DEFAULT = 0, 1009*53ee8cc1Swenshuai.xi E_VDEC_EX_MFCODEC_FORCE_ENABLE, 1010*53ee8cc1Swenshuai.xi E_VDEC_EX_MFCODEC_FORCE_DISABLE, 1011*53ee8cc1Swenshuai.xi } VDEC_EX_MFCodec_mode; 1012*53ee8cc1Swenshuai.xi 1013*53ee8cc1Swenshuai.xi typedef enum 1014*53ee8cc1Swenshuai.xi { 1015*53ee8cc1Swenshuai.xi E_VDEC_EX_FEATURE_DEFAULT = 0, 1016*53ee8cc1Swenshuai.xi E_VDEC_EX_FEATURE_FORCE_MAIN_PROFILE = VDEC_EX_BIT(0), // BIT0=1: HEVC Only support Main profile decode 1017*53ee8cc1Swenshuai.xi E_VDEC_EX_FEATURE_DISABLE_TEMPORAL_SCALABILITY = VDEC_EX_BIT(1), // BIT1=1: do not support temporal scalibity 1018*53ee8cc1Swenshuai.xi } VDEC_EX_Feature; 1019*53ee8cc1Swenshuai.xi /// VDEC setting customer mode 1020*53ee8cc1Swenshuai.xi typedef enum 1021*53ee8cc1Swenshuai.xi { 1022*53ee8cc1Swenshuai.xi /// Default 0, Customer mode not set 1023*53ee8cc1Swenshuai.xi E_VDEC_EX_CUSTOMER_DEFAULT = 0, 1024*53ee8cc1Swenshuai.xi /// BIT0=1: Run NDS code flow 1025*53ee8cc1Swenshuai.xi E_VDEC_EX_CUSTOMER_ENABLE_NDS = VDEC_EX_BIT(0), // BIT0=1: Run NDS code flow 1026*53ee8cc1Swenshuai.xi } VDEC_EX_Customer_Mode; 1027*53ee8cc1Swenshuai.xi 1028*53ee8cc1Swenshuai.xi typedef struct 1029*53ee8cc1Swenshuai.xi { 1030*53ee8cc1Swenshuai.xi MS_U8 u8RepeatPeriod; 1031*53ee8cc1Swenshuai.xi MS_U8 u8DropPeriod; 1032*53ee8cc1Swenshuai.xi }VDEC_EX_Slow_Sync; 1033*53ee8cc1Swenshuai.xi /// VDEC control decoder frequency 1034*53ee8cc1Swenshuai.xi typedef enum 1035*53ee8cc1Swenshuai.xi { 1036*53ee8cc1Swenshuai.xi /// VDEC control decoder frequency down 1037*53ee8cc1Swenshuai.xi VDEC_EX_DECODER_FREQUENCY_DOWN = 0, 1038*53ee8cc1Swenshuai.xi /// VDEC control decoder frequency up 1039*53ee8cc1Swenshuai.xi VDEC_EX_DECODER_FREQUENCY_UP, 1040*53ee8cc1Swenshuai.xi /// VDEC control decoder frequency to minimum 1041*53ee8cc1Swenshuai.xi VDEC_EX_DECODER_FREQUENCY_MIN, 1042*53ee8cc1Swenshuai.xi /// VDEC control decoder frequency to maximum 1043*53ee8cc1Swenshuai.xi VDEC_EX_DECODER_FREQUENCY_MAX, 1044*53ee8cc1Swenshuai.xi } VDEC_EX_Decoder_Frequency; 1045*53ee8cc1Swenshuai.xi 1046*53ee8cc1Swenshuai.xi //VDEC user command id 1047*53ee8cc1Swenshuai.xi typedef enum 1048*53ee8cc1Swenshuai.xi { 1049*53ee8cc1Swenshuai.xi //Group1:Set Control command================================ 1050*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_CONTROL_BASE = 0x0000, 1051*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_REPEAT_LAST_FIELD, // Param: 1(ON), 0(OFF) 1052*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVSYNC_REPEAT_TH, // Param:0x01 ~ 0xFF(repeat times), 0xFF:always repeat when av is not sync 1053*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISP_ONE_FIELD, // Param: 1(ON), 0(OFF) 1054*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FD_MASK_DELAY_COUNT, // Param: unit is in vsync base for mute the fd_mask 1055*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRC_OUTPUT, // Param: the address of VDEC_FRC_OutputParam 1056*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRC_DROP_TYPE, // Param: 1(FRC_DROP_FIELD), 0(FRC_DROP_FRAME), default:0 1057*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FAST_DISPLAY, // Param: TRUE(Fast display), FALSE(Display until synced) 1058*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_IGNORE_ERR_REF, // Param: TRUE(Ignore error reference), FALSE(Enable error reference handle) 1059*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FORCE_FOLLOW_DTV_SPEC, // Param: 1(ON), 0(OFF) 1060*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVC_MIN_FRM_GAP, // Param: Set the theshold of H264 frame gap, 0xFFFFFFFF don't care frame gap 1061*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_SEQ_CHG, // Param: 1(Disable), 0(Enable) 1062*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DISP_OUTSIDE_CTRL_MODE, // Param: 1(ON) used for Openmax, 0(OFF) used for mstreamer and mm mode ,default : off 1063*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DTV_USER_DATA_MODE, // Param: 0(Support normal DVB CC, default case), 1(Support ATSC DirectTV CC), 2,3,4(Reserved) 1064*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SINGLE_TASK_MODE, 1065*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVC_DISABLE_ANTI_VDEAD, 1066*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DTV_RESET_MVD_PARSER, // Param: 0(Disable), 1(Enable) 1067*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PVR_FLUSH_FRAME_BUFFER, 1068*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FORCE_INTERLACE_MODE, 1069*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_RELEASE_FD_MASK, // Param: 1 to release fd mask when zooming or slow motion 1070*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DECODE_MODE, 1071*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SUPPORT_AVC_TO_MVC, // Param: 0(Do not support), 1(Support AVC to MVC) 1072*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_3DLR_VIEW_EXCHANGE, // Param: 0(Disable), 1(View L/R exhange) 1073*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_VSIZE_ALIGN, // Param: 0(Disable), 1(Enable) 1074*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SHOW_DECODE_ORDER, // Param: 0(Disable), 1(Enable) 1075*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVC_DISP_IGNORE_CROP, // Param: 0(Disable), 1(Enable) 1076*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DISP_FINISH_MODE, 1077*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_AVSYNC_MODE, 1078*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SUSPEND_DYNAMIC_SCALE, // Param: 0(Disable, non-suspend DS), 1(Enable, suspend DS) 1079*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FORCE_AUTO_MUTE, 1080*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVC_NEW_SLOW_MOTION, // Param: 0(Disable), 1(Enable) 1081*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PUSH_DISPQ_WITH_REF_NUM, // Param: 0(Disable), 1(Enable) 1082*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DS_RESV_N_BUFFER, // Param: 0(Disable), 1(Enable) 1083*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_RM_ENABLE_PTS_TBL, // Param: 0(Disable), 1(Enable) 1084*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FLUSH_PTS_BUF, 1085*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_IDCT_MODE, // Param: 0(Original), 1(new IDCT) 1086*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DROP_ERR_FRAME, // Param: 0(Disable), 1(Enable) 1087*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_CC608_INFO_ENHANCE_MODE, 1088*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_IGNORE_PIC_OVERRUN, // Param: 0(Disable), 1(Enable) 1089*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SELF_SEQCHANGE, 1090*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AUTO_EXHAUST_ES_MODE, // Param: set the upper bound (arg[31:16]), and lower bound (arg[15:0])of ES level, Unit = 1KBytes, Auto drop display to consume ES data as soon as possible when ES level is higher than upper bound 1091*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CTL_SPEED_IN_DISP_ONLY, // Param: 0(Original: Dec and disp time), 1(In Disp only) 1092*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVC_SUPPORT_REF_NUM_OVER_MAX_DPB_SIZE, // Param: 0(Disable), 1(Enable) 1093*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_RETURN_INVALID_AFD, // Param: 0(Disable), 1(Enable) 1094*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FIELD_POLARITY_DISPLAY_ONE_FIELD,// Param : VDEC_EX_Field_Polarity 1095*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVC_FORCE_BROKEN_BY_US, // Param: 0(Disable), 1(Enable) 1096*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SHOW_FIRST_FRAME_DIRECT, // Param: 0(Disable), 1(Enable), Push first frame to display queue directly.. 1097*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AVC_RESIZE_DOS_DISP_PEND_BUF, // Param: size of AVC display pending buffer for display outside mode 1098*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_XC_LOW_DELAY_PARA, // Param: arg0 for diff_field_number... 1099*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SECURE_MODE, // Param: use enum VDEC_EX_SecureMode 1100*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_RVU_SETTING_MODE, // Param: 0(Disable), 1(drop B-frame and force IDR) 1101*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRAMERATE_HANDLING, // Arg 0~60000, 0: Disable, 1000 ~ 60000: Used the arg to set frame rate when the sequence did not have frame rate info. and arg is not zero. (The frame unit is (arg/1000)fps, Exp: 30000 = 30.000 fps), others: Do not thing. 1102*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DUAL_NON_BLOCK_MODE, // Param: 0(Disable), 1(Enable) 1103*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_IGNORE_PIC_STRUCT_DISPLAY, // Param: 0(Disable), 1(Enable) Ignore Pic_struct when display progressive frame. 1104*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_INPUT_PTS_FREERUN_MODE, // Param: 0(Disable), 1(Enable) Video free run when the difference between input PTS and current STC is large than E_HVD_CMD_FREERUN_THRESHOLD + 1s; 1105*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ERR_CONCEAL_SLICE_1ST_MB, // Param: 0(disable), Error concealment from current/last MB position; 1(enale) Error concealment from current slice first MB.(Need enable E_HVD_CMD_ERR_CONCEAL) 1106*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_EXTERNAL_DS_BUFFER, // Param: External DS Buffer info. 1107*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_MIN_TSP_DATA_SIZE, // Param: Resize HVD_FW_AVC_ES_MIN_TSP_DATA_SIZE 1108*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DMX_FRAMERATE, 1109*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DMX_FRAMERATEBASE, 1110*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_CC_608_EXTERNAL_BUFFER, // Param: u32_ccinfo 32bits-->([31:8]+[7:0] = addr+size), addr is kb unit, if u32_ccinfo ==0, it will turn off this feature 1111*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_CC_708_EXTERNAL_BUFFER, // Param: u32_ccinfo 32bits-->([31:8]+[7:0] = addr+size), addr is kb unit, if u32_ccinfo ==0, it will turn off this feature 1112*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TIME_INC_PREDICT_PARA, 1113*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_DECODE_ENGINE_TIMEOUT, // Param: Enable/Disable decode timeout solution, timeout value unit:ms (VDEC_EX_Decode_Timeout_Param) 1114*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AUTO_FREE_ES, // Param: 0(Disable), 1(Enable) 1115*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRAMEBUFFER_AUTO_MODE, // Param: 0(Disable),1(Enable), this cmd is used for MVD. 1116*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SMOOTH_REWIND, // enable/disable or support smooth rewind 1117*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_ERROR_TOLERANCE, 1118*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AUTO_DROP_DISPLAY_QUEUE, // Param: 0(Disable), N = 1~16: Drop display queue when display queue above than N frames. 1119*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_USE_CPB_REMOVAL_DEALY, // Param: 0(Disable), 1(Enable) 1120*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SKIP_N_FRAME, // Param: 0:disable, N = 1~63. Skip N frame. 1121*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_PTS_US_MODE, // Param: 1(enable), 0(disable ) PTS output by micro second level, 1122*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AUTO_INSERT_DUMMY_DATA, // Param: 1(enable),0(disable), Enable/Disable utopia auto insert dummy pattern in SLQ/BBU mode. 1123*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DROP_ONE_PTS, 1124*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PVR_TIMESHIFT_SEAMLESS_MODE, 1125*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AUTO_REDUCE_ES_DATA, 1126*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_RM_FORCE_MCU_MODE_ES, // Param: 0(Disable), 1(Enable) 1127*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FORCE_PROGRESSIVE_MODE, // Param: 1(enable),0(disable), Enable/Disable force progressive mode 1128*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_FRAMEBUFF2, // Param[0]=Addr and Param[1]=size for the second frame buffer 1129*53ee8cc1Swenshuai.xi 1130*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1131*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_PTS_DECTECTOR, // Param: 1(ON), 0(OFF) 1132*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_XC_SHM_ADDR, // Param: PHY Addr for communicating with XC Dolby Vision DM/Comp 1133*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_ENABLE_HDR, // Param: 0(Disable), 1(Enable) 1134*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_PBFRAME_MODE, // Param: 1(Disable), 0(Enable) 1135*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_INFO, 1136*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TRICKPLAY_2X_MODE, // Param:0(vsync),1(avsync) 1137*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRC_ONLY_SHOW_TOP_FIELD, // Param: 0(Disable), 1(Enable) only show top filed for FRC mode 1138*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DIRECT_STC_MODE, // Param: stc in ms; 0x0~0x1FFFFFFFF/90, vdec fw use this value as stc; 0xFFFFFFFF, disable ths feature 1139*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_ES_FULL_STOP, // Param: 0(Enable), 1(Disable) ES FULL STOP mode 1140*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SLOW_SYNC, 1141*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DYNAMIC_DISP_PATH, 1142*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_AVSYNC_DISP_AUTO_DROP, 1143*53ee8cc1Swenshuai.xi #endif 1144*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) 1145*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_PTS_DECTECTOR, // Param: 1(ON), 0(OFF) 1146*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_XC_SHM_ADDR, // Param: PHY Addr for communicating with XC Dolby Vision DM/Comp 1147*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_ENABLE_HDR, // Param: 0(Disable), 1(Enable) 1148*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_PBFRAME_MODE, // Param: 1(Disable), 0(Enable) 1149*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SLOW_SYNC, // Param: VDEC_EX_Slow_Sync, u8RepeatPeriod: 0(disable), 1~0xFF(Repeat Period, repeat one every u8RepeatPeriod display), u8DropPeriod: 0(disable), 1~0xFF(Drop Period, Drop one every u8DropPeriod display) 1150*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_INFO, 1151*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TRICKPLAY_2X_MODE, //Param:0(vsync),1(avsync) 1152*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRC_ONLY_SHOW_TOP_FIELD, 1153*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DIRECT_STC_MODE, 1154*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_ES_FULL_STOP, 1155*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_AVSYNC_DISP_AUTO_DROP, 1156*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DYNAMIC_DISP_PATH, 1157*53ee8cc1Swenshuai.xi #endif 1158*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 1159*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TRICKPLAY_2X_MODE, // Param:0(vsync),1(avsync) 1160*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRC_ONLY_SHOW_TOP_FIELD, // Param: 0(Disable), 1(Enable) only show top filed for FRC mode 1161*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DIRECT_STC_MODE, // Param: stc in ms; 0x0~0x1FFFFFFFF/90, vdec fw use this value as stc; 0xFFFFFFFF, disable ths feature 1162*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_PTS_DECTECTOR, // Param: 1(ON), 0(OFF) ,enable PTS detector mode 1163*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_ES_FULL_STOP, // Param: 0(Enable), 1(Disable) ES FULL STOP mode 1164*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_XC_SHM_ADDR, // Param: PHY Addr for communicating with XC Dolby Vision DM/Comp 1165*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SLOW_SYNC, // Param: VDEC_EX_Slow_Sync, u8RepeatPeriod: 0(disable), 1~0xFF(Repeat Period, repeat one every u8RepeatPeriod display), u8DropPeriod: 0(disable), 1~0xFF(Drop Period, Drop one every u8DropPeriod display) 1166*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_ENABLE_HDR, // Param: 0(Disable), 1(Enable) 1167*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_PBFRAME_MODE, // Param: 1(Disable), 0(Enable) 1168*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_INFO, 1169*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_AVSYNC_DISP_AUTO_DROP, // AV sync drop display frame 1170*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DYNAMIC_DISP_PATH, // Dynamic config for display path dip or mvop 1171*53ee8cc1Swenshuai.xi #endif 1172*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 1173*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_PTS_DECTECTOR, // Param: 1(ON), 0(OFF) 1174*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_AVSYNC_DISP_AUTO_DROP, 1175*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DYNAMIC_DISP_PATH, 1176*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_XC_SHM_ADDR, // Param: PHY Addr for communicating with XC Dolby Vision DM/Comp 1177*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TRICKPLAY_2X_MODE, //Param:0(vsync),1(avsync) 1178*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_ENABLE_HDR, // Param: 0(Disable), 1(Enable) 1179*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_PBFRAME_MODE, // Param: 1(Disable), 0(Enable) 1180*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_INFO, 1181*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRC_ONLY_SHOW_TOP_FIELD, // Param: 0(Disable), 1(Enable) only show top filed for FRC mode 1182*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DIRECT_STC_MODE, // Param: stc in ms; 0x0~0x1FFFFFFFF/90, vdec fw use this value as stc; 0xFFFFFFFF, disable ths feature 1183*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_ES_FULL_STOP, // Param: 0(Enable), 1(Disable) ES FULL STOP mode 1184*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SLOW_SYNC, // Param: VDEC_EX_Slow_Sync, u8RepeatPeriod: 0(disable), 1~0xFF(Repeat Period, repeat one every u8RepeatPeriod display), u8DropPeriod: 0(disable), 1~0xFF(Drop Period, Drop one every u8DropPeriod display) 1185*53ee8cc1Swenshuai.xi #endif 1186*53ee8cc1Swenshuai.xi 1187*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) 1188*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TRICKPLAY_2X_MODE, //Param:0(vsync),1(avsync) 1189*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRC_ONLY_SHOW_TOP_FIELD, // Param: 0(Disable), 1(Enable) only show top filed for FRC mode 1190*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_ES_FULL_STOP, // Param: 0(Enable), 1(Disable) ES FULL STOP mode 1191*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DIRECT_STC_MODE, // Param: stc in ms; 0x0~0x1FFFFFFFF/90, vdec fw use this value as stc; 0xFFFFFFFF, disable ths feature 1192*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_PTS_DECTECTOR, // Param: 1(ON), 0(OFF) 1193*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SLOW_SYNC, //Param: VDEC_EX_Slow_Sync, u8RepeatPeriod: 0(disable), 1~0xFF(Repeat Period, repeat one every u8RepeatPeriod display), u8DropPeriod: 0(disable), 1~0xFF(Drop Period, Drop one every u8DropPeriod display) 1194*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_ENABLE_HDR, 1195*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DISABLE_PBFRAME_MODE, 1196*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_XC_SHM_ADDR, 1197*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DV_INFO, 1198*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_AVSYNC_DISP_AUTO_DROP, 1199*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DYNAMIC_DISP_PATH, 1200*53ee8cc1Swenshuai.xi #endif 1201*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_CODEC_CONFIG, //setip codec type for vp9 1202*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ENABLE_QOS_INFO, // Enable VDEC FW to calculate qos info 1203*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_ADJUST_DECODER_FREQUENCY, // VDEC_EX_Decoder_Frequency; VDEC_EX_DECODER_FREQUENCY_DOWN, VDEC_EX_DECODER_FREQUENCY_UP, VDEC_EX_DECODER_FREQUENCY_MAX, VDEC_EX_DECODER_FREQUENCY_MIN 1204*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PUSI_CONTROL, 1205*53ee8cc1Swenshuai.xi 1206*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MVC_SET_CMD_BASE = 0x0800, 1207*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MVC_BBU2_PUSH_PACKET, // Param: Packet Info. 1208*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MVC_BBU2_FIRE_DECCMD, // Param: Non 1209*53ee8cc1Swenshuai.xi 1210*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_UT_SET_CMD_BASE = 0x0900, 1211*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_UT_SET_DBG_MODE, // Param: for enable the specify dbg mode for UT 1212*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_UT_CLR_DBG_MODE, // Param: for disable the specify dbg mode for UT 1213*53ee8cc1Swenshuai.xi 1214*53ee8cc1Swenshuai.xi //Group2:Get Control command================================ 1215*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CONTROL_BASE = 0x1000, 1216*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CHROMA_TYPE, 1217*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_REAL_FRAMERATE, // Get Real FrameRate reported by decoder 1218*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_COLOR_MATRIX, // Get color matrix coefficients reported by decoder 1219*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MAIN_STREAM_ID, // Get activated main stream ID 1220*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SUB_STREAM_ID, // Get activated sub stream ID 1221*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DYNSCALE_ENABLED, 1222*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FPA_SEI, //Get SEI info 1223*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_U64PTS, 1224*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_ORI_INTERLACE_MODE, 1225*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MBS_ONLY_FLAG, 1226*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CRC_VALUE, //Get frame Y/UV crc value 1227*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_BBU_Q_NUM, 1228*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DISP_FRAME_NUM, 1229*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FPA_SEI_EX, //Get SEI info(enhancement) 1230*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_ES_BUFFER_STATUS, //Get ES buffer over/under flow status 1231*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CODEC_TYPE, // Get Codec type 1232*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SHAREMEMORY_BASE, 1233*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_IS_LEAST_DISPQ_SIZE_FLAG, 1234*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FIELD_PIC_FLAG, // Param: Get Field Pic Flag 1235*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SUPPORT_2ND_MVOP_INTERFACE, // Param: TRUE : support, FALSE : not support 1236*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FB_USAGE_MEM, // Get FrameBuufer Size needed by decoder 1237*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_XC_LOW_DELAY_INT_STATE, // Get xc_low_delay int state... 1238*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VSYNC_BRIDGE_ADDR, 1239*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FRAME_INFO_EX, 1240*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FLUSH_PATTEN_ENTRY_NUM, 1241*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DS_BUF_MIU_SEL, //For those chips which has 3 MIU, use this get control to get correct miu select of DS buffer 1242*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FW_STATUS_FLAG, 1243*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_HW_MAX_PIXEL, 1244*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1245*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FLOW_CONTROL_U64PTS_DIFF, // based on PTS table Rdptr and Wrptr, support TSP mode only 1246*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NEXT_DISP_FRAME_INFO_EXT, // replace of E_VDEC_EX_USER_CMD_GET_FRAME_INFO_EX 1247*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VSYNC_BRIDGE_EXT_ADDR, //get vsync bridge ext addr 1248*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DCV_SEI, 1249*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VUI_DISP_INFO, 1250*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CODEC_CAP, 1251*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PRE_PAS_U64PTS, //Get Pre-parsing PTS 1252*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CLLI_SEI, //Content light level Info 1253*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PVRSEAMLESS_INFO, 1254*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SEQ_CHANGE_INFO, // Get the reason why seq changes, parameter is MS_U32, definition is VDEC_EX_SeqChangeInfo 1255*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DISP_QUEUE_EMPTY, 1256*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NOT_SUPPORT_INFO, 1257*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_BUFFER_INFO, // Param: VDEC_EX_BufferInfo 1258*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MIN_TSP_DATA_SIZE, //Get Min tsp data size from FW side ,avoid data no enough case in PVR mode 1259*53ee8cc1Swenshuai.xi #endif 1260*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500) 1261*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FLOW_CONTROL_U64PTS_DIFF, // based on PTS table Rdptr and Wrptr, support TSP mode only 1262*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NEXT_DISP_FRAME_INFO_EXT, // replace of E_VDEC_EX_USER_CMD_GET_FRAME_INFO_EX 1263*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VSYNC_BRIDGE_EXT_ADDR, //get vsync bridge ext addr 1264*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DCV_SEI, 1265*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VUI_DISP_INFO, 1266*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CODEC_CAP, 1267*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PRE_PAS_U64PTS, //Get Pre-parsing PTS 1268*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CLLI_SEI, //Content light level Info 1269*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SEQ_CHANGE_INFO, // Get the reason why seq changes, parameter is MS_U32, definition is VDEC_EX_SeqChangeInfo 1270*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PVRSEAMLESS_INFO, 1271*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DISP_QUEUE_EMPTY, 1272*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NOT_SUPPORT_INFO, 1273*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_BUFFER_INFO, // Param: VDEC_EX_BufferInfo 1274*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MIN_TSP_DATA_SIZE, //Get Min tsp data size from FW side ,avoid data no enough case in PVR mode 1275*53ee8cc1Swenshuai.xi #endif 1276*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) 1277*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FLOW_CONTROL_U64PTS_DIFF, // based on PTS table Rdptr and Wrptr, support TSP mode only 1278*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NEXT_DISP_FRAME_INFO_EXT, // replace of E_VDEC_EX_USER_CMD_GET_FRAME_INFO_EX 1279*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VSYNC_BRIDGE_EXT_ADDR, //get vsync bridge ext addr 1280*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DCV_SEI, 1281*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VUI_DISP_INFO, 1282*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CODEC_CAP, 1283*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PRE_PAS_U64PTS, //Get Pre-parsing PTS 1284*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PVRSEAMLESS_INFO, 1285*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CLLI_SEI, //Content light level Info 1286*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SEQ_CHANGE_INFO, // Get the reason why seq changes, parameter is MS_U32, definition is VDEC_EX_SeqChangeInfo 1287*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DISP_QUEUE_EMPTY, 1288*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NOT_SUPPORT_INFO, 1289*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MIN_TSP_DATA_SIZE, //Get Min tsp data size from FW side ,avoid data no enough case in PVR mode 1290*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_BUFFER_INFO, // Param: VDEC_EX_BufferInfo 1291*53ee8cc1Swenshuai.xi #endif 1292*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 1293*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VSYNC_BRIDGE_EXT_ADDR, //get vsync bridge ext addr 1294*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FLOW_CONTROL_U64PTS_DIFF, // based on PTS table Rdptr and Wrptr, support TSP mode only 1295*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PRE_PAS_U64PTS, //Get Pre-parsing PTS 1296*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SEQ_CHANGE_INFO, // Get the reason why seq changes, parameter is MS_U32, definition is VDEC_EX_SeqChangeInfo 1297*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NEXT_DISP_FRAME_INFO_EXT, // replace of E_VDEC_EX_USER_CMD_GET_FRAME_INFO_EX 1298*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CODEC_CAP, 1299*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DCV_SEI, 1300*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VUI_DISP_INFO, 1301*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CLLI_SEI, //Content light level Info 1302*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PVRSEAMLESS_INFO, 1303*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DISP_QUEUE_EMPTY, 1304*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NOT_SUPPORT_INFO, 1305*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_BUFFER_INFO, // Param: VDEC_EX_BufferInfo 1306*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MIN_TSP_DATA_SIZE, //Get Min tsp data size from FW side ,avoid data no enough case in PVR mode 1307*53ee8cc1Swenshuai.xi #endif 1308*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) 1309*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PVRSEAMLESS_INFO, 1310*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_FLOW_CONTROL_U64PTS_DIFF, // based on PTS table Rdptr and Wrptr, support TSP mode only 1311*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_PRE_PAS_U64PTS, // Get Pre-parsing PTS 1312*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NEXT_DISP_FRAME_INFO_EXT, // replace of E_VDEC_EX_USER_CMD_GET_FRAME_INFO_EX 1313*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VSYNC_BRIDGE_EXT_ADDR, //get vsync bridge ext addr 1314*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DCV_SEI, 1315*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_VUI_DISP_INFO, 1316*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CODEC_CAP, 1317*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SEQ_CHANGE_INFO, // Get the reason why seq changes, parameter is MS_U32, definition is VDEC_EX_SeqChangeInfo 1318*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NOT_SUPPORT_INFO, 1319*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MIN_TSP_DATA_SIZE, 1320*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CLLI_SEI, 1321*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_DISP_QUEUE_EMPTY, 1322*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_BUFFER_INFO, // Param: VDEC_EX_BufferInfo 1323*53ee8cc1Swenshuai.xi #endif 1324*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_NEXT_DISP_FRAME_QOS_INFO, // Get qos info 1325*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_SEQ_INFO, //Get sequence header info 1326*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_EXTEND_DISP_INFO, // Get ExtendDispInfo 1327*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_CODEC_PROFILE_CAP, 1328*53ee8cc1Swenshuai.xi 1329*53ee8cc1Swenshuai.xi //MVC Get Control command================================ 1330*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MVC_GET_CMD_BASE = 0x1800, 1331*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MVC_SUB_FRAME_DISP_INFO, // Param: VDEC_FrameInfo pointer. 1332*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MVC_BBU2_DECQ_VACANCY, // Param: BBU2 Dec Q Vacancy. 1333*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MVC_ES2_READ_PTR, // Param: ES2 read pointer. 1334*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_MVC_ES2_WRITE_PTR, // Param: ES2 Write pointer. 1335*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_ES_QUANTITY, // Param: Get ES buffer Level. 1336*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_GET_ES2_QUANTITY, // Param: Get ES2 buffer Level. 1337*53ee8cc1Swenshuai.xi 1338*53ee8cc1Swenshuai.xi 1339*53ee8cc1Swenshuai.xi //Group3:System Preset Control command====================== 1340*53ee8cc1Swenshuai.xi //Group3-1:Common system Preset Control command 1341*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PRESET_CONTROL_BASE = 0x2000, 1342*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PRESET_VPU_CLOCK, //Param: VDEC_EX_ClockSpeed 1343*53ee8cc1Swenshuai.xi 1344*53ee8cc1Swenshuai.xi //Group3-2:HVD System Preset Control command 1345*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PRESET_HVD_BASE = 0x2100, 1346*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PRESET_HVD_CLOCK, //Param: VDEC_EX_ClockSpeed 1347*53ee8cc1Swenshuai.xi 1348*53ee8cc1Swenshuai.xi //Group3-3:MVD System Preset Control command 1349*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PRESET_MVD_BASE = 0x2200, 1350*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PRESET_MVD_CLOCK, //Param: VDEC_EX_ClockSpeed 1351*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_VPU_SECURITY_MODE, //Param: 0:disable,1:enable 1352*53ee8cc1Swenshuai.xi 1353*53ee8cc1Swenshuai.xi //Group3-4:Preset Control command============================= 1354*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PRESET_CONTROL_BASE = 0x2300, 1355*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_HVD_ONE_PENDING_BUFFER_MODE, //Param: 0(Disable), 1(Enable), use only one pending buffer instead of two for HVD 1356*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MVD_HWBUFFER_REMAPPING_MODE, //Param: 0(Disable), 1(Enable),Allcate HW buffer to start of frame buffer 1357*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_SHAREMEMORY_BASE, 1358*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_HVD_COL_BBU_MODE, //Param: HVD use colocated BBU mode, 0: disable, 1: enable /*johnny.ko*/ 1359*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_HVD_IAPGN_BUF_SHARE_BW_MODE, //Param: HVD IAP GN Buffer address, 1360*53ee8cc1Swenshuai.xi /***/E_VDEC_EX_USER_CMD_DTV_DEBUG_MODE, 1361*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_HVD_TS_IN_BBU_MODE, 1362*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_AUTO_ARRANGE_FRAMEBUFFER_USAGE, //Param: 0:disable,1:enable, address:PA,size:unit is byte 1363*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_THUMBNAIL_MODE, //Param: 0(Disable), 1(Enable), use small frame buffer to decdoe thumbnail 1364*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FORCE_8BIT_DEC_MODE, //Param: force 8bit decode mode, 0: disable, 1: enable 1365*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) 1366*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MFCODEC_MODE, //Param: VDEC_EX_MFCodec_mode 1367*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_VDEC_FEATURE, //AP control VDEC features 1368*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DYNAMIC_CMA_MODE, //enable dynamic cma features 1369*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_INPUT_TSP, //Param: VDEC_EX_INPUT_TSP, 0(Disable), 1(TSP 0) 1370*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_DISPLAY_PATH, //Param: 0(display by DIP), 1(MVOP MAIN), 2(MVOP SUB) 1371*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DISPLAY_MODE, //Param: 0(MCU MODE), 1(HARDWIRE) 1372*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_BITSTREAMBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1373*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRAMEBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1374*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SPECIFY_TASK_SPEC, //Param: VDEC_EX_TASK_SPEC 1375*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_BITSTREAMBUFFER, //Param: VDEC_EX_TotalBufRange 1376*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER1, //Param: VDEC_EX_TotalBufRange 1377*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER2, //Param: VDEC_EX_TotalBufRange 1378*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PRESET_STC, //set STC index 1379*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CAL_FRAMERATE, 1380*53ee8cc1Swenshuai.xi #endif 1381*53ee8cc1Swenshuai.xi #if (defined(UFO_PUBLIC_HEADER_500)||defined(UFO_PUBLIC_HEADER_500_3)) 1382*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MFCODEC_MODE, //Param: VDEC_EX_MFCodec_mode 1383*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_VDEC_FEATURE, //AP control VDEC features 1384*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DYNAMIC_CMA_MODE, //enable dynamic cma features 1385*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_INPUT_TSP, //Param: VDEC_EX_INPUT_TSP, 0(Disable), 1(TSP 0) 1386*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_DISPLAY_PATH, //Param: 0(display by DIP), 1(MVOP MAIN), 2(MVOP SUB) 1387*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DISPLAY_MODE, //Param: 0(MCU MODE), 1(HARDWIRE) 1388*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_BITSTREAMBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1389*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRAMEBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1390*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SPECIFY_TASK_SPEC, //Param: VDEC_EX_TASK_SPEC 1391*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PRESET_STC, //set STC index 1392*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CAL_FRAMERATE, //Param: 0(Disable), 1(Enable) 1393*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_BITSTREAMBUFFER, //Param: VDEC_EX_TotalBufRange 1394*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER1, //Param: VDEC_EX_TotalBufRange 1395*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER2, //Param: VDEC_EX_TotalBufRange 1396*53ee8cc1Swenshuai.xi #endif 1397*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_300) 1398*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_DISPLAY_PATH, //Param: 0(display by DIP), 1(MVOP MAIN), 2(MVOP SUB) 1399*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_INPUT_TSP, //Param: VDEC_EX_INPUT_TSP, 0(Disable), 1(TSP 0) 1400*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DISPLAY_MODE, //Param: 0(MCU MODE), 1(HARDWIRE) 1401*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_BITSTREAMBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1402*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRAMEBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1403*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SPECIFY_TASK_SPEC, //Param: VDEC_EX_TASK_SPEC 1404*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_BITSTREAMBUFFER, //Param: VDEC_EX_TotalBufRange 1405*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER1, //Param: VDEC_EX_TotalBufRange 1406*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER2, //Param: VDEC_EX_TotalBufRange 1407*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CAL_FRAMERATE, //Param: 0(Disable), 1(Enable) 1408*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_VDEC_FEATURE, //AP control VDEC features 1409*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DYNAMIC_CMA_MODE, //enable dynamic cma features 1410*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MFCODEC_MODE, 1411*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PRESET_STC, 1412*53ee8cc1Swenshuai.xi #endif 1413*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_212) 1414*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_MFCODEC_MODE, //Param: VDEC_EX_MFCodec_mode 1415*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_VDEC_FEATURE, //AP control VDEC features 1416*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_DYNAMIC_CMA_MODE, //enable dynamic cma features 1417*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_DISPLAY_PATH, //Param: 0(display by DIP), 1(MVOP MAIN), 2(MVOP SUB) 1418*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CONNECT_INPUT_TSP, //Param: VDEC_EX_INPUT_TSP, 0(Disable), 1(TSP 0) 1419*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_DISPLAY_MODE, //Param: 0(MCU MODE), 1(HARDWIRE) 1420*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_BITSTREAMBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1421*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_FRAMEBUFFER_MONOPOLY, //Param: TRUE : support, FALSE : not support 1422*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SPECIFY_TASK_SPEC, //Param: VDEC_EX_TASK_SPEC 1423*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_PRESET_STC, 1424*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_CAL_FRAMERATE, //Param: 0(Disable), 1(Enable) 1425*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_BITSTREAMBUFFER, //Param: VDEC_EX_TotalBufRange 1426*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER1, //Param: VDEC_EX_TotalBufRange 1427*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_TOTALRANGE_FRAMEBUFFER2, //Param: VDEC_EX_TotalBufRange 1428*53ee8cc1Swenshuai.xi #endif 1429*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_BUFFER_INFO, // Set specific buffer (VDEC_EX_BufferType) info 1430*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_HDR10_UPDATE_PERFRAME, // update hdr10 info per frame 1431*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_VP94K2KCHECK, // Param : 1(enable) 4k2k file not supported 1432*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SET_CUSTOMER_MODE, //Param: VDEC_EX_Customer_Mode. For specific customer behavior 1433*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SETPOWERSTATE, 1434*53ee8cc1Swenshuai.xi 1435*53ee8cc1Swenshuai.xi //Group4:System Postset Control command====================== 1436*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_POSTSET_CONTROL_BASE = 0x3000, 1437*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_POSTSET_CLEAR_PROCESS_RELATED, 1438*53ee8cc1Swenshuai.xi 1439*53ee8cc1Swenshuai.xi //Group5:System PreGet Control command====================== 1440*53ee8cc1Swenshuai.xi //Group5-1:Common system Preget Control command 1441*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PREGET_CONTROL_BASE = 0x4000, 1442*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PREGET_FB_MEMORY_USAGE_SIZE, 1443*53ee8cc1Swenshuai.xi 1444*53ee8cc1Swenshuai.xi 1445*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PREGET_DV_SUPPORT_PROFILE, 1446*53ee8cc1Swenshuai.xi E_VDEC_EX_USER_CMD_SYSTEM_PREGET_DV_SUPPORT_LEVEL, 1447*53ee8cc1Swenshuai.xi 1448*53ee8cc1Swenshuai.xi 1449*53ee8cc1Swenshuai.xi } VDEC_EX_User_Cmd; 1450*53ee8cc1Swenshuai.xi 1451*53ee8cc1Swenshuai.xi //VDEC FW TYPE 1452*53ee8cc1Swenshuai.xi typedef enum 1453*53ee8cc1Swenshuai.xi { 1454*53ee8cc1Swenshuai.xi E_VDEC_EX_FW_TYPE_MVD = 0, 1455*53ee8cc1Swenshuai.xi E_VDEC_EX_FW_TYPE_HVD, 1456*53ee8cc1Swenshuai.xi } VDEC_EX_FwType; 1457*53ee8cc1Swenshuai.xi 1458*53ee8cc1Swenshuai.xi /// DecodeMode for f/w tasks 1459*53ee8cc1Swenshuai.xi typedef enum 1460*53ee8cc1Swenshuai.xi { 1461*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_MODE_DUAL_INDIE = 0, ///< Two independent tasks 1462*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_MODE_DUAL_3D, ///< Two dependent tasks for 3D 1463*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_MODE_SINGLE, ///< One task use the whole SRAM 1464*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_MODE_MVC = E_VDEC_EX_DEC_MODE_SINGLE, 1465*53ee8cc1Swenshuai.xi } VDEC_EX_DEC_MODE; 1466*53ee8cc1Swenshuai.xi 1467*53ee8cc1Swenshuai.xi 1468*53ee8cc1Swenshuai.xi typedef enum 1469*53ee8cc1Swenshuai.xi { 1470*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_NONE, 1471*53ee8cc1Swenshuai.xi 1472*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_MP2_MAIN, 1473*53ee8cc1Swenshuai.xi 1474*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_MP4_ASP, 1475*53ee8cc1Swenshuai.xi 1476*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H263_BASELINE, 1477*53ee8cc1Swenshuai.xi 1478*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_VC1_AP, 1479*53ee8cc1Swenshuai.xi 1480*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_RCV_MAIN, 1481*53ee8cc1Swenshuai.xi 1482*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_VP9_0, 1483*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_VP9_2, 1484*53ee8cc1Swenshuai.xi 1485*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_CBP, 1486*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_BP, 1487*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_XP, 1488*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_MP, 1489*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_HIP, 1490*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_PHIP, 1491*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_CHIP, 1492*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_HI10P, 1493*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_HI422P, 1494*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H264_HI444PP, 1495*53ee8cc1Swenshuai.xi 1496*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN, 1497*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN_10, 1498*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN_12, 1499*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN_422_10, 1500*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN_422_12, 1501*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN_444, 1502*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN_444_10, 1503*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_H265_MAIN_444_12, 1504*53ee8cc1Swenshuai.xi 1505*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_AVS_BROADCASTING, 1506*53ee8cc1Swenshuai.xi 1507*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_DVAV_PER, // profile 0 1508*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_DVAV_PEN, // profile 1 1509*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_DVHE_DER, // profile 2 1510*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_DVHE_DEN, // profile 3 1511*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_DVHE_DTR, // profile 4 1512*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_DVHE_STN, // profile 5 1513*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_DVHE_DTH, // profile 6 1514*53ee8cc1Swenshuai.xi 1515*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_PROFILE_INVALID = 0xFFFFFFFF, 1516*53ee8cc1Swenshuai.xi } VDEC_EX_CODEC_CAP_PROFILE_INFO; 1517*53ee8cc1Swenshuai.xi 1518*53ee8cc1Swenshuai.xi typedef enum 1519*53ee8cc1Swenshuai.xi { 1520*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_NONE, 1521*53ee8cc1Swenshuai.xi 1522*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_MP2_HIGH, 1523*53ee8cc1Swenshuai.xi 1524*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_MP4_L5, 1525*53ee8cc1Swenshuai.xi 1526*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_VC1_L3, 1527*53ee8cc1Swenshuai.xi 1528*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_RCV_HIGH, 1529*53ee8cc1Swenshuai.xi 1530*53ee8cc1Swenshuai.xi 1531*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_1, 1532*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_1B, 1533*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_1_1, 1534*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_1_2, 1535*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_1_3, 1536*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_2, 1537*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_2_1, 1538*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_2_2, 1539*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_3, 1540*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_3_1, 1541*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_3_2, 1542*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_4, 1543*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_4_1, 1544*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_4_2, 1545*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_5, 1546*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_5_1, 1547*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H264_5_2, 1548*53ee8cc1Swenshuai.xi 1549*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_1, 1550*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_2, 1551*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_2_1, 1552*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_3, 1553*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_3_1, 1554*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_4_MT, 1555*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_4_HT, 1556*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_4_1_MT, 1557*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_4_1_HT, 1558*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_5_MT, 1559*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_5_HT, 1560*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_5_1_MT, 1561*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_5_1_HT, 1562*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_5_2_MT, 1563*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_5_2_HT, 1564*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_6_MT, 1565*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_6_HT, 1566*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_6_1_MT, 1567*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_6_1_HT, 1568*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_6_2_MT, 1569*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_H265_6_2_HT, 1570*53ee8cc1Swenshuai.xi 1571*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_AVS_6010860, 1572*53ee8cc1Swenshuai.xi 1573*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_1, // 720p@24p 1574*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_2, // 720p@30p 1575*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_3, // FHD@30p 1576*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_4, // FHD@48p 1577*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_5, // FHD@60p 1578*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_6, // 4K@24p 1579*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_7, // 4K@30p 1580*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_8, // 4K@48p 1581*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_LEVEL_DV_9, // 4K@60p 1582*53ee8cc1Swenshuai.xi } VDEC_EX_CODEC_CAP_LEVEL_INFO; 1583*53ee8cc1Swenshuai.xi 1584*53ee8cc1Swenshuai.xi 1585*53ee8cc1Swenshuai.xi typedef enum 1586*53ee8cc1Swenshuai.xi { 1587*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_VERSION_NONE, 1588*53ee8cc1Swenshuai.xi 1589*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_VERSION_DIVX_311, 1590*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_VERSION_DIVX_4, 1591*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_VERSION_DIVX_5, 1592*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_VERSION_DIVX_6, 1593*53ee8cc1Swenshuai.xi 1594*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_VERSION_FLV_1, 1595*53ee8cc1Swenshuai.xi 1596*53ee8cc1Swenshuai.xi E_VDEC_EX_CODEC_VERSION_H263_1, 1597*53ee8cc1Swenshuai.xi 1598*53ee8cc1Swenshuai.xi } VDEC_EX_CODEC_CAP_VERSION_INFO; 1599*53ee8cc1Swenshuai.xi 1600*53ee8cc1Swenshuai.xi 1601*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_DV_OTT_API 1602*53ee8cc1Swenshuai.xi typedef enum 1603*53ee8cc1Swenshuai.xi { 1604*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_META_REORDER_DEFAULT, 1605*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_META_REORDER_FOLLOW_BL, 1606*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_META_REORDER_FOLLOW_EL, 1607*53ee8cc1Swenshuai.xi } VDEC_EX_DV_METADATA_REORDER; 1608*53ee8cc1Swenshuai.xi 1609*53ee8cc1Swenshuai.xi typedef enum 1610*53ee8cc1Swenshuai.xi { 1611*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_DV_SUPPORT_PROFILE = 0, 1612*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_DV_SUPPORT_LEVEL, 1613*53ee8cc1Swenshuai.xi E_VDEC_EX_SET_DV_INFO,//set profile and level 1614*53ee8cc1Swenshuai.xi } VDEC_EX_DV_CMD_TYPE; 1615*53ee8cc1Swenshuai.xi 1616*53ee8cc1Swenshuai.xi typedef enum 1617*53ee8cc1Swenshuai.xi { 1618*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_UNSUPPORTED = 0x0, 1619*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_DVAV_PER = 0x1, 1620*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_DVAV_PEN = 0x2, 1621*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_DVHE_DER = 0x4, 1622*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_DVHE_DEN = 0x8, 1623*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_DVHE_DTR = 0x10, 1624*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_DVHE_STN = 0x20, 1625*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_PROFILE_ID_DVHE_DTH = 0x40, 1626*53ee8cc1Swenshuai.xi } VDEC_EX_DV_Stream_Profile; 1627*53ee8cc1Swenshuai.xi 1628*53ee8cc1Swenshuai.xi typedef enum 1629*53ee8cc1Swenshuai.xi { 1630*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_UNSUPPORTED = 0, 1631*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_HD24, 1632*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_HD30, 1633*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_FHD24, 1634*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_FHD30, 1635*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_FHD60, 1636*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_UHD24, 1637*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_UHD30, 1638*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_UHD48, 1639*53ee8cc1Swenshuai.xi E_VDEC_EX_DV_STREAM_LEVEL_ID_UHD60, 1640*53ee8cc1Swenshuai.xi } VDEC_EX_DV_Stream_Highest_Level; 1641*53ee8cc1Swenshuai.xi #endif 1642*53ee8cc1Swenshuai.xi 1643*53ee8cc1Swenshuai.xi //Not support info enum 1644*53ee8cc1Swenshuai.xi typedef enum 1645*53ee8cc1Swenshuai.xi { 1646*53ee8cc1Swenshuai.xi E_VDEC_EX_NOT_SUPPORT_PROFILE = VDEC_EX_BIT(0), ///Profile not support 1647*53ee8cc1Swenshuai.xi E_VDEC_EX_NOT_SUPPORT_SPS_ID = VDEC_EX_BIT(1), ///SPS ID not support 1648*53ee8cc1Swenshuai.xi E_VDEC_EX_NOT_SUPPORT_CHROMA_FORMAT = VDEC_EX_BIT(2),///Chroma format not support 1649*53ee8cc1Swenshuai.xi E_VDEC_EX_NOT_SUPPORT_MAX_FRAME_NUM = VDEC_EX_BIT(3),///Max frame number not support 1650*53ee8cc1Swenshuai.xi } VDEC_EX_NotSupportInfo; 1651*53ee8cc1Swenshuai.xi 1652*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1653*53ee8cc1Swenshuai.xi { 1654*53ee8cc1Swenshuai.xi VDEC_EX_Stream eStream; 1655*53ee8cc1Swenshuai.xi VDEC_EX_CodecType eCodecType; 1656*53ee8cc1Swenshuai.xi } VDEC_EX_CodecInfo; 1657*53ee8cc1Swenshuai.xi 1658*53ee8cc1Swenshuai.xi /// Configurations of f/w decode mode 1659*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1660*53ee8cc1Swenshuai.xi { 1661*53ee8cc1Swenshuai.xi VDEC_EX_DEC_MODE eDecMod; 1662*53ee8cc1Swenshuai.xi VDEC_EX_CodecInfo pstCodecInfo[VDEC_MAX_DEC_NUM]; 1663*53ee8cc1Swenshuai.xi MS_U8 u8CodecCnt; 1664*53ee8cc1Swenshuai.xi MS_U8 u8ArgSize; 1665*53ee8cc1Swenshuai.xi MS_U32 u32Arg; //ref VDEC_EX_DEC_MODE_ARG enum 1666*53ee8cc1Swenshuai.xi } VDEC_EX_DecModCfg; 1667*53ee8cc1Swenshuai.xi 1668*53ee8cc1Swenshuai.xi ///STC mode enum 1669*53ee8cc1Swenshuai.xi typedef enum 1670*53ee8cc1Swenshuai.xi { 1671*53ee8cc1Swenshuai.xi E_VDEC_EX_STC0=0, ///STC Sync mode , sync with STC 0 1672*53ee8cc1Swenshuai.xi E_VDEC_EX_STC1, ///STC Sync mode , sync with STC 1 1673*53ee8cc1Swenshuai.xi E_VDEC_EX_STC2, ///STC Sync mode , sync with STC 2 1674*53ee8cc1Swenshuai.xi E_VDEC_EX_STC3, ///STC Sync mode , sync with STC 3 1675*53ee8cc1Swenshuai.xi }VDEC_EX_STCMode; 1676*53ee8cc1Swenshuai.xi 1677*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1678*53ee8cc1Swenshuai.xi { 1679*53ee8cc1Swenshuai.xi MS_BOOL bEnable; // 0 : disable , 1:enable 1680*53ee8cc1Swenshuai.xi MS_U8 u8DisplayTop; // 0: display top, 1: display bottom 1681*53ee8cc1Swenshuai.xi }VDEC_EX_Field_Polarity; 1682*53ee8cc1Swenshuai.xi 1683*53ee8cc1Swenshuai.xi /// argument of DecodeMode structure for f/w tasks 1684*53ee8cc1Swenshuai.xi typedef enum 1685*53ee8cc1Swenshuai.xi { 1686*53ee8cc1Swenshuai.xi //Group1:Set Korea3DTV mode 1687*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_KR3D_MODE_BASE = 0x0000, 1688*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_KR3D_INTERLACE_MODE = E_VDEC_EX_DEC_KR3D_MODE_BASE, 1689*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_KR3D_FORCE_P_MODE, 1690*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_KR3D_INTERLACE_TWO_PITCH, 1691*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_KR3D_FORCE_P_TWO_PITCH, 1692*53ee8cc1Swenshuai.xi 1693*53ee8cc1Swenshuai.xi //Group2:Set PIP mode 1694*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_PIP_MODE_BASE = 0x1000, 1695*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_PIP_SYNC_INDIE = E_VDEC_EX_DEC_PIP_MODE_BASE, 1696*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_PIP_SYNC_MAIN_STC, 1697*53ee8cc1Swenshuai.xi E_VDEC_EX_DEC_PIP_SYNC_SWITCH 1698*53ee8cc1Swenshuai.xi } VDEC_EX_DEC_MODE_ARG; 1699*53ee8cc1Swenshuai.xi 1700*53ee8cc1Swenshuai.xi typedef enum 1701*53ee8cc1Swenshuai.xi { 1702*53ee8cc1Swenshuai.xi E_VDEC_EX_DIU_DRAM = 0, //MCU mode 1703*53ee8cc1Swenshuai.xi E_VDEC_EX_DIU_HVD = 1, 1704*53ee8cc1Swenshuai.xi E_VDEC_EX_DIU_MVD = 2, 1705*53ee8cc1Swenshuai.xi E_VDEC_EX_DIU_HVD_3DLR = 3, //MVC 1706*53ee8cc1Swenshuai.xi E_VDEC_EX_DIU_MVD_3DLR = 4, //Korea3D, WMV3D 1707*53ee8cc1Swenshuai.xi E_VDEC_EX_DIU_UNKNOWN = -1 1708*53ee8cc1Swenshuai.xi } VDEC_EX_DIU; 1709*53ee8cc1Swenshuai.xi 1710*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1711*53ee8cc1Swenshuai.xi { 1712*53ee8cc1Swenshuai.xi MS_U32 u32version; 1713*53ee8cc1Swenshuai.xi MS_U32 u32size; 1714*53ee8cc1Swenshuai.xi } VDEC_EX_VerCtl; 1715*53ee8cc1Swenshuai.xi 1716*53ee8cc1Swenshuai.xi /// Data structure of CC Configuration 1717*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1718*53ee8cc1Swenshuai.xi { 1719*53ee8cc1Swenshuai.xi VDEC_EX_CCFormat eFormat; 1720*53ee8cc1Swenshuai.xi VDEC_EX_CCType eType; 1721*53ee8cc1Swenshuai.xi MS_VIRT u32BufStAdd; 1722*53ee8cc1Swenshuai.xi MS_U32 u32BufSize; 1723*53ee8cc1Swenshuai.xi } VDEC_EX_CCCfg; 1724*53ee8cc1Swenshuai.xi 1725*53ee8cc1Swenshuai.xi 1726*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1727*53ee8cc1Swenshuai.xi { 1728*53ee8cc1Swenshuai.xi MS_U64 u64PTS; 1729*53ee8cc1Swenshuai.xi MS_U32 u32POC; 1730*53ee8cc1Swenshuai.xi MS_U8 u8FrameType; 1731*53ee8cc1Swenshuai.xi } VDEC_EX_PVR_Seamless_Info; 1732*53ee8cc1Swenshuai.xi 1733*53ee8cc1Swenshuai.xi 1734*53ee8cc1Swenshuai.xi /// information for display setting 1735*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1736*53ee8cc1Swenshuai.xi { 1737*53ee8cc1Swenshuai.xi ///bitstream horizontal size 1738*53ee8cc1Swenshuai.xi MS_U16 u16HorSize; 1739*53ee8cc1Swenshuai.xi ///bitstream vertical size 1740*53ee8cc1Swenshuai.xi MS_U16 u16VerSize; 1741*53ee8cc1Swenshuai.xi ///frame rate 1742*53ee8cc1Swenshuai.xi MS_U32 u32FrameRate; 1743*53ee8cc1Swenshuai.xi ///interlace flag 1744*53ee8cc1Swenshuai.xi MS_U8 u8Interlace; 1745*53ee8cc1Swenshuai.xi ///active frame code 1746*53ee8cc1Swenshuai.xi MS_U8 u8AFD; 1747*53ee8cc1Swenshuai.xi ///Sample aspect rate width 1748*53ee8cc1Swenshuai.xi MS_U16 u16SarWidth; 1749*53ee8cc1Swenshuai.xi ///Sample aspect rate height 1750*53ee8cc1Swenshuai.xi MS_U16 u16SarHeight; 1751*53ee8cc1Swenshuai.xi ///right cropping 1752*53ee8cc1Swenshuai.xi MS_U16 u16CropRight; 1753*53ee8cc1Swenshuai.xi ///left cropping 1754*53ee8cc1Swenshuai.xi MS_U16 u16CropLeft; 1755*53ee8cc1Swenshuai.xi ///bottom cropping 1756*53ee8cc1Swenshuai.xi MS_U16 u16CropBottom; 1757*53ee8cc1Swenshuai.xi ///top cropping 1758*53ee8cc1Swenshuai.xi MS_U16 u16CropTop; 1759*53ee8cc1Swenshuai.xi ///pitch 1760*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; 1761*53ee8cc1Swenshuai.xi ///interval of PTS 1762*53ee8cc1Swenshuai.xi MS_U16 u16PTSInterval; 1763*53ee8cc1Swenshuai.xi ///MPEG1 flag 1764*53ee8cc1Swenshuai.xi MS_U8 u8MPEG1; 1765*53ee8cc1Swenshuai.xi ///play mode (fixme) 1766*53ee8cc1Swenshuai.xi MS_U8 u8PlayMode; 1767*53ee8cc1Swenshuai.xi ///FRC mode 1768*53ee8cc1Swenshuai.xi MS_U8 u8FrcMode; 1769*53ee8cc1Swenshuai.xi ///aspect ratio code 1770*53ee8cc1Swenshuai.xi MS_U8 u8AspectRate; 1771*53ee8cc1Swenshuai.xi ///if FALSE, set VOP as mono mode (only for H264) 1772*53ee8cc1Swenshuai.xi MS_BOOL bWithChroma; 1773*53ee8cc1Swenshuai.xi /// if true, color space is xvYCC (Y from 16 to 235 and Cb , Cr from 16 to 240). 1774*53ee8cc1Swenshuai.xi /// if false, color space is BT.601/709 (Y from 0 to 255 and Cb , Cr from 0 to 255). 1775*53ee8cc1Swenshuai.xi /// only MPEG might be with BT.601/709 1776*53ee8cc1Swenshuai.xi MS_BOOL bColorInXVYCC; 1777*53ee8cc1Swenshuai.xi ///Dynamic scaling buffer address 1778*53ee8cc1Swenshuai.xi MS_VIRT u32DynScalingAddr; 1779*53ee8cc1Swenshuai.xi ///Dynamic scaling buffer size 1780*53ee8cc1Swenshuai.xi MS_U32 u32DynScalingSize; 1781*53ee8cc1Swenshuai.xi ///Dynamic scaling depth 1782*53ee8cc1Swenshuai.xi MS_U8 u8DynScalingDepth; 1783*53ee8cc1Swenshuai.xi ///Dynamic scaling DS buffer on miu1 or miu0 1784*53ee8cc1Swenshuai.xi MS_BOOL bEnableMIUSel; 1785*53ee8cc1Swenshuai.xi ///Display width 1786*53ee8cc1Swenshuai.xi MS_U32 u32AspectWidth; 1787*53ee8cc1Swenshuai.xi ///Display height 1788*53ee8cc1Swenshuai.xi MS_U32 u32AspectHeight; 1789*53ee8cc1Swenshuai.xi } VDEC_EX_DispInfo; 1790*53ee8cc1Swenshuai.xi 1791*53ee8cc1Swenshuai.xi /// information for display setting 1792*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1793*53ee8cc1Swenshuai.xi { 1794*53ee8cc1Swenshuai.xi MS_U16 u16VideoResolutionWidth; 1795*53ee8cc1Swenshuai.xi MS_U16 u16VideoResolutionHeight; 1796*53ee8cc1Swenshuai.xi MS_U16 u16DisplayResolutionWidth; 1797*53ee8cc1Swenshuai.xi MS_U16 u16DisplayResolutionHeight; 1798*53ee8cc1Swenshuai.xi MS_U32 u32FrameRateFixed; 1799*53ee8cc1Swenshuai.xi MS_U32 u32FrameRateVariable; 1800*53ee8cc1Swenshuai.xi MS_U32 u32FrameRateExplicit; 1801*53ee8cc1Swenshuai.xi MS_U16 u16DisplayAspectRatioWidth; 1802*53ee8cc1Swenshuai.xi MS_U16 u16DisplayAspectRatioHeight; 1803*53ee8cc1Swenshuai.xi MS_U16 u16StorageAspectRatioWidth; 1804*53ee8cc1Swenshuai.xi MS_U16 u16StorageAspectRatioHeight; 1805*53ee8cc1Swenshuai.xi MS_U16 u16PixelAspectratioWidth; 1806*53ee8cc1Swenshuai.xi MS_U16 u16PixelAspectratioHeight; 1807*53ee8cc1Swenshuai.xi MS_U8 u8ScanType; 1808*53ee8cc1Swenshuai.xi MS_BOOL bOverScan; 1809*53ee8cc1Swenshuai.xi MS_U8 u8FramePack; 1810*53ee8cc1Swenshuai.xi MS_U32 u32EncodedFormatProfile; 1811*53ee8cc1Swenshuai.xi MS_U32 u32EncodedFormatProfileLevel; 1812*53ee8cc1Swenshuai.xi MS_U8 u8BitsPerComponent; 1813*53ee8cc1Swenshuai.xi } VDEC_EX_ExtendDispInfo; 1814*53ee8cc1Swenshuai.xi 1815*53ee8cc1Swenshuai.xi /// system configuration 1816*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1817*53ee8cc1Swenshuai.xi { 1818*53ee8cc1Swenshuai.xi ///FW binary start address 1819*53ee8cc1Swenshuai.xi MS_PHY u32FWBinaryAddr; 1820*53ee8cc1Swenshuai.xi ///FW binary size 1821*53ee8cc1Swenshuai.xi MS_SIZE u32FWBinarySize; 1822*53ee8cc1Swenshuai.xi ///FW code buffer start address 1823*53ee8cc1Swenshuai.xi MS_PHY u32CodeBufAddr; 1824*53ee8cc1Swenshuai.xi ///FW code buffer size 1825*53ee8cc1Swenshuai.xi MS_SIZE u32CodeBufSize; 1826*53ee8cc1Swenshuai.xi ///frame buffer start address 1827*53ee8cc1Swenshuai.xi MS_PHY u32FrameBufAddr; 1828*53ee8cc1Swenshuai.xi ///frame buffer size 1829*53ee8cc1Swenshuai.xi MS_SIZE u32FrameBufSize; 1830*53ee8cc1Swenshuai.xi ///bitstream buffer start address 1831*53ee8cc1Swenshuai.xi MS_PHY u32BitstreamBufAddr; 1832*53ee8cc1Swenshuai.xi ///bitstream buffer size 1833*53ee8cc1Swenshuai.xi MS_SIZE u32BitstreamBufSize; 1834*53ee8cc1Swenshuai.xi ///driver process buffer start address 1835*53ee8cc1Swenshuai.xi MS_PHY u32DrvProcBufAddr; 1836*53ee8cc1Swenshuai.xi ///driver process buffer size 1837*53ee8cc1Swenshuai.xi MS_SIZE u32DrvProcBufSize; 1838*53ee8cc1Swenshuai.xi ///vlc table Binary address (RM only) 1839*53ee8cc1Swenshuai.xi MS_PHY u32VlcBinarySrcAddr; 1840*53ee8cc1Swenshuai.xi ///vld table Binary size 1841*53ee8cc1Swenshuai.xi MS_SIZE u32VlcTabBinarySize; 1842*53ee8cc1Swenshuai.xi ///debug level setting 1843*53ee8cc1Swenshuai.xi VDEC_EX_DbgLevel eDbgMsgLevel; 1844*53ee8cc1Swenshuai.xi ///debug level setting 1845*53ee8cc1Swenshuai.xi VDEC_EX_FWSourceType eFWSourceType; 1846*53ee8cc1Swenshuai.xi } VDEC_EX_SysCfg; 1847*53ee8cc1Swenshuai.xi 1848*53ee8cc1Swenshuai.xi /// video information 1849*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1850*53ee8cc1Swenshuai.xi { 1851*53ee8cc1Swenshuai.xi ///input source mode 1852*53ee8cc1Swenshuai.xi VDEC_EX_SrcMode eSrcMode; 1853*53ee8cc1Swenshuai.xi /// timestamp type of command queue 1854*53ee8cc1Swenshuai.xi VDEC_EX_TimeStampType eTimeStampType; 1855*53ee8cc1Swenshuai.xi ///MJPEG scale factor 1856*53ee8cc1Swenshuai.xi VDEC_EX_MJpegScaleFactor eMJpegScaleFactor; 1857*53ee8cc1Swenshuai.xi /// should be TRUE when codec type is H264 and container is MKV and MP4(MOV) 1858*53ee8cc1Swenshuai.xi MS_BOOL bWithoutNalStCode; 1859*53ee8cc1Swenshuai.xi /// needness when CodecType is MJPEG and divx311 1860*53ee8cc1Swenshuai.xi //MS_U16 u16FrameRate; 1861*53ee8cc1Swenshuai.xi MS_U32 u32FrameRate; 1862*53ee8cc1Swenshuai.xi MS_U32 u32FrameRateBase; 1863*53ee8cc1Swenshuai.xi /// if divx311; use u16Width[0]; only need other elements when RV8 1864*53ee8cc1Swenshuai.xi MS_U16 u16Width[8]; 1865*53ee8cc1Swenshuai.xi /// if divx311; use u16Height[0]; only need other elements when RV8 1866*53ee8cc1Swenshuai.xi MS_U16 u16Height[8]; 1867*53ee8cc1Swenshuai.xi /// video number sizes (for RM) 1868*53ee8cc1Swenshuai.xi MS_U16 u16NumSizes; 1869*53ee8cc1Swenshuai.xi } VDEC_EX_VideoInfo; 1870*53ee8cc1Swenshuai.xi 1871*53ee8cc1Swenshuai.xi /// frame information 1872*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1873*53ee8cc1Swenshuai.xi { 1874*53ee8cc1Swenshuai.xi /// frame buffer base + the start offset of current displayed luma data. Unit: byte. 1875*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddr; 1876*53ee8cc1Swenshuai.xi /// frame buffer base + the start offset of current displayed chroma data. Unit: byte. 1877*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddr; 1878*53ee8cc1Swenshuai.xi /// Time stamp(DTS, PTS) of current displayed frame. Unit: ms (todo: 90khz) 1879*53ee8cc1Swenshuai.xi MS_U32 u32TimeStamp; 1880*53ee8cc1Swenshuai.xi /// low part of ID number 1881*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; 1882*53ee8cc1Swenshuai.xi /// high part of ID number 1883*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; 1884*53ee8cc1Swenshuai.xi /// pitch 1885*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; 1886*53ee8cc1Swenshuai.xi /// width 1887*53ee8cc1Swenshuai.xi MS_U16 u16Width; 1888*53ee8cc1Swenshuai.xi /// hight 1889*53ee8cc1Swenshuai.xi MS_U16 u16Height; 1890*53ee8cc1Swenshuai.xi ///< Frame type: I, P, B frame 1891*53ee8cc1Swenshuai.xi VDEC_EX_FrameType eFrameType; 1892*53ee8cc1Swenshuai.xi ///< Field type: Top, Bottom, Both 1893*53ee8cc1Swenshuai.xi VDEC_EX_FieldType eFieldType; 1894*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfo; 1895*53ee8cc1Swenshuai.xi 1896*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1897*53ee8cc1Swenshuai.xi { 1898*53ee8cc1Swenshuai.xi /// frame Info 1st version 1899*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfo sFrameInfo; 1900*53ee8cc1Swenshuai.xi /// Luma LSB address of 10bits. (8bit + 2bit seperate) 1901*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddr_2bit; 1902*53ee8cc1Swenshuai.xi /// Chroma LSB address of 10bits. (8bit + 2bit seperate) 1903*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddr_2bit; 1904*53ee8cc1Swenshuai.xi /// Luma data bitdepth, support 8~10bits now 1905*53ee8cc1Swenshuai.xi MS_U8 u8LumaBitdepth; 1906*53ee8cc1Swenshuai.xi /// chroma data bitdepth, support 8~10bits now 1907*53ee8cc1Swenshuai.xi MS_U8 u8ChromaBitdepth; 1908*53ee8cc1Swenshuai.xi /// pitch of 2bits frame buffer 1909*53ee8cc1Swenshuai.xi MS_U16 u16Pitch_2bit; 1910*53ee8cc1Swenshuai.xi /// future usage 1911*53ee8cc1Swenshuai.xi MS_U8 u8Reserved[64]; 1912*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoEX; 1913*53ee8cc1Swenshuai.xi ///Qos info 1914*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1915*53ee8cc1Swenshuai.xi { 1916*53ee8cc1Swenshuai.xi /// VDEC_EX_FrameQoSInfo version control: 0, 1, 2...etc 1917*53ee8cc1Swenshuai.xi VDEC_EX_VerCtl stVerCtl; 1918*53ee8cc1Swenshuai.xi /// The minimum QP value of a picture 1919*53ee8cc1Swenshuai.xi MS_S16 s16MinQp; 1920*53ee8cc1Swenshuai.xi /// The average QP value of a picture 1921*53ee8cc1Swenshuai.xi MS_S16 s16AvgQp; 1922*53ee8cc1Swenshuai.xi /// The maximum QP value of a picture 1923*53ee8cc1Swenshuai.xi MS_S16 s16MaxQp; 1924*53ee8cc1Swenshuai.xi /// The minimum MV value of a picture 1925*53ee8cc1Swenshuai.xi MS_S16 s16MinMV; 1926*53ee8cc1Swenshuai.xi /// The average MV value of a picture 1927*53ee8cc1Swenshuai.xi MS_S16 s16AvgMV; 1928*53ee8cc1Swenshuai.xi /// The maximum MV value of a picture 1929*53ee8cc1Swenshuai.xi MS_S16 s16MaxMV; 1930*53ee8cc1Swenshuai.xi /// The number of skip MV of a picture 1931*53ee8cc1Swenshuai.xi MS_U32 u32SkipMV; 1932*53ee8cc1Swenshuai.xi /// The number of non-skip MV of a picture 1933*53ee8cc1Swenshuai.xi MS_U32 u32NonSkipMV; 1934*53ee8cc1Swenshuai.xi } VDEC_EX_FrameQoSInfo; 1935*53ee8cc1Swenshuai.xi 1936*53ee8cc1Swenshuai.xi typedef struct 1937*53ee8cc1Swenshuai.xi { 1938*53ee8cc1Swenshuai.xi MS_BOOL bUsed; 1939*53ee8cc1Swenshuai.xi MS_BOOL bContentLightLevelEnabled; 1940*53ee8cc1Swenshuai.xi MS_U16 u16MaxContentLightLevel; 1941*53ee8cc1Swenshuai.xi MS_U16 u16MaxPicAverageLightLevel; 1942*53ee8cc1Swenshuai.xi } VDEC_EX_ContentLightLevelInfo_SEI; 1943*53ee8cc1Swenshuai.xi 1944*53ee8cc1Swenshuai.xi 1945*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_DV_OTT_API 1946*53ee8cc1Swenshuai.xi typedef struct 1947*53ee8cc1Swenshuai.xi { 1948*53ee8cc1Swenshuai.xi MS_U32 u32DVSupportProfiles; 1949*53ee8cc1Swenshuai.xi VDEC_EX_DV_Stream_Profile eDVProfile; 1950*53ee8cc1Swenshuai.xi VDEC_EX_DV_Stream_Highest_Level eDVLevel; 1951*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_DV_OTT_API_V2 1952*53ee8cc1Swenshuai.xi VDEC_EX_DV_METADATA_REORDER eDVMetaReorder; 1953*53ee8cc1Swenshuai.xi #else 1954*53ee8cc1Swenshuai.xi VDEC_EX_DV_CMD_TYPE eDVCmdType; 1955*53ee8cc1Swenshuai.xi #endif 1956*53ee8cc1Swenshuai.xi }VDEC_EX_DV_Info; 1957*53ee8cc1Swenshuai.xi #endif 1958*53ee8cc1Swenshuai.xi 1959*53ee8cc1Swenshuai.xi 1960*53ee8cc1Swenshuai.xi //Extension of frame info(VDEC_EX_FrameInfoEX) 1961*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1962*53ee8cc1Swenshuai.xi { 1963*53ee8cc1Swenshuai.xi /// VDEC_EX_FrameInfoExt version control: 0, 1, 2...etc 1964*53ee8cc1Swenshuai.xi VDEC_EX_VerCtl stVerCtl; 1965*53ee8cc1Swenshuai.xi /// FrameInfo structure 1966*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfo sFrameInfo; 1967*53ee8cc1Swenshuai.xi /// physical address of Luma LSB 2bit buffer (Main10 profile) 1968*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddr_2bit; 1969*53ee8cc1Swenshuai.xi /// physical address of Chroma LSB 2bit buffer (Main10 profile) 1970*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddr_2bit; 1971*53ee8cc1Swenshuai.xi /// physical address of Luma bottom field (interlace) 1972*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddrI; 1973*53ee8cc1Swenshuai.xi /// physical address of Luma LSB 2bit bottom field (interlace) 1974*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddrI_2bit; 1975*53ee8cc1Swenshuai.xi /// physical address of Chroma bottom field (interlace) 1976*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddrI; 1977*53ee8cc1Swenshuai.xi /// physical address of Chroma LSB 2bit bottom field (interlace) 1978*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddrI_2bit; 1979*53ee8cc1Swenshuai.xi /// Mstar Frame buffer Codec Information 1980*53ee8cc1Swenshuai.xi MS_U32 u32MFCodecInfo; 1981*53ee8cc1Swenshuai.xi /// MFcodec bitlen buffer address of Luma 1982*53ee8cc1Swenshuai.xi MS_U32 u32LumaMFCbitlen; 1983*53ee8cc1Swenshuai.xi /// MFcodec bitlen buffer address of Chroma 1984*53ee8cc1Swenshuai.xi MS_U32 u32ChromaMFCbitlen; 1985*53ee8cc1Swenshuai.xi /// pitch of 2bits frame buffer 1986*53ee8cc1Swenshuai.xi MS_U16 u16Pitch_2bit; 1987*53ee8cc1Swenshuai.xi /// Luma Frame bitdepth, support 8~10bits now 1988*53ee8cc1Swenshuai.xi MS_U8 u8LumaBitdepth; 1989*53ee8cc1Swenshuai.xi /// Chroma Frame bitdepth, support 8~10bits now 1990*53ee8cc1Swenshuai.xi MS_U8 u8ChromaBitdepth; 1991*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_HEVC_HDR 1992*53ee8cc1Swenshuai.xi /// HVD_MasteringDisplayColourVolume start 1993*53ee8cc1Swenshuai.xi MS_U32 maxLuminance; 1994*53ee8cc1Swenshuai.xi MS_U32 minLuminance; 1995*53ee8cc1Swenshuai.xi MS_U16 primaries[3][2]; 1996*53ee8cc1Swenshuai.xi MS_U16 whitePoint[2]; 1997*53ee8cc1Swenshuai.xi ///bit[1]: SEI_Enabled, bit[0]: colur_description_present_flag 1998*53ee8cc1Swenshuai.xi MS_U8 Frm_Info_Ext_avail; 1999*53ee8cc1Swenshuai.xi //colour_description start// 2000*53ee8cc1Swenshuai.xi MS_U8 colour_primaries; 2001*53ee8cc1Swenshuai.xi MS_U8 transfer_characteristics; 2002*53ee8cc1Swenshuai.xi MS_U8 matrix_coefficients; 2003*53ee8cc1Swenshuai.xi //colour_description end// 2004*53ee8cc1Swenshuai.xi #endif 2005*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt; 2006*53ee8cc1Swenshuai.xi #if !(defined(UFO_PUBLIC_HEADER_500)||defined(UFO_PUBLIC_HEADER_212)||defined(UFO_PUBLIC_HEADER_500_3)) 2007*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2008*53ee8cc1Swenshuai.xi { 2009*53ee8cc1Swenshuai.xi VDEC_EX_VerCtl stVerCtl; /// version : 0, 2010*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfo sFrameInfo; 2011*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddr_2bit; 2012*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddr_2bit; 2013*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddrI; 2014*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddrI_2bit; 2015*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddrI; 2016*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddrI_2bit; 2017*53ee8cc1Swenshuai.xi MS_U32 u32MFCodecInfo; 2018*53ee8cc1Swenshuai.xi MS_U32 u32LumaMFCbitlen; 2019*53ee8cc1Swenshuai.xi MS_U32 u32ChromaMFCbitlen; 2020*53ee8cc1Swenshuai.xi MS_U16 u16Pitch_2bit; 2021*53ee8cc1Swenshuai.xi MS_U8 u8LumaBitdepth; 2022*53ee8cc1Swenshuai.xi MS_U8 u8ChromaBitdepth; 2023*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt_version0; 2024*53ee8cc1Swenshuai.xi #endif 2025*53ee8cc1Swenshuai.xi 2026*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2027*53ee8cc1Swenshuai.xi { 2028*53ee8cc1Swenshuai.xi MS_BOOL bUsed; 2029*53ee8cc1Swenshuai.xi MS_BOOL bColourVolumeSEIEnabled; 2030*53ee8cc1Swenshuai.xi MS_U32 u32MaxLuminance; 2031*53ee8cc1Swenshuai.xi MS_U32 u32MinLuminance; 2032*53ee8cc1Swenshuai.xi MS_U16 u16Primaries[3][2]; 2033*53ee8cc1Swenshuai.xi MS_U16 u16WhitePoint[2]; 2034*53ee8cc1Swenshuai.xi }VDEC_EX_DisplayColourVolume_SEI; 2035*53ee8cc1Swenshuai.xi 2036*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_HEVC_HDR_V2 2037*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2038*53ee8cc1Swenshuai.xi { 2039*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfoExt sFrameInfoExt; 2040*53ee8cc1Swenshuai.xi ////HVD_MasteringDisplayColourVolume// 2041*53ee8cc1Swenshuai.xi VDEC_EX_DisplayColourVolume_SEI sDisplay_colour_volume; 2042*53ee8cc1Swenshuai.xi MS_U8 u8Frm_Info_Ext_avail; ///bit[1]: SEI_Enabled, bit[0]: colur_description_present_flag 2043*53ee8cc1Swenshuai.xi ////colour_description//////////// 2044*53ee8cc1Swenshuai.xi MS_U8 u8Colour_primaries; // u(8) 2045*53ee8cc1Swenshuai.xi MS_U8 u8Transfer_characteristics; // u(8) 2046*53ee8cc1Swenshuai.xi MS_U8 u8Matrix_coefficients; // u(8) 2047*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt_v2; 2048*53ee8cc1Swenshuai.xi #endif 2049*53ee8cc1Swenshuai.xi 2050*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_HEVC_HDR_V3 2051*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2052*53ee8cc1Swenshuai.xi { 2053*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfoExt sFrameInfoExt; 2054*53ee8cc1Swenshuai.xi ////HVD_MasteringDisplayColourVolume// 2055*53ee8cc1Swenshuai.xi VDEC_EX_DisplayColourVolume_SEI sDisplay_colour_volume; 2056*53ee8cc1Swenshuai.xi MS_U8 u8Frm_Info_Ext_avail; ///bit[1]: SEI_Enabled, bit[0]: colur_description_present_flag 2057*53ee8cc1Swenshuai.xi ////colour_description//////////// 2058*53ee8cc1Swenshuai.xi MS_U8 u8Colour_primaries; // u(8) 2059*53ee8cc1Swenshuai.xi MS_U8 u8Transfer_characteristics; // u(8) 2060*53ee8cc1Swenshuai.xi MS_U8 u8Matrix_coefficients; // u(8) 2061*53ee8cc1Swenshuai.xi ////Dolby_Vision//////////// 2062*53ee8cc1Swenshuai.xi MS_U8 u8DVMode; // bit[0:1] 0: Disable 1:Single layer 2: Dual layer, bit[2] 0:Base Layer 1:Enhance Layer 2063*53ee8cc1Swenshuai.xi MS_PHY u32DVMetaDataAddr; 2064*53ee8cc1Swenshuai.xi MS_U32 u32DVMetaDataSize; 2065*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt_v3; 2066*53ee8cc1Swenshuai.xi #endif 2067*53ee8cc1Swenshuai.xi 2068*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_FRAME_INFO_EXT_V4 2069*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2070*53ee8cc1Swenshuai.xi { 2071*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfoExt_v3 sFrameInfoExt_v3; 2072*53ee8cc1Swenshuai.xi //// Dolby Vision HDR //////////// 2073*53ee8cc1Swenshuai.xi MS_U8 u8CurrentIndex; 2074*53ee8cc1Swenshuai.xi MS_PHY u32HDRRegAddr; 2075*53ee8cc1Swenshuai.xi MS_U32 u32HDRRegSize; 2076*53ee8cc1Swenshuai.xi MS_PHY u32HDRLutAddr; 2077*53ee8cc1Swenshuai.xi MS_U32 u32HDRLutSize; 2078*53ee8cc1Swenshuai.xi MS_BOOL bDMEnable; 2079*53ee8cc1Swenshuai.xi MS_BOOL bCompEnable; 2080*53ee8cc1Swenshuai.xi // decoder complexity level // 2081*53ee8cc1Swenshuai.xi MS_U8 u8ComplexityLevel; 2082*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt_v4; 2083*53ee8cc1Swenshuai.xi #endif 2084*53ee8cc1Swenshuai.xi 2085*53ee8cc1Swenshuai.xi 2086*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_FRAME_INFO_EXT_V5 2087*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2088*53ee8cc1Swenshuai.xi { 2089*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfoExt_v4 sFrameInfoExt_v4; 2090*53ee8cc1Swenshuai.xi 2091*53ee8cc1Swenshuai.xi MS_U32 u32ParWidth; 2092*53ee8cc1Swenshuai.xi MS_U32 u32ParHeight; 2093*53ee8cc1Swenshuai.xi MS_U16 u16CropRight; 2094*53ee8cc1Swenshuai.xi MS_U16 u16CropLeft; 2095*53ee8cc1Swenshuai.xi MS_U16 u16CropBottom; 2096*53ee8cc1Swenshuai.xi MS_U16 u16CropTop; 2097*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt_v5; 2098*53ee8cc1Swenshuai.xi #endif 2099*53ee8cc1Swenshuai.xi 2100*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_FRAME_INFO_EXT_V6 2101*53ee8cc1Swenshuai.xi ///V6: for new DV display path(by XC srm), HTLB info 2102*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2103*53ee8cc1Swenshuai.xi { 2104*53ee8cc1Swenshuai.xi /// FrameInfo structure 2105*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfoExt_v5 sFrameInfoExt_v5; 2106*53ee8cc1Swenshuai.xi 2107*53ee8cc1Swenshuai.xi /// Tile Mode 2108*53ee8cc1Swenshuai.xi VDEC_EX_TileMode eTileMode; 2109*53ee8cc1Swenshuai.xi /// Profiling / benchmark 2110*53ee8cc1Swenshuai.xi MS_U16 u16MIUBandwidth; 2111*53ee8cc1Swenshuai.xi /// Bit rate 2112*53ee8cc1Swenshuai.xi MS_U16 u16Bitrate; 2113*53ee8cc1Swenshuai.xi /// HTLB Table Identity 2114*53ee8cc1Swenshuai.xi /// bits: [1:0] HTLB table miu sel, [2] enable, [3] direct mapping 2115*53ee8cc1Swenshuai.xi /// bits: [7:4] reserved 2116*53ee8cc1Swenshuai.xi MS_U8 u8HTLBTableId; 2117*53ee8cc1Swenshuai.xi /// HTLB Entries Size (luma) 2118*53ee8cc1Swenshuai.xi MS_U8 u8HTLBEntriesSize; 2119*53ee8cc1Swenshuai.xi /// HTLB Entries Addr (luma) 2120*53ee8cc1Swenshuai.xi MS_PHY u32HTLBEntriesAddr; 2121*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt_v6; 2122*53ee8cc1Swenshuai.xi #endif 2123*53ee8cc1Swenshuai.xi 2124*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_FRAME_INFO_EXT_V7 2125*53ee8cc1Swenshuai.xi ///V7: Subsample buffer address & pitch(currently 1/2 width and 1/2 height), HTLB info, Content Light info 2126*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2127*53ee8cc1Swenshuai.xi { 2128*53ee8cc1Swenshuai.xi /// FrameInfo structure 2129*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfoExt_v6 sFrameInfoExt_v6; 2130*53ee8cc1Swenshuai.xi 2131*53ee8cc1Swenshuai.xi /// u16Pitch_subsample > 0, then u32LumaAddr_subsample & u32ChromaAddr_subsample can be used. 2132*53ee8cc1Swenshuai.xi /// physical luma address of subsample frame buffer 2133*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddr_subsample; 2134*53ee8cc1Swenshuai.xi /// physical chroma address of subsample frame buffer 2135*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddr_subsample; 2136*53ee8cc1Swenshuai.xi /// pitch of subsample frame buffer 2137*53ee8cc1Swenshuai.xi MS_U16 u16Pitch_subsample; 2138*53ee8cc1Swenshuai.xi /// tile mode of subsample frame buffer 2139*53ee8cc1Swenshuai.xi MS_U8 u8TileMode_subsample; 2140*53ee8cc1Swenshuai.xi 2141*53ee8cc1Swenshuai.xi /// HTLB Table Address 2142*53ee8cc1Swenshuai.xi MS_PHY u32HTLBTableAddr; 2143*53ee8cc1Swenshuai.xi /// HTLB page sizes 2144*53ee8cc1Swenshuai.xi /// bits: [2:0] 1st page size, [6:4] min page size 2145*53ee8cc1Swenshuai.xi MS_U8 u8HTLBPageSizes; 2146*53ee8cc1Swenshuai.xi /// HTLB Entries Size (chroma) 2147*53ee8cc1Swenshuai.xi MS_U8 u8HTLBChromaEntriesSize; 2148*53ee8cc1Swenshuai.xi /// HTLB Entries Addr (chroma) 2149*53ee8cc1Swenshuai.xi MS_PHY u32HTLBChromaEntriesAddr; 2150*53ee8cc1Swenshuai.xi 2151*53ee8cc1Swenshuai.xi /// Max Content Light Level 2152*53ee8cc1Swenshuai.xi MS_U16 u16MaxContentLightLevel; 2153*53ee8cc1Swenshuai.xi /// Max PicAverage Light Level 2154*53ee8cc1Swenshuai.xi MS_U16 u16MaxPicAverageLightLevel; 2155*53ee8cc1Swenshuai.xi } VDEC_EX_FrameInfoExt_v7; 2156*53ee8cc1Swenshuai.xi #endif 2157*53ee8cc1Swenshuai.xi 2158*53ee8cc1Swenshuai.xi /// Extension display information 2159*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2160*53ee8cc1Swenshuai.xi { 2161*53ee8cc1Swenshuai.xi /// vertical size from sequene_display_extension 2162*53ee8cc1Swenshuai.xi MS_U16 u16VSize; 2163*53ee8cc1Swenshuai.xi /// horizontal size from sequene_display_extension 2164*53ee8cc1Swenshuai.xi MS_U16 u16HSize; 2165*53ee8cc1Swenshuai.xi /// vertical offset from picture_display_extension 2166*53ee8cc1Swenshuai.xi MS_S16 s16VOffset; 2167*53ee8cc1Swenshuai.xi /// horizontal offset from picture_display_extension 2168*53ee8cc1Swenshuai.xi MS_S16 s16HOffset; 2169*53ee8cc1Swenshuai.xi } VDEC_EX_ExtDispInfo; 2170*53ee8cc1Swenshuai.xi 2171*53ee8cc1Swenshuai.xi /// display frame information 2172*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2173*53ee8cc1Swenshuai.xi { 2174*53ee8cc1Swenshuai.xi ///< frame information 2175*53ee8cc1Swenshuai.xi VDEC_EX_FrameInfo stFrmInfo; 2176*53ee8cc1Swenshuai.xi ///< firmware private data 2177*53ee8cc1Swenshuai.xi MS_U32 u32PriData; 2178*53ee8cc1Swenshuai.xi ///< index used by apiVDEC to manage VDEC_DispQ[][] 2179*53ee8cc1Swenshuai.xi MS_U32 u32Idx; 2180*53ee8cc1Swenshuai.xi } VDEC_EX_DispFrame; 2181*53ee8cc1Swenshuai.xi 2182*53ee8cc1Swenshuai.xi /// time code structure 2183*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2184*53ee8cc1Swenshuai.xi { 2185*53ee8cc1Swenshuai.xi /// time_code_hours 2186*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodeHr; 2187*53ee8cc1Swenshuai.xi /// time_code_minutes 2188*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodeMin; 2189*53ee8cc1Swenshuai.xi /// time_code_seconds 2190*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodeSec; 2191*53ee8cc1Swenshuai.xi /// time_code_pictures 2192*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodePic; 2193*53ee8cc1Swenshuai.xi /// drop_frame_flag 2194*53ee8cc1Swenshuai.xi MS_U8 u8DropFrmFlag; 2195*53ee8cc1Swenshuai.xi /// reserved fields for 4-byte alignment 2196*53ee8cc1Swenshuai.xi MS_U8 u8Reserved[3]; 2197*53ee8cc1Swenshuai.xi } VDEC_EX_TimeCode; 2198*53ee8cc1Swenshuai.xi 2199*53ee8cc1Swenshuai.xi /// vdec frame buffer reduction 2200*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2201*53ee8cc1Swenshuai.xi { 2202*53ee8cc1Swenshuai.xi VDEC_EX_FBReductionType eLumaFBReduction; 2203*53ee8cc1Swenshuai.xi VDEC_EX_FBReductionType eChromaFBReduction; 2204*53ee8cc1Swenshuai.xi MS_BOOL bEnableAutoMode; /// 0: Disable, 1: Enable 2205*53ee8cc1Swenshuai.xi } VDEC_EX_FBReduction; 2206*53ee8cc1Swenshuai.xi 2207*53ee8cc1Swenshuai.xi /// Initial parameter 2208*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2209*53ee8cc1Swenshuai.xi { 2210*53ee8cc1Swenshuai.xi /// init param version : 0 2211*53ee8cc1Swenshuai.xi MS_U32 u32Version; 2212*53ee8cc1Swenshuai.xi /// codec type 2213*53ee8cc1Swenshuai.xi VDEC_EX_CodecType eCodecType; 2214*53ee8cc1Swenshuai.xi /// system configuration 2215*53ee8cc1Swenshuai.xi VDEC_EX_SysCfg SysConfig; 2216*53ee8cc1Swenshuai.xi /// video information from container 2217*53ee8cc1Swenshuai.xi VDEC_EX_VideoInfo VideoInfo; 2218*53ee8cc1Swenshuai.xi /// dynamic scaling control bit 2219*53ee8cc1Swenshuai.xi MS_BOOL EnableDynaScale; 2220*53ee8cc1Swenshuai.xi /// switch for display decode error frame or not 2221*53ee8cc1Swenshuai.xi MS_BOOL bDisableDropErrFrame; 2222*53ee8cc1Swenshuai.xi /// switch for error concealment 2223*53ee8cc1Swenshuai.xi MS_BOOL bDisableErrConceal; 2224*53ee8cc1Swenshuai.xi /// enable repeat last field when repeat happened at interlace stream 2225*53ee8cc1Swenshuai.xi MS_BOOL bRepeatLastField; 2226*53ee8cc1Swenshuai.xi /// threshold to judge error frame 2227*53ee8cc1Swenshuai.xi MS_U8 u8ErrThreshold; 2228*53ee8cc1Swenshuai.xi /// dynamic scaling virtual box Width 2229*53ee8cc1Swenshuai.xi MS_U32 u32DSVirtualBoxWidth; 2230*53ee8cc1Swenshuai.xi /// dynamic scaling virtual box Height 2231*53ee8cc1Swenshuai.xi MS_U32 u32DSVirtualBoxHeight; 2232*53ee8cc1Swenshuai.xi /// vdec frame buffer reduction setting 2233*53ee8cc1Swenshuai.xi VDEC_EX_FBReduction stFBReduction; 2234*53ee8cc1Swenshuai.xi } VDEC_EX_InitParam; 2235*53ee8cc1Swenshuai.xi 2236*53ee8cc1Swenshuai.xi /// Decode Command 2237*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2238*53ee8cc1Swenshuai.xi { 2239*53ee8cc1Swenshuai.xi /// ID (high 4-bytes) 2240*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; 2241*53ee8cc1Swenshuai.xi /// ID (low 4-bytes) 2242*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; 2243*53ee8cc1Swenshuai.xi /// start address of payload 2244*53ee8cc1Swenshuai.xi MS_VIRT u32StAddr; 2245*53ee8cc1Swenshuai.xi /// size of payload 2246*53ee8cc1Swenshuai.xi MS_U32 u32Size; 2247*53ee8cc1Swenshuai.xi /// timestamp of payload 2248*53ee8cc1Swenshuai.xi MS_U32 u32Timestamp; 2249*53ee8cc1Swenshuai.xi } VDEC_EX_DecCmd; 2250*53ee8cc1Swenshuai.xi 2251*53ee8cc1Swenshuai.xi /// Display Command 2252*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2253*53ee8cc1Swenshuai.xi { 2254*53ee8cc1Swenshuai.xi /// ID (high 4-bytes) 2255*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; 2256*53ee8cc1Swenshuai.xi /// ID (low 4-bytes) 2257*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; 2258*53ee8cc1Swenshuai.xi /// action of command 2259*53ee8cc1Swenshuai.xi VDEC_EX_DispCmdAction eAction; 2260*53ee8cc1Swenshuai.xi } VDEC_EX_DispCmd; 2261*53ee8cc1Swenshuai.xi 2262*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2263*53ee8cc1Swenshuai.xi { 2264*53ee8cc1Swenshuai.xi MS_U32 u32Version; 2265*53ee8cc1Swenshuai.xi /// top, bottom or frame 2266*53ee8cc1Swenshuai.xi VDEC_EX_PicStructure u8PicStructure; 2267*53ee8cc1Swenshuai.xi MS_U8 u8TopFieldFirst; 2268*53ee8cc1Swenshuai.xi MS_U16 u16TempRef; 2269*53ee8cc1Swenshuai.xi MS_U32 u32Pts; 2270*53ee8cc1Swenshuai.xi /// address of cc data 2271*53ee8cc1Swenshuai.xi MS_U32 u32UserDataBuf; 2272*53ee8cc1Swenshuai.xi /// size of cc data 2273*53ee8cc1Swenshuai.xi MS_U32 u32UserDataSize; 2274*53ee8cc1Swenshuai.xi ///< Frame type: I, P, B frame 2275*53ee8cc1Swenshuai.xi VDEC_EX_FrameType eFrameType; 2276*53ee8cc1Swenshuai.xi } VDEC_EX_CC_Info; 2277*53ee8cc1Swenshuai.xi 2278*53ee8cc1Swenshuai.xi ///CC input parameters for mstar proprietary CC library 2279*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2280*53ee8cc1Swenshuai.xi { 2281*53ee8cc1Swenshuai.xi MS_U32 u32Ver; ///version of this structure 2282*53ee8cc1Swenshuai.xi MS_VIRT u32Val; 2283*53ee8cc1Swenshuai.xi } VDEC_EX_CC_InputPara; 2284*53ee8cc1Swenshuai.xi 2285*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2286*53ee8cc1Swenshuai.xi { 2287*53ee8cc1Swenshuai.xi MS_U32 u32OutputFrameRate; ///< output frame rate, unit:vsync count 2288*53ee8cc1Swenshuai.xi MS_U8 u8Interlace; ///< output scan:0:progress, 1:interlace 2289*53ee8cc1Swenshuai.xi } VDEC_EX_FRC_OutputParam; 2290*53ee8cc1Swenshuai.xi 2291*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2292*53ee8cc1Swenshuai.xi { 2293*53ee8cc1Swenshuai.xi MS_U32 u32Version; 2294*53ee8cc1Swenshuai.xi MS_U32 u32Id; 2295*53ee8cc1Swenshuai.xi } VDEC_StreamId; 2296*53ee8cc1Swenshuai.xi 2297*53ee8cc1Swenshuai.xi typedef void (*VDEC_EX_EventCb)(MS_U32 eFlag, void *param); 2298*53ee8cc1Swenshuai.xi 2299*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2300*53ee8cc1Swenshuai.xi { 2301*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_cnl_flag; 2302*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_type; 2303*53ee8cc1Swenshuai.xi MS_U8 u8content_interpretation_type; 2304*53ee8cc1Swenshuai.xi MS_U8 u1Quincunx_sampling_flag; 2305*53ee8cc1Swenshuai.xi 2306*53ee8cc1Swenshuai.xi MS_U8 u1Spatial_flipping_flag; 2307*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_flipping_flag; 2308*53ee8cc1Swenshuai.xi MS_U8 u1Field_views_flag; 2309*53ee8cc1Swenshuai.xi MS_U8 u1Current_frame_is_frame0_flag; 2310*53ee8cc1Swenshuai.xi 2311*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_self_contained_flag; 2312*53ee8cc1Swenshuai.xi MS_U8 u1Frame1_self_contained_flag; 2313*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_x; 2314*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_y; 2315*53ee8cc1Swenshuai.xi 2316*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_x; 2317*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_y; 2318*53ee8cc1Swenshuai.xi MS_U8 u8Reserved01; 2319*53ee8cc1Swenshuai.xi MS_U8 u8Reserved02; 2320*53ee8cc1Swenshuai.xi }VDEC_EX_Frame_packing_SEI; 2321*53ee8cc1Swenshuai.xi 2322*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2323*53ee8cc1Swenshuai.xi { 2324*53ee8cc1Swenshuai.xi VDEC_EX_VerCtl stVerCtl; /// version : 0, 2325*53ee8cc1Swenshuai.xi /// size : sizeof(VDEC_EX_Frame_packing_SEI_EX) 2326*53ee8cc1Swenshuai.xi MS_BOOL bIsCropInfo; 2327*53ee8cc1Swenshuai.xi MS_BOOL bValid; 2328*53ee8cc1Swenshuai.xi MS_BOOL bUsed; 2329*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_cnl_flag; 2330*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_type; 2331*53ee8cc1Swenshuai.xi MS_U8 u8content_interpretation_type; 2332*53ee8cc1Swenshuai.xi MS_U8 u1Quincunx_sampling_flag; 2333*53ee8cc1Swenshuai.xi MS_U8 u1Spatial_flipping_flag; 2334*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_flipping_flag; 2335*53ee8cc1Swenshuai.xi MS_U8 u1Field_views_flag; 2336*53ee8cc1Swenshuai.xi MS_U8 u1Current_frame_is_frame0_flag; 2337*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_self_contained_flag; 2338*53ee8cc1Swenshuai.xi MS_U8 u1Frame1_self_contained_flag; 2339*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_x; 2340*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_y; 2341*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_x; 2342*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_y; 2343*53ee8cc1Swenshuai.xi MS_U32 u32DataBuff; 2344*53ee8cc1Swenshuai.xi MS_U32 u32DataSize; 2345*53ee8cc1Swenshuai.xi MS_U32 left; 2346*53ee8cc1Swenshuai.xi MS_U32 right; 2347*53ee8cc1Swenshuai.xi MS_U32 top; 2348*53ee8cc1Swenshuai.xi MS_U32 bottom; 2349*53ee8cc1Swenshuai.xi } VDEC_EX_Frame_packing_SEI_EX; 2350*53ee8cc1Swenshuai.xi 2351*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2352*53ee8cc1Swenshuai.xi { 2353*53ee8cc1Swenshuai.xi /// is aspect ratio info exist 1 for yes, 0 for no 2354*53ee8cc1Swenshuai.xi MS_BOOL bAspect_ratio_info_present_flag; // u(1) 2355*53ee8cc1Swenshuai.xi /// Aspect ratio mapping table index: HEVC_ASPECT_RATIO[17][2] 2356*53ee8cc1Swenshuai.xi MS_U8 u8Aspect_ratio_idc; // u(8) 2357*53ee8cc1Swenshuai.xi /// Sample aspect ratio width 2358*53ee8cc1Swenshuai.xi MS_U16 u16Sar_width; // u(16) 2359*53ee8cc1Swenshuai.xi /// Sample aspect ratio height 2360*53ee8cc1Swenshuai.xi MS_U16 u16Sar_height; // u(16) 2361*53ee8cc1Swenshuai.xi /// is overscan info exist? 2362*53ee8cc1Swenshuai.xi MS_BOOL bOverscan_info_present_flag; // u(1) 2363*53ee8cc1Swenshuai.xi /// is the cropped decoded pictures output are suitable for display using overscan 2364*53ee8cc1Swenshuai.xi MS_BOOL bOverscan_appropriate_flag; // u(1) 2365*53ee8cc1Swenshuai.xi /// is video signal type exist or not? 2366*53ee8cc1Swenshuai.xi MS_BOOL bVideo_signal_type_present_flag; // u(1) 2367*53ee8cc1Swenshuai.xi /// 0: component, 1: PAL, 2:NTSC 3:SECAM 4:MAC 5:unspecified 2368*53ee8cc1Swenshuai.xi MS_U8 u8Video_format; // u(3) 2369*53ee8cc1Swenshuai.xi /// video pixel value is 0~255 or 16~235 2370*53ee8cc1Swenshuai.xi MS_BOOL bVideo_full_range_flag; // u(1) 2371*53ee8cc1Swenshuai.xi /// is colour description exist: u8Colour_primaries, u8Transfer_characteristics, and u8Matrix_coefficients 2372*53ee8cc1Swenshuai.xi MS_BOOL bColour_description_present_flag; // u(1) 2373*53ee8cc1Swenshuai.xi MS_U8 u8Colour_primaries; // u(8) 2374*53ee8cc1Swenshuai.xi MS_U8 u8Transfer_characteristics; // u(8) 2375*53ee8cc1Swenshuai.xi MS_U8 u8Matrix_coefficients; // u(8) 2376*53ee8cc1Swenshuai.xi /// u8Chroma_sample_loc_type_top_field and u8Chroma_sample_loc_type_bottom_field exist or not 2377*53ee8cc1Swenshuai.xi MS_BOOL bChroma_location_info_present_flag; // u(1) 2378*53ee8cc1Swenshuai.xi MS_U8 u8Chroma_sample_loc_type_top_field; // ue(v) 0~5 2379*53ee8cc1Swenshuai.xi MS_U8 u8Chroma_sample_loc_type_bottom_field; // ue(v) 0~5 2380*53ee8cc1Swenshuai.xi /// timing info exist or not 2381*53ee8cc1Swenshuai.xi MS_BOOL bTiming_info_present_flag; // u(1) 2382*53ee8cc1Swenshuai.xi MS_BOOL bFixed_frame_rate_flag; // u(1) 2383*53ee8cc1Swenshuai.xi //fps=time_scale/num_units_in_tick, vui_time_scale=27000000, vui_num_units_in_tick=1080000 2384*53ee8cc1Swenshuai.xi MS_U32 u32Num_units_in_tick; // u(32) 2385*53ee8cc1Swenshuai.xi MS_U32 u32Time_scale; // u(32) 2386*53ee8cc1Swenshuai.xi } VDEC_EX_AVC_VUI_DISP_INFO; 2387*53ee8cc1Swenshuai.xi 2388*53ee8cc1Swenshuai.xi //CRC value 2389*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2390*53ee8cc1Swenshuai.xi { 2391*53ee8cc1Swenshuai.xi MS_U32 u32HorSize; 2392*53ee8cc1Swenshuai.xi MS_U32 u32VerSize; 2393*53ee8cc1Swenshuai.xi MS_U32 u32Strip; 2394*53ee8cc1Swenshuai.xi MS_VIRT u32LumaStartAddr; 2395*53ee8cc1Swenshuai.xi MS_VIRT u32ChromaStartAddr; 2396*53ee8cc1Swenshuai.xi }VDEC_EX_CrcIn; 2397*53ee8cc1Swenshuai.xi 2398*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2399*53ee8cc1Swenshuai.xi { 2400*53ee8cc1Swenshuai.xi MS_U32 u32LumaCRC; 2401*53ee8cc1Swenshuai.xi MS_U32 u32ChromaCRC; 2402*53ee8cc1Swenshuai.xi }VDEC_EX_CrcOut; 2403*53ee8cc1Swenshuai.xi 2404*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2405*53ee8cc1Swenshuai.xi { 2406*53ee8cc1Swenshuai.xi VDEC_EX_CrcIn stCrcIn; 2407*53ee8cc1Swenshuai.xi VDEC_EX_CrcOut stCrcOut; 2408*53ee8cc1Swenshuai.xi }VDEC_EX_CrcValue; 2409*53ee8cc1Swenshuai.xi 2410*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2411*53ee8cc1Swenshuai.xi { 2412*53ee8cc1Swenshuai.xi MS_VIRT u32DSBufAddr; // Buffer Address 2413*53ee8cc1Swenshuai.xi MS_U32 u32DSBufSize; // Buffer Size 2414*53ee8cc1Swenshuai.xi }VDEC_EX_EXTERNAL_DS_BUFFER; 2415*53ee8cc1Swenshuai.xi 2416*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2417*53ee8cc1Swenshuai.xi { 2418*53ee8cc1Swenshuai.xi MS_BOOL bEnable; // Enable/Disable 2419*53ee8cc1Swenshuai.xi MS_U32 u32Timeout; // Timeout value, unit : ms 2420*53ee8cc1Swenshuai.xi }VDEC_EX_Decode_Timeout_Param; 2421*53ee8cc1Swenshuai.xi 2422*53ee8cc1Swenshuai.xi 2423*53ee8cc1Swenshuai.xi 2424*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2425*53ee8cc1Swenshuai.xi { 2426*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 2427*53ee8cc1Swenshuai.xi MS_PHY u32IapGnBufAddr; 2428*53ee8cc1Swenshuai.xi MS_U32 u32IapGnBufSize; 2429*53ee8cc1Swenshuai.xi } VDEC_EX_IapGnBufShareBWMode; 2430*53ee8cc1Swenshuai.xi 2431*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2432*53ee8cc1Swenshuai.xi { 2433*53ee8cc1Swenshuai.xi MS_BOOL bEnableFramebufferCtrl; 2434*53ee8cc1Swenshuai.xi MS_PHY u32FramebufferAddress; // physical address 2435*53ee8cc1Swenshuai.xi MS_U32 u32FramebufferTotalsize; // unit is byte 2436*53ee8cc1Swenshuai.xi } VDEC_Framebuffer_Ctrl; 2437*53ee8cc1Swenshuai.xi 2438*53ee8cc1Swenshuai.xi 2439*53ee8cc1Swenshuai.xi 2440*53ee8cc1Swenshuai.xi #define API_HWCAP_VERSION 1 2441*53ee8cc1Swenshuai.xi 2442*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2443*53ee8cc1Swenshuai.xi { 2444*53ee8cc1Swenshuai.xi MS_U32 u32ApiHW_Version; //<Version of current structure> 2445*53ee8cc1Swenshuai.xi MS_U16 u16ApiHW_Length; //<Length of this structure> 2446*53ee8cc1Swenshuai.xi 2447*53ee8cc1Swenshuai.xi MS_U8 u8Cap_Support_Decoder_Num; 2448*53ee8cc1Swenshuai.xi 2449*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_MPEG2; 2450*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_H263; 2451*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_MPEG4; 2452*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_DIVX311; 2453*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_DIVX412; 2454*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_FLV; 2455*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_VC1ADV; 2456*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_VC1MAIN; 2457*53ee8cc1Swenshuai.xi 2458*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_RV8; 2459*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_RV9; 2460*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_H264; 2461*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_AVS; 2462*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_AVS_PLUS; 2463*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_MJPEG; 2464*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_MVC; 2465*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_VP8; 2466*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_VP9; 2467*53ee8cc1Swenshuai.xi MS_BOOL bCap_Support_HEVC; 2468*53ee8cc1Swenshuai.xi 2469*53ee8cc1Swenshuai.xi /*New HW Cap and Feature add in struct at the end*/ 2470*53ee8cc1Swenshuai.xi }VDEC_HwCap; 2471*53ee8cc1Swenshuai.xi 2472*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2473*53ee8cc1Swenshuai.xi { 2474*53ee8cc1Swenshuai.xi MS_U32 u32Version; 2475*53ee8cc1Swenshuai.xi MS_U32 u32Addr; 2476*53ee8cc1Swenshuai.xi MS_U32 u32Size; 2477*53ee8cc1Swenshuai.xi MS_U8 reserved[32]; 2478*53ee8cc1Swenshuai.xi } VDEC_FRAMEBuff; 2479*53ee8cc1Swenshuai.xi 2480*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2481*53ee8cc1Swenshuai.xi { 2482*53ee8cc1Swenshuai.xi MS_U16 u16CodecCapWidth; 2483*53ee8cc1Swenshuai.xi MS_U16 u16CodecCapHeight; 2484*53ee8cc1Swenshuai.xi MS_U8 u8CodecCapFrameRate; 2485*53ee8cc1Swenshuai.xi VDEC_EX_CODEC_CAP_PROFILE_INFO u8CodecCapProfile; 2486*53ee8cc1Swenshuai.xi VDEC_EX_CODEC_CAP_VERSION_INFO u8CodecCapVersion; 2487*53ee8cc1Swenshuai.xi VDEC_EX_CODEC_CAP_LEVEL_INFO u8CodecCapLevel; 2488*53ee8cc1Swenshuai.xi MS_U32 u32CodecType; 2489*53ee8cc1Swenshuai.xi MS_U32 u32Reserved1; 2490*53ee8cc1Swenshuai.xi }VDEC_EX_CODEC_CAP_INFO; 2491*53ee8cc1Swenshuai.xi 2492*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2493*53ee8cc1Swenshuai.xi { 2494*53ee8cc1Swenshuai.xi VDEC_EX_CODEC_CAP_PROFILE_INFO u8CodecCapProfile; 2495*53ee8cc1Swenshuai.xi VDEC_EX_CODEC_CAP_LEVEL_INFO u8CodecCapLevel; 2496*53ee8cc1Swenshuai.xi MS_U16 u16CodecCapWidth; 2497*53ee8cc1Swenshuai.xi MS_U16 u16CodecCapHeight; 2498*53ee8cc1Swenshuai.xi MS_U8 u8CodecCapFrameRate; 2499*53ee8cc1Swenshuai.xi VDEC_EX_CODEC_CAP_VERSION_INFO u8CodecCapVersion; 2500*53ee8cc1Swenshuai.xi MS_U32 u32BitRate; 2501*53ee8cc1Swenshuai.xi } VDEC_EX_PROFILE_CAP_INFO; 2502*53ee8cc1Swenshuai.xi 2503*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2504*53ee8cc1Swenshuai.xi { 2505*53ee8cc1Swenshuai.xi MS_U32 u32Version; 2506*53ee8cc1Swenshuai.xi MS_U32 u32CodecType; 2507*53ee8cc1Swenshuai.xi MS_U32 u32CodecCapProfileTableSize; 2508*53ee8cc1Swenshuai.xi VDEC_EX_PROFILE_CAP_INFO *pCodecCapProfileTable; 2509*53ee8cc1Swenshuai.xi } VDEC_EX_CODEC_PROFILE_CAP_INFO; 2510*53ee8cc1Swenshuai.xi 2511*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 2512*53ee8cc1Swenshuai.xi { 2513*53ee8cc1Swenshuai.xi VDEC_EX_CodecType eCodecType; 2514*53ee8cc1Swenshuai.xi MS_PHY u32DataAddr; 2515*53ee8cc1Swenshuai.xi MS_U32 u32MemUsageSize; 2516*53ee8cc1Swenshuai.xi MS_U16 u16DataSize; 2517*53ee8cc1Swenshuai.xi } VDEC_EX_FbMemUsage_Param; 2518*53ee8cc1Swenshuai.xi 2519*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2520*53ee8cc1Swenshuai.xi // Function and Variable 2521*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2522*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2523*53ee8cc1Swenshuai.xi /// Get VDEC version 2524*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2525*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2526*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2527*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2528*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetLibVer(const MSIF_Version **ppVersion); 2529*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2530*53ee8cc1Swenshuai.xi /// Get VDEC info 2531*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2532*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2533*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2534*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2535*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetInfo(const VDEC_EX_Info **ppInfo); 2536*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2537*53ee8cc1Swenshuai.xi /// Get VDEC status 2538*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2539*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2540*53ee8cc1Swenshuai.xi /// @param pStatus \b OUT : vdec status 2541*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2542*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2543*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_EX_GetStatus(VDEC_StreamId *pStreamId, VDEC_EX_Status *pStatus); 2544*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2545*53ee8cc1Swenshuai.xi /// Enable turbo mode for VDEC 2546*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Enhanced 2547*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : enable turbo mode 2548*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2549*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2550*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_EnableTurboMode(MS_BOOL bEnable); 2551*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2552*53ee8cc1Swenshuai.xi /// Check VDEC capbility 2553*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2554*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2555*53ee8cc1Swenshuai.xi /// @param eCodecType \b OUT : vdec codec type 2556*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2557*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_EX_CheckCaps(VDEC_StreamId *pStreamId, VDEC_EX_CodecType eCodecType); 2558*53ee8cc1Swenshuai.xi 2559*53ee8cc1Swenshuai.xi //used for decoder speed up when single decode 2560*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2561*53ee8cc1Swenshuai.xi /// Set single decode mode to not create controller task in FW 2562*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Enhanced 2563*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : enable single decode mode 2564*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2565*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2566*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetSingleDecode(MS_BOOL bEnable); 2567*53ee8cc1Swenshuai.xi //used for init 2568*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2569*53ee8cc1Swenshuai.xi /// Get Stream ID from VDEC. 2570*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Init 2571*53ee8cc1Swenshuai.xi /// @param pInfo \b IN : pointer to VDEC_StreamId 2572*53ee8cc1Swenshuai.xi /// @param u32Size \b IN : size of VDEC_StreamId 2573*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2574*53ee8cc1Swenshuai.xi /// @param eCodecType \b IN : codec type 2575*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2576*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: success 2577*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: failed 2578*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_NOT_EXIT: not ext after last initialization 2579*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_INVALID_PARAM: input parameter is invalid 2580*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2581*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetFreeStream(void *pInfo, MS_U32 u32Size, VDEC_EX_Stream eStreamType, VDEC_EX_CodecType eCodecType); 2582*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2583*53ee8cc1Swenshuai.xi ///Map context for multi process use 2584*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2585*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2586*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: success 2587*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: failed 2588*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_NOT_EXIT: not ext after last initialization 2589*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_INVALID_PARAM: input parameter is invalid 2590*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2591*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetConfig(VDEC_EX_Stream eStreamType); 2592*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2593*53ee8cc1Swenshuai.xi /// Initial VDEC. 2594*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Init 2595*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2596*53ee8cc1Swenshuai.xi /// @param pInitParam \b IN : pointer to initial parameter 2597*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2598*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: success 2599*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: failed 2600*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_NOT_EXIT: not ext after last initialization 2601*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_INVALID_PARAM: input parameter is invalid 2602*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2603*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_Init(VDEC_StreamId *eStreamId, VDEC_EX_InitParam *pInitParam); 2604*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2605*53ee8cc1Swenshuai.xi /// Reset VDEC. 2606*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Init 2607*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2608*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2609*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2610*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_Rst(VDEC_StreamId *pStreamId); 2611*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2612*53ee8cc1Swenshuai.xi /// Exit VDEC. 2613*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Init 2614*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2615*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2616*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2617*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_Exit(VDEC_StreamId *pStreamId); 2618*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2619*53ee8cc1Swenshuai.xi /// Check if information for display setting is ready or not 2620*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Init 2621*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2622*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2623*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2624*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CheckDispInfoRdy(VDEC_StreamId *pStreamId); 2625*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2626*53ee8cc1Swenshuai.xi /// Set up frame rate conversion mode 2627*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Normal_decode 2628*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2629*53ee8cc1Swenshuai.xi /// @param eFrcMode \b IN : frame rate conversion mode 2630*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2631*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2632*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetFrcMode(VDEC_StreamId *pStreamId, VDEC_EX_FrcMode eFrcMode); 2633*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2634*53ee8cc1Swenshuai.xi /// Set up some parameters about dynamic scaling in FW 2635*53ee8cc1Swenshuai.xi /// @ingroup VDEC_DS 2636*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2637*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN : the physical start address of parameter set 2638*53ee8cc1Swenshuai.xi /// @param u32Size \b IN : the size of parameter set 2639*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2640*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2641*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetDynScalingParams(VDEC_StreamId *pStreamId, MS_PHY u32Addr, MS_U32 u32Size); 2642*53ee8cc1Swenshuai.xi //Used for debug 2643*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2644*53ee8cc1Swenshuai.xi /// Set up debug message level 2645*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2646*53ee8cc1Swenshuai.xi /// @param eDbgLevel \b IN : message level 2647*53ee8cc1Swenshuai.xi /// @ingroup VdecDebug 2648*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2649*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 2650*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 2651*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2652*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetDbgLevel(VDEC_StreamId *pStreamId, VDEC_EX_DbgLevel eDbgLevel); 2653*53ee8cc1Swenshuai.xi 2654*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2655*53ee8cc1Swenshuai.xi /// Start playback 2656*53ee8cc1Swenshuai.xi /// @ingroup Decode 2657*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2658*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2659*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2660*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_Play(VDEC_StreamId *pStreamId); 2661*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2662*53ee8cc1Swenshuai.xi /// Pause decode and display 2663*53ee8cc1Swenshuai.xi /// @ingroup Decode 2664*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2665*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2666*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2667*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_Pause(VDEC_StreamId *pStreamId); 2668*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2669*53ee8cc1Swenshuai.xi /// Resume decode and display 2670*53ee8cc1Swenshuai.xi /// @ingroup Decode 2671*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2672*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2673*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2674*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_Resume(VDEC_StreamId *pStreamId); 2675*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2676*53ee8cc1Swenshuai.xi /// Trigger to display one frame (background may still decoding) 2677*53ee8cc1Swenshuai.xi /// @ingroup Decode 2678*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2679*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2680*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2681*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_StepDisp(VDEC_StreamId *pStreamId); 2682*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2683*53ee8cc1Swenshuai.xi /// Check if step play done or not 2684*53ee8cc1Swenshuai.xi /// @ingroup Decode 2685*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2686*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2687*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: step display done 2688*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: not yet 2689*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_NOT_INIT: not initial yet 2690*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_UNSUPPORTED: not supported with current decoder configuration 2691*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2692*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsStepDispDone(VDEC_StreamId *pStreamId); 2693*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2694*53ee8cc1Swenshuai.xi /// Trigger VDEC to decode one frame 2695*53ee8cc1Swenshuai.xi /// @ingroup Decode 2696*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2697*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2698*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2699*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_StepDecode(VDEC_StreamId *pStreamId); 2700*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2701*53ee8cc1Swenshuai.xi /// Check if step decode done or not 2702*53ee8cc1Swenshuai.xi /// @ingroup Decode 2703*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2704*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2705*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: step decode done 2706*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: not yet 2707*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_NOT_INIT: not initial yet 2708*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_UNSUPPORTED: not supported with current decoder configuration 2709*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2710*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsStepDecodeDone(VDEC_StreamId *pStreamId); 2711*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2712*53ee8cc1Swenshuai.xi /// Set up trick decode mode for decode I, decode IP and decode all. 2713*53ee8cc1Swenshuai.xi /// @ingroup Decode 2714*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2715*53ee8cc1Swenshuai.xi /// @param eTrickDec \b IN : trick decode mode 2716*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2717*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2718*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetTrickMode(VDEC_StreamId *pStreamId, VDEC_EX_TrickDec eTrickDec); 2719*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2720*53ee8cc1Swenshuai.xi /// Push decode command queue 2721*53ee8cc1Swenshuai.xi /// @ingroup Decode 2722*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2723*53ee8cc1Swenshuai.xi /// @param pCmd \b IN : the pointer to decode command 2724*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2725*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2726*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_PushDecQ(VDEC_StreamId *pStreamId, VDEC_EX_DecCmd *pCmd); 2727*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2728*53ee8cc1Swenshuai.xi /// Flush command queue and internal data of decoder 2729*53ee8cc1Swenshuai.xi /// @ingroup Decode 2730*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2731*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2732*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2733*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_Flush(VDEC_StreamId *pStreamId, VDEC_EX_FreezePicSelect eFreezePic); 2734*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2735*53ee8cc1Swenshuai.xi /// Enable to let decoder force to display all decoded frame when out of input data 2736*53ee8cc1Swenshuai.xi /// @ingroup Decode 2737*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2738*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : TRUE - enable; FALSE - disable 2739*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2740*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2741*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_EnableLastFrameShow(VDEC_StreamId *pStreamId, MS_BOOL bEnable); 2742*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2743*53ee8cc1Swenshuai.xi /// Set up display speed 2744*53ee8cc1Swenshuai.xi /// @ingroup Decode 2745*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2746*53ee8cc1Swenshuai.xi /// @param eSpeedType \b IN : display speed type 2747*53ee8cc1Swenshuai.xi /// @param eSpeed \b IN : multiple 2748*53ee8cc1Swenshuai.xi /// @return return VDEC_EX_Result 2749*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2750*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetSpeed(VDEC_StreamId *pStreamId, VDEC_EX_SpeedType eSpeedType, VDEC_EX_DispSpeed eSpeed); 2751*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2752*53ee8cc1Swenshuai.xi /// Let FW stop updating frames when vsync, but decoding process is still going. 2753*53ee8cc1Swenshuai.xi /// @ingroup Decode 2754*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2755*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : Enable/Disable 2756*53ee8cc1Swenshuai.xi /// @return -The result of command freeze image. 2757*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2758*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetFreezeDisp(VDEC_StreamId *pStreamId, MS_BOOL bEnable); 2759*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2760*53ee8cc1Swenshuai.xi /// Set blue screen on/off 2761*53ee8cc1Swenshuai.xi /// @ingroup Decode 2762*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2763*53ee8cc1Swenshuai.xi /// @param bOn \b IN : turn on / off blue screen 2764*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2765*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2766*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetBlueScreen(VDEC_StreamId *pStreamId, MS_BOOL bOn); 2767*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2768*53ee8cc1Swenshuai.xi /// Reset PTS 2769*53ee8cc1Swenshuai.xi /// @ingroup Decode 2770*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2771*53ee8cc1Swenshuai.xi /// @param u32PtsBase \b IN : new PTS base value 2772*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2773*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2774*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_ResetPTS(VDEC_StreamId *pStreamId, MS_U32 u32PtsBase); 2775*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2776*53ee8cc1Swenshuai.xi /// Switch AV sync on/off 2777*53ee8cc1Swenshuai.xi /// @ingroup Decode 2778*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2779*53ee8cc1Swenshuai.xi /// @param bOn \b IN : on/off 2780*53ee8cc1Swenshuai.xi /// @param u32SyncDelay \b IN : delay value 2781*53ee8cc1Swenshuai.xi /// @param u16SyncTolerance \b IN : tolerance value 2782*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2783*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2784*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_AVSyncOn(VDEC_StreamId *pStreamId, MS_BOOL bOn, MS_U32 u32SyncDelay, MS_U16 u16SyncTolerance); 2785*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2786*53ee8cc1Swenshuai.xi /// Switch AV sync free run threshold 2787*53ee8cc1Swenshuai.xi /// @ingroup Decode 2788*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2789*53ee8cc1Swenshuai.xi /// @param u32Threshold \b IN : threshold value 2790*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2791*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2792*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetAVSyncFreerunThreshold(VDEC_StreamId *pStreamId, MS_U32 u32Threshold ); 2793*53ee8cc1Swenshuai.xi 2794*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2795*53ee8cc1Swenshuai.xi /// Get display information 2796*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2797*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2798*53ee8cc1Swenshuai.xi /// @param pDispinfo \b OUT : pointer to display setting information 2799*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2800*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2801*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetDispInfo(VDEC_StreamId *pStreamId, VDEC_EX_DispInfo *pDispinfo); 2802*53ee8cc1Swenshuai.xi /// Get video av sync on/off status 2803*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2804*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2805*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2806*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2807*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsAVSyncOn(VDEC_StreamId *pStreamId); 2808*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2809*53ee8cc1Swenshuai.xi /// Get video valid stream flag 2810*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2811*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2812*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2813*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2814*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsWithValidStream(VDEC_StreamId *pStreamId); 2815*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2816*53ee8cc1Swenshuai.xi /// Get video display finish status 2817*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2818*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2819*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2820*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2821*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsDispFinish(VDEC_StreamId *pStreamId); 2822*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2823*53ee8cc1Swenshuai.xi /// Get video frame ready status 2824*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2825*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2826*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2827*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2828*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsFrameRdy(VDEC_StreamId *pStreamId); 2829*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2830*53ee8cc1Swenshuai.xi /// Get I frame found status 2831*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2832*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2833*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2834*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2835*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsIFrameFound(VDEC_StreamId *pStreamId); 2836*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2837*53ee8cc1Swenshuai.xi /// Get video sequence change status 2838*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2839*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2840*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2841*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2842*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsSeqChg(VDEC_StreamId *pStreamId); 2843*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2844*53ee8cc1Swenshuai.xi /// Get video active source mode 2845*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2846*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2847*53ee8cc1Swenshuai.xi /// @return VDEC_EX_SrcMode 2848*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2849*53ee8cc1Swenshuai.xi VDEC_EX_SrcMode MApi_VDEC_EX_GetActiveSrcMode(VDEC_StreamId *pStreamId); 2850*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2851*53ee8cc1Swenshuai.xi /// Get video reach sync status 2852*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2853*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2854*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2855*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2856*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsReachSync(VDEC_StreamId *pStreamId); 2857*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2858*53ee8cc1Swenshuai.xi /// Get video start sync status 2859*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2860*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2861*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2862*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2863*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsStartSync(VDEC_StreamId *pStreamId); 2864*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2865*53ee8cc1Swenshuai.xi /// Get video free run status 2866*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2867*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2868*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2869*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2870*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsFreerun(VDEC_StreamId *pStreamId); 2871*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2872*53ee8cc1Swenshuai.xi /// Get video low delay status 2873*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2874*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2875*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2876*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2877*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsWithLowDelay(VDEC_StreamId *pStreamId); 2878*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2879*53ee8cc1Swenshuai.xi /// Get video all buffer empty status 2880*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2881*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2882*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2883*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2884*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsAllBufferEmpty(VDEC_StreamId *pStreamId); 2885*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2886*53ee8cc1Swenshuai.xi /// Get the extension information of decoded frame. 2887*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2888*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2889*53ee8cc1Swenshuai.xi /// @param pExtDispinfo \b IN : the extension information of decoded frame. 2890*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2891*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2892*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetExtDispInfo(VDEC_StreamId *pStreamId, VDEC_EX_ExtDispInfo *pExtDispinfo); 2893*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2894*53ee8cc1Swenshuai.xi /// Get the information of the latest decoded frame. 2895*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2896*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2897*53ee8cc1Swenshuai.xi /// @param pFrmInfo \b IN : the information of the latest decoded frame 2898*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2899*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2900*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetDecFrameInfo(VDEC_StreamId *pStreamId, VDEC_EX_FrameInfo *pFrmInfo); 2901*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2902*53ee8cc1Swenshuai.xi /// Get the information of current displaying frame. 2903*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2904*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2905*53ee8cc1Swenshuai.xi /// @param pFrmInfo \b IN : the information of displaying frame 2906*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2907*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2908*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetDispFrameInfo(VDEC_StreamId *pStreamId, VDEC_EX_FrameInfo *pFrmInfo); 2909*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2910*53ee8cc1Swenshuai.xi /// Get the time_code of the latest decoded frame. 2911*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2912*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2913*53ee8cc1Swenshuai.xi /// @param pTimeCode \b IN : the time_code of the latest decoded frame 2914*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2915*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2916*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetDecTimeCode(VDEC_StreamId *pStreamId, VDEC_EX_TimeCode* pTimeCode); 2917*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2918*53ee8cc1Swenshuai.xi /// Get the time_code of the latest displayed frame. 2919*53ee8cc1Swenshuai.xi /// @ingroup Get_information 2920*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2921*53ee8cc1Swenshuai.xi /// @param pTimeCode \b IN : the time_code of the latest displayed frame 2922*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2923*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2924*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetDispTimeCode(VDEC_StreamId *pStreamId, VDEC_EX_TimeCode* pTimeCode); 2925*53ee8cc1Swenshuai.xi //Event Group 2926*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2927*53ee8cc1Swenshuai.xi /// Set decoder event and register it's callback function 2928*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2929*53ee8cc1Swenshuai.xi /// @param u32EventFlag \b In : the events want to be turned on/off 2930*53ee8cc1Swenshuai.xi /// @param pfn \b In : callback function 2931*53ee8cc1Swenshuai.xi /// @param param \b In : parameter for callback function 2932*53ee8cc1Swenshuai.xi /// @ingroup VdecEventGroup 2933*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 2934*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2935*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetEvent(VDEC_StreamId *pStreamId, MS_U32 u32EventFlag, VDEC_EX_EventCb pfn, void* param); 2936*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2937*53ee8cc1Swenshuai.xi /// MApi_VDEC_EX_UnsetEvent 2938*53ee8cc1Swenshuai.xi /// @ingroup VdecEventGroup 2939*53ee8cc1Swenshuai.xi /// @return None 2940*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2941*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_UnsetEvent(VDEC_StreamId *pStreamId, MS_U32 u32EventFlag); 2942*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2943*53ee8cc1Swenshuai.xi /// Set decoder event and register it's callback function 2944*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2945*53ee8cc1Swenshuai.xi /// @param u32EventFlag \b In : the events want to be turned on/off 2946*53ee8cc1Swenshuai.xi /// @param pfn \b In : callback function 2947*53ee8cc1Swenshuai.xi /// @param param \b In : parameter for callback function 2948*53ee8cc1Swenshuai.xi /// @ingroup VdecEventGroup 2949*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 2950*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2951*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetEvent_MultiCallback(VDEC_StreamId *pStreamId, VDEC_EX_CB_TYPE cb_type, MS_U32 u32EventFlag, VDEC_EX_EventCb pfn, void *param); 2952*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2953*53ee8cc1Swenshuai.xi /// MApi_VDEC_EX_UnsetEvent_MultiCallback 2954*53ee8cc1Swenshuai.xi /// @ingroup VdecEventGroup 2955*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2956*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2957*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_UnsetEvent_MultiCallback(VDEC_StreamId *pStreamId, VDEC_EX_CB_TYPE cb_type, MS_U32 u32EventFlag); 2958*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2959*53ee8cc1Swenshuai.xi /// Get ISR event status 2960*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2961*53ee8cc1Swenshuai.xi /// @param u32EventFlag \b OUT : vdec event bitmap 2962*53ee8cc1Swenshuai.xi /// @ingroup VdecEventGroup 2963*53ee8cc1Swenshuai.xi /// @return status 2964*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2965*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetEventInfo(VDEC_StreamId *pStreamId, MS_U32* u32EventFlag); 2966*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2967*53ee8cc1Swenshuai.xi /// Fire the decode command which be pushed since last fired 2968*53ee8cc1Swenshuai.xi /// @ingroup Decode 2969*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2970*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2971*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2972*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_FireDecCmd(VDEC_StreamId *pStreamId); 2973*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2974*53ee8cc1Swenshuai.xi /// Decoder will start decode with full speed until target PTS is reached (equal or larger) then pause. 2975*53ee8cc1Swenshuai.xi /// @ingroup Decode 2976*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2977*53ee8cc1Swenshuai.xi /// @param u32PTS \b IN : target PTS 2978*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2979*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2980*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SeekToPTS(VDEC_StreamId *pStreamId, MS_U32 u32PTS); 2981*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2982*53ee8cc1Swenshuai.xi /// Decoder will skip all frames before target PTS, and start decode with full speed after target PTS is reached. 2983*53ee8cc1Swenshuai.xi /// @ingroup Decode 2984*53ee8cc1Swenshuai.xi /// @param pStreamId \b IN : the pointer to stream ID 2985*53ee8cc1Swenshuai.xi /// @param u32PTS \b IN : target PTS 2986*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2987*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 2988*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SkipToPTS(VDEC_StreamId *pStreamId, MS_U32 u32PTS); 2989*53ee8cc1Swenshuai.xi 2990*53ee8cc1Swenshuai.xi // Advanced Settings / Mode 2991*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2992*53ee8cc1Swenshuai.xi /// Set deblocking process on/off 2993*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Hardware 2994*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 2995*53ee8cc1Swenshuai.xi /// @param bOn \b IN : turn on / off deblocking process 2996*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 2997*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 2998*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_DisableDeblocking(VDEC_StreamId *pStreamId, MS_BOOL bDisable); 2999*53ee8cc1Swenshuai.xi 3000*53ee8cc1Swenshuai.xi 3001*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3002*53ee8cc1Swenshuai.xi /// Set Quarter Pixel process on/off 3003*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Hardware 3004*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3005*53ee8cc1Swenshuai.xi /// @param bOn \b IN : turn on / off Quarter Pixel process 3006*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3007*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3008*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_DisableQuarterPixel(VDEC_StreamId *pStreamId, MS_BOOL bDisable); 3009*53ee8cc1Swenshuai.xi 3010*53ee8cc1Swenshuai.xi 3011*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3012*53ee8cc1Swenshuai.xi /// Turn on/off Auto Remove Last Zero Byte process 3013*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Enhanced 3014*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3015*53ee8cc1Swenshuai.xi /// @param bOn \b IN : turn on / off Auto Remove Last Zero Byte process 3016*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3017*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3018*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetAutoRmLstZeroByte(VDEC_StreamId *pStreamId, MS_BOOL bOn); 3019*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3020*53ee8cc1Swenshuai.xi /// Set the parameters of Balancing BW 3021*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Hardware 3022*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3023*53ee8cc1Swenshuai.xi /// @param u8QuarPixelTH \b IN : set Quarter pixel threshold 3024*53ee8cc1Swenshuai.xi /// @param u8DeBlockingTH \b IN : set deblocking threshold 3025*53ee8cc1Swenshuai.xi /// @param u8UpperBound \b IN : set upper boundary of BW control counter 3026*53ee8cc1Swenshuai.xi /// @param u8SafeCoef \b IN : set safety coeffecient of average MB tick. 3027*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3028*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3029*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetBalanceBW(VDEC_StreamId *pStreamId, 3030*53ee8cc1Swenshuai.xi MS_U8 u8QuarPixelTH, MS_U8 u8DeBlockingTH, MS_U8 u8UpperBound, MS_U8 u8SafeCoef); 3031*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3032*53ee8cc1Swenshuai.xi /// Get stream active format which decoder retrieved 3033*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3034*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3035*53ee8cc1Swenshuai.xi /// @return active format ID 3036*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3037*53ee8cc1Swenshuai.xi MS_U8 MApi_VDEC_EX_GetActiveFormat(VDEC_StreamId *pStreamId); 3038*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3039*53ee8cc1Swenshuai.xi /// Get stream colour primaries 3040*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3041*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3042*53ee8cc1Swenshuai.xi /// @return stream colour primaries 3043*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3044*53ee8cc1Swenshuai.xi MS_U8 MApi_VDEC_EX_GetColourPrimaries(VDEC_StreamId *pStreamId); 3045*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3046*53ee8cc1Swenshuai.xi /// Get VDEC fw version 3047*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3048*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3049*53ee8cc1Swenshuai.xi /// @param eFwType \b OUT : vdec fw type 3050*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3051*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3052*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetFwVersion(VDEC_StreamId *pStreamId, VDEC_EX_FwType eFwType); 3053*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3054*53ee8cc1Swenshuai.xi /// Get picture counter of current GOP 3055*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3056*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3057*53ee8cc1Swenshuai.xi /// @return picture counter 3058*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3059*53ee8cc1Swenshuai.xi MS_U8 MApi_VDEC_EX_GetGOPCnt(VDEC_StreamId *pStreamId); 3060*53ee8cc1Swenshuai.xi //Get Decoder status 3061*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3062*53ee8cc1Swenshuai.xi /// Get ES Buffer Write pointer 3063*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3064*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3065*53ee8cc1Swenshuai.xi /// @return ES Buffer write pointer 3066*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3067*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetESWritePtr(VDEC_StreamId *pStreamId); 3068*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3069*53ee8cc1Swenshuai.xi /// Get ES Buffer Read pointer 3070*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3071*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3072*53ee8cc1Swenshuai.xi /// @return ES Buffer read pointer 3073*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3074*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetESReadPtr(VDEC_StreamId *pStreamId); 3075*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3076*53ee8cc1Swenshuai.xi /// Get the PTS of current displayed frame 3077*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3078*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3079*53ee8cc1Swenshuai.xi /// @return PTS 3080*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3081*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetPTS(VDEC_StreamId *pStreamId); 3082*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3083*53ee8cc1Swenshuai.xi /// Get the PTS of next displayed frame 3084*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3085*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3086*53ee8cc1Swenshuai.xi /// @return next PTS (unit:ms) 3087*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3088*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetNextPTS(VDEC_StreamId *pStreamId); 3089*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3090*53ee8cc1Swenshuai.xi /// Get Video Delta of Video PTS and STC 3091*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3092*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3093*53ee8cc1Swenshuai.xi /// @return the value of PTS - STC for video 3094*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3095*53ee8cc1Swenshuai.xi MS_S64 MApi_VDEC_EX_GetVideoPtsStcDelta(VDEC_StreamId *pStreamId); 3096*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3097*53ee8cc1Swenshuai.xi /// Get Video Error code 3098*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3099*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3100*53ee8cc1Swenshuai.xi /// @return error code 3101*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3102*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetErrCode(VDEC_StreamId *pStreamId); 3103*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3104*53ee8cc1Swenshuai.xi /// Get Video decode frame error count 3105*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3106*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3107*53ee8cc1Swenshuai.xi /// @return Video decode frame error count 3108*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3109*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetErrCnt(VDEC_StreamId *pStreamId); 3110*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3111*53ee8cc1Swenshuai.xi /// Get bitrate which decoder retrieved from stream 3112*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3113*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3114*53ee8cc1Swenshuai.xi /// @return bitrate 3115*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3116*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetBitsRate(VDEC_StreamId *pStreamId); 3117*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3118*53ee8cc1Swenshuai.xi /// Get Video decode frame count 3119*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3120*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3121*53ee8cc1Swenshuai.xi /// @return Video decode frame count 3122*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3123*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetFrameCnt(VDEC_StreamId *pStreamId); 3124*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3125*53ee8cc1Swenshuai.xi /// Get Video decode frame skip count 3126*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3127*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3128*53ee8cc1Swenshuai.xi /// @return Video decode frame skip count 3129*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3130*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetSkipCnt(VDEC_StreamId *pStreamId); 3131*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3132*53ee8cc1Swenshuai.xi /// Get Video decode frame drop count 3133*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3134*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3135*53ee8cc1Swenshuai.xi /// @return Video decode frame drop count 3136*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3137*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetDropCnt(VDEC_StreamId *pStreamId); 3138*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3139*53ee8cc1Swenshuai.xi /// Get Video decode frame display count 3140*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3141*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3142*53ee8cc1Swenshuai.xi /// @return Video decode frame display count 3143*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3144*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetDispCnt(VDEC_StreamId *pStreamId); 3145*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3146*53ee8cc1Swenshuai.xi /// Get vacancy of BBU/SLQ entry table 3147*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3148*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3149*53ee8cc1Swenshuai.xi /// @return vacancy number 3150*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3151*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetDecQVacancy(VDEC_StreamId *pStreamId); 3152*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3153*53ee8cc1Swenshuai.xi /// Get video 3:2 pulldown flag 3154*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3155*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3156*53ee8cc1Swenshuai.xi /// @return TRUE/FALSE 3157*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3158*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_EX_Is32PullDown(VDEC_StreamId *pStreamId); 3159*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3160*53ee8cc1Swenshuai.xi /// Get video alive status 3161*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3162*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3163*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3164*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3165*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_IsAlive(VDEC_StreamId *pStreamId); 3166*53ee8cc1Swenshuai.xi //close caption 3167*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3168*53ee8cc1Swenshuai.xi /// Check cc is available. 3169*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3170*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3171*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result: TRUE or NOT 3172*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3173*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_EX_IsCCAvailable(VDEC_StreamId *pStreamId); 3174*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3175*53ee8cc1Swenshuai.xi /// Get cc info. 3176*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3177*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3178*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result: 3179*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3180*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetCCInfo(VDEC_StreamId *pStreamId, void *pInfo, MS_U32 u32Size); 3181*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3182*53ee8cc1Swenshuai.xi /// Get video trick mode status 3183*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3184*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3185*53ee8cc1Swenshuai.xi /// @return VDEC_EX_TrickDec 3186*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3187*53ee8cc1Swenshuai.xi VDEC_EX_TrickDec MApi_VDEC_EX_GetTrickMode(VDEC_StreamId *pStreamId); 3188*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3189*53ee8cc1Swenshuai.xi /// Get active codec type 3190*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3191*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3192*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3193*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3194*53ee8cc1Swenshuai.xi VDEC_EX_CodecType MApi_VDEC_EX_GetActiveCodecType(VDEC_StreamId *pStreamId); 3195*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3196*53ee8cc1Swenshuai.xi /// Generate a special pattern to work with specific functions 3197*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Flush_pattern 3198*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3199*53ee8cc1Swenshuai.xi /// @param ePatternType \b IN : Pattern type 3200*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN : Pattern buffer physical start address 3201*53ee8cc1Swenshuai.xi /// @param u32Size \b IN,OUT : Pattern buffer size 3202*53ee8cc1Swenshuai.xi /// IN: Pattern buffer size 3203*53ee8cc1Swenshuai.xi /// OUT: Used Pattern buffer size 3204*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3205*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3206*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GenPattern(VDEC_StreamId *pStreamId, 3207*53ee8cc1Swenshuai.xi VDEC_EX_PatternType ePatternType, 3208*53ee8cc1Swenshuai.xi MS_PHY u32Addr, 3209*53ee8cc1Swenshuai.xi MS_U32* u32Size); 3210*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3211*53ee8cc1Swenshuai.xi /// Get the information of the least length of pattern used for specific function 3212*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Flush_pattern 3213*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3214*53ee8cc1Swenshuai.xi /// @param pFrmInfo \b IN : the information of the least length of pattern used for specific function 3215*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3216*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3217*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetPatternLeastLength(VDEC_StreamId *pStreamId, VDEC_EX_PatternType ePatternType); 3218*53ee8cc1Swenshuai.xi //Used for MHEG Decode iI frame 3219*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3220*53ee8cc1Swenshuai.xi /// For MHEG5 MW, decode one I frame 3221*53ee8cc1Swenshuai.xi /// @ingroup VDEC_MHEG_DECODE_I_Frame 3222*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3223*53ee8cc1Swenshuai.xi /// @param u32FrameBufAddr \b IN : output buffer address 3224*53ee8cc1Swenshuai.xi /// @param u32SrcSt \b IN : source start address 3225*53ee8cc1Swenshuai.xi /// @param u32SrcEnd \b IN : source end address 3226*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3227*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3228*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_MHEG_DecodeIFrame(VDEC_StreamId *pStreamId, 3229*53ee8cc1Swenshuai.xi MS_PHY u32FrameBufAddr, 3230*53ee8cc1Swenshuai.xi MS_PHY u32SrcSt, 3231*53ee8cc1Swenshuai.xi MS_PHY u32SrcEnd); 3232*53ee8cc1Swenshuai.xi 3233*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3234*53ee8cc1Swenshuai.xi /// For MHEG5 MW, check if I frame decode done 3235*53ee8cc1Swenshuai.xi /// @ingroup VDEC_MHEG_DECODE_I_Frame 3236*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3237*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3238*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: decode done 3239*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: not yet 3240*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_NOT_INIT: not initial yet 3241*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_RET_UNSUPPORTED: not supported with current decoder configuration 3242*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3243*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_MHEG_IsIFrameDecoding(VDEC_StreamId *pStreamId); 3244*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3245*53ee8cc1Swenshuai.xi /// For MHEG5 MW, reset decoder after I frame decode done 3246*53ee8cc1Swenshuai.xi /// @ingroup VDEC_MHEG_DECODE_I_Frame 3247*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3248*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3249*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3250*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_MHEG_RstIFrameDec(VDEC_StreamId *pStreamId); 3251*53ee8cc1Swenshuai.xi 3252*53ee8cc1Swenshuai.xi //ATSC Closed Caption control 3253*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3254*53ee8cc1Swenshuai.xi /// [Obsolete] Start CC data parsing. 3255*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3256*53ee8cc1Swenshuai.xi /// @param pCCParam \b IN : CC configuration 3257*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3258*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 3259*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3260*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_StartParsing(VDEC_StreamId *pStreamId, VDEC_EX_CCCfg *pCCParam); 3261*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3262*53ee8cc1Swenshuai.xi /// [Obsolete] Stop CC data parsing. 3263*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3264*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3265*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 3266*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3267*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_StopParsing(VDEC_StreamId *pStreamId); 3268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3269*53ee8cc1Swenshuai.xi /// [Obsolete] Get write pointer of CC data buffer. 3270*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3271*53ee8cc1Swenshuai.xi /// @param pu32Write \b OUT : current write pointer 3272*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3273*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 3274*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3275*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_GetWritePtr(VDEC_StreamId *pStreamId, MS_U32 *pu32Write); 3276*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3277*53ee8cc1Swenshuai.xi /// [Obsolete] Get the read pointer of CC data buffer. 3278*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3279*53ee8cc1Swenshuai.xi /// @param pu32Read \b OUT : current read pointer 3280*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3281*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 3282*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3283*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_GetReadPtr(VDEC_StreamId *pStreamId, MS_U32 *pu32Read); 3284*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3285*53ee8cc1Swenshuai.xi /// [Obsolete] Update the read pointer of CC data buffer. 3286*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3287*53ee8cc1Swenshuai.xi /// @param u32EachPacketSize \b IN : new read pointer 3288*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3289*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 3290*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3291*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_UpdateReadPtr(VDEC_StreamId *pStreamId, MS_U32 u32EachPacketSize); 3292*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3293*53ee8cc1Swenshuai.xi /// [Obsolete] Get if CC data buffer is overflow. 3294*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3295*53ee8cc1Swenshuai.xi /// @param pbOverflow \b OUT : overflow flag 3296*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3297*53ee8cc1Swenshuai.xi /// @return -VDEC_EX_Result 3298*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3299*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_GetIsOverflow(VDEC_StreamId *pStreamId, MS_BOOL *pbOverflow); 3300*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3301*53ee8cc1Swenshuai.xi /// Set up debug command 3302*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3303*53ee8cc1Swenshuai.xi /// @param u8Cmd \b IN : debug command 3304*53ee8cc1Swenshuai.xi /// @param u32CmdArg \b IN : command arg 3305*53ee8cc1Swenshuai.xi /// @ingroup VdecDebug 3306*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3307*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3308*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3309*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3310*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_DbgCmd(VDEC_StreamId *pStreamId, MS_U32 u8Cmd, MS_U32 u32CmdArg); 3311*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3312*53ee8cc1Swenshuai.xi /// Set debug data 3313*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3314*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN : data addr 3315*53ee8cc1Swenshuai.xi /// @param u32Data \b IN : data 3316*53ee8cc1Swenshuai.xi /// @ingroup VdecDebug 3317*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3318*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3319*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3320*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3321*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_DbgSetData(VDEC_StreamId *pStreamId, MS_VIRT u32Addr, MS_U32 u32Data); 3322*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3323*53ee8cc1Swenshuai.xi /// Get debug data 3324*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3325*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN : data addr 3326*53ee8cc1Swenshuai.xi /// @param u32Data \b IN : data 3327*53ee8cc1Swenshuai.xi /// @ingroup VdecDebug 3328*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3329*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3330*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3331*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3332*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_DbgGetData(VDEC_StreamId *pStreamId, MS_VIRT u32Addr, MS_U32 *u32Data); 3333*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3334*53ee8cc1Swenshuai.xi /// Set command to decode 3335*53ee8cc1Swenshuai.xi /// @ingroup Decode 3336*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3337*53ee8cc1Swenshuai.xi /// @param cmd_id \b IN : command id 3338*53ee8cc1Swenshuai.xi /// @param param \b IN : parameter 3339*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3340*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3341*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetControl(VDEC_StreamId *pStreamId, VDEC_EX_User_Cmd cmd_id, MS_VIRT param); 3342*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3343*53ee8cc1Swenshuai.xi /// Set command to decode 3344*53ee8cc1Swenshuai.xi /// @ingroup Decode 3345*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3346*53ee8cc1Swenshuai.xi /// @param cmd_id \b IN : command id 3347*53ee8cc1Swenshuai.xi /// @param param \b OUT : get current status/parameters 3348*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3349*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3350*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetControl(VDEC_StreamId *pStreamId, VDEC_EX_User_Cmd cmd_id, MS_U32 *param); 3351*53ee8cc1Swenshuai.xi 3352*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3353*53ee8cc1Swenshuai.xi /// No corresponding functino body, we should remove it 3354*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3355*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_EnableDispOneField(VDEC_StreamId *pStreamId, MS_BOOL bEnable); 3356*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3357*53ee8cc1Swenshuai.xi /// Get VDEC HW key 3358*53ee8cc1Swenshuai.xi /// @ingroup Get_information 3359*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3360*53ee8cc1Swenshuai.xi /// @param pu8Key \b OUT : HW key 3361*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3362*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3363*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetHWKey(VDEC_StreamId *pStreamId, MS_U8 *pu8Key); 3364*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3365*53ee8cc1Swenshuai.xi /// Dump debug status 3366*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3367*53ee8cc1Swenshuai.xi /// @ingroup VdecDebug 3368*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3369*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3370*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3371*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3372*53ee8cc1Swenshuai.xi void MApi_VDEC_EX_DbgDumpStatus(VDEC_StreamId *pStreamId); 3373*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3374*53ee8cc1Swenshuai.xi /// Get program count 3375*53ee8cc1Swenshuai.xi /// @ingroup VdecDebug 3376*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3377*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3378*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3379*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3380*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_DbgGetProgCnt(void); 3381*53ee8cc1Swenshuai.xi 3382*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3383*53ee8cc1Swenshuai.xi /// Enable Display Queue controller(Gstreamer,Uniplayer) 3384*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Display_Q_Control 3385*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3386*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : enable/disable 3387*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3388*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3389*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SetBlockDisplay(VDEC_StreamId *pStreamId, MS_BOOL bEnable); 3390*53ee8cc1Swenshuai.xi 3391*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3392*53ee8cc1Swenshuai.xi /// Enable Es buffer memory allocate 3393*53ee8cc1Swenshuai.xi /// @ingroup VDEC_ES_buffer_manage 3394*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3395*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : enable/disable 3396*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3397*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3398*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_EnableESBuffMalloc(VDEC_StreamId *pStreamId, MS_BOOL bEnable); 3399*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3400*53ee8cc1Swenshuai.xi /// Get difference between ES buffer read/write pointer 3401*53ee8cc1Swenshuai.xi /// @ingroup VDEC_ES_buffer_manage 3402*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3403*53ee8cc1Swenshuai.xi /// @param pData \b OUT : vacancy 3404*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3405*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3406*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_GetESBuffVacancy(VDEC_StreamId *pStreamId, void *pData); 3407*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3408*53ee8cc1Swenshuai.xi /// Get ES buffer to put data 3409*53ee8cc1Swenshuai.xi /// @ingroup VDEC_ES_buffer_manage 3410*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3411*53ee8cc1Swenshuai.xi /// @param u32ReqSize \b IN : request size 3412*53ee8cc1Swenshuai.xi /// @param u32AvailSize \b IN :available size 3413*53ee8cc1Swenshuai.xi /// @param u32Addr \b IN : address of ES buffer space 3414*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3415*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3416*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetESBuff(VDEC_StreamId *pStreamId, MS_U32 u32ReqSize, MS_U32 *u32AvailSize, MS_PHY *u32Addr); 3417*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3418*53ee8cc1Swenshuai.xi /// Get next display frame 3419*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Display_Q_Control 3420*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3421*53ee8cc1Swenshuai.xi /// @param ppDispFrm \b OUT : display frame 3422*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3423*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3424*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_GetNextDispFrame(VDEC_StreamId *pStreamId, VDEC_EX_DispFrame **ppDispFrm); 3425*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3426*53ee8cc1Swenshuai.xi /// Show display frame 3427*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Display_Q_Control 3428*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3429*53ee8cc1Swenshuai.xi /// @param pDispFrm \b IN : display frame 3430*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3431*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3432*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_DisplayFrame(VDEC_StreamId *pStreamId, VDEC_EX_DispFrame *pDispFrm); 3433*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3434*53ee8cc1Swenshuai.xi /// Release display frame 3435*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Display_Q_Control 3436*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3437*53ee8cc1Swenshuai.xi /// @param pDispFrm \b IN : display frame 3438*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3439*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3440*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_ReleaseFrame(VDEC_StreamId *pStreamId, VDEC_EX_DispFrame *pDispFrm); 3441*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3442*53ee8cc1Swenshuai.xi /// Capture display frame 3443*53ee8cc1Swenshuai.xi /// @ingroup VDEC_Display_Q_Control 3444*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3445*53ee8cc1Swenshuai.xi /// @param u32FrmPriData \b IN : specify the freezed frame index 3446*53ee8cc1Swenshuai.xi /// @param bEnable \b IN : enable/disable the freeze function 3447*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3448*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 3449*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CaptureFrame(VDEC_StreamId *pStreamId, MS_U32 u32FrmPriData, MS_BOOL bEnable); 3450*53ee8cc1Swenshuai.xi 3451*53ee8cc1Swenshuai.xi //used for mstar close caption group 3452*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3453*53ee8cc1Swenshuai.xi /// Init mstar CC 3454*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3455*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3456*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3457*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3458*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3459*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3460*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_Init(VDEC_StreamId *pStreamId, MS_U32 *pIn); 3461*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3462*53ee8cc1Swenshuai.xi /// Set mstar CC config 3463*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3464*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3465*53ee8cc1Swenshuai.xi /// @param eType \b IN : cc type 3466*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3467*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3468*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3469*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3470*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3471*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_SetCfg(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt, VDEC_EX_CCType eType, MS_U32 *pIn); 3472*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3473*53ee8cc1Swenshuai.xi /// Set mstar CC start addr 3474*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3475*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3476*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3477*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3478*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3479*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3480*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3481*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_SetBuffStartAdd(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt, MS_U32 *pIn); 3482*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3483*53ee8cc1Swenshuai.xi /// Update mstar CC write addr 3484*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3485*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3486*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3487*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3488*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3489*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3490*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3491*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_UpdateWriteAdd(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt, MS_U32 *pIn); 3492*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3493*53ee8cc1Swenshuai.xi /// Update mstar CC read addr 3494*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3495*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3496*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3497*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3498*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3499*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3500*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3501*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_UpdateReadAdd(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt, MS_U32 *pIn); 3502*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3503*53ee8cc1Swenshuai.xi /// Disable mstar CC parsing 3504*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3505*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3506*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3507*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3508*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3509*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3510*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3511*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_DisableParsing(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt); 3512*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3513*53ee8cc1Swenshuai.xi /// Get mstar CC info 3514*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3515*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3516*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3517*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3518*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3519*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3520*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3521*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_GetInfo(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt, VDEC_EX_CCInfoCmd eCmd, MS_U32 *pOut); 3522*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3523*53ee8cc1Swenshuai.xi /// Check mstar CC is RST done 3524*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3525*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3526*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3527*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3528*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3529*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3530*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3531*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_GetIsRstDone(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt); 3532*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3533*53ee8cc1Swenshuai.xi /// Check mstar CC is overflow 3534*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3535*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3536*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3537*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3538*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3539*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3540*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3541*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_CC_GetIsBuffOverflow(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt); 3542*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3543*53ee8cc1Swenshuai.xi /// Get mstar CC write addr 3544*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3545*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3546*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3547*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3548*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3549*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3550*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3551*53ee8cc1Swenshuai.xi MS_PHY MApi_VDEC_EX_CC_GetWriteAdd(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt); 3552*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3553*53ee8cc1Swenshuai.xi /// Get mstar CC read addr 3554*53ee8cc1Swenshuai.xi /// @param eStream \b IN : stream type 3555*53ee8cc1Swenshuai.xi /// @param eFmt \b IN : cc format 3556*53ee8cc1Swenshuai.xi /// @ingroup VdecCloseCaption 3557*53ee8cc1Swenshuai.xi /// @return VDEC_EX_Result 3558*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_OK: Success 3559*53ee8cc1Swenshuai.xi /// - E_VDEC_EX_FAIL: Failed 3560*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3561*53ee8cc1Swenshuai.xi MS_PHY MApi_VDEC_EX_CC_GetReadAdd(VDEC_StreamId *pStreamId, VDEC_EX_CCFormat eFmt); 3562*53ee8cc1Swenshuai.xi 3563*53ee8cc1Swenshuai.xi //System preseting function, it should be called when system init. 3564*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SystemPreSetControl(VDEC_EX_User_Cmd cmd_id, void *pParam); 3565*53ee8cc1Swenshuai.xi #ifdef VDEC_CAP_SYSTEM_PREGET_API 3566*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SystemPreGetControl(VDEC_EX_User_Cmd cmd_id, void* pParam); 3567*53ee8cc1Swenshuai.xi #endif 3568*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_SystemPostSetControl(VDEC_EX_User_Cmd cmd_id, void *pParam); 3569*53ee8cc1Swenshuai.xi VDEC_EX_Result MApi_VDEC_EX_PreSetControl(VDEC_StreamId *pStreamId, VDEC_EX_User_Cmd cmd_id, MS_U32 param); 3570*53ee8cc1Swenshuai.xi #ifdef AUTO_ASSIGN_FRAMEBUFFER 3571*53ee8cc1Swenshuai.xi void MApi_VDEC_EX_SetFrameBuffer(MS_U32 u32FrmBufAddr,MS_U32 u32FrmBufSize); 3572*53ee8cc1Swenshuai.xi void MApi_VDEC_EX_GetFrmInfoByTask(MS_U8 u8TaskId,MS_BOOL bUHD,MS_BOOL bFileMode,MS_U32* u32FrmBufAddr,MS_U32* u32FrmBufSize); 3573*53ee8cc1Swenshuai.xi #endif 3574*53ee8cc1Swenshuai.xi 3575*53ee8cc1Swenshuai.xi #else 3576*53ee8cc1Swenshuai.xi 3577*53ee8cc1Swenshuai.xi #define PROTECTBUFFER_MAX_NUM 3 3578*53ee8cc1Swenshuai.xi typedef struct 3579*53ee8cc1Swenshuai.xi { 3580*53ee8cc1Swenshuai.xi MS_PHY u32Addr; // PA 3581*53ee8cc1Swenshuai.xi MS_U32 u32Size; // unit : byte 3582*53ee8cc1Swenshuai.xi 3583*53ee8cc1Swenshuai.xi } VDEC_EX_TEE_ProtectBufferInfo; 3584*53ee8cc1Swenshuai.xi 3585*53ee8cc1Swenshuai.xi 3586*53ee8cc1Swenshuai.xi typedef struct 3587*53ee8cc1Swenshuai.xi { 3588*53ee8cc1Swenshuai.xi MS_PHY u32VPUStartAddr; // PA 3589*53ee8cc1Swenshuai.xi MS_U32 u32VPUCodeSize; // unit : byte 3590*53ee8cc1Swenshuai.xi MS_PHY u32FrameBuffertartAddrMain; // PA 3591*53ee8cc1Swenshuai.xi MS_U32 u32FrameBufferSizeMain; // unit : byte 3592*53ee8cc1Swenshuai.xi MS_PHY u32BitstreamStartAddrMain; // PA 3593*53ee8cc1Swenshuai.xi MS_U32 u32BitstreamSizeMain; // unit : byte 3594*53ee8cc1Swenshuai.xi MS_PHY u32FrameBuffertartAddrSub; // PA 3595*53ee8cc1Swenshuai.xi MS_U32 u32FrameBufferSizeSub; // unit : byte 3596*53ee8cc1Swenshuai.xi MS_PHY u32BitstreamStartAddrSub; // PA 3597*53ee8cc1Swenshuai.xi MS_U32 u32BitstreamSizeSub; // unit : byte 3598*53ee8cc1Swenshuai.xi 3599*53ee8cc1Swenshuai.xi MS_PHY u32VPUSHMAddr; // PA 3600*53ee8cc1Swenshuai.xi MS_U32 u32VPUSHMSize; // unit : byte 3601*53ee8cc1Swenshuai.xi MS_PHY u32MIU1StartAddr; // PA 3602*53ee8cc1Swenshuai.xi 3603*53ee8cc1Swenshuai.xi MS_U32 u32ProtectNum; 3604*53ee8cc1Swenshuai.xi VDEC_EX_TEE_ProtectBufferInfo ProtectInfo[PROTECTBUFFER_MAX_NUM]; 3605*53ee8cc1Swenshuai.xi } VDEC_EX_TEE_VPU_Param; 3606*53ee8cc1Swenshuai.xi //Used for OP-TEE 3607*53ee8cc1Swenshuai.xi typedef struct 3608*53ee8cc1Swenshuai.xi { 3609*53ee8cc1Swenshuai.xi MS_U32 ID[4];//id[3]: 0, id[2]=address_h, id[1]=address_l, id[0]=length 3610*53ee8cc1Swenshuai.xi }VDEC_EX_RESOURCE; 3611*53ee8cc1Swenshuai.xi 3612*53ee8cc1Swenshuai.xi typedef enum 3613*53ee8cc1Swenshuai.xi { 3614*53ee8cc1Swenshuai.xi ///Setup VDEC relatived buffer 3615*53ee8cc1Swenshuai.xi E_VDEC_EX_SET_VPU_SETTING, 3616*53ee8cc1Swenshuai.xi ///Get VPU Protect start addr 3617*53ee8cc1Swenshuai.xi E_VDEC_EX_GET_VPU_PROTECT_START_ADDR, 3618*53ee8cc1Swenshuai.xi ///VPU Load code in secure world 3619*53ee8cc1Swenshuai.xi E_VDEC_EX_SET_VPU_LOADCODE, 3620*53ee8cc1Swenshuai.xi ///Setup secure buffer 3621*53ee8cc1Swenshuai.xi E_VDEC_EX_SET_SECURE_BUFFER, 3622*53ee8cc1Swenshuai.xi ///Setup secure frame buffer 2 3623*53ee8cc1Swenshuai.xi E_VDEC_EX_SET_SECURE_FB2, 3624*53ee8cc1Swenshuai.xi } VDEC_EX_TEE_USER_CMD; 3625*53ee8cc1Swenshuai.xi ///OP TEE used buffer 3626*53ee8cc1Swenshuai.xi typedef enum 3627*53ee8cc1Swenshuai.xi { ///OP-TEE VPU ADDR 3628*53ee8cc1Swenshuai.xi E_VDEC_VPU, 3629*53ee8cc1Swenshuai.xi ///OP-TEE Bitstream Buffer ADDR 3630*53ee8cc1Swenshuai.xi E_VDEC_BS, 3631*53ee8cc1Swenshuai.xi ///OP-TEE Frame Buffer 3632*53ee8cc1Swenshuai.xi E_VDEC_FB, 3633*53ee8cc1Swenshuai.xi ///OP-TEE Frame Buffer 2 ADDR 3634*53ee8cc1Swenshuai.xi E_VDEC_FB2, 3635*53ee8cc1Swenshuai.xi } VDEC_EX_OPTEE_Buffer; 3636*53ee8cc1Swenshuai.xi 3637*53ee8cc1Swenshuai.xi //Used for TEE 3638*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3639*53ee8cc1Swenshuai.xi /// GetControl for TEE 3640*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3641*53ee8cc1Swenshuai.xi /// @param cmd \b IN : TEE user cmd 3642*53ee8cc1Swenshuai.xi /// @param param \b IN : TEE VPU parameters 3643*53ee8cc1Swenshuai.xi /// @return MS_BOOL 3644*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3645*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_EX_TEE_GetControl(VDEC_EX_TEE_USER_CMD cmd,void* param); 3646*53ee8cc1Swenshuai.xi 3647*53ee8cc1Swenshuai.xi 3648*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3649*53ee8cc1Swenshuai.xi /// SetControl for TEE 3650*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3651*53ee8cc1Swenshuai.xi /// @param cmd \b IN : TEE user cmd 3652*53ee8cc1Swenshuai.xi /// @param param \b IN : TEE VPU parameters 3653*53ee8cc1Swenshuai.xi /// @return MS_BOOL 3654*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3655*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_EX_TEE_SetControl(VDEC_EX_TEE_USER_CMD cmd,void* param); 3656*53ee8cc1Swenshuai.xi 3657*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3658*53ee8cc1Swenshuai.xi /// request a handle mapped to ES buffer with specified size 3659*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3660*53ee8cc1Swenshuai.xi /// @param u64PipeID \b IN : handle 3661*53ee8cc1Swenshuai.xi /// @param u32ReqSize \b IN : the size needed for this handle 3662*53ee8cc1Swenshuai.xi /// @param pu32EsHandle \b OUT : output ES handle 3663*53ee8cc1Swenshuai.xi /// @return MS_U32, UTOPIA_STATUS_SUCCESS or UTOPIA_STATUS_FAIL 3664*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3665*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_TEE_AllocateESBufHandle(MS_U64 u64PipeID, MS_U32 u32ReqSize, MS_U32 *pu32EsHandle); 3666*53ee8cc1Swenshuai.xi 3667*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3668*53ee8cc1Swenshuai.xi /// get ES relative offset corresponding to an ES handle. This value of this offset is with in 3669*53ee8cc1Swenshuai.xi /// 0 and ES buffer size 3670*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3671*53ee8cc1Swenshuai.xi /// @param u64PipeID \b IN : handle 3672*53ee8cc1Swenshuai.xi /// @param u32EsHandle \b IN : handle 3673*53ee8cc1Swenshuai.xi /// @param pPhyAddr \b OUT : address of the buffer mapped with this handle 3674*53ee8cc1Swenshuai.xi /// @return MS_U32, UTOPIA_STATUS_SUCCESS or UTOPIA_STATUS_FAIL 3675*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3676*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_EX_TEE_GetESBufByHandle(MS_U64 u64PipeID, MS_U32 u32EsHandle, MS_PHY *pPhyAddr); 3677*53ee8cc1Swenshuai.xi 3678*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3679*53ee8cc1Swenshuai.xi /// GetControl for TEE 3680*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3681*53ee8cc1Swenshuai.xi /// @return MS_BOOL 3682*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3683*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_EX_Create_Tee_System(void); 3684*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_700) || defined(UFO_PUBLIC_HEADER_500) 3685*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3686*53ee8cc1Swenshuai.xi /// Get address for TEE //Used for OP-TEE 3687*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3688*53ee8cc1Swenshuai.xi /// @param u64PipeID \b IN : stream id 3689*53ee8cc1Swenshuai.xi /// @param ResEnum \b IN : TEE lock buffer 3690*53ee8cc1Swenshuai.xi /// @param pResouce \b IN : TEE lock buffer parameters 3691*53ee8cc1Swenshuai.xi /// @return MS_U32 3692*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3693*53ee8cc1Swenshuai.xi MS_U32 MDrv_VDEC_GetResourceByPipeNNum(MS_U64 u64PipeID, VDEC_EX_OPTEE_Buffer ResEnum, VDEC_EX_RESOURCE* pResouce); 3694*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3695*53ee8cc1Swenshuai.xi /// Get address for TEE //Used for OP-TEE 3696*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3697*53ee8cc1Swenshuai.xi /// @param u64PipeID \b IN : stream id 3698*53ee8cc1Swenshuai.xi /// @param U32MaxNRetResNum \b IN : TEE number of lock buffers 3699*53ee8cc1Swenshuai.xi /// @param pResouce \b IN : TEE lock buffer parameters 3700*53ee8cc1Swenshuai.xi /// @return MS_U32 3701*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3702*53ee8cc1Swenshuai.xi MS_U32 MDrv_VDEC_GetResourceByPipeID(MS_U64 u64PipeID, MS_U32* U32MaxNRetResNum, VDEC_EX_RESOURCE* pResouce); 3703*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3704*53ee8cc1Swenshuai.xi /// Check lock status //Used for OP-TEE 3705*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3706*53ee8cc1Swenshuai.xi /// @param u64PipeID \b IN : stream id 3707*53ee8cc1Swenshuai.xi /// @param u32SecureDMA \b IN : enable TEE lock 3708*53ee8cc1Swenshuai.xi /// @param u32OperationMode \b IN : enable TEE lock 3709*53ee8cc1Swenshuai.xi /// @return MS_U32 3710*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3711*53ee8cc1Swenshuai.xi MS_U32 MDrv_VDEC_ConfigPipe(MS_U64 u64PipeID, MS_U32 u32SecureDMA, MS_U32 u32OperationMode); 3712*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3713*53ee8cc1Swenshuai.xi /// Check lock status //Used for OP-TEE 3714*53ee8cc1Swenshuai.xi /// @ingroup VDEC_TEE 3715*53ee8cc1Swenshuai.xi /// @param u64PipeID \b IN : stream id 3716*53ee8cc1Swenshuai.xi /// @param u32SecureDMA \b IN : enable TEE lock 3717*53ee8cc1Swenshuai.xi /// @param u32OperationMode \b IN : enable TEE lock 3718*53ee8cc1Swenshuai.xi /// @return MS_U32 3719*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------ 3720*53ee8cc1Swenshuai.xi MS_U32 MDrv_VDEC_CheckPipe(MS_U64 u64PipeID, MS_U32 u32SecureDMA, MS_U32 u32OperationMode); 3721*53ee8cc1Swenshuai.xi #endif 3722*53ee8cc1Swenshuai.xi 3723*53ee8cc1Swenshuai.xi 3724*53ee8cc1Swenshuai.xi 3725*53ee8cc1Swenshuai.xi #endif 3726*53ee8cc1Swenshuai.xi 3727*53ee8cc1Swenshuai.xi #ifdef __cplusplus 3728*53ee8cc1Swenshuai.xi } 3729*53ee8cc1Swenshuai.xi #endif 3730*53ee8cc1Swenshuai.xi 3731*53ee8cc1Swenshuai.xi 3732*53ee8cc1Swenshuai.xi #endif // _API_VDEC_EX_H_ 3733*53ee8cc1Swenshuai.xi 3734