• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 #ifndef WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_
11 #define WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_
12 
13 #include "webrtc/base/constructormagic.h"
14 #include "webrtc/system_wrappers/interface/scoped_refptr.h"
15 
16 #if defined(USE_X11)
17 #include "webrtc/modules/desktop_capture/x11/shared_x_display.h"
18 #endif
19 
20 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
21 #include "webrtc/modules/desktop_capture/mac/desktop_configuration_monitor.h"
22 #endif
23 
24 namespace webrtc {
25 
26 // An object that stores initialization parameters for screen and window
27 // capturers.
28 class DesktopCaptureOptions {
29  public:
30   // Creates an empty Options instance (e.g. without X display).
31   DesktopCaptureOptions();
32   ~DesktopCaptureOptions();
33 
34   // Returns instance of DesktopCaptureOptions with default parameters. On Linux
35   // also initializes X window connection. x_display() will be set to null if
36   // X11 connection failed (e.g. DISPLAY isn't set).
37   static DesktopCaptureOptions CreateDefault();
38 
39 #if defined(USE_X11)
x_display()40   SharedXDisplay* x_display() const { return x_display_; }
set_x_display(scoped_refptr<SharedXDisplay> x_display)41   void set_x_display(scoped_refptr<SharedXDisplay> x_display) {
42     x_display_ = x_display;
43   }
44 #endif
45 
46 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
configuration_monitor()47   DesktopConfigurationMonitor* configuration_monitor() const {
48     return configuration_monitor_;
49   }
set_configuration_monitor(scoped_refptr<DesktopConfigurationMonitor> m)50   void set_configuration_monitor(scoped_refptr<DesktopConfigurationMonitor> m) {
51     configuration_monitor_ = m;
52   }
53 #endif
54 
55   // Flag indicating that the capturer should use screen change notifications.
56   // Enables/disables use of XDAMAGE in the X11 capturer.
use_update_notifications()57   bool use_update_notifications() const { return use_update_notifications_; }
set_use_update_notifications(bool use_update_notifications)58   void set_use_update_notifications(bool use_update_notifications) {
59     use_update_notifications_ = use_update_notifications;
60   }
61 
62   // Flag indicating if desktop effects (e.g. Aero) should be disabled when the
63   // capturer is active. Currently used only on Windows.
disable_effects()64   bool disable_effects() const { return disable_effects_; }
set_disable_effects(bool disable_effects)65   void set_disable_effects(bool disable_effects) {
66     disable_effects_ = disable_effects;
67   }
68 
69 #if defined(WEBRTC_WIN)
allow_use_magnification_api()70   bool allow_use_magnification_api() const {
71     return allow_use_magnification_api_;
72   }
set_allow_use_magnification_api(bool allow)73   void set_allow_use_magnification_api(bool allow) {
74     allow_use_magnification_api_ = allow;
75   }
76 #endif
77 
78  private:
79 #if defined(USE_X11)
80   scoped_refptr<SharedXDisplay> x_display_;
81 #endif
82 
83 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
84   scoped_refptr<DesktopConfigurationMonitor> configuration_monitor_;
85 #endif
86 
87 #if defined(WEBRTC_WIN)
88   bool allow_use_magnification_api_;
89 #endif
90   bool use_update_notifications_;
91   bool disable_effects_;
92 };
93 
94 }  // namespace webrtc
95 
96 #endif  // WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_
97