Agora C++ API Reference for All Platforms
NGIAgoraMediaNode.h
1 #pragma once
2 #include "AgoraRefPtr.h"
3 #include "AgoraBase.h"
4 #include "IAgoraLog.h"
5 #include "NGIAgoraVideoFrame.h"
6 
7 #ifndef OPTIONAL_PROCESSRESULT_SPECIFIER
8 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
9 #define OPTIONAL_PROCESSRESULT_SPECIFIER ProcessResult::
10 #else
11 #define OPTIONAL_PROCESSRESULT_SPECIFIER
12 #endif
13 #endif
14 
15 namespace agora {
16 namespace rtc {
22  public:
23  // Return false if filter decide to drop the frame.
24  // Implementation should not change samples_per_channel_/sample_rate_hz_/num_channels_
25  // Implementation should just adapt data of audio frame.
34  virtual bool adaptAudioFrame(const media::base::AudioPcmFrame& inAudioFrame,
35  media::base::AudioPcmFrame& adaptedFrame) = 0;
36 
44  virtual int getPreferredSampleRate() = 0;
45 
46  protected:
48 };
49 
57  public:
64  virtual void setEnabled(bool enable) = 0;
71  virtual bool isEnabled() const = 0;
82  virtual int setProperty(const char* key, const void* buf, int buf_size) = 0;
93  virtual int getProperty(const char* key, void* buf, int buf_size) const = 0;
101  virtual const char * getName() const = 0;
102 
111  int getPreferredSampleRate() override { return 0; };
112 
113  protected:
115 };
116 
122  public:
133  virtual bool adaptVideoFrame(const media::base::VideoFrame& capturedFrame,
134  media::base::VideoFrame& adaptedFrame) = 0;
135 };
136 
137 // TODO(Bob): private inherit?
146  public:
154  virtual void setEnabled(bool enable) {}
161  virtual bool isEnabled() { return true; }
172  virtual int setProperty(const char* key, const void* buf, size_t buf_size) { return -1; }
183  virtual int getProperty(const char* key, void* buf, size_t buf_size) { return -1; }
191  virtual bool onDataStreamWillStart() { return true; }
196  virtual void onDataStreamWillStop() { }
204  virtual bool isExternal() { return true; }
212  virtual bool isExtensionFilter() { return false; }
213 };
214 
222  public:
223  enum ProcessMode {
224  kSync, // Indicates that video frame data will be exchanged via "adaptVideoFrame"
225  kAsync, // Indicates that video frame data will be exchanged via "pendVideoFrame" & "deliverVideoFrame"
226  };
227 
229  kSuccess, // Video frame data is successfully processed
230  kBypass, // Video frame data should bypass the current filter and flow to its successsors
231  kDrop, // Video Frame data should be discarded
232  };
233 
241  class Control : public RefCountInterface {
242  public:
260  virtual int postEvent(const char* key, const char* value) = 0;
267  virtual void printLog(commons::LOG_LEVEL level, const char* format, ...) = 0;
273  virtual void disableMe(int error, const char* msg) = 0;
274  };
275 
286  virtual void getProcessMode(ProcessMode& mode, bool& independent_thread) = 0;
294  virtual int start(agora::agora_refptr<Control> control) = 0;
300  virtual int stop() = 0;
317  return OPTIONAL_PROCESSRESULT_SPECIFIER kBypass;
318  }
325  return OPTIONAL_PROCESSRESULT_SPECIFIER kBypass;
326  }
327 
328  // NOTE: The following two interfaces should never be overriden!
329  virtual bool isExtensionFilter() { return true; }
330  virtual bool adaptVideoFrame(
331  const media::base::VideoFrame& capturedFrame,
332  media::base::VideoFrame& adaptedFrame) {
333  return -ERR_NOT_SUPPORTED;
334  }
335 };
336 
341  public:
352  virtual int setProperty(const char* key, const void* buf, int buf_size) { return -1; }
363  virtual int getProperty(const char* key, void* buf, int buf_size) { return -1; }
368  virtual int onFrame(const media::base::VideoFrame& videoFrame) = 0;
373  virtual bool isExternalSink() { return true; }
381  virtual bool onDataStreamWillStart() { return true; }
386  virtual void onDataStreamWillStop() { }
387 };
388 
390 public:
392  virtual void onEvent(const char* provider_name, const char* ext_name, const char* key, const char* json_value) {}
393  virtual void onExtensionStopped(const char* provider_name, const char* ext_name) {}
394  virtual void onExtensionStarted(const char* provider_name, const char* ext_name) {}
395  virtual void onExtensionErrored(const char* provider_name, const char* ext_name, int error, const char* msg) {}
396 };
397 
404  public:
418  virtual int sendAudioPcmData(
419  const void* audio_data, uint32_t capture_timestamp,
420  const size_t samples_per_channel, // for 10ms Data, number_of_samples * 100 = sample_rate
421  const agora::rtc::BYTES_PER_SAMPLE bytes_per_sample, // 2
422  const size_t number_of_channels,
423  const uint32_t sample_rate) = 0; // sample_rate > 8000
424 
425  protected:
427 };
428 
437  public:
450  virtual bool sendEncodedAudioFrame(const uint8_t* payload_data, size_t payload_size,
451  const EncodedAudioFrameInfo& audioFrameInfo) = 0;
452 
453  protected:
455 };
456 
462  public:
471  virtual bool onMediaPacketReceived(
472  const uint8_t *packet, size_t length, const agora::media::base::PacketOptions& options) = 0;
473 
475 };
476 
484  public:
492  virtual bool onMediaControlPacketReceived(uid_t uid, const uint8_t *packet, size_t length) = 0;
493 
495 };
496 
505  public:
517  virtual int sendMediaPacket(const uint8_t *packet, size_t length,
518  const media::base::PacketOptions &options) = 0;
519  protected:
521 };
522 
531  public:
545  const uint8_t *packet,
546  size_t length) = 0;
547 
558  virtual int sendBroadcastMediaControlPacket(const uint8_t *packet, size_t length) = 0;
559 
561 };
562 
568  public:
576  virtual bool onAudioFrame(const media::base::AudioPcmFrame& audioFrame) = 0;
577 
578  protected:
580 };
581 
590  public:
600  virtual int sendVideoFrame(const media::base::ExternalVideoFrame& videoFrame) = 0;
601 
602  protected:
604 };
605 
614  public:
626  virtual bool sendEncodedVideoImage(const uint8_t* imageBuffer, size_t length,
627  const EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
628 
629  protected:
631 };
632 
637  public:
641  struct BeautyOptions {
658  };
659 
665 
670 
676 
682 
683  BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness,
684  float redness)
685  : lighteningContrastLevel(contrastLevel),
686  lighteningLevel(lightening),
687  smoothnessLevel(smoothness),
688  rednessLevel(redness) {}
689 
692  lighteningLevel(0),
693  smoothnessLevel(0),
694  rednessLevel(0) {}
695  };
706  virtual int setBeautyEffectOptions(bool enabled, BeautyOptions options) = 0;
707 };
708 
713  public:
721  virtual int setRenderMode(media::base::RENDER_MODE_TYPE renderMode) = 0;
731  virtual int setMirror(bool mirror) = 0;
739  virtual int setView(void* view) = 0;
746  virtual int unsetView() = 0;
747 };
748 
749 static const int kDeviceIdSize = 128;
750 
751 class IVideoTrack;
756  public:
757  virtual int getTranscodingDelayMs() = 0;
758  virtual int addVideoTrack(agora_refptr<IVideoTrack> track) = 0;
760 };
761 
762 }
763 }
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:428
agora::rtc::IExtensionVideoFilter::ProcessResult
ProcessResult
Definition: NGIAgoraMediaNode.h:228
agora::rtc::IMediaControlPacketSender::sendPeerMediaControlPacket
virtual int sendPeerMediaControlPacket(media::base::user_id_t userId, const uint8_t *packet, size_t length)=0
agora::rtc::IVideoSinkBase::onDataStreamWillStart
virtual bool onDataStreamWillStart()
Definition: NGIAgoraMediaNode.h:381
agora::rtc::IExtensionVideoFilter::kDrop
@ kDrop
Definition: NGIAgoraMediaNode.h:231
agora::rtc::IMediaControlPacketReceiver
Definition: NGIAgoraMediaNode.h:483
agora::rtc::IVideoFrameTransceiver::addVideoTrack
virtual int addVideoTrack(agora_refptr< IVideoTrack > track)=0
agora::rtc::IVideoFilter::onDataStreamWillStop
virtual void onDataStreamWillStop()
Definition: NGIAgoraMediaNode.h:196
agora::rtc::IMediaControlPacketSender::sendBroadcastMediaControlPacket
virtual int sendBroadcastMediaControlPacket(const uint8_t *packet, size_t length)=0
agora::rtc::IVideoFrameSender::sendVideoFrame
virtual int sendVideoFrame(const media::base::ExternalVideoFrame &videoFrame)=0
agora::rtc::IVideoBeautyFilter
Definition: NGIAgoraMediaNode.h:636
agora::rtc::IAudioFilterBase
Definition: NGIAgoraMediaNode.h:21
agora::rtc::IVideoFilterBase::adaptVideoFrame
virtual bool adaptVideoFrame(const media::base::VideoFrame &capturedFrame, media::base::VideoFrame &adaptedFrame)=0
agora::rtc::IVideoTrack
Definition: NGIAgoraVideoTrack.h:36
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::IVideoFrameTransceiver
Definition: NGIAgoraMediaNode.h:755
agora::rtc::IAudioFilterBase::adaptAudioFrame
virtual bool adaptAudioFrame(const media::base::AudioPcmFrame &inAudioFrame, media::base::AudioPcmFrame &adaptedFrame)=0
agora::rtc::IExtensionVideoFilter::isExtensionFilter
virtual bool isExtensionFilter()
Definition: NGIAgoraMediaNode.h:329
agora::rtc::IVideoRenderer::setView
virtual int setView(void *view)=0
agora::rtc::IVideoFilter::setProperty
virtual int setProperty(const char *key, const void *buf, size_t buf_size)
Definition: NGIAgoraMediaNode.h:172
agora::rtc::IVideoFilter::isExtensionFilter
virtual bool isExtensionFilter()
Definition: NGIAgoraMediaNode.h:212
agora::rtc::IVideoSinkBase
Definition: NGIAgoraMediaNode.h:340
agora::rtc::IVideoFrameTransceiver::getTranscodingDelayMs
virtual int getTranscodingDelayMs()=0
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1700
agora::media::base::user_id_t
const char * user_id_t
Definition: AgoraMediaBase.h:120
agora::rtc::IExtensionVideoFilter::kAsync
@ kAsync
Definition: NGIAgoraMediaNode.h:225
agora::rtc::IVideoFilter::onDataStreamWillStart
virtual bool onDataStreamWillStart()
Definition: NGIAgoraMediaNode.h:191
agora::rtc::EncodedAudioFrameInfo
Definition: AgoraBase.h:1602
agora::rtc::IMediaExtensionObserver::~IMediaExtensionObserver
virtual ~IMediaExtensionObserver()
Definition: NGIAgoraMediaNode.h:391
agora::rtc::IVideoRenderer::unsetView
virtual int unsetView()=0
agora::rtc::BYTES_PER_SAMPLE
BYTES_PER_SAMPLE
Definition: AgoraMediaBase.h:81
agora::rtc::IVideoEncodedImageSender::sendEncodedVideoImage
virtual bool sendEncodedVideoImage(const uint8_t *imageBuffer, size_t length, const EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
agora::rtc::IAudioPcmDataSender
Definition: NGIAgoraMediaNode.h:403
agora::rtc::IMediaExtensionObserver::onExtensionStarted
virtual void onExtensionStarted(const char *provider_name, const char *ext_name)
Definition: NGIAgoraMediaNode.h:394
agora::rtc::IVideoFrameTransceiver::removeVideoTrack
virtual int removeVideoTrack(agora_refptr< IVideoTrack > track)=0
agora::rtc::IAudioPcmDataSender::~IAudioPcmDataSender
~IAudioPcmDataSender()
Definition: NGIAgoraMediaNode.h:426
agora::rtc::IMediaControlPacketReceiver::~IMediaControlPacketReceiver
virtual ~IMediaControlPacketReceiver()
Definition: NGIAgoraMediaNode.h:494
agora::rtc::IExtensionVideoFilter::kBypass
@ kBypass
Definition: NGIAgoraMediaNode.h:230
agora::rtc::IAudioFilterBase::~IAudioFilterBase
~IAudioFilterBase()
Definition: NGIAgoraMediaNode.h:47
agora::rtc::IMediaControlPacketReceiver::onMediaControlPacketReceived
virtual bool onMediaControlPacketReceived(uid_t uid, const uint8_t *packet, size_t length)=0
agora::rtc::IVideoEncodedImageSender
Definition: NGIAgoraMediaNode.h:613
agora::rtc::IAudioEncodedFrameSender::~IAudioEncodedFrameSender
~IAudioEncodedFrameSender()
Definition: NGIAgoraMediaNode.h:454
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::IExtensionVideoFilter::adaptVideoFrame
virtual bool adaptVideoFrame(const media::base::VideoFrame &capturedFrame, media::base::VideoFrame &adaptedFrame)
Definition: NGIAgoraMediaNode.h:330
agora::rtc::IAudioFilter::setProperty
virtual int setProperty(const char *key, const void *buf, int buf_size)=0
agora::rtc::VideoFrameData::Type
OPTIONAL_ENUM_CLASS Type
Definition: NGIAgoraVideoFrame.h:149
agora::rtc::IMediaExtensionObserver::onExtensionStopped
virtual void onExtensionStopped(const char *provider_name, const char *ext_name)
Definition: NGIAgoraMediaNode.h:393
agora::rtc::IAudioFilter::isEnabled
virtual bool isEnabled() const =0
agora::rtc::IMediaPacketSender
Definition: NGIAgoraMediaNode.h:504
agora::rtc::IAudioFilter
Definition: NGIAgoraMediaNode.h:56
agora::rtc::IExtensionVideoFilter::stop
virtual int stop()=0
SDK will invoke this API when the data stream is about to stop. Filter can perform cleanup jobs in th...
agora::rtc::IVideoBeautyFilter::BeautyOptions::BeautyOptions
BeautyOptions()
Definition: NGIAgoraMediaNode.h:690
agora::media::base::ExternalVideoFrame
Definition: AgoraMediaBase.h:297
agora::rtc::IAudioFilterBase::getPreferredSampleRate
virtual int getPreferredSampleRate()=0
agora::rtc::IVideoSinkBase::setProperty
virtual int setProperty(const char *key, const void *buf, int buf_size)
Definition: NGIAgoraMediaNode.h:352
agora::rtc::IVideoFrameSender::~IVideoFrameSender
~IVideoFrameSender()
Definition: NGIAgoraMediaNode.h:603
agora::rtc::IMediaExtensionObserver::onEvent
virtual void onEvent(const char *provider_name, const char *ext_name, const char *key, const char *json_value)
Definition: NGIAgoraMediaNode.h:392
agora::rtc::IVideoSinkBase::onDataStreamWillStop
virtual void onDataStreamWillStop()
Definition: NGIAgoraMediaNode.h:386
agora::rtc::IAudioFilter::getPreferredSampleRate
int getPreferredSampleRate() override
Definition: NGIAgoraMediaNode.h:111
agora::commons::LOG_LEVEL
OPTIONAL_ENUM_CLASS LOG_LEVEL
Definition: IAgoraLog.h:35
agora::rtc::IExtensionVideoFilter::ProcessMode
ProcessMode
Definition: NGIAgoraMediaNode.h:223
agora::rtc::IExtensionVideoFilter::Control::disableMe
virtual void disableMe(int error, const char *msg)=0
Ask SDK to disable the current filter if a fatal error is detected.
agora::rtc::IVideoBeautyFilter::BeautyOptions::LIGHTENING_CONTRAST_HIGH
@ LIGHTENING_CONTRAST_HIGH
Definition: NGIAgoraMediaNode.h:657
agora::rtc::IExtensionVideoFilter::getProcessMode
virtual void getProcessMode(ProcessMode &mode, bool &independent_thread)=0
SDK will invoke this API first to get the filter's requested process mode ProcessMode and threading m...
agora::rtc::IMediaPacketReceiver::~IMediaPacketReceiver
virtual ~IMediaPacketReceiver()
Definition: NGIAgoraMediaNode.h:474
agora::rtc::IAudioEncodedFrameSender
Definition: NGIAgoraMediaNode.h:436
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:135
agora::rtc::IAudioEncodedFrameSender::sendEncodedAudioFrame
virtual bool sendEncodedAudioFrame(const uint8_t *payload_data, size_t payload_size, const EncodedAudioFrameInfo &audioFrameInfo)=0
agora::rtc::RawPixelBuffer::Format
OPTIONAL_ENUM_CLASS Format
Definition: NGIAgoraVideoFrame.h:51
agora::rtc::IVideoSinkBase::onFrame
virtual int onFrame(const media::base::VideoFrame &videoFrame)=0
agora::rtc::IVideoFilterBase
Definition: NGIAgoraMediaNode.h:121
agora::rtc::IExtensionVideoFilter::adaptVideoFrame
virtual ProcessResult adaptVideoFrame(agora::agora_refptr< IVideoFrame > in, agora::agora_refptr< IVideoFrame > &out)
SDK will invoke this API to send video frame to the filter if process mode is "Sync".
Definition: NGIAgoraMediaNode.h:324
agora::rtc::IMediaPacketReceiver
Definition: NGIAgoraMediaNode.h:461
agora::rtc::IVideoBeautyFilter::BeautyOptions::LIGHTENING_CONTRAST_LEVEL
LIGHTENING_CONTRAST_LEVEL
Definition: NGIAgoraMediaNode.h:645
agora::rtc::IAudioPcmDataSender::sendAudioPcmData
virtual int sendAudioPcmData(const void *audio_data, uint32_t capture_timestamp, const size_t samples_per_channel, const agora::rtc::BYTES_PER_SAMPLE bytes_per_sample, const size_t number_of_channels, const uint32_t sample_rate)=0
agora::rtc::IVideoRenderer
Definition: NGIAgoraMediaNode.h:712
agora::rtc::IVideoRenderer::setRenderMode
virtual int setRenderMode(media::base::RENDER_MODE_TYPE renderMode)=0
agora::rtc::IExtensionVideoFilter::getVideoFormatWanted
virtual void getVideoFormatWanted(VideoFrameData::Type &type, RawPixelBuffer::Format &format)=0
SDK will invoke this API every time before sending data to the filter. Filter can desigante the type ...
agora::rtc::IExtensionVideoFilter::kSync
@ kSync
Definition: NGIAgoraMediaNode.h:224
agora::rtc::IMediaControlPacketSender::~IMediaControlPacketSender
virtual ~IMediaControlPacketSender()
Definition: NGIAgoraMediaNode.h:560
agora::media::base::RENDER_MODE_TYPE
RENDER_MODE_TYPE
Definition: AgoraMediaBase.h:275
agora::rtc::IExtensionVideoFilter::Control
Definition: NGIAgoraMediaNode.h:241
agora::rtc::IExtensionVideoFilter::pendVideoFrame
virtual ProcessResult pendVideoFrame(agora::agora_refptr< IVideoFrame > frame)
SDK will invoke this API to send video frame to the filter if process mode is "Async"....
Definition: NGIAgoraMediaNode.h:316
agora::rtc::IVideoBeautyFilter::BeautyOptions::rednessLevel
float rednessLevel
Definition: NGIAgoraMediaNode.h:681
agora::rtc::IAudioSinkBase::~IAudioSinkBase
~IAudioSinkBase()
Definition: NGIAgoraMediaNode.h:579
agora::ERR_NOT_SUPPORTED
@ ERR_NOT_SUPPORTED
Definition: AgoraBase.h:496
agora::rtc::IVideoBeautyFilter::BeautyOptions::LIGHTENING_CONTRAST_LOW
@ LIGHTENING_CONTRAST_LOW
Definition: NGIAgoraMediaNode.h:649
agora::rtc::IExtensionVideoFilter::kSuccess
@ kSuccess
Definition: NGIAgoraMediaNode.h:229
agora::rtc::IAudioSinkBase
Definition: NGIAgoraMediaNode.h:567
agora::rtc::IAudioSinkBase::onAudioFrame
virtual bool onAudioFrame(const media::base::AudioPcmFrame &audioFrame)=0
agora::rtc::IVideoFrameSender
Definition: NGIAgoraMediaNode.h:589
agora::rtc::IExtensionVideoFilter
Definition: NGIAgoraMediaNode.h:221
agora::rtc::kDeviceIdSize
static const int kDeviceIdSize
Definition: NGIAgoraMediaNode.h:749
agora::rtc::IExtensionVideoFilter::Control::getMemoryPool
virtual agora::agora_refptr< IVideoFrameMemoryPool > getMemoryPool()=0
Filter can invoke this function to get the IVideoFrameMemoryPool object if a new IVideoFrame data obj...
agora::rtc::IMediaPacketSender::~IMediaPacketSender
~IMediaPacketSender()
Definition: NGIAgoraMediaNode.h:520
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::IVideoFilter::getProperty
virtual int getProperty(const char *key, void *buf, size_t buf_size)
Definition: NGIAgoraMediaNode.h:183
agora::rtc::IMediaPacketReceiver::onMediaPacketReceived
virtual bool onMediaPacketReceived(const uint8_t *packet, size_t length, const agora::media::base::PacketOptions &options)=0
agora::rtc::IVideoFilter::isEnabled
virtual bool isEnabled()
Definition: NGIAgoraMediaNode.h:161
agora::rtc::IVideoBeautyFilter::BeautyOptions::BeautyOptions
BeautyOptions(LIGHTENING_CONTRAST_LEVEL contrastLevel, float lightening, float smoothness, float redness)
Definition: NGIAgoraMediaNode.h:683
agora::rtc::IVideoFilter::setEnabled
virtual void setEnabled(bool enable)
Definition: NGIAgoraMediaNode.h:154
agora::rtc::IMediaPacketSender::sendMediaPacket
virtual int sendMediaPacket(const uint8_t *packet, size_t length, const media::base::PacketOptions &options)=0
agora::rtc::IMediaExtensionObserver::onExtensionErrored
virtual void onExtensionErrored(const char *provider_name, const char *ext_name, int error, const char *msg)
Definition: NGIAgoraMediaNode.h:395
agora::rtc::IVideoBeautyFilter::BeautyOptions::smoothnessLevel
float smoothnessLevel
Definition: NGIAgoraMediaNode.h:675
agora::rtc::IExtensionVideoFilter::Control::deliverVideoFrame
virtual ProcessResult deliverVideoFrame(agora::agora_refptr< IVideoFrame > frame)=0
Filter can invoke this function to deliver the processed frame to SDK if the Process Mode is designat...
agora::rtc::IAudioFilter::setEnabled
virtual void setEnabled(bool enable)=0
agora::rtc::IVideoBeautyFilter::setBeautyEffectOptions
virtual int setBeautyEffectOptions(bool enabled, BeautyOptions options)=0
agora::rtc::IVideoBeautyFilter::BeautyOptions::lighteningLevel
float lighteningLevel
Definition: NGIAgoraMediaNode.h:669
agora::rtc::IVideoFilter::isExternal
virtual bool isExternal()
Definition: NGIAgoraMediaNode.h:204
agora::rtc::IMediaControlPacketSender
Definition: NGIAgoraMediaNode.h:530
agora::rtc::IVideoBeautyFilter::BeautyOptions::lighteningContrastLevel
LIGHTENING_CONTRAST_LEVEL lighteningContrastLevel
Definition: NGIAgoraMediaNode.h:664
agora::rtc::IVideoBeautyFilter::BeautyOptions::LIGHTENING_CONTRAST_NORMAL
@ LIGHTENING_CONTRAST_NORMAL
Definition: NGIAgoraMediaNode.h:653
agora::rtc::IExtensionVideoFilter::Control::printLog
virtual void printLog(commons::LOG_LEVEL level, const char *format,...)=0
print log to the SDK.
agora::rtc::uid_t
unsigned int uid_t
Definition: AgoraMediaBase.h:25
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:150
agora::rtc::IAudioFilter::getProperty
virtual int getProperty(const char *key, void *buf, int buf_size) const =0
agora::rtc::IAudioFilter::~IAudioFilter
~IAudioFilter()
Definition: NGIAgoraMediaNode.h:114
agora::rtc::IVideoEncodedImageSender::~IVideoEncodedImageSender
~IVideoEncodedImageSender()
Definition: NGIAgoraMediaNode.h:630
agora::rtc::IVideoRenderer::setMirror
virtual int setMirror(bool mirror)=0
agora::rtc::IMediaExtensionObserver
Definition: NGIAgoraMediaNode.h:389
agora::rtc::IVideoFilter
Definition: NGIAgoraMediaNode.h:145
agora::rtc::IExtensionVideoFilter::start
virtual int start(agora::agora_refptr< Control > control)=0
SDK will invoke this API before feeding video frame data to the filter. Filter can perform its initia...
agora::rtc::IVideoSinkBase::isExternalSink
virtual bool isExternalSink()
Definition: NGIAgoraMediaNode.h:373
rtc
Definition: video_node_i.h:27
agora::rtc::IVideoBeautyFilter::BeautyOptions
Definition: NGIAgoraMediaNode.h:641
agora::rtc::IAudioFilter::getName
virtual const char * getName() const =0
agora::rtc::IVideoSinkBase::getProperty
virtual int getProperty(const char *key, void *buf, int buf_size)
Definition: NGIAgoraMediaNode.h:363
agora::rtc::IExtensionVideoFilter::Control::postEvent
virtual int postEvent(const char *key, const char *value)=0
Post an event and notify the end users.