Agora Java API Reference for Android
NGIAgoraVideoTrack.h
1 
2 // Copyright (c) 2019 Agora.io. All rights reserved
3 
4 // This program is confidential and proprietary to Agora.io.
5 // And may not be copied, reproduced, modified, disclosed to others, published
6 // or used, in whole or in part, without the express prior written permission
7 // of Agora.io.
8 
9 #pragma once // NOLINT(build/header_guard)
10 
11 #include "AgoraBase.h"
12 #include "AgoraRefPtr.h"
13 #include "NGIAgoraMediaNodeFactory.h"
14 #include "IAgoraService.h"
15 
16 namespace agora {
17 namespace rtc {
18 class IVideoFilter;
19 
20 enum VideoTrackType {
21  LOCAL_VIDEO_TRACK,
22  REMOTE_VIDEO_TRACK,
23 };
24 
29  public:
47  virtual bool addVideoFilter(
48  agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
49  const char* id = NULL) = 0;
60  virtual bool removeVideoFilter(
61  agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
62  const char* id = NULL) = 0;
77  virtual bool addRenderer(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_FILTERS) = 0;
87  virtual bool removeRenderer(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_FILTERS) = 0;
93  virtual VideoTrackType getType() = 0;
94 
103  virtual int enableVideoFilter(const char* id, bool enable) { return -1; }
104 
114  virtual int setFilterProperty(const char* id, const char* key, const char* json_value) { return -1; }
115 
125  virtual int getFilterProperty(const char* id, const char* key, char* json_value, size_t buf_size) { return -1; }
126 
127  protected:
128  ~IVideoTrack() {}
129 };
130 
150  uint32_t frames_encoded;
182  int total_bitrate_bps; // Include FEC
186  int width;
190  int height = 0;
191  uint32_t encoder_type = 0;
195  uint32_t uplink_cost_time_ms = 0;
196 
200  frames_encoded(0),
203  input_frame_rate(0),
209  width(0),
210  height(0),
211  encoder_type(0),
212  uplink_cost_time_ms(0) {}
213 };
214 
227  public:
237  virtual void setEnabled(bool enable) = 0;
238 
256 
268  virtual int enableSimulcastStream(bool enabled, const SimulcastStreamConfig& config) = 0;
269 
275  virtual LOCAL_VIDEO_STREAM_STATE getState() = 0;
276 
285  virtual bool getStatistics(LocalVideoTrackStats& stats) = 0;
286 
287  virtual VideoTrackType getType() { return LOCAL_VIDEO_TRACK; }
288 
289  protected:
290  ~ILocalVideoTrack() {}
291 };
299  uid_t uid;
303  int delay;
307  int width;
311  int height;
331  VIDEO_STREAM_TYPE rxStreamType;
360 
361  RemoteVideoTrackStats() : uid(0), delay(0), width(0), height(0),
363  frameLossRate(0), packetLossRate(0), rxStreamType(VIDEO_STREAM_HIGH),
366 };
367 
372  public:
373 
381  virtual bool getStatistics(RemoteVideoTrackStats& stats) = 0;
386  virtual REMOTE_VIDEO_STATE getState() = 0;
394  virtual bool getTrackInfo(VideoTrackInfo& info) = 0;
416 
429  virtual int registerMediaPacketReceiver(IMediaPacketReceiver* videoReceiver) = 0;
437  virtual int unregisterMediaPacketReceiver(IMediaPacketReceiver* videoReceiver) = 0;
438 
439  virtual VideoTrackType getType() { return REMOTE_VIDEO_TRACK; }
440 
441  protected:
442  ~IRemoteVideoTrack() {}
443 };
444 
445 } // namespace rtc
446 } // namespace agora
agora::rtc::LocalVideoTrackStats::frames_encoded
uint32_t frames_encoded
Definition: NGIAgoraVideoTrack.h:150
agora::rtc::RemoteVideoTrackStats::avSyncTimeMs
int avSyncTimeMs
Definition: NGIAgoraVideoTrack.h:350
agora::rtc::RemoteVideoTrackStats::totalFrozenTime
int totalFrozenTime
Definition: NGIAgoraVideoTrack.h:337
agora::rtc::IRemoteVideoTrack::getTrackInfo
virtual bool getTrackInfo(VideoTrackInfo &info)=0
agora::rtc::ILocalVideoTrack::getState
virtual LOCAL_VIDEO_STREAM_STATE getState()=0
agora::rtc::RemoteVideoTrackStats::frameLossRate
int frameLossRate
Definition: NGIAgoraVideoTrack.h:324
agora::rtc::RemoteVideoTrackStats::packetLossRate
int packetLossRate
Definition: NGIAgoraVideoTrack.h:327
agora::rtc::ILocalVideoTrack::getType
virtual VideoTrackType getType()
Definition: NGIAgoraVideoTrack.h:287
agora::rtc::RemoteVideoTrackStats::totalDecodedFrames
uint32_t totalDecodedFrames
Definition: NGIAgoraVideoTrack.h:345
agora::rtc::ILocalVideoTrack::setEnabled
virtual void setEnabled(bool enable)=0
agora::rtc::IVideoTrack
Definition: NGIAgoraVideoTrack.h:28
agora::agora_refptr
Definition: AgoraRefPtr.h:34
agora::rtc::LocalVideoTrackStats::bytes_minor_stream
uint64_t bytes_minor_stream
Definition: NGIAgoraVideoTrack.h:146
agora::rtc::LocalVideoTrackStats::width
int width
Definition: NGIAgoraVideoTrack.h:186
agora::rtc::LocalVideoTrackStats::media_bitrate_bps
int media_bitrate_bps
Definition: NGIAgoraVideoTrack.h:178
agora::rtc::IVideoTrack::addVideoFilter
virtual bool addVideoFilter(agora_refptr< IVideoFilter > filter, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_CAPTURER, const char *id=NULL)=0
agora::rtc::IVideoTrack::removeVideoFilter
virtual bool removeVideoFilter(agora_refptr< IVideoFilter > filter, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_CAPTURER, const char *id=NULL)=0
agora::rtc::RemoteVideoTrackStats::uid
uid_t uid
Definition: NGIAgoraVideoTrack.h:299
agora::rtc::IVideoTrack::getType
virtual VideoTrackType getType()=0
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1703
agora::rtc::LocalVideoTrackStats::number_of_streams
uint64_t number_of_streams
Definition: NGIAgoraVideoTrack.h:138
agora::rtc::IRemoteVideoTrack::getStatistics
virtual bool getStatistics(RemoteVideoTrackStats &stats)=0
agora::rtc::RemoteVideoTrackStats::rxStreamType
VIDEO_STREAM_TYPE rxStreamType
Definition: NGIAgoraVideoTrack.h:331
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:1855
agora::rtc::IRemoteVideoTrack::unregisterMediaPacketReceiver
virtual int unregisterMediaPacketReceiver(IMediaPacketReceiver *videoReceiver)=0
agora::rtc::RemoteVideoTrackStats::frame_render_delay_ms
uint32_t frame_render_delay_ms
Definition: NGIAgoraVideoTrack.h:359
agora::rtc::IRemoteVideoTrack::unregisterVideoEncodedImageReceiver
virtual int unregisterVideoEncodedImageReceiver(IVideoEncodedImageReceiver *videoReceiver)=0
agora::rtc::IVideoTrack::removeRenderer
virtual bool removeRenderer(agora_refptr< IVideoSinkBase > videoRenderer, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_FILTERS)=0
agora::rtc::RemoteVideoTrackStats::height
int height
Definition: NGIAgoraVideoTrack.h:311
agora::rtc::LocalVideoTrackStats::total_bitrate_bps
int total_bitrate_bps
Definition: NGIAgoraVideoTrack.h:182
agora::rtc::LocalVideoTrackStats::ssrc_major_stream
uint32_t ssrc_major_stream
Definition: NGIAgoraVideoTrack.h:154
agora::rtc::IRemoteVideoTrack::registerMediaPacketReceiver
virtual int registerMediaPacketReceiver(IMediaPacketReceiver *videoReceiver)=0
agora::rtc::LocalVideoTrackStats::input_frame_rate
int input_frame_rate
Definition: NGIAgoraVideoTrack.h:162
agora::rtc::ILocalVideoTrack
Definition: NGIAgoraVideoTrack.h:226
agora::rtc::ILocalVideoTrack::getStatistics
virtual bool getStatistics(LocalVideoTrackStats &stats)=0
agora::rtc::RemoteVideoTrackStats::rendererOutputFrameRate
int rendererOutputFrameRate
Definition: NGIAgoraVideoTrack.h:321
agora::rtc::IRemoteVideoTrack::getType
virtual VideoTrackType getType()
Definition: NGIAgoraVideoTrack.h:439
agora::rtc::RemoteVideoTrackStats::delay
int delay
Definition: NGIAgoraVideoTrack.h:303
agora::rtc::ILocalVideoTrack::setVideoEncoderConfiguration
virtual int setVideoEncoderConfiguration(const VideoEncoderConfiguration &config)=0
agora::rtc::IMediaPacketReceiver
Definition: NGIAgoraMediaNode.h:298
agora::rtc::IVideoTrack::addRenderer
virtual bool addRenderer(agora_refptr< IVideoSinkBase > videoRenderer, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_FILTERS)=0
agora::rtc::LocalVideoTrackStats::ssrc_minor_stream
uint32_t ssrc_minor_stream
Definition: NGIAgoraVideoTrack.h:158
agora::rtc::IVideoTrack::setFilterProperty
virtual int setFilterProperty(const char *id, const char *key, const char *json_value)
Definition: NGIAgoraVideoTrack.h:114
agora::rtc::ILocalVideoTrack::enableSimulcastStream
virtual int enableSimulcastStream(bool enabled, const SimulcastStreamConfig &config)=0
agora::rtc::IVideoTrack::enableVideoFilter
virtual int enableVideoFilter(const char *id, bool enable)
Definition: NGIAgoraVideoTrack.h:103
agora::rtc::RemoteVideoTrackStats::frozenRate
int frozenRate
Definition: NGIAgoraVideoTrack.h:341
agora::rtc::IVideoEncodedImageReceiver
Definition: AgoraBase.h:2800
agora::rtc::IRemoteVideoTrack
Definition: NGIAgoraVideoTrack.h:371
agora::rtc::LocalVideoTrackStats::render_frame_rate
int render_frame_rate
Definition: NGIAgoraVideoTrack.h:170
agora::rtc::IRemoteVideoTrack::registerVideoEncodedImageReceiver
virtual int registerVideoEncodedImageReceiver(IVideoEncodedImageReceiver *videoReceiver)=0
agora::rtc::RemoteVideoTrackStats
Definition: NGIAgoraVideoTrack.h:295
agora::rtc::RemoteVideoTrackStats::downlink_process_time_ms
uint32_t downlink_process_time_ms
Definition: NGIAgoraVideoTrack.h:355
agora::RefCountInterface
Definition: AgoraRefPtr.h:21
agora::rtc::IRemoteVideoTrack::getState
virtual REMOTE_VIDEO_STATE getState()=0
agora::rtc::RemoteVideoTrackStats::receivedBitrate
int receivedBitrate
Definition: NGIAgoraVideoTrack.h:315
agora::rtc::RemoteVideoTrackStats::decoderOutputFrameRate
int decoderOutputFrameRate
Definition: NGIAgoraVideoTrack.h:318
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:2637
agora::rtc::RemoteVideoTrackStats::width
int width
Definition: NGIAgoraVideoTrack.h:307
agora::rtc::LocalVideoTrackStats::target_media_bitrate_bps
int target_media_bitrate_bps
Definition: NGIAgoraVideoTrack.h:174
agora::rtc::LocalVideoTrackStats::encode_frame_rate
int encode_frame_rate
Definition: NGIAgoraVideoTrack.h:166
agora::rtc::LocalVideoTrackStats::bytes_major_stream
uint64_t bytes_major_stream
Definition: NGIAgoraVideoTrack.h:142
agora::rtc::LocalVideoTrackStats::uplink_cost_time_ms
uint32_t uplink_cost_time_ms
Definition: NGIAgoraVideoTrack.h:195
agora::rtc::IVideoTrack::getFilterProperty
virtual int getFilterProperty(const char *id, const char *key, char *json_value, size_t buf_size)
Definition: NGIAgoraVideoTrack.h:125
agora::rtc::LocalVideoTrackStats::height
int height
Definition: NGIAgoraVideoTrack.h:190
agora::rtc::LocalVideoTrackStats
Definition: NGIAgoraVideoTrack.h:134