Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1696)

Unified Diff: remoting/host/client_session.cc

Issue 883673004: Cleanup VideoFramePump. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@rename_scheduler
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/client_session.h ('k') | remoting/host/desktop_capturer_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/client_session.cc
diff --git a/remoting/host/client_session.cc b/remoting/host/client_session.cc
index 1874f242104e39c28b58e3bab83cdb324ee0275b..cf6f129ea3eb5e16ddf951b5089d14db053228a7 100644
--- a/remoting/host/client_session.cc
+++ b/remoting/host/client_session.cc
@@ -17,9 +17,11 @@
#include "remoting/codec/video_encoder_vpx.h"
#include "remoting/host/audio_capturer.h"
#include "remoting/host/audio_scheduler.h"
+#include "remoting/host/desktop_capturer_proxy.h"
#include "remoting/host/desktop_environment.h"
#include "remoting/host/host_extension_session.h"
#include "remoting/host/input_injector.h"
+#include "remoting/host/mouse_shape_pump.h"
#include "remoting/host/screen_controls.h"
#include "remoting/host/screen_resolution.h"
#include "remoting/host/video_frame_pump.h"
@@ -29,6 +31,7 @@
#include "remoting/protocol/clipboard_thread_proxy.h"
#include "remoting/protocol/pairing_registry.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
+#include "third_party/webrtc/modules/desktop_capture/mouse_cursor_monitor.h"
// Default DPI to assume for old clients that use notifyClientDimensions.
const int kDefaultDPI = 96;
@@ -142,21 +145,21 @@ void ClientSession::ControlVideo(const protocol::VideoControl& video_control) {
VLOG(1) << "Received VideoControl (enable="
<< video_control.enable() << ")";
pause_video_ = !video_control.enable();
- if (video_frame_pump_.get())
+ if (video_frame_pump_)
video_frame_pump_->Pause(pause_video_);
}
if (video_control.has_lossless_encode()) {
VLOG(1) << "Received VideoControl (lossless_encode="
<< video_control.lossless_encode() << ")";
lossless_video_encode_ = video_control.lossless_encode();
- if (video_frame_pump_.get())
+ if (video_frame_pump_)
video_frame_pump_->SetLosslessEncode(lossless_video_encode_);
}
if (video_control.has_lossless_color()) {
VLOG(1) << "Received VideoControl (lossless_color="
<< video_control.lossless_color() << ")";
lossless_video_color_ = video_control.lossless_color();
- if (video_frame_pump_.get())
+ if (video_frame_pump_)
video_frame_pump_->SetLosslessColor(lossless_video_color_);
}
}
@@ -368,10 +371,9 @@ void ClientSession::OnConnectionClosed(
audio_scheduler_->Stop();
audio_scheduler_ = nullptr;
}
- if (video_frame_pump_.get()) {
- video_frame_pump_->Stop();
- video_frame_pump_ = nullptr;
- }
+
+ video_frame_pump_.reset();
+ mouse_shape_pump_.reset();
client_clipboard_factory_.InvalidateWeakPtrs();
input_injector_.reset();
@@ -434,10 +436,8 @@ void ClientSession::SetDisableInputs(bool disable_inputs) {
void ClientSession::ResetVideoPipeline() {
DCHECK(CalledOnValidThread());
- if (video_frame_pump_.get()) {
- video_frame_pump_->Stop();
- video_frame_pump_ = nullptr;
- }
+ mouse_shape_pump_.reset();
+ video_frame_pump_.reset();
// Create VideoEncoder and DesktopCapturer to match the session's video
// channel configuration.
@@ -452,24 +452,26 @@ void ClientSession::ResetVideoPipeline() {
if (!video_capturer || !video_encoder)
return;
- // Create a VideoFramePump to pump frames from the capturer to the client.
- video_frame_pump_ = new VideoFramePump(
- video_capture_task_runner_,
- video_encode_task_runner_,
- network_task_runner_,
- video_capturer.Pass(),
- desktop_environment_->CreateMouseCursorMonitor(),
- video_encoder.Pass(),
- connection_->client_stub(),
- &mouse_clamping_filter_);
+ // Create MouseShapePump to send mouse cursor shape.
+ mouse_shape_pump_.reset(
+ new MouseShapePump(video_capture_task_runner_,
+ desktop_environment_->CreateMouseCursorMonitor(),
+ connection_->client_stub()));
+
+ // Create a VideoFramePump to pump frames from the capturer to the client.'
+ //
+ // TODO(sergeyu): Move DesktopCapturerProxy creation to DesktopEnvironment.
+ // When using IpcDesktopCapturer the capture thread is not useful.
+ scoped_ptr<DesktopCapturerProxy> capturer_proxy(new DesktopCapturerProxy(
+ video_capture_task_runner_, video_capturer.Pass()));
+ video_frame_pump_.reset(
+ new VideoFramePump(video_encode_task_runner_, capturer_proxy.Pass(),
+ video_encoder.Pass(), &mouse_clamping_filter_));
// Apply video-control parameters to the new scheduler.
video_frame_pump_->SetLosslessEncode(lossless_video_encode_);
video_frame_pump_->SetLosslessColor(lossless_video_color_);
- // Start capturing the screen.
- video_frame_pump_->Start();
-
// Pause capturing if necessary.
video_frame_pump_->Pause(pause_video_);
}
« no previous file with comments | « remoting/host/client_session.h ('k') | remoting/host/desktop_capturer_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698