Change information
Commit message:
[crd host] Move capturer scheduling logic into DesktopCapturerWrapper
The scheduling logic is currently in WebrtcVideoStream, which lives in
the network process. This makes it difficult to support Wayland multi-
process hosts since PipeWire capturing is event-driven so no scheduler
is needed, but the network process doesn't know this info without making
an async call to the desktop process.
To fix this, this CL moves the scheduling logic into
DesktopCapturerWrapper, which adapts webrtc::DesktopCapturer into
remoting::DesktopCapturer, and gets rid of the SupportsFrameCallbacks()
method. It might possibly break chromotocol, since it has its own
scheduler.
Additional changes to make this work include:
1. Move DesktopCapturerProxy/Wrapper to remoting/protocol, since they
are needed by connection_unittest.cc
2. Update DesktopCapturerProxy to take remoting::DesktopCapturer instead
of the WebRTC one, so that the extra methods can be proxied.
Bug: 475611769
Change-Id: Iebef9fd3ab0657c92f3ca0058c94672d57d47330
Cr-Commit-Position: refs/heads/main@{#1588097}
Files:
- M remoting/host/BUILD.gn
- M remoting/host/basic_desktop_environment.cc
- M remoting/host/desktop_and_cursor_conditional_composer.cc
- M remoting/host/desktop_and_cursor_conditional_composer.h
- M remoting/host/fake_desktop_environment.cc
- M remoting/host/legacy_interaction_strategy.cc
- M remoting/host/linux/BUILD.gn
- M remoting/host/linux/gnome_interaction_strategy.cc
- M remoting/host/linux/gnome_interaction_strategy.h
- M remoting/host/linux/pipewire_desktop_capturer.cc
- M remoting/host/linux/pipewire_desktop_capturer.h
- M remoting/host/linux/portal_interaction_strategy.cc
- M remoting/protocol/BUILD.gn
- M remoting/protocol/connection_unittest.cc
- D remoting/protocol/desktop_capturer.cc
- M remoting/protocol/desktop_capturer.h
- R remoting/protocol/desktop_capturer_proxy.cc
- R remoting/protocol/desktop_capturer_proxy.h
- R remoting/protocol/desktop_capturer_wrapper.cc
- R remoting/protocol/desktop_capturer_wrapper.h
- D remoting/protocol/no_op_webrtc_frame_scheduler.cc
- D remoting/protocol/no_op_webrtc_frame_scheduler.h
- M remoting/protocol/webrtc_video_stream.cc
Change size: L
Delta: 23 files changed, 231 insertions(+), 288 deletions(-)
Branch: refs/heads/main
Submit Requirements:
Code-Review: +1 by Joe Downing