Files
2026-08-24 10:03:24 +08:00

50 lines
2.5 KiB
C

#ifndef AMLOGIC_ENCODER_API_
#define AMLOGIC_ENCODER_API_
#include "AML_HWEncoder.h"
#include "enc_define.h"
typedef void* (*AMVencHWFunc_Init)(int fd, amvenc_initpara_t* init_para);
typedef AMVEnc_Status (*AMVencHWFunc_InitFrame)(void *dev, ulong *yuv, AMVEncBufferType type, AMVEncFrameFmt fmt, bool IDRframe);
typedef AMVEnc_Status (*AMVencHWFunc_EncodeSPS_PPS)(void *dev, unsigned char* outptr, int* datalen);
typedef AMVEnc_Status (*AMVencHWFunc_EncodeSlice)(void *dev, unsigned char* outptr, int* datalen);
typedef AMVEnc_Status (*AMVencHWFunc_CommitEncode)(void *dev, bool IDR);
typedef void (*AMVencHWFunc_Release)(void *dev);
typedef struct tagAMVencHWFuncPtr {
AMVencHWFunc_Init Initialize;
AMVencHWFunc_InitFrame InitFrame;
AMVencHWFunc_EncodeSPS_PPS EncodeSPS_PPS;
AMVencHWFunc_EncodeSlice EncodeSlice;
AMVencHWFunc_CommitEncode Commit;
AMVencHWFunc_Release Release;
} AMVencHWFuncPtr;
typedef void* (*AMVencRCFunc_Init)(amvenc_initpara_t* init_para);
typedef AMVEnc_Status (*AMVencRCFunc_PreControl)(void *dev, void *rc, int frameInc, bool force_IDR);
typedef AMVEnc_Status (*AMVencRCFunc_PostControl)(void *dev, void *rc, bool IDR, int* skip_num, int numFrameBits);
typedef AMVEnc_Status (*AMVencFunc_InitFrameQP)(void *dev, void *rc, bool IDR, int bitrate, float frame_rate);
typedef void (*AMVencRCFunc_Release)(void *rc);
typedef struct tagAMVencRCFuncPtr {
AMVencRCFunc_Init Initialize;
AMVencRCFunc_PreControl PreControl;
AMVencRCFunc_PostControl PostControl;
AMVencFunc_InitFrameQP InitFrameQP;
AMVencRCFunc_Release Release;
} AMVencRCFuncPtr;
extern AMVEnc_Status AMInitRateControlModule(amvenc_hw_t* hw_info);
extern AMVEnc_Status AMPreRateControl(amvenc_hw_t* hw_info, int frameInc, bool force_IDR);
extern AMVEnc_Status AMPostRateControl(amvenc_hw_t* hw_info, bool IDR, int* skip_num, int numFrameBits);
extern AMVEnc_Status AMRCInitFrameQP(amvenc_hw_t* hw_info, bool IDR, int bitrate, float frame_rate);
extern void AMCleanupRateControlModule(amvenc_hw_t* hw_info);
extern AMVEnc_Status InitAMVEncode(amvenc_hw_t* hw_info, int force_mode);
extern AMVEnc_Status AMVEncodeInitFrame(amvenc_hw_t* hw_info, ulong *yuv, AMVEncBufferType type, AMVEncFrameFmt fmt, bool IDRframe);
extern AMVEnc_Status AMVEncodeSPS_PPS(amvenc_hw_t* hw_info, unsigned char* outptr, int* datalen);
extern AMVEnc_Status AMVEncodeSlice(amvenc_hw_t* hw_info, unsigned char* outptr, int* datalen);
extern AMVEnc_Status AMVEncodeCommit(amvenc_hw_t* hw_info, bool IDR);
extern void UnInitAMVEncode(amvenc_hw_t* hw_info);
#endif