Agora C++ API Reference for All Platforms
audio_track_i.h
1 //
2 // Agora Media SDK
3 //
4 // Created by Rao Qi in 2019.
5 // Copyright (c) 2019 Agora IO. All rights reserved.
6 //
7 #pragma once
8 
9 #include <memory>
10 
11 #include "AgoraRefPtr.h"
12 #include "AgoraBase.h"
13 
14 #include "NGIAgoraAudioTrack.h"
15 
16 #include "track_stat_i.h"
17 #include "video_config_i.h"
18 
19 namespace agora {
20 namespace rtc {
21 
22 class AudioState;
23 class AudioNodeBase;
24 struct PacketStats;
25 
27  public:
29  struct DetachOption {
30  bool sync_destroy = true;
31  };
32 
33  public:
35  virtual ~ILocalAudioTrackEx() {}
36 
38  std::shared_ptr<AudioNodeBase> audioNetworkSink, uint32_t sourceId) = 0;
39  virtual void detach(DetachReason reason) = 0;
40 
41  virtual void setMaxBufferedAudioFrameNumber(int number) = 0;
42 
43  virtual int ClearSenderBuffer() {
44  return -ERR_NOT_SUPPORTED;
45  }
46 
47  virtual int setExtraDelay(int delay_ms) {
48  return -ERR_NOT_SUPPORTED;
49  }
50 
51  virtual bool getStatistics(PacketStats& stats) { return true; }
52 
53  virtual bool isMediaPacketTrack() { return false; }
54 
55  virtual bool isEncodedFrameTrack() { return false; }
56 
57  virtual void setDefaultAudioState(bool isDefaultAudioState) { return; };
58 
59  virtual int enableMusicMode(bool enable) {
60  return -ERR_NOT_SUPPORTED;
61  }
62 
63  virtual int setDetachOption(DetachOption& option) {
64  return -ERR_NOT_SUPPORTED;
65  }
66 };
67 
70  public:
72 
73  virtual ~IRemoteAudioTrackEx() {}
74 
76  notifier_.Notify(ts, state, reason);
77  }
78 
79  virtual void SetExternalJitterInfo(int32_t audio_jitter95, int32_t video_jitter95, bool receiving_video) = 0;
80 
81  RemoteAudioEvents GetEvents() {
82  return notifier_.GetEvents();
83  }
84 
85  virtual int GetAudioLevel() { return 0; }
86  protected:
88 };
89 
90 } // namespace rtc
91 } // namespace agora
agora::rtc::ILocalAudioTrackEx::setMaxBufferedAudioFrameNumber
virtual void setMaxBufferedAudioFrameNumber(int number)=0
agora::rtc::ILocalAudioTrackEx::isEncodedFrameTrack
virtual bool isEncodedFrameTrack()
Definition: audio_track_i.h:55
agora::rtc::ILocalAudioTrackEx::setExtraDelay
virtual int setExtraDelay(int delay_ms)
Definition: audio_track_i.h:47
agora::rtc::ILocalAudioTrackEx::~ILocalAudioTrackEx
virtual ~ILocalAudioTrackEx()
Definition: audio_track_i.h:35
agora::rtc::REMOTE_AUDIO_STATE_STOPPED
@ REMOTE_AUDIO_STATE_STOPPED
Definition: AgoraBase.h:2868
agora::rtc::ILocalAudioTrackEx::enableMusicMode
virtual int enableMusicMode(bool enable)
Definition: audio_track_i.h:59
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::REMOTE_AUDIO_STATE
REMOTE_AUDIO_STATE
Definition: AgoraBase.h:2862
agora::rtc::IRemoteAudioTrackEx::GetAudioLevel
virtual int GetAudioLevel()
Definition: audio_track_i.h:85
agora::rtc::ILocalAudioTrackEx::detach
virtual void detach(DetachReason reason)=0
agora::rtc::ILocalAudioTrackEx::attach
virtual void attach(agora_refptr< agora::rtc::AudioState > audioState, std::shared_ptr< AudioNodeBase > audioNetworkSink, uint32_t sourceId)=0
agora::rtc::ILocalAudioTrack
Definition: NGIAgoraAudioTrack.h:240
agora::rtc::IRemoteAudioTrackEx::~IRemoteAudioTrackEx
virtual ~IRemoteAudioTrackEx()
Definition: audio_track_i.h:73
agora::rtc::ILocalAudioTrackEx::setDetachOption
virtual int setDetachOption(DetachOption &option)
Definition: audio_track_i.h:63
agora::rtc::IRemoteAudioTrackEx::NotifyTrackStateChange
void NotifyTrackStateChange(uint64_t ts, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason)
Definition: audio_track_i.h:75
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::IRemoteAudioTrackEx::notifier_
StateNotifier< REMOTE_AUDIO_STATE, REMOTE_AUDIO_STATE_REASON > notifier_
Definition: audio_track_i.h:87
agora::rtc::ILocalAudioTrackEx
Definition: audio_track_i.h:26
agora::rtc::ILocalAudioTrackEx::setDefaultAudioState
virtual void setDefaultAudioState(bool isDefaultAudioState)
Definition: audio_track_i.h:57
agora::rtc::ILocalAudioTrackEx::DetachOption::sync_destroy
bool sync_destroy
Definition: audio_track_i.h:30
agora::rtc::StateNotifier::GetEvents
StateEvents< STATE_TYPE, REASON_TYPE > GetEvents(bool readOnly=false)
Definition: track_stat_i.h:38
agora::rtc::StateNotifier< REMOTE_AUDIO_STATE, REMOTE_AUDIO_STATE_REASON >
agora::rtc::ILocalAudioTrackEx::DetachReason
DetachReason
Definition: audio_track_i.h:28
agora::rtc::IRemoteAudioTrackEx::IRemoteAudioTrackEx
IRemoteAudioTrackEx()
Definition: audio_track_i.h:71
agora::rtc::ILocalAudioTrackEx::DetachOption
Definition: audio_track_i.h:29
agora::rtc::ILocalAudioTrackEx::getStatistics
virtual bool getStatistics(PacketStats &stats)
Definition: audio_track_i.h:51
agora::rtc::IRemoteAudioTrackEx::SetExternalJitterInfo
virtual void SetExternalJitterInfo(int32_t audio_jitter95, int32_t video_jitter95, bool receiving_video)=0
agora::rtc::ILocalAudioTrackEx::MIXER_DESTROY
@ MIXER_DESTROY
Definition: audio_track_i.h:28
agora::rtc::ILocalAudioTrackEx::isMediaPacketTrack
virtual bool isMediaPacketTrack()
Definition: audio_track_i.h:53
agora::rtc::StateEvents
std::vector< StateEvent< STATE_TYPE, REASON_TYPE > > StateEvents
Definition: track_stat_i.h:21
agora::rtc::ILocalAudioTrackEx::TRACK_DESTROY
@ TRACK_DESTROY
Definition: audio_track_i.h:28
agora::rtc::REMOTE_AUDIO_STATE_REASON
REMOTE_AUDIO_STATE_REASON
Definition: AgoraBase.h:2895
agora::rtc::IRemoteAudioTrackEx::GetEvents
RemoteAudioEvents GetEvents()
Definition: audio_track_i.h:81
agora::rtc::ILocalAudioTrackEx::MANUAL
@ MANUAL
Definition: audio_track_i.h:28
agora::rtc::StateNotifier::Notify
void Notify(uint64_t ts, STATE_TYPE state, REASON_TYPE reason)
Definition: track_stat_i.h:29
agora::rtc::IRemoteAudioTrackEx
Definition: audio_track_i.h:68
agora::ERR_NOT_SUPPORTED
@ ERR_NOT_SUPPORTED
Definition: AgoraBase.h:466
agora::rtc::ILocalAudioTrackEx::ClearSenderBuffer
virtual int ClearSenderBuffer()
Definition: audio_track_i.h:43
agora::rtc::ILocalAudioTrackEx::ILocalAudioTrackEx
ILocalAudioTrackEx()
Definition: audio_track_i.h:34
rtc
Definition: video_node_i.h:26
agora::rtc::IRemoteAudioTrack
Definition: NGIAgoraAudioTrack.h:646