/*---------------------------------------------------------------------------- * Copyright (c) TJD Technologies Co., Ltd. 2025. All rights reserved. * * Description: TjdPhoneAudio.h * * Author: luziquan@ss-tjd.com * * Create: 2025-08-16 *--------------------------------------------------------------------------*/ #ifndef TJD_PHONE_AUDIO_H #define TJD_PHONE_AUDIO_H #include "audio_base_type.h" #include "audio_manager.h" #include "audio_stream_in.h" #include "audio_stream_out.h" #include using Audio::AudioInterrupt; using Audio::AudioManager; using Audio::AudioStreamIn; using Audio::AudioStreamOut; constexpr int32_t AUDIO_STREAM_MAX_INSTANCE_NUM = 2; constexpr int32_t AUDIO_CHANNEL_1 = 1; constexpr int32_t AUDIO_SAMPLE_RATE_16K = 16000; constexpr int32_t AUDIO_SAMPLE_RATE_8K = 8000; constexpr int32_t INVALID_AUDIO_VALUE = (-1); class TjdPhoneAudio { public: static TjdPhoneAudio &GetInstance() { static TjdPhoneAudio instance; return instance; }; int32_t AudioInit(void); int32_t PhoneAudioGetMinVolume(void); int32_t PhoneAudioGetMaxVolume(void); int32_t PhoneAudioGetVolume(void); bool PhoneAudioSetVolume(int32_t volume); bool PhoneAudioSetSpeakerMute(bool isMute); bool PhoneAudioSetMicMute(bool isMute); int32_t PhoneAudioManagerActInterrupt(AudioStreamType streamType); int32_t PhoneAudioManagerSetDeviceConnState(AudioDeviceType deviceType, AudioDeviceConnectState connectState); int32_t PhoneAudioStreamInInit(AudioLinkDirection linkDir); int32_t PhoneAudioStreamOutInit(AudioLinkDirection linkDir); int32_t PhoneAudioStreamInStart(int32_t instanceNum); int32_t PhoneAudioStreamOutStart(int32_t instanceNum); int32_t PhoneAudioStreamInGetChannelId(int32_t instanceNum, uint32_t *shmId); int32_t PhoneAudioStreamOutGetChannelId(int32_t instanceNum, uint32_t *shmId); int32_t PhoneAudioStreamInAttachBackend(int32_t instanceNum, uint32_t backendId); int32_t PhoneAudioStreamOutAttachFrontend(int32_t instanceNum, uint32_t frontendId); int32_t PhoneAudioStreamInStop(int32_t instanceNum); int32_t PhoneAudioStreamOutStop(int32_t instanceNum); int32_t PhoneAudioStreamInDeinit(int32_t instanceNum); int32_t PhoneAudioStreamOutDeinit(int32_t instanceNum); int32_t PhoneAudioManagerDeactInterrupt(void); private: TjdPhoneAudio() : amInstance_{AudioManager::GetInstance()} {}; ~TjdPhoneAudio() {}; std::shared_ptr g_streamIn[AUDIO_STREAM_MAX_INSTANCE_NUM]; std::shared_ptr g_streamOut[AUDIO_STREAM_MAX_INSTANCE_NUM]; AudioManager amInstance_; AudioSession sessionId_; AudioInterrupt interrupt_; }; #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } #endif #endif int32_t PhoneAudioStreamInInit(AudioLinkDirection linkDir);