Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
screen_capture_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 "AgoraRefPtr.h"
10#include "NGIAgoraExtensionScreenSource.h"
11#include "NGIAgoraScreenCapturer.h"
12#include "main/core/video/base/video_frame/video_content_type.h"
13#include "main/core/video/base/video_frame/video_frame.h"
14#include "main/core/video/base/video_source_interface.h"
15#include "modules/desktop_capture/desktop_capturer.h"
16
17namespace agora {
18namespace rtc {
19
21
23public:
28 public:
29 virtual ~IScreenCapturerEx() {}
30 virtual int StartCapture() = 0;
31 virtual int StopCapture() = 0;
33 std::weak_ptr<::rtc::VideoSinkInterface<webrtc::VideoFrame>> dataCallback) = 0;
34 virtual int CaptureMouseCursor(bool capture) = 0;
35 virtual int GetScreenDimensions(VideoDimensions& dimension) = 0;
36 virtual int SetOutputDimensions(VideoDimensions dimension) {return 0;};
37 virtual int SetContentType(agora::VideoContentSubType type) {return 0;};
38 virtual void GetContentType(agora::VideoContentType& type, agora::VideoContentSubType& subtype) {};
39 virtual bool FocusOnSelectedSource() = 0;
40 virtual void SetHighLight(bool isHighLight, unsigned int color, int width) {}
41 virtual void SetVideoQoEPusher(std::weak_ptr<agora::rtc::VideoStatsEventsPusher> pusher) = 0;
42
43#if defined(_WIN32) || (defined(__APPLE__) && !TARGET_OS_IPHONE && TARGET_OS_MAC) || (defined(__linux__) && !defined(__ANDROID__) && !defined(__OHOS__))
44 virtual int initWithDisplayIdLLApiInternal(int64_t displayId, const rtc::Rectangle& regionRect) = 0;
45#endif
46
47#if defined(_WIN32) || (defined(__linux__) && !defined(__ANDROID__) && !defined (__OHOS__))
48 virtual int initWithScreenRectLLApiInternal(const rtc::Rectangle& screenRect, const rtc::Rectangle& regionRect) = 0;
49#endif
53 virtual int setFrameRateLLApiInternal(int rate) = 0;
54#if defined(__ANDROID__)
55 virtual int initWithMediaProjectionPermissionResultDataLLApiInternal(void* data, const VideoDimensions& dimensions) = 0;
56#endif
57#if defined(_WIN32)
59 virtual void SetCaptureSource(bool allow_magnification_api, bool allow_directx_capturer) {}
60 virtual void GetCaptureSource(bool& allow_magnification_api, bool& allow_directx_capturer) {}
61 virtual void SetAllowUseWGC(bool allow_use_wgc) {}
62 virtual void GetAllowUseWGC(bool& allow_use_wgc) {}
63 virtual void SetCaptureToTexture(bool capture_to_texture) {}
64 virtual void GetCaptureToTexture(bool& capture_to_texture) {}
65#endif // _WIN32
66
67#if defined(_WIN32) || (defined(WEBRTC_MAC) && !defined(WEBRTC_IOS))
68 virtual void ForcedUsingScreenCapture(bool using_screen_capture) {}
69
70 virtual void SetExcludeWindowList(const std::vector<void *>& window_list) = 0;
71 virtual webrtc::DesktopCapturer::SourceId GetSourceId() = 0;
72 virtual int GetCaptureType() = 0;
73#endif // _WIN32 || (WEBRTC_MAC&&!WEBRTC_IOS)
81 return nullptr;
82 }
83 virtual void deinit() {};
84 virtual void attachStatsSpace(uint64_t stats_space) {}
85};
86
88public:
90 (void) state;
91 }
92protected:
94};
95
96#if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || defined(__OHOS__)
97class AudioPcmDataSinkInterface;
99 public:
100 virtual int startVideoCapture() = 0;
101 virtual int stopVideoCapture() = 0;
102 virtual int startAudioCapture() = 0;
103 virtual int stopAudioCapture() = 0;
104 virtual void addPcmDataSink(AudioPcmDataSinkInterface* sink) = 0;
105 virtual void removePcmDataSink(AudioPcmDataSinkInterface* sink) = 0;
106 virtual void deinit() {};
107 virtual void attachStatsSpace(uint64_t stats_space) {}
108 virtual void SetVideoQoEPusher(std::weak_ptr<agora::rtc::VideoStatsEventsPusher> pusher) = 0;
110 virtual int updateScreenCaptureRegionLLApiInternal(const rtc::Rectangle& regionRect) = 0;
111 virtual int setFrameRateLLApiInternal(int fps) = 0;
112 virtual int setAudioRecordConfigLLApiInternal(int channels, int sampleRate) = 0;
113 virtual int setAudioVolumeLLApiInternal(uint32_t volume) = 0;
114};
115#endif
116
117} // namespace rtc
118} // namespace agora
Definition screen_capture_i.h:87
virtual void onScreenCaptureStateChanged(IScreenCapturerEx::SCREEN_CAPTURER_STATE state)
Definition screen_capture_i.h:89
virtual ~IScreenCaptureObserver()
Definition screen_capture_i.h:93
Definition NGIAgoraScreenCapturer.h:146
Definition screen_capture_i.h:98
virtual int setAudioVolumeLLApiInternal(uint32_t volume)=0
virtual int stopVideoCapture()=0
virtual int startVideoCapture()=0
virtual int setAudioRecordConfigLLApiInternal(int channels, int sampleRate)=0
virtual void attachStatsSpace(uint64_t stats_space)
Definition screen_capture_i.h:107
virtual int stopAudioCapture()=0
virtual void addPcmDataSink(AudioPcmDataSinkInterface *sink)=0
virtual int setFrameRateLLApiInternal(int fps)=0
virtual void removePcmDataSink(AudioPcmDataSinkInterface *sink)=0
virtual int startAudioCapture()=0
virtual void deinit()
Definition screen_capture_i.h:106
virtual int updateScreenCaptureRegionLLApiInternal(const rtc::Rectangle &regionRect)=0
virtual int setScreenCaptureDimensionsLLApiInternal(const VideoDimensions &dimensions)=0
virtual void SetVideoQoEPusher(std::weak_ptr< agora::rtc::VideoStatsEventsPusher > pusher)=0
Definition screen_capture_i.h:22
virtual int unregisterScreenCaptureObserver(IScreenCaptureObserver *observer)
Definition screen_capture_i.h:77
virtual int initWithScreenRectLLApiInternal(const rtc::Rectangle &screenRect, const rtc::Rectangle &regionRect)=0
virtual int initWithWindowIdLLApiInternal(view_t windowId, const rtc::ScreenCaptureConfiguration &config)=0
virtual void GetContentType(agora::VideoContentType &type, agora::VideoContentSubType &subtype)
Definition screen_capture_i.h:38
virtual int InitUsingLastRegionSetting()
Definition screen_capture_i.h:58
virtual int setFrameRateLLApiInternal(int rate)=0
virtual void SetAllowUseWGC(bool allow_use_wgc)
Definition screen_capture_i.h:61
virtual void GetCaptureToTexture(bool &capture_to_texture)
Definition screen_capture_i.h:64
virtual void SetVideoQoEPusher(std::weak_ptr< agora::rtc::VideoStatsEventsPusher > pusher)=0
virtual int CaptureMouseCursor(bool capture)=0
virtual void * getScreenCaptureSources(const IScreenCaptureSource::ScreenSourceListOption &option)
Definition screen_capture_i.h:80
virtual int SetContentType(agora::VideoContentSubType type)
Definition screen_capture_i.h:37
virtual ~IScreenCapturerEx()
Definition screen_capture_i.h:29
virtual void SetCaptureToTexture(bool capture_to_texture)
Definition screen_capture_i.h:63
SCREEN_CAPTURER_STATE
Definition screen_capture_i.h:24
@ SCREEN_CAPTURER_STARTED
Definition screen_capture_i.h:25
@ SCREEN_CAPTURER_STOPPED
Definition screen_capture_i.h:26
virtual int updateScreenCaptureRegionLLApiInternal(const rtc::Rectangle &rect)=0
virtual void ForcedUsingScreenCapture(bool using_screen_capture)
Definition screen_capture_i.h:68
virtual void GetAllowUseWGC(bool &allow_use_wgc)
Definition screen_capture_i.h:62
virtual int initWithMediaProjectionPermissionResultDataLLApiInternal(void *data, const VideoDimensions &dimensions)=0
virtual void SetHighLight(bool isHighLight, unsigned int color, int width)
Definition screen_capture_i.h:40
virtual int initWithDisplayIdLLApiInternal(int64_t displayId, const rtc::Rectangle &regionRect)=0
virtual int registerScreenCaptureObserver(IScreenCaptureObserver *observer)
Definition screen_capture_i.h:74
virtual bool FocusOnSelectedSource()=0
virtual int setScreenOrientationLLApiInternal(VIDEO_ORIENTATION orientation)=0
virtual int GetScreenDimensions(VideoDimensions &dimension)=0
virtual webrtc::DesktopCapturer::SourceId GetSourceId()=0
virtual void deinit()
Definition screen_capture_i.h:83
virtual void SetExcludeWindowList(const std::vector< void * > &window_list)=0
virtual void GetCaptureSource(bool &allow_magnification_api, bool &allow_directx_capturer)
Definition screen_capture_i.h:60
virtual void SetCaptureSource(bool allow_magnification_api, bool allow_directx_capturer)
Definition screen_capture_i.h:59
virtual int SetOutputDimensions(VideoDimensions dimension)
Definition screen_capture_i.h:36
virtual void RegisterCaptureDataCallback(std::weak_ptr<::rtc::VideoSinkInterface< webrtc::VideoFrame > > dataCallback)=0
virtual void attachStatsSpace(uint64_t stats_space)
Definition screen_capture_i.h:84
virtual int GetCaptureType()=0
Definition NGIAgoraScreenCapturer.h:19
Definition video_node_i.h:32
Definition AgoraExtensions.h:5
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 NGIAgoraExtensionScreenSource.h:97
Definition AgoraBase.h:2281
Definition IAgoraRtcEngine.h:869
Definition AgoraBase.h:1139