Index: webrtc/modules/desktop_capture/desktop_capturer.h |
diff --git a/webrtc/modules/desktop_capture/desktop_capturer.h b/webrtc/modules/desktop_capture/desktop_capturer.h |
index d758946b843d1451189f053b8bf642e2adc5867f..6b9c820ce9df5ea3b739917db8e82671af0a0e86 100644 |
--- a/webrtc/modules/desktop_capture/desktop_capturer.h |
+++ b/webrtc/modules/desktop_capture/desktop_capturer.h |
@@ -12,8 +12,11 @@ |
#define WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURER_H_ |
#include <stddef.h> |
+#include <stdint.h> |
#include <memory> |
+#include <string> |
+#include <vector> |
#include "webrtc/modules/desktop_capture/desktop_frame.h" |
#include "webrtc/modules/desktop_capture/desktop_capture_types.h" |
@@ -21,6 +24,7 @@ |
namespace webrtc { |
+class DesktopCaptureOptions; |
class DesktopFrame; |
// Abstract interface for screen and window capturers. |
@@ -53,7 +57,20 @@ class DesktopCapturer { |
virtual ~Callback() {} |
}; |
- virtual ~DesktopCapturer() {} |
+ typedef intptr_t SourceId; |
+ |
+ struct Source { |
+ // The unique id to represent a Source of current DesktopCapturer. |
+ SourceId id; |
+ |
+ // Title of the window or screen in UTF-8 encoding, maybe empty. This field |
+ // should not be used to identify a source. |
+ std::string title; |
+ }; |
+ |
+ typedef std::vector<Source> SourceList; |
+ |
+ virtual ~DesktopCapturer(); |
// Called at the beginning of a capturing session. |callback| must remain |
// valid until capturer is destroyed. |
@@ -65,7 +82,7 @@ class DesktopCapturer { |
// Shared memory is currently supported only by some DesktopCapturer |
// implementations. |
virtual void SetSharedMemoryFactory( |
- std::unique_ptr<SharedMemoryFactory> shared_memory_factory) {} |
+ std::unique_ptr<SharedMemoryFactory> shared_memory_factory); |
// Captures next frame, and involve callback provided by Start() function. |
// Pending capture requests are canceled when DesktopCapturer is deleted. |
@@ -74,7 +91,25 @@ class DesktopCapturer { |
// Sets the window to be excluded from the captured image in the future |
// Capture calls. Used to exclude the screenshare notification window for |
// screen capturing. |
- virtual void SetExcludedWindow(WindowId window) {} |
+ virtual void SetExcludedWindow(WindowId window); |
+ |
+ // TODO(zijiehe): Following functions should be pure virtual. The default |
+ // implementations are for backward compatibility only. Remove default |
+ // implementations once all DesktopCapturer implementations in Chromium have |
+ // implemented these functions. |
+ |
+ // Gets a list of sources current capturer supports. Returns false in case of |
+ // a failure. |
+ virtual bool GetSourceList(SourceList* sources); |
+ |
+ // Selects a source to be captured. Returns false in case of a failure (e.g. |
+ // if there is no source with the specified type and id.) |
+ virtual bool SelectSource(SourceId id); |
+ |
+ // Brings the selected source to the front and sets the input focus on it. |
+ // Returns false in case of a failure or no source has been selected or the |
+ // implementation does not support this functionality. |
+ virtual bool FocusOnSelectedSource(); |
}; |
} // namespace webrtc |