📄 mp4encdrv.h
字号:
#ifndef __MP4ENCAPI_H__#define __MP4ENCAPI_H__#ifdef __cplusplusextern "C" {#endif/*------------------------------------------------------------------------------ 1. Type definition for encoder instance------------------------------------------------------------------------------*/typedef unsigned char u8; /* Unsigned 8 bit char */typedef signed char i8; /* Signed 8 bit char, 2's complement */typedef unsigned short u16; /* Unsigned 16 bit short */typedef signed short i16; /* Signed 16 short, 2's complement */typedef unsigned int u32; /* Unsigned 32 bit integer */typedef signed int i32; /* Signed 32 bit integer, 2's complement */typedef void *MP4EncInst;/*------------------------------------------------------------------------------ 2. Enumerations for API parameters------------------------------------------------------------------------------*//* Function return values */typedef enum{ ENC_OK = 0, ENC_VOP_READY = 1, ENC_GOV_READY = 2, ENC_VOP_READY_VBV_FAIL = 3, ENC_ERROR = -1, ENC_NULL_ARGUMENT = -2, ENC_INVALID_ARGUMENT = -3, ENC_MEMORY_ERROR = -4, ENC_EWL_ERROR = -5, ENC_EWL_MEMORY_ERROR = -6, ENC_INVALID_STATUS = -7, ENC_OUTPUT_BUFFER_OVERFLOW = -8, ENC_HW_ERROR = -9, ENC_HW_TIMEOUT = -10, ENC_SYSTEM_ERROR = -11, ENC_INSTANCE_ERROR = -12}MP4EncRet;/* Stream type for initialization */typedef enum{ MPEG4_PLAIN_STRM = 0, MPEG4_VP_STRM = 1, MPEG4_VP_DP_STRM = 2, MPEG4_VP_DP_RVLC_STRM = 3, MPEG4_SVH_STRM = 4, H263_STRM = 5}MP4EncStrmType;/* Profile and level for initialization */typedef enum{ MPEG4_SIMPLE_PROFILE_LEVEL_0 = 8, MPEG4_SIMPLE_PROFILE_LEVEL_0B = 9, MPEG4_SIMPLE_PROFILE_LEVEL_1 = 1, MPEG4_SIMPLE_PROFILE_LEVEL_2 = 2, MPEG4_SIMPLE_PROFILE_LEVEL_3 = 3, MPEG4_ADV_SIMPLE_PROFILE_LEVEL_3 = 243, MPEG4_ADV_SIMPLE_PROFILE_LEVEL_4 = 244, MPEG4_ADV_SIMPLE_PROFILE_LEVEL_5 = 245, H263_PROFILE_0_LEVEL_10 = 1001, H263_PROFILE_0_LEVEL_20 = 1002, H263_PROFILE_0_LEVEL_30 = 1003, H263_PROFILE_0_LEVEL_40 = 1004, H263_PROFILE_0_LEVEL_50 = 1005, H263_PROFILE_0_LEVEL_60 = 1006, H263_PROFILE_0_LEVEL_70 = 1007}MP4EncProfileAndLevel;/* User data type */typedef enum{ MPEG4_VOS_USER_DATA, MPEG4_VO_USER_DATA, MPEG4_VOL_USER_DATA, MPEG4_GOV_USER_DATA}MP4EncUsrDataType;/* VOP type for encoding */typedef enum{ INTRA_VOP = 0, PREDICTED_VOP = 1, NOTCODED_VOP /* Used just as a return type */} MP4EncVopType;/*------------------------------------------------------------------------------ 3. Structures for API function parameters------------------------------------------------------------------------------*//* Configuration info for initialization */typedef struct{ MP4EncStrmType strmType; MP4EncProfileAndLevel profileAndLevel; i32 width; i32 height; i32 frmRateNum; i32 frmRateDenom;}MP4EncCfg;/* Coding control parameters */typedef struct{ i32 insHEC; i32 insGOB; i32 insGOV; i32 vpSize;}MP4EncCodingCtrl;/* Rate control parameters */typedef struct{ i32 vopRc; i32 mbRc; i32 vopSkip; i32 qpHdr; i32 qpHdrMin; i32 qpHdrMax; i32 bitPerSecond; i32 vbv; i32 cir;}MP4EncRateCtrl;/* Encoder input structure */typedef struct{ u32 busLuma; u32 busChromaU; u32 busChromaV; u32 *pOutBuf; u32 outBufBusAddress; i32 outBufSize; MP4EncVopType vopType; u32 timeIncr; /* Table for video packet sizes, length must be 1024*sizeof(i32) bytes. * Encoder stores the size of each video packet (bytes) in encoded VOP * in the table. Zero value is written after last video packet. * Only 1023 first video packet sizes are stored in the table. */ i32 *pVpSizes;}MP4EncIn;/* Time code structure for encoder output */typedef struct{ i32 hours; i32 minutes; i32 seconds; i32 timeIncr; i32 timeRes;}TimeCode;/* Encoder output structure */typedef struct{ TimeCode timeCode; MP4EncVopType vopType; i32 strmSize;}MP4EncOut;/* Input cropping and camera stabilization parameters */typedef struct{ i32 origWidth; i32 origHeight; i32 xOffset; i32 yOffset; i32 stabArea;}MP4EncCropCfg;/* Cropping information */typedef struct{ i32 xOffset; i32 yOffset;}MP4EncFrmPos;/* Version information */typedef struct{ i32 major; /* Encoder API major version */ i32 minor; /* Encoder API minor version */} MP4EncApiVersion;/*------------------------------------------------------------------------------ 4. Encoder API function prototypes------------------------------------------------------------------------------*//* Version information */typedef MP4EncApiVersion (*MP4EncGetVersionProc)(void);/* Initialization & release */typedef MP4EncRet (*MP4EncInitProc)(MP4EncCfg * pEncCfg, MP4EncInst * instAddr);typedef MP4EncRet (*MP4EncReleaseProc)(MP4EncInst inst);/* Encoder configuration */typedef MP4EncRet (*MP4EncSetCodingCtrlProc)(MP4EncInst inst, MP4EncCodingCtrl * pCodeParams);typedef MP4EncRet (*MP4EncGetCodingCtrlProc)(MP4EncInst inst, MP4EncCodingCtrl * pCodeParams);typedef MP4EncRet (*MP4EncSetRateCtrlProc)(MP4EncInst inst, MP4EncRateCtrl * pRateCtrl);typedef MP4EncRet (*MP4EncGetRateCtrlProc)(MP4EncInst inst, MP4EncRateCtrl * pRateCtrl);typedef MP4EncRet (*MP4EncSetUsrDataProc)(MP4EncInst inst, const u8 * pBuf, u32 length, MP4EncUsrDataType type);/* Stream generation */typedef MP4EncRet (*MP4EncStrmStartProc)(MP4EncInst inst, MP4EncIn * pEncIn, MP4EncOut * pEncOut);typedef MP4EncRet (*MP4EncStrmEncodeProc)(MP4EncInst inst, MP4EncIn * pEncIn, MP4EncOut * pEncOut);typedef MP4EncRet (*MP4EncStrmEndProc)(MP4EncInst inst, MP4EncIn * pEncIn, MP4EncOut * pEncOut);/* Pre processing: filter */typedef MP4EncRet (*MP4EncSetSmoothProc)(MP4EncInst inst, u32 status);typedef MP4EncRet (*MP4EncGetSmoothProc)(MP4EncInst inst, u32 * status);/* Pre processing: camera stabilization */typedef MP4EncRet (*MP4EncSetCropProc)(MP4EncInst inst, MP4EncCropCfg * pCropCfg);typedef MP4EncRet (*MP4EncGetCropProc)(MP4EncInst inst, MP4EncCropCfg * pCropCfg);typedef MP4EncRet (*MP4EncGetLastFrmPosProc)(MP4EncInst inst, MP4EncFrmPos * pFrmPos);
typedef void* (*MP4EncMallocLinearProc)( u32 size , u32* phys);
typedef BOOL (*MP4EncFreeLinearProc)( void*addr);
#ifdef __cplusplus }#endif#endif /*__MP4ENCAPI_H__*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -