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