Chromium Code Reviews| Index: remoting/client/chromoting_client.cc |
| diff --git a/remoting/client/chromoting_client.cc b/remoting/client/chromoting_client.cc |
| index 7c05d83e319fc3b8c47951956e72e7bda65b7d0c..3bdc7b6bb33ff896da8f79c48c948b8c4de5b7dd 100644 |
| --- a/remoting/client/chromoting_client.cc |
| +++ b/remoting/client/chromoting_client.cc |
| @@ -22,14 +22,6 @@ namespace remoting { |
| using protocol::AuthenticationMethod; |
| -ChromotingClient::QueuedVideoPacket::QueuedVideoPacket( |
| - scoped_ptr<VideoPacket> packet, const base::Closure& done) |
| - : packet(packet.release()), done(done) { |
| -} |
| - |
| -ChromotingClient::QueuedVideoPacket::~QueuedVideoPacket() { |
| -} |
| - |
| ChromotingClient::ChromotingClient( |
| const ClientConfig& config, |
| ClientContext* client_context, |
| @@ -42,8 +34,6 @@ ChromotingClient::ChromotingClient( |
| connection_(connection), |
| user_interface_(user_interface), |
| rectangle_decoder_(rectangle_decoder), |
| - packet_being_processed_(false), |
| - last_sequence_number_(0), |
| weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
| audio_decode_scheduler_.reset(new AudioDecodeScheduler( |
| client_context->main_task_runner(), |
| @@ -69,7 +59,8 @@ void ChromotingClient::Start( |
| connection_->Connect(xmpp_proxy, config_.local_jid, config_.host_jid, |
| config_.host_public_key, transport_factory.Pass(), |
| - authenticator.Pass(), this, this, this, this, |
| + authenticator.Pass(), this, this, this, |
| + rectangle_decoder_, |
| audio_decode_scheduler_.get()); |
| } |
| @@ -77,11 +68,7 @@ void ChromotingClient::Stop(const base::Closure& shutdown_task) { |
| DCHECK(task_runner_->BelongsToCurrentThread()); |
| // Drop all pending packets. |
| - while(!received_packets_.empty()) { |
| - delete received_packets_.front().packet; |
| - received_packets_.front().done.Run(); |
| - received_packets_.pop_front(); |
| - } |
| + rectangle_decoder_->DropAllPackets(); |
| connection_->Disconnect(base::Bind(&ChromotingClient::OnDisconnected, |
| weak_ptr_, shutdown_task)); |
|
Wez
2012/08/23 22:10:48
nit: Not related to this CL as such but does the c
kxing
2012/08/24 17:05:22
Not sure. I'll let someone do that in a separate C
|
| @@ -93,7 +80,7 @@ void ChromotingClient::OnDisconnected(const base::Closure& shutdown_task) { |
| ChromotingStats* ChromotingClient::GetStats() { |
| DCHECK(task_runner_->BelongsToCurrentThread()); |
| - return &stats_; |
| + return rectangle_decoder_->GetStats(); |
| } |
| void ChromotingClient::InjectClipboardEvent( |
| @@ -107,70 +94,6 @@ void ChromotingClient::SetCursorShape( |
| user_interface_->GetCursorShapeStub()->SetCursorShape(cursor_shape); |
| } |
| -void ChromotingClient::ProcessVideoPacket(scoped_ptr<VideoPacket> packet, |
| - const base::Closure& done) { |
| - DCHECK(task_runner_->BelongsToCurrentThread()); |
| - |
| - // If the video packet is empty then drop it. Empty packets are used to |
| - // maintain activity on the network. |
| - if (!packet->has_data() || packet->data().size() == 0) { |
| - done.Run(); |
| - return; |
| - } |
| - |
| - // Add one frame to the counter. |
| - stats_.video_frame_rate()->Record(1); |
| - |
| - // Record other statistics received from host. |
| - stats_.video_bandwidth()->Record(packet->data().size()); |
| - if (packet->has_capture_time_ms()) |
| - stats_.video_capture_ms()->Record(packet->capture_time_ms()); |
| - if (packet->has_encode_time_ms()) |
| - stats_.video_encode_ms()->Record(packet->encode_time_ms()); |
| - if (packet->has_client_sequence_number() && |
| - packet->client_sequence_number() > last_sequence_number_) { |
| - last_sequence_number_ = packet->client_sequence_number(); |
| - base::TimeDelta round_trip_latency = |
| - base::Time::Now() - |
| - base::Time::FromInternalValue(packet->client_sequence_number()); |
| - stats_.round_trip_ms()->Record(round_trip_latency.InMilliseconds()); |
| - } |
| - |
| - received_packets_.push_back(QueuedVideoPacket(packet.Pass(), done)); |
| - if (!packet_being_processed_) |
| - DispatchPacket(); |
| -} |
| - |
| -int ChromotingClient::GetPendingVideoPackets() { |
| - DCHECK(task_runner_->BelongsToCurrentThread()); |
| - return received_packets_.size(); |
| -} |
| - |
| -void ChromotingClient::DispatchPacket() { |
| - DCHECK(task_runner_->BelongsToCurrentThread()); |
| - CHECK(!packet_being_processed_); |
| - |
| - if (received_packets_.empty()) { |
| - // Nothing to do! |
| - return; |
| - } |
| - |
| - scoped_ptr<VideoPacket> packet(received_packets_.front().packet); |
| - received_packets_.front().packet = NULL; |
| - packet_being_processed_ = true; |
| - |
| - // Measure the latency between the last packet being received and presented. |
| - bool last_packet = (packet->flags() & VideoPacket::LAST_PACKET) != 0; |
| - base::Time decode_start; |
| - if (last_packet) |
| - decode_start = base::Time::Now(); |
| - |
| - rectangle_decoder_->DecodePacket( |
| - packet.Pass(), |
| - base::Bind(&ChromotingClient::OnPacketDone, base::Unretained(this), |
| - last_packet, decode_start)); |
| -} |
| - |
| void ChromotingClient::OnConnectionState( |
| protocol::ConnectionToHost::State state, |
| protocol::ErrorCode error) { |
| @@ -186,31 +109,6 @@ void ChromotingClient::OnConnectionReady(bool ready) { |
| user_interface_->OnConnectionReady(ready); |
| } |
| -void ChromotingClient::OnPacketDone(bool last_packet, |
| - base::Time decode_start) { |
| - if (!task_runner_->BelongsToCurrentThread()) { |
| - task_runner_->PostTask(FROM_HERE, base::Bind( |
| - &ChromotingClient::OnPacketDone, base::Unretained(this), |
| - last_packet, decode_start)); |
| - return; |
| - } |
| - |
| - // Record the latency between the final packet being received and |
| - // presented. |
| - if (last_packet) { |
| - stats_.video_decode_ms()->Record( |
| - (base::Time::Now() - decode_start).InMilliseconds()); |
| - } |
| - |
| - received_packets_.front().done.Run(); |
| - received_packets_.pop_front(); |
| - |
| - packet_being_processed_ = false; |
| - |
| - // Process the next video packet. |
| - DispatchPacket(); |
| -} |
| - |
| void ChromotingClient::Initialize() { |
| DCHECK(task_runner_->BelongsToCurrentThread()); |