mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			158 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C
		
	
	
| /* Copyright (c) 2018-2019 Sigmastar Technology Corp.
 | ||
|  All rights reserved.
 | ||
| 
 | ||
|   Unless otherwise stipulated in writing, any and all information contained
 | ||
|  herein regardless in any format shall remain the sole proprietary of
 | ||
|  Sigmastar Technology Corp. and be kept in strict confidence
 | ||
|  (<28><>Sigmastar Confidential Information<6F><6E>) by the recipient.
 | ||
|  Any unauthorized act including without limitation unauthorized disclosure,
 | ||
|  copying, use, reproduction, sale, distribution, modification, disassembling,
 | ||
|  reverse engineering and compiling of the contents of Sigmastar Confidential
 | ||
|  Information is unlawful and strictly prohibited. Sigmastar hereby reserves the
 | ||
|  rights to any and all damages, losses, costs and expenses resulting therefrom.
 | ||
| */
 | ||
| #ifndef _MI_DIVP_H_
 | ||
| #define _MI_DIVP_H_
 | ||
| 
 | ||
| #ifdef __cplusplus
 | ||
| extern "C" {
 | ||
| #endif
 | ||
| 
 | ||
| #include "mi_divp_datatype.h"
 | ||
| 
 | ||
| #define DIVP_MAJOR_VERSION 2
 | ||
| #define DIVP_SUB_VERSION 4
 | ||
| #define MACRO_TO_STR(macro) #macro
 | ||
| #define DIVP_VERSION_STR(major_version,sub_version) ({char *tmp = sub_version/100 ? \
 | ||
|                                     "mi_divp_version_" MACRO_TO_STR(major_version)"." MACRO_TO_STR(sub_version) : sub_version/10 ? \
 | ||
|                                     "mi_divp_version_" MACRO_TO_STR(major_version)".0" MACRO_TO_STR(sub_version) : \
 | ||
|                                     "mi_divp_version_" MACRO_TO_STR(major_version)".00" MACRO_TO_STR(sub_version);tmp;})
 | ||
| #define MI_DIVP_API_VERSION DIVP_VERSION_STR(DIVP_MAJOR_VERSION,DIVP_SUB_VERSION)
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief create a DIVP channel.
 | ||
| /// @param[out] pDivpChn: DIVP channel ID.
 | ||
| /// @param[in] pstAttr: Attribute of DIVP channel.
 | ||
| /// @return MI_SUCCESS: succeed in creating a channel.
 | ||
| ///             MI_DIVP_ERR_INVALID_PARAM: invalid input patamter.
 | ||
| ///             MI_DIVP_ERR_NULL_PTR: NULL poiter error.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to create a channel.
 | ||
| ///             MI_DIVP_ERR_NO_RESOUCE: there is no resource.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_CreateChn (MI_DIVP_CHN DivpChn, MI_DIVP_ChnAttr_t* pstAttr);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief deatroy a DIVP channel.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @return MI_SUCCESS: succeed in deatroying a DIVP channel.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to deatroy a DIVP channel.
 | ||
| ///             MI_DIVP_ERR_CHN_BUSY:channel is busy.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_DestroyChn(MI_DIVP_CHN DivpChn);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief set attribute of DIVP channel.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @param[in] pstAttr: Attribute of DIVP channel.
 | ||
| /// @return MI_SUCCESS: succeed in setting attribute of DIVP channel.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_INVALID_PARAM: Invalid input patamter.
 | ||
| ///             MI_DIVP_ERR_NULL_PTR: NULL poiter error.
 | ||
| ///             MI_DIVP_ERR_CHN_NOT_SUPPORT: not support.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to set attribute of DIVP channel.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_SetChnAttr(MI_DIVP_CHN DivpChn, MI_DIVP_ChnAttr_t* pstAttr);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief get attribute of DIVP channel.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @param[in] pstAttr: Attribute of DIVP channel.
 | ||
| /// @return MI_SUCCESS: succeed in getting attribute of DIVP channel.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_NULL_PTR: NULL poiter error.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to get attribute of DIVP channel.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_GetChnAttr(MI_DIVP_CHN DivpChn, MI_DIVP_ChnAttr_t* pstAttr);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief start a DIVP channel.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @return MI_SUCCESS: succeed in starting a DIVP channel.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to start a DIVP channel.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_StartChn(MI_DIVP_CHN DivpChn);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief stop a DIVP channel.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @return MI_SUCCESS: succeed in stopping a DIVP channel.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to stop a DIVP channel.
 | ||
| ///             MI_DIVP_ERR_CHN_BUSY:channel is busy.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_StopChn(MI_DIVP_CHN DivpChn);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief set attribute of DIVP channel output port.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @param[in] pstOutputPortAttr: DIVP channel output port attribute.
 | ||
| /// @return MI_SUCCESS: succeed in setting attribute of DIVP channel output port.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_INVALID_PARAM: Invalid input patamter.
 | ||
| ///             MI_DIVP_ERR_NULL_PTR: NULL poiter error.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to set attribute of DIVP channel output port.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_SetOutputPortAttr (MI_DIVP_CHN DivpChn, MI_DIVP_OutputPortAttr_t * pstOutputPortAttr);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief get attribute of DIVP channel output port.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @param[out] pstOutputPortAttr: DIVP channel output port attribute.
 | ||
| /// @return MI_SUCCESS: succeed in getting attribute of DIVP channel output port.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to get attribute of DIVP channel output port.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_NULL_PTR: NULL poiter error.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_GetOutputPortAttr (MI_DIVP_CHN DivpChn, MI_DIVP_OutputPortAttr_t * pstOutputPortAttr);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief refresh a DIVP channel.
 | ||
| /// @param[in] DivpChn: DIVP channel ID.
 | ||
| /// @return MI_SUCCESS: succeed in refreshing a DIVP channel.
 | ||
| ///             MI_DIVP_ERR_INVALID_CHNID: Invalid channel ID.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to refresh a DIVP channel.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_RefreshChn(MI_DIVP_CHN DivpChn);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief stretch or crop image in specified memory to target memory
 | ||
| /// @param[in] pstSrcBuf: source buff info pointer
 | ||
| /// @param[in] pstSrcCrop: crop info pointer
 | ||
| /// @param[in] pstDstBuf: dest buff info pointer
 | ||
| /// @return MI_SUCCESS: succeed in stretching image
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to stretch image
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_StretchBuf(MI_DIVP_DirectBuf_t *pstSrcBuf, MI_SYS_WindowRect_t *pstSrcCrop, MI_DIVP_DirectBuf_t *pstDstBuf);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief Init DIVP module.
 | ||
| /// @return MI_SUCCESS: succeed in Init DIVP module.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to Init DIVP module.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_InitDev(MI_DIVP_InitParam_t *pstInitParam);
 | ||
| 
 | ||
| //------------------------------------------------------------------------------
 | ||
| /// @brief DeInit DIVP module.
 | ||
| /// @return MI_SUCCESS: succeed in DeInit DIVP module.
 | ||
| ///             MI_DIVP_ERR_FAILED: Fail to DeInit DIVP module.
 | ||
| //------------------------------------------------------------------------------
 | ||
| MI_S32 MI_DIVP_DeInitDev(void);
 | ||
| 
 | ||
| #ifdef __cplusplus
 | ||
| }
 | ||
| #endif
 | ||
| 
 | ||
| #endif
 |