cn.tee3.avd_SDK-C++  2.1.0
maudio_new.h
浏览该文件的文档.
1 #ifndef RT_Audio_H_
2 #define RT_Audio_H_
3 
4 #include "common.h"
5 #include "room.h"
6 
7 namespace tee3 {
8  namespace avd {
9  class IRoom;
10 
16  class RT_API_EXPORT IAudioDevice {
17  public:
23  class IListener {
24  public:
26 
31  virtual void onMicrophonePlugin(const Microphone& item) = 0;
37  virtual void onMicrophonePlugout(const Microphone& item) = 0;
43  virtual void onSpeakerPlugin(const Speaker& item) = 0;
49  virtual void onSpeakerPlugout(const Speaker& item) = 0;
50 
56  virtual void onMicrophoneVolumeChanged(uint32 volume) = 0;
62  virtual void onSpeakerVolumeChanged(uint32 volume) = 0;
63  protected:
64  virtual ~IListener() {}
65  };
66 
67  public:
74  static IAudioDevice* Instance();
75  public:
82  virtual Result setListener(IListener* listener) = 0;
84 
89  virtual Result getMicrophones(MicrophonesType& items) const = 0;
95  virtual const Microphone& getMicrophone(const DeviceId& id) const = 0;
99  virtual const Microphone& getRecordingMicrophone() const = 0;
105  virtual Result setRecordingMicrophone(const DeviceId& id) = 0;
111  virtual Result setRecordingVolume(uint32 volume) = 0;
116  virtual uint32 getRecordingVolume() const = 0;
121  virtual DeviceId getFakeMicrophoneId() const = 0;
123 
128  virtual Result getSpeakers(SpeakersType& items) const = 0;
134  virtual const Speaker& getSpeaker(const DeviceId& id) const = 0;
138  virtual const Speaker& getPlayoutSpeaker() const = 0;
144  virtual Result setPlayoutSpeaker(const DeviceId& id) = 0;
150  virtual Result setPlayoutVolume(uint32 volume) = 0;
155  virtual uint32 getPlayoutVolume() const = 0;
156 
158 
163  virtual Result recordPlayStart() = 0;
168  virtual Result recordPlayStop() = 0;
177  virtual Result playVoice(const String& file, bool loop, FileFormats format) = 0;
182  virtual Result stopVoice() = 0;
183 
188  virtual bool isPlayingVoice() = 0;
193  virtual uint32 getRecordLevel() = 0;
198  virtual uint32 getPlayoutLevel() = 0;
199 
200  protected:
201  virtual ~IAudioDevice() {}
202  };
203 
209  class RT_API_EXPORT IMAudio : public IModule {
210  public:
216  class IListener {
217  public:
219 
227  virtual void onMicrophoneStatusNotify(MicrophoneStatus status, const UserId& fromUserId) = 0;
234  virtual void onAudioLevelMonitorNotify(const AudioInfo& info) = 0;
235 
237 
242  virtual void onOpenMicrophoneResult(Result result) = 0;
248  virtual void onCloseMicrophoneResult(Result result) = 0;
249 
252  //*
253  //* @param[in] result 错误代码。
254  //* @param[in] fromId 用户Id,唯一标示一个用户。
255  //*
256  //* @sa subscribe
257  //*/
258  //virtual void onSubscribeResult(Result result, const UserId& fromId) = 0;
260  //*
261  //* @param[in] result 错误代码。
262  //* @param[in] fromId 用户Id,唯一标示一个用户。
263  //*
264  //* @sa unsubscribe
265  //*/
266  //virtual void onUnsubscribeResult(Result result, const UserId& fromId) = 0;
267  protected:
268  virtual ~IListener() {}
269  };
276  static IMAudio* getAudio(IRoom* room);
277  //
284  virtual Result setListener(IListener* listener) = 0;
291  virtual Result openMicrophone() = 0;
298  virtual Result closeMicrophone() = 0;
302  virtual MicrophoneStatus getMicrophoneStatus() const = 0;
303  // no input audio, anyone cann't listen my speak; like pause mic
309  virtual Result muteMicrophone() = 0;
313  virtual Result unmuteMicrophone() = 0;
317  virtual bool ismuteMicrophone() const = 0;
318  // no output audio, cann't listen anyone sound
324  virtual Result muteSpeaker() = 0;
328  virtual Result unmuteSpeaker() = 0;
331  virtual bool ismuteSpeaker() const = 0;
332 
334 
338  virtual MicrophoneStatus getRemoteMicrophoneStatus(const UserId& userId) const = 0;
343  virtual Result remotecmdOpenMicrophone(const UserId& userId) = 0;
348  virtual Result remotecmdCloseMicrophone(const UserId& userId) = 0;
349 
355  virtual IAudioDevice* getAudioDevice() = 0;
356 
360  virtual Result monitorAudioLevel() = 0;
364  virtual Result unmonitorAudioLevel() = 0;
367  virtual bool ismonitorAudioLevel() const = 0;
368  protected:
369  virtual ~IMAudio() {}
370  };
371 
378 
379  public:
384  public:
389  virtual void onAudioParam(uint32 sampleRate, uint32 channels) = 0;
395  virtual void onAudioData(uint64 timestamp_ns, const void *buf, uint32 len) = 0;
396 
397  protected:
398  virtual ~IDataListener() {}
399  };
400  public:
410  static IVideoMixer* getVideoMixer(IMAudio* maudio, IDataListener* listener);
415  virtual Result setOutputSampleRate(uint32 sampleRate) = 0;
416 
417  protected:
418  virtual ~IAudioMixer() {}
419  };
420 
421  } // namespace avd
422 } // namespace tee3
423 #endif//RT_Audio_H_
DeviceStatus
设备状态.
Definition: combase.h:128
房间中音频混音数据回调接口.
Definition: maudio_new.h:383
语音激励信息结构.
Definition: common.h:332
视频混屏模块接口.
Definition: maudio_new.h:377
String UserId
用户号类型,唯一标识房间内一个用户,长度不大于Max_UserId定义;由应用层定义传递给AVD SDK,要求保证房间...
Definition: common.h:13
std::vector< Microphone > MicrophonesType
麦克风集合类型.
Definition: common.h:138
int Result
返回值类型
Definition: combase.h:9
String DeviceId
设备号类型,唯一标识房间内一个设备,长度不大于Max_DeviceId定义;定义如下:userId+"_"+md5[os.getdeviceid() or os.getsystemid()]
Definition: common.h:12
#define RT_API_EXPORT
Definition: defines.h:186
扬声器信息结构.
Definition: common.h:126
房间模块接口类
Definition: room.h:349
unsigned int uint32
Definition: defines.h:391
virtual ~IListener()
Definition: maudio_new.h:64
std::string String
tee3定义的String类型
Definition: common.h:10
unsigned long long uint64
Definition: defines.h:380
std::vector< Speaker > SpeakersType
扬声器集合类型.
Definition: common.h:130
virtual ~IListener()
异步返回 ** 本用户订阅音频异步返回
Definition: maudio_new.h:268
音频设备管理接口.
Definition: maudio.h:16
视频混屏模块接口.
Definition: mvideo_new.h:479
virtual ~IMAudio()
Definition: maudio_new.h:369
virtual ~IAudioDevice()
Definition: maudio_new.h:201
房间接口类
Definition: room.h:17
音频设备管理回调接口.
Definition: maudio.h:23
FileFormats
Definition: combase.h:225
麦克风信息结构.
Definition: common.h:134
virtual ~IAudioMixer()
Definition: maudio_new.h:418
virtual ~IDataListener()
Definition: maudio_new.h:398
Definition: audiocapture.h:5
房间中音频模块回调接口.
Definition: maudio.h:228