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 {
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 setExtraDelay(int delay_ms) {
44  return -ERR_NOT_SUPPORTED;
45  }
46 
47  virtual bool getStatistics(PacketStats& stats) { return true; }
48 
49  virtual bool isMediaPacketTrack() { return false; }
50 
51  virtual bool isEncodedFrameTrack() { return false; }
52 
53  virtual int setDetachOption(DetachOption& option) {
54  return -ERR_NOT_SUPPORTED;
55  }
56 };
57 
60  public:
62 
63  virtual ~IRemoteAudioTrackEx() {}
64 
66  notifier_.Notify(ts, state, reason);
67  }
68 
69  virtual void SetExternalJitterInfo(int32_t audio_jitter95, int32_t video_jitter95, bool receiving_video) = 0;
70 
71  RemoteAudioEvents GetEvents() {
72  return notifier_.GetEvents();
73  }
74 
75  virtual int GetAudioLevel() { return 0; }
76  protected:
78 };
79 
80 } // namespace rtc
81 } // namespace agora
agora::rtc::ILocalAudioTrackEx::setMaxBufferedAudioFrameNumber
virtual void setMaxBufferedAudioFrameNumber(int number)=0
agora::rtc::ILocalAudioTrackEx::isEncodedFrameTrack
virtual bool isEncodedFrameTrack()
Definition: audio_track_i.h:51
agora::rtc::ILocalAudioTrackEx::setExtraDelay
virtual int setExtraDelay(int delay_ms)
Definition: audio_track_i.h:43
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:2876
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::REMOTE_AUDIO_STATE
REMOTE_AUDIO_STATE
Definition: AgoraBase.h:2870
agora::rtc::IRemoteAudioTrackEx::GetAudioLevel
virtual int GetAudioLevel()
Definition: audio_track_i.h:75
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:239
agora::rtc::IRemoteAudioTrackEx::~IRemoteAudioTrackEx
virtual ~IRemoteAudioTrackEx()
Definition: audio_track_i.h:63
agora::rtc::ILocalAudioTrackEx::setDetachOption
virtual int setDetachOption(DetachOption &option)
Definition: audio_track_i.h:53
agora::rtc::IRemoteAudioTrackEx::NotifyTrackStateChange
void NotifyTrackStateChange(uint64_t ts, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason)
Definition: audio_track_i.h:65
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::IRemoteAudioTrackEx::notifier_
StateNotifier< REMOTE_AUDIO_STATE, REMOTE_AUDIO_STATE_REASON > notifier_
Definition: audio_track_i.h:77
agora::rtc::ILocalAudioTrackEx
Definition: audio_track_i.h:26
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:61
agora::rtc::ILocalAudioTrackEx::DetachOption
Definition: audio_track_i.h:29
agora::rtc::ILocalAudioTrackEx::getStatistics
virtual bool getStatistics(PacketStats &stats)
Definition: audio_track_i.h:47
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:49
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:2903
agora::rtc::IRemoteAudioTrackEx::GetEvents
RemoteAudioEvents GetEvents()
Definition: audio_track_i.h:71
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:58
agora::ERR_NOT_SUPPORTED
@ ERR_NOT_SUPPORTED
Definition: AgoraBase.h:474
agora::rtc::ILocalAudioTrackEx::ILocalAudioTrackEx
ILocalAudioTrackEx()
Definition: audio_track_i.h:34
rtc
Definition: video_node_i.h:25
agora::rtc::IRemoteAudioTrack
Definition: NGIAgoraAudioTrack.h:614