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 
13 #ifndef OPTIONAL_OVERRIDE
14 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
15 #define OPTIONAL_OVERRIDE override
16 #else
17 #define OPTIONAL_OVERRIDE
18 #endif
19 #endif
20 
21 namespace agora {
22 namespace rtc {
23 class IVideoFilter;
24 class IVideoEncodedImageReceiver;
25 class IMediaPacketReceiver;
26 class IVideoSinkBase;
27 
28 enum VideoTrackType {
29  LOCAL_VIDEO_TRACK,
30  REMOTE_VIDEO_TRACK,
31 };
32 
37  public:
55  virtual bool addVideoFilter(
56  agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
57  const char* id = NULL) = 0;
58 
69  virtual bool removeVideoFilter(
70  agora_refptr<IVideoFilter> filter, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER,
71  const char* id = NULL) = 0;
72 
80  virtual bool hasVideoFilter(const char* id, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_CAPTURER) = 0;
81 
96  virtual bool addRenderer(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_FILTERS) = 0;
106  virtual bool removeRenderer(agora_refptr<IVideoSinkBase> videoRenderer, media::base::VIDEO_MODULE_POSITION position = media::base::POSITION_POST_FILTERS) = 0;
112  virtual VideoTrackType getType() = 0;
113 
122  virtual int enableVideoFilter(const char* id, bool enable) { return -1; }
123 
133  virtual int setFilterProperty(const char* id, const char* key, const char* json_value) { return -1; }
134 
144  virtual int getFilterProperty(const char* id, const char* key, char* json_value, size_t buf_size) { return -1; }
145 
146  protected:
147  ~IVideoTrack() {}
148 };
149 
169  uint32_t frames_encoded;
201  int total_bitrate_bps; // Include FEC
205  int width;
209  int height;
210  uint32_t encoder_type;
215 
220 
224  frames_encoded(0),
227  input_frame_rate(0),
233  width(0),
234  height(0),
235  encoder_type(0),
237  tx_packet_loss_rate(0) {}
238 };
239 
244  public:
245 
253  virtual bool isExternal() { return true; }
254 
262  virtual void onLocalVideoStateChanged(int track_id,
263  LOCAL_VIDEO_STREAM_STATE state,
264  LOCAL_VIDEO_STREAM_ERROR error_code,
265  int timestamp_ms) = 0;
266 
274  virtual void onFirstVideoFrameRendered(user_id_t user_id, int width, int height, int timestamp_ms) = 0;
275 
276  protected:
277  ~IVideoTrackObserver() {}
278 };
279 
292  public:
302  virtual void setEnabled(bool enable) = 0;
303 
321 
333  virtual int enableSimulcastStream(bool enabled, const SimulcastStreamConfig& config) = 0;
334 
344  virtual int updateSimulcastStreamConfig(const SimulcastStreamConfig& config) = 0;
345 
351  virtual LOCAL_VIDEO_STREAM_STATE getState() = 0;
352 
361  virtual bool getStatistics(LocalVideoTrackStats& stats) = 0;
362 
363  virtual bool registerTrackObserver(IVideoTrackObserver* observer, void (*safeDeleter)(IVideoTrackObserver*)) = 0;
364 
365  virtual bool unregisterTrackObserver(IVideoTrackObserver* observer) = 0;
366 
367  virtual VideoTrackType getType() OPTIONAL_OVERRIDE { return LOCAL_VIDEO_TRACK; }
368 
369  protected:
370  ~ILocalVideoTrack() {}
371 };
379  uid_t uid;
383  int delay;
387  int width;
391  int height;
411  VIDEO_STREAM_TYPE rxStreamType;
440 
441  RemoteVideoTrackStats() : uid(0), delay(0), width(0), height(0),
443  frameLossRate(0), packetLossRate(0), rxStreamType(VIDEO_STREAM_HIGH),
446 };
447 
452  public:
453 
461  virtual bool getStatistics(RemoteVideoTrackStats& stats) = 0;
466  virtual REMOTE_VIDEO_STATE getState() = 0;
474  virtual bool getTrackInfo(VideoTrackInfo& info) = 0;
496 
509  virtual int registerMediaPacketReceiver(IMediaPacketReceiver* videoReceiver) = 0;
517  virtual int unregisterMediaPacketReceiver(IMediaPacketReceiver* videoReceiver) = 0;
518 
519  virtual VideoTrackType getType() OPTIONAL_OVERRIDE { return REMOTE_VIDEO_TRACK; }
520 
521  protected:
522  ~IRemoteVideoTrack() {}
523 };
524 
525 } // namespace rtc
526 } // namespace agora
agora::rtc::LocalVideoTrackStats::frames_encoded
uint32_t frames_encoded
Definition: NGIAgoraVideoTrack.h:169
agora::rtc::RemoteVideoTrackStats::avSyncTimeMs
int avSyncTimeMs
Definition: NGIAgoraVideoTrack.h:430
agora::rtc::RemoteVideoTrackStats::totalFrozenTime
int totalFrozenTime
Definition: NGIAgoraVideoTrack.h:417
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:404
agora::rtc::RemoteVideoTrackStats::packetLossRate
int packetLossRate
Definition: NGIAgoraVideoTrack.h:407
agora::rtc::RemoteVideoTrackStats::totalDecodedFrames
uint32_t totalDecodedFrames
Definition: NGIAgoraVideoTrack.h:425
agora::rtc::ILocalVideoTrack::setEnabled
virtual void setEnabled(bool enable)=0
agora::rtc::IVideoTrack
Definition: NGIAgoraVideoTrack.h:36
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::LocalVideoTrackStats::bytes_minor_stream
uint64_t bytes_minor_stream
Definition: NGIAgoraVideoTrack.h:165
agora::rtc::LocalVideoTrackStats::width
int width
Definition: NGIAgoraVideoTrack.h:205
agora::rtc::LocalVideoTrackStats::media_bitrate_bps
int media_bitrate_bps
Definition: NGIAgoraVideoTrack.h:197
agora::rtc::ILocalVideoTrack::getType
virtual VideoTrackType getType() OPTIONAL_OVERRIDE
Definition: NGIAgoraVideoTrack.h:367
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:379
agora::rtc::IVideoTrack::getType
virtual VideoTrackType getType()=0
agora::rtc::ILocalVideoTrack::updateSimulcastStreamConfig
virtual int updateSimulcastStreamConfig(const SimulcastStreamConfig &config)=0
agora::rtc::VideoEncoderConfiguration
Definition: AgoraBase.h:1814
agora::rtc::LocalVideoTrackStats::number_of_streams
uint64_t number_of_streams
Definition: NGIAgoraVideoTrack.h:157
agora::rtc::IRemoteVideoTrack::getStatistics
virtual bool getStatistics(RemoteVideoTrackStats &stats)=0
agora::rtc::RemoteVideoTrackStats::rxStreamType
VIDEO_STREAM_TYPE rxStreamType
Definition: NGIAgoraVideoTrack.h:411
agora::rtc::SimulcastStreamConfig
Definition: AgoraBase.h:1979
agora::rtc::IVideoTrackObserver::onLocalVideoStateChanged
virtual void onLocalVideoStateChanged(int track_id, LOCAL_VIDEO_STREAM_STATE state, LOCAL_VIDEO_STREAM_ERROR error_code, int timestamp_ms)=0
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:439
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:391
agora::rtc::LocalVideoTrackStats::total_bitrate_bps
int total_bitrate_bps
Definition: NGIAgoraVideoTrack.h:201
agora::rtc::LocalVideoTrackStats::ssrc_major_stream
uint32_t ssrc_major_stream
Definition: NGIAgoraVideoTrack.h:173
agora::rtc::IRemoteVideoTrack::registerMediaPacketReceiver
virtual int registerMediaPacketReceiver(IMediaPacketReceiver *videoReceiver)=0
agora::rtc::LocalVideoTrackStats::input_frame_rate
int input_frame_rate
Definition: NGIAgoraVideoTrack.h:181
agora::rtc::ILocalVideoTrack
Definition: NGIAgoraVideoTrack.h:291
agora::rtc::ILocalVideoTrack::getStatistics
virtual bool getStatistics(LocalVideoTrackStats &stats)=0
agora::rtc::RemoteVideoTrackStats::rendererOutputFrameRate
int rendererOutputFrameRate
Definition: NGIAgoraVideoTrack.h:401
agora::rtc::RemoteVideoTrackStats::delay
int delay
Definition: NGIAgoraVideoTrack.h:383
agora::rtc::ILocalVideoTrack::setVideoEncoderConfiguration
virtual int setVideoEncoderConfiguration(const VideoEncoderConfiguration &config)=0
agora::rtc::IRemoteVideoTrack::getType
virtual VideoTrackType getType() OPTIONAL_OVERRIDE
Definition: NGIAgoraVideoTrack.h:519
agora::rtc::IMediaPacketReceiver
Definition: NGIAgoraMediaNode.h:461
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:177
agora::rtc::IVideoTrack::setFilterProperty
virtual int setFilterProperty(const char *id, const char *key, const char *json_value)
Definition: NGIAgoraVideoTrack.h:133
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:122
agora::rtc::RemoteVideoTrackStats::frozenRate
int frozenRate
Definition: NGIAgoraVideoTrack.h:421
agora::rtc::IVideoEncodedImageReceiver
Definition: AgoraBase.h:2954
agora::rtc::IRemoteVideoTrack
Definition: NGIAgoraVideoTrack.h:451
agora::rtc::LocalVideoTrackStats::render_frame_rate
int render_frame_rate
Definition: NGIAgoraVideoTrack.h:189
agora::rtc::IRemoteVideoTrack::registerVideoEncodedImageReceiver
virtual int registerVideoEncodedImageReceiver(IVideoEncodedImageReceiver *videoReceiver)=0
agora::rtc::RemoteVideoTrackStats
Definition: NGIAgoraVideoTrack.h:375
agora::rtc::RemoteVideoTrackStats::downlink_process_time_ms
uint32_t downlink_process_time_ms
Definition: NGIAgoraVideoTrack.h:435
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::IVideoTrack::hasVideoFilter
virtual bool hasVideoFilter(const char *id, media::base::VIDEO_MODULE_POSITION position=media::base::POSITION_POST_CAPTURER)=0
agora::rtc::IRemoteVideoTrack::getState
virtual REMOTE_VIDEO_STATE getState()=0
agora::rtc::RemoteVideoTrackStats::receivedBitrate
int receivedBitrate
Definition: NGIAgoraVideoTrack.h:395
agora::rtc::IVideoTrackObserver::onFirstVideoFrameRendered
virtual void onFirstVideoFrameRendered(user_id_t user_id, int width, int height, int timestamp_ms)=0
agora::rtc::RemoteVideoTrackStats::decoderOutputFrameRate
int decoderOutputFrameRate
Definition: NGIAgoraVideoTrack.h:398
agora::rtc::IVideoTrackObserver::isExternal
virtual bool isExternal()
Definition: NGIAgoraVideoTrack.h:253
agora::rtc::VideoTrackInfo
Definition: AgoraBase.h:2810
agora::rtc::RemoteVideoTrackStats::width
int width
Definition: NGIAgoraVideoTrack.h:387
agora::rtc::LocalVideoTrackStats::target_media_bitrate_bps
int target_media_bitrate_bps
Definition: NGIAgoraVideoTrack.h:193
agora::rtc::IVideoTrackObserver
Definition: NGIAgoraVideoTrack.h:243
agora::rtc::LocalVideoTrackStats::tx_packet_loss_rate
int tx_packet_loss_rate
Definition: NGIAgoraVideoTrack.h:219
agora::rtc::LocalVideoTrackStats::encode_frame_rate
int encode_frame_rate
Definition: NGIAgoraVideoTrack.h:185
agora::rtc::LocalVideoTrackStats::bytes_major_stream
uint64_t bytes_major_stream
Definition: NGIAgoraVideoTrack.h:161
agora::rtc::LocalVideoTrackStats::uplink_cost_time_ms
uint32_t uplink_cost_time_ms
Definition: NGIAgoraVideoTrack.h:214
agora::rtc::IVideoTrack::getFilterProperty
virtual int getFilterProperty(const char *id, const char *key, char *json_value, size_t buf_size)
Definition: NGIAgoraVideoTrack.h:144
agora::rtc::LocalVideoTrackStats::height
int height
Definition: NGIAgoraVideoTrack.h:209
agora::rtc::LocalVideoTrackStats
Definition: NGIAgoraVideoTrack.h:153