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#ifndef __MPI_AUDIO_H__ 161bd4fe43Sopenharmony_ci#define __MPI_AUDIO_H__ 171bd4fe43Sopenharmony_ci 181bd4fe43Sopenharmony_ci#include "hi_type.h" 191bd4fe43Sopenharmony_ci#include "hi_common.h" 201bd4fe43Sopenharmony_ci#include "hi_comm_aio.h" 211bd4fe43Sopenharmony_ci#include "hi_comm_aenc.h" 221bd4fe43Sopenharmony_ci#include "hi_comm_adec.h" 231bd4fe43Sopenharmony_ci 241bd4fe43Sopenharmony_ci#ifdef __cplusplus 251bd4fe43Sopenharmony_ci#if __cplusplus 261bd4fe43Sopenharmony_ciextern "C" 271bd4fe43Sopenharmony_ci{ 281bd4fe43Sopenharmony_ci#endif 291bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 301bd4fe43Sopenharmony_ci 311bd4fe43Sopenharmony_ci#define AENC_ADAPT_MAGIC 0Xfcfcfcfc 321bd4fe43Sopenharmony_ci 331bd4fe43Sopenharmony_ci/* Audio function api. */ 341bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AUDIO_SetModParam(const AUDIO_MOD_PARAM_S *pstModParam); 351bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AUDIO_GetModParam(AUDIO_MOD_PARAM_S *pstModParam); 361bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AUDIO_RegisterVQEModule(const AUDIO_VQE_REGISTER_S *pstVqeRegister); 371bd4fe43Sopenharmony_ci 381bd4fe43Sopenharmony_ci/* AI function api. */ 391bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SetPubAttr(AUDIO_DEV AiDevId, const AIO_ATTR_S *pstAttr); 401bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetPubAttr(AUDIO_DEV AiDevId, AIO_ATTR_S *pstAttr); 411bd4fe43Sopenharmony_ci 421bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_Enable(AUDIO_DEV AiDevId); 431bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_Disable(AUDIO_DEV AiDevId); 441bd4fe43Sopenharmony_ci 451bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_EnableChn(AUDIO_DEV AiDevId, AI_CHN AiChn); 461bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_DisableChn(AUDIO_DEV AiDevId, AI_CHN AiChn); 471bd4fe43Sopenharmony_ci 481bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, 491bd4fe43Sopenharmony_ci AUDIO_FRAME_S *pstFrm, AEC_FRAME_S *pstAecFrm, HI_S32 s32MilliSec); 501bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_ReleaseFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, 511bd4fe43Sopenharmony_ci const AUDIO_FRAME_S *pstFrm, const AEC_FRAME_S *pstAecFrm); 521bd4fe43Sopenharmony_ci 531bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_CHN_PARAM_S *pstChnParam); 541bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_CHN_PARAM_S *pstChnParam); 551bd4fe43Sopenharmony_ci 561bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SetRecordVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_RECORDVQE_CONFIG_S *pstVqeConfig); 571bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetRecordVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_RECORDVQE_CONFIG_S *pstVqeConfig); 581bd4fe43Sopenharmony_ci 591bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_EnableVqe(AUDIO_DEV AiDevId, AI_CHN AiChn); 601bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_DisableVqe(AUDIO_DEV AiDevId, AI_CHN AiChn); 611bd4fe43Sopenharmony_ci 621bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_EnableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_SAMPLE_RATE_E enOutSampleRate); 631bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_DisableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn); 641bd4fe43Sopenharmony_ci 651bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E enTrackMode); 661bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E *penTrackMode); 671bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SaveFile(AUDIO_DEV AiDevId, AI_CHN AiChn, const AUDIO_SAVE_FILE_INFO_S *pstSaveFileInfo); 681bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_QueryFileStatus(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_FILE_STATUS_S *pstFileStatus); 691bd4fe43Sopenharmony_ci 701bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_ClrPubAttr(AUDIO_DEV AiDevId); 711bd4fe43Sopenharmony_ci 721bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetFd(AUDIO_DEV AiDevId, AI_CHN AiChn); 731bd4fe43Sopenharmony_ci 741bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_EnableAecRefFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_DEV AoDevId, AO_CHN AoChn); 751bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_DisableAecRefFrame(AUDIO_DEV AiDevId, AI_CHN AiChn); 761bd4fe43Sopenharmony_ci 771bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SetTalkVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_DEV AoDevId, AO_CHN AoChn, 781bd4fe43Sopenharmony_ci const AI_TALKVQE_CONFIG_S *pstVqeConfig); 791bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetTalkVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_TALKVQE_CONFIG_S *pstVqeConfig); 801bd4fe43Sopenharmony_ci 811bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SetTalkVqeV2Attr(AUDIO_DEV AiDevId, AI_CHN AiChn, 821bd4fe43Sopenharmony_ci AUDIO_DEV AoDevId, AO_CHN AoChn, const AI_TALKVQEV2_CONFIG_S *pstVqeConfig); 831bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetTalkVqeV2Attr(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_TALKVQEV2_CONFIG_S *pstVqeConfig); 841bd4fe43Sopenharmony_ci 851bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_SetChnAttr(AUDIO_DEV AudioDevId, AI_CHN AiChn, const AI_CHN_ATTR_S *pstAttr); 861bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AI_GetChnAttr(AUDIO_DEV AudioDevId, AI_CHN AiChn, AI_CHN_ATTR_S *pstAttr); 871bd4fe43Sopenharmony_ci 881bd4fe43Sopenharmony_ci/* AO function api. */ 891bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_SetPubAttr(AUDIO_DEV AoDevId, const AIO_ATTR_S *pstAttr); 901bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_GetPubAttr(AUDIO_DEV AoDevId, AIO_ATTR_S *pstAttr); 911bd4fe43Sopenharmony_ci 921bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_Enable(AUDIO_DEV AoDevId); 931bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_Disable(AUDIO_DEV AoDevId); 941bd4fe43Sopenharmony_ci 951bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_EnableChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 961bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_DisableChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 971bd4fe43Sopenharmony_ci 981bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_SendFrame(AUDIO_DEV AoDevId, AO_CHN AoChn, const AUDIO_FRAME_S *pstData, HI_S32 s32MilliSec); 991bd4fe43Sopenharmony_ci 1001bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_EnableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn, AUDIO_SAMPLE_RATE_E enInSampleRate); 1011bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_DisableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn); 1021bd4fe43Sopenharmony_ci 1031bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_ClearChnBuf(AUDIO_DEV AoDevId, AO_CHN AoChn); 1041bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_QueryChnStat(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_CHN_STATE_S *pstStatus); 1051bd4fe43Sopenharmony_ci 1061bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_GetChnDelay(AUDIO_DEV AudioDevId, AO_CHN AoChn, HI_U32 *pu32MilliSec); 1071bd4fe43Sopenharmony_ci 1081bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_PauseChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 1091bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_ResumeChn(AUDIO_DEV AoDevId, AO_CHN AoChn); 1101bd4fe43Sopenharmony_ci 1111bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_SetVolume(AUDIO_DEV AoDevId, HI_S32 s32VolumeDb); 1121bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_GetVolume(AUDIO_DEV AoDevId, HI_S32 *ps32VolumeDb); 1131bd4fe43Sopenharmony_ci 1141bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_SetMute(AUDIO_DEV AoDevId, HI_BOOL bEnable, const AUDIO_FADE_S *pstFade); 1151bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_GetMute(AUDIO_DEV AoDevId, HI_BOOL *pbEnable, AUDIO_FADE_S *pstFade); 1161bd4fe43Sopenharmony_ci 1171bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_SetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E enTrackMode); 1181bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_GetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E *penTrackMode); 1191bd4fe43Sopenharmony_ci 1201bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_GetFd(AUDIO_DEV AoDevId, AO_CHN AoChn); 1211bd4fe43Sopenharmony_ci 1221bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_ClrPubAttr(AUDIO_DEV AoDevId); 1231bd4fe43Sopenharmony_ci 1241bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_SetVqeAttr(AUDIO_DEV AoDevId, AO_CHN AoChn, const AO_VQE_CONFIG_S *pstVqeConfig); 1251bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_GetVqeAttr(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_VQE_CONFIG_S *pstVqeConfig); 1261bd4fe43Sopenharmony_ci 1271bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_EnableVqe(AUDIO_DEV AoDevId, AO_CHN AoChn); 1281bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AO_DisableVqe(AUDIO_DEV AoDevId, AO_CHN AoChn); 1291bd4fe43Sopenharmony_ci 1301bd4fe43Sopenharmony_ci/* AENC function api. */ 1311bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_CreateChn(AENC_CHN AeChn, const AENC_CHN_ATTR_S *pstAttr); 1321bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_DestroyChn(AENC_CHN AeChn); 1331bd4fe43Sopenharmony_ci 1341bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_SendFrame(AENC_CHN AeChn, const AUDIO_FRAME_S *pstFrm, const AEC_FRAME_S *pstAecFrm); 1351bd4fe43Sopenharmony_ci 1361bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_GetStream(AENC_CHN AeChn, AUDIO_STREAM_S *pstStream, HI_S32 s32MilliSec); 1371bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_ReleaseStream(AENC_CHN AeChn, const AUDIO_STREAM_S *pstStream); 1381bd4fe43Sopenharmony_ci 1391bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_GetFd(AENC_CHN AeChn); 1401bd4fe43Sopenharmony_ci 1411bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_RegisterEncoder(HI_S32 *ps32Handle, const AENC_ENCODER_S *pstEncoder); 1421bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_UnRegisterEncoder(HI_S32 s32Handle); 1431bd4fe43Sopenharmony_ci 1441bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_GetStreamBufInfo(AENC_CHN AeChn, HI_U64 *pu64PhysAddr, HI_U32 *pu32Size); 1451bd4fe43Sopenharmony_ci 1461bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_SetMute(AENC_CHN AeChn, HI_BOOL bEnable); 1471bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_GetMute(AENC_CHN AeChn, HI_BOOL *pbEnable); 1481bd4fe43Sopenharmony_ci 1491bd4fe43Sopenharmony_ciHI_S32 HI_MPI_AENC_ClrChnBuf(AENC_CHN AeChn); 1501bd4fe43Sopenharmony_ci 1511bd4fe43Sopenharmony_ci/* ADEC function api. */ 1521bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_CreateChn(ADEC_CHN AdChn, const ADEC_CHN_ATTR_S *pstAttr); 1531bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_DestroyChn(ADEC_CHN AdChn); 1541bd4fe43Sopenharmony_ci 1551bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_SendStream(ADEC_CHN AdChn, const AUDIO_STREAM_S *pstStream, HI_BOOL bBlock); 1561bd4fe43Sopenharmony_ci 1571bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_ClearChnBuf(ADEC_CHN AdChn); 1581bd4fe43Sopenharmony_ci 1591bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_RegisterDecoder(HI_S32 *ps32Handle, const ADEC_DECODER_S *pstDecoder); 1601bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_UnRegisterDecoder(HI_S32 s32Handle); 1611bd4fe43Sopenharmony_ci 1621bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_GetFrame(ADEC_CHN AdChn, AUDIO_FRAME_INFO_S *pstFrmInfo, HI_BOOL bBlock); 1631bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_ReleaseFrame(ADEC_CHN AdChn, const AUDIO_FRAME_INFO_S *pstFrmInfo); 1641bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_SendEndOfStream(ADEC_CHN AdChn, HI_BOOL bInstant); 1651bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_QueryChnStat(ADEC_CHN AdChn, ADEC_CHN_STATE_S *pstBufferStatus); 1661bd4fe43Sopenharmony_ci 1671bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_GetFrameInfo(ADEC_CHN AdChn, HI_VOID *pDecodeFrameInfo); 1681bd4fe43Sopenharmony_ci 1691bd4fe43Sopenharmony_ci#ifdef __cplusplus 1701bd4fe43Sopenharmony_ci#if __cplusplus 1711bd4fe43Sopenharmony_ci} 1721bd4fe43Sopenharmony_ci#endif 1731bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 1741bd4fe43Sopenharmony_ci 1751bd4fe43Sopenharmony_ci#endif /* __MPI_AI_H__ */ 1761bd4fe43Sopenharmony_ci 177