sdk-hwV1.3/external/eyesee-mpp/middleware/sun8iw21/include/media/mpi_venc.h

283 lines
14 KiB
C
Raw Permalink Normal View History

2024-05-07 10:09:20 +00:00
/******************************************************************************
Copyright (C), 2001-2016, Allwinner Tech. Co., Ltd.
******************************************************************************
File Name : mpi_venc.h
Version : Initial Draft
Author : Allwinner BU3-PD2 Team
Created : 2016/03/15
Last Modified :
Description : mpi functions declaration for video encoder
Function List :
History :
******************************************************************************/
#ifndef __IPCLINUX_MPI_VENC_H__
#define __IPCLINUX_MPI_VENC_H__
//ref platform headers
#include "plat_type.h"
#include "plat_errno.h"
#include "plat_defines.h"
#include "plat_math.h"
//media api headers to app
#include "mm_common.h"
#include "mm_comm_video.h"
#include "mm_comm_venc.h"
//media internal common headers.
#include "vencoder.h"
#include "ComponentCommon.h"
#ifdef __cplusplus
extern "C" {
#endif
ERRORTYPE AW_MPI_VENC_CreateChn(VENC_CHN VeChn, const VENC_CHN_ATTR_S *pAttr);
ERRORTYPE AW_MPI_VENC_DestroyChn(VENC_CHN VeChn);
//ERRORTYPE AW_MPI_VENC_SetChnlPriority(VENC_CHN VeChn, unsigned int nPriority);
//ERRORTYPE AW_MPI_VENC_GetChnlPriority(VENC_CHN VeChn, unsigned int *pPriority);
ERRORTYPE AW_MPI_VENC_ResetChn(VENC_CHN VeChn);
ERRORTYPE AW_MPI_VENC_StartRecvPic(VENC_CHN VeChn);
ERRORTYPE AW_MPI_VENC_StartRecvPicEx(VENC_CHN VeChn, VENC_RECV_PIC_PARAM_S *pRecvParam);
ERRORTYPE AW_MPI_VENC_StopRecvPic(VENC_CHN VeChn);
ERRORTYPE AW_MPI_VENC_CreateEncoder(VENC_CHN VeChn);
ERRORTYPE AW_MPI_VENC_DestroyEncoder(VENC_CHN VeChn);
ERRORTYPE AW_MPI_VENC_Query(VENC_CHN VeChn, VENC_CHN_STAT_S *pStat);
ERRORTYPE AW_MPI_VENC_RegisterCallback(VENC_CHN VeChn, MPPCallbackInfo *pCallback);
ERRORTYPE AW_MPI_VENC_SetChnAttr(VENC_CHN VeChn, const VENC_CHN_ATTR_S *pAttr);
ERRORTYPE AW_MPI_VENC_GetChnAttr(VENC_CHN VeChn, VENC_CHN_ATTR_S *pAttr);
/*-1:bolck 0:nonblock >0 : overtime */
ERRORTYPE AW_MPI_VENC_GetStream(VENC_CHN VeChn, VENC_STREAM_S *pStream, int nMilliSec);
ERRORTYPE AW_MPI_VENC_ReleaseStream(VENC_CHN VeChn, VENC_STREAM_S *pStream);
//ERRORTYPE AW_MPI_VENC_InsertUserData(VENC_CHN VeChn, unsigned char *pData, unsigned int nLen);
/*-1:bolck 0:nonblock >0 : overtime */
ERRORTYPE AW_MPI_VENC_SendFrame(VENC_CHN VeChn, VIDEO_FRAME_INFO_S *pFrame ,int nMilliSec);
ERRORTYPE AW_MPI_VENC_SendFrameSync(VENC_CHN VeChn, VIDEO_FRAME_INFO_S *pFrame ,int nMilliSec);
//ERRORTYPE AW_MPI_VENC_GetUsedFrame(VENC_CHN VeChn, VIDEO_FRAME_INFO_S *pFrame ,int nMilliSec);
//ERRORTYPE AW_MPI_VENC_SetMaxStreamCnt(VENC_CHN VeChn, unsigned int u32MaxStrmCnt);
//ERRORTYPE AW_MPI_VENC_GetMaxStreamCnt(VENC_CHN VeChn, unsigned int *pu32MaxStrmCnt);
ERRORTYPE AW_MPI_VENC_RequestIDR(VENC_CHN VeChn, BOOL bInstant);
int AW_MPI_VENC_GetHandle(VENC_CHN VeChn);
ERRORTYPE AW_MPI_VENC_SetRoiCfg(VENC_CHN VeChn, VENC_ROI_CFG_S *pVencRoiCfg);
ERRORTYPE AW_MPI_VENC_GetRoiCfg(VENC_CHN VeChn, unsigned int nIndex, VENC_ROI_CFG_S *pVencRoiCfg);
ERRORTYPE AW_MPI_VENC_SetRoiBgFrameRate(VENC_CHN VeChn, const VENC_ROIBG_FRAME_RATE_S *pstRoiBgFrmRate);
ERRORTYPE AW_MPI_VENC_GetRoiBgFrameRate(VENC_CHN VeChn, VENC_ROIBG_FRAME_RATE_S *pstRoiBgFrmRate);
//ERRORTYPE AW_MPI_VENC_SetH264SliceSplit(VENC_CHN VeChn, const VENC_PARAM_H264_SLICE_SPLIT_S *pSliceSplit);
//ERRORTYPE AW_MPI_VENC_GetH264SliceSplit(VENC_CHN VeChn, VENC_PARAM_H264_SLICE_SPLIT_S *pSliceSplit);
//ERRORTYPE AW_MPI_VENC_SetH264InterPred(VENC_CHN VeChn, const VENC_PARAM_H264_INTER_PRED_S *pH264InterPred);
//ERRORTYPE AW_MPI_VENC_GetH264InterPred(VENC_CHN VeChn, VENC_PARAM_H264_INTER_PRED_S *pH264InterPred);
//ERRORTYPE AW_MPI_VENC_SetH264IntraPred(VENC_CHN VeChn, const VENC_PARAM_H264_INTRA_PRED_S *pH264IntraPred);
//ERRORTYPE AW_MPI_VENC_GetH264IntraPred(VENC_CHN VeChn, VENC_PARAM_H264_INTRA_PRED_S *pH264IntraPred);
//ERRORTYPE AW_MPI_VENC_SetH264Trans(VENC_CHN VeChn, const VENC_PARAM_H264_TRANS_S *pH264Trans);
//ERRORTYPE AW_MPI_VENC_GetH264Trans(VENC_CHN VeChn, VENC_PARAM_H264_TRANS_S *pH264Trans);
//ERRORTYPE AW_MPI_VENC_SetH264Entropy(VENC_CHN VeChn, const VENC_PARAM_H264_ENTROPY_S *pH264EntropyEnc);
//ERRORTYPE AW_MPI_VENC_GetH264Entropy(VENC_CHN VeChn, VENC_PARAM_H264_ENTROPY_S *pH264EntropyEnc);
//ERRORTYPE AW_MPI_VENC_SetH264Poc(VENC_CHN VeChn, const VENC_PARAM_H264_POC_S *pH264Poc);
//ERRORTYPE AW_MPI_VENC_GetH264Poc(VENC_CHN VeChn, VENC_PARAM_H264_POC_S *pH264Poc);
//ERRORTYPE AW_MPI_VENC_SetH264Dblk(VENC_CHN VeChn, const VENC_PARAM_H264_DBLK_S *pH264Dblk);
//ERRORTYPE AW_MPI_VENC_GetH264Dblk(VENC_CHN VeChn, VENC_PARAM_H264_DBLK_S *pH264Dblk);
ERRORTYPE AW_MPI_VENC_SetH264Vui(VENC_CHN VeChn, const VENC_PARAM_H264_VUI_S *pH264Vui);
ERRORTYPE AW_MPI_VENC_GetH264Vui(VENC_CHN VeChn, VENC_PARAM_H264_VUI_S *pH264Vui);
ERRORTYPE AW_MPI_VENC_SetH265Vui(VENC_CHN VeChn, const VENC_PARAM_H265_VUI_S *pH265Vui);
ERRORTYPE AW_MPI_VENC_GetH265Vui(VENC_CHN VeChn, VENC_PARAM_H265_VUI_S *pH265Vui);
ERRORTYPE AW_MPI_VENC_GetH264SpsPpsInfo(VENC_CHN VeChn, VencHeaderData *pH264SpsPpsInfo);
ERRORTYPE AW_MPI_VENC_GetH265SpsPpsInfo(VENC_CHN VeChn, VencHeaderData *pH265SpsPpsInfo);
ERRORTYPE AW_MPI_VENC_SetJpegParam(VENC_CHN VeChn, const VENC_PARAM_JPEG_S *pJpegParam);
ERRORTYPE AW_MPI_VENC_GetJpegParam(VENC_CHN VeChn, VENC_PARAM_JPEG_S *pJpegParam);
ERRORTYPE AW_MPI_VENC_SetJpegExifInfo(VENC_CHN VeChn, const VENC_EXIFINFO_S *pJpegExifInfo);
ERRORTYPE AW_MPI_VENC_GetJpegExifInfo(VENC_CHN VeChn, VENC_EXIFINFO_S *pJpegExifInfo);
ERRORTYPE AW_MPI_VENC_GetJpegThumbBuffer(VENC_CHN VeChn, VENC_JPEG_THUMB_BUFFER_S *pThumbBuffer);
//ERRORTYPE AW_MPI_VENC_SetMjpegParam(VENC_CHN VeChn, const VENC_PARAM_MJPEG_S *pMjpegParam);
//ERRORTYPE AW_MPI_VENC_GetMjpegParam(VENC_CHN VeChn, VENC_PARAM_MJPEG_S *pMjpegParam);
ERRORTYPE AW_MPI_VENC_GetDayOrNight(VENC_CHN VeChn, int *DayOrNight);
ERRORTYPE AW_MPI_VENC_SetDayOrNight(VENC_CHN VeChn, int *DayOrNight);
ERRORTYPE AW_MPI_VENC_GetHighPassFilter(VENC_CHN VeChn, VencHighPassFilter *pHighPassFilter);
ERRORTYPE AW_MPI_VENC_SetHighPassFilter(VENC_CHN VeChn, const VencHighPassFilter *pHighPassFilter);
ERRORTYPE AW_MPI_VENC_SetFrameRate(VENC_CHN VeChn, const VENC_FRAME_RATE_S *pFrameRate);
ERRORTYPE AW_MPI_VENC_GetFrameRate(VENC_CHN VeChn, VENC_FRAME_RATE_S *pFrameRate);
ERRORTYPE AW_MPI_VENC_SetTimeLapse(VENC_CHN VeChn, int64_t nTimeLapse); //unit:us
ERRORTYPE AW_MPI_VENC_GetTimeLapse(VENC_CHN VeChn, int64_t *pTimeLapse);
ERRORTYPE AW_MPI_VENC_GetRcParam(VENC_CHN VeChn, VENC_RC_PARAM_S *pRcParam);
ERRORTYPE AW_MPI_VENC_SetRcParam(VENC_CHN VeChn, const VENC_RC_PARAM_S *pRcParam);
//ERRORTYPE AW_MPI_VENC_SetRefParam(VENC_CHN VeChn, const VENC_PARAM_REF_S *pRefParam);
//ERRORTYPE AW_MPI_VENC_GetRefParam(VENC_CHN VeChn, VENC_PARAM_REF_S *pRefParam);
ERRORTYPE AW_MPI_VENC_SetColor2Grey(VENC_CHN VeChn, const VENC_COLOR2GREY_S *pChnColor2Grey);
ERRORTYPE AW_MPI_VENC_GetColor2Grey(VENC_CHN VeChn, VENC_COLOR2GREY_S *pChnColor2Grey);
ERRORTYPE AW_MPI_VENC_SetCrop(VENC_CHN VeChn, const VENC_CROP_CFG_S *pCropCfg);
ERRORTYPE AW_MPI_VENC_GetCrop(VENC_CHN VeChn, VENC_CROP_CFG_S *pCropCfg);
//ERRORTYPE AW_MPI_VENC_SetJpegSnapMode(VENC_CHN VeChn, VENC_JPEG_SNAP_MODE_E enJpegSnapMode);
//ERRORTYPE AW_MPI_VENC_GetJpegSnapMode(VENC_CHN VeChn, VENC_JPEG_SNAP_MODE_E *penJpegSnapMode);
//ERRORTYPE AW_MPI_VENC_EnableIDR(VENC_CHN VeChn, BOOL bEnableIDR);
//ERRORTYPE AW_MPI_VENC_SetH264IdrPicId( VENC_CHN VeChn, VENC_H264_IDRPICID_CFG_S* pstH264eIdrPicIdCfg );
//ERRORTYPE AW_MPI_VENC_GetH264IdrPicId( VENC_CHN VeChn, VENC_H264_IDRPICID_CFG_S* pstH264eIdrPicIdCfg );
//ERRORTYPE AW_MPI_VENC_GetStreamBufInfo(VENC_CHN VeChn, VENC_STREAM_BUF_INFO_S *pStreamBufInfo);
//ERRORTYPE AW_MPI_VENC_SetRcPriority(VENC_CHN VeChn, VENC_RC_PRIORITY_E enRcPriority);
//ERRORTYPE AW_MPI_VENC_GetRcPriority(VENC_CHN VeChn, VENC_RC_PRIORITY_E *penRcPriority);
//ERRORTYPE AW_MPI_VENC_SetH265SliceSplit(VENC_CHN VeChn, const VENC_PARAM_H265_SLICE_SPLIT_S *pSliceSplit);
//ERRORTYPE AW_MPI_VENC_GetH265SliceSplit(VENC_CHN VeChn, VENC_PARAM_H265_SLICE_SPLIT_S *pSliceSplit);
//ERRORTYPE AW_MPI_VENC_SetH265PredUnit(VENC_CHN VeChn, const VENC_PARAM_H265_PU_S *pPredUnit);
//ERRORTYPE AW_MPI_VENC_GetH265PredUnit(VENC_CHN VeChn, VENC_PARAM_H265_PU_S *pPredUnit);
//ERRORTYPE AW_MPI_VENC_SetH265Trans(VENC_CHN VeChn, const VENC_PARAM_H265_TRANS_S *pH265Trans);
//ERRORTYPE AW_MPI_VENC_GetH265Trans(VENC_CHN VeChn, VENC_PARAM_H265_TRANS_S *pH265Trans);
//ERRORTYPE AW_MPI_VENC_SetH265Entropy(VENC_CHN VeChn, const VENC_PARAM_H265_ENTROPY_S *pH265Entropy);
//ERRORTYPE AW_MPI_VENC_GetH265Entropy(VENC_CHN VeChn, VENC_PARAM_H265_ENTROPY_S *pH265Entropy);
//ERRORTYPE AW_MPI_VENC_SetH265Dblk(VENC_CHN VeChn, const VENC_PARAM_H265_DBLK_S *pH265Dblk);
//ERRORTYPE AW_MPI_VENC_GetH265Dblk(VENC_CHN VeChn, VENC_PARAM_H265_DBLK_S *pH265Dblk);
//ERRORTYPE AW_MPI_VENC_SetH265Sao(VENC_CHN VeChn, const VENC_PARAM_H265_SAO_S *pH265Sao);
//ERRORTYPE AW_MPI_VENC_GetH265Sao(VENC_CHN VeChn, VENC_PARAM_H265_SAO_S *pH265Sao);
//ERRORTYPE AW_MPI_VENC_SetFrameLostStrategy(VENC_CHN VeChn, const VENC_PARAM_FRAMELOST_S *pFrmLostParam);
//ERRORTYPE AW_MPI_VENC_GetFrameLostStrategy(VENC_CHN VeChn, VENC_PARAM_FRAMELOST_S *pFrmLostParam);
ERRORTYPE AW_MPI_VENC_SetSuperFrameCfg(VENC_CHN VeChn, const VENC_SUPERFRAME_CFG_S *pSuperFrmParam);
ERRORTYPE AW_MPI_VENC_GetSuperFrameCfg(VENC_CHN VeChn,VENC_SUPERFRAME_CFG_S *pSuperFrmParam);
ERRORTYPE AW_MPI_VENC_SetIntraRefresh(VENC_CHN VeChn, VENC_PARAM_INTRA_REFRESH_S *pIntraRefresh);
ERRORTYPE AW_MPI_VENC_GetIntraRefresh(VENC_CHN VeChn, VENC_PARAM_INTRA_REFRESH_S *pIntraRefresh);
ERRORTYPE AW_MPI_VENC_SetSmartP(VENC_CHN VeChn, VencSmartFun *pSmartPParam);
ERRORTYPE AW_MPI_VENC_GetSmartP(VENC_CHN VeChn, VencSmartFun *pSmartPParam);
/**
* for h265
*/
ERRORTYPE AW_MPI_VENC_SetBrightness(VENC_CHN VeChn, VencBrightnessS *pBrightness);
ERRORTYPE AW_MPI_VENC_GetBrightness(VENC_CHN VeChn, VencBrightnessS *pBrightness);
/**
* In QPMAP mode, please use the Venc Lib interface directly.
* The mpi interface is no longer supported.
*/
// ERRORTYPE AW_MPI_VENC_SetQPMAP(VENC_CHN VeChn, const VencMBModeCtrl *pQPMAP);
/**
* set buffer before encode one frame.
* after encode, buffer will be filled with MB info.
* VencMBInfo->p_para need malloc by user.
*/
// ERRORTYPE AW_MPI_VENC_SetQPMAPMBInfoOutput(VENC_CHN VeChn, const VencMBInfo *pQpMapMBInfo);
/**
* after encode, get whole frame MB info
*/
// ERRORTYPE AW_MPI_VENC_GetQPMAPMBSumInfoOutput(VENC_CHN VeChn, VencMBSumInfo *pQpMapMBSumInfo);
ERRORTYPE AW_MPI_VENC_SetVEFreq(VENC_CHN VeChn, int nFreq); //nFreq: MHz
ERRORTYPE AW_MPI_VENC_Set2DFilter(VENC_CHN VeChn, const s2DfilterParam *p2DfilterParam);
ERRORTYPE AW_MPI_VENC_Get2DFilter(VENC_CHN VeChn, s2DfilterParam *p2DfilterParam);
ERRORTYPE AW_MPI_VENC_Set3DFilter(VENC_CHN VeChn, const s3DfilterParam *p3DfilterParam);
ERRORTYPE AW_MPI_VENC_Get3DFilter(VENC_CHN VeChn, s3DfilterParam *p3DfilterParam);
ERRORTYPE AW_MPI_VENC_GetCacheState(VENC_CHN VeChn, CacheState *pCacheState);
ERRORTYPE AW_MPI_VENC_SetRefParam(VENC_CHN VeChn, const VENC_PARAM_REF_S *pstRefParam);
ERRORTYPE AW_MPI_VENC_GetRefParam(VENC_CHN VeChn, VENC_PARAM_REF_S *pstRefParam);
ERRORTYPE AW_MPI_VENC_SetHorizonFlip(VENC_CHN VeChn, BOOL bHorizonFlipFlag);
ERRORTYPE AW_MPI_VENC_GetHorizonFlip(VENC_CHN VeChn, BOOL *bpHorizonFlipFlag);
ERRORTYPE AW_MPI_VENC_SetAdaptiveIntraInP(VENC_CHN VeChn, BOOL bAdaptiveIntraInPFlag);
ERRORTYPE AW_MPI_VENC_SetH264SVCSkip(VENC_CHN VeChn, VencH264SVCSkip *pSVCSkip);
ERRORTYPE AW_MPI_VENC_EnableNullSkip(VENC_CHN VeChn, BOOL bEnable);
ERRORTYPE AW_MPI_VENC_EnablePSkip(VENC_CHN VeChn, BOOL bEnable);
/**
* forbid mpi_venc to discard frame when encoding fail.
*/
ERRORTYPE AW_MPI_VENC_ForbidDiscardingFrame(VENC_CHN VeChn, BOOL bForbid);
ERRORTYPE AW_MPI_VENC_SetMotionSearchParam(VENC_CHN VeChn, const VencMotionSearchParam *pMotionParam);
ERRORTYPE AW_MPI_VENC_GetMotionSearchParam(VENC_CHN VeChn, VencMotionSearchParam *pMotionParam);
ERRORTYPE AW_MPI_VENC_GetMotionSearchResult(VENC_CHN VeChn, VencMotionSearchResult *pMotionResult);
/**
* during encoding, command encoder to save bs file.
*/
ERRORTYPE AW_MPI_VENC_SaveBsFile(VENC_CHN VeChn, VencSaveBSFile *pSaveParam);
/**
* open ve proc info to catch param.
*/
ERRORTYPE AW_MPI_VENC_SetProcSet(VENC_CHN VeChn, VeProcSet *pVeProcSet);
//ERRORTYPE AW_MPI_VENC_setOsdMaskRegions(VENC_CHN VeChn, VENC_OVERLAY_INFO *pOsdMaskRegion);
//ERRORTYPE AW_MPI_VENC_removeOsdMaskRegions(VENC_CHN VeChn);
/**
* set Venc component id
*/
//ERRORTYPE AW_MPI_VENC_SetVencId(VENC_CHN VeChn, int VencId);
//ERRORTYPE AW_MPI_VENC_GetVe2IspParam(VENC_CHN VeChn, VencVe2IspParam *pParam);
//ERRORTYPE AW_MPI_VENC_SetIsp2VeParam(VENC_CHN VeChn, VencIspMotionParam *pParam);
ERRORTYPE AW_MPI_VENC_SetWbYuv(VENC_CHN VeChn, sWbYuvParam *pParam);
ERRORTYPE AW_MPI_VENC_GetWbYuv(VENC_CHN VeChn, VencThumbInfo *pParam);
ERRORTYPE AW_MPI_VENC_SetRegionD3DParam(VENC_CHN VeChn, const VencRegionD3DParam *pRegionD3DParam);
ERRORTYPE AW_MPI_VENC_GetRegionD3DParam(VENC_CHN VeChn, VencRegionD3DParam *pRegionD3DParam);
ERRORTYPE AW_MPI_VENC_GetRegionD3DResult(VENC_CHN VeChn, VencRegionD3DResult *pRegionD3DResult);
ERRORTYPE AW_MPI_VENC_SetChromaQPOffset(VENC_CHN VeChn, int nChromaQpOffset);
ERRORTYPE AW_MPI_VENC_SetH264ConstraintFlag(VENC_CHN VeChn, VencH264ConstraintFlag *pConstraintFlag);
ERRORTYPE AW_MPI_VENC_SetVe2IspD2DLimit(VENC_CHN VeChn, VencVe2IspD2DLimit *pD2DLimit);
ERRORTYPE AW_MPI_VENC_EnableSmallSearchRange(VENC_CHN VeChn, BOOL bEnable);
ERRORTYPE AW_MPI_VENC_SetRotVe2Isp(VENC_CHN VeChn, VencRotVe2Isp *pRotVe2Isp);
ERRORTYPE AW_MPI_VENC_SetForceConfWin(VENC_CHN VeChn, VencForceConfWin *pConfWin);
ERRORTYPE AW_MPI_VENC_GetMBSuminfo(VENC_CHN VeChn, VencMBSumInfo *pMbSumInfo);
ERRORTYPE AW_MPI_VENC_GetInsertDataBufStatus(VENC_CHN VeChn, VENC_BUF_STATUS *pBufStatus);
ERRORTYPE AW_MPI_VENC_SetInsertData(VENC_CHN VeChn, VencInsertData *pInsertData);
ERRORTYPE AW_MPI_VENC_SetEncAndDecCase(VENC_CHN VeChn, BOOL bEnable);
ERRORTYPE AW_MPI_VENC_SetLensMovingMaxQp(VENC_CHN VeChn, int nLensMovingMaxQp);
#ifdef __cplusplus
}
#endif
#endif /* __IPCLINUX_MPI_VENC_H__ */