Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
video_node_i.h
1//
2// Agora Media SDK
3//
4// Created by Sting Feng in 2015-05.
5// Copyright (c) 2015 Agora IO. All rights reserved.
6//
7#pragma once
8
9#include <memory>
10#include <string>
11#include <vector>
12
13#include "AgoraMediaBase.h"
14#include "AgoraRefPtr.h"
15
16#include "NGIAgoraCameraCapturer.h"
17#include "NGIAgoraVideoMixerSource.h"
18#include "NGIAgoraMediaNodeFactory.h"
19#include "NGIAgoraMediaNode.h"
20#include "main/core/video/base/video_frame/video_frame.h"
21#include "main/core/video/stats_and_events/video_stats_events_pusher.h"
22#include "facilities/miscellaneous/view_manager.h"
23
24namespace webrtc {
25class VideoFrame;
26} // namespace webrtc
27
28namespace rtc {
29struct VideoSinkWants;
30
31template <typename VideoFrameT>
33} // namespace rtc
34
35namespace agora {
36namespace rtc {
37struct RenderFreezeStats;
38
44
46 agora::rtc::view_shared_ptr_t view;
47 bool mirror;
50};
51
53 webrtc::VideoFrame outputFrame;
55 FrameProcessResult(const webrtc::VideoFrame& frame, bool drop) : outputFrame(frame), dropFrame(drop) {}
56};
57
60 bool fixed = false;
61
63 VideoDataPipeFormat(const VideoFormat& f, bool fi) : format(f), fixed(fi) {}
64
65 bool operator==(const VideoDataPipeFormat& fmt) const {
66 return format == fmt.format && fixed == fmt.fixed;
67 }
68 bool operator!=(const VideoDataPipeFormat& fmt) const {
69 return !operator==(fmt);
70 }
71};
72
73static const char* const BUILT_IN_SOURCE_FILTER = "built-in-source-filter";
74static const char* const BUILT_IN_METADATA_OBSERVER = "built-in-metadata-observer";
75static const char* const BUILT_IN_ADAPTER = "built-in-adapter";
76static const char* const BUILT_IN_REMOTE_ADAPTER = "built-in-remote-adapter";
77static const char* const BUILT_IN_PRE_ENCODER_WATERMARK_FILTER = "built-in-pre-encoder-watermarker";
78static const char* const BUILT_IN_POST_CAPTURER_WATERMARK_FILTER = "built-in-post-capturer-watermarker";
79
80static const char* const BUILT_IN_PRE_ENCODER_FACEDETECE_FILTER = "built-in-pre-encoder-facedetect";
81
82static const char* const BUILT_IN_SOURCE_TEE = "built-in-source-tee";
83static const char* const BUILT_IN_PREVIEW_TEE = "built-in-preview-tee";
84static const char* const BUILT_IN_MAJOR_TEE = "built-in-major-tee";
85static const char* const BUILT_IN_SIMULCAST_TEE = "built-in-simulcast-tee";
86static const char* const BUILT_IN_MINOR_ADAPTER = "built-in-minor-adapter";
87static const char* const BUILT_IN_POST_CAPTURER_FILTER_OBSERVER = "built-in-post-capturer-filter-observer";
88static const char* const BUILT_IN_PRE_ENCODER_FILTER_OBSERVER = "built-in-pre-encoder-filter-observer";
89static const char* const BUILT_IN_POST_CAPTURER_FILTER_FRAME_OBSERVER = "CaptureFilterModeObserver";
90static const char* const BUILT_IN_PRE_ENCODER_FILTER_FRAME_OBSERVER = "PreEncoderFilterModeObserver";
91static const char* const BUILT_IN_STITCH_FRAME = "built-in-stitch-frame";
92static const char* const BUILT_IN_SCREEN_CAPTURE_FILTER = "built-in-screen-capture-filter";
93
97 public:
98 // Internal node can use webrtc video frame directly to reduce copy operation.
99 virtual void adaptVideoFrameAsync(const webrtc::VideoFrame& inputFrame,
100 std::shared_ptr<FrameProcessResult> resultSp) = 0;
101
102 // TODO(Bob): This should be moved to node base.
103 virtual void onSinkWantsChanged(const ::rtc::VideoSinkWants& wants) = 0;
104 bool isExternal() override { return false; }
105 virtual void attachStatsSpace(uint64_t stats_space) {}
106 virtual void setVideoQoEPusher(std::weak_ptr<VideoStatsEventsPusher> pusher) {}
107 virtual void onDropFrame(agora::rtc::VideoQoEDropType drop_type) {}
108 virtual void SetFilterId(std::string id) {}
109
110 protected:
112};
113
117 public:
118 // Requests the output frame size and frame interval from
119 // |AdaptFrameResolution| to not be larger than |format|. Also, the input
120 // frame size will be cropped to match the requested aspect ratio. When "fixed"
121 // is set false, the requested aspect ratio is orientation agnostic
122 // and will be adjusted to maintain the input orientation, so it doesn't matter
123 // if e.g. 1280x720 or 720x1280 is requested. Otherwise, the output format is
124 // fixed. The input frame may be cropped and rotated to meet the output format.
125 virtual void setOutputFormat(const VideoFormat& format, bool fixed = false) = 0;
126
127 virtual void setOutputFormat(const VideoDataPipeFormat& format, agora::Optional<VideoDataPipeFormat>& source_pipe_format_expected) {
128 setOutputFormat(format.format, format.fixed);
129 };
130
131 // Request the output frame in a fixed rotation.
132 virtual void setOutputRotation(webrtc::VideoRotation rotation) {}
133
134 // mirror the frame
135 virtual void setMirror(bool mirror) {}
136
137 protected:
139};
140
146
148 public:
150
151#if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined(__OHOS__)
152 virtual void setPreviewInfo(const PreviewMetaInfo& info) {}
155 virtual int32_t setCameraZoomLLApiInternal(float zoomValue) = 0;
156 virtual float getCameraMaxZoomLLApiInternal() = 0;
158 virtual int32_t setCameraFocusLLApiInternal(float x, float y) = 0;
160 virtual int32_t setCameraAutoFaceFocusLLApiInternal(bool enable) = 0;
161 virtual int32_t enableFaceDetectionLLApiInternal(bool enable) = 0;
164 virtual int32_t setCameraTorchOnLLApiInternal(bool isOn) = 0;
166 virtual int setCameraExposurePositionLLApiInternal(float positionXinView, float positionYinView) = 0;
168 virtual int setCameraExposureFactorLLApiInternal(float factor) = 0;
169 virtual int switchCameraLLApiInternal() = 0;
170#elif defined(_WIN32) || (defined(TARGET_OS_IPHONE) && !(TARGET_OS_IPHONE) && (TARGET_OS_MAC)) || \
171 (defined(__linux__) && !defined(__ANDROID__) && !defined (__OHOS__))
172 virtual int initWithDeviceIdLLApiInternal(const char* deviceId) = 0;
173 virtual int initWithDeviceNameLLApiInternal(const char* deviceName) = 0;
174#endif
175
177 virtual int setCaptureFormatLLApiInternal(const VideoFormat& capture_format) = 0;
181
182#if defined(__ANDROID__)
185 virtual void setCameraSelected(int module_selected) = 0;
186 virtual void setCameraSelectedLevel(int camera_selected_level) = 0;
187 virtual void setCameraPqFirst(bool pq_first) = 0;
188 virtual void setCameraSkipControl(int skip_control) = 0;
189 virtual void setVideoStabilityMode(int mode) = 0;
190 virtual void setCameraLowPower(bool lowPower) = 0;
191 virtual void setAutoFaceDetectFocus(bool enable) = 0;
192 virtual void setCameraTemplateType(int type) = 0;
193 virtual void setCameraTemplateVideoLowestScore(int lowestScore) = 0;
194 virtual void setCameraExtraSurface(bool extraSurface) = 0;
195 virtual void setCameraAutoWhiteBalance(bool enable) = 0;
196 virtual void setVideoEdgeMode(int mode) = 0;
197 virtual void setCamera1FocusMode(int mode) = 0;
198 virtual void setCamera2FocusMode(int mode) = 0;
199 virtual void setCamera1FpsRangeEnabled(bool enable) = 0;
200 virtual void setCameraRefocusEnabled(bool enable) = 0;
201 virtual int32_t setNoiseReductionMode(int mode) = 0;
202 virtual int setCameraSourceWithCameraId(CAMERA_SOURCE source,const char* camera_id) = 0;
203 virtual void switchCameraIdLLApiInternal(const char* cameraId) = 0;
204 virtual void setFocalLengthType(CAMERA_FOCAL_LENGTH_TYPE focalLengthType) = 0;
205 virtual void setCameraPqFirstCaptureMode(int captureMode) = 0;
206#endif
207
208#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
209 virtual bool enableMultiCameraLLApiInternal(bool enable) = 0;
212#endif
213
214#if defined(WEBRTC_IOS)
215 virtual void setHDRCaptureEnable(bool enableHDRCapture) = 0;
216 virtual void setCameraMirror(VIDEO_MIRROR_MODE_TYPE mirror) = 0;
217#endif
218 virtual void setColorSpaceInfo(webrtc::ColorSpace colorSpace) = 0;
219
220#if defined(__ANDROID__) || defined(WEBRTC_IOS)
221 virtual void setCameraDropCount(int dropcount) = 0;
222#endif
223
224#if defined(_WIN32) || (defined(__linux__) && !defined(__ANDROID__) && !defined(__OHOS__)) || \
225 (defined(__APPLE__) && TARGET_OS_MAC && !TARGET_OS_IPHONE)
226 virtual std::string getDeviceId() = 0;
227#endif
228 // Requests the output frame size and frame rate.
229 // The output frame size will be cropped to match the requested aspect
230 // ratio, unless |bypass_resolution_adaption| is set true in which case
231 // no cropping is done. The output frame rate will not be larger than the
232 // requested value.
233 // When "fixed" is set false, the requested aspect ratio is orientation
234 // agnostic, so it doesn't matter if e.g. 1280x720 or 720x1280 is requested.
235 // Otherwise, the aspect ratio of output frame is fixed.
236 virtual void setOutputFormat(const VideoDataPipeFormat& output_format, bool bypass_resolution_adaption = false) = 0;
237};
238
240 public:
241 struct ViewOption {
242 Rectangle cropArea = {0, 0, 0, 0};
244 bool enableAlphaMask = false;
245 uint32_t backgroundColor = 0;
246 };
247
249 virtual int onFrame(const webrtc::VideoFrame& videoFrame) {
250 (void)videoFrame;
251 return -ERR_NOT_SUPPORTED;
252 }
253
254 int setView(void* view, aosl_ref_t ares = AOSL_REF_INVALID) override {
255 (void) view;
256 return -ERR_NOT_SUPPORTED;
257 }
258
259 int addView(void* view, const Rectangle& cropArea, aosl_ref_t ares = AOSL_REF_INVALID) override {
260 (void) view;
261 (void) cropArea;
262 return -ERR_NOT_SUPPORTED;
263 }
264
265 int removeView(void* view) override {
266 (void) view;
267 return -ERR_NOT_SUPPORTED;
268 }
269
270 virtual int addViewEx(agora::rtc::view_shared_ptr_t view, const ViewOption& option) {
271 (void) option;
272 return -ERR_NOT_SUPPORTED;
273 }
274
275 virtual int addViewEx(agora::rtc::view_shared_ptr_t view) {
276 (void) view;
277 return -ERR_NOT_SUPPORTED;
278 }
279
280 virtual int removeViewEx(agora::view_t view) {
281 (void) view;
282 return unsetView();
283 }
284
285 int setRenderMode(void* view, media::base::RENDER_MODE_TYPE renderMode, aosl_ref_t ares = AOSL_REF_INVALID) override {
286 (void) view;
287 (void) renderMode;
288 return -ERR_NOT_SUPPORTED;
289 }
290
291 int setMirror(void* view, bool mirror, aosl_ref_t ares = AOSL_REF_INVALID) override {
292 (void) view;
293 (void) mirror;
294 return -ERR_NOT_SUPPORTED;
295 }
296
298 virtual int setRenderModeEx(agora::view_t view, media::base::RENDER_MODE_TYPE renderMode, aosl_ref_t ares = AOSL_REF_INVALID) {
299 (void) view;
300 return setRenderMode(renderMode, ares);
301 }
302
304 virtual int setMirrorEx(agora::view_t view, bool mirror, aosl_ref_t ares = AOSL_REF_INVALID) {
305 (void) view;
306 return setMirror(mirror, ares);
307 }
308
309 virtual int setCropAreaEx(agora::view_t view, const Rectangle& cropArea, aosl_ref_t ares = AOSL_REF_INVALID) {
310 (void) view;
311 (void) cropArea;
312 return -ERR_NOT_SUPPORTED;
313 }
314
315 virtual void attachUserInfo(uid_t uid, uint64_t state_space) {
316 (void) uid;
317 (void) state_space;
318 }
319
320 virtual void SetVideoQoEPusher(std::weak_ptr<agora::rtc::VideoStatsEventsPusher> pusher) {
321 (void) pusher;
322 }
323
324 virtual int getViewMetaInfo(PreviewMetaInfo& info) {
325 (void) info;
326 return -ERR_NOT_SUPPORTED;
327 }
328
330 (void) view;
331 (void) info;
332 return -ERR_NOT_SUPPORTED;
333 }
334
335 virtual int getViewCount() {
336 return -ERR_NOT_SUPPORTED;
337 }
338
339 virtual int clearBuffer() {
340 return -ERR_NOT_SUPPORTED;
341 }
345 virtual int setMirrorLLApiInternal(bool mirror) {return -ERR_NOT_SUPPORTED;}
346 virtual int setMirrorLLApiInternal(void* view, bool mirror) {return -ERR_NOT_SUPPORTED;}
347 virtual int setMirrorExLLApiInternal(view_t view, bool mirror) {return -ERR_NOT_SUPPORTED;}
348 virtual int setCropAreaExLLApiInternal(view_t view, const Rectangle& cropArea) {return -ERR_NOT_SUPPORTED;}
349 virtual int setViewLLApiInternal(view_t view) {return -ERR_NOT_SUPPORTED;}
350 virtual int addViewLLApiInternal(view_t view, const Rectangle& cropArea) {return -ERR_NOT_SUPPORTED;}
353};
354
356 public:
358
359 protected:
361};
362
364 public:
366
367 protected:
369};
370
386
400
402 std::string codecName;
403 std::string GPUVersion;
404 std::string EncodeCapacity;
405 std::string DecodeCapacity;
406 int32_t codecType = 0;
407 int32_t codecNum = 0;
408 int32_t platformid = 0;
409 std::string maxResolution;
410 std::string deviceid;
411 int32_t EncodeMaxLevel = 0;
412 int32_t inputType = 0;
413 int32_t bitrateMode = 0;
414 int32_t profile = 0;
416 bool inited = false;
417};
418
420 bool inUse;
421 std::string deviceName;
422 std::string deviceId;
423 std::string deviceType;
424};
425using CameraInfoList = std::vector<CameraInfo>;
426
432
434 public:
437 VIDEO_STREAM_TYPE stream_type) = 0;
439 VIDEO_STREAM_TYPE stream_type) = 0;
440 virtual void AttachStatSpace(uint64_t stats_space) = 0;
441 virtual void DetachStatSpace(uint64_t stats_space) = 0;
442 virtual bool sendEncodedVideoImageLLApiInternal(const uint8_t* imageBuffer, size_t length,
443 const EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
444
445 virtual int getWidth() const = 0;
446 virtual int getHeight() const = 0;
447};
448
450 public:
452
454
455 virtual int sendVideoFrame(const webrtc::VideoFrame& videoFrame) = 0;
456
461 virtual int getVideoFrame(webrtc::VideoFrame& videoFrame) = 0;
462 virtual int getVideoFrameBitDepth() = 0;
463 virtual bool pushMode() = 0;
464 virtual void fallbackHDRSender(bool fallback) = 0;
465};
466
468 public:
469 virtual ~IVideoMixerSourceEx() = default;
473 virtual void onFrame(const std::string& uid, const webrtc::VideoFrame& frame) = 0;
474 virtual void startMixing() = 0;
475 virtual void stopMixing() = 0;
476 virtual bool hasVideoTrack(const std::string& id) = 0;
477 virtual int addVideoTrackLLApiInternal(const char* id, agora_refptr<IVideoTrack> track) = 0;
478 virtual int removeVideoTrackLLApiInternal(const char* id, agora_refptr<IVideoTrack> track) = 0;
479 virtual int setStreamLayoutLLApiInternal(const char* id, const MixerLayoutConfig& config, std::shared_ptr<int> result) = 0;
480 virtual int addImageSourceLLApiInternal(const char* id, const MixerLayoutConfig& config, ImageType type, std::shared_ptr<int> result) = 0;
481 virtual int delImageSourceLLApiInternal(const char* id) = 0;
482 virtual int delStreamLayoutLLApiInternal(const char* id) = 0;
483 virtual int clearLayoutLLApiInternal() = 0;
484 virtual int refreshLLApiInternal() = 0;
485 virtual int setBackgroundLLApiInternal(uint32_t width, uint32_t height, int fps, uint32_t color_rgba = 0) = 0;
486 virtual int setBackgroundLLApiInternal(uint32_t width, uint32_t height, int fps, const char* url) = 0;
487 virtual int setRotationLLApiInternal(uint8_t rotation) = 0;
489 virtual int setMasterClockSourceLLApiInternal(const char* id = NULL) = 0;
490};
491
493 public:
494 virtual int onFrame(const webrtc::VideoFrame& videoFrame) = 0;
498 virtual void observeTxDelay(ILocalVideoTrack* track) = 0;
500
502};
503
504static const char* const GLFW_RESOURCE = "glfw_resource";
506 const char* resource_name = nullptr;
507 int (*init_func)(void*) = nullptr;
508 int (*deinit_func)(void*) = nullptr;
509 void* context = nullptr;
510 bool fixed_thread = true;
511 bool init_once = false;
512};
513
515 public:
517 virtual int ReportCounter(int32_t counter_id, int32_t value) = 0;
518 virtual int ReportEvent(int32_t event_id, void* event) = 0;
519 virtual int DeclareGlobalResource(const GlobalResourceMetaInfo& meta_info, int& resource_count) = 0;
520 virtual int ReleaseGlobalResource(const GlobalResourceMetaInfo& meta_info, int& resource_count) = 0;
521 virtual void NotifySrDelay(int sr_delay_ms) = 0;
522};
523
524} // namespace rtc
525} // namespace agora
Definition AgoraOptional.h:413
Definition AgoraRefPtr.h:31
Definition AgoraRefPtr.h:44
Definition AgoraMediaBase.h:1664
Definition NGIAgoraCameraCapturer.h:484
Definition video_node_i.h:147
virtual VideoFormat getCaptureFormatLLApiInternal()=0
virtual bool isZoomSupportedLLApiInternal()=0
virtual void setCameraLowPower(bool lowPower)=0
virtual int unregisterCameraObserverLLApiInternal(ICameraCaptureObserver *observer)=0
virtual void setCamera2FocusMode(int mode)=0
virtual bool isCameraTorchSupportedLLApiInternal()=0
virtual void setVideoEdgeMode(int mode)=0
virtual int32_t setCameraTorchOnLLApiInternal(bool isOn)=0
virtual bool enableMultiCameraLLApiInternal(bool enable)=0
virtual int setCaptureFormatLLApiInternal(const VideoFormat &capture_format)=0
virtual void setCameraDropCount(int dropcount)=0
virtual void setCameraPqFirst(bool pq_first)=0
virtual void setFocalLengthType(CAMERA_FOCAL_LENGTH_TYPE focalLengthType)=0
virtual void setCamera1FpsRangeEnabled(bool enable)=0
virtual int32_t enableFaceDetectionLLApiInternal(bool enable)=0
virtual void setCameraSelectedLevel(int camera_selected_level)=0
virtual void switchCameraIdLLApiInternal(const char *cameraId)=0
virtual void setCameraPqFirstCaptureMode(int captureMode)=0
virtual int setCameraSourceWithCameraId(CAMERA_SOURCE source, const char *camera_id)=0
virtual bool isAutoFaceFocusSupportedLLApiInternal()=0
virtual int32_t setNoiseReductionMode(int mode)=0
virtual int setCameraExposureFactorLLApiInternal(float factor)=0
virtual int switchCameraLLApiInternal()=0
virtual int setCameraExposurePositionLLApiInternal(float positionXinView, float positionYinView)=0
virtual void setCameraSkipControl(int skip_control)=0
virtual void setPreviewInfo(const PreviewMetaInfo &info)
Definition video_node_i.h:152
virtual bool isCameraExposureSupportedLLApiInternal()=0
virtual void setVideoStabilityMode(int mode)=0
virtual std::string getDeviceId()=0
virtual int registerCameraObserverLLApiInternal(ICameraCaptureObserver *observer)=0
virtual int setDeviceOrientationLLApiInternal(VIDEO_ORIENTATION orientation)=0
virtual void setCameraAutoWhiteBalance(bool enable)=0
virtual void setCamera1FocusMode(int mode)=0
virtual void setCameraMirror(VIDEO_MIRROR_MODE_TYPE mirror)=0
virtual void setCameraOutputDataType(CAMERA_OUTPUT_DATA_TYPE type)=0
virtual int32_t setCameraFocusLLApiInternal(float x, float y)=0
virtual void setCameraSelected(int module_selected)=0
virtual bool isFocusSupportedLLApiInternal()=0
virtual bool isCameraFaceDetectSupportedLLApiInternal()=0
virtual int initWithDeviceIdLLApiInternal(const char *deviceId)=0
virtual float getCameraMaxZoomLLApiInternal()=0
virtual void setCameraRefocusEnabled(bool enable)=0
virtual void setCameraTemplateType(int type)=0
virtual void setCameraExtraSurface(bool extraSurface)=0
virtual bool isCameraExposurePositionSupportedLLApiInternal()=0
virtual int initWithDeviceNameLLApiInternal(const char *deviceName)=0
virtual void setAutoFaceDetectFocus(bool enable)=0
virtual CAMERA_OUTPUT_DATA_TYPE getCameraOutputDataType()=0
virtual int setCameraSourceLLApiInternal(ICameraCapturer::CAMERA_SOURCE source)=0
virtual ~ICameraCapturerEx()
Definition video_node_i.h:149
virtual void setColorSpaceInfo(webrtc::ColorSpace colorSpace)=0
virtual bool isCameraAutoExposureFaceModeSupportedLLApiInternal()=0
virtual int32_t setCameraZoomLLApiInternal(float zoomValue)=0
virtual void setHDRCaptureEnable(bool enableHDRCapture)=0
virtual void setOutputFormat(const VideoDataPipeFormat &output_format, bool bypass_resolution_adaption=false)=0
virtual int setCameraAutoExposureFaceModeEnabledLLApiInternal(bool enabled)=0
virtual int32_t setCameraAutoFaceFocusLLApiInternal(bool enable)=0
virtual void setCameraTemplateVideoLowestScore(int lowestScore)=0
Definition NGIAgoraCameraCapturer.h:20
CAMERA_SOURCE
Definition NGIAgoraCameraCapturer.h:26
Definition AgoraExtensions.h:134
Definition video_node_i.h:514
virtual int ReportEvent(int32_t event_id, void *event)=0
virtual void NotifySrDelay(int sr_delay_ms)=0
virtual int ReportCounter(int32_t counter_id, int32_t value)=0
virtual int DeclareGlobalResource(const GlobalResourceMetaInfo &meta_info, int &resource_count)=0
virtual int ReleaseGlobalResource(const GlobalResourceMetaInfo &meta_info, int &resource_count)=0
Definition NGIAgoraVideoTrack.h:394
Definition video_node_i.h:363
virtual void setVideoFrameObserver(agora::media::IVideoFrameObserver *observer)
Definition video_node_i.h:365
~IObservableVideoFilter()
Definition video_node_i.h:368
Definition video_node_i.h:355
~IObservableVideoSink()
Definition video_node_i.h:360
virtual void setVideoFrameObserver(agora::media::IVideoFrameObserver *observer)
Definition video_node_i.h:357
Definition video_node_i.h:427
virtual void OnVideoEncodedImage(agora_refptr< VideoEncodedImageData > data)=0
virtual ~IVideoEncodedImageCallback()
Definition video_node_i.h:429
Definition video_node_i.h:433
virtual void DetachStatSpace(uint64_t stats_space)=0
virtual void AttachStatSpace(uint64_t stats_space)=0
virtual ~IVideoEncodedImageSenderEx()
Definition video_node_i.h:435
virtual void RegisterEncodedImageCallback(IVideoEncodedImageCallback *dataCallback, VIDEO_STREAM_TYPE stream_type)=0
virtual bool sendEncodedVideoImageLLApiInternal(const uint8_t *imageBuffer, size_t length, const EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
virtual void DeRegisterEncodedImageCallback(IVideoEncodedImageCallback *dataCallback, VIDEO_STREAM_TYPE stream_type)=0
Definition NGIAgoraMediaNode.h:470
Definition video_node_i.h:96
virtual void onDropFrame(agora::rtc::VideoQoEDropType drop_type)
Definition video_node_i.h:107
~IVideoFilterEx()
Definition video_node_i.h:111
virtual void setVideoQoEPusher(std::weak_ptr< VideoStatsEventsPusher > pusher)
Definition video_node_i.h:106
virtual void onSinkWantsChanged(const ::rtc::VideoSinkWants &wants)=0
virtual void adaptVideoFrameAsync(const webrtc::VideoFrame &inputFrame, std::shared_ptr< FrameProcessResult > resultSp)=0
virtual void attachStatsSpace(uint64_t stats_space)
Definition video_node_i.h:105
bool isExternal() override
Definition video_node_i.h:104
virtual void SetFilterId(std::string id)
Definition video_node_i.h:108
Definition NGIAgoraMediaNode.h:94
Definition video_node_i.h:116
virtual void setOutputFormat(const VideoDataPipeFormat &format, agora::Optional< VideoDataPipeFormat > &source_pipe_format_expected)
Definition video_node_i.h:127
virtual void setMirror(bool mirror)
Definition video_node_i.h:135
virtual void setOutputRotation(webrtc::VideoRotation rotation)
Definition video_node_i.h:132
~IVideoFrameAdapter()
Definition video_node_i.h:138
virtual void setOutputFormat(const VideoFormat &format, bool fixed=false)=0
Definition video_node_i.h:449
virtual void RegisterVideoFrameCallback(::rtc::VideoSinkInterface< webrtc::VideoFrame > *dataCallback)=0
virtual void DeRegisterVideoFrameCallback()=0
virtual int sendVideoFrame(const webrtc::VideoFrame &videoFrame)=0
virtual int sendVideoFrameLLApiInternal(const media::base::ExternalVideoFrame &videoFrame)=0
virtual ~IVideoFrameSenderEx()
Definition video_node_i.h:453
virtual int getVideoFrameBitDepth()=0
virtual void fallbackHDRSender(bool fallback)=0
virtual int getVideoFrame(webrtc::VideoFrame &videoFrame)=0
Definition NGIAgoraMediaNode.h:446
virtual int sendVideoFrame(const media::base::ExternalVideoFrame &videoFrame, aosl_ref_t ares=AOSL_REF_INVALID)=0
Definition video_node_i.h:492
virtual int onFrame(const webrtc::VideoFrame &videoFrame)=0
virtual void registerFrameCallback(::rtc::VideoSinkInterface< webrtc::VideoFrame > *dataCallback)=0
virtual void observeTxDelay(ILocalVideoTrack *track)=0
virtual int addVideoTrackLLApiInternal(agora_refptr< IVideoTrack > track)=0
virtual int removeVideoTrackLLApiInternal(agora_refptr< IVideoTrack > track)=0
virtual void deRegisterFrameCallback(::rtc::VideoSinkInterface< webrtc::VideoFrame > *dataCallback)=0
Definition NGIAgoraMediaNode.h:648
Definition video_node_i.h:467
virtual int setRotationLLApiInternal(uint8_t rotation)=0
virtual int delStreamLayoutLLApiInternal(const char *id)=0
virtual void deRegisterMixedFrameCallback(::rtc::VideoSinkInterface< webrtc::VideoFrame > *dataCallback)=0
virtual int addVideoTrackLLApiInternal(const char *id, agora_refptr< IVideoTrack > track)=0
virtual int clearLayoutLLApiInternal()=0
virtual int setStreamLayoutLLApiInternal(const char *id, const MixerLayoutConfig &config, std::shared_ptr< int > result)=0
virtual int delImageSourceLLApiInternal(const char *id)=0
virtual int setBackgroundLLApiInternal(uint32_t width, uint32_t height, int fps, uint32_t color_rgba=0)=0
virtual ~IVideoMixerSourceEx()=default
virtual void registerMixedFrameCallback(::rtc::VideoSinkInterface< webrtc::VideoFrame > *dataCallback)=0
virtual int getAvgMixerDelayLLApiInternal()=0
virtual bool hasVideoTrack(const std::string &id)=0
virtual int setMasterClockSourceLLApiInternal(const char *id=NULL)=0
virtual int refreshLLApiInternal()=0
virtual void onFrame(const std::string &uid, const webrtc::VideoFrame &frame)=0
virtual int setBackgroundLLApiInternal(uint32_t width, uint32_t height, int fps, const char *url)=0
virtual int addImageSourceLLApiInternal(const char *id, const MixerLayoutConfig &config, ImageType type, std::shared_ptr< int > result)=0
virtual int removeVideoTrackLLApiInternal(const char *id, agora_refptr< IVideoTrack > track)=0
Definition NGIAgoraVideoMixerSource.h:46
Definition video_node_i.h:239
virtual int setMirrorLLApiInternal(void *view, bool mirror)
Definition video_node_i.h:346
int setView(void *view, aosl_ref_t ares=AOSL_REF_INVALID) override
Definition video_node_i.h:254
virtual void attachUserInfo(uid_t uid, uint64_t state_space)
Definition video_node_i.h:315
virtual int clearBuffer()
Definition video_node_i.h:339
virtual int setCropAreaEx(agora::view_t view, const Rectangle &cropArea, aosl_ref_t ares=AOSL_REF_INVALID)
Definition video_node_i.h:309
virtual int removeViewEx(agora::view_t view)
Definition video_node_i.h:280
virtual int unsetViewLLApiInternal()
Definition video_node_i.h:351
virtual int getViewMetaInfo(PreviewMetaInfo &info)
Definition video_node_i.h:324
virtual int setMirrorEx(agora::view_t view, bool mirror, aosl_ref_t ares=AOSL_REF_INVALID)
Definition video_node_i.h:304
virtual void SetVideoQoEPusher(std::weak_ptr< agora::rtc::VideoStatsEventsPusher > pusher)
Definition video_node_i.h:320
virtual int setRenderModeExLLApiInternal(view_t view, media::base::RENDER_MODE_TYPE renderMode)
Definition video_node_i.h:344
virtual int setRenderModeEx(agora::view_t view, media::base::RENDER_MODE_TYPE renderMode, aosl_ref_t ares=AOSL_REF_INVALID)
Definition video_node_i.h:298
virtual int setRenderModeLLApiInternal(void *view, media::base::RENDER_MODE_TYPE renderMode)
Definition video_node_i.h:343
virtual int setViewLLApiInternal(view_t view)
Definition video_node_i.h:349
virtual int addViewLLApiInternal(view_t view, const Rectangle &cropArea)
Definition video_node_i.h:350
int addView(void *view, const Rectangle &cropArea, aosl_ref_t ares=AOSL_REF_INVALID) override
Definition video_node_i.h:259
virtual int removeViewLLApiInternal(view_t view)
Definition video_node_i.h:352
virtual int getViewMetaInfo(agora::view_t view, PreviewMetaInfo &info)
Definition video_node_i.h:329
virtual int setMirrorLLApiInternal(bool mirror)
Definition video_node_i.h:345
int setMirror(void *view, bool mirror, aosl_ref_t ares=AOSL_REF_INVALID) override
Definition video_node_i.h:291
virtual int getViewCount()
Definition video_node_i.h:335
virtual int addViewEx(agora::rtc::view_shared_ptr_t view)
Definition video_node_i.h:275
virtual int addViewEx(agora::rtc::view_shared_ptr_t view, const ViewOption &option)
Definition video_node_i.h:270
virtual int onFrame(const webrtc::VideoFrame &videoFrame)
Definition video_node_i.h:249
virtual int setMirrorExLLApiInternal(view_t view, bool mirror)
Definition video_node_i.h:347
int setRenderMode(void *view, media::base::RENDER_MODE_TYPE renderMode, aosl_ref_t ares=AOSL_REF_INVALID) override
Definition video_node_i.h:285
virtual int setCropAreaExLLApiInternal(view_t view, const Rectangle &cropArea)
Definition video_node_i.h:348
virtual int setRenderModeLLApiInternal(media::base::RENDER_MODE_TYPE renderMode)
Definition video_node_i.h:342
int removeView(void *view) override
Definition video_node_i.h:265
Definition NGIAgoraMediaNode.h:569
virtual int setRenderMode(media::base::RENDER_MODE_TYPE renderMode, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int unsetView(aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int setMirror(bool mirror, aosl_ref_t ares=AOSL_REF_INVALID)=0
virtual int onFrame(const media::base::VideoFrame &videoFrame)=0
Definition video_node_i.h:32
RENDER_MODE_TYPE
Definition AgoraMediaBase.h:532
static const char *const BUILT_IN_PRE_ENCODER_FILTER_FRAME_OBSERVER
Definition video_node_i.h:90
static const char *const BUILT_IN_MAJOR_TEE
Definition video_node_i.h:84
CAMERA_FOCAL_LENGTH_TYPE
Definition AgoraBase.h:1257
static const char *const BUILT_IN_PRE_ENCODER_WATERMARK_FILTER
Definition video_node_i.h:77
ImageType
Definition NGIAgoraVideoMixerSource.h:33
static const char *const GLFW_RESOURCE
Definition video_node_i.h:504
static const char *const BUILT_IN_STITCH_FRAME
Definition video_node_i.h:91
static const char *const BUILT_IN_MINOR_ADAPTER
Definition video_node_i.h:86
static const char *const BUILT_IN_PRE_ENCODER_FILTER_OBSERVER
Definition video_node_i.h:88
static const char *const BUILT_IN_REMOTE_ADAPTER
Definition video_node_i.h:76
VIDEO_STREAM_TYPE
Definition AgoraBase.h:1613
CAMERA_OUTPUT_DATA_TYPE
Definition video_node_i.h:141
@ CAMERA_OUTPUT_RAW
Definition video_node_i.h:142
@ CAMERA_OUTPUT_TEXTURE_AND_RAW
Definition video_node_i.h:144
@ CAMERA_OUTPUT_TEXTURE
Definition video_node_i.h:143
VIDEO_CODEC_TYPE
Definition AgoraBase.h:1209
static const char *const BUILT_IN_ADAPTER
Definition video_node_i.h:75
static const char *const BUILT_IN_SOURCE_TEE
Definition video_node_i.h:82
static const char *const BUILT_IN_SOURCE_FILTER
Definition video_node_i.h:73
VIDEO_MIRROR_MODE_TYPE
Definition AgoraBase.h:1858
static const char *const BUILT_IN_POST_CAPTURER_FILTER_OBSERVER
Definition video_node_i.h:87
InternalRendererType
Definition video_node_i.h:39
@ RENDERER_NONE
Definition video_node_i.h:40
@ RENDERER_EXT_OBSERVER
Definition video_node_i.h:42
@ RENDERER_BUILT_IN_RENDERER
Definition video_node_i.h:41
static const char *const BUILT_IN_SCREEN_CAPTURE_FILTER
Definition video_node_i.h:92
static const char *const BUILT_IN_POST_CAPTURER_FILTER_FRAME_OBSERVER
Definition video_node_i.h:89
std::vector< CameraInfo > CameraInfoList
Definition video_node_i.h:425
static const char *const BUILT_IN_POST_CAPTURER_WATERMARK_FILTER
Definition video_node_i.h:78
unsigned int uid_t
Definition AgoraMediaBase.h:28
static const char *const BUILT_IN_SIMULCAST_TEE
Definition video_node_i.h:85
static const char *const BUILT_IN_PRE_ENCODER_FACEDETECE_FILTER
Definition video_node_i.h:80
static const char *const BUILT_IN_METADATA_OBSERVER
Definition video_node_i.h:74
static const char *const BUILT_IN_PREVIEW_TEE
Definition video_node_i.h:83
VIDEO_FRAME_TYPE
Definition AgoraBase.h:1051
VIDEO_ORIENTATION
Definition AgoraBase.h:987
Definition AgoraAtomicOps.h:21
void * view_t
Definition AgoraBase.h:854
@ ERR_NOT_SUPPORTED
Definition AgoraBase.h:481
Definition video_node_i.h:28
Definition common_defines.h:18
Definition AgoraMediaBase.h:770
Definition video_node_i.h:387
bool faceFocusing
Definition video_node_i.h:394
bool textureCopy
Definition video_node_i.h:390
bool inited
Definition video_node_i.h:398
int noiseReduce
Definition video_node_i.h:393
bool lowLevelCamera
Definition video_node_i.h:396
bool isTexture
Definition video_node_i.h:389
bool whiteBalance
Definition video_node_i.h:395
std::string hardwareLevel
Definition video_node_i.h:397
int deviceId
Definition video_node_i.h:388
bool pqFirst
Definition video_node_i.h:391
int templateType
Definition video_node_i.h:392
Definition video_node_i.h:419
std::string deviceName
Definition video_node_i.h:421
std::string deviceId
Definition video_node_i.h:422
std::string deviceType
Definition video_node_i.h:423
bool inUse
Definition video_node_i.h:420
Definition AgoraBase.h:1679
webrtc::VideoFrame outputFrame
Definition video_node_i.h:53
bool dropFrame
Definition video_node_i.h:54
FrameProcessResult(const webrtc::VideoFrame &frame, bool drop)
Definition video_node_i.h:55
Definition video_node_i.h:505
int(* deinit_func)(void *)
Definition video_node_i.h:508
const char * resource_name
Definition video_node_i.h:506
int(* init_func)(void *)
Definition video_node_i.h:507
bool init_once
Definition video_node_i.h:511
bool fixed_thread
Definition video_node_i.h:510
void * context
Definition video_node_i.h:509
Definition video_node_i.h:241
uid_t cropAreaUid
Definition video_node_i.h:243
bool enableAlphaMask
Definition video_node_i.h:244
Rectangle cropArea
Definition video_node_i.h:242
uint32_t backgroundColor
Definition video_node_i.h:245
Definition NGIAgoraVideoMixerSource.h:18
Definition video_node_i.h:45
bool vsync_mode
Definition video_node_i.h:48
bool mirror
Definition video_node_i.h:47
agora::rtc::view_shared_ptr_t view
Definition video_node_i.h:46
media::base::RENDER_MODE_TYPE render_mode
Definition video_node_i.h:49
Definition AgoraBase.h:2281
Definition video_node_i.h:58
VideoFormat format
Definition video_node_i.h:59
bool operator!=(const VideoDataPipeFormat &fmt) const
Definition video_node_i.h:68
VideoDataPipeFormat(const VideoFormat &f, bool fi)
Definition video_node_i.h:63
bool fixed
Definition video_node_i.h:60
bool operator==(const VideoDataPipeFormat &fmt) const
Definition video_node_i.h:65
Definition video_node_i.h:371
VIDEO_FRAME_TYPE frameType
Definition video_node_i.h:373
VIDEO_ORIENTATION rotation
Definition video_node_i.h:378
int64_t ptsMs
Definition video_node_i.h:384
int height
Definition video_node_i.h:375
VIDEO_CODEC_TYPE codec
Definition video_node_i.h:379
std::string image
Definition video_node_i.h:372
int64_t internalUplinkCostTimeStartMs
Definition video_node_i.h:383
VIDEO_STREAM_TYPE streamType
Definition video_node_i.h:380
int framesPerSecond
Definition video_node_i.h:376
int64_t decodeTimeMs
Definition video_node_i.h:382
int64_t captureTimeMs
Definition video_node_i.h:381
int width
Definition video_node_i.h:374
Definition AgoraBase.h:3087
Definition video_node_i.h:401
int32_t codecNum
Definition video_node_i.h:407
int32_t EncodeMaxLevel
Definition video_node_i.h:411
int32_t bitrateMode
Definition video_node_i.h:413
int32_t minSupportedBitrate
Definition video_node_i.h:415
std::string maxResolution
Definition video_node_i.h:409
int32_t codecType
Definition video_node_i.h:406
std::string DecodeCapacity
Definition video_node_i.h:405
std::string GPUVersion
Definition video_node_i.h:403
std::string codecName
Definition video_node_i.h:402
std::string EncodeCapacity
Definition video_node_i.h:404
int32_t platformid
Definition video_node_i.h:408
int32_t inputType
Definition video_node_i.h:412
std::string deviceid
Definition video_node_i.h:410
int32_t profile
Definition video_node_i.h:414
bool inited
Definition video_node_i.h:416