commit | cf5753df778c10ec1034076d1f315fd27fad183d | [log] [tgz] |
---|---|---|
author | zijiehe <zijiehe@chromium.org> | Thu Apr 20 12:06:04 2017 -0700 |
committer | Commit bot <commit-bot@chromium.org> | Thu Apr 20 19:06:04 2017 +0000 |
tree | 7d5921afd1c1cba49c3ac2d144ce8d97525a93b5 | |
parent | 8490f8af2112f7dfd45ce4009b05e167b2cae565 [diff] |
Merge ScreenCapturerWinDirectx::frames_ and contexts_ The key change of this CL is to merge ScreenCapturerWinDirectx::frames_ and contexts_ into a new DxgiFrame class. So consumers of DxgiDuplicateController does not need to maintain two objects. DxgiDuplicateController::Duplicate*() functions are also updated to accept DxgiFrame parameter instead of SharedDesktopFrame + Context. The advantages of this change are, 1. Once the screen resolution changes or an existing monitor has been removed, DxgiFrame can automatically reset the frame without needing to return a capture failure. 2. Remove public APIs of DxgiDuplicatorController. Some public APIs are not needed anymore, i.e. consumers of DxgiDuplicatorController do not need to take care about these internal states anymore. It also helps to remove several lock acquiements. 3. Reduce the complexity of ScreenCapturerWinDirectx. But the disadvantage is, instead of a boolean value, DxgiDuplicateController::Duplicate*() now return an enumeration. Clients need to use the enumeration to decide whether the error can be recovered or not. This change also removes a duplicating logic in ScreenCapturerWinDirectx. i.e. ResolutionChangeDetector, DxgiDuplicateController now takes care of the screen resolution changes. I have verified the scenarios with and without SharedMemoryFactory, also the Desktop capture API example. So far no regression is detected. BUG=704205 Review-Url: https://codereview.webrtc.org/2788863006 Cr-Commit-Position: refs/heads/master@{#17795}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See http://www.webrtc.org/native-code/development for instructions on how to get started developing with the native code.