Agora C++ API Reference for All Platforms
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 "NGIAgoraScreenCapturer.h"
10 #include "api/video/video_content_type.h"
11 #include "api/video/video_frame.h"
12 #include "api/video/video_sink_interface.h"
13 #include "modules/desktop_capture/desktop_capturer.h"
14 
15 namespace agora {
16 namespace rtc {
17 
18 class IScreenCaptureObserver;
19 
21 public:
25  };
26  public:
27  virtual ~IScreenCapturerEx() {}
28  virtual int StartCapture() = 0;
29  virtual int StopCapture() = 0;
31  std::weak_ptr<::rtc::VideoSinkInterface<webrtc::VideoFrame>> dataCallback) = 0;
32  virtual int CaptureMouseCursor(bool capture) = 0;
33  virtual int GetScreenDimensions(VideoDimensions& dimension) = 0;
34  virtual int SetOutputDimensions(VideoDimensions dimension) {return 0;};
35  virtual int SetContentType(agora::VideoContentSubType type) {return 0;};
36  virtual bool FocusOnSelectedSource() = 0;
37  virtual void SetHighLight(bool isHighLight, unsigned int color, int width) {}
38 
39 #if defined(_WIN32)
40  virtual int InitUsingLastRegionSetting() { return -ERR_NOT_SUPPORTED; }
41  virtual void SetCaptureSource(bool allow_magnification_api, bool allow_directx_capturer) {}
42  virtual void GetCaptureSource(bool& allow_magnification_api, bool& allow_directx_capturer) {}
43 #endif // _WIN32
44 
45 #if defined(_WIN32) || (defined(WEBRTC_MAC) && !defined(WEBRTC_IOS))
46  virtual void ForcedUsingScreenCapture(bool using_screen_capture) {}
47 
48  virtual void SetExcludeWindowList(const std::vector<void *>& window_list) = 0;
49  virtual webrtc::DesktopCapturer::SourceId GetSourceId() = 0;
50  virtual int GetCaptureType() = 0;
51 #endif // _WIN32 || (WEBRTC_MAC&&!WEBRTC_IOS)
53  return -ERR_NOT_SUPPORTED;
54  }
56  return -ERR_NOT_SUPPORTED;
57  }
58  virtual void* getScreenCaptureSources(int thumb_cx, int thumb_cy, int icon_cx, int icon_cy,
59  bool include_screen) {
60  return nullptr;
61  }
62  virtual void deinit() {};
63  virtual void attachStatsSpace(uint64_t stats_space) {}
64 };
65 
67 public:
69  (void) state;
70  }
71 protected:
73 };
74 
75 #if defined(__ANDROID__) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
76 class AudioPcmDataSinkInterface;
78  public:
79  virtual int startVideoCapture() = 0;
80  virtual int stopVideoCapture() = 0;
81  virtual int startAudioCapture() = 0;
82  virtual int stopAudioCapture() = 0;
83  virtual void addPcmDataSink(AudioPcmDataSinkInterface* sink) = 0;
84  virtual void removePcmDataSink(AudioPcmDataSinkInterface* sink) = 0;
85  virtual void deinit() {};
86 };
87 #endif
88 
89 } // namespace rtc
90 } // namespace agora
agora::rtc::IScreenCapturerEx::InitUsingLastRegionSetting
virtual int InitUsingLastRegionSetting()
Definition: screen_capture_i.h:40
agora::rtc::IScreenCapturerEx::GetCaptureType
virtual int GetCaptureType()=0
agora::rtc::IScreenCapturerEx::ForcedUsingScreenCapture
virtual void ForcedUsingScreenCapture(bool using_screen_capture)
Definition: screen_capture_i.h:46
agora::rtc::IScreenCaptureObserver
Definition: screen_capture_i.h:66
agora::rtc::IScreenCaptureObserver::onScreenCaptureStateChanged
virtual void onScreenCaptureStateChanged(IScreenCapturerEx::SCREEN_CAPTURER_STATE state)
Definition: screen_capture_i.h:68
agora::rtc::IScreenCapturerEx::SetHighLight
virtual void SetHighLight(bool isHighLight, unsigned int color, int width)
Definition: screen_capture_i.h:37
agora::rtc::IScreenCapturerEx::SCREEN_CAPTURER_STATE
SCREEN_CAPTURER_STATE
Definition: screen_capture_i.h:22
agora::rtc::IScreenCapturerEx::SCREEN_CAPTURER_STOPPED
@ SCREEN_CAPTURER_STOPPED
Definition: screen_capture_i.h:24
agora::rtc::IScreenCapturerEx::SetExcludeWindowList
virtual void SetExcludeWindowList(const std::vector< void * > &window_list)=0
agora::rtc::IScreenCapturerEx::SetOutputDimensions
virtual int SetOutputDimensions(VideoDimensions dimension)
Definition: screen_capture_i.h:34
agora::rtc::IScreenCapturerEx::RegisterCaptureDataCallback
virtual void RegisterCaptureDataCallback(std::weak_ptr<::rtc::VideoSinkInterface< webrtc::VideoFrame >> dataCallback)=0
agora::rtc::IScreenCapturerEx::unregisterScreenCaptureObserver
virtual int unregisterScreenCaptureObserver(IScreenCaptureObserver *observer)
Definition: screen_capture_i.h:55
agora::rtc::IScreenCapturerEx::deinit
virtual void deinit()
Definition: screen_capture_i.h:62
agora::rtc::IScreenCapturerEx::FocusOnSelectedSource
virtual bool FocusOnSelectedSource()=0
agora::rtc::IScreenCapturerEx::registerScreenCaptureObserver
virtual int registerScreenCaptureObserver(IScreenCaptureObserver *observer)
Definition: screen_capture_i.h:52
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::IScreenCapturerEx::getScreenCaptureSources
virtual void * getScreenCaptureSources(int thumb_cx, int thumb_cy, int icon_cx, int icon_cy, bool include_screen)
Definition: screen_capture_i.h:58
agora::rtc::IScreenCapturer
Definition: NGIAgoraScreenCapturer.h:18
agora::rtc::IScreenCaptureObserver::~IScreenCaptureObserver
virtual ~IScreenCaptureObserver()
Definition: screen_capture_i.h:72
agora::rtc::IScreenCapturerEx::CaptureMouseCursor
virtual int CaptureMouseCursor(bool capture)=0
agora::rtc::IScreenCapturerEx2::removePcmDataSink
virtual void removePcmDataSink(AudioPcmDataSinkInterface *sink)=0
agora::rtc::IScreenCapturerEx::StopCapture
virtual int StopCapture()=0
agora::rtc::IScreenCapturerEx::GetCaptureSource
virtual void GetCaptureSource(bool &allow_magnification_api, bool &allow_directx_capturer)
Definition: screen_capture_i.h:42
agora::rtc::IScreenCapturerEx::SetCaptureSource
virtual void SetCaptureSource(bool allow_magnification_api, bool allow_directx_capturer)
Definition: screen_capture_i.h:41
agora::rtc::IScreenCapturerEx2::startAudioCapture
virtual int startAudioCapture()=0
agora::rtc::IScreenCapturer2
Definition: NGIAgoraScreenCapturer.h:145
agora::ERR_NOT_SUPPORTED
@ ERR_NOT_SUPPORTED
Definition: AgoraBase.h:474
agora::rtc::IScreenCapturerEx2::deinit
virtual void deinit()
Definition: screen_capture_i.h:85
agora::rtc::IScreenCapturerEx::GetScreenDimensions
virtual int GetScreenDimensions(VideoDimensions &dimension)=0
agora::rtc::IScreenCapturerEx2::stopAudioCapture
virtual int stopAudioCapture()=0
agora::rtc::IScreenCapturerEx2
Definition: screen_capture_i.h:77
agora::rtc::IScreenCapturerEx::GetSourceId
virtual webrtc::DesktopCapturer::SourceId GetSourceId()=0
agora::rtc::IScreenCapturerEx::SetContentType
virtual int SetContentType(agora::VideoContentSubType type)
Definition: screen_capture_i.h:35
agora::rtc::IScreenCapturerEx2::stopVideoCapture
virtual int stopVideoCapture()=0
agora::rtc::IScreenCapturerEx::SCREEN_CAPTURER_STARTED
@ SCREEN_CAPTURER_STARTED
Definition: screen_capture_i.h:23
agora::rtc::IScreenCapturerEx
Definition: screen_capture_i.h:20
agora::rtc::IScreenCapturerEx::~IScreenCapturerEx
virtual ~IScreenCapturerEx()
Definition: screen_capture_i.h:27
agora::rtc::VideoDimensions
Definition: AgoraBase.h:1079
agora::rtc::IScreenCapturerEx::attachStatsSpace
virtual void attachStatsSpace(uint64_t stats_space)
Definition: screen_capture_i.h:63
agora::rtc::IScreenCapturerEx2::addPcmDataSink
virtual void addPcmDataSink(AudioPcmDataSinkInterface *sink)=0
rtc::VideoSinkInterface
Definition: video_node_i.h:29
agora::rtc::IScreenCapturerEx2::startVideoCapture
virtual int startVideoCapture()=0
rtc
Definition: video_node_i.h:25
agora::rtc::IScreenCapturerEx::StartCapture
virtual int StartCapture()=0