Home | History | Annotate | Download | only in desktop_capture
      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)
     40   SharedXDisplay* x_display() const { return 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)
     47   DesktopConfigurationMonitor* configuration_monitor() const {
     48     return configuration_monitor_;
     49   }
     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.
     57   bool use_update_notifications() const { return 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.
     64   bool disable_effects() const { return disable_effects_; }
     65   void set_disable_effects(bool disable_effects) {
     66     disable_effects_ = disable_effects;
     67   }
     68 
     69 #if defined(WEBRTC_WIN)
     70   bool allow_use_magnification_api() const {
     71     return allow_use_magnification_api_;
     72   }
     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