Agora Java API Reference for Android
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 #include <api/cpp/aosl_ares_class.h>
13 
14 // FIXME(Ender): use this class instead of AudioSendStream as local track
15 namespace agora {
16 namespace rtc {
17 class IAudioTrackStateObserver;
18 class IAudioFilter;
19 class IAudioSinkBase;
20 class IMediaPacketReceiver;
21 class IAudioEncodedFrameReceiver;
32 
34  size_t channels;
35 
37  channels(0) {}
38  AudioSinkWants(int sampleRate, size_t chs) : samplesPerSec(sampleRate),
39  channels(chs) {}
40  AudioSinkWants(int sampleRate, size_t chs, int trackNum) : samplesPerSec(sampleRate), channels(chs) {}
41 };
42 
47  public:
80  };
81 
82  public:
90  virtual int adjustPlayoutVolume(int volume, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
91 
99  virtual int getPlayoutVolume(int* volume) = 0;
100 
111  virtual bool addAudioFilter(agora_refptr<IAudioFilter> filter, AudioFilterPosition position, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
121  virtual bool removeAudioFilter(agora_refptr<IAudioFilter> filter, AudioFilterPosition position, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
122 
132  virtual int enableAudioFilter(const char* id, bool enable, AudioFilterPosition position, aosl_ref_t ares = AOSL_REF_INVALID) {
133  (void)id;
134  (void)enable;
135  (void)position;
136  return -1;
137  }
138 
149  virtual int setFilterProperty(const char* id, const char* key, const char* jsonValue, AudioFilterPosition position, aosl_ref_t ares = AOSL_REF_INVALID) {
150  (void)id;
151  (void)key;
152  (void)jsonValue;
153  (void)position;
154  return -1;
155  }
156 
168  virtual int getFilterProperty(const char* id, const char* key, char* jsonValue, size_t bufSize, AudioFilterPosition position) {
169  (void)id;
170  (void)key;
171  (void)jsonValue;
172  (void)bufSize;
173  (void)position;
174  return -1;
175  }
176 
186  virtual agora_refptr<IAudioFilter> getAudioFilter(const char *name, AudioFilterPosition position) const = 0;
187 
197  virtual bool addAudioSink(agora_refptr<IAudioSinkBase> sink, const AudioSinkWants& wants, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
198 
207  virtual bool removeAudioSink(agora_refptr<IAudioSinkBase> sink, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
208 };
209 
214  public:
215  virtual ~ILocalAudioTrackObserver() {}
216 
223  virtual void onLocalAudioTrackStateChanged(LOCAL_AUDIO_STREAM_STATE state,
224  LOCAL_AUDIO_STREAM_REASON reasonCode) = 0;
225 };
226 
242  public:
250  uint32_t source_id;
281  uint32_t effect_type;
285  uint32_t hw_ear_monitor;
289  bool enabled;
293  uint32_t audio_volume; // [0,255]
294 
302  effect_type(0),
303  hw_ear_monitor(0),
304  enabled(false),
305  audio_volume(0) {}
306  };
307 
308  public:
318  virtual int setEnabled(bool enable, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
319 
326  virtual bool isEnabled() const = 0;
327 
332  virtual LOCAL_AUDIO_STREAM_STATE getState() = 0;
333 
339 
348  virtual int adjustPublishVolume(int volume, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
349 
357  virtual int getPublishVolume(int* volume) = 0;
358 
371  virtual int enableLocalPlayback(bool enable, bool sync = true, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
372 
384  virtual int enableEarMonitor(bool enable, int includeAudioFilters, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
393  virtual int registerTrackObserver(ILocalAudioTrackObserver* observer, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
403 
404  protected:
405  ~ILocalAudioTrack() {}
406 };
407 
415  uid_t uid;
419  int quality;
457  int64_t received_bytes;
485  int32_t audio_level;
501  uint32_t burst_peak_num;
505  uint32_t burst_jitter;
517  uint16_t accelerate_rate;
538 
554  uint32_t mos_value;
563  uint32_t plc_count;
567  int32_t fec_decode_ms;
581 
582  int32_t e2e_delay_ms;
591 
596 
598  uid(0),
599  quality(0),
602  audio_loss_rate(0),
603  num_channels(0),
605  received_bitrate(0),
607  frozen_rate(0),
608  received_bytes(0),
613  min_sequence_number(0xFFFF),
615  audio_level(0),
619  burst_peak_num(0),
620  burst_jitter(0),
623  accelerate_rate(0),
632  mos_value(0),
634  plc_count(0),
635  fec_decode_ms(-1),
638  publish_duration(0),
639  e2e_delay_ms(0),
640  qoe_quality(0),
643 };
644 
649  public:
657  virtual bool getStatistics(RemoteAudioTrackStats& stats) = 0;
658 
663  virtual REMOTE_AUDIO_STATE getState() = 0;
664 
677  virtual int registerMediaPacketReceiver(IMediaPacketReceiver* packetReceiver, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
678 
686  virtual int unregisterMediaPacketReceiver(IMediaPacketReceiver* packetReceiver) = 0;
687 
700  virtual int registerAudioEncodedFrameReceiver(IAudioEncodedFrameReceiver* packetReceiver, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
701 
710 
723  virtual int setRemoteVoicePosition(float pan, float gain, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
724 
735  virtual int muteRemoteFromTimestamp(uint32_t timestamp) = 0;
736 
747  virtual int unmuteRemoteFromTimestamp(uint32_t timestamp) = 0;
748 
762  virtual int adjustAudioAcceleration(int percentage, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
763 
777  virtual int adjustAudioDeceleration(int percentage, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
778 
788  virtual int enableSpatialAudio(bool enabled, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
789 
798  virtual int setRemoteUserSpatialAudioParams(const agora::SpatialAudioParams& params, aosl_ref_t ares = AOSL_REF_INVALID) = 0;
799 };
800 
801 } // namespace rtc
802 } // namespace agora
agora::rtc::IRemoteAudioTrack::muteRemoteFromTimestamp
virtual int muteRemoteFromTimestamp(uint32_t timestamp)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::effect_type
uint32_t effect_type
Definition: NGIAgoraAudioTrack.h:281
agora::rtc::IRemoteAudioTrack::unregisterAudioEncodedFrameReceiver
virtual int unregisterAudioEncodedFrameReceiver(IAudioEncodedFrameReceiver *packetReceiver)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats
Definition: NGIAgoraAudioTrack.h:246
agora::rtc::RemoteAudioTrackStats::frozen_rate
int frozen_rate
Definition: NGIAgoraAudioTrack.h:453
agora::rtc::RemoteAudioTrackStats::frozen_count_by_custom
uint16_t frozen_count_by_custom
Definition: NGIAgoraAudioTrack.h:542
agora::rtc::RemoteAudioTrackStats::target_level_prefered_ms
uint32_t target_level_prefered_ms
Definition: NGIAgoraAudioTrack.h:513
agora::rtc::ILocalAudioTrack::enableEarMonitor
virtual int enableEarMonitor(bool enable, int includeAudioFilters, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::frozen_time_ms_by_custom
uint16_t frozen_time_ms_by_custom
Definition: NGIAgoraAudioTrack.h:546
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::playout_audio_frames
uint32_t playout_audio_frames
Definition: NGIAgoraAudioTrack.h:277
agora::rtc::IAudioTrack::PostAudioProcessing
@ PostAudioProcessing
Definition: NGIAgoraAudioTrack.h:59
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::RemoteAudioTrackStats::total_frozen_time
int total_frozen_time
Definition: NGIAgoraAudioTrack.h:449
agora::rtc::RemoteAudioTrackStats::plc_count
uint32_t plc_count
Definition: NGIAgoraAudioTrack.h:563
agora::rtc::RemoteAudioTrackStats::frozen_time_200_ms
uint16_t frozen_time_200_ms
Definition: NGIAgoraAudioTrack.h:537
agora::rtc::RemoteAudioTrackStats::total_active_time
uint64_t total_active_time
Definition: NGIAgoraAudioTrack.h:576
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::buffered_pcm_data_list_size
uint32_t buffered_pcm_data_list_size
Definition: NGIAgoraAudioTrack.h:257
agora::rtc::IAudioTrack::adjustPlayoutVolume
virtual int adjustPlayoutVolume(int volume, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::ILocalAudioTrack
Definition: NGIAgoraAudioTrack.h:241
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::missed_audio_frames
uint32_t missed_audio_frames
Definition: NGIAgoraAudioTrack.h:261
agora::rtc::ILocalAudioTrack::setEnabled
virtual int setEnabled(bool enable, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::burst_peak_num
uint32_t burst_peak_num
Definition: NGIAgoraAudioTrack.h:501
agora::rtc::IAudioTrack::enableAudioFilter
virtual int enableAudioFilter(const char *id, bool enable, AudioFilterPosition position, aosl_ref_t ares=AOSL_REF_INVALID)
Definition: NGIAgoraAudioTrack.h:132
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::audio_volume
uint32_t audio_volume
Definition: NGIAgoraAudioTrack.h:293
agora::rtc::RemoteAudioTrackStats::mean_waiting_time
int mean_waiting_time
Definition: NGIAgoraAudioTrack.h:461
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:269
agora::rtc::IRemoteAudioTrack::getStatistics
virtual bool getStatistics(RemoteAudioTrackStats &stats)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::enabled
bool enabled
Definition: NGIAgoraAudioTrack.h:289
agora::rtc::RemoteAudioTrackStats
Definition: NGIAgoraAudioTrack.h:411
agora::rtc::IAudioTrack::PcmSource
@ PcmSource
Definition: NGIAgoraAudioTrack.h:67
agora::rtc::RemoteAudioTrackStats::mos_value
uint32_t mos_value
Definition: NGIAgoraAudioTrack.h:554
agora::rtc::RemoteAudioTrackStats::frozen_time_80_ms
uint16_t frozen_time_80_ms
Definition: NGIAgoraAudioTrack.h:529
agora::rtc::RemoteAudioTrackStats::preemptive_expand_rate
uint16_t preemptive_expand_rate
Definition: NGIAgoraAudioTrack.h:521
agora::rtc::ILocalAudioTrack::unregisterTrackObserver
virtual int unregisterTrackObserver(ILocalAudioTrackObserver *observer)=0
agora::rtc::ILocalAudioTrack::enableLocalPlayback
virtual int enableLocalPlayback(bool enable, bool sync=true, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::ILocalAudioTrackObserver
Definition: NGIAgoraAudioTrack.h:213
agora::rtc::IAudioTrack::removeAudioFilter
virtual bool removeAudioFilter(agora_refptr< IAudioFilter > filter, AudioFilterPosition position, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::target_level_base_ms
uint32_t target_level_base_ms
Definition: NGIAgoraAudioTrack.h:509
agora::rtc::ILocalAudioTrack::registerTrackObserver
virtual int registerTrackObserver(ILocalAudioTrackObserver *observer, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::timestamps_since_last_report
uint32_t timestamps_since_last_report
Definition: NGIAgoraAudioTrack.h:473
agora::rtc::ILocalAudioTrack::isEnabled
virtual bool isEnabled() const =0
agora::rtc::IAudioTrack
Definition: NGIAgoraAudioTrack.h:46
agora::rtc::IAudioTrack::removeAudioSink
virtual bool removeAudioSink(agora_refptr< IAudioSinkBase > sink, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::frozen_count_10_ms
uint16_t frozen_count_10_ms
Definition: NGIAgoraAudioTrack.h:571
agora::rtc::RemoteAudioTrackStats::downlink_effect_type
int32_t downlink_effect_type
Definition: NGIAgoraAudioTrack.h:595
agora::rtc::RemoteAudioTrackStats::expanded_speech_samples
size_t expanded_speech_samples
Definition: NGIAgoraAudioTrack.h:465
agora::rtc::RemoteAudioTrackStats::expanded_noise_samples
size_t expanded_noise_samples
Definition: NGIAgoraAudioTrack.h:469
agora::rtc::IRemoteAudioTrack::setRemoteVoicePosition
virtual int setRemoteVoicePosition(float pan, float gain, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::frozen_count_80_ms
uint16_t frozen_count_80_ms
Definition: NGIAgoraAudioTrack.h:525
agora::rtc::RemoteAudioTrackStats::uid
uid_t uid
Definition: NGIAgoraAudioTrack.h:415
agora::rtc::IAudioEncodedFrameReceiver
Definition: NGIAgoraMediaNode.h:560
agora::rtc::RemoteAudioTrackStats::audio_level
int32_t audio_level
Definition: NGIAgoraAudioTrack.h:485
agora::rtc::IAudioTrack::setFilterProperty
virtual int setFilterProperty(const char *id, const char *key, const char *jsonValue, AudioFilterPosition position, aosl_ref_t ares=AOSL_REF_INVALID)
Definition: NGIAgoraAudioTrack.h:149
agora::rtc::IAudioTrack::RemoteUserPlayback
@ RemoteUserPlayback
Definition: NGIAgoraAudioTrack.h:63
agora::rtc::RemoteAudioTrackStats::max_sequence_number
uint16_t max_sequence_number
Definition: NGIAgoraAudioTrack.h:481
agora::rtc::RemoteAudioTrackStats::downlink_process_time_ms
uint32_t downlink_process_time_ms
Definition: NGIAgoraAudioTrack.h:489
agora::rtc::IMediaPacketReceiver
Definition: NGIAgoraMediaNode.h:580
agora::rtc::AudioSinkWants::channels
size_t channels
Definition: NGIAgoraAudioTrack.h:34
agora::rtc::IAudioTrack::PcmSourceLocalPlayback
@ PcmSourceLocalPlayback
Definition: NGIAgoraAudioTrack.h:75
agora::rtc::IAudioTrack::getAudioFilter
virtual agora_refptr< IAudioFilter > getAudioFilter(const char *name, AudioFilterPosition position) const =0
agora::rtc::RemoteAudioTrackStats::frozen_rate_by_custom_plc_count
uint32_t frozen_rate_by_custom_plc_count
Definition: NGIAgoraAudioTrack.h:559
agora::rtc::RemoteAudioTrackStats::fec_decode_ms
int32_t fec_decode_ms
Definition: NGIAgoraAudioTrack.h:567
agora::rtc::RemoteAudioTrackStats::packet_max_expired_ms
uint32_t packet_max_expired_ms
Definition: NGIAgoraAudioTrack.h:497
agora::rtc::RemoteAudioTrackStats::audio_loss_rate
int audio_loss_rate
Definition: NGIAgoraAudioTrack.h:431
agora::rtc::IAudioTrack::addAudioFilter
virtual bool addAudioFilter(agora_refptr< IAudioFilter > filter, AudioFilterPosition position, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::received_bytes
int64_t received_bytes
Definition: NGIAgoraAudioTrack.h:457
agora::rtc::RemoteAudioTrackStats::received_sample_rate
int received_sample_rate
Definition: NGIAgoraAudioTrack.h:439
agora::rtc::RemoteAudioTrackStats::delay_estimate_ms
uint32_t delay_estimate_ms
Definition: NGIAgoraAudioTrack.h:550
agora::rtc::ILocalAudioTrackObserver::onLocalAudioTrackStateChanged
virtual void onLocalAudioTrackStateChanged(LOCAL_AUDIO_STREAM_STATE state, LOCAL_AUDIO_STREAM_REASON reasonCode)=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::hw_ear_monitor
uint32_t hw_ear_monitor
Definition: NGIAgoraAudioTrack.h:285
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:265
agora::rtc::IRemoteAudioTrack::registerAudioEncodedFrameReceiver
virtual int registerAudioEncodedFrameReceiver(IAudioEncodedFrameReceiver *packetReceiver, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::burst_jitter
uint32_t burst_jitter
Definition: NGIAgoraAudioTrack.h:505
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::dropped_audio_frames
uint32_t dropped_audio_frames
Definition: NGIAgoraAudioTrack.h:273
agora::rtc::RemoteAudioTrackStats::accelerate_rate
uint16_t accelerate_rate
Definition: NGIAgoraAudioTrack.h:517
agora::rtc::RemoteAudioTrackStats::received_bitrate
int received_bitrate
Definition: NGIAgoraAudioTrack.h:443
agora::rtc::IRemoteAudioTrack::unmuteRemoteFromTimestamp
virtual int unmuteRemoteFromTimestamp(uint32_t timestamp)=0
agora::rtc::RemoteAudioTrackStats::jitter_buffer_delay
uint32_t jitter_buffer_delay
Definition: NGIAgoraAudioTrack.h:427
agora::rtc::AudioSinkWants
Definition: NGIAgoraAudioTrack.h:29
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::IRemoteAudioTrack::adjustAudioDeceleration
virtual int adjustAudioDeceleration(int percentage, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::packet_expired_loss
uint32_t packet_expired_loss
Definition: NGIAgoraAudioTrack.h:493
agora::rtc::IRemoteAudioTrack::registerMediaPacketReceiver
virtual int registerMediaPacketReceiver(IMediaPacketReceiver *packetReceiver, aosl_ref_t ares=AOSL_REF_INVALID)=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:533
agora::rtc::IRemoteAudioTrack::enableSpatialAudio
virtual int enableSpatialAudio(bool enabled, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IAudioTrack::addAudioSink
virtual bool addAudioSink(agora_refptr< IAudioSinkBase > sink, const AudioSinkWants &wants, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IAudioTrack::getFilterProperty
virtual int getFilterProperty(const char *id, const char *key, char *jsonValue, size_t bufSize, AudioFilterPosition position)
Definition: NGIAgoraAudioTrack.h:168
agora::rtc::RemoteAudioTrackStats::num_channels
int num_channels
Definition: NGIAgoraAudioTrack.h:435
agora::rtc::IAudioTrack::PcmSourceSending
@ PcmSourceSending
Definition: NGIAgoraAudioTrack.h:71
agora::rtc::RemoteAudioTrackStats::min_sequence_number
uint16_t min_sequence_number
Definition: NGIAgoraAudioTrack.h:477
agora::rtc::AudioSinkWants::samplesPerSec
int samplesPerSec
Definition: NGIAgoraAudioTrack.h:31
agora::rtc::IRemoteAudioTrack::getState
virtual REMOTE_AUDIO_STATE getState()=0
agora::rtc::ILocalAudioTrack::LocalAudioTrackStats::source_id
uint32_t source_id
Definition: NGIAgoraAudioTrack.h:250
agora::rtc::RemoteAudioTrackStats::publish_duration
uint64_t publish_duration
Definition: NGIAgoraAudioTrack.h:580
agora::rtc::IRemoteAudioTrack::setRemoteUserSpatialAudioParams
virtual int setRemoteUserSpatialAudioParams(const agora::SpatialAudioParams &params, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::SpatialAudioParams
Definition: AgoraBase.h:6315
agora::rtc::IRemoteAudioTrack::adjustAudioAcceleration
virtual int adjustAudioAcceleration(int percentage, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::RemoteAudioTrackStats::quality_changed_reason
int32_t quality_changed_reason
Definition: NGIAgoraAudioTrack.h:590
agora::rtc::RemoteAudioTrackStats::qoe_quality
int qoe_quality
Definition: NGIAgoraAudioTrack.h:586
agora::rtc::RemoteAudioTrackStats::quality
int quality
Definition: NGIAgoraAudioTrack.h:419
agora::rtc::IRemoteAudioTrack::unregisterMediaPacketReceiver
virtual int unregisterMediaPacketReceiver(IMediaPacketReceiver *packetReceiver)=0
agora::rtc::ILocalAudioTrack::adjustPublishVolume
virtual int adjustPublishVolume(int volume, aosl_ref_t ares=AOSL_REF_INVALID)=0
agora::rtc::IAudioTrack::AudioFilterPosition
AudioFilterPosition
Definition: NGIAgoraAudioTrack.h:51
agora::rtc::IAudioTrack::RemoteMixedPlayback
@ RemoteMixedPlayback
Definition: NGIAgoraAudioTrack.h:79
agora::rtc::IAudioTrack::RecordingLocalPlayback
@ RecordingLocalPlayback
Definition: NGIAgoraAudioTrack.h:55
agora::rtc::RemoteAudioTrackStats::network_transport_delay
int network_transport_delay
Definition: NGIAgoraAudioTrack.h:423
agora::rtc::IRemoteAudioTrack
Definition: NGIAgoraAudioTrack.h:648