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