Agora C++ API Reference for All Platforms
local_user_i.h
1 //
2 // Agora Media SDK
3 //
4 // Created by Sting Feng in 2015-05.
5 // Copyright (c) 2015 Agora IO. All rights reserved.
6 //
7 #pragma once
8 
9 #include <string>
10 #include <vector>
11 
12 #include "IAgoraService.h"
13 #include "NGIAgoraLocalUser.h"
14 #include "api2/NGIAgoraRtcConnection.h"
15 #include "audio_options_i.h"
16 #include "channel_capability_i.h"
17 
18 namespace agora {
19 namespace rtc {
20 
21 struct TConnectionInfo;
22 
23 struct audio_packet_t;
24 struct SAudioFrame;
25 struct video_packet_t;
26 struct control_broadcast_packet_t;
27 struct CallBillInfo;
28 class IMetadataObserver;
29 
31  public:
33  virtual int onAudioPacket(const agora::rtc::TConnectionInfo& connectionInfo,
34  const audio_packet_t& p) = 0;
35  virtual int onVideoPacket(const agora::rtc::TConnectionInfo& connectionInfo,
36  const video_packet_t& p) = 0;
37  virtual int onControlBroadcastPacket(const agora::rtc::TConnectionInfo& connectionInfo,
39  virtual int onDataStreamPacket(const agora::rtc::TConnectionInfo& connectionInfo,
40  agora::rtc::uid_t uid, uint16_t streamId, const char* data,
41  size_t length) = 0;
42 };
43 
44 // Audio frame dump position for sending.
45 extern const std::string AUDIO_PIPELINE_POS_RECORD_ORIGIN;
46 extern const std::string AUDIO_PIPELINE_POS_PRE_APM_PROC;
47 extern const std::string AUDIO_PIPELINE_POS_APM;
48 extern const std::string AUDIO_PIPELINE_POS_PRE_SEND_PROC;
49 extern const std::string AUDIO_PIPELINE_POS_FILTER;
50 extern const std::string AUDIO_PIPELINE_POS_ENC;
51 extern const std::string AUDIO_PIPELINE_POS_TX_MIXER;
52 extern const std::string AUDIO_PIPELINE_POS_AT_RECORD;
53 extern const std::string AUDIO_PIPELINE_POS_ATW_RECORD;
54 
55 // Audio frame dump position for receiving.
56 extern const std::string AUDIO_PIPELINE_POS_DEC;
57 extern const std::string AUDIO_PIPELINE_POS_MIXED;
58 extern const std::string AUDIO_PIPELINE_POS_PLAY;
59 extern const std::string AUDIO_PIPELINE_POS_RX_MIXER;
60 extern const std::string AUDIO_PIPELINE_POS_PLAYBACK_MIXER;
61 extern const std::string AUDIO_PIPELINE_POS_PCM_SOURCE_PLAYBAC_MIXER;
62 extern const std::string AUDIO_PIPELINE_POS_PRE_PLAY_PROC;
63 extern const std::string AUDIO_PIPELINE_POS_AT_PLAYOUT;
64 extern const std::string AUDIO_PIPELINE_POS_ATW_PLAYOUT;
65 
67 const int64_t AUDIO_FRAME_DUMP_MAX_DURATION_MS = 150000;
68 
70  public:
71  virtual ~IAudioFrameDumpObserver() = default;
72  virtual void OnAudioFrameDumpCompleted(const std::string& location, const std::string& uuid,
73  const std::vector<std::string>& files) = 0;
74 };
75 
77  uint8_t id;
78  const char* name;
79  CapabilityItem() : id(0), name(nullptr) {}
80  CapabilityItem(uint8_t i, const char* n) : id(i), name(n) {}
81 };
82 
85  size_t size;
86  CapabilityItemMap() : item(nullptr), size(0) {}
87  CapabilityItemMap(CapabilityItem* i, size_t s) : item(i), size(s) {}
88 };
89 
90 struct Capabilities {
93  Capabilities() : item_map(nullptr), type(agora::capability::CapabilityType::kChannelProfile) {}
95 };
96 
98  public:
99  virtual void OnCapabilitesChanged(const Capabilities* capabilities, size_t size){};
100  virtual ~ICapabilitesObserver() = default;
101 };
102 
104  public:
105  virtual int initialize() = 0;
106  // We should deprecate sendAudioPacket.
107  virtual int sendAudioPacket(const audio_packet_t& packet, int delay = 0) = 0;
108 
109  virtual int sendAudioFrame(const SAudioFrame& frame, int delay = 0) = 0;
110  virtual int sendVideoPacket(const video_packet_t& packet) = 0;
112 
113  virtual int sendDataStreamPacket(uint16_t streamId, const char* data, size_t length) = 0;
114 
115  // No-thread safe, it must be called before joinChannel().
116  // No unregister method provided to simplify internal logic.
118 
119  // internal usage
120  virtual int setAudioOptions(const rtc::AudioOptions& options) = 0;
121  virtual int getAudioOptions(rtc::AudioOptions* options) = 0;
122  virtual int setAdvancedAudioOptions(const rtc::AudioOptions& options, int sourceType) = 0;
123  virtual int getAecDelay(int sourceType, int* aecDelay) = 0;
124  virtual void getBillInfo(CallBillInfo* bill_info) = 0;
125 
126  virtual void forceDeviceScore(const int32_t deviceScore) = 0;
127  virtual int setPrerendererSmoothing(bool enabled) = 0;
128  virtual int setDtx(bool enabled) = 0;
129  virtual int setCustomAudioBitrate(int bitrate) = 0;
130  virtual int setAudioFrameSizeMs(int sizeMs) = 0;
131  virtual int setAudioCC(bool value) = 0;
132 
135 
136  virtual int startAudioFrameDump(const std::string& location, const std::string& uuid,
137  const std::string& passwd, int64_t duration_ms,
138  bool auto_upload) = 0;
139  virtual int stopAudioFrameDump(const std::string& location) = 0;
140 
141  virtual int setPlayoutUserAnonymous(rtc::uid_t uid, bool anonymous) = 0;
142  virtual int enableAudioPlayout(bool enabled) = 0;
143 
146 
148 
150 
151  virtual int setAVSyncPeer(rtc::uid_t uid) = 0;
152  virtual int getOnlySubscribeEncodedVideoFrame(user_id_t peerUid, bool& subscribe) = 0;
153  virtual void setMinPlayoutDelay(int delay) = 0;
154  virtual int setAllowSubscribeSelf(bool allow) = 0;
155  virtual int adjustRecordingSignalVolume(int volume) = 0;
156  virtual int getRecordingSignalVolume(int* volume) = 0;
157  virtual bool ForcePeriodicKeyFrame() = 0;
158  virtual int registerCapabilitiesObserver(ICapabilitesObserver* cap_observer) = 0;
159  virtual int unRegisterCapabilitiesObserver(ICapabilitesObserver* cap_observer) = 0;
160  virtual void updateAppDefinedCapabilities(const Capabilities* cap, size_t size) = 0;
161  virtual int sendIntraRequestQuick(user_id_t uid) = 0;
162  // this function should only be used in media_relay
163  // In the media_relay case, there are no track to help video_stream_manager get the video_height
164  // and video_width just receive the video packets and send this function used to help us
165  // UpdateBillInfo by ourself
166  virtual void customUpdateBillInfo(int height, int width, bool isSendingVideo) = 0;
167  virtual void setInteractiveAudience(bool interactive) = 0;
168  virtual int setVideoDumpMode(int mode, bool enabled) = 0;
169 };
170 
171 } // namespace rtc
172 } // namespace agora
agora::rtc::CapabilityItem::CapabilityItem
CapabilityItem(uint8_t i, const char *n)
Definition: local_user_i.h:80
agora::rtc::ILocalUserEx::getRecordingSignalVolume
virtual int getRecordingSignalVolume(int *volume)=0
agora::rtc::AUDIO_PIPELINE_POS_MIXED
const std::string AUDIO_PIPELINE_POS_MIXED
agora::rtc::ILocalUserEx::enableAudioPlayout
virtual int enableAudioPlayout(bool enabled)=0
agora::rtc::AUDIO_PIPELINE_POS_PLAY
const std::string AUDIO_PIPELINE_POS_PLAY
agora::rtc::AudioOptions
Definition: audio_options_i.h:46
agora::rtc::CapabilityItemMap::item
CapabilityItem * item
Definition: local_user_i.h:84
agora::rtc::AUDIO_PIPELINE_POS_DEC
const std::string AUDIO_PIPELINE_POS_DEC
agora::rtc::AUDIO_PIPELINE_POS_PRE_SEND_PROC
const std::string AUDIO_PIPELINE_POS_PRE_SEND_PROC
agora::rtc::AUDIO_PIPELINE_POS_FILTER
const std::string AUDIO_PIPELINE_POS_FILTER
agora::rtc::IAudioFrameDumpObserver
Definition: local_user_i.h:69
agora::rtc::ILocalUserEx::setAudioFrameSizeMs
virtual int setAudioFrameSizeMs(int sizeMs)=0
agora::rtc::ILocalUserEx::setDtx
virtual int setDtx(bool enabled)=0
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::ILocalUserEx::registerAudioFrameDumpObserver
virtual int registerAudioFrameDumpObserver(IAudioFrameDumpObserver *observer)=0
agora::rtc::AUDIO_PIPELINE_POS_ATW_RECORD
const std::string AUDIO_PIPELINE_POS_ATW_RECORD
agora::rtc::ILocalUserEx::setPlayoutUserAnonymous
virtual int setPlayoutUserAnonymous(rtc::uid_t uid, bool anonymous)=0
agora::rtc::ILocalUserEx::setCustomAudioBitrate
virtual int setCustomAudioBitrate(int bitrate)=0
agora::rtc::ITransportPacketObserver::onAudioPacket
virtual int onAudioPacket(const agora::rtc::TConnectionInfo &connectionInfo, const audio_packet_t &p)=0
agora::rtc::ILocalUserEx::getAudioOptions
virtual int getAudioOptions(rtc::AudioOptions *options)=0
agora::rtc::ILocalUserEx::registerVideoMetadataObserver
virtual void registerVideoMetadataObserver(IMetadataObserver *observer)=0
agora::rtc::AUDIO_PIPELINE_POS_RECORD_ORIGIN
const std::string AUDIO_PIPELINE_POS_RECORD_ORIGIN
agora::rtc::ILocalUserEx::sendAudioFrame
virtual int sendAudioFrame(const SAudioFrame &frame, int delay=0)=0
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1142
agora::rtc::Capabilities::type
agora::capability::CapabilityType type
Definition: local_user_i.h:92
agora::rtc::ICapabilitesObserver::OnCapabilitesChanged
virtual void OnCapabilitesChanged(const Capabilities *capabilities, size_t size)
Definition: local_user_i.h:99
agora::rtc::AUDIO_PIPELINE_POS_PCM_SOURCE_PLAYBAC_MIXER
const std::string AUDIO_PIPELINE_POS_PCM_SOURCE_PLAYBAC_MIXER
agora::user_id_t
const char * user_id_t
Definition: AgoraBase.h:798
agora::rtc::ITransportPacketObserver::onDataStreamPacket
virtual int onDataStreamPacket(const agora::rtc::TConnectionInfo &connectionInfo, agora::rtc::uid_t uid, uint16_t streamId, const char *data, size_t length)=0
agora::rtc::ICapabilitesObserver::~ICapabilitesObserver
virtual ~ICapabilitesObserver()=default
agora::capability::CapabilityType
CapabilityType
Definition: channel_capability_i.h:105
agora::rtc::ILocalUserEx::sendIntraRequestQuick
virtual int sendIntraRequestQuick(user_id_t uid)=0
agora::rtc::ILocalUserEx::getOnlySubscribeEncodedVideoFrame
virtual int getOnlySubscribeEncodedVideoFrame(user_id_t peerUid, bool &subscribe)=0
agora::rtc::AUDIO_PIPELINE_POS_ENC
const std::string AUDIO_PIPELINE_POS_ENC
agora::rtc::ILocalUserEx::setPrerendererSmoothing
virtual int setPrerendererSmoothing(bool enabled)=0
agora::rtc::CapabilityItemMap::size
size_t size
Definition: local_user_i.h:85
agora::rtc::IMetadataObserver
Definition: IAgoraRtcEngine.h:3022
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::Capabilities::Capabilities
Capabilities()
Definition: local_user_i.h:93
agora::rtc::ILocalUserEx::initialize
virtual int initialize()=0
agora::rtc::ILocalUserEx::setAudioOptions
virtual int setAudioOptions(const rtc::AudioOptions &options)=0
agora::rtc::AUDIO_PIPELINE_POS_AT_RECORD
const std::string AUDIO_PIPELINE_POS_AT_RECORD
agora::rtc::ILocalUserEx::unRegisterCapabilitiesObserver
virtual int unRegisterCapabilitiesObserver(ICapabilitesObserver *cap_observer)=0
agora::rtc::AUDIO_FRAME_DUMP_MIN_DURATION_MS
const int64_t AUDIO_FRAME_DUMP_MIN_DURATION_MS
Definition: local_user_i.h:66
agora::rtc::ILocalUserEx::sendDataStreamPacket
virtual int sendDataStreamPacket(uint16_t streamId, const char *data, size_t length)=0
agora::rtc::ILocalUserEx::ForcePeriodicKeyFrame
virtual bool ForcePeriodicKeyFrame()=0
agora::rtc::TConnectionInfo
Definition: NGIAgoraRtcConnection.h:25
agora::rtc::CapabilityItem
Definition: local_user_i.h:76
agora::rtc::CapabilityItem::id
uint8_t id
Definition: local_user_i.h:77
agora::rtc::IAudioFrameDumpObserver::~IAudioFrameDumpObserver
virtual ~IAudioFrameDumpObserver()=default
agora::rtc::ILocalUserEx::registerCapabilitiesObserver
virtual int registerCapabilitiesObserver(ICapabilitesObserver *cap_observer)=0
agora::rtc::ILocalUserEx::adjustRecordingSignalVolume
virtual int adjustRecordingSignalVolume(int volume)=0
agora::rtc::AUDIO_PIPELINE_POS_RX_MIXER
const std::string AUDIO_PIPELINE_POS_RX_MIXER
agora::rtc::AUDIO_FRAME_DUMP_MAX_DURATION_MS
const int64_t AUDIO_FRAME_DUMP_MAX_DURATION_MS
Definition: local_user_i.h:67
agora::rtc::video_packet_t
Definition: packet_i.h:143
agora::rtc::ILocalUserEx::getBillInfo
virtual void getBillInfo(CallBillInfo *bill_info)=0
agora::rtc::ILocalUserEx::setMinPlayoutDelay
virtual void setMinPlayoutDelay(int delay)=0
agora::rtc::ILocalUserEx::forceDeviceScore
virtual void forceDeviceScore(const int32_t deviceScore)=0
agora::rtc::SAudioFrame
Definition: packet_i.h:49
agora::rtc::ITransportPacketObserver
Definition: local_user_i.h:30
agora::rtc::ILocalUser
Definition: NGIAgoraLocalUser.h:51
agora::rtc::ILocalUserEx::setVideoFrameObserver
virtual int setVideoFrameObserver(agora::media::IVideoFrameObserver *observer)=0
agora::rtc::ILocalUserEx
Definition: local_user_i.h:103
agora::rtc::AUDIO_PIPELINE_POS_TX_MIXER
const std::string AUDIO_PIPELINE_POS_TX_MIXER
agora::rtc::audio_packet_t
Definition: packet_i.h:133
agora::rtc::ILocalUserEx::setVideoDumpMode
virtual int setVideoDumpMode(int mode, bool enabled)=0
agora::rtc::ILocalUserEx::sendControlBroadcastPacket
virtual int sendControlBroadcastPacket(control_broadcast_packet_t &packet)=0
agora::rtc::Capabilities::item_map
CapabilityItemMap * item_map
Definition: local_user_i.h:91
agora::rtc::ILocalUserEx::setAdvancedAudioOptions
virtual int setAdvancedAudioOptions(const rtc::AudioOptions &options, int sourceType)=0
agora::rtc::control_broadcast_packet_t
Definition: packet_i.h:253
agora::rtc::ILocalUserEx::getRemoteVideoTrack
virtual agora_refptr< IRemoteVideoTrack > getRemoteVideoTrack(rtc::uid_t uid)=0
agora::rtc::AUDIO_PIPELINE_POS_ATW_PLAYOUT
const std::string AUDIO_PIPELINE_POS_ATW_PLAYOUT
agora::rtc::ILocalUserEx::startAudioFrameDump
virtual int startAudioFrameDump(const std::string &location, const std::string &uuid, const std::string &passwd, int64_t duration_ms, bool auto_upload)=0
agora::rtc::CapabilityItemMap
Definition: local_user_i.h:83
agora::rtc::CapabilityItem::name
const char * name
Definition: local_user_i.h:78
agora::rtc::ILocalUserEx::registerTransportPacketObserver
virtual int registerTransportPacketObserver(ITransportPacketObserver *observer)=0
agora::rtc::ITransportPacketObserver::onControlBroadcastPacket
virtual int onControlBroadcastPacket(const agora::rtc::TConnectionInfo &connectionInfo, control_broadcast_packet_t &p)=0
agora::rtc::ILocalUserEx::updateAppDefinedCapabilities
virtual void updateAppDefinedCapabilities(const Capabilities *cap, size_t size)=0
agora::rtc::ITransportPacketObserver::onVideoPacket
virtual int onVideoPacket(const agora::rtc::TConnectionInfo &connectionInfo, const video_packet_t &p)=0
agora::rtc::ILocalUserEx::customUpdateBillInfo
virtual void customUpdateBillInfo(int height, int width, bool isSendingVideo)=0
agora::rtc::AUDIO_PIPELINE_POS_PRE_PLAY_PROC
const std::string AUDIO_PIPELINE_POS_PRE_PLAY_PROC
agora::rtc::AUDIO_PIPELINE_POS_APM
const std::string AUDIO_PIPELINE_POS_APM
agora::rtc::AUDIO_PIPELINE_POS_AT_PLAYOUT
const std::string AUDIO_PIPELINE_POS_AT_PLAYOUT
agora::rtc::ILocalUserEx::sendVideoPacket
virtual int sendVideoPacket(const video_packet_t &packet)=0
agora::rtc::ILocalUserEx::setAVSyncPeer
virtual int setAVSyncPeer(rtc::uid_t uid)=0
agora::rtc::ILocalUserEx::getAecDelay
virtual int getAecDelay(int sourceType, int *aecDelay)=0
agora::rtc::AUDIO_PIPELINE_POS_PLAYBACK_MIXER
const std::string AUDIO_PIPELINE_POS_PLAYBACK_MIXER
agora::rtc::ILocalUserEx::unregisterVideoMetadataObserver
virtual void unregisterVideoMetadataObserver(IMetadataObserver *observer)=0
agora::rtc::ICapabilitesObserver
Definition: local_user_i.h:97
agora::rtc::ILocalUserEx::setAudioCC
virtual int setAudioCC(bool value)=0
agora::rtc::ILocalUserEx::unregisterAudioFrameDumpObserver
virtual int unregisterAudioFrameDumpObserver(IAudioFrameDumpObserver *observer)=0
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:29
agora::rtc::CapabilityItemMap::CapabilityItemMap
CapabilityItemMap()
Definition: local_user_i.h:86
agora::rtc::IAudioFrameDumpObserver::OnAudioFrameDumpCompleted
virtual void OnAudioFrameDumpCompleted(const std::string &location, const std::string &uuid, const std::vector< std::string > &files)=0
agora::rtc::ITransportPacketObserver::~ITransportPacketObserver
virtual ~ITransportPacketObserver()
Definition: local_user_i.h:32
agora::rtc::AUDIO_PIPELINE_POS_PRE_APM_PROC
const std::string AUDIO_PIPELINE_POS_PRE_APM_PROC
agora::rtc::ILocalUserEx::sendAudioPacket
virtual int sendAudioPacket(const audio_packet_t &packet, int delay=0)=0
agora::rtc::ILocalUserEx::setAllowSubscribeSelf
virtual int setAllowSubscribeSelf(bool allow)=0
agora::rtc::ILocalUserEx::stopAudioFrameDump
virtual int stopAudioFrameDump(const std::string &location)=0
agora::rtc::Capabilities
Definition: local_user_i.h:90
agora::rtc::Capabilities::Capabilities
Capabilities(CapabilityItemMap *i, agora::capability::CapabilityType t)
Definition: local_user_i.h:94
agora::rtc::CapabilityItem::CapabilityItem
CapabilityItem()
Definition: local_user_i.h:79
agora::rtc::CapabilityItemMap::CapabilityItemMap
CapabilityItemMap(CapabilityItem *i, size_t s)
Definition: local_user_i.h:87
rtc
Definition: video_node_i.h:25
agora::rtc::ILocalUserEx::setInteractiveAudience
virtual void setInteractiveAudience(bool interactive)=0