7 #pragma once // NOLINT(build/header_guard)
10 #include "IAgoraLog.h"
11 #include "AgoraRefPtr.h"
12 #include "NGIAgoraVideoFrame.h"
13 #include "AgoraMediaBase.h"
20 uint32_t captured_frame_width;
21 uint32_t captured_frame_height;
22 uint32_t total_captured_frames;
23 uint64_t per_frame_cap_time_ms;
24 uint64_t per_capture_cpu_cycles;
25 bool capture_mouse_cursor;
28 : capture_type(-1), captured_frame_width(0), captured_frame_height(0),
29 total_captured_frames(0), per_frame_cap_time_ms(0),
30 per_capture_cpu_cycles(0), capture_mouse_cursor(
true) {}
37 virtual int postEvent(
const char* key,
const char* value) = 0;
38 virtual void printLog(commons::LOG_LEVEL level,
const char* format, ...) = 0;
40 virtual bool timeToPushVideo() = 0;
52 #if defined (__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
56 : dimensions(640, 360) {}
71 : type(CaptureScreen), screen_rect(), region_offset(), display_id(0), window_id(NULL) { }
79 enum VideoContentSubType {
91 virtual ~IScreenCaptureSource() {}
93 virtual int initializeCapture(
const agora_refptr<Control>& control) = 0;
96 virtual int startVideoCapture(
const VideoCaptureConfig& config) = 0;
97 virtual int stopVideoCapture() = 0;
99 virtual CaptureMode getVideoCaptureMode() = 0;
102 virtual int startAudioCapture(
const AudioCaptureConfig& config) {
103 return -ERR_NOT_SUPPORTED;
105 virtual int stopAudioCapture() {
106 return -ERR_NOT_SUPPORTED;
108 virtual int setAudioVolume(uint32_t volume) {
109 return -ERR_NOT_SUPPORTED;
111 virtual int setFrameRate(
int fps) {
112 return -ERR_NOT_SUPPORTED;
115 return -ERR_NOT_SUPPORTED;
118 return -ERR_NOT_SUPPORTED;
120 virtual int setExcludeWindowList(
void*
const * handles,
int count) {
121 return -ERR_NOT_SUPPORTED;
123 virtual int captureMouseCursor(
bool capture) {
124 return -ERR_NOT_SUPPORTED;
127 return -ERR_NOT_SUPPORTED;
129 virtual int getProfilingStats(ScreenCaptureProfilingStatistics& stats) {
130 return -ERR_NOT_SUPPORTED;
132 virtual int getScreenDimensions(
int& width,
int& height) {
133 return ERR_NOT_SUPPORTED;
135 virtual int setProperty(
const char* key,
const char* json_value) {
136 return -ERR_NOT_SUPPORTED;
138 virtual int setCustomContext(
const char* key,
const void* context) {
139 return -ERR_NOT_SUPPORTED;
141 virtual int getProperty(
const char* key,
char* json_value,
int& length) {
142 return -ERR_NOT_SUPPORTED;
144 virtual void* getCustomContext(
const char* key) {
147 virtual void* getScreenCaptureSources(
int thumb_cx,
int thumb_cy,
int icon_cx,
int icon_cy,
148 bool include_screen) {
152 virtual int SetContentType(VideoContentSubType type) {
153 return -ERR_NOT_SUPPORTED;