Agora C++ API Reference for All Platforms

Loading...
Searching...
No Matches
video_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 <atomic>
10#include <memory>
11#include <mutex>
12#include <string>
13#include <unordered_map>
14#include <vector>
15
16#include "AgoraBase.h"
17#include "AgoraMediaBase.h"
18#include "AgoraOptional.h"
19#include "NGIAgoraVideoTrack.h"
20#include <api/cpp/aosl_ares_class.h>
21#include "api/transport/network_types.h"
22#include "main/core/video/base/video_frame/video_content_type.h"
23#include "call/rtp_config.h"
24
25#include "rtc_connection_i.h"
26#include "track_stat_i.h"
27#include "video_config_i.h"
28#include "common_defines.h"
29#include "video_node_i.h"
30
31#include "main/core/video/multi_stream_subscribe_interface.h"
32#include "facilities/media_config/policy_chain/media_config_policy_chain.h"
33#include "facilities/tools/weak_observers.h"
34#include "facilities/media_config/policy_chain/general_val_policy_chain.h"
35#include "main/core/video/strategy_framework/module_controller/video_module_control_aspect.h"
36#include "main/core/video/stats_and_events/video_stats_events_base.h"
37#include "main/core/video/video_frame_source_filter.h"
38#include "main/core/video/strategy_framework/strategy_common_defines.h"
39#include "engine_adapter/video/video_common_defines.h"
40#include "main/core/video/strategy_framework/strategy_qoe_decision/strategy_qoe_decision_interface.h"
41#include "modules/agora_video_codec/include/video_encoder_interface.h"
42#include "main/core/video/strategy_framework/statistic_manager/statistic_defines.h"
43
44 namespace webrtc {
45 class IFecMethodFactoryInterface;
46 class ISmoothRender;
47 class IRsfecCodecFactoryInterface;
48 class IAutoAdjustHarq;
49}
50
51 namespace agora {
52 namespace rtc {
53
54 class VideoNodeRtpSink;
55 class VideoNodeRtpSource;
56 class ProactiveCaller;
57 class IModuleControlPanel;
58 class IVideoStatsMetrics;
59 class StrategyQoeDecisionInterface;
60
61 enum class InternalVideoSourceType : unsigned {
62 None = 0,
63 Camera = 1,
64 Custom = 2,
65 Screen = 3,
66 CustomYuvSource = 4,
67 CustomEncodedImageSource = 5,
68 CustomPacketSource = 6,
69 MixedSource = 7,
70 TranscodedSource = 8,
71};
72
73 enum VideoModuleId {
74 VideoModuleCapture = 1,
75 VideoModulePreprocess,
76 VideoModuleEncode,
77 VideoModuleNetwork,
78 VideoModuleDecode,
79 VideoModulePostprocess,
80 VideoModuleRender,
81 VideoModulePipeline,
82 VideoModuleQoE,
83 VideoModuleExtension,
84};
85
86 enum VideoAvailabilityLevel {
87 VideoAvailabilityLevel1 = 1, // Completely unusable.
88 VideoAvailabilityLevel2, // Usable but with very poor experience.
89 VideoAvailabilityLevel3, // Usable but with poor experience.
90};
91
92// Events report. New enum can be added but do not change the existing value!
93 enum VideoPipelineEvent {
94 kVideoUplinkEventStaticFrames = 1, // Continous static frames, maybe green/black picktures.
95};
96
97 enum VideoQoeEvent {
98 kVideoQoeCriticalDrop = 1,
99 kVideoQoe600msFreezeDrop = 2,
100 kVideoQoe200msFreezeDrop = 3,
101 kVideoQoeFpsSubstandard = 4,
102 kVideoTimestampException = 5,
103 kVideoQoePipelineException = 6,
104 kVideoGlitchDetection = 7,
105 kVideoExtensionStatusDetection = 8,
106};
107
108// Events report. New enum can be added but do not change the existing value!
109 enum VideoProcessEvent {
110 kVideoProcessEventNone = 0,
111
112 // These events report will be throttled, refer to VideoEngine::doReportVideoEvent().
113 kVideoProcessEventPreprocessEnqueueFailure = 1000,
114 kVideoProcessEventPreprocessFrameFailure = 1001,
115 kVideoProcessEventPreprocessNoIncomingFrame = 1002, // No incoming frame for builtin VPM module
116 kVideoProcessEventPreprocessCongested = 1003,
117};
118
119// report hardware codec availability event.
120 enum VideoCodecAvailableEvent {
121 kVideoHwH265EncoderAvailable = 2000,
122 kVideoHwH264EncoderHighProfileAvailable = 2001,
123};
124
125 enum VideoDumpMode {
126 VIDEO_DUMP_DEFAULT = 0, // Dump all.
127 VIDEO_DUMP_ALL = 0xFFFF, // Dump all.
128 VIDEO_DUMP_CAPTURED_YUV = (1 << 0), // Dump YUV after video capturing.
129 VIDEO_DUMP_FILTERED_YUV = (1 << 1), // Dump YUV before video encoding.
130 VIDEO_DUMP_ENCODED_STREAM = (1 << 2), // Dump stream after video encoding.
131 VIDEO_DUMP_RECEIVED_STREAM = (1 << 3), // Dump stream before video decoding.
132 VIDEO_DUMP_DECODED_YUV = (1 << 4), // Dump YUV after video decoding.
133 VIDEO_DUMP_RENDERED_YUV = (1 << 5), // Dump YUV before video rendering.
134 VIDEO_DUMP_PRE_ENCODER_YUV = (1 << 6), // Dump YUV right before video encoding.
135};
136
137 struct VideoAvailabilityIndicator {
138 VideoAvailabilityLevel level;
139 VideoModuleId module;
140 int code;
141 uid_t uid;
142 int extra;
143 std::vector<agora::rtc::QoEDropInfo> extra2;
144 std::vector<agora::rtc::VideoTimestampExceptionInfo> ts_exception_info;
145 std::vector<GlitchDetectionInfo> glitch_detection_infos;
146 std::string extension_info;
147};
148
149 struct VideoRendererInfo {
150 int peer = 0;
151 int streamDepth = 0;
152 int isSupportHDR = 0;
153 int isTexture = 0;
154 int renderType = 0;
155 int colorPrimary = 0;
156 int colorTransfer = 0;
157 int colorMatrix = 0;
158 int colorRange = 0;
159};
160
161 struct VideoQoEAnalyzerParameter {
162 bool qoe_analyzer_enable = false;
163 bool enable_video_diagnose_logger = true;
164 int qoe_critical_report_max_times = 0;
165 int qoe_high_report_max_times = 0;
166 int qoe_normal_report_max_times = 0;
167 int qoe_report_strategy = 0;
168 int qoe_timing_strategy_report_period = 0;
169};
170
171 struct YuvConvertStats {
172 int width;
173 int height;
174 int method;
175 int avgUs;
176 int maxUs;
177 std::string deviceId;
178};
179
180 struct WatermarkBufferInner {
181 std::vector<uint8_t> buffer;
182 int width;
183 int height;
184 int length;
185 media::base::VIDEO_PIXEL_FORMAT format;
186};
187
188 struct WatermarkLiteralInner {
189 std::string wm_literal;
190 std::string font_file_path;
191 int font_size;
192 int stroke_width;
193};
194
195 struct WatermarkTimestampInner {
196 std::string font_file_path;
197 int font_size;
198 std::string format;
199 int stroke_width;
200};
201
202 struct WatermarkConfigInner {
203 std::string id;
204 WATERMARK_SOURCE_TYPE type;
205 WatermarkBufferInner buffer;
206 WatermarkLiteralInner literal;
207 WatermarkTimestampInner timestamp;
208 std::string image_url;
209
210 WatermarkOptions options;
211
212 ~WatermarkConfigInner() {
213 if (type == WATERMARK_SOURCE_TYPE::BUFFER) {
214 buffer.buffer.clear();
215 }
216 }
217
218 WatermarkConfigInner(): id(""), type(WATERMARK_SOURCE_TYPE::IMAGE), image_url("") {
219
220 }
221
222 WatermarkConfigInner(const WatermarkConfig& other) {
223 id = other.id;
224 type = other.type;
225 options = other.options;
226 switch (other.type) {
227 case WATERMARK_SOURCE_TYPE::BUFFER: {
228 WatermarkBufferInner _buffer;
229 _buffer.buffer = other.buffer.buffer ?
230 std::vector<uint8_t>(other.buffer.buffer, other.buffer.buffer + other.buffer.length) : std::vector<uint8_t>(0);
231 _buffer.width = other.buffer.width;
232 _buffer.height = other.buffer.height;
233 _buffer.length = other.buffer.length;
234 _buffer.format = other.buffer.format;
235 buffer = _buffer;
236 break;
237 }
238 case WATERMARK_SOURCE_TYPE::LITERAL: {
239 WatermarkLiteralInner _literal;
240 _literal.wm_literal = other.literal.wmLiteral ? other.literal.wmLiteral : "";
241 _literal.font_file_path = other.literal.fontFilePath ? other.literal.fontFilePath : "";
242 _literal.font_size = other.literal.fontSize;
243 _literal.stroke_width = other.literal.strokeWidth;
244 literal = _literal;
245 break;
246 }
247 case WATERMARK_SOURCE_TYPE::TIMESTAMPS: {
248 WatermarkTimestampInner _timestamp;
249 _timestamp.font_file_path = other.timestamp.fontFilePath ? other.timestamp.fontFilePath : "";
250 _timestamp.font_size = other.timestamp.fontSize;
251 _timestamp.format = other.timestamp.format ? other.timestamp.format : "";
252 _timestamp.stroke_width = other.timestamp.strokeWidth;
253 timestamp = _timestamp;
254 break;
255 }
256 case WATERMARK_SOURCE_TYPE::IMAGE:
257 image_url = other.imageUrl ? other.imageUrl : "";
258 break;
259 default:
260 break;
261 }
262 }
263};
264
265 class IVideoTrackObserver : public std::enable_shared_from_this<IVideoTrackObserver> {
266 public:
267 virtual ~IVideoTrackObserver() = default;
268 virtual void onLocalVideoEvent(int id, LOCAL_VIDEO_EVENT_TYPE event) {}
269 virtual void onLocalVideoStateChanged(int id,
270 LOCAL_VIDEO_STREAM_STATE state,
271 LOCAL_VIDEO_STREAM_REASON reason,
272 int timestamp_ms) {}
273
274 virtual void onRemoteVideoStateChanged(uid_t uid,
275 REMOTE_VIDEO_STATE state,
276 REMOTE_VIDEO_STATE_REASON reason,
277 int timestamp_ms) {}
278
279 virtual void onFirstVideoFrameRendered(int id, uid_t uid, int width, int height, int timestamp_ms) {}
280
281 virtual void onFirstVideoFrameDecoded(std::string cid, uid_t uid, uint32_t ssrc, int width, int height, int timestamp_ms) {}
282
283 virtual void onFirstVideoKeyFrameReceived(uid_t uid, uint64_t timestamp, const webrtc::FirstVideoFrameStreamInfo &streamInfo) {}
284
285 virtual void onSourceVideoSizeChanged(uid_t uid,
286 int width, int height,
287 int rotation, int timestamp_ms) {}
288 virtual void onSendSideDelay(int id, int send_delay) {}
289 virtual void onRecvSideDelay(uid_t uid, int recv_delay) {}
290 virtual void onRecvSideFps(uid_t uid, int fps) {}
291 virtual void onEncoderConfigurationChanged(const std::unordered_map<int, VideoConfigurationEx>& config) {}
292 virtual void onSvcLayerUpdated(SvcAABandwidthReportInfo info, int supported_max_layers,
293 AdaptiveScenarioType scenario_type, int channel_size,
294 const std::map<VideoStreamIndex, int>& be_subscribed_streams,
295 const std::vector<int>& svc_layer_bitrate, SvcAASourceType source,
296 const std::vector<SvcAAStrategyResult>& svc_aa_strategy_result_vec) {}
297 virtual void onSvcaaEnabledStateUpdated(uint16_t enabled_state) {}
298 virtual void onEncoderStrategySupportedSvcLayersUpdated(int max_layers) {}
299 virtual void onVideoPipelineDataFormatChanged(int format) {}
300 virtual void onCameraFacingChanged(int facing) {}
301 virtual void onViewSizeChanged(uid_t uid, view_t view, int width, int height) {}
302 virtual void OnSetRexferParams(bool fec_rexfer, float rexfer_alpha, int max_rexfer_times) {}
303 virtual void OnRexferStatusUpdated(bool status, int32_t target_bitrate) {}
304 virtual void OnNotifyDepartedFrame(uid_t uid, int picture_id) {}
305 virtual void onCameraInfoListChanged(CameraInfoList cameraInfoList) {}
306 virtual void onCameraCharacteristicProfileChanged(agora::rtc::CameraCharacteristicProfile profile) {}
307 virtual void OnEncoderStatusUpdate(webrtc::VideoCodecType codec_type,
308 webrtc::HW_ENCODER_ACCELERATING_STATUS hw_accelerate_status) {};
309 virtual void OnVideoStatusUpdated(bool is_fallback, webrtc::MediaStreamId stream_id, int reason) {}
310 virtual void onVideoAvailabilityIndicatorEvent(VideoAvailabilityIndicator indicator) {}
311 virtual void onVideoRendererInfoEvent(VideoRendererInfo info) {}
312 virtual void onVideoHWCodecSpecEvent(agora::rtc::VideoHWCodecSpec codecSpec) {}
313 virtual void onVideoSizeChanged(int id, uid_t uid, int width, int height, int rotation) {}
314 virtual void onYuvConvertStats(const YuvConvertStats& stats) {}
315 virtual void onWatermarkStats(int32_t image_count, int32_t buffer_count, int32_t literal_count, int32_t timestamp_count) {}
316
317 virtual void onLocalAddVideoFilter(int track_id, std::string filter_name, bool enabled){}
318 virtual void onLocalFilterStatusChanged(int track_id, std::string filter_name, bool enabled){}
319 virtual void onRemoteAddVideoFilter(std::string cid, uid_t uid, uint32_t ssrc, std::string filter_name, bool enabled){}
320 virtual void onRemoteFilterStatusChanged(std::string cid, uid_t uid, uint32_t ssrc, std::string filter_name, bool enabled, bool isDisableMe = false){}
321 virtual void onVideoContentChanged(uid_t uid, agora::VideoContentType newType,
322 agora::VideoContentSubType newSubtype) {}
323 virtual void OnRequestKeyFrame(uid_t uid, VIDEO_STREAM_TYPE type) {}
324 virtual void OnVideoCodingModuleInfosUpdated(webrtc::VideoCodingModuleInfos videoCodingInfos) {}
325 virtual void OnVideoEncodeStrategyUpdated(agora::rtc::VideoEncodeStrategyInfo strategy) {}
326 virtual void OnFirstDecodableFrameReceived(uint8_t stream_id) {}
327 virtual void OnBcmDecodeFeedback(uid_t uid, std::string&& fb) {}
328 virtual void OnBcmNetworkStatsFeeback(uid_t uid, std::string&& fb) {}
329};
330
331 struct LocalVideoTrackStatsEx {
332 LocalVideoTrackStats local_video_stats;
333 int sent_loss_ratio;
334 uint32_t total_bwe_bps;
335 uint32_t total_video_send_target_bps;
336 uint32_t media_send_bps;
337 uint32_t qp;
338};
339
340 class ILocalVideoTrackEx : public ILocalVideoTrack,
341 public VideoLocalTrackControlAspect {
342 public:
343 enum DetachReason { MANUAL, TRACK_DESTROY, NETWORK_DESTROY, CODEC_CHANGE};
344
345 // keep the same as webrtc::RsfecConfig
346 struct RsfecConfig {
347 std::vector<int> fec_protection_factor;
348 std::vector<std::vector<int>> fec_ratioLevel;
349 std::vector<int> fec_rttThreshold;
350 bool pec_enabled;
351 };
352
353 struct CaptureModeItem {
354 int32_t mode = 0;
355 int32_t scene = 0;
356 int32_t policy = 0;
357 std::string type = "";
358 };
359
360 struct AttachInfo {
361 uint32_t uid;
362 uint32_t cid;
363 VideoNodeRtpSink* network;
364 WeakPipelineBuilder builder;
365 uint64_t stats_space;
366 CongestionControlType cc_type;
367 bool enable_two_bytes_extension;
368 webrtc::RsfecConfig rsfec_config;
369
370 // hardware encoder related
371 std::string enable_hw_encoder;
372
373 // video config
374 VideoNodeEncoderEx::OPSParametersCollection ops_parameters;
375 std::shared_ptr<webrtc::IAutoAdjustHarq> auto_adjust_harq;
376 int harq_version;
377 int32_t fec_outside_bandwidth_ratio;
378 bool enable_minor_stream_vqc = false;
379 bool enable_minor_stream_fec = false;
380 bool enable_minor_stream_fec_outside_ratio = false;
381 bool enable_minor_stream_intra_request = false;
382
383 int fec_method;
384 std::string switch_to_rq;
385 bool enable_rq_classic_method;
386
387 int fec_fix_rate;
388 bool enable_check_for_disable_fec;
389 bool enable_quick_intra_high_fec = false;
390 absl::optional<int> max_inflight_frame_count_pre_processsing;
391
392 // enable video diagnose
393 bool enable_video_send_diagnose;
394 // video codec and codec feature_caps
395 VideoNegotiatedCodecCaps negotiated_video_codec_caps;
396
397 int hw_capture_delay;
398 uint32_t sync_peer_uid;
399
400 Optional<SIMULCAST_STREAM_MODE> cfg_simulcast_stream_mode;
401 bool support_higher_standard_bitrate;
402 VideoQoEAnalyzerParameter qoe_analyzer_parameters;
403 std::unordered_map<uint8_t, std::string> fec_capabilities;
404 int prefer_fec_method = -1;
405 int fec_mode = 0;
406 Optional<bool> response_quick_intra_request;
407 };
408
409 struct DetachInfo {
410 VideoNodeRtpSink* network;
411 DetachReason reason;
412 };
413
414 ILocalVideoTrackEx() : id_(id_generator_++) {}
415 virtual ~ILocalVideoTrackEx() {}
416
417 virtual bool hasPublished() = 0;
418
419 virtual int setVideoEncoderConfigurationEx(const VideoEncoderConfiguration& config, utils::ConfigPriority priority = utils::CONFIG_PRIORITY_USER) = 0;
420
421 virtual int setSimulcastStreamModeEx(SIMULCAST_STREAM_MODE mode, const SimulcastConfigInternal& config, utils::ConfigPriority priority = utils::CONFIG_PRIORITY_USER) = 0;
422
423 virtual int SetVideoConfigEx(int index, const VideoConfigurationEx& configEx, utils::ConfigPriority priority = utils::CONFIG_PRIORITY_USER) = 0;
424
425 virtual int ResetVideoConfigEx(utils::ConfigPriority priority) = 0;
426
427 virtual int GetConfigExs(std::unordered_map<int, VideoConfigurationEx>& configs, bool include_disable_config = false) = 0;
428
429 virtual int GetVideoProfileAutoAdjust(std::string& config_video_profile, std::string& actual_video_profile) = 0;
430
431 virtual int GetCaptureMode(CaptureModeItem& captureModeOut) = 0;
432
433 virtual void RequestKeyFrame(VIDEO_STREAM_TYPE type, bool is_quick_intra_request, bool internal) {}
434
435 virtual void AddVideoAvailabilityIndicatorEvents(VideoAvailabilityIndicator event) {}
436
437 virtual void GetVideoAvailabilityIndicatorEvents(std::vector<VideoAvailabilityIndicator>& events) {}
438
439 virtual int setUserId(uid_t uid) { user_id_ = uid; return 0; }
440
441 virtual uid_t getUserId() { return user_id_; }
442
443 virtual int GetActiveStreamsCount() = 0;
444
445 virtual int prepareNodes(const char* id = nullptr) = 0;
446
447 virtual bool attach(const AttachInfo& info) = 0;
448 virtual bool detach(const DetachInfo& info) = 0;
449 virtual bool registerTrackObserver(std::shared_ptr<IVideoTrackObserver> observer) {
450 return false;
451 }
452 virtual bool unregisterTrackObserver(IVideoTrackObserver* observer) {
453 return false;
454 }
455
456 virtual bool getStatisticsEx(LocalVideoTrackStatsEx& statsEx) { return false; }
457 virtual bool getVideoFrameSourceFilterStats(agora::rtc::VideoFrameSourceFilter::Stats& stats) { return false; }
458 virtual int32_t Width() const = 0;
459 virtual int32_t Height() const = 0;
460 virtual void getBillingVideoProfile(int32_t& w, int32_t& h, int32_t& frame_rate) {};
461 virtual bool Enabled() const = 0;
462
463 virtual int updateVideoWatermarks(const WatermarkConfig* configs, uint32_t count) { return -ERR_NOT_SUPPORTED; }
464
465 virtual InternalVideoSourceType getInternalVideoSourceType() { return InternalVideoSourceType::None; }
466
467 virtual rtc::VideoEncoderConfiguration getVideoEncoderConfiguration() { return {}; }
468
469 virtual bool getVideoTextureCopyStatus(VideoTextureCopyParam& param) { return false; }
470
471 virtual void getSimucastStreamConfig(SimulcastConfigInternal& simu_stream_config) {}
472 virtual void getSimucastStreamStatus(SIMULCAST_STREAM_MODE& mode, bool& enable) {}
473 virtual void getBillingVideoProfileWithSimulcast(bool& enable, SimulcastConfigInternal& simu_config) {}
474
475 virtual int updateContentHint(VIDEO_CONTENT_HINT contentHint) { return -ERR_NOT_SUPPORTED; }
476
477 virtual int updateScreenCaptureScenario(SCREEN_SCENARIO_TYPE screenScenario) { return -ERR_NOT_SUPPORTED; }
478
479 int TrackId() const { return id_; }
480
481 virtual int registerVideoEncodedFrameObserverLLApiInternal(media::IVideoEncodedFrameObserver* videoReceiver) = 0;
482
483 virtual int unregisterVideoEncodedFrameObserverLLApiInternal(media::IVideoEncodedFrameObserver* videoReceiver) = 0;
484
485 virtual int setLocalVideoSend(bool send) = 0;
486
487 virtual bool ClearVideoConfigsOnLeaveChannel() { return false; }
488
489 virtual int getCodecType() = 0;
490
491 virtual int getVideoFrameBitDepth() = 0;
492
493 virtual void setVideoDumpMode(int mode, bool enabled, int frame_cnt = -1) {}
494
495 virtual bool NegotiateCodec(VideoNegotiatedCodecCaps negotiated_video_decode_caps) { return false; }
496
497 virtual void onVideoModuleStatus(std::string node_name, int type) {}
498
499 virtual int onRequestEnableSimulcastStream() { return 0; }
500
501 virtual bool getIsAttachedToNetwork() { return false; }
502
503 virtual bool isVideoFilterEnabled(const char* id) { return false; }
504
505 virtual void ConfigVideoFec(const VideoFecConfig& fec_cap) {}
506
507 virtual void ReconfigureCaptureDelayMs(int video_capture_delay_ms) {}
508
509 virtual bool enableMinorStreamPeriodicKeyFrame() { return false; }
510
511 virtual void registerProactiveCaller(const std::shared_ptr<rtc::ProactiveCaller>& configurator) { return; }
512 virtual void unregisterProactiveCaller() { return; }
513
514 virtual void registerModuleControlPanel(std::shared_ptr<rtc::IModuleControlPanel> panel) { return; }
515 virtual void unregisterModuleControlPanel() { return; }
516
517 virtual void registerAAManager(std::shared_ptr<rtc::VideoAAManagerInterface> strategy_qoe_decision) { return; }
518 virtual void unregisterAAManager(std::shared_ptr<rtc::VideoAAManagerInterface> strategy_qoe_decision) { return; }
519
520 virtual void registerVideoTrackStatsMetrics(const std::shared_ptr<IVideoStatsMetrics>& metrics) { return; }
521 virtual void unregisterVideoTrackStatsMetrics(const std::shared_ptr<IVideoStatsMetrics>& metrics) { return; }
522 virtual bool NegotiateHDRSource(bool hdr_capture) { return false; }
523
524 virtual int setEnabledLLApiInternal(bool enable, bool action_droppable = true) = 0;
525 virtual LOCAL_VIDEO_STREAM_STATE getStateLLApiInternal() = 0;
526 virtual int setSimulcastStreamModeLLApiInternal(SIMULCAST_STREAM_MODE mode, const SimulcastConfigInternal& simu_config) = 0;
527 virtual int setVideoEncoderConfigurationLLApiInternal(const rtc::VideoEncoderConfiguration& config) = 0;
528 virtual bool addVideoFilterLLApiInternal(agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
529 const char* id = NULL) = 0;
530 virtual bool removeVideoFilterLLApiInternal(agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
531 const char* id = NULL) = 0;
532 virtual bool hasVideoFilterLLApiInternal(const char* id, media::base::VIDEO_MODULE_POSITION position) = 0;
533 virtual int setLocalRenderTargetFps(int target_fps) = 0;
534 virtual bool addRendererLLApiInternal(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position) = 0;
535 virtual bool removeRendererLLApiInternal(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position) = 0;
536 virtual bool getStatisticsLLApiInternal(LocalVideoTrackStats& stats) = 0;
537 virtual int enableVideoFilterLLApiInternal(const char* id, bool enable) {return -1;}
538 virtual void enableSourceFilterLLApiInternal(const char* id, bool enable) { return; }
539 virtual int setFilterPropertyLLApiInternal(const char* id, const char* key, const char* json_value) { return -1; };
540 virtual int getFilterPropertyLLApiInternal(const char* id, const char* key, char* json_value, size_t buf_size) { return -1; };
541 virtual void SetVideoCodecCaps(VideoNegotiatedCodecCaps negotiated_video_codec_caps) {};
542 virtual void SetSvcAutoAdjusterEnabled(bool enabled) {}
543 virtual void UpdateRemoteDlBweFeedback(int bwe) = 0;
544 virtual void UpdateChannelBandwidthAndSubscription(AggregatedRemoteDlBweQuantile bwe_quantile,
545 std::map<VideoStreamIndex, int>&& be_subscribed_streams) = 0;
546 virtual void UpdateAdaptiveScenarioTypeAndChannelSize(AdaptiveScenarioType scenario_type, int channel_size, bool sync_ability) = 0;
547 virtual void SetQoeMetricsWeight(VideoStreamIndex video_stream_index, QoeMetricsWeight qoe_metrics_weight) { return; };
548 virtual void OnVideoFecStatsChanged(const StreamsFecStatsMap& aut_fec_map) = 0;
549
550 protected:
551 const int id_;
552 utils::WeakObserversFacility<IVideoTrackObserver> track_observers_;
553 uid_t user_id_;
554
555 private:
556 static std::atomic<int> id_generator_;
557};
558
559 struct RemoteVideoTrackStatsEx : RemoteVideoTrackStats {
560 uint64_t firstDecodingTimeTickMs = 0;
561 uint64_t firstVideoFrameRendered = 0;
562 bool isHardwareCodec = false;
563 int64_t totalFrozen200ms = 0;
564 uint32_t last_frame_max = 0;
565 uint32_t dec_in_num = 0;
566 uint32_t render_in_num = 0;
567 uint32_t render_out_num = 0;
568 uint32_t fec_pkts_num = 0;
569 uint32_t loss_af_fec = 0;
570 int jitter_offset_ms = 0;
571 int decode_level[10] = {0};
572 uint64_t qp_sum = 0;
573 VideoContentType content_type = VideoContentType::UNSPECIFIED;
574 std::vector<VideoAvailabilityIndicator> video_availability;
575};
576
577 class IRemoteVideoTrackEx : public IRemoteVideoTrack,
578 public VideoRemoteTrackControlAspect {
579 public:
580 enum DetachReason { MANUAL, TRACK_DESTROY, NETWORK_DESTROY };
581 using RemoteVideoEvents = StateEvents<REMOTE_VIDEO_STATE, REMOTE_VIDEO_STATE_REASON>;
582
583 struct AttachInfo {
584 VideoNodeRtpSource* source;
585 VideoNodeRtpSink* rtcp_sender;
586 WeakPipelineBuilder builder;
587 bool recv_media_packet = false;
588 uint64_t stats_space = 0;
589 bool enable_vpr = false;
590 agora::rtc::VPR_POSITION vpr_position = agora::rtc::VPR_POSITION::POSITION_PRE_RENDER;
591 std::shared_ptr<webrtc::IRsfecCodecFactoryInterface> rsfec_codec_factory;
592 uint32_t video_threshhold_ms = 0;
593 VideoQoEAnalyzerParameter qoe_analyzer_parameters;
594 };
595
596 struct DetachInfo {
597 VideoNodeRtpSource* source;
598 VideoNodeRtpSink* rtcp_sender;
599 DetachReason reason;
600 };
601
602 IRemoteVideoTrackEx() = default;
603
604 virtual ~IRemoteVideoTrackEx() {}
605
606 virtual uint32_t getRemoteSsrc() = 0;
607
608 virtual bool attach(const AttachInfo& info, REMOTE_VIDEO_STATE_REASON reason) = 0;
609 virtual bool detach(const DetachInfo& info, REMOTE_VIDEO_STATE_REASON reason) = 0;
610
611 virtual bool getStatisticsEx(RemoteVideoTrackStatsEx& statsex) { return false; }
612
613 virtual bool registerTrackObserver(std::shared_ptr<IVideoTrackObserver> observer) {
614 return false;
615 }
616 virtual bool unregisterTrackObserver(IVideoTrackObserver* observer) {
617 return false;
618 }
619 virtual void registerProactiveCaller(const std::shared_ptr<ProactiveCaller>&) {}
620 virtual void unregisterProactiveCaller() {}
621 virtual void registerVideoTrackStatsMetrics(const std::shared_ptr<IVideoStatsMetrics>& metrics) { return; }
622 virtual void unregisterVideoTrackStatsMetrics(const std::shared_ptr<IVideoStatsMetrics>& metrics) { return; }
623
624 virtual REMOTE_VIDEO_STATE getStateLLApiInternal() = 0;
625 virtual bool addVideoFilterLLApiInternal(agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
626 const char* id = NULL) = 0;
627 virtual bool removeVideoFilterLLApiInternal(agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
628 const char* id = NULL) = 0;
629 virtual bool hasVideoFilterLLApiInternal(const char* id, media::base::VIDEO_MODULE_POSITION position) = 0;
630 virtual bool addRendererLLApiInternal(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_PRE_RENDERER) = 0;
631 virtual bool removeRendererLLApiInternal(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position) = 0;
632 virtual bool getStatisticsLLApiInternal(RemoteVideoTrackStats& stats) = 0;
633 virtual bool getTrackInfoLLApiInternal(VideoTrackInfo& info) = 0;
634 virtual int registerVideoEncodedFrameObserverLLApiInternal( agora::media::IVideoEncodedFrameObserver* encodedObserver) = 0;
635 virtual int unregisterVideoEncodedFrameObserverLLApiInternal( agora::media::IVideoEncodedFrameObserver* encodedObserver) = 0;
636 virtual int enableVideoFilterLLApiInternal(const char* id, bool enable){ return -1; };
637 virtual int setFilterPropertyLLApiInternal(const char* id, const char* key, const char* json_value){ return -1; };
638 virtual int registerMediaPacketReceiverLLApiInternal(IMediaPacketReceiver* packetReceiver) = 0;
639 virtual int unregisterMediaPacketReceiverLLApiInternal(IMediaPacketReceiver* packetReceiver) = 0;
640 virtual void OnUserRoleStatusUpdate(UserRoleStatus user_role_status) {};
641
642 protected:
643 utils::WeakObserversFacility<IVideoTrackObserver> track_observers_;
644};
645
646} // namespace rtc
647} // namespace agora
agora::Optional
Definition AgoraOptional.h:413
agora::agora_refptr
Definition AgoraRefPtr.h:44
agora::media::IVideoEncodedFrameObserver
Definition AgoraMediaBase.h:1920
agora::rtc::ILocalVideoTrackEx::registerVideoEncodedFrameObserverLLApiInternal
virtual int registerVideoEncodedFrameObserverLLApiInternal(media::IVideoEncodedFrameObserver *videoReceiver)=0
agora::rtc::ILocalVideoTrackEx::setSimulcastStreamModeEx
virtual int setSimulcastStreamModeEx(SIMULCAST_STREAM_MODE mode, const SimulcastConfigInternal &config, utils::ConfigPriority priority=utils::CONFIG_PRIORITY_USER)=0
agora::rtc::ILocalVideoTrackEx::OnVideoFecStatsChanged
virtual void OnVideoFecStatsChanged(const StreamsFecStatsMap &aut_fec_map)=0
agora::rtc::ILocalVideoTrackEx::UpdateRemoteDlBweFeedback
virtual void UpdateRemoteDlBweFeedback(int bwe)=0
agora::rtc::ILocalVideoTrackEx::registerModuleControlPanel
virtual void registerModuleControlPanel(std::shared_ptr< rtc::IModuleControlPanel > panel)
Definition video_track_i.h:514
agora::rtc::ILocalVideoTrackEx::Height
virtual int32_t Height() const =0
agora::rtc::ILocalVideoTrackEx::removeRendererLLApiInternal
virtual bool removeRendererLLApiInternal(agora_refptr< IVideoSinkBase > videoRenderer, media::base::VIDEO_MODULE_POSITION position)=0
agora::rtc::ILocalVideoTrackEx::SetQoeMetricsWeight
virtual void SetQoeMetricsWeight(VideoStreamIndex video_stream_index, QoeMetricsWeight qoe_metrics_weight)
Definition video_track_i.h:547
agora::rtc::ILocalVideoTrackEx::~ILocalVideoTrackEx
virtual ~ILocalVideoTrackEx()
Definition video_track_i.h:415
agora::rtc::ILocalVideoTrackEx::UpdateAdaptiveScenarioTypeAndChannelSize
virtual void UpdateAdaptiveScenarioTypeAndChannelSize(AdaptiveScenarioType scenario_type, int channel_size, bool sync_ability)=0
agora::rtc::ILocalVideoTrackEx::registerProactiveCaller
virtual void registerProactiveCaller(const std::shared_ptr< rtc::ProactiveCaller > &configurator)
Definition video_track_i.h:511
agora::rtc::ILocalVideoTrackEx::Enabled
virtual bool Enabled() const =0
agora::rtc::ILocalVideoTrackEx::getUserId
virtual uid_t getUserId()
Definition video_track_i.h:441
agora::rtc::ILocalVideoTrackEx::SetSvcAutoAdjusterEnabled
virtual void SetSvcAutoAdjusterEnabled(bool enabled)
Definition video_track_i.h:542
agora::rtc::ILocalVideoTrackEx::registerAAManager
virtual void registerAAManager(std::shared_ptr< rtc::VideoAAManagerInterface > strategy_qoe_decision)
Definition video_track_i.h:517
agora::rtc::ILocalVideoTrackEx::getStateLLApiInternal
virtual LOCAL_VIDEO_STREAM_STATE getStateLLApiInternal()=0
agora::rtc::ILocalVideoTrackEx::updateScreenCaptureScenario
virtual int updateScreenCaptureScenario(SCREEN_SCENARIO_TYPE screenScenario)
Definition video_track_i.h:477
agora::rtc::ILocalVideoTrackEx::onVideoModuleStatus
virtual void onVideoModuleStatus(std::string node_name, int type)
Definition video_track_i.h:497
agora::rtc::ILocalVideoTrackEx::NegotiateHDRSource
virtual bool NegotiateHDRSource(bool hdr_capture)
Definition video_track_i.h:522
agora::rtc::ILocalVideoTrackEx::updateContentHint
virtual int updateContentHint(VIDEO_CONTENT_HINT contentHint)
Definition video_track_i.h:475
agora::rtc::ILocalVideoTrackEx::SetVideoConfigEx
virtual int SetVideoConfigEx(int index, const VideoConfigurationEx &configEx, utils::ConfigPriority priority=utils::CONFIG_PRIORITY_USER)=0
agora::rtc::ILocalVideoTrackEx::registerVideoTrackStatsMetrics
virtual void registerVideoTrackStatsMetrics(const std::shared_ptr< IVideoStatsMetrics > &metrics)
Definition video_track_i.h:520
agora::rtc::ILocalVideoTrackEx::unregisterVideoEncodedFrameObserverLLApiInternal
virtual int unregisterVideoEncodedFrameObserverLLApiInternal(media::IVideoEncodedFrameObserver *videoReceiver)=0
agora::rtc::ILocalVideoTrackEx::TrackId
int TrackId() const
Definition video_track_i.h:479
agora::rtc::ILocalVideoTrackEx::getSimucastStreamStatus
virtual void getSimucastStreamStatus(SIMULCAST_STREAM_MODE &mode, bool &enable)
Definition video_track_i.h:472
agora::rtc::ILocalVideoTrackEx::onRequestEnableSimulcastStream
virtual int onRequestEnableSimulcastStream()
Definition video_track_i.h:499
agora::rtc::ILocalVideoTrackEx::ResetVideoConfigEx
virtual int ResetVideoConfigEx(utils::ConfigPriority priority)=0
agora::rtc::ILocalVideoTrackEx::getSimucastStreamConfig
virtual void getSimucastStreamConfig(SimulcastConfigInternal &simu_stream_config)
Definition video_track_i.h:471
agora::rtc::ILocalVideoTrackEx::getVideoFrameSourceFilterStats
virtual bool getVideoFrameSourceFilterStats(agora::rtc::VideoFrameSourceFilter::Stats &stats)
Definition video_track_i.h:457
agora::rtc::ILocalVideoTrackEx::unregisterTrackObserver
virtual bool unregisterTrackObserver(IVideoTrackObserver *observer)
Definition video_track_i.h:452
agora::rtc::ILocalVideoTrackEx::GetVideoProfileAutoAdjust
virtual int GetVideoProfileAutoAdjust(std::string &config_video_profile, std::string &actual_video_profile)=0
agora::rtc::ILocalVideoTrackEx::setLocalRenderTargetFps
virtual int setLocalRenderTargetFps(int target_fps)=0
agora::rtc::ILocalVideoTrackEx::isVideoFilterEnabled
virtual bool isVideoFilterEnabled(const char *id)
Definition video_track_i.h:503
agora::rtc::ILocalVideoTrackEx::setFilterPropertyLLApiInternal
virtual int setFilterPropertyLLApiInternal(const char *id, const char *key, const char *json_value)
Definition video_track_i.h:539
agora::rtc::ILocalVideoTrackEx::getStatisticsEx
virtual bool getStatisticsEx(LocalVideoTrackStatsEx &statsEx)
Definition video_track_i.h:456
agora::rtc::ILocalVideoTrackEx::GetConfigExs
virtual int GetConfigExs(std::unordered_map< int, VideoConfigurationEx > &configs, bool include_disable_config=false)=0
agora::rtc::ILocalVideoTrackEx::GetActiveStreamsCount
virtual int GetActiveStreamsCount()=0
agora::rtc::ILocalVideoTrackEx::enableVideoFilterLLApiInternal
virtual int enableVideoFilterLLApiInternal(const char *id, bool enable)
Definition video_track_i.h:537
agora::rtc::ILocalVideoTrackEx::NegotiateCodec
virtual bool NegotiateCodec(VideoNegotiatedCodecCaps negotiated_video_decode_caps)
Definition video_track_i.h:495
agora::rtc::ILocalVideoTrackEx::addVideoFilterLLApiInternal
virtual bool addVideoFilterLLApiInternal(agora_refptr< IVideoFilter > filter, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_CAPTURER, const char *id=NULL)=0
agora::rtc::ILocalVideoTrackEx::enableSourceFilterLLApiInternal
virtual void enableSourceFilterLLApiInternal(const char *id, bool enable)
Definition video_track_i.h:538
agora::rtc::ILocalVideoTrackEx::user_id_
uid_t user_id_
Definition video_track_i.h:553
agora::rtc::ILocalVideoTrackEx::ReconfigureCaptureDelayMs
virtual void ReconfigureCaptureDelayMs(int video_capture_delay_ms)
Definition video_track_i.h:507
agora::rtc::ILocalVideoTrackEx::track_observers_
utils::WeakObserversFacility< IVideoTrackObserver > track_observers_
Definition video_track_i.h:552
agora::rtc::ILocalVideoTrackEx::ILocalVideoTrackEx
ILocalVideoTrackEx()
Definition video_track_i.h:414
agora::rtc::ILocalVideoTrackEx::getIsAttachedToNetwork
virtual bool getIsAttachedToNetwork()
Definition video_track_i.h:501
agora::rtc::ILocalVideoTrackEx::UpdateChannelBandwidthAndSubscription
virtual void UpdateChannelBandwidthAndSubscription(AggregatedRemoteDlBweQuantile bwe_quantile, std::map< VideoStreamIndex, int > &&be_subscribed_streams)=0
agora::rtc::ILocalVideoTrackEx::setVideoEncoderConfigurationLLApiInternal
virtual int setVideoEncoderConfigurationLLApiInternal(const rtc::VideoEncoderConfiguration &config)=0
agora::rtc::ILocalVideoTrackEx::detach
virtual bool detach(const DetachInfo &info)=0
agora::rtc::ILocalVideoTrackEx::prepareNodes
virtual int prepareNodes(const char *id=nullptr)=0
agora::rtc::ILocalVideoTrackEx::getBillingVideoProfile
virtual void getBillingVideoProfile(int32_t &w, int32_t &h, int32_t &frame_rate)
Definition video_track_i.h:460
agora::rtc::ILocalVideoTrackEx::getVideoTextureCopyStatus
virtual bool getVideoTextureCopyStatus(VideoTextureCopyParam &param)
Definition video_track_i.h:469
agora::rtc::ILocalVideoTrackEx::SetVideoCodecCaps
virtual void SetVideoCodecCaps(VideoNegotiatedCodecCaps negotiated_video_codec_caps)
Definition video_track_i.h:541
agora::rtc::ILocalVideoTrackEx::RequestKeyFrame
virtual void RequestKeyFrame(VIDEO_STREAM_TYPE type, bool is_quick_intra_request, bool internal)
Definition video_track_i.h:433
agora::rtc::ILocalVideoTrackEx::addRendererLLApiInternal
virtual bool addRendererLLApiInternal(agora_refptr< IVideoSinkBase > videoRenderer, media::base::VIDEO_MODULE_POSITION position)=0
agora::rtc::ILocalVideoTrackEx::setUserId
virtual int setUserId(uid_t uid)
Definition video_track_i.h:439
agora::rtc::ILocalVideoTrackEx::getVideoFrameBitDepth
virtual int getVideoFrameBitDepth()=0
agora::rtc::ILocalVideoTrackEx::ConfigVideoFec
virtual void ConfigVideoFec(const VideoFecConfig &fec_cap)
Definition video_track_i.h:505
agora::rtc::ILocalVideoTrackEx::registerTrackObserver
virtual bool registerTrackObserver(std::shared_ptr< IVideoTrackObserver > observer)
Definition video_track_i.h:449
agora::rtc::ILocalVideoTrackEx::setVideoDumpMode
virtual void setVideoDumpMode(int mode, bool enabled, int frame_cnt=-1)
Definition video_track_i.h:493
agora::rtc::ILocalVideoTrackEx::setSimulcastStreamModeLLApiInternal
virtual int setSimulcastStreamModeLLApiInternal(SIMULCAST_STREAM_MODE mode, const SimulcastConfigInternal &simu_config)=0
agora::rtc::ILocalVideoTrackEx::unregisterModuleControlPanel
virtual void unregisterModuleControlPanel()
Definition video_track_i.h:515
agora::rtc::ILocalVideoTrackEx::enableMinorStreamPeriodicKeyFrame
virtual bool enableMinorStreamPeriodicKeyFrame()
Definition video_track_i.h:509
agora::rtc::ILocalVideoTrackEx::GetVideoAvailabilityIndicatorEvents
virtual void GetVideoAvailabilityIndicatorEvents(std::vector< VideoAvailabilityIndicator > &events)
Definition video_track_i.h:437
agora::rtc::ILocalVideoTrackEx::ClearVideoConfigsOnLeaveChannel
virtual bool ClearVideoConfigsOnLeaveChannel()
Definition video_track_i.h:487
agora::rtc::ILocalVideoTrackEx::hasPublished
virtual bool hasPublished()=0
agora::rtc::ILocalVideoTrackEx::unregisterAAManager
virtual void unregisterAAManager(std::shared_ptr< rtc::VideoAAManagerInterface > strategy_qoe_decision)
Definition video_track_i.h:518
agora::rtc::ILocalVideoTrackEx::setLocalVideoSend
virtual int setLocalVideoSend(bool send)=0
agora::rtc::ILocalVideoTrackEx::getVideoEncoderConfiguration
virtual rtc::VideoEncoderConfiguration getVideoEncoderConfiguration()
Definition video_track_i.h:467
agora::rtc::ILocalVideoTrackEx::setVideoEncoderConfigurationEx
virtual int setVideoEncoderConfigurationEx(const VideoEncoderConfiguration &config, utils::ConfigPriority priority=utils::CONFIG_PRIORITY_USER)=0
agora::rtc::ILocalVideoTrackEx::getBillingVideoProfileWithSimulcast
virtual void getBillingVideoProfileWithSimulcast(bool &enable, SimulcastConfigInternal &simu_config)
Definition video_track_i.h:473
agora::rtc::ILocalVideoTrackEx::getStatisticsLLApiInternal
virtual bool getStatisticsLLApiInternal(LocalVideoTrackStats &stats)=0
agora::rtc::ILocalVideoTrackEx::removeVideoFilterLLApiInternal
virtual bool removeVideoFilterLLApiInternal(agora_refptr< IVideoFilter > filter, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_CAPTURER, const char *id=NULL)=0
agora::rtc::ILocalVideoTrackEx::unregisterProactiveCaller
virtual void unregisterProactiveCaller()
Definition video_track_i.h:512
agora::rtc::ILocalVideoTrackEx::id_
const int id_
Definition video_track_i.h:551
agora::rtc::ILocalVideoTrackEx::unregisterVideoTrackStatsMetrics
virtual void unregisterVideoTrackStatsMetrics(const std::shared_ptr< IVideoStatsMetrics > &metrics)
Definition video_track_i.h:521
agora::rtc::ILocalVideoTrackEx::setEnabledLLApiInternal
virtual int setEnabledLLApiInternal(bool enable, bool action_droppable=true)=0
agora::rtc::ILocalVideoTrackEx::hasVideoFilterLLApiInternal
virtual bool hasVideoFilterLLApiInternal(const char *id, media::base::VIDEO_MODULE_POSITION position)=0
agora::rtc::ILocalVideoTrackEx::updateVideoWatermarks
virtual int updateVideoWatermarks(const WatermarkConfig *configs, uint32_t count)
Definition video_track_i.h:463
agora::rtc::ILocalVideoTrackEx::GetCaptureMode
virtual int GetCaptureMode(CaptureModeItem &captureModeOut)=0
agora::rtc::ILocalVideoTrackEx::getInternalVideoSourceType
virtual InternalVideoSourceType getInternalVideoSourceType()
Definition video_track_i.h:465
agora::rtc::ILocalVideoTrackEx::DetachReason
DetachReason
Definition video_track_i.h:343
agora::rtc::ILocalVideoTrackEx::TRACK_DESTROY
@ TRACK_DESTROY
Definition video_track_i.h:343
agora::rtc::ILocalVideoTrackEx::CODEC_CHANGE
@ CODEC_CHANGE
Definition video_track_i.h:343
agora::rtc::ILocalVideoTrackEx::NETWORK_DESTROY
@ NETWORK_DESTROY
Definition video_track_i.h:343
agora::rtc::ILocalVideoTrackEx::MANUAL
@ MANUAL
Definition video_track_i.h:343
agora::rtc::ILocalVideoTrackEx::AddVideoAvailabilityIndicatorEvents
virtual void AddVideoAvailabilityIndicatorEvents(VideoAvailabilityIndicator event)
Definition video_track_i.h:435
agora::rtc::ILocalVideoTrackEx::getCodecType
virtual int getCodecType()=0
agora::rtc::ILocalVideoTrackEx::Width
virtual int32_t Width() const =0
agora::rtc::ILocalVideoTrackEx::attach
virtual bool attach(const AttachInfo &info)=0
agora::rtc::ILocalVideoTrackEx::getFilterPropertyLLApiInternal
virtual int getFilterPropertyLLApiInternal(const char *id, const char *key, char *json_value, size_t buf_size)
Definition video_track_i.h:540
agora::rtc::ILocalVideoTrack
Definition NGIAgoraVideoTrack.h:394
agora::rtc::IMediaPacketReceiver
Definition NGIAgoraMediaNode.h:318
agora::rtc::IRemoteVideoTrackEx::registerVideoTrackStatsMetrics
virtual void registerVideoTrackStatsMetrics(const std::shared_ptr< IVideoStatsMetrics > &metrics)
Definition video_track_i.h:621
agora::rtc::IRemoteVideoTrackEx::getRemoteSsrc
virtual uint32_t getRemoteSsrc()=0
agora::rtc::IRemoteVideoTrackEx::registerTrackObserver
virtual bool registerTrackObserver(std::shared_ptr< IVideoTrackObserver > observer)
Definition video_track_i.h:613
agora::rtc::IRemoteVideoTrackEx::RemoteVideoEvents
StateEvents< REMOTE_VIDEO_STATE, REMOTE_VIDEO_STATE_REASON > RemoteVideoEvents
Definition video_track_i.h:581
agora::rtc::IRemoteVideoTrackEx::unregisterProactiveCaller
virtual void unregisterProactiveCaller()
Definition video_track_i.h:620
agora::rtc::IRemoteVideoTrackEx::setFilterPropertyLLApiInternal
virtual int setFilterPropertyLLApiInternal(const char *id, const char *key, const char *json_value)
Definition video_track_i.h:637
agora::rtc::IRemoteVideoTrackEx::getStatisticsEx
virtual bool getStatisticsEx(RemoteVideoTrackStatsEx &statsex)
Definition video_track_i.h:611
agora::rtc::IRemoteVideoTrackEx::~IRemoteVideoTrackEx
virtual ~IRemoteVideoTrackEx()
Definition video_track_i.h:604
agora::rtc::IRemoteVideoTrackEx::registerMediaPacketReceiverLLApiInternal
virtual int registerMediaPacketReceiverLLApiInternal(IMediaPacketReceiver *packetReceiver)=0
agora::rtc::IRemoteVideoTrackEx::removeVideoFilterLLApiInternal
virtual bool removeVideoFilterLLApiInternal(agora_refptr< IVideoFilter > filter, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_CAPTURER, const char *id=NULL)=0
agora::rtc::IRemoteVideoTrackEx::getStatisticsLLApiInternal
virtual bool getStatisticsLLApiInternal(RemoteVideoTrackStats &stats)=0
agora::rtc::IRemoteVideoTrackEx::attach
virtual bool attach(const AttachInfo &info, REMOTE_VIDEO_STATE_REASON reason)=0
agora::rtc::IRemoteVideoTrackEx::DetachReason
DetachReason
Definition video_track_i.h:580
agora::rtc::IRemoteVideoTrackEx::MANUAL
@ MANUAL
Definition video_track_i.h:580
agora::rtc::IRemoteVideoTrackEx::TRACK_DESTROY
@ TRACK_DESTROY
Definition video_track_i.h:580
agora::rtc::IRemoteVideoTrackEx::NETWORK_DESTROY
@ NETWORK_DESTROY
Definition video_track_i.h:580
agora::rtc::IRemoteVideoTrackEx::IRemoteVideoTrackEx
IRemoteVideoTrackEx()=default
agora::rtc::IRemoteVideoTrackEx::OnUserRoleStatusUpdate
virtual void OnUserRoleStatusUpdate(UserRoleStatus user_role_status)
Definition video_track_i.h:640
agora::rtc::IRemoteVideoTrackEx::unregisterVideoEncodedFrameObserverLLApiInternal
virtual int unregisterVideoEncodedFrameObserverLLApiInternal(agora::media::IVideoEncodedFrameObserver *encodedObserver)=0
agora::rtc::IRemoteVideoTrackEx::addRendererLLApiInternal
virtual bool addRendererLLApiInternal(agora_refptr< IVideoSinkBase > videoRenderer, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_PRE_RENDERER)=0
agora::rtc::IRemoteVideoTrackEx::unregisterTrackObserver
virtual bool unregisterTrackObserver(IVideoTrackObserver *observer)
Definition video_track_i.h:616
agora::rtc::IRemoteVideoTrackEx::getTrackInfoLLApiInternal
virtual bool getTrackInfoLLApiInternal(VideoTrackInfo &info)=0
agora::rtc::IRemoteVideoTrackEx::hasVideoFilterLLApiInternal
virtual bool hasVideoFilterLLApiInternal(const char *id, media::base::VIDEO_MODULE_POSITION position)=0
agora::rtc::IRemoteVideoTrackEx::registerProactiveCaller
virtual void registerProactiveCaller(const std::shared_ptr< ProactiveCaller > &)
Definition video_track_i.h:619
agora::rtc::IRemoteVideoTrackEx::addVideoFilterLLApiInternal
virtual bool addVideoFilterLLApiInternal(agora_refptr< IVideoFilter > filter, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_CAPTURER, const char *id=NULL)=0
agora::rtc::IRemoteVideoTrackEx::unregisterVideoTrackStatsMetrics
virtual void unregisterVideoTrackStatsMetrics(const std::shared_ptr< IVideoStatsMetrics > &metrics)
Definition video_track_i.h:622
agora::rtc::IRemoteVideoTrackEx::registerVideoEncodedFrameObserverLLApiInternal
virtual int registerVideoEncodedFrameObserverLLApiInternal(agora::media::IVideoEncodedFrameObserver *encodedObserver)=0
agora::rtc::IRemoteVideoTrackEx::removeRendererLLApiInternal
virtual bool removeRendererLLApiInternal(agora_refptr< IVideoSinkBase > videoRenderer, media::base::VIDEO_MODULE_POSITION position)=0
agora::rtc::IRemoteVideoTrackEx::track_observers_
utils::WeakObserversFacility< IVideoTrackObserver > track_observers_
Definition video_track_i.h:643
agora::rtc::IRemoteVideoTrackEx::getStateLLApiInternal
virtual REMOTE_VIDEO_STATE getStateLLApiInternal()=0
agora::rtc::IRemoteVideoTrackEx::enableVideoFilterLLApiInternal
virtual int enableVideoFilterLLApiInternal(const char *id, bool enable)
Definition video_track_i.h:636
agora::rtc::IRemoteVideoTrackEx::detach
virtual bool detach(const DetachInfo &info, REMOTE_VIDEO_STATE_REASON reason)=0
agora::rtc::IRemoteVideoTrackEx::unregisterMediaPacketReceiverLLApiInternal
virtual int unregisterMediaPacketReceiverLLApiInternal(IMediaPacketReceiver *packetReceiver)=0
agora::rtc::IRemoteVideoTrack
Definition NGIAgoraVideoTrack.h:574
agora::rtc::IVideoTrackObserver
Definition video_track_i.h:265
agora::rtc::IVideoTrackObserver::onSvcaaEnabledStateUpdated
virtual void onSvcaaEnabledStateUpdated(uint16_t enabled_state)
Definition video_track_i.h:297
agora::rtc::IVideoTrackObserver::OnVideoEncodeStrategyUpdated
virtual void OnVideoEncodeStrategyUpdated(agora::rtc::VideoEncodeStrategyInfo strategy)
Definition video_track_i.h:325
agora::rtc::IVideoTrackObserver::onFirstVideoFrameDecoded
virtual void onFirstVideoFrameDecoded(std::string cid, uid_t uid, uint32_t ssrc, int width, int height, int timestamp_ms)
Definition video_track_i.h:281
agora::rtc::IVideoTrackObserver::onRemoteVideoStateChanged
virtual void onRemoteVideoStateChanged(uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int timestamp_ms)
Definition video_track_i.h:274
agora::rtc::IVideoTrackObserver::onSvcLayerUpdated
virtual void onSvcLayerUpdated(SvcAABandwidthReportInfo info, int supported_max_layers, AdaptiveScenarioType scenario_type, int channel_size, const std::map< VideoStreamIndex, int > &be_subscribed_streams, const std::vector< int > &svc_layer_bitrate, SvcAASourceType source, const std::vector< SvcAAStrategyResult > &svc_aa_strategy_result_vec)
Definition video_track_i.h:292
agora::rtc::IVideoTrackObserver::onEncoderConfigurationChanged
virtual void onEncoderConfigurationChanged(const std::unordered_map< int, VideoConfigurationEx > &config)
Definition video_track_i.h:291
agora::rtc::IVideoTrackObserver::OnRexferStatusUpdated
virtual void OnRexferStatusUpdated(bool status, int32_t target_bitrate)
Definition video_track_i.h:303
agora::rtc::IVideoTrackObserver::OnNotifyDepartedFrame
virtual void OnNotifyDepartedFrame(uid_t uid, int picture_id)
Definition video_track_i.h:304
agora::rtc::IVideoTrackObserver::onViewSizeChanged
virtual void onViewSizeChanged(uid_t uid, view_t view, int width, int height)
Definition video_track_i.h:301
agora::rtc::IVideoTrackObserver::onVideoHWCodecSpecEvent
virtual void onVideoHWCodecSpecEvent(agora::rtc::VideoHWCodecSpec codecSpec)
Definition video_track_i.h:312
agora::rtc::IVideoTrackObserver::onRemoteFilterStatusChanged
virtual void onRemoteFilterStatusChanged(std::string cid, uid_t uid, uint32_t ssrc, std::string filter_name, bool enabled, bool isDisableMe=false)
Definition video_track_i.h:320
agora::rtc::IVideoTrackObserver::onEncoderStrategySupportedSvcLayersUpdated
virtual void onEncoderStrategySupportedSvcLayersUpdated(int max_layers)
Definition video_track_i.h:298
agora::rtc::IVideoTrackObserver::onFirstVideoKeyFrameReceived
virtual void onFirstVideoKeyFrameReceived(uid_t uid, uint64_t timestamp, const webrtc::FirstVideoFrameStreamInfo &streamInfo)
Definition video_track_i.h:283
agora::rtc::IVideoTrackObserver::OnBcmNetworkStatsFeeback
virtual void OnBcmNetworkStatsFeeback(uid_t uid, std::string &&fb)
Definition video_track_i.h:328
agora::rtc::IVideoTrackObserver::OnVideoStatusUpdated
virtual void OnVideoStatusUpdated(bool is_fallback, webrtc::MediaStreamId stream_id, int reason)
Definition video_track_i.h:309
agora::rtc::IVideoTrackObserver::onRecvSideFps
virtual void onRecvSideFps(uid_t uid, int fps)
Definition video_track_i.h:290
agora::rtc::IVideoTrackObserver::OnEncoderStatusUpdate
virtual void OnEncoderStatusUpdate(webrtc::VideoCodecType codec_type, webrtc::HW_ENCODER_ACCELERATING_STATUS hw_accelerate_status)
Definition video_track_i.h:307
agora::rtc::IVideoTrackObserver::OnVideoCodingModuleInfosUpdated
virtual void OnVideoCodingModuleInfosUpdated(webrtc::VideoCodingModuleInfos videoCodingInfos)
Definition video_track_i.h:324
agora::rtc::IVideoTrackObserver::onSendSideDelay
virtual void onSendSideDelay(int id, int send_delay)
Definition video_track_i.h:288
agora::rtc::IVideoTrackObserver::OnBcmDecodeFeedback
virtual void OnBcmDecodeFeedback(uid_t uid, std::string &&fb)
Definition video_track_i.h:327
agora::rtc::IVideoTrackObserver::onRecvSideDelay
virtual void onRecvSideDelay(uid_t uid, int recv_delay)
Definition video_track_i.h:289
agora::rtc::IVideoTrackObserver::onRemoteAddVideoFilter
virtual void onRemoteAddVideoFilter(std::string cid, uid_t uid, uint32_t ssrc, std::string filter_name, bool enabled)
Definition video_track_i.h:319
agora::rtc::IVideoTrackObserver::OnSetRexferParams
virtual void OnSetRexferParams(bool fec_rexfer, float rexfer_alpha, int max_rexfer_times)
Definition video_track_i.h:302
agora::rtc::IVideoTrackObserver::~IVideoTrackObserver
virtual ~IVideoTrackObserver()=default
agora::rtc::IVideoTrackObserver::onLocalVideoStateChanged
virtual void onLocalVideoStateChanged(int id, LOCAL_VIDEO_STREAM_STATE state, LOCAL_VIDEO_STREAM_REASON reason, int timestamp_ms)
Definition video_track_i.h:269
agora::rtc::IVideoTrackObserver::onCameraInfoListChanged
virtual void onCameraInfoListChanged(CameraInfoList cameraInfoList)
Definition video_track_i.h:305
agora::rtc::IVideoTrackObserver::onCameraCharacteristicProfileChanged
virtual void onCameraCharacteristicProfileChanged(agora::rtc::CameraCharacteristicProfile profile)
Definition video_track_i.h:306
agora::rtc::IVideoTrackObserver::onCameraFacingChanged
virtual void onCameraFacingChanged(int facing)
Definition video_track_i.h:300
agora::rtc::IVideoTrackObserver::OnRequestKeyFrame
virtual void OnRequestKeyFrame(uid_t uid, VIDEO_STREAM_TYPE type)
Definition video_track_i.h:323
agora::rtc::IVideoTrackObserver::onVideoPipelineDataFormatChanged
virtual void onVideoPipelineDataFormatChanged(int format)
Definition video_track_i.h:299
agora::rtc::IVideoTrackObserver::onFirstVideoFrameRendered
virtual void onFirstVideoFrameRendered(int id, uid_t uid, int width, int height, int timestamp_ms)
Definition video_track_i.h:279
agora::rtc::IVideoTrackObserver::onVideoAvailabilityIndicatorEvent
virtual void onVideoAvailabilityIndicatorEvent(VideoAvailabilityIndicator indicator)
Definition video_track_i.h:310
agora::rtc::IVideoTrackObserver::onLocalFilterStatusChanged
virtual void onLocalFilterStatusChanged(int track_id, std::string filter_name, bool enabled)
Definition video_track_i.h:318
agora::rtc::IVideoTrackObserver::onLocalAddVideoFilter
virtual void onLocalAddVideoFilter(int track_id, std::string filter_name, bool enabled)
Definition video_track_i.h:317
agora::rtc::IVideoTrackObserver::OnFirstDecodableFrameReceived
virtual void OnFirstDecodableFrameReceived(uint8_t stream_id)
Definition video_track_i.h:326
agora::rtc::IVideoTrackObserver::onVideoSizeChanged
virtual void onVideoSizeChanged(int id, uid_t uid, int width, int height, int rotation)
Definition video_track_i.h:313
agora::rtc::IVideoTrackObserver::onVideoContentChanged
virtual void onVideoContentChanged(uid_t uid, agora::VideoContentType newType, agora::VideoContentSubType newSubtype)
Definition video_track_i.h:321
agora::rtc::IVideoTrackObserver::onVideoRendererInfoEvent
virtual void onVideoRendererInfoEvent(VideoRendererInfo info)
Definition video_track_i.h:311
agora::rtc::IVideoTrackObserver::onWatermarkStats
virtual void onWatermarkStats(int32_t image_count, int32_t buffer_count, int32_t literal_count, int32_t timestamp_count)
Definition video_track_i.h:315
agora::rtc::IVideoTrackObserver::onLocalVideoEvent
virtual void onLocalVideoEvent(int id, LOCAL_VIDEO_EVENT_TYPE event)
Definition video_track_i.h:268
agora::rtc::IVideoTrackObserver::onYuvConvertStats
virtual void onYuvConvertStats(const YuvConvertStats &stats)
Definition video_track_i.h:314
agora::rtc::IVideoTrackObserver::onSourceVideoSizeChanged
virtual void onSourceVideoSizeChanged(uid_t uid, int width, int height, int rotation, int timestamp_ms)
Definition video_track_i.h:285
agora::internal
Definition AgoraOptional.h:54
agora::media::base::VIDEO_MODULE_POSITION
VIDEO_MODULE_POSITION
The frame position of the video observer.
Definition AgoraMediaBase.h:1239
agora::media::base::POSITION_PRE_RENDERER
@ POSITION_PRE_RENDERER
Definition AgoraMediaBase.h:1250
agora::media::base::POSITION_POST_CAPTURER
@ POSITION_POST_CAPTURER
Definition AgoraMediaBase.h:1245
agora::media::base::VIDEO_PIXEL_FORMAT
VIDEO_PIXEL_FORMAT
The video pixel format.
Definition AgoraMediaBase.h:519
agora::rtc
Definition AgoraExtensions.h:5
agora::rtc::CongestionControlType
CongestionControlType
Definition rtc_connection_i.h:85
agora::rtc::SIMULCAST_STREAM_MODE
SIMULCAST_STREAM_MODE
The mode in which the video stream is sent.
Definition AgoraBase.h:2204
agora::rtc::VideoDumpMode
VideoDumpMode
Definition video_track_i.h:125
agora::rtc::VIDEO_DUMP_DECODED_YUV
@ VIDEO_DUMP_DECODED_YUV
Definition video_track_i.h:132
agora::rtc::VIDEO_DUMP_ENCODED_STREAM
@ VIDEO_DUMP_ENCODED_STREAM
Definition video_track_i.h:130
agora::rtc::VIDEO_DUMP_ALL
@ VIDEO_DUMP_ALL
Definition video_track_i.h:127
agora::rtc::VIDEO_DUMP_FILTERED_YUV
@ VIDEO_DUMP_FILTERED_YUV
Definition video_track_i.h:129
agora::rtc::VIDEO_DUMP_PRE_ENCODER_YUV
@ VIDEO_DUMP_PRE_ENCODER_YUV
Definition video_track_i.h:134
agora::rtc::VIDEO_DUMP_DEFAULT
@ VIDEO_DUMP_DEFAULT
Definition video_track_i.h:126
agora::rtc::VIDEO_DUMP_RENDERED_YUV
@ VIDEO_DUMP_RENDERED_YUV
Definition video_track_i.h:133
agora::rtc::VIDEO_DUMP_RECEIVED_STREAM
@ VIDEO_DUMP_RECEIVED_STREAM
Definition video_track_i.h:131
agora::rtc::VIDEO_DUMP_CAPTURED_YUV
@ VIDEO_DUMP_CAPTURED_YUV
Definition video_track_i.h:128
agora::rtc::VideoModuleId
VideoModuleId
Definition video_track_i.h:73
agora::rtc::VideoModulePostprocess
@ VideoModulePostprocess
Definition video_track_i.h:79
agora::rtc::VideoModuleQoE
@ VideoModuleQoE
Definition video_track_i.h:82
agora::rtc::VideoModuleEncode
@ VideoModuleEncode
Definition video_track_i.h:76
agora::rtc::VideoModuleNetwork
@ VideoModuleNetwork
Definition video_track_i.h:77
agora::rtc::VideoModuleExtension
@ VideoModuleExtension
Definition video_track_i.h:83
agora::rtc::VideoModulePipeline
@ VideoModulePipeline
Definition video_track_i.h:81
agora::rtc::VideoModuleDecode
@ VideoModuleDecode
Definition video_track_i.h:78
agora::rtc::VideoModuleRender
@ VideoModuleRender
Definition video_track_i.h:80
agora::rtc::VideoModulePreprocess
@ VideoModulePreprocess
Definition video_track_i.h:75
agora::rtc::VideoModuleCapture
@ VideoModuleCapture
Definition video_track_i.h:74
agora::rtc::VIDEO_CONTENT_HINT
VIDEO_CONTENT_HINT
The content hint for screen sharing.
Definition AgoraBase.h:3203
agora::rtc::StreamsFecStatsMap
std::map< uint8_t, std::pair< uint16_t, uint32_t > > StreamsFecStatsMap
Definition local_user_i.h:34
agora::rtc::WeakPipelineBuilder
std::weak_ptr< webrtc::Call > WeakPipelineBuilder
Definition common_defines.h:26
agora::rtc::VIDEO_STREAM_TYPE
VIDEO_STREAM_TYPE
The type of video streams.
Definition AgoraBase.h:1654
agora::rtc::StateEvents
std::vector< StateEvent< STATE_TYPE, REASON_TYPE > > StateEvents
Definition track_stat_i.h:21
agora::rtc::VideoQoeEvent
VideoQoeEvent
Definition video_track_i.h:97
agora::rtc::kVideoGlitchDetection
@ kVideoGlitchDetection
Definition video_track_i.h:104
agora::rtc::kVideoQoe200msFreezeDrop
@ kVideoQoe200msFreezeDrop
Definition video_track_i.h:100
agora::rtc::kVideoQoe600msFreezeDrop
@ kVideoQoe600msFreezeDrop
Definition video_track_i.h:99
agora::rtc::kVideoQoeCriticalDrop
@ kVideoQoeCriticalDrop
Definition video_track_i.h:98
agora::rtc::kVideoTimestampException
@ kVideoTimestampException
Definition video_track_i.h:102
agora::rtc::kVideoExtensionStatusDetection
@ kVideoExtensionStatusDetection
Definition video_track_i.h:105
agora::rtc::kVideoQoeFpsSubstandard
@ kVideoQoeFpsSubstandard
Definition video_track_i.h:101
agora::rtc::kVideoQoePipelineException
@ kVideoQoePipelineException
Definition video_track_i.h:103
agora::rtc::LOCAL_VIDEO_EVENT_TYPE
LOCAL_VIDEO_EVENT_TYPE
The local video event type.
Definition AgoraBase.h:3506
agora::rtc::VideoProcessEvent
VideoProcessEvent
Definition video_track_i.h:109
agora::rtc::kVideoProcessEventPreprocessEnqueueFailure
@ kVideoProcessEventPreprocessEnqueueFailure
Definition video_track_i.h:113
agora::rtc::kVideoProcessEventPreprocessFrameFailure
@ kVideoProcessEventPreprocessFrameFailure
Definition video_track_i.h:114
agora::rtc::kVideoProcessEventPreprocessCongested
@ kVideoProcessEventPreprocessCongested
Definition video_track_i.h:116
agora::rtc::kVideoProcessEventNone
@ kVideoProcessEventNone
Definition video_track_i.h:110
agora::rtc::kVideoProcessEventPreprocessNoIncomingFrame
@ kVideoProcessEventPreprocessNoIncomingFrame
Definition video_track_i.h:115
agora::rtc::LOCAL_VIDEO_STREAM_STATE
LOCAL_VIDEO_STREAM_STATE
Local video state types.
Definition AgoraBase.h:3482
agora::rtc::REMOTE_VIDEO_STATE
REMOTE_VIDEO_STATE
The state of the remote video stream.
Definition AgoraBase.h:3770
agora::rtc::SCREEN_SCENARIO_TYPE
SCREEN_SCENARIO_TYPE
The screen sharing scenario.
Definition AgoraBase.h:3222
agora::rtc::LOCAL_VIDEO_STREAM_REASON
LOCAL_VIDEO_STREAM_REASON
Reasons for local video state changes.
Definition AgoraBase.h:3528
agora::rtc::CameraInfoList
std::vector< CameraInfo > CameraInfoList
Definition video_node_i.h:429
agora::rtc::InternalVideoSourceType
InternalVideoSourceType
Definition video_track_i.h:61
agora::rtc::InternalVideoSourceType::MixedSource
@ MixedSource
Definition video_track_i.h:69
agora::rtc::InternalVideoSourceType::Screen
@ Screen
Definition video_track_i.h:65
agora::rtc::InternalVideoSourceType::CustomPacketSource
@ CustomPacketSource
Definition video_track_i.h:68
agora::rtc::InternalVideoSourceType::CustomYuvSource
@ CustomYuvSource
Definition video_track_i.h:66
agora::rtc::InternalVideoSourceType::CustomEncodedImageSource
@ CustomEncodedImageSource
Definition video_track_i.h:67
agora::rtc::InternalVideoSourceType::TranscodedSource
@ TranscodedSource
Definition video_track_i.h:70
agora::rtc::InternalVideoSourceType::None
@ None
Definition video_track_i.h:62
agora::rtc::InternalVideoSourceType::Custom
@ Custom
Definition video_track_i.h:64
agora::rtc::InternalVideoSourceType::Camera
@ Camera
Definition video_track_i.h:63
agora::rtc::VideoAvailabilityLevel
VideoAvailabilityLevel
Definition video_track_i.h:86
agora::rtc::VideoAvailabilityLevel3
@ VideoAvailabilityLevel3
Definition video_track_i.h:89
agora::rtc::VideoAvailabilityLevel2
@ VideoAvailabilityLevel2
Definition video_track_i.h:88
agora::rtc::VideoAvailabilityLevel1
@ VideoAvailabilityLevel1
Definition video_track_i.h:87
agora::rtc::uid_t
unsigned int uid_t
Definition AgoraMediaBase.h:28
agora::rtc::VideoPipelineEvent
VideoPipelineEvent
Definition video_track_i.h:93
agora::rtc::kVideoUplinkEventStaticFrames
@ kVideoUplinkEventStaticFrames
Definition video_track_i.h:94
agora::rtc::WATERMARK_SOURCE_TYPE
WATERMARK_SOURCE_TYPE
Type of watermark source.
Definition AgoraBase.h:2446
agora::rtc::BUFFER
@ BUFFER
Definition AgoraBase.h:2454
agora::rtc::TIMESTAMPS
@ TIMESTAMPS
Definition AgoraBase.h:2466
agora::rtc::IMAGE
@ IMAGE
Definition AgoraBase.h:2450
agora::rtc::LITERAL
@ LITERAL
Definition AgoraBase.h:2460
agora::rtc::VideoCodecAvailableEvent
VideoCodecAvailableEvent
Definition video_track_i.h:120
agora::rtc::kVideoHwH264EncoderHighProfileAvailable
@ kVideoHwH264EncoderHighProfileAvailable
Definition video_track_i.h:122
agora::rtc::kVideoHwH265EncoderAvailable
@ kVideoHwH265EncoderAvailable
Definition video_track_i.h:121
agora::rtc::REMOTE_VIDEO_STATE_REASON
REMOTE_VIDEO_STATE_REASON
The reason for the remote video state change.
Definition AgoraBase.h:3802
agora
Definition AgoraAtomicOps.h:21
agora::view_t
void * view_t
Definition AgoraBase.h:844
agora::ERR_NOT_SUPPORTED
@ ERR_NOT_SUPPORTED
Definition AgoraBase.h:488
webrtc
Definition common_defines.h:18
agora::rtc::CameraCharacteristicProfile
Definition video_node_i.h:391
agora::rtc::ILocalVideoTrackEx::AttachInfo
Definition video_track_i.h:360
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_mode
int fec_mode
Definition video_track_i.h:405
agora::rtc::ILocalVideoTrackEx::AttachInfo::auto_adjust_harq
std::shared_ptr< webrtc::IAutoAdjustHarq > auto_adjust_harq
Definition video_track_i.h:375
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_outside_bandwidth_ratio
int32_t fec_outside_bandwidth_ratio
Definition video_track_i.h:377
agora::rtc::ILocalVideoTrackEx::AttachInfo::response_quick_intra_request
Optional< bool > response_quick_intra_request
Definition video_track_i.h:406
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_vqc
bool enable_minor_stream_vqc
Definition video_track_i.h:378
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_fec_outside_ratio
bool enable_minor_stream_fec_outside_ratio
Definition video_track_i.h:380
agora::rtc::ILocalVideoTrackEx::AttachInfo::sync_peer_uid
uint32_t sync_peer_uid
Definition video_track_i.h:398
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_hw_encoder
std::string enable_hw_encoder
Definition video_track_i.h:371
agora::rtc::ILocalVideoTrackEx::AttachInfo::negotiated_video_codec_caps
VideoNegotiatedCodecCaps negotiated_video_codec_caps
Definition video_track_i.h:395
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_capture_delay
int hw_capture_delay
Definition video_track_i.h:397
agora::rtc::ILocalVideoTrackEx::AttachInfo::network
VideoNodeRtpSink * network
Definition video_track_i.h:363
agora::rtc::ILocalVideoTrackEx::AttachInfo::max_inflight_frame_count_pre_processsing
absl::optional< int > max_inflight_frame_count_pre_processsing
Definition video_track_i.h:390
agora::rtc::ILocalVideoTrackEx::AttachInfo::switch_to_rq
std::string switch_to_rq
Definition video_track_i.h:384
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_capabilities
std::unordered_map< uint8_t, std::string > fec_capabilities
Definition video_track_i.h:403
agora::rtc::ILocalVideoTrackEx::AttachInfo::support_higher_standard_bitrate
bool support_higher_standard_bitrate
Definition video_track_i.h:401
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_two_bytes_extension
bool enable_two_bytes_extension
Definition video_track_i.h:367
agora::rtc::ILocalVideoTrackEx::AttachInfo::cfg_simulcast_stream_mode
Optional< SIMULCAST_STREAM_MODE > cfg_simulcast_stream_mode
Definition video_track_i.h:400
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_intra_request
bool enable_minor_stream_intra_request
Definition video_track_i.h:381
agora::rtc::ILocalVideoTrackEx::AttachInfo::rsfec_config
webrtc::RsfecConfig rsfec_config
Definition video_track_i.h:368
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_rq_classic_method
bool enable_rq_classic_method
Definition video_track_i.h:385
agora::rtc::ILocalVideoTrackEx::AttachInfo::uid
uint32_t uid
Definition video_track_i.h:361
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_quick_intra_high_fec
bool enable_quick_intra_high_fec
Definition video_track_i.h:389
agora::rtc::ILocalVideoTrackEx::AttachInfo::stats_space
uint64_t stats_space
Definition video_track_i.h:365
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_fix_rate
int fec_fix_rate
Definition video_track_i.h:387
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_fec
bool enable_minor_stream_fec
Definition video_track_i.h:379
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_method
int fec_method
Definition video_track_i.h:383
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_video_send_diagnose
bool enable_video_send_diagnose
Definition video_track_i.h:393
agora::rtc::ILocalVideoTrackEx::AttachInfo::qoe_analyzer_parameters
VideoQoEAnalyzerParameter qoe_analyzer_parameters
Definition video_track_i.h:402
agora::rtc::ILocalVideoTrackEx::AttachInfo::ops_parameters
VideoNodeEncoderEx::OPSParametersCollection ops_parameters
Definition video_track_i.h:374
agora::rtc::ILocalVideoTrackEx::AttachInfo::builder
WeakPipelineBuilder builder
Definition video_track_i.h:364
agora::rtc::ILocalVideoTrackEx::AttachInfo::harq_version
int harq_version
Definition video_track_i.h:376
agora::rtc::ILocalVideoTrackEx::AttachInfo::cc_type
CongestionControlType cc_type
Definition video_track_i.h:366
agora::rtc::ILocalVideoTrackEx::AttachInfo::cid
uint32_t cid
Definition video_track_i.h:362
agora::rtc::ILocalVideoTrackEx::AttachInfo::prefer_fec_method
int prefer_fec_method
Definition video_track_i.h:404
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_check_for_disable_fec
bool enable_check_for_disable_fec
Definition video_track_i.h:388
agora::rtc::ILocalVideoTrackEx::CaptureModeItem
Definition video_track_i.h:353
agora::rtc::ILocalVideoTrackEx::CaptureModeItem::mode
int32_t mode
Definition video_track_i.h:354
agora::rtc::ILocalVideoTrackEx::CaptureModeItem::policy
int32_t policy
Definition video_track_i.h:356
agora::rtc::ILocalVideoTrackEx::CaptureModeItem::scene
int32_t scene
Definition video_track_i.h:355
agora::rtc::ILocalVideoTrackEx::CaptureModeItem::type
std::string type
Definition video_track_i.h:357
agora::rtc::ILocalVideoTrackEx::DetachInfo
Definition video_track_i.h:409
agora::rtc::ILocalVideoTrackEx::DetachInfo::reason
DetachReason reason
Definition video_track_i.h:411
agora::rtc::ILocalVideoTrackEx::DetachInfo::network
VideoNodeRtpSink * network
Definition video_track_i.h:410
agora::rtc::ILocalVideoTrackEx::RsfecConfig
Definition video_track_i.h:346
agora::rtc::ILocalVideoTrackEx::RsfecConfig::fec_ratioLevel
std::vector< std::vector< int > > fec_ratioLevel
Definition video_track_i.h:348
agora::rtc::ILocalVideoTrackEx::RsfecConfig::fec_rttThreshold
std::vector< int > fec_rttThreshold
Definition video_track_i.h:349
agora::rtc::ILocalVideoTrackEx::RsfecConfig::fec_protection_factor
std::vector< int > fec_protection_factor
Definition video_track_i.h:347
agora::rtc::ILocalVideoTrackEx::RsfecConfig::pec_enabled
bool pec_enabled
Definition video_track_i.h:350
agora::rtc::IRemoteVideoTrackEx::AttachInfo
Definition video_track_i.h:583
agora::rtc::IRemoteVideoTrackEx::AttachInfo::vpr_position
agora::rtc::VPR_POSITION vpr_position
Definition video_track_i.h:590
agora::rtc::IRemoteVideoTrackEx::AttachInfo::rtcp_sender
VideoNodeRtpSink * rtcp_sender
Definition video_track_i.h:585
agora::rtc::IRemoteVideoTrackEx::AttachInfo::builder
WeakPipelineBuilder builder
Definition video_track_i.h:586
agora::rtc::IRemoteVideoTrackEx::AttachInfo::rsfec_codec_factory
std::shared_ptr< webrtc::IRsfecCodecFactoryInterface > rsfec_codec_factory
Definition video_track_i.h:591
agora::rtc::IRemoteVideoTrackEx::AttachInfo::recv_media_packet
bool recv_media_packet
Definition video_track_i.h:587
agora::rtc::IRemoteVideoTrackEx::AttachInfo::qoe_analyzer_parameters
VideoQoEAnalyzerParameter qoe_analyzer_parameters
Definition video_track_i.h:593
agora::rtc::IRemoteVideoTrackEx::AttachInfo::source
VideoNodeRtpSource * source
Definition video_track_i.h:584
agora::rtc::IRemoteVideoTrackEx::AttachInfo::stats_space
uint64_t stats_space
Definition video_track_i.h:588
agora::rtc::IRemoteVideoTrackEx::AttachInfo::video_threshhold_ms
uint32_t video_threshhold_ms
Definition video_track_i.h:592
agora::rtc::IRemoteVideoTrackEx::AttachInfo::enable_vpr
bool enable_vpr
Definition video_track_i.h:589
agora::rtc::IRemoteVideoTrackEx::DetachInfo
Definition video_track_i.h:596
agora::rtc::IRemoteVideoTrackEx::DetachInfo::reason
DetachReason reason
Definition video_track_i.h:599
agora::rtc::IRemoteVideoTrackEx::DetachInfo::rtcp_sender
VideoNodeRtpSink * rtcp_sender
Definition video_track_i.h:598
agora::rtc::IRemoteVideoTrackEx::DetachInfo::source
VideoNodeRtpSource * source
Definition video_track_i.h:597
agora::rtc::LocalVideoTrackStatsEx
Definition video_track_i.h:331
agora::rtc::LocalVideoTrackStatsEx::sent_loss_ratio
int sent_loss_ratio
Definition video_track_i.h:333
agora::rtc::LocalVideoTrackStatsEx::total_bwe_bps
uint32_t total_bwe_bps
Definition video_track_i.h:334
agora::rtc::LocalVideoTrackStatsEx::media_send_bps
uint32_t media_send_bps
Definition video_track_i.h:336
agora::rtc::LocalVideoTrackStatsEx::total_video_send_target_bps
uint32_t total_video_send_target_bps
Definition video_track_i.h:335
agora::rtc::LocalVideoTrackStatsEx::local_video_stats
LocalVideoTrackStats local_video_stats
Definition video_track_i.h:332
agora::rtc::LocalVideoTrackStatsEx::qp
uint32_t qp
Definition video_track_i.h:337
agora::rtc::LocalVideoTrackStats
Definition NGIAgoraVideoTrack.h:246
agora::rtc::RemoteVideoTrackStatsEx
Definition video_track_i.h:559
agora::rtc::RemoteVideoTrackStatsEx::video_availability
std::vector< VideoAvailabilityIndicator > video_availability
Definition video_track_i.h:574
agora::rtc::RemoteVideoTrackStatsEx::render_in_num
uint32_t render_in_num
Definition video_track_i.h:566
agora::rtc::RemoteVideoTrackStatsEx::jitter_offset_ms
int jitter_offset_ms
Definition video_track_i.h:570
agora::rtc::RemoteVideoTrackStatsEx::content_type
VideoContentType content_type
Definition video_track_i.h:573
agora::rtc::RemoteVideoTrackStatsEx::firstVideoFrameRendered
uint64_t firstVideoFrameRendered
Definition video_track_i.h:561
agora::rtc::RemoteVideoTrackStatsEx::qp_sum
uint64_t qp_sum
Definition video_track_i.h:572
agora::rtc::RemoteVideoTrackStatsEx::loss_af_fec
uint32_t loss_af_fec
Definition video_track_i.h:569
agora::rtc::RemoteVideoTrackStatsEx::render_out_num
uint32_t render_out_num
Definition video_track_i.h:567
agora::rtc::RemoteVideoTrackStatsEx::dec_in_num
uint32_t dec_in_num
Definition video_track_i.h:565
agora::rtc::RemoteVideoTrackStatsEx::isHardwareCodec
bool isHardwareCodec
Definition video_track_i.h:562
agora::rtc::RemoteVideoTrackStatsEx::totalFrozen200ms
int64_t totalFrozen200ms
Definition video_track_i.h:563
agora::rtc::RemoteVideoTrackStatsEx::decode_level
int decode_level[10]
Definition video_track_i.h:571
agora::rtc::RemoteVideoTrackStatsEx::last_frame_max
uint32_t last_frame_max
Definition video_track_i.h:564
agora::rtc::RemoteVideoTrackStatsEx::firstDecodingTimeTickMs
uint64_t firstDecodingTimeTickMs
Definition video_track_i.h:560
agora::rtc::RemoteVideoTrackStatsEx::fec_pkts_num
uint32_t fec_pkts_num
Definition video_track_i.h:568
agora::rtc::RemoteVideoTrackStats
Definition NGIAgoraVideoTrack.h:461
agora::rtc::RemoteVideoTrackStats::RemoteVideoTrackStats
RemoteVideoTrackStats()
Definition NGIAgoraVideoTrack.h:563
agora::rtc::SimulcastConfigInternal
Definition NGIAgoraVideoTrack.h:66
agora::rtc::VideoAvailabilityIndicator
Definition video_track_i.h:137
agora::rtc::VideoAvailabilityIndicator::extension_info
std::string extension_info
Definition video_track_i.h:146
agora::rtc::VideoAvailabilityIndicator::code
int code
Definition video_track_i.h:140
agora::rtc::VideoAvailabilityIndicator::ts_exception_info
std::vector< agora::rtc::VideoTimestampExceptionInfo > ts_exception_info
Definition video_track_i.h:144
agora::rtc::VideoAvailabilityIndicator::extra2
std::vector< agora::rtc::QoEDropInfo > extra2
Definition video_track_i.h:143
agora::rtc::VideoAvailabilityIndicator::glitch_detection_infos
std::vector< GlitchDetectionInfo > glitch_detection_infos
Definition video_track_i.h:145
agora::rtc::VideoAvailabilityIndicator::module
VideoModuleId module
Definition video_track_i.h:139
agora::rtc::VideoAvailabilityIndicator::uid
uid_t uid
Definition video_track_i.h:141
agora::rtc::VideoAvailabilityIndicator::extra
int extra
Definition video_track_i.h:142
agora::rtc::VideoAvailabilityIndicator::level
VideoAvailabilityLevel level
Definition video_track_i.h:138
agora::rtc::VideoConfigurationEx
Definition video_config_i.h:25
agora::rtc::VideoEncoderConfiguration
Video encoder configurations.
Definition AgoraBase.h:2051
agora::rtc::VideoHWCodecSpec
Definition video_node_i.h:405
agora::rtc::VideoQoEAnalyzerParameter
Definition video_track_i.h:161
agora::rtc::VideoQoEAnalyzerParameter::qoe_normal_report_max_times
int qoe_normal_report_max_times
Definition video_track_i.h:166
agora::rtc::VideoQoEAnalyzerParameter::qoe_timing_strategy_report_period
int qoe_timing_strategy_report_period
Definition video_track_i.h:168
agora::rtc::VideoQoEAnalyzerParameter::enable_video_diagnose_logger
bool enable_video_diagnose_logger
Definition video_track_i.h:163
agora::rtc::VideoQoEAnalyzerParameter::qoe_critical_report_max_times
int qoe_critical_report_max_times
Definition video_track_i.h:164
agora::rtc::VideoQoEAnalyzerParameter::qoe_analyzer_enable
bool qoe_analyzer_enable
Definition video_track_i.h:162
agora::rtc::VideoQoEAnalyzerParameter::qoe_report_strategy
int qoe_report_strategy
Definition video_track_i.h:167
agora::rtc::VideoQoEAnalyzerParameter::qoe_high_report_max_times
int qoe_high_report_max_times
Definition video_track_i.h:165
agora::rtc::VideoRendererInfo
Definition video_track_i.h:149
agora::rtc::VideoRendererInfo::isTexture
int isTexture
Definition video_track_i.h:153
agora::rtc::VideoRendererInfo::isSupportHDR
int isSupportHDR
Definition video_track_i.h:152
agora::rtc::VideoRendererInfo::streamDepth
int streamDepth
Definition video_track_i.h:151
agora::rtc::VideoRendererInfo::colorMatrix
int colorMatrix
Definition video_track_i.h:157
agora::rtc::VideoRendererInfo::colorTransfer
int colorTransfer
Definition video_track_i.h:156
agora::rtc::VideoRendererInfo::colorPrimary
int colorPrimary
Definition video_track_i.h:155
agora::rtc::VideoRendererInfo::renderType
int renderType
Definition video_track_i.h:154
agora::rtc::VideoRendererInfo::colorRange
int colorRange
Definition video_track_i.h:158
agora::rtc::VideoRendererInfo::peer
int peer
Definition video_track_i.h:150
agora::rtc::VideoTrackInfo
Definition AgoraBase.h:3889
agora::rtc::WatermarkBuffer::format
media::base::VIDEO_PIXEL_FORMAT format
Definition AgoraBase.h:2565
agora::rtc::WatermarkBuffer::width
int width
Definition AgoraBase.h:2551
agora::rtc::WatermarkBuffer::height
int height
Definition AgoraBase.h:2555
agora::rtc::WatermarkBuffer::buffer
const uint8_t * buffer
Definition AgoraBase.h:2570
agora::rtc::WatermarkBuffer::length
int length
Definition AgoraBase.h:2559
agora::rtc::WatermarkBufferInner
Definition video_track_i.h:180
agora::rtc::WatermarkBufferInner::length
int length
Definition video_track_i.h:184
agora::rtc::WatermarkBufferInner::width
int width
Definition video_track_i.h:182
agora::rtc::WatermarkBufferInner::height
int height
Definition video_track_i.h:183
agora::rtc::WatermarkBufferInner::buffer
std::vector< uint8_t > buffer
Definition video_track_i.h:181
agora::rtc::WatermarkBufferInner::format
media::base::VIDEO_PIXEL_FORMAT format
Definition video_track_i.h:185
agora::rtc::WatermarkConfig
Used to configure watermark-related information.
Definition AgoraBase.h:2580
agora::rtc::WatermarkConfig::buffer
WatermarkBuffer buffer
Definition AgoraBase.h:2593
agora::rtc::WatermarkConfig::id
const char * id
Definition AgoraBase.h:2584
agora::rtc::WatermarkConfig::type
WATERMARK_SOURCE_TYPE type
Definition AgoraBase.h:2588
agora::rtc::WatermarkConfig::timestamp
WatermarkTimestamp timestamp
Definition AgoraBase.h:2599
agora::rtc::WatermarkConfig::literal
WatermarkLiteral literal
Definition AgoraBase.h:2605
agora::rtc::WatermarkConfig::options
WatermarkOptions options
Definition AgoraBase.h:2615
agora::rtc::WatermarkConfig::imageUrl
const char * imageUrl
Definition AgoraBase.h:2609
agora::rtc::WatermarkConfigInner::timestamp
WatermarkTimestampInner timestamp
Definition video_track_i.h:207
agora::rtc::WatermarkConfigInner::WatermarkConfigInner
WatermarkConfigInner(const WatermarkConfig &other)
Definition video_track_i.h:222
agora::rtc::WatermarkConfigInner::image_url
std::string image_url
Definition video_track_i.h:208
agora::rtc::WatermarkConfigInner::options
WatermarkOptions options
Definition video_track_i.h:210
agora::rtc::WatermarkConfigInner::type
WATERMARK_SOURCE_TYPE type
Definition video_track_i.h:204
agora::rtc::WatermarkConfigInner::literal
WatermarkLiteralInner literal
Definition video_track_i.h:206
agora::rtc::WatermarkConfigInner::id
std::string id
Definition video_track_i.h:203
agora::rtc::WatermarkConfigInner::~WatermarkConfigInner
~WatermarkConfigInner()
Definition video_track_i.h:212
agora::rtc::WatermarkConfigInner::buffer
WatermarkBufferInner buffer
Definition video_track_i.h:205
agora::rtc::WatermarkConfigInner::WatermarkConfigInner
WatermarkConfigInner()
Definition video_track_i.h:218
agora::rtc::WatermarkLiteral::fontFilePath
const char * fontFilePath
Definition AgoraBase.h:2531
agora::rtc::WatermarkLiteral::fontSize
int fontSize
Definition AgoraBase.h:2514
agora::rtc::WatermarkLiteral::wmLiteral
const char * wmLiteral
Definition AgoraBase.h:2524
agora::rtc::WatermarkLiteral::strokeWidth
int strokeWidth
Definition AgoraBase.h:2518
agora::rtc::WatermarkLiteralInner
Definition video_track_i.h:188
agora::rtc::WatermarkLiteralInner::font_size
int font_size
Definition video_track_i.h:191
agora::rtc::WatermarkLiteralInner::stroke_width
int stroke_width
Definition video_track_i.h:192
agora::rtc::WatermarkLiteralInner::font_file_path
std::string font_file_path
Definition video_track_i.h:190
agora::rtc::WatermarkLiteralInner::wm_literal
std::string wm_literal
Definition video_track_i.h:189
agora::rtc::WatermarkOptions
Watermark image configurations.
Definition AgoraBase.h:2402
agora::rtc::WatermarkTimestamp::strokeWidth
int strokeWidth
Definition AgoraBase.h:2490
agora::rtc::WatermarkTimestamp::fontFilePath
const char * fontFilePath
Definition AgoraBase.h:2486
agora::rtc::WatermarkTimestamp::fontSize
int fontSize
Definition AgoraBase.h:2479
agora::rtc::WatermarkTimestamp::format
const char * format
Definition AgoraBase.h:2498
agora::rtc::WatermarkTimestampInner
Definition video_track_i.h:195
agora::rtc::WatermarkTimestampInner::stroke_width
int stroke_width
Definition video_track_i.h:199
agora::rtc::WatermarkTimestampInner::format
std::string format
Definition video_track_i.h:198
agora::rtc::WatermarkTimestampInner::font_size
int font_size
Definition video_track_i.h:197
agora::rtc::WatermarkTimestampInner::font_file_path
std::string font_file_path
Definition video_track_i.h:196
agora::rtc::YuvConvertStats
Definition video_track_i.h:171
agora::rtc::YuvConvertStats::width
int width
Definition video_track_i.h:172
agora::rtc::YuvConvertStats::maxUs
int maxUs
Definition video_track_i.h:176
agora::rtc::YuvConvertStats::height
int height
Definition video_track_i.h:173
agora::rtc::YuvConvertStats::deviceId
std::string deviceId
Definition video_track_i.h:177
agora::rtc::YuvConvertStats::method
int method
Definition video_track_i.h:174
agora::rtc::YuvConvertStats::avgUs
int avgUs
Definition video_track_i.h:175