1*4882a593Smuzhiyun /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef INCLUDE_RT_MPI_RK_COMM_AENC_H_ 5*4882a593Smuzhiyun #define INCLUDE_RT_MPI_RK_COMM_AENC_H_ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include "rk_type.h" 8*4882a593Smuzhiyun #include "rk_common.h" 9*4882a593Smuzhiyun #include "rk_comm_aio.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifdef __cplusplus 12*4882a593Smuzhiyun #if __cplusplus 13*4882a593Smuzhiyun extern "C" { 14*4882a593Smuzhiyun #endif 15*4882a593Smuzhiyun #endif /* End of #ifdef __cplusplus */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun typedef struct rkAENC_ATTR_CODEC_S { 18*4882a593Smuzhiyun RK_CODEC_ID_E enType; 19*4882a593Smuzhiyun AUDIO_BIT_WIDTH_E enBitwidth; 20*4882a593Smuzhiyun RK_U32 u32Channels; 21*4882a593Smuzhiyun RK_U32 u32SampleRate; 22*4882a593Smuzhiyun RK_U32 u32Bitrate; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun RK_U32 u32Resv[4]; /* resv for user */ 25*4882a593Smuzhiyun RK_VOID *pstResv; /* resv for user */ 26*4882a593Smuzhiyun } AENC_ATTR_CODEC_S; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun typedef struct rkAENC_CHN_ATTR_S { 29*4882a593Smuzhiyun RK_CODEC_ID_E enType; /* audio codec id */ 30*4882a593Smuzhiyun RK_U32 u32BufCount; /* encode buffer count */ 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun AENC_ATTR_CODEC_S stCodecAttr; 33*4882a593Smuzhiyun } AENC_CHN_ATTR_S; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun typedef struct rkAENC_ENCODER_S { 36*4882a593Smuzhiyun RK_CODEC_ID_E enType; 37*4882a593Smuzhiyun RK_U32 u32MaxFrmLen; 38*4882a593Smuzhiyun RK_CHAR aszName[17]; 39*4882a593Smuzhiyun RK_S32 (*pfnOpenEncoder)(RK_VOID *pEncoderAttr, RK_VOID **ppEncoder); 40*4882a593Smuzhiyun RK_S32 (*pfnEncodeFrm)(RK_VOID *pEncoder, RK_VOID *pParam); 41*4882a593Smuzhiyun RK_S32 (*pfnCloseEncoder)(RK_VOID *pEncoder); 42*4882a593Smuzhiyun } AENC_ENCODER_S; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun typedef enum rkEN_AENC_ERR_CODE_E { 45*4882a593Smuzhiyun AENC_ERR_ENCODER_ERR = 64, 46*4882a593Smuzhiyun AENC_ERR_VQE_ERR = 65, 47*4882a593Smuzhiyun AENC_ERR_REGISTER_ERR = 66 48*4882a593Smuzhiyun } EN_AENC_ERR_CODE_E; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun /* result of register AENC */ 51*4882a593Smuzhiyun typedef enum rkENC_ENCODER_RESULT { 52*4882a593Smuzhiyun AENC_ENCODER_OK = RK_SUCCESS, 53*4882a593Smuzhiyun AENC_ENCODER_TRY_AGAIN, 54*4882a593Smuzhiyun AENC_ENCODER_ERROR, 55*4882a593Smuzhiyun AENC_ENCODER_EOS, 56*4882a593Smuzhiyun } AENC_ENCODER_RESULT; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* invlalid device ID */ 59*4882a593Smuzhiyun #define RK_ERR_AENC_INVALID_DEVID RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_DEVID) 60*4882a593Smuzhiyun /* invlalid channel ID */ 61*4882a593Smuzhiyun #define RK_ERR_AENC_INVALID_CHNID RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_CHNID) 62*4882a593Smuzhiyun /* at lease one parameter is illagal ,eg, an illegal enumeration value */ 63*4882a593Smuzhiyun #define RK_ERR_AENC_ILLEGAL_PARAM RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM) 64*4882a593Smuzhiyun /* channel exists */ 65*4882a593Smuzhiyun #define RK_ERR_AENC_EXIST RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_EXIST) 66*4882a593Smuzhiyun /* channel unexists */ 67*4882a593Smuzhiyun #define RK_ERR_AENC_UNEXIST RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_UNEXIST) 68*4882a593Smuzhiyun /* using a NULL point */ 69*4882a593Smuzhiyun #define RK_ERR_AENC_NULL_PTR RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR) 70*4882a593Smuzhiyun /* try to enable or initialize system,device or channel, before configing attribute */ 71*4882a593Smuzhiyun #define RK_ERR_AENC_NOT_CONFIG RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_CONFIG) 72*4882a593Smuzhiyun /* operation is not supported by NOW */ 73*4882a593Smuzhiyun #define RK_ERR_AENC_NOT_SUPPORT RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_SUPPORT) 74*4882a593Smuzhiyun /* operation is not permitted ,eg, try to change static attribute */ 75*4882a593Smuzhiyun #define RK_ERR_AENC_NOT_PERM RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM) 76*4882a593Smuzhiyun /* failure caused by malloc memory */ 77*4882a593Smuzhiyun #define RK_ERR_AENC_NOMEM RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_NOMEM) 78*4882a593Smuzhiyun /* failure caused by malloc buffer */ 79*4882a593Smuzhiyun #define RK_ERR_AENC_NOBUF RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_NOBUF) 80*4882a593Smuzhiyun /* no data in buffer */ 81*4882a593Smuzhiyun #define RK_ERR_AENC_BUF_EMPTY RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_EMPTY) 82*4882a593Smuzhiyun /* no buffer for new data */ 83*4882a593Smuzhiyun #define RK_ERR_AENC_BUF_FULL RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_FULL) 84*4882a593Smuzhiyun /* system is not ready,had not initialed or loaded*/ 85*4882a593Smuzhiyun #define RK_ERR_AENC_SYS_NOTREADY RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY) 86*4882a593Smuzhiyun /* encoder internal err */ 87*4882a593Smuzhiyun #define RK_ERR_AENC_ENCODER_ERR RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, AENC_ERR_ENCODER_ERR) 88*4882a593Smuzhiyun /* vqe internal err */ 89*4882a593Smuzhiyun #define RK_ERR_AENC_VQE_ERR RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, AENC_ERR_VQE_ERR) 90*4882a593Smuzhiyun /* register Aenc fail */ 91*4882a593Smuzhiyun #define RK_ERR_AENC_REGISTER_ERR RK_DEF_ERR(RK_ID_AENC, RK_ERR_LEVEL_ERROR, AENC_ERR_REGISTER_ERR) 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun #ifdef __cplusplus 95*4882a593Smuzhiyun #if __cplusplus 96*4882a593Smuzhiyun } 97*4882a593Smuzhiyun #endif 98*4882a593Smuzhiyun #endif /* End of #ifdef __cplusplus */ 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #endif/* End of #ifndef INCLUDE_RT_MPI_RK_COMM_AENC_H_*/ 101