13 #include "AgoraRefPtr.h"
15 #include "NGIAgoraCameraCapturer.h"
16 #include "NGIAgoraVideoMixerSource.h"
17 #include "NGIAgoraScreenCapturer.h"
18 #include "NGIAgoraMediaNodeFactory.h"
19 #include "NGIAgoraMediaNode.h"
20 #include "modules/desktop_capture/desktop_capturer.h"
27 struct VideoSinkWants;
29 template <
typename V
ideoFrameT>
36 enum InternalRendererType {
38 RENDERER_BUILT_IN_RENDERER = 0,
39 RENDERER_EXT_OBSERVER = 3,
45 media::base::RENDER_MODE_TYPE render_mode;
48 static const char*
const BUILT_IN_ADAPTER =
"built-in-adapter";
49 static const char*
const BUILT_IN_MIRROR_FILTER =
"built-in-mirror";
50 static const char*
const BUILT_IN_WATERMARK_FILTER =
"built-in-watermarker";
51 static const char*
const BUILT_IN_ROTATOR =
"built-in-rotator";
52 static const char*
const BUILT_IN_PREVIEW_TEE =
"built-in-preview-tee";
53 static const char*
const BUILT_IN_MAJOR_TEE =
"built-in-major-tee";
54 static const char*
const BUILT_IN_MINOR_TEE =
"built-in-minor-tee";
55 static const char*
const BUILT_IN_MINOR_ADAPTER =
"built-in-minor-adapter";
63 virtual bool adaptVideoFrame(
const webrtc::VideoFrame& capturedFrame,
64 webrtc::VideoFrame& adaptedFrame) = 0;
66 virtual void onSinkWantsChanged(const ::rtc::VideoSinkWants& wants) = 0;
68 virtual void attachStatsSpace(uint64_t stats_space) {}
85 virtual void setOutputFormat(
const VideoFormat& format,
bool fixed =
false) = 0;
91 enum CAMERA_OUTPUT_DATA_TYPE {
92 CAMERA_OUTPUT_RAW = 0,
93 CAMERA_OUTPUT_TEXTURE = 1,
94 CAMERA_OUTPUT_TEXTURE_AND_RAW = 2,
101 virtual void setCameraOutputDataType(CAMERA_OUTPUT_DATA_TYPE type) {
104 #if defined(__ANDROID__) || defined(TARGET_OS_IPHONE)
108 #if defined(__ANDROID__)
109 virtual CAMERA_OUTPUT_DATA_TYPE getCameraOutputDataType() = 0;
110 virtual void setCameraSelected(
int android_camera_module_selected) = 0;
111 virtual void setCameraPqFirst(
bool pq_first) = 0;
118 virtual int StartCapture() = 0;
119 virtual int StopCapture() = 0;
120 virtual void SetFrameRate(
int rate) = 0;
121 virtual void RegisterCaptureDataCallback(
123 virtual int CaptureMouseCursor(
bool capture) = 0;
125 virtual bool FocusOnSelectedSource() = 0;
127 virtual int InitUsingLastRegionSetting() = 0;
128 virtual int InitUsingLastScreenSetting(
const rtc::Rectangle& regionRect) = 0;
129 virtual void SetCaptureSource(
bool allow_magnification_api,
bool allow_directx_capturer) = 0;
130 virtual void GetCaptureSource(
bool& allow_magnification_api,
bool& allow_directx_capturer) = 0;
131 virtual void ForcedUsingScreenCapture(
bool using_screen_capture) = 0;
132 virtual void SetExcludeWindowList(
const std::vector<void *>& window_list) = 0;
133 virtual webrtc::DesktopCapturer::SourceId GetSourceId() = 0;
134 virtual int GetCaptureType() = 0;
141 virtual int onFrame(
const webrtc::VideoFrame& videoFrame) = 0;
143 virtual bool applyMirror() {
return false; }
145 virtual bool applyRotation() {
return false; }
147 virtual int setViewEx(uintptr_t handle) {
152 virtual void attachUserInfo(uid_t uid, uint64_t state_space) {
158 return -ERR_NOT_SUPPORTED;
164 VIDEO_FRAME_TYPE frameType;
169 VIDEO_ORIENTATION rotation;
170 VIDEO_CODEC_TYPE codec;
171 VIDEO_STREAM_TYPE streamType;
184 virtual void DeRegisterEncodedImageCallback() = 0;
185 virtual int getWidth()
const =0;
186 virtual int getHeight()
const =0;
195 virtual int sendVideoFrame(
const webrtc::VideoFrame& videoFrame) = 0;
197 virtual void RegisterVideoFrameCallback(
199 virtual void DeRegisterVideoFrameCallback() = 0;
205 virtual void registerMixedFrameCallback(
208 virtual void onFrame(
const std::string& uid,
const webrtc::VideoFrame& frame) = 0;
209 virtual void startMixing() = 0;
210 virtual void stopMixing() = 0;
215 virtual int onFrame(
const webrtc::VideoFrame& videoFrame) = 0;
216 virtual void registerFrameCallback(