1 /* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef __MPI_AUDIO_H__ 16 #define __MPI_AUDIO_H__ 17 18 #include "hi_type.h" 19 #include "hi_common.h" 20 #include "hi_comm_aio.h" 21 #include "hi_comm_aenc.h" 22 #include "hi_comm_adec.h" 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" 27 { 28 #endif 29 #endif /* __cplusplus */ 30 31 #define AENC_ADAPT_MAGIC 0Xfcfcfcfc 32 33 /* Audio function api. */ 34 HI_S32 HI_MPI_AUDIO_SetModParam(const AUDIO_MOD_PARAM_S *pstModParam); 35 HI_S32 HI_MPI_AUDIO_GetModParam(AUDIO_MOD_PARAM_S *pstModParam); 36 HI_S32 HI_MPI_AUDIO_RegisterVQEModule(const AUDIO_VQE_REGISTER_S *pstVqeRegister); 37 38 /* AI function api. */ 39 HI_S32 HI_MPI_AI_SetPubAttr(AUDIO_DEV AiDevId, const AIO_ATTR_S *pstAttr); 40 HI_S32 HI_MPI_AI_GetPubAttr(AUDIO_DEV AiDevId, AIO_ATTR_S *pstAttr); 41 42 HI_S32 HI_MPI_AI_Enable(AUDIO_DEV AiDevId); 43 HI_S32 HI_MPI_AI_Disable(AUDIO_DEV AiDevId); 44 45 HI_S32 HI_MPI_AI_EnableChn(AUDIO_DEV AiDevId, AI_CHN AiChn); 46 HI_S32 HI_MPI_AI_DisableChn(AUDIO_DEV AiDevId, AI_CHN AiChn); 47 48 HI_S32 HI_MPI_AI_GetFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, 49 AUDIO_FRAME_S *pstFrm, AEC_FRAME_S *pstAecFrm, HI_S32 s32MilliSec); 50 HI_S32 HI_MPI_AI_ReleaseFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, 51 const AUDIO_FRAME_S *pstFrm, const AEC_FRAME_S *pstAecFrm); 52 53 HI_S32 HI_MPI_AI_SetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_CHN_PARAM_S *pstChnParam); 54 HI_S32 HI_MPI_AI_GetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_CHN_PARAM_S *pstChnParam); 55 56 HI_S32 HI_MPI_AI_SetRecordVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_RECORDVQE_CONFIG_S *pstVqeConfig); 57 HI_S32 HI_MPI_AI_GetRecordVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_RECORDVQE_CONFIG_S *pstVqeConfig); 58 59 HI_S32 HI_MPI_AI_EnableVqe(AUDIO_DEV AiDevId, AI_CHN AiChn); 60 HI_S32 HI_MPI_AI_DisableVqe(AUDIO_DEV AiDevId, AI_CHN AiChn); 61 62 HI_S32 HI_MPI_AI_EnableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_SAMPLE_RATE_E enOutSampleRate); 63 HI_S32 HI_MPI_AI_DisableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn); 64 65 HI_S32 HI_MPI_AI_SetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E enTrackMode); 66 HI_S32 HI_MPI_AI_GetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E *penTrackMode); 67 HI_S32 HI_MPI_AI_SaveFile(AUDIO_DEV AiDevId, AI_CHN AiChn, const AUDIO_SAVE_FILE_INFO_S *pstSaveFileInfo); 68 HI_S32 HI_MPI_AI_QueryFileStatus(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_FILE_STATUS_S *pstFileStatus); 69 70 HI_S32 HI_MPI_AI_ClrPubAttr(AUDIO_DEV AiDevId); 71 72 HI_S32 HI_MPI_AI_GetFd(AUDIO_DEV AiDevId, AI_CHN AiChn); 73 74 HI_S32 HI_MPI_AI_EnableAecRefFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_DEV AoDevId, AO_CHN AoChn); 75 HI_S32 HI_MPI_AI_DisableAecRefFrame(AUDIO_DEV AiDevId, AI_CHN AiChn); 76 77 HI_S32 HI_MPI_AI_SetTalkVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_DEV AoDevId, AO_CHN AoChn, 78 const AI_TALKVQE_CONFIG_S *pstVqeConfig); 79 HI_S32 HI_MPI_AI_GetTalkVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_TALKVQE_CONFIG_S *pstVqeConfig); 80 81 HI_S32 HI_MPI_AI_SetTalkVqeV2Attr(AUDIO_DEV AiDevId, AI_CHN AiChn, 82 AUDIO_DEV AoDevId, AO_CHN AoChn, const AI_TALKVQEV2_CONFIG_S *pstVqeConfig); 83 HI_S32 HI_MPI_AI_GetTalkVqeV2Attr(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_TALKVQEV2_CONFIG_S *pstVqeConfig); 84 85 HI_S32 HI_MPI_AI_SetChnAttr(AUDIO_DEV AudioDevId, AI_CHN AiChn, const AI_CHN_ATTR_S *pstAttr); 86 HI_S32 HI_MPI_AI_GetChnAttr(AUDIO_DEV AudioDevId, AI_CHN AiChn, AI_CHN_ATTR_S *pstAttr); 87 88 /* AO function api. */ 89 HI_S32 HI_MPI_AO_SetPubAttr(AUDIO_DEV AoDevId, const AIO_ATTR_S *pstAttr); 90 HI_S32 HI_MPI_AO_GetPubAttr(AUDIO_DEV AoDevId, AIO_ATTR_S *pstAttr); 91 92 HI_S32 HI_MPI_AO_Enable(AUDIO_DEV AoDevId); 93 HI_S32 HI_MPI_AO_Disable(AUDIO_DEV AoDevId); 94 95 HI_S32 HI_MPI_AO_EnableChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 96 HI_S32 HI_MPI_AO_DisableChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 97 98 HI_S32 HI_MPI_AO_SendFrame(AUDIO_DEV AoDevId, AO_CHN AoChn, const AUDIO_FRAME_S *pstData, HI_S32 s32MilliSec); 99 100 HI_S32 HI_MPI_AO_EnableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn, AUDIO_SAMPLE_RATE_E enInSampleRate); 101 HI_S32 HI_MPI_AO_DisableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn); 102 103 HI_S32 HI_MPI_AO_ClearChnBuf(AUDIO_DEV AoDevId, AO_CHN AoChn); 104 HI_S32 HI_MPI_AO_QueryChnStat(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_CHN_STATE_S *pstStatus); 105 106 HI_S32 HI_MPI_AO_GetChnDelay(AUDIO_DEV AudioDevId, AO_CHN AoChn, HI_U32 *pu32MilliSec); 107 108 HI_S32 HI_MPI_AO_PauseChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 109 HI_S32 HI_MPI_AO_ResumeChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 110 111 HI_S32 HI_MPI_AO_SetVolume(AUDIO_DEV AoDevId, HI_S32 s32VolumeDb); 112 HI_S32 HI_MPI_AO_GetVolume(AUDIO_DEV AoDevId, HI_S32 *ps32VolumeDb); 113 114 HI_S32 HI_MPI_AO_SetMute(AUDIO_DEV AoDevId, HI_BOOL bEnable, const AUDIO_FADE_S *pstFade); 115 HI_S32 HI_MPI_AO_GetMute(AUDIO_DEV AoDevId, HI_BOOL *pbEnable, AUDIO_FADE_S *pstFade); 116 117 HI_S32 HI_MPI_AO_SetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E enTrackMode); 118 HI_S32 HI_MPI_AO_GetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E *penTrackMode); 119 120 HI_S32 HI_MPI_AO_GetFd(AUDIO_DEV AoDevId, AO_CHN AoChn); 121 122 HI_S32 HI_MPI_AO_ClrPubAttr(AUDIO_DEV AoDevId); 123 124 HI_S32 HI_MPI_AO_SetVqeAttr(AUDIO_DEV AoDevId, AO_CHN AoChn, const AO_VQE_CONFIG_S *pstVqeConfig); 125 HI_S32 HI_MPI_AO_GetVqeAttr(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_VQE_CONFIG_S *pstVqeConfig); 126 127 HI_S32 HI_MPI_AO_EnableVqe(AUDIO_DEV AoDevId, AO_CHN AoChn); 128 HI_S32 HI_MPI_AO_DisableVqe(AUDIO_DEV AoDevId, AO_CHN AoChn); 129 130 /* AENC function api. */ 131 HI_S32 HI_MPI_AENC_CreateChn(AENC_CHN AeChn, const AENC_CHN_ATTR_S *pstAttr); 132 HI_S32 HI_MPI_AENC_DestroyChn(AENC_CHN AeChn); 133 134 HI_S32 HI_MPI_AENC_SendFrame(AENC_CHN AeChn, const AUDIO_FRAME_S *pstFrm, const AEC_FRAME_S *pstAecFrm); 135 136 HI_S32 HI_MPI_AENC_GetStream(AENC_CHN AeChn, AUDIO_STREAM_S *pstStream, HI_S32 s32MilliSec); 137 HI_S32 HI_MPI_AENC_ReleaseStream(AENC_CHN AeChn, const AUDIO_STREAM_S *pstStream); 138 139 HI_S32 HI_MPI_AENC_GetFd(AENC_CHN AeChn); 140 141 HI_S32 HI_MPI_AENC_RegisterEncoder(HI_S32 *ps32Handle, const AENC_ENCODER_S *pstEncoder); 142 HI_S32 HI_MPI_AENC_UnRegisterEncoder(HI_S32 s32Handle); 143 144 HI_S32 HI_MPI_AENC_GetStreamBufInfo(AENC_CHN AeChn, HI_U64 *pu64PhysAddr, HI_U32 *pu32Size); 145 146 HI_S32 HI_MPI_AENC_SetMute(AENC_CHN AeChn, HI_BOOL bEnable); 147 HI_S32 HI_MPI_AENC_GetMute(AENC_CHN AeChn, HI_BOOL *pbEnable); 148 149 HI_S32 HI_MPI_AENC_ClrChnBuf(AENC_CHN AeChn); 150 151 /* ADEC function api. */ 152 HI_S32 HI_MPI_ADEC_CreateChn(ADEC_CHN AdChn, const ADEC_CHN_ATTR_S *pstAttr); 153 HI_S32 HI_MPI_ADEC_DestroyChn(ADEC_CHN AdChn); 154 155 HI_S32 HI_MPI_ADEC_SendStream(ADEC_CHN AdChn, const AUDIO_STREAM_S *pstStream, HI_BOOL bBlock); 156 157 HI_S32 HI_MPI_ADEC_ClearChnBuf(ADEC_CHN AdChn); 158 159 HI_S32 HI_MPI_ADEC_RegisterDecoder(HI_S32 *ps32Handle, const ADEC_DECODER_S *pstDecoder); 160 HI_S32 HI_MPI_ADEC_UnRegisterDecoder(HI_S32 s32Handle); 161 162 HI_S32 HI_MPI_ADEC_GetFrame(ADEC_CHN AdChn, AUDIO_FRAME_INFO_S *pstFrmInfo, HI_BOOL bBlock); 163 HI_S32 HI_MPI_ADEC_ReleaseFrame(ADEC_CHN AdChn, const AUDIO_FRAME_INFO_S *pstFrmInfo); 164 HI_S32 HI_MPI_ADEC_SendEndOfStream(ADEC_CHN AdChn, HI_BOOL bInstant); 165 HI_S32 HI_MPI_ADEC_QueryChnStat(ADEC_CHN AdChn, ADEC_CHN_STATE_S *pstBufferStatus); 166 167 HI_S32 HI_MPI_ADEC_GetFrameInfo(ADEC_CHN AdChn, HI_VOID *pDecodeFrameInfo); 168 169 #ifdef __cplusplus 170 #if __cplusplus 171 } 172 #endif 173 #endif /* __cplusplus */ 174 175 #endif /* __MPI_AI_H__ */ 176 177