| Index: remoting/host/screen_recorder.cc
|
| diff --git a/remoting/host/session_manager.cc b/remoting/host/screen_recorder.cc
|
| similarity index 80%
|
| rename from remoting/host/session_manager.cc
|
| rename to remoting/host/screen_recorder.cc
|
| index ebd10614544c4641b3943b1d69751b8b2c479513..7d954e76d18a00044da0d89b5f5179186c1d0819 100644
|
| --- a/remoting/host/session_manager.cc
|
| +++ b/remoting/host/screen_recorder.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "remoting/host/session_manager.h"
|
| +#include "remoting/host/screen_recorder.h"
|
|
|
| #include <algorithm>
|
|
|
| @@ -38,7 +38,7 @@ static const int kSlowDownFactor = 10;
|
| // capture rate.
|
| static const int kRateDividers[] = {1, 2, 4, 8, 16};
|
|
|
| -SessionManager::SessionManager(
|
| +ScreenRecorder::ScreenRecorder(
|
| MessageLoop* capture_loop,
|
| MessageLoop* encode_loop,
|
| MessageLoop* network_loop,
|
| @@ -59,63 +59,63 @@ SessionManager::SessionManager(
|
| DCHECK(network_loop_);
|
| }
|
|
|
| -SessionManager::~SessionManager() {
|
| +ScreenRecorder::~ScreenRecorder() {
|
| connections_.clear();
|
| }
|
|
|
| // Public methods --------------------------------------------------------------
|
|
|
| -void SessionManager::Start() {
|
| +void ScreenRecorder::Start() {
|
| capture_loop_->PostTask(
|
| - FROM_HERE, NewTracedMethod(this, &SessionManager::DoStart));
|
| + FROM_HERE, NewTracedMethod(this, &ScreenRecorder::DoStart));
|
| }
|
|
|
| -void SessionManager::Pause() {
|
| +void ScreenRecorder::Pause() {
|
| capture_loop_->PostTask(
|
| - FROM_HERE, NewTracedMethod(this, &SessionManager::DoPause));
|
| + FROM_HERE, NewTracedMethod(this, &ScreenRecorder::DoPause));
|
| }
|
|
|
| -void SessionManager::SetMaxRate(double rate) {
|
| +void ScreenRecorder::SetMaxRate(double rate) {
|
| capture_loop_->PostTask(
|
| - FROM_HERE, NewTracedMethod(this, &SessionManager::DoSetMaxRate, rate));
|
| + FROM_HERE, NewTracedMethod(this, &ScreenRecorder::DoSetMaxRate, rate));
|
| }
|
|
|
| -void SessionManager::AddConnection(
|
| +void ScreenRecorder::AddConnection(
|
| scoped_refptr<ConnectionToClient> connection) {
|
| // Gets the init information for the connection.
|
| capture_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoGetInitInfo, connection));
|
| + NewTracedMethod(this, &ScreenRecorder::DoGetInitInfo, connection));
|
| }
|
|
|
| -void SessionManager::RemoveConnection(
|
| +void ScreenRecorder::RemoveConnection(
|
| scoped_refptr<ConnectionToClient> connection) {
|
| network_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoRemoveClient, connection));
|
| + NewTracedMethod(this, &ScreenRecorder::DoRemoveClient, connection));
|
| }
|
|
|
| -void SessionManager::RemoveAllConnections() {
|
| +void ScreenRecorder::RemoveAllConnections() {
|
| network_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoRemoveAllClients));
|
| + NewTracedMethod(this, &ScreenRecorder::DoRemoveAllClients));
|
| }
|
|
|
| // Private accessors -----------------------------------------------------------
|
|
|
| -Capturer* SessionManager::capturer() {
|
| +Capturer* ScreenRecorder::capturer() {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
| return capturer_.get();
|
| }
|
|
|
| -Encoder* SessionManager::encoder() {
|
| +Encoder* ScreenRecorder::encoder() {
|
| DCHECK_EQ(encode_loop_, MessageLoop::current());
|
| return encoder_.get();
|
| }
|
|
|
| // Capturer thread -------------------------------------------------------------
|
|
|
| -void SessionManager::DoStart() {
|
| +void ScreenRecorder::DoStart() {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
|
|
| if (started_) {
|
| @@ -129,10 +129,10 @@ void SessionManager::DoStart() {
|
| // Starts the rate regulation.
|
| network_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoStartRateControl));
|
| + NewTracedMethod(this, &ScreenRecorder::DoStartRateControl));
|
| }
|
|
|
| -void SessionManager::DoPause() {
|
| +void ScreenRecorder::DoPause() {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
|
|
| if (!started_) {
|
| @@ -145,10 +145,10 @@ void SessionManager::DoPause() {
|
| // Pause the rate regulation.
|
| network_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoPauseRateControl));
|
| + NewTracedMethod(this, &ScreenRecorder::DoPauseRateControl));
|
| }
|
|
|
| -void SessionManager::DoSetRate(double rate) {
|
| +void ScreenRecorder::DoSetRate(double rate) {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
| if (rate == rate_)
|
| return;
|
| @@ -162,7 +162,7 @@ void SessionManager::DoSetRate(double rate) {
|
| ScheduleNextCapture();
|
| }
|
|
|
| -void SessionManager::DoSetMaxRate(double max_rate) {
|
| +void ScreenRecorder::DoSetMaxRate(double max_rate) {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
|
|
| // TODO(hclam): Should also check for small epsilon.
|
| @@ -174,7 +174,7 @@ void SessionManager::DoSetMaxRate(double max_rate) {
|
| }
|
| }
|
|
|
| -void SessionManager::ScheduleNextCapture() {
|
| +void ScreenRecorder::ScheduleNextCapture() {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
|
|
| ScopedTracer tracer("capture");
|
| @@ -188,11 +188,11 @@ void SessionManager::ScheduleNextCapture() {
|
| static_cast<int>(base::Time::kMillisecondsPerSecond / rate_));
|
| capture_loop_->PostDelayedTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoCapture),
|
| + NewTracedMethod(this, &ScreenRecorder::DoCapture),
|
| interval.InMilliseconds());
|
| }
|
|
|
| -void SessionManager::DoCapture() {
|
| +void ScreenRecorder::DoCapture() {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
| // Make sure we have at most two oustanding recordings. We can simply return
|
| // if we can't make a capture now, the next capture will be started by the
|
| @@ -224,10 +224,10 @@ void SessionManager::DoCapture() {
|
| DCHECK(capturer());
|
|
|
| capturer()->CaptureInvalidRects(
|
| - NewCallback(this, &SessionManager::CaptureDoneCallback));
|
| + NewCallback(this, &ScreenRecorder::CaptureDoneCallback));
|
| }
|
|
|
| -void SessionManager::CaptureDoneCallback(
|
| +void ScreenRecorder::CaptureDoneCallback(
|
| scoped_refptr<CaptureData> capture_data) {
|
| // TODO(hclam): There is a bug if the capturer doesn't produce any dirty
|
| // rects.
|
| @@ -235,10 +235,10 @@ void SessionManager::CaptureDoneCallback(
|
| TraceContext::tracer()->PrintString("Capture Done");
|
| encode_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoEncode, capture_data));
|
| + NewTracedMethod(this, &ScreenRecorder::DoEncode, capture_data));
|
| }
|
|
|
| -void SessionManager::DoFinishEncode() {
|
| +void ScreenRecorder::DoFinishEncode() {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
|
|
| // Decrement the number of recording in process since we have completed
|
| @@ -251,7 +251,7 @@ void SessionManager::DoFinishEncode() {
|
| DoCapture();
|
| }
|
|
|
| -void SessionManager::DoGetInitInfo(
|
| +void ScreenRecorder::DoGetInitInfo(
|
| scoped_refptr<ConnectionToClient> connection) {
|
| DCHECK_EQ(capture_loop_, MessageLoop::current());
|
|
|
| @@ -260,12 +260,12 @@ void SessionManager::DoGetInitInfo(
|
| // Add the client to the list so it can receive update stream.
|
| network_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoAddClient, connection));
|
| + NewTracedMethod(this, &ScreenRecorder::DoAddClient, connection));
|
| }
|
|
|
| // Network thread --------------------------------------------------------------
|
|
|
| -void SessionManager::DoStartRateControl() {
|
| +void ScreenRecorder::DoStartRateControl() {
|
| DCHECK_EQ(network_loop_, MessageLoop::current());
|
|
|
| if (rate_control_started_) {
|
| @@ -276,7 +276,7 @@ void SessionManager::DoStartRateControl() {
|
| ScheduleNextRateControl();
|
| }
|
|
|
| -void SessionManager::DoPauseRateControl() {
|
| +void ScreenRecorder::DoPauseRateControl() {
|
| DCHECK_EQ(network_loop_, MessageLoop::current());
|
|
|
| if (!rate_control_started_) {
|
| @@ -286,15 +286,15 @@ void SessionManager::DoPauseRateControl() {
|
| rate_control_started_ = false;
|
| }
|
|
|
| -void SessionManager::ScheduleNextRateControl() {
|
| +void ScreenRecorder::ScheduleNextRateControl() {
|
| ScopedTracer tracer("Rate Control");
|
| network_loop_->PostDelayedTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoRateControl),
|
| + NewTracedMethod(this, &ScreenRecorder::DoRateControl),
|
| kRateControlInterval.InMilliseconds());
|
| }
|
|
|
| -void SessionManager::DoRateControl() {
|
| +void ScreenRecorder::DoRateControl() {
|
| DCHECK_EQ(network_loop_, MessageLoop::current());
|
|
|
| // If we have been paused then shutdown the rate regulation loop.
|
| @@ -325,11 +325,11 @@ void SessionManager::DoRateControl() {
|
| // Then set the rate.
|
| capture_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoSetRate, new_rate));
|
| + NewTracedMethod(this, &ScreenRecorder::DoSetRate, new_rate));
|
| ScheduleNextRateControl();
|
| }
|
|
|
| -void SessionManager::DoSendVideoPacket(VideoPacket* packet) {
|
| +void ScreenRecorder::DoSendVideoPacket(VideoPacket* packet) {
|
| DCHECK_EQ(network_loop_, MessageLoop::current());
|
|
|
| TraceContext::tracer()->PrintString("DoSendUpdate");
|
| @@ -343,14 +343,14 @@ void SessionManager::DoSendVideoPacket(VideoPacket* packet) {
|
| TraceContext::tracer()->PrintString("DoSendUpdate done");
|
| }
|
|
|
| -void SessionManager::DoAddClient(scoped_refptr<ConnectionToClient> connection) {
|
| +void ScreenRecorder::DoAddClient(scoped_refptr<ConnectionToClient> connection) {
|
| DCHECK_EQ(network_loop_, MessageLoop::current());
|
|
|
| // TODO(hclam): Force a full frame for next encode.
|
| connections_.push_back(connection);
|
| }
|
|
|
| -void SessionManager::DoRemoveClient(
|
| +void ScreenRecorder::DoRemoveClient(
|
| scoped_refptr<ConnectionToClient> connection) {
|
| DCHECK_EQ(network_loop_, MessageLoop::current());
|
|
|
| @@ -362,7 +362,7 @@ void SessionManager::DoRemoveClient(
|
| }
|
| }
|
|
|
| -void SessionManager::DoRemoveAllClients() {
|
| +void ScreenRecorder::DoRemoveAllClients() {
|
| DCHECK_EQ(network_loop_, MessageLoop::current());
|
|
|
| // Clear the list of connections.
|
| @@ -371,7 +371,7 @@ void SessionManager::DoRemoveAllClients() {
|
|
|
| // Encoder thread --------------------------------------------------------------
|
|
|
| -void SessionManager::DoEncode(
|
| +void ScreenRecorder::DoEncode(
|
| scoped_refptr<CaptureData> capture_data) {
|
| DCHECK_EQ(encode_loop_, MessageLoop::current());
|
| TraceContext::tracer()->PrintString("DoEncode called");
|
| @@ -379,7 +379,7 @@ void SessionManager::DoEncode(
|
| // Early out if there's nothing to encode.
|
| if (!capture_data->dirty_rects().size()) {
|
| capture_loop_->PostTask(
|
| - FROM_HERE, NewTracedMethod(this, &SessionManager::DoFinishEncode));
|
| + FROM_HERE, NewTracedMethod(this, &ScreenRecorder::DoFinishEncode));
|
| return;
|
| }
|
|
|
| @@ -387,11 +387,11 @@ void SessionManager::DoEncode(
|
| // added.
|
| TraceContext::tracer()->PrintString("Encode start");
|
| encoder_->Encode(capture_data, false,
|
| - NewCallback(this, &SessionManager::EncodeDataAvailableTask));
|
| + NewCallback(this, &ScreenRecorder::EncodeDataAvailableTask));
|
| TraceContext::tracer()->PrintString("Encode Done");
|
| }
|
|
|
| -void SessionManager::EncodeDataAvailableTask(VideoPacket* packet) {
|
| +void ScreenRecorder::EncodeDataAvailableTask(VideoPacket* packet) {
|
| DCHECK_EQ(encode_loop_, MessageLoop::current());
|
|
|
| bool last = (packet->flags() & VideoPacket::LAST_PACKET) != 0;
|
| @@ -402,11 +402,11 @@ void SessionManager::EncodeDataAvailableTask(VideoPacket* packet) {
|
| // task. The ownership will eventually pass to the ConnectionToClients.
|
| network_loop_->PostTask(
|
| FROM_HERE,
|
| - NewTracedMethod(this, &SessionManager::DoSendVideoPacket, packet));
|
| + NewTracedMethod(this, &ScreenRecorder::DoSendVideoPacket, packet));
|
|
|
| if (last) {
|
| capture_loop_->PostTask(
|
| - FROM_HERE, NewTracedMethod(this, &SessionManager::DoFinishEncode));
|
| + FROM_HERE, NewTracedMethod(this, &ScreenRecorder::DoFinishEncode));
|
| }
|
| }
|
|
|
|
|