diff options
| author | Meizu OpenSource <patchwork@meizu.com> | 2016-08-15 10:19:42 +0800 |
|---|---|---|
| committer | Meizu OpenSource <patchwork@meizu.com> | 2016-08-15 10:19:42 +0800 |
| commit | d2e1446d81725c351dc73a03b397ce043fb18452 (patch) | |
| tree | 4dbc616b7f92aea39cd697a9084205ddb805e344 /include/linux/vcodec/venc_drv_base.h | |
first commit
Diffstat (limited to 'include/linux/vcodec/venc_drv_base.h')
| -rw-r--r-- | include/linux/vcodec/venc_drv_base.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/include/linux/vcodec/venc_drv_base.h b/include/linux/vcodec/venc_drv_base.h new file mode 100644 index 000000000..1b99ec0b6 --- /dev/null +++ b/include/linux/vcodec/venc_drv_base.h @@ -0,0 +1,82 @@ +#include "venc_drv_if_private.h" +#include "vcodec_if_v2.h" + +#include <sys/time.h> + +#ifndef _VENC_DRV_BASE_ +#define _VENC_DRV_BASE_ + +#define DO_VCODEC_RESET(cmd, index) \ + { \ + } + +typedef enum __VDDRV_MRESULT_T +{ + VDDRV_MRESULT_SUCCESS = VAL_TRUE, ///< Represent success + VDDRV_MRESULT_FAIL = VAL_FALSE ///< Represent failure +} VDDRV_MRESULT_T; + +typedef struct __VENC_DRV_BASE_T +{ + VAL_UINT32_T(*Init)(VAL_HANDLE_T *handle, VAL_HANDLE_T halhandle, VAL_HANDLE_T valhandle); ///< Function to do driver Initialization + VAL_UINT32_T(*Encode)(VAL_HANDLE_T handle, VENC_DRV_START_OPT_T eOpt, P_VENC_DRV_PARAM_FRM_BUF_T pFrameBuf, P_VENC_DRV_PARAM_BS_BUF_T pBitstreamBuf, VENC_DRV_DONE_RESULT_T *pResult); + VAL_UINT32_T(*GetParam)(VAL_HANDLE_T handle, VENC_DRV_GET_TYPE_T a_eType, VAL_VOID_T *a_pvInParam, VAL_VOID_T *a_pvOutParam); ///< get codec's required memory size. + VAL_UINT32_T(*SetParam)(VAL_HANDLE_T handle, VENC_DRV_SET_TYPE_T a_eType, VAL_VOID_T *a_pvInParam, VAL_VOID_T *a_pvOutParam); ///< set codec's required memory size. + VAL_UINT32_T(*DeInit)(VAL_HANDLE_T handle); ///< Function to do driver de-initialization +} VENC_DRV_BASE_T; + +/** + * @par Structure + * mhalVdoDrv_t + * @par Description + * This is a structure which store common video enc driver information + */ +typedef struct mhalVdoDrv_s +{ + VAL_VOID_T *prCodecHandle; + VAL_UINT32_T u4EncodedFrameCount; + VCODEC_ENC_CALLBACK_T rCodecCb; + VIDEO_ENC_API_T *prCodecAPI; + VENC_BS_T pBSBUF; + + VCODEC_ENC_BUFFER_INFO_T EncoderInputParamNC; + VENC_DRV_PARAM_BS_BUF_T BSout; + VENC_HYBRID_ENCSETTING rVencSetting; + VAL_UINT8_T *ptr; +} mhalVdoDrv_t; + + +typedef struct __VENC_HYBRID_HANDLE_T +{ + mhalVdoDrv_t rMhalVdoDrv; + VAL_MEMORY_T rBSDrvWorkingMem; + VAL_UINT32_T nOmxTids; + VAL_VCODEC_THREAD_ID_T rThreadID; + VIDEO_ENC_WRAP_HANDLE_T hWrapper; + VAL_VOID_T *pDrvModule; ///< used for dlopen and dlclose +} VENC_HYBRID_HANDLE_T; + + +typedef struct __VENC_HANDLE_T +{ + VENC_DRV_VIDEO_FORMAT_T CodecFormat; + VENC_DRV_BASE_T rFuncPtr; ///< Point to driver's proprietary function. + VAL_HANDLE_T hDrvHandle; ///< Handle of each format driver + VAL_HANDLE_T hHalHandle; ///< HAL handle + VAL_HANDLE_T hValHandle; ///< VAL handle + VAL_MEMORY_T rHandleMem; ///< Memory for venc handle + VAL_VOID_T *prExtraData; ///< Driver private data pointer. + VAL_MEMORY_T rExtraDataMem; ///< Save extra data memory information to be used in release. + VENC_HYBRID_HANDLE_T rHybridHandle; ///< Hybrid handle + FILE *pfDump; ///< Dump file + VAL_UINT32_T u4ShowInfo; ///< Flag for show FPS and BitRate + VAL_UINT32_T u4FPS; ///< FPS + VAL_UINT32_T u4Bitrate; ///< Bitrate + struct timeval tStart; ///< Start time counting FPS and bitrate + VENC_DRV_SCENARIO_T eScenario; ///< VENC Senario +} VENC_HANDLE_T; + +VENC_DRV_MRESULT_T ParseConfig(const char *cfgFileName, const char *ParameterItem, VAL_UINT32_T *val); + + +#endif |
