mcu_hi3321_watch/tjd/ui/app/phone/phone_service/TjdPhoneAudio.h
2025-05-26 20:15:20 +08:00

84 lines
2.8 KiB
C++

/*----------------------------------------------------------------------------
* 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 <stdint.h>
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<AudioStreamIn> g_streamIn[AUDIO_STREAM_MAX_INSTANCE_NUM];
std::shared_ptr<AudioStreamOut> 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);