84 lines
2.8 KiB
C++
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);
|