Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
NGIAgoraExtensionScreenSource.h
1//
2// Agora SDK
3//
4// Copyright (c) 2021 Agora.io. All rights reserved.
5//
6
7#pragma once // NOLINT(build/header_guard)
8
9#include "AgoraBase.h"
10#include "IAgoraLog.h"
11#include "AgoraRefPtr.h"
12#include "NGIAgoraVideoFrame.h"
13#include "AgoraMediaBase.h"
14#if defined(WEBRTC_IOS)
15#include <coreVideo/CVPixelBuffer.h>
16#endif
17namespace agora {
18namespace rtc {
19
40
42 public:
43 class Control : public RefCountInterface {
44 public:
45 virtual int postEvent(const char* key, const char* value) = 0;
46 virtual void printLog(commons::LOG_LEVEL level, const char* format, ...) = 0;
47 virtual void printLog(commons::LOG_LEVEL level, const char* fromat, va_list) = 0;
48 virtual int pushAudioFrame(const media::IAudioFrameObserver::AudioFrame& captured_frame) = 0;
49 virtual bool timeToPushVideo() = 0;
50 virtual int pushVideoFrame(const agora::agora_refptr<IVideoFrame>& captured_frame) = 0;
52#if defined(WEBRTC_IOS)
53 virtual int pushVideoFrame(CVPixelBufferRef pixelBuffer, int64_t timestamp_ms, uint32_t rotation) = 0;
54#endif
55#if defined(WEBRTC_WIN)
56 virtual void recycleVideoCache() = 0;
57#endif
58 };
59
66
67#if defined (__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined(__OHOS__)
74#else
75 struct VideoCaptureConfig {
83 int64_t display_id;
85
87
88 // Mac only
91
94 };
95#endif
96
107
109 kPull, // SDK needs to poll the captured frame actively
110 kPush // Capture source pushes the captured frame to sdk
111 };
112
113
115
116 virtual int initializeCapture(const agora_refptr<Control>& control) = 0;
117
118 virtual int initVideo(const VideoCaptureConfig& config) = 0;
119 // Start video capture interface for desktop capturing
120 virtual int startVideoCapture(const VideoCaptureConfig& config) = 0;
121 virtual int stopVideoCapture() = 0;
122 virtual int stopVideoCaptureAsync() = 0;
123
125
126 // Implementation of the following interfaces are not mandatory
127 virtual int startAudioCapture(const AudioCaptureConfig& config) {
128 return -ERR_NOT_SUPPORTED;
129 }
130 virtual int stopAudioCapture() {
131 return -ERR_NOT_SUPPORTED;
132 }
133 virtual int setAudioVolume(uint32_t volume) {
134 return -ERR_NOT_SUPPORTED;
135 }
136 virtual int setFrameRate(int fps) {
137 return -ERR_NOT_SUPPORTED;
138 }
139
141 return -ERR_NOT_SUPPORTED;
142 }
143 virtual int updateCaptureRegion(const agora::rtc::Rectangle& captureRegion) {
144 return -ERR_NOT_SUPPORTED;
145 }
146 virtual int setExcludeWindowList(void* const * handles, int count) {
147 return -ERR_NOT_SUPPORTED;
148 }
149 virtual int captureMouseCursor(bool capture) {
150 return -ERR_NOT_SUPPORTED;
151 }
153 return -ERR_NOT_SUPPORTED;
154 }
158 virtual int getScreenDimensions(int& width, int& height) {
159 return ERR_NOT_SUPPORTED;
160 }
161 virtual int setProperty(const char* key, const char* json_value) {
162 return -ERR_NOT_SUPPORTED;
163 }
164 virtual int setCustomContext(const char* key, const void* context) {
165 return -ERR_NOT_SUPPORTED;
166 }
167 virtual int getProperty(const char* key, char* json_value, int& length) {
168 return -ERR_NOT_SUPPORTED;
169 }
170 virtual int setHighLight(bool isHighLight, unsigned int color, int width) {
171 return -ERR_NOT_SUPPORTED;
172 }
173 virtual int setContentType(int contentType) {
174 return -ERR_NOT_SUPPORTED;
175 }
176 virtual void* getCustomContext(const char* key) {
177 return NULL;
178 }
179 virtual void* getScreenCaptureSources(const ScreenSourceListOption& option) {
180 return NULL;
181 }
182 virtual void setFrameCopy(bool frameCopy) {};
183#if defined(WEBRTC_ANDROID) && !defined(RTC_EXCLUDE_JAVA)
184 virtual void setSmoothCapture(bool smoothCapture) {};
185 virtual void setResetVitualDisplay(bool reset) {};
186#endif
187#if defined(WEBRTC_ANDROID)
188 virtual int setExternalMediaProjection(void* mediaProjection) {
189 return -ERR_NOT_SUPPORTED;
190 }
191#endif
192};
193
194} // namespace rtc
195} // namespace agora
Definition AgoraRefPtr.h:31
Definition AgoraRefPtr.h:44
Definition NGIAgoraExtensionScreenSource.h:43
virtual int pushVideoFrame(CVPixelBufferRef pixelBuffer, int64_t timestamp_ms, uint32_t rotation)=0
virtual agora::agora_refptr< IVideoFrameMemoryPool > getMemoryPool()=0
virtual void printLog(commons::LOG_LEVEL level, const char *fromat, va_list)=0
virtual int postEvent(const char *key, const char *value)=0
virtual void printLog(commons::LOG_LEVEL level, const char *format,...)=0
virtual int pushAudioFrame(const media::IAudioFrameObserver::AudioFrame &captured_frame)=0
virtual int pushVideoFrame(const agora::agora_refptr< IVideoFrame > &captured_frame)=0
Definition NGIAgoraExtensionScreenSource.h:41
virtual int setExternalMediaProjection(void *mediaProjection)
Definition NGIAgoraExtensionScreenSource.h:188
virtual ~IScreenCaptureSource()
Definition NGIAgoraExtensionScreenSource.h:114
virtual int setProperty(const char *key, const char *json_value)
Definition NGIAgoraExtensionScreenSource.h:161
virtual void setResetVitualDisplay(bool reset)
Definition NGIAgoraExtensionScreenSource.h:185
virtual int stopVideoCaptureAsync()=0
virtual int initVideo(const VideoCaptureConfig &config)=0
virtual int startAudioCapture(const AudioCaptureConfig &config)
Definition NGIAgoraExtensionScreenSource.h:127
virtual int getProperty(const char *key, char *json_value, int &length)
Definition NGIAgoraExtensionScreenSource.h:167
virtual int updateCaptureRegion(const agora::rtc::Rectangle &captureRegion)
Definition NGIAgoraExtensionScreenSource.h:143
virtual int capture(agora::agora_refptr< IVideoFrame > &frame)
Definition NGIAgoraExtensionScreenSource.h:152
CaptureMode
Definition NGIAgoraExtensionScreenSource.h:108
@ kPush
Definition NGIAgoraExtensionScreenSource.h:110
@ kPull
Definition NGIAgoraExtensionScreenSource.h:109
virtual int getScreenDimensions(int &width, int &height)
Definition NGIAgoraExtensionScreenSource.h:158
virtual CaptureMode getVideoCaptureMode()=0
virtual int captureMouseCursor(bool capture)
Definition NGIAgoraExtensionScreenSource.h:149
virtual int setAudioVolume(uint32_t volume)
Definition NGIAgoraExtensionScreenSource.h:133
virtual int stopAudioCapture()
Definition NGIAgoraExtensionScreenSource.h:130
virtual void setFrameCopy(bool frameCopy)
Definition NGIAgoraExtensionScreenSource.h:182
virtual void setSmoothCapture(bool smoothCapture)
Definition NGIAgoraExtensionScreenSource.h:184
virtual int setContentType(int contentType)
Definition NGIAgoraExtensionScreenSource.h:173
virtual int getProfilingStats(ScreenCaptureProfilingStatistics &stats)
Definition NGIAgoraExtensionScreenSource.h:155
virtual int setHighLight(bool isHighLight, unsigned int color, int width)
Definition NGIAgoraExtensionScreenSource.h:170
virtual int startVideoCapture(const VideoCaptureConfig &config)=0
virtual int setCustomContext(const char *key, const void *context)
Definition NGIAgoraExtensionScreenSource.h:164
virtual int setScreenCaptureDimensions(const agora::rtc::VideoDimensions &dimensions)
Definition NGIAgoraExtensionScreenSource.h:140
virtual int setFrameRate(int fps)
Definition NGIAgoraExtensionScreenSource.h:136
virtual void * getScreenCaptureSources(const ScreenSourceListOption &option)
Definition NGIAgoraExtensionScreenSource.h:179
virtual int initializeCapture(const agora_refptr< Control > &control)=0
virtual void * getCustomContext(const char *key)
Definition NGIAgoraExtensionScreenSource.h:176
virtual int setExcludeWindowList(void *const *handles, int count)
Definition NGIAgoraExtensionScreenSource.h:146
OPTIONAL_ENUM_CLASS LOG_LEVEL
Definition IAgoraLog.h:33
Definition AgoraExtensions.h:5
Definition AgoraAtomicOps.h:21
void * view_t
Definition AgoraBase.h:854
@ ERR_NOT_SUPPORTED
Definition AgoraBase.h:481
Definition NGIAgoraExtensionScreenSource.h:60
int num_channels
Definition NGIAgoraExtensionScreenSource.h:63
AudioCaptureConfig()
Definition NGIAgoraExtensionScreenSource.h:64
int sample_rate_hz
Definition NGIAgoraExtensionScreenSource.h:62
uint32_t volume
Definition NGIAgoraExtensionScreenSource.h:61
Definition NGIAgoraExtensionScreenSource.h:97
bool ignore_unresponsive
Definition NGIAgoraExtensionScreenSource.h:105
int icon_width
Definition NGIAgoraExtensionScreenSource.h:100
int icon_height
Definition NGIAgoraExtensionScreenSource.h:101
bool unskip_system_window
Definition NGIAgoraExtensionScreenSource.h:104
bool unfiltered
Definition NGIAgoraExtensionScreenSource.h:103
bool include_screen
Definition NGIAgoraExtensionScreenSource.h:102
int thumb_height
Definition NGIAgoraExtensionScreenSource.h:99
int thumb_width
Definition NGIAgoraExtensionScreenSource.h:98
Definition NGIAgoraExtensionScreenSource.h:68
int frameRate
Definition NGIAgoraExtensionScreenSource.h:70
bool disable_avf
Definition NGIAgoraExtensionScreenSource.h:89
Rectangle region_offset
Definition NGIAgoraExtensionScreenSource.h:82
int64_t display_id
Definition NGIAgoraExtensionScreenSource.h:83
view_t window_id
Definition NGIAgoraExtensionScreenSource.h:84
VideoCaptureConfig()
Definition NGIAgoraExtensionScreenSource.h:71
CaptureType
Definition NGIAgoraExtensionScreenSource.h:76
@ CaptureScreen
Definition NGIAgoraExtensionScreenSource.h:78
@ CaptureWindow
Definition NGIAgoraExtensionScreenSource.h:77
bool window_focused
Definition NGIAgoraExtensionScreenSource.h:86
bool disable_frame_transparent_check
Definition NGIAgoraExtensionScreenSource.h:90
Rectangle screen_rect
Definition NGIAgoraExtensionScreenSource.h:81
CaptureType type
Definition NGIAgoraExtensionScreenSource.h:80
agora::rtc::VideoDimensions dimensions
Definition NGIAgoraExtensionScreenSource.h:69
Definition AgoraBase.h:2281
Definition NGIAgoraExtensionScreenSource.h:20
uint32_t real_capture_fps
Definition NGIAgoraExtensionScreenSource.h:29
int capture_type
Definition NGIAgoraExtensionScreenSource.h:21
uint64_t per_frame_cap_time_ms
Definition NGIAgoraExtensionScreenSource.h:25
uint32_t captured_frame_width
Definition NGIAgoraExtensionScreenSource.h:22
bool capture_mouse_cursor
Definition NGIAgoraExtensionScreenSource.h:27
uint32_t target_fps
Definition NGIAgoraExtensionScreenSource.h:28
ScreenCaptureProfilingStatistics()
Definition NGIAgoraExtensionScreenSource.h:33
uint32_t captured_frame_height
Definition NGIAgoraExtensionScreenSource.h:23
uint32_t capture_out_fps
Definition NGIAgoraExtensionScreenSource.h:30
uint32_t drop_fps
Definition NGIAgoraExtensionScreenSource.h:31
uint32_t total_captured_frames
Definition NGIAgoraExtensionScreenSource.h:24
uint64_t per_capture_cpu_cycles
Definition NGIAgoraExtensionScreenSource.h:26
Definition AgoraBase.h:1139