xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_comm_aenc.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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