linuxOS_D21X/package/vendor/carbit/include/ECSDKAudioManager.h
2024-11-29 16:23:11 +08:00

212 lines
5.7 KiB
C++

#ifndef ECSDKAUDIOMANAGER_H
#define ECSDKAUDIOMANAGER_H
#include "ECSDKTypes.h"
namespace ECSDKFrameWork {
/*!
* \brief The base class of audio player object.
*
* A audio player is used to play audio data from our phone app.
* You need to inherit and implement each interface
*
*/
class EC_DLL_EXPORT IECAudioPlayer
{
public:
/*!
* \brief Virtual destructor.
*/
virtual ~IECAudioPlayer();
/*!
* \brief Used to start the audio player.
*
* \param type Audio types, including intercom, navigation, VR, music
*
* \param info Format of audio data
*
* \note This interface is called when the phone clicks to play music,
* and you may need to initialize the audio decoder on this interface.
*/
virtual void start(ECAudioType type, const ECAudioInfo& info) = 0;
/*!
* \brief Used to stop the audio player.
*
* \param type Audio types, including intercom, navigation, VR, music
*
* \note This interface is called back when the phone clicks to stop playing music.
*/
virtual void stop(ECAudioType type) = 0;
/*!
* \brief Used to play the audio data.
*
* \note
* - Before call this, you must ensure the audio player has been initialized successfully.\n
* - A pure virtual function derived class must implement it.
*/
virtual void play(ECAudioType type, const void* data, uint32_t len) = 0;
/*!
* \brief Used to set audio's volume.
*
* \param type Audio types, including intercom, navigation, VR, music
*
* \note A pure virtual function derived class must implement it.
*/
virtual void setVolume(ECAudioType type, uint32_t vol) = 0;
};
/*!
* \brief The base class of audio recorder object.
*
* A audio recorder is used to record by using the system microphone and upload audio data to our phone app.
*
*/
class EC_DLL_EXPORT IECAudioRecorder
{
public:
/*!
* \brief Virtual destructor.
*/
virtual ~IECAudioRecorder();
/*!
* \brief Used to start the audio recorder.
*
* \param info Format of audio data
*
* \note When you tap the phone's microphone, this interface is called back,
* and you get to initialize the recording device here
*/
virtual void start(const ECAudioInfo& info) = 0;
/**
* @brief Used to provide recording data.
*
* @param data The object that holds the data
*
* @return 0 on successful operation, -1 on the microphone equipment is not ready, -2 on unknown error
*
* @note You need to implement this interface to provide the recording data.When the ECSDKFramework calls start,
* a thread is started to invoke the interface to retrieve the recording data.
*
*/
virtual int32_t record(string& data) = 0;
/*!
* \brief Used to stop the audio recorder.
*
* \note A pure virtual function derived class must implement it.
*/
virtual void stop() = 0;
};
/**
* @brief The ECSDKAudioPlayer class
*/
class EC_DLL_EXPORT ECSDKAudioManager
{
public:
/**
* @brief getInstance
*
* @return ECSDK_OK on success, others on fail.
*/
static ECSDKAudioManager *getInstance();
/**
* @brief initialize
* @param AideoPlayerObject
* @return ECSDK_OK on success, others on fail.
*/
virtual bool initialize(IECAudioPlayer* audeoPlayerObject, IECAudioRecorder* audioRecorder) = 0;
/**
* @brief release
*
* @return ECSDK_OK on success, others on fail.
*/
virtual void release() = 0;
/**
* @brief enableDownloadPhoneAppAudio
*
* @param supportType : The type of audio to be transmitted, for example EC_AUDIO_TYPE_TTS | EC_AUDIO_TYPE_VR
*
* @return ECSDK_OK on success, others on fail.
*/
virtual int32_t enableDownloadPhoneAppAudio(uint32_t supportType, bool autoChangeToBT = true) = 0;
/**
* @brief disableDownloadPhoneAppAudio
*
* @return ECSDK_OK on success, others on fail.
*/
virtual int32_t disableDownloadPhoneAppAudio() = 0;
/**
* @brief Enable downloading system audio form phone.Current avaliable on iPhone Lighting Mode;
*
* @return EC_OK on success, others on fail.
*
* @note The audio type of the callback is EC_AUDIO_TYPE_MUSIC.
*
*/
virtual int32_t enableDownloadSystemAudio() = 0;
/**
* @brief Disable downloading system audio.
*
* @see enableDownloadSystemAudio
*/
virtual void disableDownloadSystemAudio() = 0;
/**
* @brief Sets the caching time for audio data to be sent down from the phone. By default, it is not cached.
*
*/
virtual void setAudioCacheTime(uint32_t cacheTime) = 0;
/**
* @param enableDelay Whether to enable delay stop
*
* @param additionTime addition delay time
*
* @brief Whether to turn on to increase the stop delay based on the playback time of the data volume.
*
*/
virtual void enableAudioDelay(bool enableDelay, uint32_t additionTime = 0) = 0;
/**
* @brief This method will config Speech Enhancement parameters.
*
* @param key referred to EC_SE_PARAM_KEY_
*
* @param value the value to corresponding key.
*
* @note call this method before ECSDKFramework::start, then information with the config
* will be send to connected phone when IECAudioRecorder::start trigered.
* User just need to call this method once. The config will be always valid until next ECSDKFramework::start.
*/
virtual int32_t configSEParam(const string& key, const string& value) = 0;
protected:
ECSDKAudioManager ();
virtual ~ECSDKAudioManager();
};
}
#endif // ECSDKAUDIOMANAGER_H