| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/client/software_video_renderer.h" | 5 #include "remoting/client/software_video_renderer.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 SchedulePaint(); | 311 SchedulePaint(); |
| 312 } | 312 } |
| 313 } | 313 } |
| 314 | 314 |
| 315 SoftwareVideoRenderer::SoftwareVideoRenderer( | 315 SoftwareVideoRenderer::SoftwareVideoRenderer( |
| 316 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 316 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 317 scoped_refptr<base::SingleThreadTaskRunner> decode_task_runner, | 317 scoped_refptr<base::SingleThreadTaskRunner> decode_task_runner, |
| 318 scoped_refptr<FrameConsumerProxy> consumer) | 318 scoped_refptr<FrameConsumerProxy> consumer) |
| 319 : decode_task_runner_(decode_task_runner), | 319 : decode_task_runner_(decode_task_runner), |
| 320 core_(new Core(main_task_runner, decode_task_runner, consumer)), | 320 core_(new Core(main_task_runner, decode_task_runner, consumer)), |
| 321 latest_sequence_number_(0), | 321 latest_event_timestamp_(0), |
| 322 weak_factory_(this) { | 322 weak_factory_(this) { |
| 323 DCHECK(CalledOnValidThread()); | 323 DCHECK(CalledOnValidThread()); |
| 324 } | 324 } |
| 325 | 325 |
| 326 SoftwareVideoRenderer::~SoftwareVideoRenderer() { | 326 SoftwareVideoRenderer::~SoftwareVideoRenderer() { |
| 327 DCHECK(CalledOnValidThread()); | 327 DCHECK(CalledOnValidThread()); |
| 328 decode_task_runner_->DeleteSoon(FROM_HERE, core_.release()); | 328 decode_task_runner_->DeleteSoon(FROM_HERE, core_.release()); |
| 329 } | 329 } |
| 330 | 330 |
| 331 void SoftwareVideoRenderer::OnSessionConfig( | 331 void SoftwareVideoRenderer::OnSessionConfig( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 354 | 354 |
| 355 // Add one frame to the counter. | 355 // Add one frame to the counter. |
| 356 stats_.video_frame_rate()->Record(1); | 356 stats_.video_frame_rate()->Record(1); |
| 357 | 357 |
| 358 // Record other statistics received from host. | 358 // Record other statistics received from host. |
| 359 stats_.video_bandwidth()->Record(packet->data().size()); | 359 stats_.video_bandwidth()->Record(packet->data().size()); |
| 360 if (packet->has_capture_time_ms()) | 360 if (packet->has_capture_time_ms()) |
| 361 stats_.video_capture_ms()->Record(packet->capture_time_ms()); | 361 stats_.video_capture_ms()->Record(packet->capture_time_ms()); |
| 362 if (packet->has_encode_time_ms()) | 362 if (packet->has_encode_time_ms()) |
| 363 stats_.video_encode_ms()->Record(packet->encode_time_ms()); | 363 stats_.video_encode_ms()->Record(packet->encode_time_ms()); |
| 364 if (packet->has_client_sequence_number() && | 364 if (packet->has_latest_event_timestamp() && |
| 365 packet->client_sequence_number() > latest_sequence_number_) { | 365 packet->latest_event_timestamp() > latest_event_timestamp_) { |
| 366 latest_sequence_number_ = packet->client_sequence_number(); | 366 latest_event_timestamp_ = packet->latest_event_timestamp(); |
| 367 base::TimeDelta round_trip_latency = | 367 base::TimeDelta round_trip_latency = |
| 368 base::Time::Now() - | 368 base::Time::Now() - |
| 369 base::Time::FromInternalValue(packet->client_sequence_number()); | 369 base::Time::FromInternalValue(packet->latest_event_timestamp()); |
| 370 stats_.round_trip_ms()->Record(round_trip_latency.InMilliseconds()); | 370 stats_.round_trip_ms()->Record(round_trip_latency.InMilliseconds()); |
| 371 } | 371 } |
| 372 | 372 |
| 373 // Measure the latency between the last packet being received and presented. | 373 // Measure the latency between the last packet being received and presented. |
| 374 base::Time decode_start = base::Time::Now(); | 374 base::Time decode_start = base::Time::Now(); |
| 375 | 375 |
| 376 base::Closure decode_done = base::Bind(&SoftwareVideoRenderer::OnPacketDone, | 376 base::Closure decode_done = base::Bind(&SoftwareVideoRenderer::OnPacketDone, |
| 377 weak_factory_.GetWeakPtr(), | 377 weak_factory_.GetWeakPtr(), |
| 378 decode_start, done); | 378 decode_start, done); |
| 379 | 379 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 DCHECK(CalledOnValidThread()); | 416 DCHECK(CalledOnValidThread()); |
| 417 | 417 |
| 418 // Record the latency between the packet being received and presented. | 418 // Record the latency between the packet being received and presented. |
| 419 stats_.video_decode_ms()->Record( | 419 stats_.video_decode_ms()->Record( |
| 420 (base::Time::Now() - decode_start).InMilliseconds()); | 420 (base::Time::Now() - decode_start).InMilliseconds()); |
| 421 | 421 |
| 422 done.Run(); | 422 done.Run(); |
| 423 } | 423 } |
| 424 | 424 |
| 425 } // namespace remoting | 425 } // namespace remoting |
| OLD | NEW |