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