12 #include "AgoraRefPtr.h"
14 #include "NGIAgoraCameraCapturer.h"
15 #include "NGIAgoraVideoMixerSource.h"
16 #include "NGIAgoraScreenCapturer.h"
17 #include "NGIAgoraMediaNodeFactory.h"
24 struct VideoSinkWants;
26 template <
typename V
ideoFrameT>
33 static const char*
const BUILT_IN_ADAPTER =
"built-in-adapter";
34 static const char*
const BUILT_IN_MIRROR_FILTER =
"built-in-mirror";
35 static const char*
const BUILT_IN_WATERMARK_FILTER =
"built-in-watermarker";
36 static const char*
const BUILT_IN_ROTATOR =
"built-in-rotator";
37 static const char*
const BUILT_IN_PREVIEW_TEE =
"built-in-preview-tee";
38 static const char*
const BUILT_IN_MAJOR_TEE =
"built-in-major-tee";
39 static const char*
const BUILT_IN_MINOR_TEE =
"built-in-minor-tee";
40 static const char*
const BUILT_IN_MINOR_ADAPTER =
"built-in-minor-adapter";
48 virtual bool adaptVideoFrame(
const webrtc::VideoFrame& capturedFrame,
49 webrtc::VideoFrame& adaptedFrame) = 0;
51 virtual void onSinkWantsChanged(const ::rtc::VideoSinkWants& wants) = 0;
53 virtual void attachStatsSpace(uint64_t stats_space) {}
70 virtual void setOutputFormat(
const VideoFormat& format,
bool fixed =
false) = 0;
80 #if defined(__ANDROID__)
81 virtual void setUseTexture(
bool use_texture) = 0;
88 virtual int StartCapture() = 0;
89 virtual int StopCapture() = 0;
90 virtual void SetFrameRate(
int rate) = 0;
91 virtual void RegisterCaptureDataCallback(
93 virtual int CaptureMouseCursor(
bool capture) = 0;
95 virtual bool FocusOnSelectedSource() = 0;
97 virtual void SetCaptureSource(
bool allow_magnification_api,
bool allow_directx_capturer) = 0;
98 virtual void GetCaptureSource(
bool& allow_magnification_api,
bool& allow_directx_capturer) = 0;
99 virtual void ForcedUsingScreenCapture(
bool using_screen_capture) = 0;
106 virtual int onFrame(
const webrtc::VideoFrame& videoFrame) = 0;
108 virtual bool applyMirror() {
return false; }
110 virtual bool applyRotation() {
return false; }
112 virtual int setViewEx(uintptr_t handle) {
116 virtual void attachUserInfo(uid_t uid, uint64_t state_space) {
124 VIDEO_FRAME_TYPE frameType;
129 VIDEO_ORIENTATION rotation;
130 VIDEO_CODEC_TYPE codec;
131 VIDEO_STREAM_TYPE streamType;
144 virtual void DeRegisterEncodedImageCallback() = 0;
145 virtual int getWidth()
const =0;
146 virtual int getHeight()
const =0;
155 virtual int sendVideoFrame(
const webrtc::VideoFrame& videoFrame) = 0;
157 virtual void RegisterVideoFrameCallback(
159 virtual void DeRegisterVideoFrameCallback() = 0;
165 virtual void registerMixedFrameCallback(
168 virtual void onFrame(
const std::string& uid,
const webrtc::VideoFrame& frame) = 0;
169 virtual void startMixing() = 0;
170 virtual void stopMixing() = 0;
175 virtual int onFrame(
const webrtc::VideoFrame& videoFrame) = 0;
176 virtual void registerFrameCallback(