Agora C++ API Reference for All Platforms
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 <unordered_map>
13 #include <vector>
14 
15 #include "AgoraBase.h"
16 #include "AgoraMediaBase.h"
17 #include "AgoraOptional.h"
18 #include "NGIAgoraVideoTrack.h"
19 #include "api/transport/network_types.h"
20 #include "api/video/video_content_type.h"
21 #include "call/rtp_config.h"
22 
23 #include "rtc_connection_i.h"
24 #include "track_stat_i.h"
25 #include "video_config_i.h"
26 #include "common_defines.h"
27 #include "video_node_i.h"
28 #include "utils/thread/base_worker.h"
29 #include "utils/thread/thread_control_block.h"
30 #include "main/core/video/multi_stream_subscribe_interface.h"
31 #include "facilities/media_config/policy_chain/media_config_policy_chain.h"
32 #include <utils/object/object_table.h>
33 namespace webrtc {
34  class IFecMethodFactoryInterface;
35  class ISmoothRender;
36  class IRsfecCodecFactoryInterface;
37  class IAutoAdjustHarq;
38 }
39 
40 namespace agora {
41 namespace utils {
42 
43 template <typename Observer>
45 public:
46  WeakObservers() = default;
47  ~WeakObservers() = default;
48 
49  bool add(std::shared_ptr<Observer> obs) {
50  if (!obs) {
51  return false;
52  }
53 
54  std::lock_guard<std::mutex> _(obs_mutex_);
55  observer_map_[obs.get()] = obs;
56  return true;
57  }
58 
59  int size() {
60  std::lock_guard<std::mutex> _(obs_mutex_);
61  return observer_map_.size();
62  }
63 
64  // better to remove by raw pointer since we may unregister() -> remove() in DTOR
65  bool remove(Observer* obs) {
66  if (!obs) {
67  return false;
68  }
69 
70  std::lock_guard<std::mutex> _(obs_mutex_);
71  if (observer_map_.find(obs) == observer_map_.end()) {
72  return false;
73  }
74 
75  observer_map_.erase(obs);
76  return true;
77  }
78 
79  void notify(std::function<void(std::shared_ptr<Observer>)>&& notify, worker_type worker = nullptr) {
80  std::vector<std::shared_ptr<Observer>> obs_copy;
81 
82  {
83  std::lock_guard<std::mutex> _(obs_mutex_);
84 
85  for (auto it = observer_map_.begin(); it != observer_map_.end();) {
86  auto obs_shared = it->second.lock();
87  if (!obs_shared) {
88  it = observer_map_.erase(it);
89  continue;
90  }
91 
92  obs_copy.push_back(obs_shared);
93  ++it;
94  }
95  }
96 
97  if (worker == nullptr) {
98  for (auto obs : obs_copy) {
99  notify(obs);
100  }
101  } else {
102  std::vector<std::weak_ptr<Observer>> weak_obs_copy;
103  for (auto obs : obs_copy) {
104  weak_obs_copy.push_back(obs);
105  }
106 
107  worker->async_call(LOCATION_HERE, [weak_obs_copy, notify] {
108  for (auto obs : weak_obs_copy) {
109  auto obs_shared = obs.lock();
110  if (obs_shared) {
111  notify(obs_shared);
112  }
113  }
114  });
115  }
116  }
117 
118  private:
119  std::mutex obs_mutex_;
120  std::unordered_map<Observer*, std::weak_ptr<Observer>> observer_map_;
121 };
122 
123 } // namespace utils
124 
125 namespace rtc {
126 
127 class VideoNodeRtpSink;
128 class VideoNodeRtpSource;
129 class VideoTrackConfigurator;
130 
131 enum class InternalVideoSourceType : unsigned {
132  None = 0,
133  Camera = 1,
134  Custom = 2,
135  Screen = 3,
136  CustomYuvSource = 4,
138  CustomPacketSource = 6,
139  MixedSource = 7,
140  TranscodedSource = 8,
141 };
142 
152 };
153 
155  VideoAvailabilityLevel1 = 1, // Completely unusable.
156  VideoAvailabilityLevel2, // Usable but with very poor experience.
157  VideoAvailabilityLevel3, // Usable but with poor experience.
158 };
159 
160 // Events report. New enum can be added but do not change the existing value!
162  kVideoUplinkEventStaticFrames = 1, // Continous static frames, maybe green/black picktures.
163 };
164 
165 // Events report. New enum can be added but do not change the existing value!
168 
169  // These events report will be throttled, refer to VideoEngine::doReportVideoEvent().
172  kVideoProcessEventPreprocessNoIncomingFrame = 1002, // No incoming frame for builtin VPM module
174 };
175 
176 // report hardware codec availability event.
180 };
181 
183  VIDEO_DUMP_DEFAULT = 0, // Dump all.
184  VIDEO_DUMP_CAPTURED_YUV = (1 << 0), // Dump YUV after video capturing.
185  VIDEO_DUMP_FILTERED_YUV = (1 << 1), // Dump YUV before video encoding.
186  VIDEO_DUMP_ENCODED_STREAM = (1 << 2), // Dump stream after video encoding.
187  VIDEO_DUMP_RECEIVED_STREAM = (1 << 3), // Dump stream before video decoding.
188  VIDEO_DUMP_DECODED_YUV = (1 << 4), // Dump YUV after video decoding.
189  VIDEO_DUMP_RENDERED_YUV = (1 << 5), // Dump YUV before video rendering.
190 };
191 
195  int code;
197  int extra;
198 };
199 
200 class IVideoTrackObserver : public std::enable_shared_from_this<IVideoTrackObserver> {
201  public:
202  virtual ~IVideoTrackObserver() = default;
203  virtual void onLocalVideoStateChanged(int id,
205  LOCAL_VIDEO_STREAM_ERROR errorCode,
206  int timestamp_ms) {}
207 
209  REMOTE_VIDEO_STATE state,
211  int timestamp_ms) {}
212 
213  virtual void onFirstVideoFrameRendered(int id, uid_t uid, int width, int height, int timestamp_ms) {}
214 
215  virtual void onFirstVideoFrameDecoded(std::string cid, uid_t uid, uint32_t ssrc, int width, int height, int timestamp_ms) {}
216 
217  virtual void onFirstVideoKeyFrameReceived(uid_t uid, uint64_t timestamp, const webrtc::FirstVideoFrameStreamInfo &streamInfo) {}
218 
219  virtual void onVideoContentChanged(uid_t uid, agora::VideoContentType newType, agora::VideoContentSubType newSubtype) {};
220 
221  virtual void onSourceVideoSizeChanged(uid_t uid,
222  int width, int height,
223  int rotation, int timestamp_ms) {}
224  virtual void onSendSideDelay(int id, int send_delay) {}
225  virtual void onRecvSideDelay(uid_t uid, int recv_delay) {}
226  virtual void onRecvSideFps(uid_t uid, int fps) {}
227  virtual void onEncoderConfigurationChanged(const std::vector<VideoConfigurationEx>& config) {}
228  virtual void onCameraFacingChanged(int facing) {}
229  virtual void onViewSizeChanged(uid_t uid, agora::utils::object_handle view, int width, int height) {}
230  virtual void OnSetRexferParams(bool fec_rexfer, float rexfer_alpha) {}
231  virtual void OnRexferStatusUpdated(bool status, int32_t target_bitrate) {}
232  virtual void OnRequestCodecFallback() {}
233  virtual void OnNotifyDepartedFrame(uid_t uid, int picture_id) {}
234  virtual void onCameraInfoListChanged(CameraInfoList cameraInfoList) {}
236  virtual void onVideoSizeChanged(int id, uid_t uid, int width, int height, int rotation) {}
237 
238  virtual void onLocalAddVideoFilter(int track_id, std::string filter_name, bool enabled){}
239  virtual void onLocalFilterStatusChanged(int track_id, std::string filter_name, bool enabled){}
240  virtual void onRemoteAddVideoFilter(std::string cid, uid_t uid, uint32_t ssrc, std::string filter_name, bool enabled){}
241  virtual void onRemoteFilterStatusChanged(std::string cid, uid_t uid, uint32_t ssrc, std::string filter_name, bool enabled){}
242 };
243 
247 };
248 
250  public:
252 
253  // keep the same as webrtc::RsfecConfig
254  struct RsfecConfig {
255  std::vector<int> fec_protection_factor;
256  std::vector<std::vector<int>> fec_ratioLevel;
257  std::vector<int> fec_rttThreshold;
259  };
260 
264  bool vqcFluencyMode = false;
270  int QpAdjust;
272  int min_qp;
273  int max_qp;
282  std::string vqcResAdjustNumList;
284  std::string vqcVpxQpadjust;
285  std::string vqcAv1Qpadjust;
290  };
291 
292  struct AttachInfo {
293  uint32_t uid;
294  uint32_t cid;
295  VideoNodeRtpSink* network;
297  uint64_t stats_space;
299  webrtc::CongestionControllerConfig cc_config;
301  webrtc::RsfecConfig rsfec_config;
302 
303  // hardware encoder related
304  std::string enable_hw_encoder;
305  std::string hw_encoder_provider;
308 
309  // video config
311  std::shared_ptr<webrtc::IFecMethodFactoryInterface> fec_method_factory;
312  std::shared_ptr<webrtc::IAutoAdjustHarq> auto_adjust_harq;
319 
321  int dm_wsize;
322  int dm_maxgc;
323  std::string switch_to_rq;
324  bool dm_lowred;
325 
332 
333  // for intra request
335 
337 
338  // enable video diagnose
341  // video codec alignment
345  // video decode capablitys
347  // hw video encode configure
350 
352  uint32_t sync_peer_uid;
353 
356  };
357 
358  struct DetachInfo {
359  VideoNodeRtpSink* network;
361  };
362 
363  ILocalVideoTrackEx() : id_(id_generator_++) {}
364  virtual ~ILocalVideoTrackEx() {}
365 
366  virtual bool hasPublished() = 0;
367 
368  virtual int SetVideoConfigEx(const VideoConfigurationEx& configEx, utils::ConfigPriority priority = utils::CONFIG_PRIORITY_USER) = 0;
369 
370  virtual int GetConfigExs(std::vector<VideoConfigurationEx>& configs) = 0;
371 
373 
374  virtual void GetVideoAvailabilityIndicatorEvents(std::vector<VideoAvailabilityIndicator>& events) {}
375 
376  virtual void ReconfigureFecMethod(int fec_method, int dmec_version, int fec_mul_rdc) = 0;
377 
378  virtual int setUserId(uid_t uid) { user_id_ = uid; return 0; }
379 
380  virtual uid_t getUserId() { return user_id_; }
381 
382  virtual int getObserverSize() { return track_observers_.size(); }
383 
384  virtual int GetActiveStreamsCount() = 0;
385 
386  virtual int prepareNodes(const char* id = nullptr) = 0;
387 
388  virtual bool attach(const AttachInfo& info) = 0;
389  virtual bool detach(const DetachInfo& info) = 0;
390 
391  virtual bool registerTrackObserver(std::shared_ptr<IVideoTrackObserver> observer) {
392  return false;
393  }
395  return false;
396  }
397 
398  virtual bool getStatisticsEx(LocalVideoTrackStatsEx& statsEx) { return false; }
399  virtual int32_t Width() const = 0;
400  virtual int32_t Height() const = 0;
401  virtual bool Enabled() const = 0;
402  // TODO(Qingyou Pan): Need refine code to remove this interface.
403  virtual int addVideoWatermark(const char* watermarkUrl, const WatermarkOptions& options) { return -ERR_NOT_SUPPORTED; }
404  virtual int clearVideoWatermarks() { return -ERR_NOT_SUPPORTED; }
405 
406  virtual VideoTrackConfigurator* GetVideoTrackConfigurator() {
407  return nullptr;
408  }
409 
411 
413 
414  virtual int updateContentHint(VIDEO_CONTENT_HINT contentHint) { return -ERR_NOT_SUPPORTED; }
415 
416  virtual int updateScreenCaptureScenario(SCREEN_SCENARIO_TYPE screenScenario) { return -ERR_NOT_SUPPORTED; }
417 
418  int TrackId() const { return id_; }
419 
420  void setUniqueId(const std::string& unique_id) { unique_id_ = unique_id; }
421 
423 
425 
426  virtual int setLocalVideoSend(bool send) = 0;
427  protected:
428  const int id_;
431  std::string unique_id_;
432 
433  private:
434  static std::atomic<int> id_generator_;
435 };
436 
440  bool isHardwareCodec = false;
441  int64_t totalFrozen200ms = 0;
442  uint32_t last_frame_max = 0;
443  uint32_t dec_in_num = 0;
444  uint32_t render_in_num = 0;
445  uint32_t render_out_num = 0;
446  uint32_t fec_pkts_num = 0;
447  uint32_t loss_af_fec = 0;
449  int decode_level[10] = {0};
450  uint64_t qp_sum = 0;
451  std::vector<VideoAvailabilityIndicator> video_availability;
452 };
453 
455  public:
458 
459  struct AttachInfo {
460  VideoNodeRtpSource* source;
461  VideoNodeRtpSink* rtcp_sender;
463  bool recv_media_packet = false;
464  uint64_t stats_space = 0;
465  webrtc::ISmoothRender* smooth_render = nullptr;
467  std::shared_ptr<webrtc::IRsfecCodecFactoryInterface> rsfec_codec_factory;
468  uint32_t video_threshhold_ms = 0;
469  };
470 
471  struct DetachInfo {
472  VideoNodeRtpSource* source;
473  VideoNodeRtpSink* rtcp_sender;
475  };
476 
477  IRemoteVideoTrackEx() = default;
478 
479  virtual ~IRemoteVideoTrackEx() {}
480 
481  virtual uint32_t getRemoteSsrc() = 0;
482 
483  virtual bool attach(const AttachInfo& info, REMOTE_VIDEO_STATE_REASON reason) = 0;
484  virtual bool detach(const DetachInfo& info, REMOTE_VIDEO_STATE_REASON reason) = 0;
485 
486  virtual bool getStatisticsEx(RemoteVideoTrackStatsEx& statsex) { return false; }
487 
488  virtual bool registerTrackObserver(std::shared_ptr<IVideoTrackObserver> observer) {
489  return false;
490  }
492  return false;
493  }
494 
495  protected:
497 };
498 
499 } // namespace rtc
500 } // namespace agora
agora::rtc::IRemoteVideoTrackEx::DetachInfo::rtcp_sender
VideoNodeRtpSink * rtcp_sender
Definition: video_track_i.h:473
agora::utils::WeakObservers::size
int size()
Definition: video_track_i.h:59
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcResAdjustNumList
std::string vqcResAdjustNumList
Definition: video_track_i.h:282
agora::rtc::InternalVideoSourceType
InternalVideoSourceType
Definition: video_track_i.h:131
agora::rtc::LOCAL_VIDEO_STREAM_STATE
LOCAL_VIDEO_STREAM_STATE
Definition: AgoraBase.h:2751
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_outside_bandwidth_ratio
int32_t fec_outside_bandwidth_ratio
Definition: video_track_i.h:314
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcFluencyMode
bool vqcFluencyMode
Definition: video_track_i.h:264
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_encoder_fotmat_config
std::string hw_encoder_fotmat_config
Definition: video_track_i.h:348
agora::rtc::ILocalVideoTrackEx::Width
virtual int32_t Width() const =0
agora::rtc::RemoteVideoTrackStatsEx::decode_level
int decode_level[10]
Definition: video_track_i.h:449
agora::rtc::ILocalVideoTrackEx::AttachInfo::auto_adjust_harq
std::shared_ptr< webrtc::IAutoAdjustHarq > auto_adjust_harq
Definition: video_track_i.h:312
agora::rtc::ILocalVideoTrackEx::SetVideoConfigEx
virtual int SetVideoConfigEx(const VideoConfigurationEx &configEx, utils::ConfigPriority priority=utils::CONFIG_PRIORITY_USER)=0
agora::rtc::InternalVideoSourceType::MixedSource
@ MixedSource
agora::rtc::RemoteVideoTrackStatsEx::firstDecodingTimeTickMs
uint64_t firstDecodingTimeTickMs
Definition: video_track_i.h:438
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_fix_rate
int fec_fix_rate
Definition: video_track_i.h:327
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::start_framerate
int start_framerate
Definition: video_track_i.h:279
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcAdjustStep
int vqcAdjustStep
Definition: video_track_i.h:277
agora::rtc::kVideoProcessEventPreprocessNoIncomingFrame
@ kVideoProcessEventPreprocessNoIncomingFrame
Definition: video_track_i.h:172
agora::rtc::ILocalVideoTrackEx::TRACK_DESTROY
@ TRACK_DESTROY
Definition: video_track_i.h:251
agora::rtc::VideoProcessEvent
VideoProcessEvent
Definition: video_track_i.h:166
agora::rtc::ILocalVideoTrackEx::track_observers_
utils::WeakObservers< IVideoTrackObserver > track_observers_
Definition: video_track_i.h:429
agora::rtc::RemoteVideoTrackStatsEx::render_out_num
uint32_t render_out_num
Definition: video_track_i.h:445
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:240
agora::rtc::VideoAvailabilityLevel1
@ VideoAvailabilityLevel1
Definition: video_track_i.h:155
agora::rtc::RemoteVideoTrackStatsEx::fec_pkts_num
uint32_t fec_pkts_num
Definition: video_track_i.h:446
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::frame_max_size
int frame_max_size
Definition: video_track_i.h:274
agora::rtc::IRemoteVideoTrackEx::NETWORK_DESTROY
@ NETWORK_DESTROY
Definition: video_track_i.h:456
agora::rtc::IVideoTrackObserver::onViewSizeChanged
virtual void onViewSizeChanged(uid_t uid, agora::utils::object_handle view, int width, int height)
Definition: video_track_i.h:229
agora::rtc::SCREEN_SCENARIO_TYPE
SCREEN_SCENARIO_TYPE
Definition: AgoraBase.h:2634
agora::rtc::kVideoProcessEventNone
@ kVideoProcessEventNone
Definition: video_track_i.h:167
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_encoder_height_alignment
Optional< uint32_t > hw_encoder_height_alignment
Definition: video_track_i.h:343
agora::rtc::LocalVideoTrackStatsEx
Definition: video_track_i.h:244
agora::rtc::IVideoTrackObserver::onVideoSizeChanged
virtual void onVideoSizeChanged(int id, uid_t uid, int width, int height, int rotation)
Definition: video_track_i.h:236
agora::rtc::ILocalVideoTrackEx::AttachInfo::dm_maxgc
int dm_maxgc
Definition: video_track_i.h:322
agora::rtc::ILocalVideoTrackEx::AttachInfo::cfg_simulcast_stream_mode
Optional< SIMULCAST_STREAM_MODE > cfg_simulcast_stream_mode
Definition: video_track_i.h:354
agora::rtc::VideoDumpMode
VideoDumpMode
Definition: video_track_i.h:182
webrtc
Definition: common_defines.h:11
agora::rtc::ILocalVideoTrackEx::TrackId
int TrackId() const
Definition: video_track_i.h:418
agora::rtc::ILocalVideoTrackEx::AttachInfo::low_stream_enable_hw_encoder
Optional< bool > low_stream_enable_hw_encoder
Definition: video_track_i.h:306
agora::rtc::ILocalVideoTrackEx::MANUAL
@ MANUAL
Definition: video_track_i.h:251
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::screenShareDetailMaxQP
int screenShareDetailMaxQP
Definition: video_track_i.h:265
agora::rtc::kVideoProcessEventPreprocessFrameFailure
@ kVideoProcessEventPreprocessFrameFailure
Definition: video_track_i.h:171
agora::rtc::ILocalVideoTrackEx::addVideoWatermark
virtual int addVideoWatermark(const char *watermarkUrl, const WatermarkOptions &options)
Definition: video_track_i.h:403
agora::rtc::IRemoteVideoTrackEx::AttachInfo::builder
WeakPipelineBuilder builder
Definition: video_track_i.h:462
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_enc_hevc_exceptions
Optional< uint32_t > hw_enc_hevc_exceptions
Definition: video_track_i.h:349
agora::rtc::VideoCodecAvailableEvent
VideoCodecAvailableEvent
Definition: video_track_i.h:177
agora::rtc::ILocalVideoTrackEx::registerVideoEncodedImageReceiver
virtual int registerVideoEncodedImageReceiver(media::IVideoEncodedFrameObserver *videoReceiver)
Definition: video_track_i.h:422
agora::rtc::ILocalVideoTrackEx::prepareNodes
virtual int prepareNodes(const char *id=nullptr)=0
agora::rtc::IVideoTrackObserver::onSourceVideoSizeChanged
virtual void onSourceVideoSizeChanged(uid_t uid, int width, int height, int rotation, int timestamp_ms)
Definition: video_track_i.h:221
agora::rtc::IVideoTrackObserver::onVideoAvailabilityIndicatorEvent
virtual void onVideoAvailabilityIndicatorEvent(VideoAvailabilityIndicator indicator)
Definition: video_track_i.h:235
agora::rtc::ILocalVideoTrackEx::AddVideoAvailabilityIndicatorEvents
virtual void AddVideoAvailabilityIndicatorEvents(VideoAvailabilityIndicator event)
Definition: video_track_i.h:372
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::lowFrameRateMode
bool lowFrameRateMode
Definition: video_track_i.h:278
agora::rtc::VideoAvailabilityLevel
VideoAvailabilityLevel
Definition: video_track_i.h:154
agora::rtc::VIDEO_DUMP_RECEIVED_STREAM
@ VIDEO_DUMP_RECEIVED_STREAM
Definition: video_track_i.h:187
agora::rtc::IRemoteVideoTrackEx::attach
virtual bool attach(const AttachInfo &info, REMOTE_VIDEO_STATE_REASON reason)=0
agora::rtc::LocalVideoTrackStatsEx::sent_loss_ratio
int sent_loss_ratio
Definition: video_track_i.h:246
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcLowbitrateThreshold
int vqcLowbitrateThreshold
Definition: video_track_i.h:280
agora::rtc::ILocalVideoTrackEx::AttachInfo::cc_config
webrtc::CongestionControllerConfig cc_config
Definition: video_track_i.h:299
agora::rtc::IRemoteVideoTrackEx::IRemoteVideoTrackEx
IRemoteVideoTrackEx()=default
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1700
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_fec
bool enable_minor_stream_fec
Definition: video_track_i.h:316
agora::rtc::VideoModuleEncode
@ VideoModuleEncode
Definition: video_track_i.h:146
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::QuickAdaptNetwork
bool QuickAdaptNetwork
Definition: video_track_i.h:262
agora::rtc::IVideoTrackObserver::onFirstVideoFrameRendered
virtual void onFirstVideoFrameRendered(int id, uid_t uid, int width, int height, int timestamp_ms)
Definition: video_track_i.h:213
agora::rtc::ILocalVideoTrackEx::RsfecConfig::fec_protection_factor
std::vector< int > fec_protection_factor
Definition: video_track_i.h:255
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::MinHoldtimeAutoResizeZoomin
int MinHoldtimeAutoResizeZoomin
Definition: video_track_i.h:268
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_quick_intra_high_fec
bool enable_quick_intra_high_fec
Definition: video_track_i.h:330
agora::rtc::InternalVideoSourceType::Screen
@ Screen
agora::rtc::IRemoteVideoTrackEx::RemoteVideoEvents
StateEvents< REMOTE_VIDEO_STATE, REMOTE_VIDEO_STATE_REASON > RemoteVideoEvents
Definition: video_track_i.h:457
agora::rtc::IVideoTrackObserver::onVideoContentChanged
virtual void onVideoContentChanged(uid_t uid, agora::VideoContentType newType, agora::VideoContentSubType newSubtype)
Definition: video_track_i.h:219
agora::rtc::REMOTE_VIDEO_STATE_REASON
REMOTE_VIDEO_STATE_REASON
Definition: AgoraBase.h:2974
agora::rtc::VideoModuleRender
@ VideoModuleRender
Definition: video_track_i.h:150
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:215
agora::rtc::IVideoTrackObserver::OnRexferStatusUpdated
virtual void OnRexferStatusUpdated(bool status, int32_t target_bitrate)
Definition: video_track_i.h:231
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:208
agora::rtc::IVideoTrackObserver::onRecvSideDelay
virtual void onRecvSideDelay(uid_t uid, int recv_delay)
Definition: video_track_i.h:225
agora::utils::WeakObservers::~WeakObservers
~WeakObservers()=default
agora::rtc::VideoAvailabilityLevel2
@ VideoAvailabilityLevel2
Definition: video_track_i.h:156
agora::rtc::ILocalVideoTrackEx::GetVideoTrackConfigurator
virtual VideoTrackConfigurator * GetVideoTrackConfigurator()
Definition: video_track_i.h:406
agora::rtc::IVideoTrackObserver::OnRequestCodecFallback
virtual void OnRequestCodecFallback()
Definition: video_track_i.h:232
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::max_qp
int max_qp
Definition: video_track_i.h:273
agora::rtc::ILocalVideoTrackEx::AttachInfo::max_inflight_frame_count_pre_processsing
absl::optional< int > max_inflight_frame_count_pre_processsing
Definition: video_track_i.h:331
agora::rtc::ILocalVideoTrackEx::AttachInfo::minscore_for_swh265enc
Optional< int > minscore_for_swh265enc
Definition: video_track_i.h:307
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_vqc
bool enable_minor_stream_vqc
Definition: video_track_i.h:315
agora::rtc::IRemoteVideoTrackEx::registerTrackObserver
virtual bool registerTrackObserver(std::shared_ptr< IVideoTrackObserver > observer)
Definition: video_track_i.h:488
agora::rtc::ILocalVideoTrackEx::AttachInfo::dm_lowred
bool dm_lowred
Definition: video_track_i.h:324
agora::rtc::ILocalVideoTrackEx::AttachInfo::av_enc_bitrate_adjustment_type
Optional< uint32_t > av_enc_bitrate_adjustment_type
Definition: video_track_i.h:336
agora::rtc::IVideoTrackObserver::onEncoderConfigurationChanged
virtual void onEncoderConfigurationChanged(const std::vector< VideoConfigurationEx > &config)
Definition: video_track_i.h:227
agora::rtc::ILocalVideoTrackEx::RsfecConfig::fec_ratioLevel
std::vector< std::vector< int > > fec_ratioLevel
Definition: video_track_i.h:256
agora::rtc::IRemoteVideoTrackEx::track_observers_
utils::WeakObservers< IVideoTrackObserver > track_observers_
Definition: video_track_i.h:496
agora::rtc::CameraInfoList
std::vector< CameraInfo > CameraInfoList
Definition: video_node_i.h:267
agora::rtc::ILocalVideoTrackEx::getObserverSize
virtual int getObserverSize()
Definition: video_track_i.h:382
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::ILocalVideoTrackEx::user_id_
uid_t user_id_
Definition: video_track_i.h:430
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_encoder_provider
std::string hw_encoder_provider
Definition: video_track_i.h:305
agora::rtc::ILocalVideoTrackEx::unregisterVideoEncodedImageReceiver
virtual int unregisterVideoEncodedImageReceiver(media::IVideoEncodedFrameObserver *videoReceiver)
Definition: video_track_i.h:424
agora::rtc::kVideoProcessEventPreprocessEnqueueFailure
@ kVideoProcessEventPreprocessEnqueueFailure
Definition: video_track_i.h:170
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcAv1Qpadjust
std::string vqcAv1Qpadjust
Definition: video_track_i.h:285
agora::rtc::InternalVideoSourceType::CustomEncodedImageSource
@ CustomEncodedImageSource
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::min_qp
int min_qp
Definition: video_track_i.h:272
agora::rtc::REMOTE_VIDEO_STATE
REMOTE_VIDEO_STATE
Definition: AgoraBase.h:2945
agora::utils::WeakObservers::notify
void notify(std::function< void(std::shared_ptr< Observer >)> &&notify, worker_type worker=nullptr)
Definition: video_track_i.h:79
agora::rtc::IRemoteVideoTrackEx::AttachInfo::disable_rewrite_num_reorder_frame
bool disable_rewrite_num_reorder_frame
Definition: video_track_i.h:466
agora::rtc::RemoteVideoTrackStatsEx
Definition: video_track_i.h:437
agora::rtc::ILocalVideoTrackEx::unregisterTrackObserver
virtual bool unregisterTrackObserver(IVideoTrackObserver *observer)
Definition: video_track_i.h:394
agora::rtc::VideoAvailabilityIndicator::uid
uid_t uid
Definition: video_track_i.h:196
agora::rtc::ILocalVideoTrackEx
Definition: video_track_i.h:249
agora::rtc::IRemoteVideoTrackEx::DetachInfo
Definition: video_track_i.h:471
agora::rtc::IRemoteVideoTrackEx::AttachInfo::source
VideoNodeRtpSource * source
Definition: video_track_i.h:460
agora::rtc::ILocalVideoTrackEx::AttachInfo::uid
uint32_t uid
Definition: video_track_i.h:293
agora::rtc::ILocalVideoTrackEx::GetVideoAvailabilityIndicatorEvents
virtual void GetVideoAvailabilityIndicatorEvents(std::vector< VideoAvailabilityIndicator > &events)
Definition: video_track_i.h:374
agora::rtc::ILocalVideoTrackEx::AttachInfo::cid
uint32_t cid
Definition: video_track_i.h:294
agora::rtc::ILocalVideoTrackEx::RsfecConfig::fec_rttThreshold
std::vector< int > fec_rttThreshold
Definition: video_track_i.h:257
agora::rtc::RemoteVideoTrackStatsEx::render_in_num
uint32_t render_in_num
Definition: video_track_i.h:444
agora::rtc::IVideoTrackObserver::onLocalVideoStateChanged
virtual void onLocalVideoStateChanged(int id, LOCAL_VIDEO_STREAM_STATE state, LOCAL_VIDEO_STREAM_ERROR errorCode, int timestamp_ms)
Definition: video_track_i.h:203
agora::rtc::IVideoTrackObserver::~IVideoTrackObserver
virtual ~IVideoTrackObserver()=default
agora::rtc::ILocalVideoTrackEx::AttachInfo::stats_space
uint64_t stats_space
Definition: video_track_i.h:297
agora::rtc::ILocalVideoTrackEx::getVideoEncoderConfiguration
virtual rtc::VideoEncoderConfiguration getVideoEncoderConfiguration()
Definition: video_track_i.h:412
agora::rtc::IVideoTrackObserver::onRecvSideFps
virtual void onRecvSideFps(uid_t uid, int fps)
Definition: video_track_i.h:226
agora::rtc::VideoModulePipeline
@ VideoModulePipeline
Definition: video_track_i.h:151
agora::rtc::IRemoteVideoTrackEx::AttachInfo
Definition: video_track_i.h:459
agora::rtc::VIDEO_DUMP_FILTERED_YUV
@ VIDEO_DUMP_FILTERED_YUV
Definition: video_track_i.h:185
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::IosH265Adjust
int IosH265Adjust
Definition: video_track_i.h:271
agora::utils::WeakObservers::add
bool add(std::shared_ptr< Observer > obs)
Definition: video_track_i.h:49
agora::rtc::ILocalVideoTrackEx::DetachInfo
Definition: video_track_i.h:358
agora::rtc::ILocalVideoTrackEx::AttachInfo::negotiated_video_decode_caps
uint8_t negotiated_video_decode_caps
Definition: video_track_i.h:346
agora::rtc::VideoAvailabilityIndicator::extra
int extra
Definition: video_track_i.h:197
agora::rtc::IRemoteVideoTrackEx::MANUAL
@ MANUAL
Definition: video_track_i.h:456
agora::rtc::ILocalVideoTrackEx::DetachInfo::reason
DetachReason reason
Definition: video_track_i.h:360
agora::rtc::ILocalVideoTrackEx::ReconfigureFecMethod
virtual void ReconfigureFecMethod(int fec_method, int dmec_version, int fec_mul_rdc)=0
agora::rtc::ILocalVideoTrack
Definition: NGIAgoraVideoTrack.h:292
agora::rtc::ILocalVideoTrackEx::AttachInfo::rsfec_config
webrtc::RsfecConfig rsfec_config
Definition: video_track_i.h:301
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcSwH264Qpadjust
int vqcSwH264Qpadjust
Definition: video_track_i.h:283
agora::rtc::VIDEO_DUMP_CAPTURED_YUV
@ VIDEO_DUMP_CAPTURED_YUV
Definition: video_track_i.h:184
agora::rtc::ILocalVideoTrackEx::AttachInfo::builder
WeakPipelineBuilder builder
Definition: video_track_i.h:296
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::lowFpsThres
int lowFpsThres
Definition: video_track_i.h:288
agora::rtc::ILocalVideoTrackEx::setLocalVideoSend
virtual int setLocalVideoSend(bool send)=0
agora::rtc::VIDEO_DUMP_RENDERED_YUV
@ VIDEO_DUMP_RENDERED_YUV
Definition: video_track_i.h:189
agora::rtc::ILocalVideoTrackEx::NETWORK_DESTROY
@ NETWORK_DESTROY
Definition: video_track_i.h:251
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::lowLoadEstimateThres
int lowLoadEstimateThres
Definition: video_track_i.h:286
agora::rtc::VideoModuleDecode
@ VideoModuleDecode
Definition: video_track_i.h:148
agora::rtc::ILocalVideoTrackEx::setUniqueId
void setUniqueId(const std::string &unique_id)
Definition: video_track_i.h:420
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::highFpsThres
int highFpsThres
Definition: video_track_i.h:289
agora::rtc::ILocalVideoTrackEx::id_
const int id_
Definition: video_track_i.h:428
agora::rtc::RemoteVideoTrackStatsEx::totalFrozen200ms
int64_t totalFrozen200ms
Definition: video_track_i.h:441
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_hw_encoder
std::string enable_hw_encoder
Definition: video_track_i.h:304
agora::rtc::RemoteVideoTrackStatsEx::jitter_offset_ms
int jitter_offset_ms
Definition: video_track_i.h:448
agora::rtc::IRemoteVideoTrackEx::AttachInfo::rsfec_codec_factory
std::shared_ptr< webrtc::IRsfecCodecFactoryInterface > rsfec_codec_factory
Definition: video_track_i.h:467
agora::rtc::ILocalVideoTrackEx::setUserId
virtual int setUserId(uid_t uid)
Definition: video_track_i.h:378
agora::rtc::IRemoteVideoTrackEx::unregisterTrackObserver
virtual bool unregisterTrackObserver(IVideoTrackObserver *observer)
Definition: video_track_i.h:491
agora::rtc::ILocalVideoTrackEx::DetachInfo::network
VideoNodeRtpSink * network
Definition: video_track_i.h:359
agora::rtc::ILocalVideoTrackEx::AttachInfo::ops_parameters
OPSParametersCollection ops_parameters
Definition: video_track_i.h:310
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::QpAdjust
int QpAdjust
Definition: video_track_i.h:270
agora::rtc::InternalVideoSourceType::None
@ None
agora::rtc::ILocalVideoTrackEx::AttachInfo::largest_ref_distance
int largest_ref_distance
Definition: video_track_i.h:328
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_method_factory
std::shared_ptr< webrtc::IFecMethodFactoryInterface > fec_method_factory
Definition: video_track_i.h:311
agora::rtc::kVideoHwH264EncoderHighProfileAvailable
@ kVideoHwH264EncoderHighProfileAvailable
Definition: video_track_i.h:179
agora::rtc::IRemoteVideoTrackEx::AttachInfo::rtcp_sender
VideoNodeRtpSink * rtcp_sender
Definition: video_track_i.h:461
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_two_bytes_extension
bool enable_two_bytes_extension
Definition: video_track_i.h:300
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcChangeResoType
int vqcChangeResoType
Definition: video_track_i.h:281
agora::rtc::VideoConfigurationEx
Definition: video_config_i.h:25
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_fec_outside_ratio
bool enable_minor_stream_fec_outside_ratio
Definition: video_track_i.h:317
agora::rtc::ILocalVideoTrackEx::unique_id_
std::string unique_id_
Definition: video_track_i.h:431
agora::rtc::StateEvents
std::vector< StateEvent< STATE_TYPE, REASON_TYPE > > StateEvents
Definition: track_stat_i.h:21
agora::rtc::RemoteVideoTrackStatsEx::dec_in_num
uint32_t dec_in_num
Definition: video_track_i.h:443
agora::rtc::IVideoTrackObserver::onRemoteFilterStatusChanged
virtual void onRemoteFilterStatusChanged(std::string cid, uid_t uid, uint32_t ssrc, std::string filter_name, bool enabled)
Definition: video_track_i.h:241
agora::rtc::LOCAL_VIDEO_STREAM_ERROR
LOCAL_VIDEO_STREAM_ERROR
Definition: AgoraBase.h:2774
agora::rtc::IVideoTrackObserver::onLocalFilterStatusChanged
virtual void onLocalFilterStatusChanged(int track_id, std::string filter_name, bool enabled)
Definition: video_track_i.h:239
agora::rtc::ILocalVideoTrackEx::attach
virtual bool attach(const AttachInfo &info)=0
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::lowBitrateCoeffForAutoResize
int lowBitrateCoeffForAutoResize
Definition: video_track_i.h:275
agora::rtc::IRemoteVideoTrackEx
Definition: video_track_i.h:454
agora::rtc::VideoModuleId
VideoModuleId
Definition: video_track_i.h:143
agora::rtc::IRemoteVideoTrackEx::AttachInfo::smooth_render
webrtc::ISmoothRender * smooth_render
Definition: video_track_i.h:465
agora::rtc::VideoAvailabilityIndicator::level
VideoAvailabilityLevel level
Definition: video_track_i.h:193
agora::rtc::ILocalVideoTrackEx::Height
virtual int32_t Height() const =0
agora::rtc::ILocalVideoTrackEx::getInternalVideoSourceType
virtual InternalVideoSourceType getInternalVideoSourceType()
Definition: video_track_i.h:410
agora::rtc::IRemoteVideoTrackEx::TRACK_DESTROY
@ TRACK_DESTROY
Definition: video_track_i.h:456
agora::rtc::ILocalVideoTrackEx::updateContentHint
virtual int updateContentHint(VIDEO_CONTENT_HINT contentHint)
Definition: video_track_i.h:414
agora::rtc::ILocalVideoTrackEx::getUserId
virtual uid_t getUserId()
Definition: video_track_i.h:380
agora::rtc::ILocalVideoTrackEx::Enabled
virtual bool Enabled() const =0
agora::rtc::ILocalVideoTrackEx::AttachInfo::cc_type
CongestionControlType cc_type
Definition: video_track_i.h:298
agora::rtc::ILocalVideoTrackEx::AttachInfo::av_enc_intra_key_interval
Optional< uint32_t > av_enc_intra_key_interval
Definition: video_track_i.h:334
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_capture_delay
int hw_capture_delay
Definition: video_track_i.h:351
agora::rtc::VideoModulePostprocess
@ VideoModulePostprocess
Definition: video_track_i.h:149
agora::ERR_NOT_SUPPORTED
@ ERR_NOT_SUPPORTED
Definition: AgoraBase.h:474
agora::rtc::ILocalVideoTrackEx::~ILocalVideoTrackEx
virtual ~ILocalVideoTrackEx()
Definition: video_track_i.h:364
agora::rtc::IRemoteVideoTrack
Definition: NGIAgoraVideoTrack.h:455
agora::rtc::ILocalVideoTrackEx::AttachInfo::switch_to_rq
std::string switch_to_rq
Definition: video_track_i.h:323
agora::rtc::InternalVideoSourceType::TranscodedSource
@ TranscodedSource
agora::rtc::IRemoteVideoTrackEx::DetachReason
DetachReason
Definition: video_track_i.h:456
agora::rtc::VideoAvailabilityIndicator::module
VideoModuleId module
Definition: video_track_i.h:194
agora::rtc::IRemoteVideoTrackEx::detach
virtual bool detach(const DetachInfo &info, REMOTE_VIDEO_STATE_REASON reason)=0
agora::rtc::IVideoTrackObserver::onLocalAddVideoFilter
virtual void onLocalAddVideoFilter(int track_id, std::string filter_name, bool enabled)
Definition: video_track_i.h:238
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::MinHoldtimeAutoResizeZoomout
int MinHoldtimeAutoResizeZoomout
Definition: video_track_i.h:269
agora::rtc::kVideoProcessEventPreprocessCongested
@ kVideoProcessEventPreprocessCongested
Definition: video_track_i.h:173
agora::rtc::ILocalVideoTrackEx::AttachInfo::support_higher_standard_bitrate
bool support_higher_standard_bitrate
Definition: video_track_i.h:355
agora::rtc::CongestionControlType
CongestionControlType
Definition: rtc_connection_i.h:78
agora::rtc::ILocalVideoTrackEx::clearVideoWatermarks
virtual int clearVideoWatermarks()
Definition: video_track_i.h:404
agora::rtc::WatermarkOptions
Definition: AgoraBase.h:1987
agora::rtc::kVideoHwH265EncoderAvailable
@ kVideoHwH265EncoderAvailable
Definition: video_track_i.h:178
agora::rtc::RemoteVideoTrackStats
Definition: NGIAgoraVideoTrack.h:359
agora::rtc::kVideoUplinkEventStaticFrames
@ kVideoUplinkEventStaticFrames
Definition: video_track_i.h:162
agora::rtc::ILocalVideoTrackEx::AttachInfo::fec_method
int fec_method
Definition: video_track_i.h:320
agora::rtc::ILocalVideoTrackEx::AttachInfo
Definition: video_track_i.h:292
agora::rtc::ILocalVideoTrackEx::hasPublished
virtual bool hasPublished()=0
agora::rtc::IRemoteVideoTrackEx::AttachInfo::recv_media_packet
bool recv_media_packet
Definition: video_track_i.h:463
agora::rtc::IVideoTrackObserver::OnSetRexferParams
virtual void OnSetRexferParams(bool fec_rexfer, float rexfer_alpha)
Definition: video_track_i.h:230
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::highBitrateCoeffForAutoResize
int highBitrateCoeffForAutoResize
Definition: video_track_i.h:276
agora::rtc::IRemoteVideoTrackEx::getRemoteSsrc
virtual uint32_t getRemoteSsrc()=0
agora::rtc::ILocalVideoTrackEx::AttachInfo::max_packet_size
int max_packet_size
Definition: video_track_i.h:340
agora::rtc::ILocalVideoTrackEx::getStatisticsEx
virtual bool getStatisticsEx(LocalVideoTrackStatsEx &statsEx)
Definition: video_track_i.h:398
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::screenShareDetail
bool screenShareDetail
Definition: video_track_i.h:263
agora::rtc::InternalVideoSourceType::Custom
@ Custom
agora::rtc::ILocalVideoTrackEx::AttachInfo::harq_version
int harq_version
Definition: video_track_i.h:313
agora::rtc::VideoAvailabilityLevel3
@ VideoAvailabilityLevel3
Definition: video_track_i.h:157
agora::rtc::LocalVideoTrackStatsEx::local_video_stats
LocalVideoTrackStats local_video_stats
Definition: video_track_i.h:245
agora::rtc::InternalVideoSourceType::CustomPacketSource
@ CustomPacketSource
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::vqcVpxQpadjust
std::string vqcVpxQpadjust
Definition: video_track_i.h:284
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1121
agora::rtc::VideoAvailabilityIndicator::code
int code
Definition: video_track_i.h:195
agora::rtc::IRemoteVideoTrackEx::AttachInfo::video_threshhold_ms
uint32_t video_threshhold_ms
Definition: video_track_i.h:468
agora::rtc::ILocalVideoTrackEx::GetActiveStreamsCount
virtual int GetActiveStreamsCount()=0
agora::utils::WeakObservers::remove
bool remove(Observer *obs)
Definition: video_track_i.h:65
agora::rtc::ILocalVideoTrackEx::DetachReason
DetachReason
Definition: video_track_i.h:251
agora::rtc::IRemoteVideoTrackEx::DetachInfo::source
VideoNodeRtpSource * source
Definition: video_track_i.h:472
agora::rtc::IRemoteVideoTrackEx::AttachInfo::stats_space
uint64_t stats_space
Definition: video_track_i.h:464
agora::rtc::IVideoTrackObserver::OnNotifyDepartedFrame
virtual void OnNotifyDepartedFrame(uid_t uid, int picture_id)
Definition: video_track_i.h:233
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::highLoadEstimateThres
int highLoadEstimateThres
Definition: video_track_i.h:287
agora::rtc::RemoteVideoTrackStatsEx::isHardwareCodec
bool isHardwareCodec
Definition: video_track_i.h:440
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection
Definition: video_track_i.h:261
agora::rtc::VIDEO_CONTENT_HINT
VIDEO_CONTENT_HINT
Definition: AgoraBase.h:2612
agora::rtc::IVideoTrackObserver::onCameraFacingChanged
virtual void onCameraFacingChanged(int facing)
Definition: video_track_i.h:228
agora::rtc::ILocalVideoTrackEx::AttachInfo::sync_peer_uid
uint32_t sync_peer_uid
Definition: video_track_i.h:352
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:29
agora::rtc::ILocalVideoTrackEx::RsfecConfig::pec_enabled
bool pec_enabled
Definition: video_track_i.h:258
agora::utils::WeakObservers
Definition: video_track_i.h:44
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::screenShareDetailMinQP
int screenShareDetailMinQP
Definition: video_track_i.h:266
agora::rtc::VIDEO_DUMP_DECODED_YUV
@ VIDEO_DUMP_DECODED_YUV
Definition: video_track_i.h:188
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_video_send_diagnose
bool enable_video_send_diagnose
Definition: video_track_i.h:339
agora::rtc::RemoteVideoTrackStatsEx::last_frame_max
uint32_t last_frame_max
Definition: video_track_i.h:442
agora::rtc::IRemoteVideoTrackEx::~IRemoteVideoTrackEx
virtual ~IRemoteVideoTrackEx()
Definition: video_track_i.h:479
agora::rtc::IVideoTrackObserver
Definition: video_track_i.h:200
agora::rtc::VideoPipelineEvent
VideoPipelineEvent
Definition: video_track_i.h:161
agora::utils::WeakObservers::WeakObservers
WeakObservers()=default
agora::rtc::ILocalVideoTrackEx::GetConfigExs
virtual int GetConfigExs(std::vector< VideoConfigurationEx > &configs)=0
agora::rtc::RemoteVideoTrackStatsEx::firstVideoFrameRendered
uint64_t firstVideoFrameRendered
Definition: video_track_i.h:439
agora::rtc::IVideoTrackObserver::onCameraInfoListChanged
virtual void onCameraInfoListChanged(CameraInfoList cameraInfoList)
Definition: video_track_i.h:234
agora::rtc::VIDEO_DUMP_DEFAULT
@ VIDEO_DUMP_DEFAULT
Definition: video_track_i.h:183
agora::rtc::RemoteVideoTrackStatsEx::loss_af_fec
uint32_t loss_af_fec
Definition: video_track_i.h:447
agora::rtc::ILocalVideoTrackEx::OPSParametersCollection::MinFramerate
int MinFramerate
Definition: video_track_i.h:267
agora::rtc::InternalVideoSourceType::Camera
@ Camera
agora::rtc::ILocalVideoTrackEx::AttachInfo::network
VideoNodeRtpSink * network
Definition: video_track_i.h:295
agora::rtc::RemoteVideoTrackStatsEx::video_availability
std::vector< VideoAvailabilityIndicator > video_availability
Definition: video_track_i.h:451
agora::rtc::ILocalVideoTrackEx::AttachInfo::dm_wsize
int dm_wsize
Definition: video_track_i.h:321
agora::rtc::ILocalVideoTrackEx::ILocalVideoTrackEx
ILocalVideoTrackEx()
Definition: video_track_i.h:363
agora::rtc::IRemoteVideoTrackEx::getStatisticsEx
virtual bool getStatisticsEx(RemoteVideoTrackStatsEx &statsex)
Definition: video_track_i.h:486
agora::rtc::VIDEO_DUMP_ENCODED_STREAM
@ VIDEO_DUMP_ENCODED_STREAM
Definition: video_track_i.h:186
agora::rtc::ILocalVideoTrackEx::AttachInfo::minimum_fec_level
int32_t minimum_fec_level
Definition: video_track_i.h:326
agora::rtc::IVideoTrackObserver::onSendSideDelay
virtual void onSendSideDelay(int id, int send_delay)
Definition: video_track_i.h:224
agora::rtc::RemoteVideoTrackStatsEx::qp_sum
uint64_t qp_sum
Definition: video_track_i.h:450
agora::rtc::ILocalVideoTrackEx::registerTrackObserver
virtual bool registerTrackObserver(std::shared_ptr< IVideoTrackObserver > observer)
Definition: video_track_i.h:391
rtc
Definition: video_node_i.h:25
agora::rtc::IVideoTrackObserver::onFirstVideoKeyFrameReceived
virtual void onFirstVideoKeyFrameReceived(uid_t uid, uint64_t timestamp, const webrtc::FirstVideoFrameStreamInfo &streamInfo)
Definition: video_track_i.h:217
agora::rtc::VideoModulePreprocess
@ VideoModulePreprocess
Definition: video_track_i.h:145
agora::Optional< bool >
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_check_for_disable_fec
bool enable_check_for_disable_fec
Definition: video_track_i.h:329
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_encoder_force_alignment
Optional< bool > hw_encoder_force_alignment
Definition: video_track_i.h:344
agora::rtc::ILocalVideoTrackEx::AttachInfo::enable_minor_stream_intra_request
bool enable_minor_stream_intra_request
Definition: video_track_i.h:318
agora::rtc::ILocalVideoTrackEx::RsfecConfig
Definition: video_track_i.h:254
agora::rtc::InternalVideoSourceType::CustomYuvSource
@ CustomYuvSource
agora::rtc::VideoModuleNetwork
@ VideoModuleNetwork
Definition: video_track_i.h:147
agora::rtc::LocalVideoTrackStats
Definition: NGIAgoraVideoTrack.h:154
agora::rtc::ILocalVideoTrackEx::updateScreenCaptureScenario
virtual int updateScreenCaptureScenario(SCREEN_SCENARIO_TYPE screenScenario)
Definition: video_track_i.h:416
agora::rtc::ILocalVideoTrackEx::detach
virtual bool detach(const DetachInfo &info)=0
agora::rtc::VideoModuleCapture
@ VideoModuleCapture
Definition: video_track_i.h:144
agora::rtc::IRemoteVideoTrackEx::DetachInfo::reason
DetachReason reason
Definition: video_track_i.h:474
agora::rtc::ILocalVideoTrackEx::AttachInfo::hw_encoder_width_alignment
Optional< uint32_t > hw_encoder_width_alignment
Definition: video_track_i.h:342
agora::rtc::VideoAvailabilityIndicator
Definition: video_track_i.h:192
agora::rtc::WeakPipelineBuilder
std::weak_ptr< webrtc::Call > WeakPipelineBuilder
Definition: common_defines.h:19