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 
16 #include "channel_capability_i.h"
17 #include "audio_options_i.h"
18 
19 namespace agora {
20 namespace rtc {
21 
22 struct TConnectionInfo;
23 
24 struct audio_packet_t;
25 struct video_packet_t;
26 struct video_rtcp_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 onVideoRtcpPacket(const agora::rtc::TConnectionInfo& connectionInfo,
38  const video_rtcp_packet_t& p) = 0;
39  virtual int onDataStreamPacket(const agora::rtc::TConnectionInfo& connectionInfo,
40  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 
76 class ILocalUserEx : public rtc::ILocalUser {
77  public:
78  virtual int initialize() = 0;
79  virtual int sendAudioPacket(const audio_packet_t& packet, int delay = 0) = 0;
80  virtual int sendVideoPacket(const video_packet_t& packet) = 0;
81  virtual int sendVideoRtcpPacket(const video_rtcp_packet_t& packet) = 0;
82  virtual int sendDataStreamPacket(uint16_t streamId, const char* data, size_t length) = 0;
83 
84  // No-thread safe, it must be called before joinChannel().
85  // No unregister method provided to simplify internal logic.
87 
88  // internal useage
89  virtual int setAudioOptions(const rtc::AudioOptions& options) = 0;
90  virtual int getAudioOptions(rtc::AudioOptions* options) = 0;
91  virtual void getBillInfo(CallBillInfo* bill_info) = 0;
92 
93  virtual void forceDisableChannelCapability(capability::CapabilityType, uint8_t capability) = 0;
94  virtual int setPlayoutDelayMaxMs(int delay) = 0;
95  virtual int setPlayoutDelayMinMs(int delay) = 0;
96  virtual int setPrerendererSmoothing(bool enabled) = 0;
97  virtual int setDtx(bool enabled) = 0;
98  virtual int setCustomAudioBitrate(int bitrate) = 0;
99  virtual int setAudioFrameSizeMs(int sizeMs) = 0;
100 
103 
104  virtual int startAudioFrameDump(const std::string& location, const std::string& uuid,
105  const std::string& passwd, int64_t duration_ms,
106  bool auto_upload) = 0;
107  virtual int stopAudioFrameDump(const std::string& location) = 0;
108 
112 
114 };
115 
116 } // namespace rtc
117 } // namespace agora
agora::rtc::AUDIO_PIPELINE_POS_MIXED
const std::string AUDIO_PIPELINE_POS_MIXED
agora::rtc::AUDIO_PIPELINE_POS_PLAY
const std::string AUDIO_PIPELINE_POS_PLAY
agora::rtc::ILocalUserEx::updateAudioSubscriptionOptions
virtual int updateAudioSubscriptionOptions(const AudioSubscriptionOptions &options)=0
agora::rtc::AudioOptions
Definition: audio_options_i.h:44
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::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::AUDIO_PIPELINE_POS_PCM_SOURCE_PLAYBAC_MIXER
const std::string AUDIO_PIPELINE_POS_PCM_SOURCE_PLAYBAC_MIXER
agora::rtc::ILocalUserEx::forceDisableChannelCapability
virtual void forceDisableChannelCapability(capability::CapabilityType, uint8_t capability)=0
agora::capability::CapabilityType
CapabilityType
Definition: channel_capability_i.h:87
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::IMetadataObserver
Definition: IAgoraRtcEngine.h:2198
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::ITransportPacketObserver::onDataStreamPacket
virtual int onDataStreamPacket(const agora::rtc::TConnectionInfo &connectionInfo, uint16_t streamId, const char *data, size_t length)=0
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::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::TConnectionInfo
Definition: NGIAgoraRtcConnection.h:24
agora::rtc::IAudioFrameDumpObserver::~IAudioFrameDumpObserver
virtual ~IAudioFrameDumpObserver()=default
agora::rtc::ITransportPacketObserver::onVideoRtcpPacket
virtual int onVideoRtcpPacket(const agora::rtc::TConnectionInfo &connectionInfo, const video_rtcp_packet_t &p)=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:125
agora::rtc::video_rtcp_packet_t
Definition: packet_i.h:233
agora::rtc::AudioSubscriptionOptions
Definition: NGIAgoraRtcConnection.h:52
agora::rtc::ILocalUserEx::getBillInfo
virtual void getBillInfo(CallBillInfo *bill_info)=0
agora::rtc::ITransportPacketObserver
Definition: local_user_i.h:30
agora::rtc::ILocalUser
Definition: NGIAgoraLocalUser.h:51
agora::rtc::ILocalUserEx
Definition: local_user_i.h:76
agora::rtc::AUDIO_PIPELINE_POS_TX_MIXER
const std::string AUDIO_PIPELINE_POS_TX_MIXER
agora::rtc::audio_packet_t
Definition: packet_i.h:115
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::setPlayoutDelayMaxMs
virtual int setPlayoutDelayMaxMs(int delay)=0
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::ILocalUserEx::sendVideoRtcpPacket
virtual int sendVideoRtcpPacket(const video_rtcp_packet_t &packet)=0
agora::rtc::ILocalUserEx::registerTransportPacketObserver
virtual int registerTransportPacketObserver(ITransportPacketObserver *observer)=0
agora::rtc::ITransportPacketObserver::onVideoPacket
virtual int onVideoPacket(const agora::rtc::TConnectionInfo &connectionInfo, const video_packet_t &p)=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::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::ILocalUserEx::unregisterAudioFrameDumpObserver
virtual int unregisterAudioFrameDumpObserver(IAudioFrameDumpObserver *observer)=0
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:25
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::ILocalUserEx::setPlayoutDelayMinMs
virtual int setPlayoutDelayMinMs(int delay)=0
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::stopAudioFrameDump
virtual int stopAudioFrameDump(const std::string &location)=0
rtc
Definition: video_node_i.h:27