Agora C++ API Reference for All Platforms
NGIAgoraAudioTrack.h
1 
2 // Copyright (c) 2018 Agora.io. All rights reserved
3 
4 // This program is confidential and proprietary to Agora.io.
5 // And may not be copied, reproduced, modified, disclosed to others, published
6 // or used, in whole or in part, without the express prior written permission
7 // of Agora.io.
8 
9 #pragma once // NOLINT(build/header_guard)
10 
11 #include "AgoraBase.h"
12 
13 // FIXME(Ender): use this class instead of AudioSendStream as local track
14 namespace agora {
15 namespace rtc {
16 class IAudioTrackStateObserver;
17 class IAudioFilter;
18 class IAudioSinkBase;
19 class IMediaPacketReceiver;
20 class IAudioEncodedFrameReceiver;
31 
33  size_t channels;
34 
36  channels(0) {}
37  AudioSinkWants(int sampleRate, size_t chs) : samplesPerSec(sampleRate),
38  channels(chs) {}
39 };
40 
45  public:
78  };
79 
80  public:
88  virtual int adjustPlayoutVolume(int volume) = 0;
89 
97  virtual int getPlayoutVolume(int* volume) = 0;
98 
120 
130  virtual int enableAudioFilter(const char* id, bool enable, AudioFilterPosition position) {
131  (void)id;
132  (void)enable;
133  (void)position;
134  return -1;
135  }
136 
147  virtual int setFilterProperty(const char* id, const char* key, const char* jsonValue, AudioFilterPosition position) {
148  (void)id;
149  (void)key;
150  (void)jsonValue;
151  (void)position;
152  return -1;
153  }
154 
166  virtual int getFilterProperty(const char* id, const char* key, char* jsonValue, size_t bufSize, AudioFilterPosition position) {
167  (void)id;
168  (void)key;
169  (void)jsonValue;
170  (void)bufSize;
171  (void)position;
172  return -1;
173  }
174 
184  virtual agora_refptr<IAudioFilter> getAudioFilter(const char *name, AudioFilterPosition position) const = 0;
185 
195  virtual bool addAudioSink(agora_refptr<IAudioSinkBase> sink, const AudioSinkWants& wants) = 0;
196 
206 };
207 
212  public:
214 
222  LOCAL_AUDIO_STREAM_ERROR errorCode) = 0;
223 };
224 
240  public:
248  uint32_t source_id;
279  uint32_t effect_type;
283  uint32_t hw_ear_monitor;
287  bool enabled;
291  uint32_t audio_volume; // [0,255]
292 
300  effect_type(0),
301  hw_ear_monitor(0),
302  enabled(false),
303  audio_volume(0) {}
304  };
305 
306  public:
316  virtual void setEnabled(bool enable) = 0;
317 
324  virtual bool isEnabled() const = 0;
325 
331 
337 
346  virtual int adjustPublishVolume(int volume) = 0;
347 
355  virtual int getPublishVolume(int* volume) = 0;
356 
369  virtual int enableLocalPlayback(bool enable, bool sync = false) = 0;
370 
382  virtual int enableEarMonitor(bool enable, int includeAudioFilters) = 0;
401 
402  protected:
404 };
405 
417  int quality;
455  int64_t received_bytes;
483  int32_t audio_level;
499  uint32_t burst_peak_num;
503  uint32_t burst_jitter;
515  uint16_t accelerate_rate;
543  uint32_t mos_value;
553 
554  int32_t e2e_delay_ms;
563 
568 
570  uid(0),
571  quality(0),
574  audio_loss_rate(0),
575  num_channels(0),
577  received_bitrate(0),
579  frozen_rate(0),
580  received_bytes(0),
585  min_sequence_number(0xFFFF),
587  audio_level(0),
591  burst_peak_num(0),
592  burst_jitter(0),
595  accelerate_rate(0),
602  mos_value(0),
604  publish_duration(0),
605  e2e_delay_ms(0),
606  qoe_quality(0),
609 };
610 
615  public:
623  virtual bool getStatistics(RemoteAudioTrackStats& stats) = 0;
624 
630 
643  virtual int registerMediaPacketReceiver(IMediaPacketReceiver* packetReceiver) = 0;
644 
652  virtual int unregisterMediaPacketReceiver(IMediaPacketReceiver* packetReceiver) = 0;
653 
667 
676 
689  virtual int setRemoteVoicePosition(float pan, float gain) = 0;
690 
700  virtual int enableSpatialAudio(bool enabled) = 0;
701 
711 };
712 
713 } // namespace rtc
714 } // namespace agora
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::effect_type
uint32_t effect_type
Definition: NGIAgoraAudioTrack.h:279
agora::rtc::IRemoteAudioTrack::unregisterAudioEncodedFrameReceiver
virtual int unregisterAudioEncodedFrameReceiver(IAudioEncodedFrameReceiver *packetReceiver)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats
Definition: NGIAgoraAudioTrack.h:244
agora::rtc::RemoteAudioTrackStats::frozen_rate
int frozen_rate
Definition: NGIAgoraAudioTrack.h:451
agora::rtc::RemoteAudioTrackStats::target_level_prefered_ms
uint32_t target_level_prefered_ms
Definition: NGIAgoraAudioTrack.h:511
agora::rtc::IAudioTrack::enableAudioFilter
virtual int enableAudioFilter(const char *id, bool enable, AudioFilterPosition position)
Definition: NGIAgoraAudioTrack.h:130
agora::rtc::ILocalAudioTrackObserver::~ILocalAudioTrackObserver
virtual ~ILocalAudioTrackObserver()
Definition: NGIAgoraAudioTrack.h:213
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::playout_audio_frames
uint32_t playout_audio_frames
Definition: NGIAgoraAudioTrack.h:275
agora::rtc::IAudioTrack::PostAudioProcessing
@ PostAudioProcessing
Definition: NGIAgoraAudioTrack.h:57
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::RemoteAudioTrackStats::total_frozen_time
int total_frozen_time
Definition: NGIAgoraAudioTrack.h:447
agora::rtc::ILocalAudioTrack::setEnabled
virtual void setEnabled(bool enable)=0
agora::rtc::IRemoteAudioTrack::setRemoteVoicePosition
virtual int setRemoteVoicePosition(float pan, float gain)=0
agora::rtc::RemoteAudioTrackStats::frozen_time_200_ms
uint16_t frozen_time_200_ms
Definition: NGIAgoraAudioTrack.h:535
agora::rtc::REMOTE_AUDIO_STATE
REMOTE_AUDIO_STATE
Definition: AgoraBase.h:2870
agora::rtc::RemoteAudioTrackStats::total_active_time
uint64_t total_active_time
Definition: NGIAgoraAudioTrack.h:548
agora::rtc::ILocalAudioTrackObserver::onLocalAudioTrackStateChanged
virtual void onLocalAudioTrackStateChanged(LOCAL_AUDIO_STREAM_STATE state, LOCAL_AUDIO_STREAM_ERROR errorCode)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::buffered_pcm_data_list_size
uint32_t buffered_pcm_data_list_size
Definition: NGIAgoraAudioTrack.h:255
agora::rtc::IAudioTrack::setFilterProperty
virtual int setFilterProperty(const char *id, const char *key, const char *jsonValue, AudioFilterPosition position)
Definition: NGIAgoraAudioTrack.h:147
agora::rtc::ILocalAudioTrack
Definition: NGIAgoraAudioTrack.h:239
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::missed_audio_frames
uint32_t missed_audio_frames
Definition: NGIAgoraAudioTrack.h:259
agora::rtc::RemoteAudioTrackStats::burst_peak_num
uint32_t burst_peak_num
Definition: NGIAgoraAudioTrack.h:499
agora::rtc::IAudioTrack::addAudioSink
virtual bool addAudioSink(agora_refptr< IAudioSinkBase > sink, const AudioSinkWants &wants)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::audio_volume
uint32_t audio_volume
Definition: NGIAgoraAudioTrack.h:291
agora::rtc::RemoteAudioTrackStats::mean_waiting_time
int mean_waiting_time
Definition: NGIAgoraAudioTrack.h:459
agora::rtc::ILocalAudioTrack::getState
virtual LOCAL_AUDIO_STREAM_STATE getState()=0
agora::rtc::ILocalAudioTrack::GetStats
virtual LocalAudioTrackStats GetStats()=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::pushed_audio_frames
uint32_t pushed_audio_frames
Definition: NGIAgoraAudioTrack.h:267
agora::rtc::IRemoteAudioTrack::getStatistics
virtual bool getStatistics(RemoteAudioTrackStats &stats)=0
agora::rtc::ILocalAudioTrack::enableEarMonitor
virtual int enableEarMonitor(bool enable, int includeAudioFilters)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::enabled
bool enabled
Definition: NGIAgoraAudioTrack.h:287
agora::rtc::RemoteAudioTrackStats
Definition: NGIAgoraAudioTrack.h:409
agora::rtc::IAudioTrack::PcmSource
@ PcmSource
Definition: NGIAgoraAudioTrack.h:65
agora::rtc::RemoteAudioTrackStats::mos_value
uint32_t mos_value
Definition: NGIAgoraAudioTrack.h:543
agora::rtc::RemoteAudioTrackStats::frozen_time_80_ms
uint16_t frozen_time_80_ms
Definition: NGIAgoraAudioTrack.h:527
agora::rtc::RemoteAudioTrackStats::preemptive_expand_rate
uint16_t preemptive_expand_rate
Definition: NGIAgoraAudioTrack.h:519
agora::rtc::IRemoteAudioTrack::setRemoteUserSpatialAudioParams
virtual int setRemoteUserSpatialAudioParams(const agora::SpatialAudioParams &params)=0
agora::rtc::ILocalAudioTrack::unregisterTrackObserver
virtual int unregisterTrackObserver(ILocalAudioTrackObserver *observer)=0
agora::rtc::IAudioTrack::addAudioFilter
virtual bool addAudioFilter(agora_refptr< IAudioFilter > filter, AudioFilterPosition position)=0
agora::rtc::RemoteAudioTrackStats::e2e_delay_ms
int32_t e2e_delay_ms
Definition: NGIAgoraAudioTrack.h:554
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::ILocalAudioTrackObserver
Definition: NGIAgoraAudioTrack.h:211
agora::rtc::ILocalAudioTrack::~ILocalAudioTrack
~ILocalAudioTrack()
Definition: NGIAgoraAudioTrack.h:403
agora::rtc::IAudioTrack::removeAudioSink
virtual bool removeAudioSink(agora_refptr< IAudioSinkBase > sink)=0
agora::rtc::RemoteAudioTrackStats::target_level_base_ms
uint32_t target_level_base_ms
Definition: NGIAgoraAudioTrack.h:507
agora::rtc::ILocalAudioTrack::adjustPublishVolume
virtual int adjustPublishVolume(int volume)=0
agora::rtc::RemoteAudioTrackStats::timestamps_since_last_report
uint32_t timestamps_since_last_report
Definition: NGIAgoraAudioTrack.h:471
agora::rtc::RemoteAudioTrackStats::RemoteAudioTrackStats
RemoteAudioTrackStats()
Definition: NGIAgoraAudioTrack.h:569
agora::rtc::ILocalAudioTrack::isEnabled
virtual bool isEnabled() const =0
agora::rtc::IAudioTrack
Definition: NGIAgoraAudioTrack.h:44
agora::rtc::IAudioTrack::adjustPlayoutVolume
virtual int adjustPlayoutVolume(int volume)=0
agora::rtc::RemoteAudioTrackStats::downlink_effect_type
int32_t downlink_effect_type
Definition: NGIAgoraAudioTrack.h:567
agora::rtc::RemoteAudioTrackStats::expanded_speech_samples
size_t expanded_speech_samples
Definition: NGIAgoraAudioTrack.h:463
agora::rtc::RemoteAudioTrackStats::expanded_noise_samples
size_t expanded_noise_samples
Definition: NGIAgoraAudioTrack.h:467
agora::rtc::RemoteAudioTrackStats::frozen_count_80_ms
uint16_t frozen_count_80_ms
Definition: NGIAgoraAudioTrack.h:523
agora::rtc::RemoteAudioTrackStats::uid
uid_t uid
Definition: NGIAgoraAudioTrack.h:413
agora::rtc::IAudioEncodedFrameReceiver
Definition: NGIAgoraMediaNode.h:503
agora::rtc::RemoteAudioTrackStats::audio_level
int32_t audio_level
Definition: NGIAgoraAudioTrack.h:483
agora::rtc::IAudioTrack::RemoteUserPlayback
@ RemoteUserPlayback
Definition: NGIAgoraAudioTrack.h:61
agora::rtc::RemoteAudioTrackStats::max_sequence_number
uint16_t max_sequence_number
Definition: NGIAgoraAudioTrack.h:479
agora::rtc::RemoteAudioTrackStats::downlink_process_time_ms
uint32_t downlink_process_time_ms
Definition: NGIAgoraAudioTrack.h:487
agora::rtc::IMediaPacketReceiver
Definition: NGIAgoraMediaNode.h:523
agora::rtc::AudioSinkWants::channels
size_t channels
Definition: NGIAgoraAudioTrack.h:33
agora::rtc::IAudioTrack::removeAudioFilter
virtual bool removeAudioFilter(agora_refptr< IAudioFilter > filter, AudioFilterPosition position)=0
agora::rtc::IAudioTrack::PcmSourceLocalPlayback
@ PcmSourceLocalPlayback
Definition: NGIAgoraAudioTrack.h:73
agora::rtc::IAudioTrack::getAudioFilter
virtual agora_refptr< IAudioFilter > getAudioFilter(const char *name, AudioFilterPosition position) const =0
agora::rtc::ILocalAudioTrack::enableLocalPlayback
virtual int enableLocalPlayback(bool enable, bool sync=false)=0
agora::rtc::RemoteAudioTrackStats::packet_max_expired_ms
uint32_t packet_max_expired_ms
Definition: NGIAgoraAudioTrack.h:495
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::LocalAudioTrackStats
LocalAudioTrackStats()
Definition: NGIAgoraAudioTrack.h:293
agora::rtc::RemoteAudioTrackStats::audio_loss_rate
int audio_loss_rate
Definition: NGIAgoraAudioTrack.h:429
agora::rtc::AudioSinkWants::AudioSinkWants
AudioSinkWants()
Definition: NGIAgoraAudioTrack.h:35
agora::rtc::RemoteAudioTrackStats::received_bytes
int64_t received_bytes
Definition: NGIAgoraAudioTrack.h:455
agora::rtc::ILocalAudioTrack::registerTrackObserver
virtual int registerTrackObserver(ILocalAudioTrackObserver *observer)=0
agora::rtc::RemoteAudioTrackStats::received_sample_rate
int received_sample_rate
Definition: NGIAgoraAudioTrack.h:437
agora::rtc::RemoteAudioTrackStats::delay_estimate_ms
uint32_t delay_estimate_ms
Definition: NGIAgoraAudioTrack.h:539
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::hw_ear_monitor
uint32_t hw_ear_monitor
Definition: NGIAgoraAudioTrack.h:283
agora::rtc::AudioSinkWants::AudioSinkWants
AudioSinkWants(int sampleRate, size_t chs)
Definition: NGIAgoraAudioTrack.h:37
agora::rtc::ILocalAudioTrack::getPublishVolume
virtual int getPublishVolume(int *volume)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::sent_audio_frames
uint32_t sent_audio_frames
Definition: NGIAgoraAudioTrack.h:263
agora::rtc::RemoteAudioTrackStats::burst_jitter
uint32_t burst_jitter
Definition: NGIAgoraAudioTrack.h:503
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::dropped_audio_frames
uint32_t dropped_audio_frames
Definition: NGIAgoraAudioTrack.h:271
agora::rtc::RemoteAudioTrackStats::accelerate_rate
uint16_t accelerate_rate
Definition: NGIAgoraAudioTrack.h:515
agora::rtc::RemoteAudioTrackStats::received_bitrate
int received_bitrate
Definition: NGIAgoraAudioTrack.h:441
agora::rtc::RemoteAudioTrackStats::jitter_buffer_delay
uint32_t jitter_buffer_delay
Definition: NGIAgoraAudioTrack.h:425
agora::rtc::AudioSinkWants
Definition: NGIAgoraAudioTrack.h:28
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::RemoteAudioTrackStats::packet_expired_loss
uint32_t packet_expired_loss
Definition: NGIAgoraAudioTrack.h:491
agora::rtc::IRemoteAudioTrack::enableSpatialAudio
virtual int enableSpatialAudio(bool enabled)=0
agora::rtc::IAudioTrack::getPlayoutVolume
virtual int getPlayoutVolume(int *volume)=0
agora::rtc::RemoteAudioTrackStats::frozen_count_200_ms
uint16_t frozen_count_200_ms
Definition: NGIAgoraAudioTrack.h:531
agora::rtc::IAudioTrack::getFilterProperty
virtual int getFilterProperty(const char *id, const char *key, char *jsonValue, size_t bufSize, AudioFilterPosition position)
Definition: NGIAgoraAudioTrack.h:166
agora::rtc::RemoteAudioTrackStats::num_channels
int num_channels
Definition: NGIAgoraAudioTrack.h:433
agora::rtc::LOCAL_AUDIO_STREAM_STATE
LOCAL_AUDIO_STREAM_STATE
Definition: AgoraBase.h:2681
agora::rtc::IRemoteAudioTrack::registerMediaPacketReceiver
virtual int registerMediaPacketReceiver(IMediaPacketReceiver *packetReceiver)=0
agora::rtc::IAudioTrack::PcmSourceSending
@ PcmSourceSending
Definition: NGIAgoraAudioTrack.h:69
agora::rtc::RemoteAudioTrackStats::min_sequence_number
uint16_t min_sequence_number
Definition: NGIAgoraAudioTrack.h:475
agora::rtc::AudioSinkWants::samplesPerSec
int samplesPerSec
Definition: NGIAgoraAudioTrack.h:30
agora::rtc::IRemoteAudioTrack::getState
virtual REMOTE_AUDIO_STATE getState()=0
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:29
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::source_id
uint32_t source_id
Definition: NGIAgoraAudioTrack.h:248
agora::rtc::RemoteAudioTrackStats::publish_duration
uint64_t publish_duration
Definition: NGIAgoraAudioTrack.h:552
agora::SpatialAudioParams
Definition: AgoraBase.h:5774
agora::rtc::RemoteAudioTrackStats::quality_changed_reason
int32_t quality_changed_reason
Definition: NGIAgoraAudioTrack.h:562
agora::rtc::RemoteAudioTrackStats::qoe_quality
int qoe_quality
Definition: NGIAgoraAudioTrack.h:558
agora::rtc::IRemoteAudioTrack::registerAudioEncodedFrameReceiver
virtual int registerAudioEncodedFrameReceiver(IAudioEncodedFrameReceiver *packetReceiver)=0
agora::rtc::RemoteAudioTrackStats::quality
int quality
Definition: NGIAgoraAudioTrack.h:417
agora::rtc::IRemoteAudioTrack::unregisterMediaPacketReceiver
virtual int unregisterMediaPacketReceiver(IMediaPacketReceiver *packetReceiver)=0
rtc
Definition: video_node_i.h:25
agora::rtc::IAudioTrack::AudioFilterPosition
AudioFilterPosition
Definition: NGIAgoraAudioTrack.h:49
agora::rtc::IAudioTrack::RemoteMixedPlayback
@ RemoteMixedPlayback
Definition: NGIAgoraAudioTrack.h:77
agora::rtc::LOCAL_AUDIO_STREAM_ERROR
LOCAL_AUDIO_STREAM_ERROR
Definition: AgoraBase.h:2703
agora::rtc::IAudioTrack::RecordingLocalPlayback
@ RecordingLocalPlayback
Definition: NGIAgoraAudioTrack.h:53
agora::rtc::RemoteAudioTrackStats::network_transport_delay
int network_transport_delay
Definition: NGIAgoraAudioTrack.h:421
agora::rtc::IRemoteAudioTrack
Definition: NGIAgoraAudioTrack.h:614