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 {
32  };
33 
34  public:
36  virtual ~ILocalAudioTrackEx() {}
37 
39  std::shared_ptr<AudioNodeBase> audioNetworkSink, uint32_t sourceId) = 0;
40  virtual void detach(DetachReason reason) = 0;
41 
42  virtual void setMaxBufferedAudioFrameNumber(int number) = 0;
43 
44  virtual int ClearSenderBuffer() {
45  return -ERR_NOT_SUPPORTED;
46  }
47 
48  virtual int setExtraDelay(int delay_ms) {
49  return -ERR_NOT_SUPPORTED;
50  }
51 
52  virtual bool getStatistics(PacketStats& stats) { return true; }
53 
54  virtual bool isMediaPacketTrack() { return false; }
55 
56  virtual bool isEncodedFrameTrack() { return false; }
57 
58  virtual int enableMusicMode(bool enable) {
59  return -ERR_NOT_SUPPORTED;
60  }
61 
62  virtual int setDetachOption(DetachOption& option) {
63  return -ERR_NOT_SUPPORTED;
64  }
65  virtual int enableEarMonitorLLApiInternal(bool enable, int includeAudioFilters) = 0;
67  virtual int setEnabledLLApiInternal(bool enable) = 0;
68  virtual bool isEnabledLLApiInternal() const = 0;
69  virtual bool addAudioFilterLLApiInternal(agora_refptr<IAudioFilter> filter, AudioFilterPosition position, const ExtensionContext& extContext = {}) = 0;
71  virtual int enableAudioFilterLLApiInternal(const char* id, bool enable, AudioFilterPosition position) {return -1;};
72  virtual int setFilterPropertyLLApiInternal(const char* id, const char* key, const char* jsonValue, AudioFilterPosition position){return -1;};
73  virtual int getFilterPropertyLLApiInternal(const char* id, const char* key, char* jsonValue, size_t bufSize, AudioFilterPosition position){return -1;};
74  virtual agora_refptr<IAudioFilter> getAudioFilterLLApiInternal(const char* name, AudioFilterPosition position) const = 0;
75  virtual int adjustPlayoutVolumeLLApiInternal(int volume) = 0;
76  virtual int getPlayoutVolumeLLApiInternal(int* volume) = 0;
77  virtual int adjustPublishVolumeLLApiInternal(int volume) = 0;
78  virtual int getPublishVolumeLLApiInternal(int* volume) = 0;
79  virtual int enableLocalPlaybackLLApiInternal(bool enable, bool sync = true) = 0;
86 };
87 
90  public:
92 
93  virtual ~IRemoteAudioTrackEx() {}
94 
96  notifier_.Notify(ts, state, reason);
97  }
98 
99  virtual void SetExternalJitterInfo(int32_t audio_jitter95, int32_t video_jitter95, bool receiving_video) = 0;
100 
101  RemoteAudioEvents GetEvents() {
102  return notifier_.GetEvents();
103  }
104 
105  virtual int GetAudioLevel() { return 0; }
108  virtual int adjustPlayoutVolumeLLApiInternal(int volume) = 0;
109  virtual int getPlayoutVolumeLLApiInternal(int* volume) = 0;
110  virtual int setPlayoutSignalLoudnessLLApiInternal(float loudness) = 0;
111  virtual bool addAudioFilterLLApiInternal(agora_refptr<IAudioFilter> filter, AudioFilterPosition position, const ExtensionContext &extConetxt = {}) = 0;
113  virtual agora_refptr<IAudioFilter> getAudioFilterLLApiInternal(const char* name, AudioFilterPosition position) const = 0;
118  virtual int setRemoteVoicePositionLLApiInternal(float pan, float gain) = 0;
119  virtual int adjustAudioAccelerationLLApiInternal(int percentage) = 0;
120  virtual int adjustAudioDecelerationLLApiInternal(int percentage) = 0;
121  virtual int adjustDecodedAudioVolumeLLApiInternal(int decoded_index, int volume) = 0;
122  virtual int enableSpatialAudioLLApiInternal(bool enabled) = 0;
126  virtual int enableAudioFilterLLApiInternal(const char* id, bool enable, AudioFilterPosition position) = 0;
127  virtual int setFilterPropertyLLApiInternal(const char* id, const char* key, const char* jsonValue, AudioFilterPosition position) = 0;
128  virtual int getFilterPropertyLLApiInternal(const char* id, const char* key, char* jsonValue, size_t bufSize, AudioFilterPosition position) = 0;
129  protected:
131 };
132 
133 } // namespace rtc
134 } // namespace agora
agora::rtc::ILocalAudioTrackEx::setMaxBufferedAudioFrameNumber
virtual void setMaxBufferedAudioFrameNumber(int number)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats
Definition: NGIAgoraAudioTrack.h:247
agora::rtc::ILocalAudioTrackEx::enforceFilterCompositesReadyLLApiInternal
virtual bool enforceFilterCompositesReadyLLApiInternal()=0
agora::rtc::ILocalAudioTrackEx::isEncodedFrameTrack
virtual bool isEncodedFrameTrack()
Definition: audio_track_i.h:56
agora::rtc::ILocalAudioTrackEx::setExtraDelay
virtual int setExtraDelay(int delay_ms)
Definition: audio_track_i.h:48
agora::rtc::IRemoteAudioTrackEx::removeAudioFilterLLApiInternal
virtual bool removeAudioFilterLLApiInternal(agora_refptr< IAudioFilter > filter, AudioFilterPosition position)=0
agora::rtc::ILocalAudioTrackEx::~ILocalAudioTrackEx
virtual ~ILocalAudioTrackEx()
Definition: audio_track_i.h:36
agora::rtc::REMOTE_AUDIO_STATE_STOPPED
@ REMOTE_AUDIO_STATE_STOPPED
Definition: AgoraBase.h:3059
agora::rtc::ILocalAudioTrackEx::adjustPublishVolumeLLApiInternal
virtual int adjustPublishVolumeLLApiInternal(int volume)=0
agora::rtc::ILocalAudioTrackEx::enableMusicMode
virtual int enableMusicMode(bool enable)
Definition: audio_track_i.h:58
agora::rtc::IRemoteAudioTrackEx::addAudioFilterLLApiInternal
virtual bool addAudioFilterLLApiInternal(agora_refptr< IAudioFilter > filter, AudioFilterPosition position, const ExtensionContext &extConetxt={})=0
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::REMOTE_AUDIO_STATE
REMOTE_AUDIO_STATE
Definition: AgoraBase.h:3053
agora::rtc::ILocalAudioTrackEx::addAudioSinkLLApiInternal
virtual bool addAudioSinkLLApiInternal(agora_refptr< IAudioSinkBase > sink, const AudioSinkWants &wants)=0
agora::rtc::IRemoteAudioTrackEx::GetAudioLevel
virtual int GetAudioLevel()
Definition: audio_track_i.h:105
agora::rtc::IRemoteAudioTrackEx::registerAudioEncodedFrameReceiverLLApiInternal
virtual int registerAudioEncodedFrameReceiverLLApiInternal(IAudioEncodedFrameReceiver *packetReceiver)=0
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::ILocalAudioTrackEx::removeAudioFilterLLApiInternal
virtual bool removeAudioFilterLLApiInternal(agora_refptr< IAudioFilter > filter, AudioFilterPosition position)=0
agora::rtc::ILocalAudioTrack
Definition: NGIAgoraAudioTrack.h:242
agora::rtc::ILocalAudioTrackEx::unregisterTrackObserverLLApiInternal
virtual int unregisterTrackObserverLLApiInternal(ILocalAudioTrackObserver *observer)=0
agora::rtc::IRemoteAudioTrackEx::removeAudioSinkLLApiInternal
virtual bool removeAudioSinkLLApiInternal(agora_refptr< IAudioSinkBase > sink)=0
agora::rtc::IRemoteAudioTrackEx::getFilterPropertyLLApiInternal
virtual int getFilterPropertyLLApiInternal(const char *id, const char *key, char *jsonValue, size_t bufSize, AudioFilterPosition position)=0
agora::rtc::ILocalAudioTrackEx::getAudioFilterLLApiInternal
virtual agora_refptr< IAudioFilter > getAudioFilterLLApiInternal(const char *name, AudioFilterPosition position) const =0
agora::rtc::IRemoteAudioTrackEx::getStatisticsLLApiInternal
virtual bool getStatisticsLLApiInternal(RemoteAudioTrackStats &stats)=0
agora::rtc::RemoteAudioTrackStats
Definition: NGIAgoraAudioTrack.h:427
agora::rtc::IRemoteAudioTrackEx::~IRemoteAudioTrackEx
virtual ~IRemoteAudioTrackEx()
Definition: audio_track_i.h:93
agora::rtc::ILocalAudioTrackEx::setDetachOption
virtual int setDetachOption(DetachOption &option)
Definition: audio_track_i.h:62
agora::rtc::ExtensionContext
Definition: AgoraMediaBase.h:41
agora::rtc::IRemoteAudioTrackEx::NotifyTrackStateChange
void NotifyTrackStateChange(uint64_t ts, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason)
Definition: audio_track_i.h:95
agora::rtc::IRemoteAudioTrackEx::adjustAudioAccelerationLLApiInternal
virtual int adjustAudioAccelerationLLApiInternal(int percentage)=0
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::IRemoteAudioTrackEx::notifier_
StateNotifier< REMOTE_AUDIO_STATE, REMOTE_AUDIO_STATE_REASON > notifier_
Definition: audio_track_i.h:130
agora::rtc::IRemoteAudioTrackEx::getPlayoutVolumeLLApiInternal
virtual int getPlayoutVolumeLLApiInternal(int *volume)=0
agora::rtc::ILocalAudioTrackEx
Definition: audio_track_i.h:26
agora::rtc::ILocalAudioTrackObserver
Definition: NGIAgoraAudioTrack.h:214
agora::rtc::ILocalAudioTrackEx::DetachOption::sync_destroy
Optional< 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::IRemoteAudioTrackEx::getAudioFilterLLApiInternal
virtual agora_refptr< IAudioFilter > getAudioFilterLLApiInternal(const char *name, AudioFilterPosition position) const =0
agora::rtc::IRemoteAudioTrackEx::registerMediaPacketReceiverLLApiInternal
virtual int registerMediaPacketReceiverLLApiInternal(IMediaPacketReceiver *packetReceiver)=0
agora::rtc::ILocalAudioTrackEx::DetachReason
DetachReason
Definition: audio_track_i.h:28
agora::rtc::IRemoteAudioTrackEx::adjustDecodedAudioVolumeLLApiInternal
virtual int adjustDecodedAudioVolumeLLApiInternal(int decoded_index, int volume)=0
agora::rtc::IRemoteAudioTrackEx::IRemoteAudioTrackEx
IRemoteAudioTrackEx()
Definition: audio_track_i.h:91
agora::rtc::IRemoteAudioTrackEx::setPlayoutSignalLoudnessLLApiInternal
virtual int setPlayoutSignalLoudnessLLApiInternal(float loudness)=0
agora::rtc::ILocalAudioTrackEx::adjustPlayoutVolumeLLApiInternal
virtual int adjustPlayoutVolumeLLApiInternal(int volume)=0
agora::rtc::ILocalAudioTrackEx::DetachOption
Definition: audio_track_i.h:29
agora::rtc::ILocalAudioTrackEx::enableAudioFilterLLApiInternal
virtual int enableAudioFilterLLApiInternal(const char *id, bool enable, AudioFilterPosition position)
Definition: audio_track_i.h:71
agora::rtc::ILocalAudioTrackEx::getFilterPropertyLLApiInternal
virtual int getFilterPropertyLLApiInternal(const char *id, const char *key, char *jsonValue, size_t bufSize, AudioFilterPosition position)
Definition: audio_track_i.h:73
agora::rtc::ILocalAudioTrackEx::registerTrackObserverLLApiInternal
virtual int registerTrackObserverLLApiInternal(ILocalAudioTrackObserver *observer)=0
agora::rtc::ILocalAudioTrackEx::enableLocalPlaybackLLApiInternal
virtual int enableLocalPlaybackLLApiInternal(bool enable, bool sync=true)=0
agora::rtc::ILocalAudioTrackEx::getStatistics
virtual bool getStatistics(PacketStats &stats)
Definition: audio_track_i.h:52
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::IAudioEncodedFrameReceiver
Definition: NGIAgoraMediaNode.h:586
agora::rtc::ILocalAudioTrackEx::isMediaPacketTrack
virtual bool isMediaPacketTrack()
Definition: audio_track_i.h:54
agora::rtc::IRemoteAudioTrackEx::unregisterMediaPacketReceiverLLApiInternal
virtual int unregisterMediaPacketReceiverLLApiInternal(IMediaPacketReceiver *packetReceiver)=0
agora::rtc::IRemoteAudioTrackEx::setRemoteUserSpatialAudioParamsLLApiInternal
virtual int setRemoteUserSpatialAudioParamsLLApiInternal(const agora::SpatialAudioParams &params)=0
agora::rtc::ILocalAudioTrackEx::enableEarMonitorLLApiInternal
virtual int enableEarMonitorLLApiInternal(bool enable, int includeAudioFilters)=0
agora::rtc::IMediaPacketReceiver
Definition: NGIAgoraMediaNode.h:606
agora::rtc::ILocalAudioTrackEx::addAudioFilterLLApiInternal
virtual bool addAudioFilterLLApiInternal(agora_refptr< IAudioFilter > filter, AudioFilterPosition position, const ExtensionContext &extContext={})=0
agora::rtc::IRemoteAudioTrackEx::addAudioSinkLLApiInternal
virtual bool addAudioSinkLLApiInternal(agora_refptr< IAudioSinkBase > sink, const AudioSinkWants &wants)=0
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:3086
agora::rtc::IRemoteAudioTrackEx::GetEvents
RemoteAudioEvents GetEvents()
Definition: audio_track_i.h:101
agora::rtc::ILocalAudioTrackEx::MANUAL
@ MANUAL
Definition: audio_track_i.h:28
agora::rtc::IRemoteAudioTrackEx::setFilterPropertyLLApiInternal
virtual int setFilterPropertyLLApiInternal(const char *id, const char *key, const char *jsonValue, AudioFilterPosition position)=0
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:88
agora::rtc::IRemoteAudioTrackEx::setRemoteVoicePositionLLApiInternal
virtual int setRemoteVoicePositionLLApiInternal(float pan, float gain)=0
agora::rtc::ILocalAudioTrackEx::getPlayoutVolumeLLApiInternal
virtual int getPlayoutVolumeLLApiInternal(int *volume)=0
agora::ERR_NOT_SUPPORTED
@ ERR_NOT_SUPPORTED
Definition: AgoraBase.h:477
agora::rtc::ILocalAudioTrackEx::DetachOption::detach_default_audio_state
Optional< bool > detach_default_audio_state
Definition: audio_track_i.h:31
agora::rtc::ILocalAudioTrackEx::ClearSenderBuffer
virtual int ClearSenderBuffer()
Definition: audio_track_i.h:44
agora::rtc::IRemoteAudioTrackEx::enableSpatialAudioLLApiInternal
virtual int enableSpatialAudioLLApiInternal(bool enabled)=0
agora::rtc::AudioSinkWants
Definition: NGIAgoraAudioTrack.h:29
agora::rtc::IRemoteAudioTrackEx::adjustAudioDecelerationLLApiInternal
virtual int adjustAudioDecelerationLLApiInternal(int percentage)=0
agora::rtc::ILocalAudioTrackEx::isEnabledLLApiInternal
virtual bool isEnabledLLApiInternal() const =0
agora::rtc::ILocalAudioTrackEx::getStateLLApiInternal
virtual LOCAL_AUDIO_STREAM_STATE getStateLLApiInternal()=0
agora::rtc::ILocalAudioTrackEx::setEnabledLLApiInternal
virtual int setEnabledLLApiInternal(bool enable)=0
agora::rtc::ILocalAudioTrackEx::getPublishVolumeLLApiInternal
virtual int getPublishVolumeLLApiInternal(int *volume)=0
agora::rtc::IRemoteAudioTrackEx::enableAudioFilterLLApiInternal
virtual int enableAudioFilterLLApiInternal(const char *id, bool enable, AudioFilterPosition position)=0
agora::rtc::LOCAL_AUDIO_STREAM_STATE
LOCAL_AUDIO_STREAM_STATE
Definition: AgoraBase.h:2829
agora::rtc::ILocalAudioTrackEx::GetStatsLLApiInternal
virtual ILocalAudioTrack::LocalAudioTrackStats GetStatsLLApiInternal()=0
agora::rtc::IRemoteAudioTrackEx::unregisterAudioEncodedFrameReceiverLLApiInternal
virtual int unregisterAudioEncodedFrameReceiverLLApiInternal(IAudioEncodedFrameReceiver *packetReceiver)=0
agora::SpatialAudioParams
Definition: AgoraBase.h:6410
agora::rtc::ILocalAudioTrackEx::removeAudioSinkLLApiInternal
virtual bool removeAudioSinkLLApiInternal(agora_refptr< IAudioSinkBase > sink)=0
agora::rtc::ILocalAudioTrackEx::setFilterPropertyLLApiInternal
virtual int setFilterPropertyLLApiInternal(const char *id, const char *key, const char *jsonValue, AudioFilterPosition position)
Definition: audio_track_i.h:72
agora::rtc::ILocalAudioTrackEx::ILocalAudioTrackEx
ILocalAudioTrackEx()
Definition: audio_track_i.h:35
agora::rtc::IRemoteAudioTrackEx::adjustPlayoutVolumeLLApiInternal
virtual int adjustPlayoutVolumeLLApiInternal(int volume)=0
agora::rtc::IRemoteAudioTrackEx::getStateLLApiInternal
virtual REMOTE_AUDIO_STATE getStateLLApiInternal()=0
rtc
Definition: video_node_i.h:28
agora::Optional< bool >
agora::rtc::IAudioTrack::AudioFilterPosition
AudioFilterPosition
Definition: NGIAgoraAudioTrack.h:51
agora::rtc::IRemoteAudioTrack
Definition: NGIAgoraAudioTrack.h:663