11bd4fe43Sopenharmony_ci/*
21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License.
51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at
61bd4fe43Sopenharmony_ci *
71bd4fe43Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81bd4fe43Sopenharmony_ci *
91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and
131bd4fe43Sopenharmony_ci * limitations under the License.
141bd4fe43Sopenharmony_ci */
151bd4fe43Sopenharmony_ci
161bd4fe43Sopenharmony_ci#ifndef  __HI_COMM_AENC_H__
171bd4fe43Sopenharmony_ci#define  __HI_COMM_AENC_H__
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include "hi_type.h"
201bd4fe43Sopenharmony_ci#include "hi_common.h"
211bd4fe43Sopenharmony_ci#include "hi_comm_aio.h"
221bd4fe43Sopenharmony_ci
231bd4fe43Sopenharmony_ci
241bd4fe43Sopenharmony_ci#ifdef __cplusplus
251bd4fe43Sopenharmony_ci#if __cplusplus
261bd4fe43Sopenharmony_ciextern "C" {
271bd4fe43Sopenharmony_ci#endif
281bd4fe43Sopenharmony_ci#endif /* End of #ifdef __cplusplus */
291bd4fe43Sopenharmony_ci
301bd4fe43Sopenharmony_citypedef struct hiAENC_ATTR_G711_S {
311bd4fe43Sopenharmony_ci    HI_U32 resv;            /* reserve item */
321bd4fe43Sopenharmony_ci} AENC_ATTR_G711_S;
331bd4fe43Sopenharmony_ci
341bd4fe43Sopenharmony_citypedef struct hiAENC_ATTR_G726_S {
351bd4fe43Sopenharmony_ci    G726_BPS_E enG726bps;
361bd4fe43Sopenharmony_ci} AENC_ATTR_G726_S;
371bd4fe43Sopenharmony_ci
381bd4fe43Sopenharmony_citypedef struct hiAENC_ATTR_ADPCM_S {
391bd4fe43Sopenharmony_ci    ADPCM_TYPE_E enADPCMType;
401bd4fe43Sopenharmony_ci} AENC_ATTR_ADPCM_S;
411bd4fe43Sopenharmony_ci
421bd4fe43Sopenharmony_citypedef struct hiAENC_ATTR_LPCM_S {
431bd4fe43Sopenharmony_ci    HI_U32 resv;            /* reserve item */
441bd4fe43Sopenharmony_ci} AENC_ATTR_LPCM_S;
451bd4fe43Sopenharmony_ci
461bd4fe43Sopenharmony_citypedef struct hiAENC_ENCODER_S {
471bd4fe43Sopenharmony_ci    PAYLOAD_TYPE_E  enType;
481bd4fe43Sopenharmony_ci    HI_U32          u32MaxFrmLen;
491bd4fe43Sopenharmony_ci    HI_CHAR         aszName[17];    /* encoder type, be used to print proc information, 17: length */
501bd4fe43Sopenharmony_ci    /* pEncoder is the handle to control the encoder */
511bd4fe43Sopenharmony_ci    HI_S32          (*pfnOpenEncoder)(HI_VOID *pEncoderAttr, HI_VOID **ppEncoder);
521bd4fe43Sopenharmony_ci    HI_S32          (*pfnEncodeFrm)(HI_VOID *pEncoder, const AUDIO_FRAME_S *pstData,
531bd4fe43Sopenharmony_ci                        HI_U8 *pu8Outbuf, HI_U32 *pu32OutLen);
541bd4fe43Sopenharmony_ci    HI_S32          (*pfnCloseEncoder)(HI_VOID *pEncoder);
551bd4fe43Sopenharmony_ci} AENC_ENCODER_S;
561bd4fe43Sopenharmony_ci
571bd4fe43Sopenharmony_citypedef struct hiAENC_CHN_ATTR_S {
581bd4fe43Sopenharmony_ci    PAYLOAD_TYPE_E      enType;
591bd4fe43Sopenharmony_ci    HI_U32              u32PtNumPerFrm;
601bd4fe43Sopenharmony_ci    HI_U32              u32BufSize;      /* buf size [2~MAX_AUDIO_FRAME_NUM] */
611bd4fe43Sopenharmony_ci    HI_VOID ATTRIBUTE   *pValue;  /* point to attribute of definite audio encoder */
621bd4fe43Sopenharmony_ci} AENC_CHN_ATTR_S;
631bd4fe43Sopenharmony_ci
641bd4fe43Sopenharmony_citypedef enum hiEN_AENC_ERR_CODE_E {
651bd4fe43Sopenharmony_ci    AENC_ERR_ENCODER_ERR     = 64,
661bd4fe43Sopenharmony_ci    AENC_ERR_VQE_ERR         = 65,
671bd4fe43Sopenharmony_ci} EN_AENC_ERR_CODE_E;
681bd4fe43Sopenharmony_ci
691bd4fe43Sopenharmony_ci
701bd4fe43Sopenharmony_ci/* invalid device ID */
711bd4fe43Sopenharmony_ci#define HI_ERR_AENC_INVALID_DEVID     HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID)
721bd4fe43Sopenharmony_ci/* invalid channel ID */
731bd4fe43Sopenharmony_ci#define HI_ERR_AENC_INVALID_CHNID     HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
741bd4fe43Sopenharmony_ci/* at lease one parameter is illagal ,eg, an illegal enumeration value  */
751bd4fe43Sopenharmony_ci#define HI_ERR_AENC_ILLEGAL_PARAM     HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
761bd4fe43Sopenharmony_ci/* channel exists */
771bd4fe43Sopenharmony_ci#define HI_ERR_AENC_EXIST             HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_EXIST)
781bd4fe43Sopenharmony_ci/* channel unexists */
791bd4fe43Sopenharmony_ci#define HI_ERR_AENC_UNEXIST           HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
801bd4fe43Sopenharmony_ci/* using a NULL point */
811bd4fe43Sopenharmony_ci#define HI_ERR_AENC_NULL_PTR          HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
821bd4fe43Sopenharmony_ci/* try to enable or initialize system,device or channel, before configing attribute */
831bd4fe43Sopenharmony_ci#define HI_ERR_AENC_NOT_CONFIG        HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_CONFIG)
841bd4fe43Sopenharmony_ci/* operation is not supported by NOW */
851bd4fe43Sopenharmony_ci#define HI_ERR_AENC_NOT_SUPPORT       HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
861bd4fe43Sopenharmony_ci/* operation is not permitted ,eg, try to change static attribute */
871bd4fe43Sopenharmony_ci#define HI_ERR_AENC_NOT_PERM          HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
881bd4fe43Sopenharmony_ci/* failure caused by malloc memory */
891bd4fe43Sopenharmony_ci#define HI_ERR_AENC_NOMEM             HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM)
901bd4fe43Sopenharmony_ci/* failure caused by malloc buffer */
911bd4fe43Sopenharmony_ci#define HI_ERR_AENC_NOBUF             HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
921bd4fe43Sopenharmony_ci/* no data in buffer */
931bd4fe43Sopenharmony_ci#define HI_ERR_AENC_BUF_EMPTY         HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
941bd4fe43Sopenharmony_ci/* no buffer for new data */
951bd4fe43Sopenharmony_ci#define HI_ERR_AENC_BUF_FULL          HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
961bd4fe43Sopenharmony_ci/* system is not ready,had not initialed or loaded */
971bd4fe43Sopenharmony_ci#define HI_ERR_AENC_SYS_NOTREADY      HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
981bd4fe43Sopenharmony_ci/* encoder internal err */
991bd4fe43Sopenharmony_ci#define HI_ERR_AENC_ENCODER_ERR       HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, AENC_ERR_ENCODER_ERR)
1001bd4fe43Sopenharmony_ci/* vqe internal err */
1011bd4fe43Sopenharmony_ci#define HI_ERR_AENC_VQE_ERR       HI_DEF_ERR(HI_ID_AENC, EN_ERR_LEVEL_ERROR, AENC_ERR_VQE_ERR)
1021bd4fe43Sopenharmony_ci
1031bd4fe43Sopenharmony_ci
1041bd4fe43Sopenharmony_ci#ifdef __cplusplus
1051bd4fe43Sopenharmony_ci#if __cplusplus
1061bd4fe43Sopenharmony_ci}
1071bd4fe43Sopenharmony_ci#endif
1081bd4fe43Sopenharmony_ci#endif /* End of #ifdef __cplusplus */
1091bd4fe43Sopenharmony_ci
1101bd4fe43Sopenharmony_ci#endif /* End of #ifndef __HI_COMM_AENC_H__ */
1111bd4fe43Sopenharmony_ci
112