Index: webrtc/modules/desktop_capture/screen_capturer_win.cc |
diff --git a/webrtc/modules/desktop_capture/screen_capturer_win.cc b/webrtc/modules/desktop_capture/screen_capturer_win.cc |
index 22113a870df4fa4c54a140801aecf8c694206ecb..7e7fbaa38fd34b67055aef9f6d10db42d6833fca 100644 |
--- a/webrtc/modules/desktop_capture/screen_capturer_win.cc |
+++ b/webrtc/modules/desktop_capture/screen_capturer_win.cc |
@@ -14,6 +14,7 @@ |
#include <utility> |
#include "webrtc/modules/desktop_capture/desktop_capture_options.h" |
+#include "webrtc/modules/desktop_capture/win/screen_capturer_win_directx.h" |
#include "webrtc/modules/desktop_capture/win/screen_capturer_win_gdi.h" |
#include "webrtc/modules/desktop_capture/win/screen_capturer_win_magnifier.h" |
@@ -21,13 +22,18 @@ namespace webrtc { |
// static |
ScreenCapturer* ScreenCapturer::Create(const DesktopCaptureOptions& options) { |
- std::unique_ptr<ScreenCapturer> gdi_capturer( |
- new ScreenCapturerWinGdi(options)); |
+ std::unique_ptr<ScreenCapturer> capturer; |
+ if (options.allow_directx_capturer() && |
+ ScreenCapturerWinDirectx::Initialize()) { |
+ capturer.reset(new ScreenCapturerWinDirectx(options)); |
+ } else { |
+ capturer.reset(new ScreenCapturerWinGdi(options)); |
+ } |
if (options.allow_use_magnification_api()) |
- return new ScreenCapturerWinMagnifier(std::move(gdi_capturer)); |
+ return new ScreenCapturerWinMagnifier(std::move(capturer)); |
- return gdi_capturer.release(); |
+ return capturer.release(); |
} |
} // namespace webrtc |