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) 2006-2007 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 apiMFE_v2.h 98 /// @brief MFE Driver Interface 99 /// @author MStar Semiconductor Inc. 100 /////////////////////////////////////////////////////////////////////////////////////////////////// 101 102 #ifndef _API_MFE_V2_H_ 103 #define _API_MFE_V2_H_ 104 105 #ifdef __cplusplus 106 extern "C" 107 { 108 #endif 109 110 #include "drv_mfe_st.h" 111 112 #include "MsTypes.h" 113 //------------------------------------------------------------------------------------------------- 114 // Defines 115 //------------------------------------------------------------------------------------------------- 116 // below for utopia20 structure 117 118 119 //------------------------------------------------------------------------------------------------- 120 /// I/O control commands for MFE_Ioctl. 121 /// The required type of pArgs is in the brackets. 122 /// 123 /// MApi_CMD_MFE_Init (PMFE_INIT_PARAM) 124 /// Initializes MFE driver. 125 /// 126 /// MApi_CMD_MFE_Encode (PMFE_INIT_PARAM) 127 /// Notifies driver to start encoder. 128 /// 129 /// MApi_CMD_MFE_GetVOL (PMFE_GETVOL_PARAM) 130 /// Gets bitstream header. 131 /// 132 /// MApi_CMD_MFE_CompressOnePicture (PMFE_COMPRESSONEPICTURE_PARAM) 133 /// Encodes one frame. 134 /// 135 /// MApi_CMD_MFE_DeInit (PMFE_INIT_PARAM) 136 /// De-initializes MFE driver. 137 /// 138 /// MApi_CMD_MFE_PowerOff (PMFE_INIT_PARAM) 139 /// Turns off MFE clock. 140 /// 141 /// MApi_CMD_MFE_GetOutBuffer (PMFE_GET_OBUF_PARAM) 142 /// Gets descriptor of output buffer. 143 /// 144 /// MApi_CMD_MFE_SetBitrateFramerate (PMFE_INIT_PARAM) 145 /// Sets frame rate and bit rate using PVR_Info's nBitrate and FrameRatex100 fields. 146 /// 147 /// MApi_CMD_MFE_SetColorFormat (PMFE_INIT_PARAM) 148 /// Sets input data format. 149 /// 150 /// MApi_CMD_MFE_ResetSPSPPS (PMFE_INIT_PARAM) 151 /// Resets SPS and PPS header content with current configuration. 152 /// 153 /// MApi_CMD_MFE_SetFrameType (PMFE_SET_PARAM) 154 /// If frame type is I_VOP, force compress I frame. 155 /// 156 /// MApi_CMD_MFE_SetISR (PMFE_INIT_PARAM) 157 /// Sets ISR mode. 158 /// 159 /// MApi_CMD_MFE_GetHWCap (PMFE_GET_HWCAP_PARAM) 160 /// Gets MFE HW capability. 161 /// 162 /// MApi_CMD_MFE_GetOutputInfo (PMFE_GETOUTPUT_PARAM) 163 /// Gets type and length of encoded frame data. 164 /// 165 /// MApi_CMD_MFE_SetVUI (PMFE_SETVUI_PARAM) 166 /// Sets VUI information to be included in stream header. 167 /// 168 /// MApi_CMD_MFE_GetConfig (PMFE_GET_CONFIG_PARAM) 169 /// Gets a copy of encode info used during initialization. 170 /// 171 //------------------------------------------------------------------------------------------------- 172 typedef enum { 173 MApi_CMD_MFE_Init = 0x0, 174 MApi_CMD_MFE_Encode, 175 MApi_CMD_MFE_GetVOL, 176 MApi_CMD_MFE_CompressOnePicture, 177 MApi_CMD_MFE_DeInit, 178 MApi_CMD_MFE_PowerOff, 179 MApi_CMD_MFE_GetOutBuffer, 180 MApi_CMD_MFE_SetBitrateFramerate, 181 MApi_CMD_MFE_SetColorFormat, 182 MApi_CMD_MFE_ResetSPSPPS, 183 MApi_CMD_MFE_SetFrameType, 184 MApi_CMD_MFE_SetISR, 185 MApi_CMD_MFE_GetHWCap, 186 MApi_CMD_MFE_GetOutputInfo, 187 MApi_CMD_MFE_SetVUI, 188 MApi_CMD_MFE_GetConfig, 189 } E_MFE_V2_IOCTL_CMD; 190 191 //------------------------------------------------------------------------------------------------- 192 /// Encoding parameters. 193 /// mfe_Info IN: pointer to encode info structure 194 /// retVal OUT: TRUE: success; FALSE: fail 195 //------------------------------------------------------------------------------------------------- 196 typedef struct _MFE_INIT_PARAM 197 { 198 PVR_Info* mfe_Info; 199 MS_BOOL retVal; 200 }MFE_INIT_PARAM, *PMFE_INIT_PARAM; 201 202 //------------------------------------------------------------------------------------------------- 203 /// Parameters for setting frame type. 204 /// Used with MApi_CMD_MFE_SetFrameType. 205 /// mfe_Info IN: pointer to encode info structure 206 /// frameType IN: If frame type is I_VOP, force compress I frame. 207 /// retVal OUT: TRUE: success; FALSE: fail 208 //------------------------------------------------------------------------------------------------- 209 typedef struct _MFE_SET_PARAM 210 { 211 PVR_Info* mfe_Info; 212 MS_S32 frametype; 213 MS_BOOL retVal; 214 }MFE_SET_PARAM, *PMFE_SET_PARAM; 215 216 //------------------------------------------------------------------------------------------------- 217 /// Parameters for getting SPS and PPS infomation. 218 /// Used with MApi_CMD_MFE_GetVOL. 219 /// mfe_Info IN: pointer to encode info structure 220 /// header_info OUT: (SPSPPS_INFO_t*) SPS, PPS information 221 /// retVal OUT: TRUE: success; FALSE: fail 222 //------------------------------------------------------------------------------------------------- 223 typedef struct _MFE_GETVOL_PARAM 224 { 225 PVR_Info* mfe_Info; 226 void *header_info; 227 MS_BOOL retVal; 228 }MFE_GETVOL_PARAM, *PMFE_GETVOL_PARAM; 229 230 //------------------------------------------------------------------------------------------------- 231 /// Parameters for encoding one input frame. 232 /// Used with MApi_CMD_MFE_CompressOnePicture. 233 /// mfe_Info IN: pointer to encode info structure 234 /// YUVPlane IN: DRAM location of input frame data. 235 /// bForceIframe IN: If TRUE, force this frame to be I-frame. 236 /// retVal OUT: TRUE: success; FALSE: fail 237 //------------------------------------------------------------------------------------------------- 238 typedef struct _MFE_COMPRESSONEPICTURE_PARAM 239 { 240 PVR_Info* mfe_Info; 241 MEMMAP_CUR_t YUVPlane; 242 MS_BOOL bForceIframe; 243 MS_BOOL retVal; 244 }MFE_COMPRESSONEPICTURE_PARAM, *PMFE_COMPRESSONEPICTURE_PARAM; 245 246 //------------------------------------------------------------------------------------------------- 247 /// Parameters for getting the descriptor on output buffer. 248 /// Used with MApi_CMD_MFE_GetOutBuffer. 249 /// mfe_Info IN: pointer to encode info structure 250 /// outbuf OUT: Descriptor of output buffer 251 /// retVal OUT: TRUE: success; FALSE: fail 252 //------------------------------------------------------------------------------------------------- 253 typedef struct _MFE_GET_OBUF_PARAM 254 { 255 PVR_Info* mfe_Info; 256 MEMMAP_t* outbuf; 257 MS_BOOL retVal; 258 }MFE_GET_OBUF_PARAM, *PMFE_GET_OBUF_PARAM; 259 260 //------------------------------------------------------------------------------------------------- 261 /// Parameters for getting hardware capability. 262 /// Used with MApi_CMD_MFE_GetHWCap. 263 /// mfe_Info IN: pointer to encode info structure 264 /// pDrv OUT: Hardware capability information 265 /// pHwCap_len IN: Length of hardware capability structure 266 /// retVal OUT: TRUE: success; FALSE: fail 267 //------------------------------------------------------------------------------------------------- 268 typedef struct _MFE_GET_HWCAP_PARAM 269 { 270 PVR_Info* mfe_Info; 271 MFE_HwCapV0 *pDrv; 272 MS_U32 *HwCap_len; 273 MS_BOOL retVal; 274 }MFE_GET_HWCAP_PARAM, *PMFE_GET_HWCAP_PARAM; 275 276 //------------------------------------------------------------------------------------------------- 277 /// Parameters for getting information on encoded frame. 278 /// Used with MApi_CMD_MFE_GetOutputInfo. 279 /// mfe_Info IN: pointer to encode info structure 280 /// frametype OUT: encoded frame type (I_VOP or P_VOP) 281 /// size OUT: encoded bitstream size 282 /// retVal OUT: TRUE: success; FALSE: fail 283 //------------------------------------------------------------------------------------------------- 284 typedef struct _MFE_GETOUTPUT_PARAM 285 { 286 PVR_Info* mfe_Info; 287 MS_S32 frametype; 288 MS_S32 size; 289 MS_BOOL retVal; 290 }MFE_GETOUTPUT_PARAM, *PMFE_GETOUTPUT_PARAM; 291 292 //------------------------------------------------------------------------------------------------- 293 /// Parameters for setting video usability information (VUI). 294 /// Used with MApi_CMD_MFE_SetVUI. 295 /// mfe_Info IN: pointer to encode info structure 296 /// setLevel IN: level_idc 297 /// setVUI_aspect_ratio_info_present_flag IN: aspect_ratio_info_present_flag 298 /// setVUI_aspect_ratio_idc IN: aspect_ratio_idc 299 /// setVUI_sar_width IN: sar_width 300 /// setVUI_sar_height IN: sar_height 301 /// retVal OUT: TRUE: success; FALSE: fail 302 //------------------------------------------------------------------------------------------------- 303 typedef struct _MFE_SETVUI_PARAM 304 { 305 PVR_Info* mfe_Info; 306 MS_U32 setLevel; 307 MS_BOOL setVUI_aspect_ratio_info_present_flag; 308 MS_U32 setVUI_aspect_ratio_idc; 309 MS_U32 setVUI_sar_width; 310 MS_U32 setVUI_sar_height; 311 MS_BOOL retVal; 312 }MFE_SETVUI_PARAM, *PMFE_SETVUI_PARAM; 313 314 //------------------------------------------------------------------------------------------------- 315 /// Parameters for getting a copy of encode info used during initialization. 316 /// Used with MApi_CMD_MFE_GetConfig. 317 /// mfe_Info OUT: pointer to encode info structure 318 /// retVal OUT: TRUE: success; FALSE: fail 319 //------------------------------------------------------------------------------------------------- 320 typedef struct _MFE_GET_CONFIG_PARAM 321 { 322 PVR_Info* mfe_Info; 323 MS_BOOL retVal; 324 }MFE_GET_CONFIG_PARAM, *PMFE_GET_CONFIG_PARAM; 325 326 //------------------------------------------------------------------------------------------------- 327 /// *** DO NOT USE *** 328 /// Register MFE driver to Utopia framework. 329 /// To be called by UTOPIA FRAMEWORK ONLY. 330 //------------------------------------------------------------------------------------------------- 331 void MFERegisterToUtopia(FUtopiaOpen ModuleType); 332 333 334 //------------------------------------------------------------------------------------------------- 335 /// Gets MFE driver instance. 336 /// @param ppInstance \b OUT: pointer to MFE driver instance 337 /// @param u32ModuleVersion \b IN: Module version. Use 0. 338 /// @param pAttribute \b IN: not used 339 /// @return UTOPIA_STATUS_SUCCESS : success 340 /// @return Other values : see utopia.h for meaning of fail values 341 //------------------------------------------------------------------------------------------------- 342 MS_U32 MFE_Open(void** ppInstance, MS_U32 u32ModuleVersion, void* pAttribute); 343 344 345 //------------------------------------------------------------------------------------------------- 346 /// Releases MFE driver instance. 347 /// @param pInstance \b IN: MFE drvier instance 348 /// @return UTOPIA_STATUS_SUCCESS : success 349 /// @return Other values : see utopia.h for meaning of fail values 350 //------------------------------------------------------------------------------------------------- 351 MS_U32 MFE_Close(void* pInstance); 352 353 354 //------------------------------------------------------------------------------------------------- 355 /// Notify driver to start encoder. 356 /// @param pInstance \b IN: MFE drvier instance 357 /// @param u32Cmd \b IN: MFE I/O control command from E_MFE_V2_IOCTL_CMD 358 /// @param pArgs \b IN: pointer to I/O control parameter structure 359 /// @return UTOPIA_STATUS_SUCCESS : success 360 /// @return Other values : see utopia.h for meaning of fail values 361 //------------------------------------------------------------------------------------------------- 362 MS_U32 MFE_Ioctl(void* pInstance, MS_U32 u32Cmd, void* pArgs); 363 364 365 #ifdef __cplusplus 366 } 367 #endif 368 369 #endif // _API_MFE_V2_H_ 370 371 372