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.h 98*53ee8cc1Swenshuai.xi /// @brief VDEC API 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi #ifndef _API_VDEC_H_ 103*53ee8cc1Swenshuai.xi #define _API_VDEC_H_ 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi #include "MsDevice.h" 106*53ee8cc1Swenshuai.xi #include "MsTypes.h" 107*53ee8cc1Swenshuai.xi #ifdef __cplusplus 108*53ee8cc1Swenshuai.xi extern "C" 109*53ee8cc1Swenshuai.xi { 110*53ee8cc1Swenshuai.xi #endif 111*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 112*53ee8cc1Swenshuai.xi // Macro and Define 113*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 114*53ee8cc1Swenshuai.xi #define MSIF_VDEC_LIB_CODE {'V','D','E','C'} 115*53ee8cc1Swenshuai.xi #define MSIF_VDEC_LIBVER {'0','E'} 116*53ee8cc1Swenshuai.xi #define MSIF_VDEC_BUILDNUM {'0','2'} 117*53ee8cc1Swenshuai.xi #define MSIF_VDEC_CHANGELIST {'0','0','6','8','9','1','8','8'} 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi /// Version string. 120*53ee8cc1Swenshuai.xi #define VDEC_API_VERSION /* Character String for DRV/API version */ \ 121*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 122*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 123*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 124*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 125*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 126*53ee8cc1Swenshuai.xi MSIF_CPU, \ 127*53ee8cc1Swenshuai.xi MSIF_VDEC_LIB_CODE, /* IP__ */ \ 128*53ee8cc1Swenshuai.xi MSIF_VDEC_LIBVER, /* 0.0 ~ Z.Z */ \ 129*53ee8cc1Swenshuai.xi MSIF_VDEC_BUILDNUM, /* 00 ~ 99 */ \ 130*53ee8cc1Swenshuai.xi MSIF_VDEC_CHANGELIST, /* CL# */ \ 131*53ee8cc1Swenshuai.xi MSIF_OS 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi #define VDEC_DEFAULT_DBG_MSG_LEVEL E_VDEC_DBG_LEVEL_DBG 134*53ee8cc1Swenshuai.xi #define VDEC_RVD_BROKEN_BY_US 0x80000000 135*53ee8cc1Swenshuai.xi #define VDEC_MVD_PIC_START_FLAG 0x40000000 136*53ee8cc1Swenshuai.xi #define VDEC_BIT(_bit_) (1 << (_bit_)) 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 139*53ee8cc1Swenshuai.xi // Type and Structure 140*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 141*53ee8cc1Swenshuai.xi 142*53ee8cc1Swenshuai.xi #define VDEC_FPA_TYPE_CHECKERBOARD_INTERLEAVING 0 143*53ee8cc1Swenshuai.xi #define VDEC_FPA_TYPE_COLUMN_INTERLEAVEING 1 144*53ee8cc1Swenshuai.xi #define VDEC_FPA_TYPE_ROW_INTERLEAVEING 2 145*53ee8cc1Swenshuai.xi #define VDEC_FPA_TYPE_SIDE_BY_SIDE_PACKING 3 146*53ee8cc1Swenshuai.xi #define VDEC_FPA_TYPE_TOP_BOTTOM_PACKING 4 147*53ee8cc1Swenshuai.xi #define VDEC_FPA_TYPE_TEMPORAL_INTERLEAVING_FRM 5 148*53ee8cc1Swenshuai.xi 149*53ee8cc1Swenshuai.xi /// Decoder event enumerator. 150*53ee8cc1Swenshuai.xi typedef enum 151*53ee8cc1Swenshuai.xi { 152*53ee8cc1Swenshuai.xi /// turn off all event 153*53ee8cc1Swenshuai.xi E_VDEC_EVENT_OFF = 0x00, 154*53ee8cc1Swenshuai.xi /// display one frame/field 155*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DISP_ONE = VDEC_BIT(0), 156*53ee8cc1Swenshuai.xi /// repeat one frame/field 157*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DISP_REPEAT = VDEC_BIT(1), 158*53ee8cc1Swenshuai.xi /// one CC data should be displayed 159*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DISP_WITH_CC = VDEC_BIT(2), 160*53ee8cc1Swenshuai.xi /// decode one frame 161*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DEC_ONE = VDEC_BIT(3), 162*53ee8cc1Swenshuai.xi /// decode one I frame 163*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DEC_I = VDEC_BIT(4), 164*53ee8cc1Swenshuai.xi /// decode error 165*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DEC_ERR = VDEC_BIT(5), 166*53ee8cc1Swenshuai.xi /// display information is changed 167*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DISP_INFO_CHG = VDEC_BIT(6), 168*53ee8cc1Swenshuai.xi /// find user data 169*53ee8cc1Swenshuai.xi E_VDEC_EVENT_USER_DATA_FOUND = VDEC_BIT(7), 170*53ee8cc1Swenshuai.xi /// display information ready after be changed 171*53ee8cc1Swenshuai.xi E_VDEC_EVENT_DISP_INFO_RDY = VDEC_BIT(8), 172*53ee8cc1Swenshuai.xi /// first frame decoded 173*53ee8cc1Swenshuai.xi E_VDEC_EVENT_FIRST_FRAME = VDEC_BIT(9), 174*53ee8cc1Swenshuai.xi /// first picture found 175*53ee8cc1Swenshuai.xi E_VDEC_EVENT_PIC_FOUND = VDEC_BIT(10), 176*53ee8cc1Swenshuai.xi /// video is ready to display (no garbage and avsync done) 177*53ee8cc1Swenshuai.xi E_VDEC_EVENT_VIDEO_UNMUTE = VDEC_BIT(11), 178*53ee8cc1Swenshuai.xi /// new sequence header found 179*53ee8cc1Swenshuai.xi E_VDEC_EVENT_SEQ_HDR_FOUND = VDEC_BIT(12), 180*53ee8cc1Swenshuai.xi /// active format description found 181*53ee8cc1Swenshuai.xi E_VDEC_EVENT_AFD_FOUND = VDEC_BIT(13), 182*53ee8cc1Swenshuai.xi // ES data invalid 183*53ee8cc1Swenshuai.xi E_VDEC_EVENT_ES_DATA_ERR = VDEC_BIT(14), 184*53ee8cc1Swenshuai.xi /// speed up the un-mute screen on XC. 185*53ee8cc1Swenshuai.xi E_VDEC_EVENT_XC_LOW_DEALY = VDEC_BIT(16) 186*53ee8cc1Swenshuai.xi } VDEC_EventFlag; 187*53ee8cc1Swenshuai.xi 188*53ee8cc1Swenshuai.xi //define VDEC CB type 189*53ee8cc1Swenshuai.xi typedef enum 190*53ee8cc1Swenshuai.xi { 191*53ee8cc1Swenshuai.xi E_VDEC_CB_MAIN = 0, 192*53ee8cc1Swenshuai.xi E_VDEC_CB_SUB, 193*53ee8cc1Swenshuai.xi } VDEC_CB_TYPE; 194*53ee8cc1Swenshuai.xi 195*53ee8cc1Swenshuai.xi /// Codec type enumerator 196*53ee8cc1Swenshuai.xi typedef enum 197*53ee8cc1Swenshuai.xi { 198*53ee8cc1Swenshuai.xi ///Unsupported codec type 199*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_NONE = 0, 200*53ee8cc1Swenshuai.xi ///MPEG-1 / MPEG-2 201*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_MPEG2, 202*53ee8cc1Swenshuai.xi ///H263 (short video header) 203*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_H263, 204*53ee8cc1Swenshuai.xi ///MPEG4 (default) 205*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_MPEG4, 206*53ee8cc1Swenshuai.xi ///MPEG4 (Divx311) 207*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_DIVX311, 208*53ee8cc1Swenshuai.xi ///MPEG4 (Divx412) 209*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_DIVX412, 210*53ee8cc1Swenshuai.xi ///FLV 211*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_FLV, 212*53ee8cc1Swenshuai.xi ///VC1 advanced profile (VC1) 213*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_VC1_ADV, 214*53ee8cc1Swenshuai.xi ///VC1 main profile (RCV) 215*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_VC1_MAIN, 216*53ee8cc1Swenshuai.xi ///Real Video version 8 217*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_RV8, 218*53ee8cc1Swenshuai.xi ///Real Video version 9 and 10 219*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_RV9, 220*53ee8cc1Swenshuai.xi ///H264 221*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_H264, 222*53ee8cc1Swenshuai.xi ///AVS 223*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_AVS, 224*53ee8cc1Swenshuai.xi ///MJPEG 225*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_MJPEG, 226*53ee8cc1Swenshuai.xi ///MVC 227*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_MVC, 228*53ee8cc1Swenshuai.xi ///VP8 229*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_VP8, 230*53ee8cc1Swenshuai.xi ///HEVC 231*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_HEVC, 232*53ee8cc1Swenshuai.xi ///VP9 233*53ee8cc1Swenshuai.xi E_VDEC_CODEC_TYPE_VP9 234*53ee8cc1Swenshuai.xi } VDEC_CodecType; 235*53ee8cc1Swenshuai.xi 236*53ee8cc1Swenshuai.xi /// Input source select enumerator 237*53ee8cc1Swenshuai.xi typedef enum 238*53ee8cc1Swenshuai.xi { 239*53ee8cc1Swenshuai.xi ///DTV mode 240*53ee8cc1Swenshuai.xi E_VDEC_SRC_MODE_DTV = 0, 241*53ee8cc1Swenshuai.xi ///TS file mode 242*53ee8cc1Swenshuai.xi E_VDEC_SRC_MODE_TS_FILE, 243*53ee8cc1Swenshuai.xi ///generic file mode 244*53ee8cc1Swenshuai.xi E_VDEC_SRC_MODE_FILE, 245*53ee8cc1Swenshuai.xi /// TS file and dual ES buffer mode 246*53ee8cc1Swenshuai.xi E_VDEC_SRC_MODE_TS_FILE_DUAL_ES, 247*53ee8cc1Swenshuai.xi ///generic file and dual ES buffer mode 248*53ee8cc1Swenshuai.xi E_VDEC_SRC_MODE_FILE_DUAL_ES, 249*53ee8cc1Swenshuai.xi } VDEC_SrcMode; 250*53ee8cc1Swenshuai.xi 251*53ee8cc1Swenshuai.xi /// Function return enumerator 252*53ee8cc1Swenshuai.xi typedef enum 253*53ee8cc1Swenshuai.xi { 254*53ee8cc1Swenshuai.xi ///failed 255*53ee8cc1Swenshuai.xi E_VDEC_FAIL = 0, 256*53ee8cc1Swenshuai.xi ///success 257*53ee8cc1Swenshuai.xi E_VDEC_OK, 258*53ee8cc1Swenshuai.xi ///invalid parameter 259*53ee8cc1Swenshuai.xi E_VDEC_RET_INVALID_PARAM, 260*53ee8cc1Swenshuai.xi ///access not allow 261*53ee8cc1Swenshuai.xi E_VDEC_RET_ILLEGAL_ACCESS, 262*53ee8cc1Swenshuai.xi ///hardware abnormal 263*53ee8cc1Swenshuai.xi E_VDEC_RET_HARDWARE_BREAKDOWN, 264*53ee8cc1Swenshuai.xi ///unsupported 265*53ee8cc1Swenshuai.xi E_VDEC_RET_UNSUPPORTED, 266*53ee8cc1Swenshuai.xi ///timeout 267*53ee8cc1Swenshuai.xi E_VDEC_RET_TIMEOUT, 268*53ee8cc1Swenshuai.xi ///not ready 269*53ee8cc1Swenshuai.xi E_VDEC_RET_NOT_READY, 270*53ee8cc1Swenshuai.xi ///not initial 271*53ee8cc1Swenshuai.xi E_VDEC_RET_NOT_INIT, 272*53ee8cc1Swenshuai.xi ///not exit after last initialization 273*53ee8cc1Swenshuai.xi E_VDEC_RET_NOT_EXIT, 274*53ee8cc1Swenshuai.xi ///not running, counter does not change 275*53ee8cc1Swenshuai.xi E_VDEC_RET_NOT_RUNNING, 276*53ee8cc1Swenshuai.xi } VDEC_Result; 277*53ee8cc1Swenshuai.xi 278*53ee8cc1Swenshuai.xi /// Action enumerator of display commands 279*53ee8cc1Swenshuai.xi typedef enum 280*53ee8cc1Swenshuai.xi { 281*53ee8cc1Swenshuai.xi /// Action- display frame 282*53ee8cc1Swenshuai.xi E_VDEC_DISP_ACTION_DISPLAY = 1, 283*53ee8cc1Swenshuai.xi /// Action - release frame 284*53ee8cc1Swenshuai.xi E_VDEC_DISP_ACTION_RELEASE, 285*53ee8cc1Swenshuai.xi } VDEC_DispCmdAction; 286*53ee8cc1Swenshuai.xi 287*53ee8cc1Swenshuai.xi /// Freeze picture select after flush decoder 288*53ee8cc1Swenshuai.xi typedef enum 289*53ee8cc1Swenshuai.xi { 290*53ee8cc1Swenshuai.xi /// Freeze at current display picture 291*53ee8cc1Swenshuai.xi E_VDEC_FREEZE_AT_CUR_PIC = 1, 292*53ee8cc1Swenshuai.xi /// Freeze at the latest decode picture 293*53ee8cc1Swenshuai.xi E_VDEC_FREEZE_AT_LAST_PIC, 294*53ee8cc1Swenshuai.xi } VDEC_FreezePicSelect; 295*53ee8cc1Swenshuai.xi 296*53ee8cc1Swenshuai.xi /// Error code enumerator 297*53ee8cc1Swenshuai.xi typedef enum 298*53ee8cc1Swenshuai.xi { 299*53ee8cc1Swenshuai.xi E_VDEC_ERR_CODE_BASE = 0x01000000, 300*53ee8cc1Swenshuai.xi E_VDEC_ERR_CODE_NOT_SUPPORT, 301*53ee8cc1Swenshuai.xi E_VDEC_ERR_CODE_ILLEGAL_ACCESS, 302*53ee8cc1Swenshuai.xi E_VDEC_ERR_CODE_FRMRATE_NOT_SUPPORT, 303*53ee8cc1Swenshuai.xi E_VDEC_ERR_CODE_DIVX_PLUS_UNSUPPORTED, 304*53ee8cc1Swenshuai.xi 305*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_BASE = 0x02000000, 306*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_SHAPE , 307*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_USED_SPRITE , 308*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_NOT_8_BIT , ///< error_status : bits per pixel 309*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_NERPRED_ENABLE , 310*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_REDUCED_RES_ENABLE , 311*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_SCALABILITY , 312*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_OTHER , 313*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_H263_ERROR , 314*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_RES_NOT_SUPPORT , ///< error_status : none 315*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_MPEG4_NOT_SUPPORT , ///< error_status : none 316*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_PROFILE_NOT_SUPPORT , ///< error_status : none 317*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_RCV_ERROR_OCCUR , ///< error_status : none 318*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_VC1_NOT_SUPPORT , ///< error_status : none 319*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_UNKNOW_CODEC_NOT_SUPPORT , ///< error_status : none 320*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_SLQ_TBL_NOT_SUPPORT , ///< error_status : none 321*53ee8cc1Swenshuai.xi E_VDEC_MVD_ERR_CODE_FRAME_BUF_NOT_ENOUGH , ///< error_status : none 322*53ee8cc1Swenshuai.xi 323*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_BASE = 0x03000000, 324*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_GENERAL_BASE = (0x0000|E_VDEC_HVD_ERR_CODE_BASE), 325*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_OUT_OF_SPEC , 326*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_UNKNOW_ERR, 327*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_HW_BREAK_DOWN, 328*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_HW_DEC_TIMEOUT, 329*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_OUT_OF_MEMORY, 330*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_UNKNOWN_CODEC, 331*53ee8cc1Swenshuai.xi // AVC 332*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVC_BASE = (0x1000|E_VDEC_HVD_ERR_CODE_BASE), 333*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVC_SPS_BROKEN, 334*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVC_SPS_NOT_IN_SPEC, 335*53ee8cc1Swenshuai.xi E_VDEC_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 336*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVC_PPS_BROKEN, ///< PPS is not valid 337*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVC_REF_LIST, 338*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVC_NO_REF, 339*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVC_RES, 340*53ee8cc1Swenshuai.xi // AVS 341*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVS_BASE = (0x2000|E_VDEC_HVD_ERR_CODE_BASE), 342*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_AVS_RES, 343*53ee8cc1Swenshuai.xi // RM 344*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_BASE = (0x3000|E_VDEC_HVD_ERR_CODE_BASE), 345*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_PACKET_HEADER, 346*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_FRAME_HEADER, 347*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_SLICE_HEADER, 348*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_BYTE_CNT, 349*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_DISP_TIMEOUT, 350*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_NO_REF, 351*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_VLC, 352*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_SIZE, 353*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_RM_RES, 354*53ee8cc1Swenshuai.xi 355*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_BASE = 0x04000000, 356*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_PACKET_HEADER, ///< packet header version error 357*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_FRAME_HEADER, ///< frame type error 358*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_SLICE_HEADER, ///< slice header error 359*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_DECODE_TIMEOUT, ///< decode MB timeout 360*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_OUT_OF_MEMORY, ///< frame buffer is out of memory 361*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_BYTE_POS, ///< can not find in ID table 362*53ee8cc1Swenshuai.xi E_VDEC_RVD_ERR_CODE_DISPLAY_TIMEOUT,/// 363*53ee8cc1Swenshuai.xi 364*53ee8cc1Swenshuai.xi E_VDEC_MJPEG_ERR_CODE_BASE = 0x05000000, 365*53ee8cc1Swenshuai.xi E_VDEC_HVD_ERR_CODE_MJPEG_RES, 366*53ee8cc1Swenshuai.xi } VDEC_ErrCode; 367*53ee8cc1Swenshuai.xi 368*53ee8cc1Swenshuai.xi /// Frame rate conversion mode enumerator 369*53ee8cc1Swenshuai.xi typedef enum 370*53ee8cc1Swenshuai.xi { 371*53ee8cc1Swenshuai.xi /// Disable FRC mode. 372*53ee8cc1Swenshuai.xi E_VDEC_FRC_NORMAL = 0, 373*53ee8cc1Swenshuai.xi /// Output rate is twice of input rate (ex. 30p to 60p) 374*53ee8cc1Swenshuai.xi E_VDEC_FRC_DISP_TWICE, 375*53ee8cc1Swenshuai.xi /// 3:2 pulldown mode (ex. 24p to 60i or 60p) 376*53ee8cc1Swenshuai.xi E_VDEC_FRC_3_2_PULLDOWN, 377*53ee8cc1Swenshuai.xi /// PAL to NTSC conversion (50i to 60i) 378*53ee8cc1Swenshuai.xi E_VDEC_FRC_PAL_TO_NTSC, 379*53ee8cc1Swenshuai.xi /// NTSC to PAL conversion (60i to 50i) 380*53ee8cc1Swenshuai.xi E_VDEC_FRC_NTSC_TO_PAL, 381*53ee8cc1Swenshuai.xi /// Output rate 50P ->60P 382*53ee8cc1Swenshuai.xi E_VDEC_FRC_MODE_50P_60P, 383*53ee8cc1Swenshuai.xi /// Output rate 60P ->50P 384*53ee8cc1Swenshuai.xi E_VDEC_FRC_MODE_60P_50P, 385*53ee8cc1Swenshuai.xi } VDEC_FrcMode; 386*53ee8cc1Swenshuai.xi 387*53ee8cc1Swenshuai.xi /// Trick decode mode enumerator 388*53ee8cc1Swenshuai.xi typedef enum 389*53ee8cc1Swenshuai.xi { 390*53ee8cc1Swenshuai.xi /// decode all frame 391*53ee8cc1Swenshuai.xi E_VDEC_TRICK_DEC_ALL = 0, 392*53ee8cc1Swenshuai.xi /// decode all except of non-reference frame 393*53ee8cc1Swenshuai.xi E_VDEC_TRICK_DEC_IP, 394*53ee8cc1Swenshuai.xi /// only decode I frame 395*53ee8cc1Swenshuai.xi E_VDEC_TRICK_DEC_I, 396*53ee8cc1Swenshuai.xi } VDEC_TrickDec; 397*53ee8cc1Swenshuai.xi 398*53ee8cc1Swenshuai.xi /// Display speed setting enumerator 399*53ee8cc1Swenshuai.xi typedef enum 400*53ee8cc1Swenshuai.xi { 401*53ee8cc1Swenshuai.xi /// default speed type 402*53ee8cc1Swenshuai.xi E_VDEC_SPEED_DEFAULT = 0, 403*53ee8cc1Swenshuai.xi /// fast display 404*53ee8cc1Swenshuai.xi E_VDEC_SPEED_FAST, 405*53ee8cc1Swenshuai.xi /// slow display 406*53ee8cc1Swenshuai.xi E_VDEC_SPEED_SLOW, 407*53ee8cc1Swenshuai.xi } VDEC_SpeedType; 408*53ee8cc1Swenshuai.xi 409*53ee8cc1Swenshuai.xi /// The display speed enumerator 410*53ee8cc1Swenshuai.xi typedef enum 411*53ee8cc1Swenshuai.xi { 412*53ee8cc1Swenshuai.xi /// Normal display speed. 413*53ee8cc1Swenshuai.xi E_VDEC_DISP_SPEED_1X = 1, 414*53ee8cc1Swenshuai.xi /// 2X 415*53ee8cc1Swenshuai.xi E_VDEC_DISP_SPEED_2X = 2, 416*53ee8cc1Swenshuai.xi /// 4X 417*53ee8cc1Swenshuai.xi E_VDEC_DISP_SPEED_4X = 4, 418*53ee8cc1Swenshuai.xi /// 8X 419*53ee8cc1Swenshuai.xi E_VDEC_DISP_SPEED_8X = 8, 420*53ee8cc1Swenshuai.xi /// 16X 421*53ee8cc1Swenshuai.xi E_VDEC_DISP_SPEED_16X = 16, 422*53ee8cc1Swenshuai.xi /// 32X 423*53ee8cc1Swenshuai.xi E_VDEC_DISP_SPEED_32X = 32, 424*53ee8cc1Swenshuai.xi } VDEC_DispSpeed; 425*53ee8cc1Swenshuai.xi 426*53ee8cc1Swenshuai.xi /// Motion JPEG down scale factor enumerator 427*53ee8cc1Swenshuai.xi typedef enum 428*53ee8cc1Swenshuai.xi { 429*53ee8cc1Swenshuai.xi ///Original size 430*53ee8cc1Swenshuai.xi E_VDEC_MJPEG_SCALE_1to1 = 0, 431*53ee8cc1Swenshuai.xi ///Down scale to 1/2 432*53ee8cc1Swenshuai.xi E_VDEC_MJPEG_SCALE_2to1, 433*53ee8cc1Swenshuai.xi ///Down scale to 1/4 434*53ee8cc1Swenshuai.xi E_VDEC_MJPEG_SCALE_4to1, 435*53ee8cc1Swenshuai.xi ///Down scale to 1/8 436*53ee8cc1Swenshuai.xi E_VDEC_MJPEG_SCALE_8to1, 437*53ee8cc1Swenshuai.xi } VDEC_MJpegScaleFactor; 438*53ee8cc1Swenshuai.xi 439*53ee8cc1Swenshuai.xi /// Timestamp type of command queue 440*53ee8cc1Swenshuai.xi typedef enum 441*53ee8cc1Swenshuai.xi { 442*53ee8cc1Swenshuai.xi ///without timestamp information 443*53ee8cc1Swenshuai.xi E_VDEC_TIME_STAMP_NONE = 0, 444*53ee8cc1Swenshuai.xi ///PTS (Presentation Time Stamp) 445*53ee8cc1Swenshuai.xi E_VDEC_TIME_STAMP_PTS, 446*53ee8cc1Swenshuai.xi ///DTS (Decode Time Stamp) 447*53ee8cc1Swenshuai.xi E_VDEC_TIME_STAMP_DTS, 448*53ee8cc1Swenshuai.xi ///STS (Sorted Time Stamp) 449*53ee8cc1Swenshuai.xi E_VDEC_TIME_STAMP_STS, 450*53ee8cc1Swenshuai.xi ///PTS_RVU (Presentation Time Stamp) 451*53ee8cc1Swenshuai.xi E_VDEC_TIME_STAMP_PTS_MPEG_DIRECTV_SD, 452*53ee8cc1Swenshuai.xi ///DTS_RVU (Decode Time Stamp) 453*53ee8cc1Swenshuai.xi E_VDEC_TIME_STAMP_DTS_MPEG_DIRECTV_SD, 454*53ee8cc1Swenshuai.xi 455*53ee8cc1Swenshuai.xi } VDEC_TimeStampType; 456*53ee8cc1Swenshuai.xi 457*53ee8cc1Swenshuai.xi /// Debug level of VDEC 458*53ee8cc1Swenshuai.xi typedef enum 459*53ee8cc1Swenshuai.xi { 460*53ee8cc1Swenshuai.xi /// Disable all uart messages. 461*53ee8cc1Swenshuai.xi E_VDEC_DBG_LEVEL_NONE = 0, 462*53ee8cc1Swenshuai.xi /// Only output error messages 463*53ee8cc1Swenshuai.xi E_VDEC_DBG_LEVEL_ERR, 464*53ee8cc1Swenshuai.xi /// Output general messages, and above. 465*53ee8cc1Swenshuai.xi E_VDEC_DBG_LEVEL_INFO, 466*53ee8cc1Swenshuai.xi /// Output debug messages, and above. 467*53ee8cc1Swenshuai.xi E_VDEC_DBG_LEVEL_DBG, 468*53ee8cc1Swenshuai.xi /// Output function tracing messages, and above. 469*53ee8cc1Swenshuai.xi E_VDEC_DBG_LEVEL_TRACE, 470*53ee8cc1Swenshuai.xi /// Output FW messages. 471*53ee8cc1Swenshuai.xi E_VDEC_DBG_LEVEL_FW, 472*53ee8cc1Swenshuai.xi } VDEC_DbgLevel; 473*53ee8cc1Swenshuai.xi 474*53ee8cc1Swenshuai.xi /// Type of FW source 475*53ee8cc1Swenshuai.xi typedef enum 476*53ee8cc1Swenshuai.xi { 477*53ee8cc1Swenshuai.xi E_VDEC_FW_SOURCE_NONE, 478*53ee8cc1Swenshuai.xi E_VDEC_FW_SOURCE_DRAM, 479*53ee8cc1Swenshuai.xi E_VDEC_FW_SOURCE_FLASH, 480*53ee8cc1Swenshuai.xi }VDEC_FWSourceType; 481*53ee8cc1Swenshuai.xi 482*53ee8cc1Swenshuai.xi /// Format of CC (Closed Caption) 483*53ee8cc1Swenshuai.xi typedef enum 484*53ee8cc1Swenshuai.xi { 485*53ee8cc1Swenshuai.xi E_VDEC_CC_NONE = 0x00, 486*53ee8cc1Swenshuai.xi E_VDEC_CC_608 = 0x01, //For CC608 or 157 487*53ee8cc1Swenshuai.xi E_VDEC_CC_708 = 0x02, //For CC708 488*53ee8cc1Swenshuai.xi E_VDEC_CC_UNPACKED = 0x03, 489*53ee8cc1Swenshuai.xi } VDEC_CCFormat; 490*53ee8cc1Swenshuai.xi 491*53ee8cc1Swenshuai.xi /// Type of CC 492*53ee8cc1Swenshuai.xi typedef enum 493*53ee8cc1Swenshuai.xi { 494*53ee8cc1Swenshuai.xi E_VDEC_CC_TYPE_NONE = 0, 495*53ee8cc1Swenshuai.xi E_VDEC_CC_TYPE_NTSC_FIELD1 = 1, 496*53ee8cc1Swenshuai.xi E_VDEC_CC_TYPE_NTSC_FIELD2 = 2, 497*53ee8cc1Swenshuai.xi E_VDEC_CC_TYPE_DTVCC = 3, 498*53ee8cc1Swenshuai.xi E_VDEC_CC_TYPE_NTSC_TWOFIELD = 4, 499*53ee8cc1Swenshuai.xi } VDEC_CCType; 500*53ee8cc1Swenshuai.xi 501*53ee8cc1Swenshuai.xi typedef enum 502*53ee8cc1Swenshuai.xi { 503*53ee8cc1Swenshuai.xi E_VDEC_CC_GET_BUFF_START = 0x1, 504*53ee8cc1Swenshuai.xi E_VDEC_CC_GET_BUFF_SIZE, 505*53ee8cc1Swenshuai.xi E_VDEC_CC_GET_708_ENABLE 506*53ee8cc1Swenshuai.xi } VDEC_CCInfoCmd; 507*53ee8cc1Swenshuai.xi 508*53ee8cc1Swenshuai.xi typedef enum 509*53ee8cc1Swenshuai.xi { 510*53ee8cc1Swenshuai.xi E_VDEC_STAGE_STOP = 0, 511*53ee8cc1Swenshuai.xi E_VDEC_STAGE_INIT, 512*53ee8cc1Swenshuai.xi E_VDEC_STAGE_PLAY, 513*53ee8cc1Swenshuai.xi E_VDEC_STAGE_PAUSE, 514*53ee8cc1Swenshuai.xi } VDEC_Stage; 515*53ee8cc1Swenshuai.xi 516*53ee8cc1Swenshuai.xi 517*53ee8cc1Swenshuai.xi typedef enum 518*53ee8cc1Swenshuai.xi { 519*53ee8cc1Swenshuai.xi /// Used before MApi_VDEC_Flush(). 520*53ee8cc1Swenshuai.xi E_VDEC_PATTERN_FLUSH = 0, 521*53ee8cc1Swenshuai.xi /// Used after MApi_VDEC_EnableLastFrameShow(). 522*53ee8cc1Swenshuai.xi E_VDEC_PATTERN_FILEEND, 523*53ee8cc1Swenshuai.xi }VDEC_PatternType; 524*53ee8cc1Swenshuai.xi 525*53ee8cc1Swenshuai.xi typedef enum 526*53ee8cc1Swenshuai.xi { 527*53ee8cc1Swenshuai.xi E_VDEC_FW_STATUS_FLAG_NONE = 0, 528*53ee8cc1Swenshuai.xi E_VDEC_FW_STATUS_FLAG_SEEK_TO_I = VDEC_BIT(0), 529*53ee8cc1Swenshuai.xi }VDEC_FW_STATUS_FLAG; 530*53ee8cc1Swenshuai.xi 531*53ee8cc1Swenshuai.xi typedef struct 532*53ee8cc1Swenshuai.xi { 533*53ee8cc1Swenshuai.xi MS_BOOL bInit; 534*53ee8cc1Swenshuai.xi MS_BOOL bIdle; 535*53ee8cc1Swenshuai.xi VDEC_Stage eStage; 536*53ee8cc1Swenshuai.xi } VDEC_Status; 537*53ee8cc1Swenshuai.xi 538*53ee8cc1Swenshuai.xi typedef struct 539*53ee8cc1Swenshuai.xi { 540*53ee8cc1Swenshuai.xi MS_U32 u32Tmp; 541*53ee8cc1Swenshuai.xi } VDEC_Info; 542*53ee8cc1Swenshuai.xi 543*53ee8cc1Swenshuai.xi typedef enum 544*53ee8cc1Swenshuai.xi { 545*53ee8cc1Swenshuai.xi E_VDEC_FRM_TYPE_I = 0, 546*53ee8cc1Swenshuai.xi E_VDEC_FRM_TYPE_P, 547*53ee8cc1Swenshuai.xi E_VDEC_FRM_TYPE_B, 548*53ee8cc1Swenshuai.xi E_VDEC_FRM_TYPE_OTHER, 549*53ee8cc1Swenshuai.xi } VDEC_FrameType; 550*53ee8cc1Swenshuai.xi 551*53ee8cc1Swenshuai.xi typedef enum 552*53ee8cc1Swenshuai.xi { 553*53ee8cc1Swenshuai.xi E_VDEC_FIELDTYPE_NONE, ///< No field. 554*53ee8cc1Swenshuai.xi E_VDEC_FIELDTYPE_TOP, ///< Top field only. 555*53ee8cc1Swenshuai.xi E_VDEC_FIELDTYPE_BOTTOM,///< Bottom field only. 556*53ee8cc1Swenshuai.xi E_VDEC_FIELDTYPE_BOTH, ///< Both fields. 557*53ee8cc1Swenshuai.xi } VDEC_FieldType; 558*53ee8cc1Swenshuai.xi 559*53ee8cc1Swenshuai.xi typedef enum 560*53ee8cc1Swenshuai.xi { 561*53ee8cc1Swenshuai.xi E_VDEC_PATTERN_BEFORE_FRM = 0, 562*53ee8cc1Swenshuai.xi E_VDEC_PATTERN_AFTER_FRM, 563*53ee8cc1Swenshuai.xi E_VDEC_PATTERN_SKIP_DATA, 564*53ee8cc1Swenshuai.xi } VDEC_PatchPattern; 565*53ee8cc1Swenshuai.xi 566*53ee8cc1Swenshuai.xi typedef enum 567*53ee8cc1Swenshuai.xi { 568*53ee8cc1Swenshuai.xi E_VDEC_PIC_STRUCTURE_RSV = 0, //reserved 569*53ee8cc1Swenshuai.xi E_VDEC_PIC_STRUCTURE_TOP, 570*53ee8cc1Swenshuai.xi E_VDEC_PIC_STRUCTURE_BOT, 571*53ee8cc1Swenshuai.xi E_VDEC_PIC_STRCUTURE_FRM, 572*53ee8cc1Swenshuai.xi } VDEC_PicStructure; 573*53ee8cc1Swenshuai.xi 574*53ee8cc1Swenshuai.xi //VDEC set clock speed 575*53ee8cc1Swenshuai.xi typedef enum 576*53ee8cc1Swenshuai.xi { 577*53ee8cc1Swenshuai.xi E_VDEC_CLOCK_SPEED_NONE = 0, 578*53ee8cc1Swenshuai.xi E_VDEC_CLOCK_SPEED_HIGHEST, 579*53ee8cc1Swenshuai.xi E_VDEC_CLOCK_SPEED_HIGH, 580*53ee8cc1Swenshuai.xi E_VDEC_CLOCK_SPEED_MEDIUM, 581*53ee8cc1Swenshuai.xi E_VDEC_CLOCK_SPEED_LOW, 582*53ee8cc1Swenshuai.xi E_VDEC_CLOCK_SPEED_LOWEST, 583*53ee8cc1Swenshuai.xi E_VDEC_CLOCK_SPEED_DEFAULT, 584*53ee8cc1Swenshuai.xi } VDEC_ClockSpeed; 585*53ee8cc1Swenshuai.xi 586*53ee8cc1Swenshuai.xi //VDEC user command id 587*53ee8cc1Swenshuai.xi typedef enum 588*53ee8cc1Swenshuai.xi { 589*53ee8cc1Swenshuai.xi //Group1:Set Control command 590*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_CONTROL_BASE = 0x0000, 591*53ee8cc1Swenshuai.xi VDEC_USER_CMD_REPEAT_LAST_FIELD, // Param: 1(ON), 0(OFF) 592*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AVSYNC_REPEAT_TH, // Param:0x01 ~ 0xFF(repeat times), 0xFF:always repeat when av is not sync 593*53ee8cc1Swenshuai.xi VDEC_USER_CMD_DISP_ONE_FIELD, // Param: 1(ON), 0(OFF) 594*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FD_MASK_DELAY_COUNT, // Param: unit is in vsync base for mute the fd_mask 595*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FRC_OUTPUT, // Param: the address of VDEC_FRC_OutputParam 596*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FRC_DROP_TYPE, // Param: 1(FRC_DROP_FIELD), 0(FRC_DROP_FRAME), default:0 597*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FAST_DISPLAY, // Param: TRUE(Fast display), FALSE(Display until synced) 598*53ee8cc1Swenshuai.xi VDEC_USER_CMD_IGNORE_ERR_REF, // Param: TRUE(Ignore error reference), FALSE(Enable error reference handle) 599*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FORCE_FOLLOW_DTV_SPEC, // Param: 1(ON), 0(OFF) 600*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AVC_MIN_FRM_GAP, // Param: Set the theshold of H264 frame gap, 0xFFFFFFFF don't care frame gap 601*53ee8cc1Swenshuai.xi VDEC_USER_CMD_DISABLE_SEQ_CHG, // Param: 1(Disable), 0(Enable) 602*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AVC_DISABLE_ANTI_VDEAD, // Param: 1(Disable), 0(Enable) 603*53ee8cc1Swenshuai.xi VDEC_USER_CMD_DTV_RESET_MVD_PARSER, // 604*53ee8cc1Swenshuai.xi VDEC_USER_CMD_PVR_FLUSH_FRAME_BUFFER, // 605*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_DTV_USER_DATA_MODE, // Param: 0(Support normal DVB CC, default case), 1(Support ATSC DirectTV CC), 2,3,4(Reserved) 606*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_SINGLE_TASK_MODE, // Param: 0(default case), 1(single task mode) for dual decoder 607*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FORCE_INTERLACE_MODE, // Param: 0(Disable), 1(Enable) DTV, TS-File mode force into interlace mode when framerate is 25 or 30 608*53ee8cc1Swenshuai.xi VDEC_USER_CMD_RELEASE_FD_MASK, 609*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_DECODE_MODE, 610*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SHOW_DECODE_ORDER, // Param: 1(Disable), 0(Enable) 611*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SUPPORT_AVC_TO_MVC, // Param: 0(Do not support), 1(Support AVC to MVC) 612*53ee8cc1Swenshuai.xi VDEC_USER_CMD_3DLR_VIEW_EXCHANGE, // Param: 0(Disable), 1(View L/R exhange) 613*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FORCE_AUTO_MUTE, // param: 0(default case), 1(Enable) 614*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_VSIZE_ALIGN, // Param: 0(Disable), 1(Enable) 615*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AVC_DISP_IGNORE_CROP, // Param: 0(Disable), 1(Enable) 616*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_DISP_FINISH_MODE, // Param: 0(Original), 1(Strict) 617*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_AVSYNC_MODE, // Param: 0(Original), 1(Strict) 618*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_CC608_INFO_ENHANCE_MODE, // Param: 0(Disable), 1(Enable) 619*53ee8cc1Swenshuai.xi VDEC_USER_CMD_PUSH_DISPQ_WITH_REF_NUM, // Param: 0(Disable), 1(Enable) 620*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_IDCT_MODE, //Param: 0(Original), 1(new IDCT) 621*53ee8cc1Swenshuai.xi VDEC_USER_CMD_DROP_ERR_FRAME, // Param: 0(Disable), 1(Enable) 622*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SHOW_FIRST_FRAME_DIRECT, // Param: 0(Disable), 1(Enable), Push first frame to display queue directly.. 623*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_XC_LOW_DELAY_PARA, // Param: arg0 for diff_field_number... 624*53ee8cc1Swenshuai.xi VDEC_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 625*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_MIN_TSP_DATA_SIZE, // Param: Resize HVD_FW_AVC_ES_MIN_TSP_DATA_SIZE 626*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AVC_SUPPORT_REF_NUM_OVER_MAX_DPB_SIZE, // Param: 0(Disable), 1(Enable) 627*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FRAMEBUFFER_AUTO_MODE, // Param: 0(Disable), 1(Enable) 628*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AUTO_DROP_DISPLAY_QUEUE, // Param: 0(Disable), N = 1~16: Drop display queue when display queue above than N frames. 629*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_PTS_US_MODE, //Param: 1(enable), 0(disable ) PTS output by micro second level, 630*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FORCE_PROGRESSIVE_MODE, // Param: 0(Disable), 1(Enable) 631*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AVC_NEW_SLOW_MOTION, // Param: 0(Disable), 1(Enable) 632*53ee8cc1Swenshuai.xi 633*53ee8cc1Swenshuai.xi VDEC_USER_CMD_MVC_SET_CMD_BASE = 0x0800, 634*53ee8cc1Swenshuai.xi VDEC_USER_CMD_MVC_BBU2_PUSH_PACKET, // Param: Packet Info. 635*53ee8cc1Swenshuai.xi VDEC_USER_CMD_MVC_BBU2_FIRE_DECCMD, // Param: Non 636*53ee8cc1Swenshuai.xi 637*53ee8cc1Swenshuai.xi //Group2:Get Control command 638*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_CONTROL_BASE = 0x1000, 639*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_CHROMA_TYPE, 640*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_REAL_FRAMERATE, // Get Real FrameRate reported by decoder 641*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_COLOR_MATRIX, // Get color matrix coefficients reported by decoder 642*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_DYNSCALE_ENABLED, // Get if DynamicScaling is enabled by firmware 643*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_ORI_INTERLACE_MODE, 644*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_FPA_SEI, // Get Frame Packing Arrangment information 645*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_U64PTS, 646*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_FB_USAGE_MEM, // Get FrameBuufer Size needed by decoder 647*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_XC_LOW_DELAY_INT_STATE, // Get xc_low_delay int state... 648*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_FLUSH_PATTEN_ENTRY_NUM, // Get Flush patten push based (unit : times) 649*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_FW_STATUS_FLAG, 650*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_DS_BUF_MIU_SEL, 651*53ee8cc1Swenshuai.xi 652*53ee8cc1Swenshuai.xi VDEC_USER_CMD_MVC_GET_CMD_BASE = 0x1800, 653*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_MVC_SUB_FRAME_DISP_INFO, // Param: VDEC_FrameInfo pointer. 654*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_MVC_BBU2_DECQ_VACANCY, // Param: BBU2 Dec Q Vacancy. 655*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_MVC_ES2_READ_PTR, // Param: ES2 read pointer. 656*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_MVC_ES2_WRITE_PTR, // Param: ES2 Write pointer. 657*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_ES_QUANTITY, // Param: Get ES buffer Level. 658*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_ES2_QUANTITY, // Param: Get ES2 buffer Level. 659*53ee8cc1Swenshuai.xi VDEC_USER_CMD_GET_MAIN_STREAM_ID, // Param: Get main stream ID. 660*53ee8cc1Swenshuai.xi 661*53ee8cc1Swenshuai.xi //Group3:System Preset Control command====================== 662*53ee8cc1Swenshuai.xi //Group3-1:Common system Preset Control command 663*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SYSTEM_PRESET_CONTROL_BASE = 0x2000, 664*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SYSTEM_PRESET_VPU_CLOCK, //Param: VDEC_EX_ClockSpeed 665*53ee8cc1Swenshuai.xi 666*53ee8cc1Swenshuai.xi //Group3-2:HVD System Preset Control command 667*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SYSTEM_PRESET_HVD_BASE = 0x2100, 668*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SYSTEM_PRESET_HVD_CLOCK, //Param: VDEC_EX_ClockSpeed 669*53ee8cc1Swenshuai.xi 670*53ee8cc1Swenshuai.xi //Group3-3:MVD System Preset Control command 671*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SYSTEM_PRESET_MVD_BASE = 0x2200, 672*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SYSTEM_PRESET_MVD_CLOCK, //Param: VDEC_EX_ClockSpeed 673*53ee8cc1Swenshuai.xi VDEC_USER_CMD_VPU_SECURITY_MODE, //Param: 0:disable,1:enable 674*53ee8cc1Swenshuai.xi 675*53ee8cc1Swenshuai.xi //Group4:Preset Control command============================= 676*53ee8cc1Swenshuai.xi VDEC_USER_CMD_PRESET_CONTROL_BASE = 0x2300, 677*53ee8cc1Swenshuai.xi VDEC_USER_CMD_HVD_ONE_PENDING_BUFFER_MODE, //Param: 0(Disable), 1(Enable), use only one pending buffer instead of two for HVD 678*53ee8cc1Swenshuai.xi VDEC_USER_CMD_MVD_HWBUFFER_REMAPPING_MODE, //Param: 0(Disable), 1(Enable), Allcate HW buffer to start of frame buffer 679*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FRAMERATE_HANDLING, //Param: 1000~60000, Set frame rate when the sequence did not have frame rate info. The unit is (param/1000)fps, Ex: 30000 = 30.000 fps 680*53ee8cc1Swenshuai.xi //Param: 0xFFFFFFFF, use default frame rate when no frame rate info in header 681*53ee8cc1Swenshuai.xi VDEC_USER_CMD_SET_SHAREMEMORY_BASE, 682*53ee8cc1Swenshuai.xi VDEC_USER_CMD_HVD_COL_BBU_MODE, //Param: HVD use colocated BBU mode, 0: disable, 1: enable /*johnny.ko*/ 683*53ee8cc1Swenshuai.xi VDEC_USER_CMD_HVD_IAPGN_BUF_SHARE_BW_MODE, //Param: HVD IAP GN Buffer address, 684*53ee8cc1Swenshuai.xi VDEC_USER_CMD_DTV_DEBUG_MODE, 685*53ee8cc1Swenshuai.xi VDEC_USER_CMD_HVD_TS_IN_BBU_MODE, 686*53ee8cc1Swenshuai.xi VDEC_USER_CMD_AUTO_ARRANGE_FRAMEBUFFER_USAGE, 687*53ee8cc1Swenshuai.xi VDEC_USER_CMD_THUMBNAIL_MODE, 688*53ee8cc1Swenshuai.xi VDEC_USER_CMD_FORCE_8BIT_DEC_MODE, 689*53ee8cc1Swenshuai.xi } VDEC_User_Cmd; 690*53ee8cc1Swenshuai.xi 691*53ee8cc1Swenshuai.xi //VDEC FW TYPE 692*53ee8cc1Swenshuai.xi typedef enum 693*53ee8cc1Swenshuai.xi { 694*53ee8cc1Swenshuai.xi VDEC_FW_TYPE_MVD = 0, 695*53ee8cc1Swenshuai.xi VDEC_FW_TYPE_HVD, 696*53ee8cc1Swenshuai.xi } VDEC_FwType; 697*53ee8cc1Swenshuai.xi 698*53ee8cc1Swenshuai.xi //VDEC FB reduction type 699*53ee8cc1Swenshuai.xi typedef enum 700*53ee8cc1Swenshuai.xi { 701*53ee8cc1Swenshuai.xi VDEC_FB_REDUCTION_NONE = 0, 702*53ee8cc1Swenshuai.xi VDEC_FB_REDUCTION_1_2, 703*53ee8cc1Swenshuai.xi VDEC_FB_REDUCTION_1_4 704*53ee8cc1Swenshuai.xi } VDEC_FBReductionType; 705*53ee8cc1Swenshuai.xi 706*53ee8cc1Swenshuai.xi //VDEC XC_LOW_DELAY 707*53ee8cc1Swenshuai.xi typedef enum 708*53ee8cc1Swenshuai.xi { 709*53ee8cc1Swenshuai.xi // no any XC_LOW_DELAY event happened. 710*53ee8cc1Swenshuai.xi VDEC_XC_LOW_DELAY_NONE = 0x00, 711*53ee8cc1Swenshuai.xi // XC_LOW_DELAY event for disable black screen. 712*53ee8cc1Swenshuai.xi VDEC_XC_DISABLE_BLACK_SCREEN = VDEC_BIT(0), 713*53ee8cc1Swenshuai.xi // XC_LOW_DELAY event for release force_read_bank. 714*53ee8cc1Swenshuai.xi VDEC_XC_RELEASE_FORCE_READ_BANK = VDEC_BIT(1), 715*53ee8cc1Swenshuai.xi // XC_LOW_DELAY event for release bob_mode. 716*53ee8cc1Swenshuai.xi VDEC_XC_RELEASE_BOB_MODE = VDEC_BIT(2), 717*53ee8cc1Swenshuai.xi } VDEC_XcLowDelayType; 718*53ee8cc1Swenshuai.xi 719*53ee8cc1Swenshuai.xi /// Data structure of CC Configuration 720*53ee8cc1Swenshuai.xi typedef struct 721*53ee8cc1Swenshuai.xi { 722*53ee8cc1Swenshuai.xi /// 608 / 708 723*53ee8cc1Swenshuai.xi VDEC_CCFormat eFormat; 724*53ee8cc1Swenshuai.xi /// CC type 725*53ee8cc1Swenshuai.xi VDEC_CCType eType; 726*53ee8cc1Swenshuai.xi /// CC data start address 727*53ee8cc1Swenshuai.xi MS_VIRT u32BufStAdd; 728*53ee8cc1Swenshuai.xi /// CC data size 729*53ee8cc1Swenshuai.xi MS_U32 u32BufSize; 730*53ee8cc1Swenshuai.xi } VDEC_CCCfg; 731*53ee8cc1Swenshuai.xi 732*53ee8cc1Swenshuai.xi /// Information for display setting 733*53ee8cc1Swenshuai.xi typedef struct 734*53ee8cc1Swenshuai.xi { 735*53ee8cc1Swenshuai.xi ///Bitstream horizontal size 736*53ee8cc1Swenshuai.xi MS_U16 u16HorSize; 737*53ee8cc1Swenshuai.xi ///Bitstream vertical size 738*53ee8cc1Swenshuai.xi MS_U16 u16VerSize; 739*53ee8cc1Swenshuai.xi ///Frame rate 740*53ee8cc1Swenshuai.xi MS_U32 u32FrameRate; 741*53ee8cc1Swenshuai.xi ///Interlace flag 742*53ee8cc1Swenshuai.xi MS_U8 u8Interlace; 743*53ee8cc1Swenshuai.xi ///Active format description 744*53ee8cc1Swenshuai.xi MS_U8 u8AFD; 745*53ee8cc1Swenshuai.xi ///Sample aspect rate width 746*53ee8cc1Swenshuai.xi MS_U16 u16SarWidth; 747*53ee8cc1Swenshuai.xi ///Sample aspect rate height 748*53ee8cc1Swenshuai.xi MS_U16 u16SarHeight; 749*53ee8cc1Swenshuai.xi ///Right cropping 750*53ee8cc1Swenshuai.xi MS_U16 u16CropRight; 751*53ee8cc1Swenshuai.xi ///Left cropping 752*53ee8cc1Swenshuai.xi MS_U16 u16CropLeft; 753*53ee8cc1Swenshuai.xi ///Bottom cropping 754*53ee8cc1Swenshuai.xi MS_U16 u16CropBottom; 755*53ee8cc1Swenshuai.xi ///Top cropping 756*53ee8cc1Swenshuai.xi MS_U16 u16CropTop; 757*53ee8cc1Swenshuai.xi ///Pitch 758*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; 759*53ee8cc1Swenshuai.xi ///Interval of PTS 760*53ee8cc1Swenshuai.xi MS_U16 u16PTSInterval; 761*53ee8cc1Swenshuai.xi ///MPEG1 flag 762*53ee8cc1Swenshuai.xi MS_U8 u8MPEG1; 763*53ee8cc1Swenshuai.xi ///Play mode (fixme) 764*53ee8cc1Swenshuai.xi MS_U8 u8PlayMode; 765*53ee8cc1Swenshuai.xi ///FRC mode 766*53ee8cc1Swenshuai.xi MS_U8 u8FrcMode; 767*53ee8cc1Swenshuai.xi ///Aspect ratio code 768*53ee8cc1Swenshuai.xi MS_U8 u8AspectRate; 769*53ee8cc1Swenshuai.xi ///if FALSE, set VOP as mono mode (only for H264) 770*53ee8cc1Swenshuai.xi MS_BOOL bWithChroma; 771*53ee8cc1Swenshuai.xi /// if true, color space is xvYCC (Y from 16 to 235 and Cb , Cr from 16 to 240). 772*53ee8cc1Swenshuai.xi /// if false, color space is BT.601/709 (Y from 0 to 255 and Cb , Cr from 0 to 255). 773*53ee8cc1Swenshuai.xi /// only MPEG might be with BT.601/709 774*53ee8cc1Swenshuai.xi MS_BOOL bColorInXVYCC; 775*53ee8cc1Swenshuai.xi ///Dynamic scaling buffer address 776*53ee8cc1Swenshuai.xi MS_VIRT u32DynScalingAddr; 777*53ee8cc1Swenshuai.xi ///Dynamic scaling buffer size 778*53ee8cc1Swenshuai.xi MS_U32 u32DynScalingSize; 779*53ee8cc1Swenshuai.xi ///Dynamic scaling depth 780*53ee8cc1Swenshuai.xi MS_U8 u8DynScalingDepth; 781*53ee8cc1Swenshuai.xi ///Dynamic scaling DS buffer on miu1 or miu0 782*53ee8cc1Swenshuai.xi MS_BOOL bEnableMIUSel; 783*53ee8cc1Swenshuai.xi ///Display width 784*53ee8cc1Swenshuai.xi MS_U32 u32AspectWidth; 785*53ee8cc1Swenshuai.xi ///Display height 786*53ee8cc1Swenshuai.xi MS_U32 u32AspectHeight; 787*53ee8cc1Swenshuai.xi } VDEC_DispInfo; 788*53ee8cc1Swenshuai.xi 789*53ee8cc1Swenshuai.xi /// System configuration 790*53ee8cc1Swenshuai.xi typedef struct 791*53ee8cc1Swenshuai.xi { 792*53ee8cc1Swenshuai.xi ///FW binary start address 793*53ee8cc1Swenshuai.xi MS_PHY u32FWBinaryAddr; 794*53ee8cc1Swenshuai.xi ///FW binary size 795*53ee8cc1Swenshuai.xi MS_U32 u32FWBinarySize; 796*53ee8cc1Swenshuai.xi ///FW code buffer start address 797*53ee8cc1Swenshuai.xi MS_PHY u32CodeBufAddr; 798*53ee8cc1Swenshuai.xi ///FW code buffer size 799*53ee8cc1Swenshuai.xi MS_U32 u32CodeBufSize; 800*53ee8cc1Swenshuai.xi ///Frame buffer start address 801*53ee8cc1Swenshuai.xi MS_PHY u32FrameBufAddr; 802*53ee8cc1Swenshuai.xi ///Frame buffer size 803*53ee8cc1Swenshuai.xi MS_U32 u32FrameBufSize; 804*53ee8cc1Swenshuai.xi ///Bitstream buffer start address 805*53ee8cc1Swenshuai.xi MS_PHY u32BitstreamBufAddr; 806*53ee8cc1Swenshuai.xi ///Bitstream buffer size 807*53ee8cc1Swenshuai.xi MS_U32 u32BitstreamBufSize; 808*53ee8cc1Swenshuai.xi ///Driver process buffer start address 809*53ee8cc1Swenshuai.xi MS_PHY u32DrvProcBufAddr; 810*53ee8cc1Swenshuai.xi ///Driver process buffer size 811*53ee8cc1Swenshuai.xi MS_U32 u32DrvProcBufSize; 812*53ee8cc1Swenshuai.xi ///VLC table Binary address (RM only) 813*53ee8cc1Swenshuai.xi MS_PHY u32VlcBinarySrcAddr; 814*53ee8cc1Swenshuai.xi ///VLC table Binary size 815*53ee8cc1Swenshuai.xi MS_U32 u32VlcTabBinarySize; 816*53ee8cc1Swenshuai.xi ///Debug level setting 817*53ee8cc1Swenshuai.xi VDEC_DbgLevel eDbgMsgLevel; 818*53ee8cc1Swenshuai.xi ///FW source type seeting 819*53ee8cc1Swenshuai.xi VDEC_FWSourceType eFWSourceType; 820*53ee8cc1Swenshuai.xi } VDEC_SysCfg; 821*53ee8cc1Swenshuai.xi 822*53ee8cc1Swenshuai.xi /// Video information 823*53ee8cc1Swenshuai.xi typedef struct 824*53ee8cc1Swenshuai.xi { 825*53ee8cc1Swenshuai.xi ///input source mode 826*53ee8cc1Swenshuai.xi VDEC_SrcMode eSrcMode; 827*53ee8cc1Swenshuai.xi /// timestamp type of command queue 828*53ee8cc1Swenshuai.xi VDEC_TimeStampType eTimeStampType; 829*53ee8cc1Swenshuai.xi /// MJPEG scale factor 830*53ee8cc1Swenshuai.xi VDEC_MJpegScaleFactor eMJpegScaleFactor; 831*53ee8cc1Swenshuai.xi /// should be TRUE when codec type is H264 and container is MKV and MP4(MOV) 832*53ee8cc1Swenshuai.xi MS_BOOL bWithoutNalStCode; 833*53ee8cc1Swenshuai.xi /// needless when CodecType is MJPEG and divx311 834*53ee8cc1Swenshuai.xi MS_U32 u32FrameRate; 835*53ee8cc1Swenshuai.xi MS_U32 u32FrameRateBase; 836*53ee8cc1Swenshuai.xi /// if divx311; use u16Width[0]; only need other elements when RV8 837*53ee8cc1Swenshuai.xi MS_U16 u16Width[8]; 838*53ee8cc1Swenshuai.xi /// if divx311; use u16Height[0]; only need other elements when RV8 839*53ee8cc1Swenshuai.xi MS_U16 u16Height[8]; 840*53ee8cc1Swenshuai.xi /// video number sizes (for RM) 841*53ee8cc1Swenshuai.xi MS_U16 u16NumSizes; 842*53ee8cc1Swenshuai.xi } VDEC_VideoInfo; 843*53ee8cc1Swenshuai.xi 844*53ee8cc1Swenshuai.xi /// Frame information 845*53ee8cc1Swenshuai.xi typedef struct 846*53ee8cc1Swenshuai.xi { 847*53ee8cc1Swenshuai.xi /// frame buffer base + the start offset of current displayed luma data. Unit: byte. 848*53ee8cc1Swenshuai.xi MS_PHY u32LumaAddr; 849*53ee8cc1Swenshuai.xi /// frame buffer base + the start offset of current displayed chroma data. Unit: byte. 850*53ee8cc1Swenshuai.xi MS_PHY u32ChromaAddr; 851*53ee8cc1Swenshuai.xi /// Time stamp(DTS, PTS) of current displayed frame. Unit: ms (todo: 90khz) 852*53ee8cc1Swenshuai.xi MS_U32 u32TimeStamp; 853*53ee8cc1Swenshuai.xi /// low part of ID number 854*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; 855*53ee8cc1Swenshuai.xi /// high part of ID number or timestamp 856*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; 857*53ee8cc1Swenshuai.xi /// pitch 858*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; 859*53ee8cc1Swenshuai.xi /// width 860*53ee8cc1Swenshuai.xi MS_U16 u16Width; 861*53ee8cc1Swenshuai.xi /// height 862*53ee8cc1Swenshuai.xi MS_U16 u16Height; 863*53ee8cc1Swenshuai.xi ///< Frame type: I, P, B frame 864*53ee8cc1Swenshuai.xi VDEC_FrameType eFrameType; 865*53ee8cc1Swenshuai.xi ///< Field type: Top, Bottom, Both 866*53ee8cc1Swenshuai.xi VDEC_FieldType eFieldType; 867*53ee8cc1Swenshuai.xi } VDEC_FrameInfo; 868*53ee8cc1Swenshuai.xi 869*53ee8cc1Swenshuai.xi /// Extension display information 870*53ee8cc1Swenshuai.xi typedef struct 871*53ee8cc1Swenshuai.xi { 872*53ee8cc1Swenshuai.xi /// vertical size from sequene_display_extension 873*53ee8cc1Swenshuai.xi MS_U16 u16VSize; 874*53ee8cc1Swenshuai.xi /// horizontal size from sequene_display_extension 875*53ee8cc1Swenshuai.xi MS_U16 u16HSize; 876*53ee8cc1Swenshuai.xi /// vertical offset from picture_display_extension 877*53ee8cc1Swenshuai.xi MS_S16 s16VOffset; 878*53ee8cc1Swenshuai.xi /// horizontal offset from picture_display_extension 879*53ee8cc1Swenshuai.xi MS_S16 s16HOffset; 880*53ee8cc1Swenshuai.xi } VDEC_ExtDispInfo; 881*53ee8cc1Swenshuai.xi 882*53ee8cc1Swenshuai.xi /// Display frame information 883*53ee8cc1Swenshuai.xi typedef struct 884*53ee8cc1Swenshuai.xi { 885*53ee8cc1Swenshuai.xi ///< frame information 886*53ee8cc1Swenshuai.xi VDEC_FrameInfo stFrmInfo; 887*53ee8cc1Swenshuai.xi ///< firmware private data 888*53ee8cc1Swenshuai.xi MS_U32 u32PriData; 889*53ee8cc1Swenshuai.xi ///< index used by apiVDEC to manage VDEC_DispQ[][] 890*53ee8cc1Swenshuai.xi MS_U32 u32Idx; 891*53ee8cc1Swenshuai.xi ///< display information 892*53ee8cc1Swenshuai.xi VDEC_DispInfo stDispInfo; 893*53ee8cc1Swenshuai.xi } VDEC_DispFrame; 894*53ee8cc1Swenshuai.xi 895*53ee8cc1Swenshuai.xi /// Time code structure 896*53ee8cc1Swenshuai.xi typedef struct 897*53ee8cc1Swenshuai.xi { 898*53ee8cc1Swenshuai.xi /// time_code_hours 899*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodeHr; 900*53ee8cc1Swenshuai.xi /// time_code_minutes 901*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodeMin; 902*53ee8cc1Swenshuai.xi /// time_code_seconds 903*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodeSec; 904*53ee8cc1Swenshuai.xi /// time_code_pictures 905*53ee8cc1Swenshuai.xi MS_U8 u8TimeCodePic; 906*53ee8cc1Swenshuai.xi /// drop_frame_flag 907*53ee8cc1Swenshuai.xi MS_U8 u8DropFrmFlag; 908*53ee8cc1Swenshuai.xi /// reserved fields for 4-byte alignment 909*53ee8cc1Swenshuai.xi MS_U8 u8Reserved[3]; 910*53ee8cc1Swenshuai.xi } VDEC_TimeCode; 911*53ee8cc1Swenshuai.xi 912*53ee8cc1Swenshuai.xi /// VDEC frame buffer reduction 913*53ee8cc1Swenshuai.xi typedef struct 914*53ee8cc1Swenshuai.xi { 915*53ee8cc1Swenshuai.xi VDEC_FBReductionType eLumaFBReduction; 916*53ee8cc1Swenshuai.xi VDEC_FBReductionType eChromaFBReduction; 917*53ee8cc1Swenshuai.xi MS_BOOL bEnableAutoMode; /// 0: Disable, 1: Enable 918*53ee8cc1Swenshuai.xi } VDEC_FBReduction; 919*53ee8cc1Swenshuai.xi 920*53ee8cc1Swenshuai.xi /// Initial parameter 921*53ee8cc1Swenshuai.xi typedef struct 922*53ee8cc1Swenshuai.xi { 923*53ee8cc1Swenshuai.xi /// codec type 924*53ee8cc1Swenshuai.xi VDEC_CodecType eCodecType; 925*53ee8cc1Swenshuai.xi /// system configuration 926*53ee8cc1Swenshuai.xi VDEC_SysCfg SysConfig; 927*53ee8cc1Swenshuai.xi /// video information from container 928*53ee8cc1Swenshuai.xi VDEC_VideoInfo VideoInfo; 929*53ee8cc1Swenshuai.xi /// dynamic scaling control bit 930*53ee8cc1Swenshuai.xi MS_BOOL EnableDynaScale; 931*53ee8cc1Swenshuai.xi /// switch for display decode error frame or not 932*53ee8cc1Swenshuai.xi MS_BOOL bDisableDropErrFrame; 933*53ee8cc1Swenshuai.xi /// switch for error concealment 934*53ee8cc1Swenshuai.xi MS_BOOL bDisableErrConceal; 935*53ee8cc1Swenshuai.xi /// enable repeat last field when repeat happened at interlace stream 936*53ee8cc1Swenshuai.xi MS_BOOL bRepeatLastField; 937*53ee8cc1Swenshuai.xi /// threshold to judge error frame 938*53ee8cc1Swenshuai.xi MS_U8 u8ErrThreshold; 939*53ee8cc1Swenshuai.xi /// dynamic scaling virtual box Width 940*53ee8cc1Swenshuai.xi MS_U32 u32DSVirtualBoxWidth; 941*53ee8cc1Swenshuai.xi /// dynamic scaling virtual box Height 942*53ee8cc1Swenshuai.xi MS_U32 u32DSVirtualBoxHeight; 943*53ee8cc1Swenshuai.xi } VDEC_InitParam; 944*53ee8cc1Swenshuai.xi 945*53ee8cc1Swenshuai.xi /// Initial parameter, version = 1 946*53ee8cc1Swenshuai.xi typedef struct 947*53ee8cc1Swenshuai.xi { 948*53ee8cc1Swenshuai.xi /// init param version : 1 949*53ee8cc1Swenshuai.xi MS_U32 u32Version; 950*53ee8cc1Swenshuai.xi /// codec type 951*53ee8cc1Swenshuai.xi VDEC_CodecType eCodecType; 952*53ee8cc1Swenshuai.xi /// system configuration 953*53ee8cc1Swenshuai.xi VDEC_SysCfg SysConfig; 954*53ee8cc1Swenshuai.xi /// video information from container 955*53ee8cc1Swenshuai.xi VDEC_VideoInfo VideoInfo; 956*53ee8cc1Swenshuai.xi /// dynamic scaling control bit 957*53ee8cc1Swenshuai.xi MS_BOOL EnableDynaScale; 958*53ee8cc1Swenshuai.xi /// switch for display decode error frame or not 959*53ee8cc1Swenshuai.xi MS_BOOL bDisableDropErrFrame; 960*53ee8cc1Swenshuai.xi /// switch for error concealment 961*53ee8cc1Swenshuai.xi MS_BOOL bDisableErrConceal; 962*53ee8cc1Swenshuai.xi /// enable repeat last field when repeat happened at interlace stream 963*53ee8cc1Swenshuai.xi MS_BOOL bRepeatLastField; 964*53ee8cc1Swenshuai.xi /// threshold to judge error frame 965*53ee8cc1Swenshuai.xi MS_U8 u8ErrThreshold; 966*53ee8cc1Swenshuai.xi /// dynamic scaling virtual box Width 967*53ee8cc1Swenshuai.xi MS_U32 u32DSVirtualBoxWidth; 968*53ee8cc1Swenshuai.xi /// dynamic scaling virtual box Height 969*53ee8cc1Swenshuai.xi MS_U32 u32DSVirtualBoxHeight; 970*53ee8cc1Swenshuai.xi /// vdec frame buffer reduction setting 971*53ee8cc1Swenshuai.xi VDEC_FBReduction stFBReduction; 972*53ee8cc1Swenshuai.xi } VDEC_InitParam_EX1; 973*53ee8cc1Swenshuai.xi 974*53ee8cc1Swenshuai.xi /// Decode Command 975*53ee8cc1Swenshuai.xi typedef struct 976*53ee8cc1Swenshuai.xi { 977*53ee8cc1Swenshuai.xi /// ID (high 4-bytes) or timestamp of payload (high byte) 978*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; 979*53ee8cc1Swenshuai.xi /// ID (low 4-bytes) 980*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; 981*53ee8cc1Swenshuai.xi /// start address of payload 982*53ee8cc1Swenshuai.xi MS_U32 u32StAddr; 983*53ee8cc1Swenshuai.xi /// size of payload 984*53ee8cc1Swenshuai.xi MS_U32 u32Size; 985*53ee8cc1Swenshuai.xi /// timestamp of payload 986*53ee8cc1Swenshuai.xi MS_U32 u32Timestamp; 987*53ee8cc1Swenshuai.xi } VDEC_DecCmd; 988*53ee8cc1Swenshuai.xi 989*53ee8cc1Swenshuai.xi /// Display Command 990*53ee8cc1Swenshuai.xi typedef struct 991*53ee8cc1Swenshuai.xi { 992*53ee8cc1Swenshuai.xi /// ID (high 4-bytes) 993*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; 994*53ee8cc1Swenshuai.xi /// ID (low 4-bytes) 995*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; 996*53ee8cc1Swenshuai.xi /// action of command 997*53ee8cc1Swenshuai.xi VDEC_DispCmdAction eAction; 998*53ee8cc1Swenshuai.xi } VDEC_DispCmd; 999*53ee8cc1Swenshuai.xi 1000*53ee8cc1Swenshuai.xi typedef struct 1001*53ee8cc1Swenshuai.xi { 1002*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 1003*53ee8cc1Swenshuai.xi MS_U32 u32Delay; 1004*53ee8cc1Swenshuai.xi MS_U16 u16Tolerance; 1005*53ee8cc1Swenshuai.xi } VDEC_AVSyncCfg; 1006*53ee8cc1Swenshuai.xi 1007*53ee8cc1Swenshuai.xi 1008*53ee8cc1Swenshuai.xi typedef void (*VDEC_EventCb)(MS_U32 eFlag, void *param); 1009*53ee8cc1Swenshuai.xi 1010*53ee8cc1Swenshuai.xi typedef struct 1011*53ee8cc1Swenshuai.xi { 1012*53ee8cc1Swenshuai.xi MS_U32 u32Version; 1013*53ee8cc1Swenshuai.xi /// top, bottom or frame 1014*53ee8cc1Swenshuai.xi VDEC_PicStructure u8PicStructure; 1015*53ee8cc1Swenshuai.xi MS_U8 u8TopFieldFirst; 1016*53ee8cc1Swenshuai.xi MS_U16 u16TempRef; 1017*53ee8cc1Swenshuai.xi MS_U32 u32Pts; 1018*53ee8cc1Swenshuai.xi /// address of cc data 1019*53ee8cc1Swenshuai.xi MS_U32 u32UserDataBuf; 1020*53ee8cc1Swenshuai.xi /// size of cc data 1021*53ee8cc1Swenshuai.xi MS_U32 u32UserDataSize; 1022*53ee8cc1Swenshuai.xi } VDEC_CC_Info; 1023*53ee8cc1Swenshuai.xi 1024*53ee8cc1Swenshuai.xi ///CC input parameters for mstar proprietary CC library 1025*53ee8cc1Swenshuai.xi typedef struct 1026*53ee8cc1Swenshuai.xi { 1027*53ee8cc1Swenshuai.xi MS_U32 u32Ver; ///version of this structure 1028*53ee8cc1Swenshuai.xi MS_U32 u32Val; 1029*53ee8cc1Swenshuai.xi } VDEC_CC_InputPara; 1030*53ee8cc1Swenshuai.xi 1031*53ee8cc1Swenshuai.xi typedef struct 1032*53ee8cc1Swenshuai.xi { 1033*53ee8cc1Swenshuai.xi MS_U32 u32OutputFrameRate; ///< output frame rate, unit:vsync count 1034*53ee8cc1Swenshuai.xi MS_U8 u8Interlace; ///< output scan:0:progress, 1:interlace 1035*53ee8cc1Swenshuai.xi } VDEC_FRC_OutputParam; 1036*53ee8cc1Swenshuai.xi 1037*53ee8cc1Swenshuai.xi typedef struct 1038*53ee8cc1Swenshuai.xi { 1039*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_cnl_flag; 1040*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_type; 1041*53ee8cc1Swenshuai.xi MS_U8 u8content_interpretation_type; 1042*53ee8cc1Swenshuai.xi MS_U8 u1Quincunx_sampling_flag; 1043*53ee8cc1Swenshuai.xi 1044*53ee8cc1Swenshuai.xi MS_U8 u1Spatial_flipping_flag; 1045*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_flipping_flag; 1046*53ee8cc1Swenshuai.xi MS_U8 u1Field_views_flag; 1047*53ee8cc1Swenshuai.xi MS_U8 u1Current_frame_is_frame0_flag; 1048*53ee8cc1Swenshuai.xi 1049*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_self_contained_flag; 1050*53ee8cc1Swenshuai.xi MS_U8 u1Frame1_self_contained_flag; 1051*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_x; 1052*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_y; 1053*53ee8cc1Swenshuai.xi 1054*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_x; 1055*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_y; 1056*53ee8cc1Swenshuai.xi MS_U8 u8Reserved01; 1057*53ee8cc1Swenshuai.xi MS_U8 u8Reserved02; 1058*53ee8cc1Swenshuai.xi }VDEC_Frame_packing_SEI; 1059*53ee8cc1Swenshuai.xi 1060*53ee8cc1Swenshuai.xi 1061*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1062*53ee8cc1Swenshuai.xi // Function and Variable 1063*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1064*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetLibVer(const MSIF_Version **ppVersion); 1065*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetInfo(const VDEC_Info **ppInfo); 1066*53ee8cc1Swenshuai.xi MS_BOOL MApi_VDEC_GetStatus(VDEC_Status *pStatus); 1067*53ee8cc1Swenshuai.xi // MS_BOOL MApi_VDEC_CheckCaps(VDEC_CodecType eCodecType); 1068*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_EnableTurboMode(MS_BOOL bEnable); 1069*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_Init(VDEC_InitParam *pInitParam); 1070*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_Init_EX(void *pInfo, MS_U32 u32Size); 1071*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_Rst(void); 1072*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_Exit(void); 1073*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CheckDispInfoRdy(void); 1074*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetFrcMode(VDEC_FrcMode eFrcMode); 1075*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetDynScalingParams( MS_PHY u32Addr , MS_U32 u32Size); 1076*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_SetDbgLevel(VDEC_DbgLevel eDbgLevel); 1077*53ee8cc1Swenshuai.xi 1078*53ee8cc1Swenshuai.xi 1079*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_Play(void); 1080*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_Pause(void); 1081*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_Resume(void); 1082*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_StepDisp(void); 1083*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsStepDispDone(void); 1084*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_StepDecode(void); 1085*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsStepDecodeDone(void); 1086*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetTrickMode(VDEC_TrickDec eTrickDec); 1087*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetBlockDisplay(MS_BOOL bEnable); 1088*53ee8cc1Swenshuai.xi 1089*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_EnableESBuffMalloc(MS_BOOL bEnable); 1090*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetESBuffVacancy(void* pData); 1091*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_GetESBuff(MS_U32 u32ReqSize, MS_U32* u32AvailSize, MS_PHY* u32Addr); 1092*53ee8cc1Swenshuai.xi 1093*53ee8cc1Swenshuai.xi /* 1094*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_PushQueue(MS_U32 u32StAddr, 1095*53ee8cc1Swenshuai.xi MS_U32 u32Size, 1096*53ee8cc1Swenshuai.xi MS_U32 u32Timestamp, 1097*53ee8cc1Swenshuai.xi MS_U32 u32ID_H, 1098*53ee8cc1Swenshuai.xi MS_U32 u32ID_L); 1099*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetQueueVacancy(void); 1100*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_FlushQueue(void); 1101*53ee8cc1Swenshuai.xi */ 1102*53ee8cc1Swenshuai.xi 1103*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_PushDecQ(VDEC_DecCmd *pCmd); 1104*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_PushDispQ(VDEC_DispCmd *pCmd); 1105*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_Flush(VDEC_FreezePicSelect eFreezePic); 1106*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_EnableLastFrameShow(MS_BOOL bEnable); 1107*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetSpeed(VDEC_SpeedType eSpeedType, VDEC_DispSpeed eSpeed); 1108*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetFreezeDisp(MS_BOOL bEnable); 1109*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetBlueScreen(MS_BOOL bOn); 1110*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_ResetPTS(MS_U32 u32PtsBase); 1111*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_AVSyncOn(MS_BOOL bOn, MS_U32 u32SyncDelay, MS_U16 u16SyncTolerance); 1112*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetAVSyncFreerunThreshold(MS_U32 u32Threshold ); 1113*53ee8cc1Swenshuai.xi 1114*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_GetDispInfo(VDEC_DispInfo *pDispinfo); 1115*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsAVSyncOn(void); 1116*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_IsWithValidStream(void); 1117*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsDispFinish(void); 1118*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsFrameRdy(void); 1119*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsIFrameFound(void); 1120*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsSeqChg(void); 1121*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsReachSync(void); 1122*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_IsFreerun(void); 1123*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_IsStartSync(void); 1124*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_IsWithLowDelay(void); 1125*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsAllBufferEmpty(void); 1126*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetExtDispInfo(VDEC_ExtDispInfo *pExtDispinfo); 1127*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_GetDecFrameInfo(VDEC_FrameInfo *pFrmInfo); 1128*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_GetDispFrameInfo(VDEC_FrameInfo *pFrmInfo); 1129*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_GetNextDispFrame(VDEC_DispFrame** ppDispFrm); 1130*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_DisplayFrame(VDEC_DispFrame *pDispFrm); 1131*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_ReleaseFrame(VDEC_DispFrame *pDispFrm); 1132*53ee8cc1Swenshuai.xi 1133*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetDecTimeCode(VDEC_TimeCode* pTimeCode); 1134*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetDispTimeCode(VDEC_TimeCode* pTimeCode); 1135*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetEvent(MS_U32 u32EnableEvent, VDEC_EventCb pfn, void* param); 1136*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_UnsetEvent(MS_U32 u32EnableEvent); 1137*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_SetEvent_EX(VDEC_CB_TYPE cb_type, MS_U32 u32EnableEvent, VDEC_EventCb pfn, void* param); 1138*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_UnsetEvent_EX(VDEC_CB_TYPE cb_type, MS_U32 u32EnableEvent); 1139*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetEventInfo(MS_U32* u32EventFlag); 1140*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetPatchPattern(VDEC_PatchPattern ePatternType, MS_U32 *pu32Staddr, MS_U32 *pu32Len); 1141*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_FireDecCmd(void); 1142*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SeekToPTS(MS_U32 u32PTS); 1143*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SkipToPTS(MS_U32 u32PTS); 1144*53ee8cc1Swenshuai.xi 1145*53ee8cc1Swenshuai.xi // Advanced Settings / Mode 1146*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_DisableDeblocking(MS_BOOL bDisable); 1147*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_DisableQuarterPixel(MS_BOOL bDisable); 1148*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_SetAutoRmLstZeroByte(MS_BOOL bOn); 1149*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetBalanceBW(MS_U8 u8QuarPixelTH, MS_U8 u8DeBlockingTH, MS_U8 u8UpperBound, MS_U8 u8SafeCoef); 1150*53ee8cc1Swenshuai.xi 1151*53ee8cc1Swenshuai.xi MS_U8 MApi_VDEC_GetActiveFormat(void); 1152*53ee8cc1Swenshuai.xi // MS_U8 MApi_VDEC_GetColourPrimaries(void); 1153*53ee8cc1Swenshuai.xi // MS_U8 MApi_VDEC_GetGOPCnt(void); 1154*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetESWritePtr(void); 1155*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetESReadPtr(void); 1156*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetPTS(void); 1157*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_GetNextPTS(void); 1158*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_GetErrCode(void); 1159*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetErrCnt(void); 1160*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_GetBitsRate(void); 1161*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetFrameCnt(void); 1162*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetSkipCnt(void); 1163*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetDropCnt(void); 1164*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetDecQVacancy(void); 1165*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_GetDispQVacancy(void); 1166*53ee8cc1Swenshuai.xi // MS_BOOL MApi_VDEC_Is32PullDown(void); 1167*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_IsAlive(void); 1168*53ee8cc1Swenshuai.xi MS_S64 MApi_VDEC_GetVideoPtsStcDelta(void); 1169*53ee8cc1Swenshuai.xi // MS_BOOL MApi_VDEC_IsCCAvailable(void); 1170*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_GetCCInfo(void *pInfo, MS_U32 u32Size); 1171*53ee8cc1Swenshuai.xi 1172*53ee8cc1Swenshuai.xi // VDEC_TrickDec MApi_VDEC_GetTrickMode(void); 1173*53ee8cc1Swenshuai.xi VDEC_CodecType MApi_VDEC_GetActiveCodecType(void); 1174*53ee8cc1Swenshuai.xi 1175*53ee8cc1Swenshuai.xi // VDEC_Result MDrv_VDEC_GenPattern(VDEC_PatternType ePatternType , MS_PHY u32Addr , MS_U32* u32Size); 1176*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_GenPattern(VDEC_PatternType ePatternType, MS_PHY u32Addr, MS_U32 *pu32Size); 1177*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetPatternLeastLength(VDEC_PatternType ePatternType ); 1178*53ee8cc1Swenshuai.xi 1179*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_MHEG_DecodeIFrame(MS_PHY u32FrameBufAddr, 1180*53ee8cc1Swenshuai.xi MS_PHY u32SrcSt, 1181*53ee8cc1Swenshuai.xi MS_PHY u32SrcEnd); 1182*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_MHEG_IsIFrameDecoding(void); 1183*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_MHEG_RstIFrameDec(void); 1184*53ee8cc1Swenshuai.xi 1185*53ee8cc1Swenshuai.xi //ATSC Closed Caption control 1186*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_CC_StartParsing(VDEC_CCCfg *pCCParam); 1187*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_CC_StopParsing(void); 1188*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_CC_GetWritePtr(MS_U32 *pWrite); 1189*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_CC_GetReadPtr(MS_U32 *pRead); 1190*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_CC_UpdateReadPtr(MS_U32 u32EachPacketSize); 1191*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_CC_GetIsOverflow(MS_BOOL *pbOverflow); 1192*53ee8cc1Swenshuai.xi 1193*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_Init(MS_U32 *pIn); 1194*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_SetCfg(VDEC_CCFormat eFmt, VDEC_CCType eType, MS_U32 *pIn); 1195*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_SetBuffStartAdd(VDEC_CCFormat eFmt, MS_U32 *pIn); 1196*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_UpdateWriteAdd(VDEC_CCFormat eFmt, MS_U32 *pIn); 1197*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_UpdateReadAdd(VDEC_CCFormat eFmt, MS_U32 *pIn); 1198*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_DisableParsing(VDEC_CCFormat eFmt); 1199*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_GetIsRstDone(VDEC_CCFormat eFmt); 1200*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_CC_GetIsBuffOverflow(VDEC_CCFormat eFmt); 1201*53ee8cc1Swenshuai.xi MS_PHY MApi_VDEC_CC_GetWriteAdd(VDEC_CCFormat eFmt); 1202*53ee8cc1Swenshuai.xi MS_PHY MApi_VDEC_CC_GetReadAdd(VDEC_CCFormat eFmt); 1203*53ee8cc1Swenshuai.xi 1204*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_DbgCmd(MS_U32 u8Cmd, MS_U32 u32CmdArg); 1205*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_DbgSetData(MS_VIRT u32Addr, MS_U32 u32Data); 1206*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_DbgGetData(MS_VIRT u32Addr, MS_U32 *u32Data); 1207*53ee8cc1Swenshuai.xi 1208*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_SetControl(VDEC_User_Cmd cmd_id, MS_VIRT param); 1209*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_PreSetControl(VDEC_User_Cmd cmd_id, MS_U32 param); 1210*53ee8cc1Swenshuai.xi 1211*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetFwVersion(VDEC_FwType eFwType); 1212*53ee8cc1Swenshuai.xi 1213*53ee8cc1Swenshuai.xi MS_U32 MApi_VDEC_GetDispCnt(void); 1214*53ee8cc1Swenshuai.xi 1215*53ee8cc1Swenshuai.xi VDEC_Result MApi_VDEC_GetControl(VDEC_User_Cmd cmd_id, MS_U32 *param); 1216*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_FlushPTSBuf(void); 1217*53ee8cc1Swenshuai.xi 1218*53ee8cc1Swenshuai.xi //System preseting function, it should be called when system init. 1219*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_SystemPreSetControl(VDEC_User_Cmd cmd_id, void *pParam); 1220*53ee8cc1Swenshuai.xi 1221*53ee8cc1Swenshuai.xi 1222*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetPowerState(EN_POWER_MODE u16PowerState); 1223*53ee8cc1Swenshuai.xi 1224*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetLibVer(const MSIF_Version **ppVersion); 1225*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetInfo(const VDEC_Info **ppInfo); 1226*53ee8cc1Swenshuai.xi // MS_BOOL MApi_VDEC_V2_GetStatus(VDEC_Status *pStatus); 1227*53ee8cc1Swenshuai.xi // MS_BOOL MApi_VDEC_V2_CheckCaps(VDEC_CodecType eCodecType); 1228*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_EnableTurboMode(MS_BOOL bEnable); 1229*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Init(VDEC_InitParam *pInitParam); 1230*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Init_EX(void *pInfo, MS_U32 u32Size); 1231*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Rst(void); 1232*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Exit(MS_BOOL); 1233*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CheckDispInfoRdy(void); 1234*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetFrcMode(VDEC_FrcMode eFrcMode); 1235*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetDynScalingParams( MS_PHY u32Addr , MS_U32 u32Size); 1236*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Play(void); 1237*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Pause(void); 1238*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Resume(void); 1239*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_StepDisp(void); 1240*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsStepDispDone(void); 1241*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SeekToPTS(MS_U32 u32PTS); 1242*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SkipToPTS(MS_U32 u32PTS); 1243*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_StepDecode(void); 1244*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsStepDecodeDone(void); 1245*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetTrickMode(VDEC_TrickDec eTrickDec); 1246*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_PushDecQ(VDEC_DecCmd *pCmd); 1247*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_FireDecCmd(void); 1248*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetDecQVacancy(void); 1249*53ee8cc1Swenshuai.xi // MS_BOOL MApi_VDEC_V2_IsCCAvailable(void); 1250*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetCCInfo(void *pInfo, MS_U32 u32Size); 1251*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_Flush(VDEC_FreezePicSelect eFreezePic); 1252*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetESWritePtr(void); 1253*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetESReadPtr(void); 1254*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_EnableLastFrameShow(MS_BOOL bEnable); 1255*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsDispFinish(void); 1256*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetSpeed(VDEC_SpeedType eSpeedType, VDEC_DispSpeed eSpeed); 1257*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsFrameRdy(void); 1258*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetFreezeDisp(MS_BOOL bEnable); 1259*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetBlueScreen(MS_BOOL bOn); 1260*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_ResetPTS(MS_U32 u32PtsBase); 1261*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_AVSyncOn(MS_BOOL bOn, MS_U32 u32SyncDelay, MS_U16 u16SyncTolerance); 1262*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetAVSyncFreerunThreshold(MS_U32 u32Threshold ); 1263*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsAVSyncOn(void); 1264*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetPTS(void); 1265*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetNextPTS(void); 1266*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsStartSync(void); 1267*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsReachSync(void); 1268*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsFreerun(void); 1269*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_MHEG_DecodeIFrame(MS_PHY u32FrameBufAddr, 1270*53ee8cc1Swenshuai.xi // MS_PHY u32SrcSt, 1271*53ee8cc1Swenshuai.xi // MS_PHY u32SrcEnd); 1272*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_MHEG_IsIFrameDecoding(void); 1273*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_MHEG_RstIFrameDec(void); 1274*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetErrCode(void); 1275*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetErrCnt(void); 1276*53ee8cc1Swenshuai.xi // VDEC_CodecType MApi_VDEC_V2_GetActiveCodecType(void); 1277*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetBitsRate(void); 1278*53ee8cc1Swenshuai.xi // MS_BOOL MApi_VDEC_V2_Is32PullDown(void); 1279*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsAlive(void); 1280*53ee8cc1Swenshuai.xi // MS_S64 MApi_VDEC_V2_GetVideoPtsStcDelta(void); 1281*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsWithValidStream(void); 1282*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsIFrameFound(void); 1283*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsWithLowDelay(void); 1284*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsAllBufferEmpty(void); 1285*53ee8cc1Swenshuai.xi // MS_U8 MApi_VDEC_V2_GetGOPCnt(void); 1286*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetFrameCnt(void); 1287*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetSkipCnt(void); 1288*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetDropCnt(void); 1289*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetDispInfo(VDEC_DispInfo *pDispinfo); 1290*53ee8cc1Swenshuai.xi // VDEC_TrickDec MApi_VDEC_V2_GetTrickMode(void); 1291*53ee8cc1Swenshuai.xi // MS_U8 MApi_VDEC_V2_GetActiveFormat(void); 1292*53ee8cc1Swenshuai.xi // MS_U8 MApi_VDEC_V2_GetColourPrimaries(void); 1293*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetHWKey(MS_U8 *pu8Key); 1294*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_IsSeqChg(void); 1295*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetDbgLevel(VDEC_DbgLevel eDbgLevel); 1296*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetDecFrameInfo(VDEC_FrameInfo* pFrmInfo); 1297*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetDispFrameInfo(VDEC_FrameInfo *pFrmInfo); 1298*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetExtDispInfo(VDEC_ExtDispInfo *pExtDispinfo); 1299*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetDecTimeCode(VDEC_TimeCode* pTimeCode); 1300*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetDispTimeCode(VDEC_TimeCode* pTimeCode); 1301*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_StartParsing(VDEC_CCCfg* pCCParam); 1302*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_StopParsing(void); 1303*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_GetWritePtr(MS_U32* pu32Write); 1304*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_GetReadPtr(MS_U32* pu32Write); 1305*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_UpdateReadPtr(MS_U32 u32EachPacketSize); 1306*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_GetIsOverflow(MS_BOOL* pbOverflow); 1307*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetEvent(MS_U32 u32EnableEvent, VDEC_EventCb pfn, void* param); 1308*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_UnsetEvent(MS_U32 u32EnableEvent); 1309*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetEvent_EX(VDEC_CB_TYPE cb_type, MS_U32 u32EnableEvent, VDEC_EventCb pfn, void* param); 1310*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_UnsetEvent_EX(VDEC_CB_TYPE cb_type, MS_U32 u32EnableEvent); 1311*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetEventInfo(MS_U32* u32EventFlag); 1312*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GenPattern(VDEC_PatternType ePatternType, MS_PHY u32Addr, MS_U32 *pu32Size); 1313*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetPatternLeastLength(VDEC_PatternType ePatternType ); 1314*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_DisableDeblocking(MS_BOOL bDisable); 1315*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_DisableQuarterPixel(MS_BOOL bDisable); 1316*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetAutoRmLstZeroByte(MS_BOOL bOn); 1317*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetBalanceBW(MS_U8 u8QuarPixelTH, MS_U8 u8DeBlockingTH, MS_U8 u8UpperBound, MS_U8 u8SafeCoef); 1318*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_DbgDumpStatus(void); 1319*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetControl(VDEC_User_Cmd cmd_id, MS_U32 param); 1320*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetControl(VDEC_User_Cmd cmd_id, MS_U32 *param); 1321*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetDispCnt(void); 1322*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetFwVersion(VDEC_FwType eFwType); 1323*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_SetBlockDisplay(MS_BOOL bEnable); 1324*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_EnableESBuffMalloc(MS_BOOL bEnable); 1325*53ee8cc1Swenshuai.xi // MS_U32 MApi_VDEC_V2_GetESBuffVacancy(void* pData); 1326*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetESBuff(MS_U32 u32ReqSize, MS_U32* u32AvailSize, MS_PHY* u32Addr); 1327*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_GetNextDispFrame(VDEC_DispFrame** ppDispFrm); 1328*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_DisplayFrame(VDEC_DispFrame *pDispFrm); 1329*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_DisplayFrame(VDEC_DispFrame *pDispFrm); 1330*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_FlushPTSBuf(void); 1331*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CaptureFrame(MS_U32 u32FrmPriData, MS_BOOL bEnable); 1332*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_Init(MS_U32 *pIn); 1333*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_SetCfg(VDEC_CCFormat eFmt, VDEC_CCType eType, MS_U32 *pIn); 1334*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_SetBuffStartAdd(VDEC_CCFormat eFmt, MS_U32 *pIn); 1335*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_UpdateWriteAdd(VDEC_CCFormat eFmt, MS_U32 *pIn); 1336*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_UpdateReadAdd(VDEC_CCFormat eFmt, MS_U32 *pIn); 1337*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_DisableParsing(VDEC_CCFormat eFmt); 1338*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_GetInfo(VDEC_CCFormat eFmt, VDEC_CCInfoCmd eCmd, MS_U32 *pOut); 1339*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_GetIsRstDone(VDEC_CCFormat eFmt); 1340*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_GetIsBuffOverflow(VDEC_CCFormat eFmt); 1341*53ee8cc1Swenshuai.xi // MS_PHY MApi_VDEC_V2_CC_GetWriteAdd(VDEC_CCFormat eFmt); 1342*53ee8cc1Swenshuai.xi // MS_PHY MApi_VDEC_V2_CC_GetReadAdd(VDEC_CCFormat eFmt); 1343*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_SystemPreSetControl(VDEC_User_Cmd cmd_id, void *pParam); 1344*53ee8cc1Swenshuai.xi // VDEC_Result MApi_VDEC_V2_CC_PreSetControl(VDEC_User_Cmd cmd_id, MS_U32 param); 1345*53ee8cc1Swenshuai.xi 1346*53ee8cc1Swenshuai.xi 1347*53ee8cc1Swenshuai.xi 1348*53ee8cc1Swenshuai.xi 1349*53ee8cc1Swenshuai.xi 1350*53ee8cc1Swenshuai.xi 1351*53ee8cc1Swenshuai.xi #ifdef __cplusplus 1352*53ee8cc1Swenshuai.xi } 1353*53ee8cc1Swenshuai.xi #endif 1354*53ee8cc1Swenshuai.xi 1355*53ee8cc1Swenshuai.xi #endif // _API_VDEC_H_ 1356