| Index: remoting/client/software_video_renderer.cc
|
| diff --git a/remoting/client/software_video_renderer.cc b/remoting/client/software_video_renderer.cc
|
| index 4329920ab44fe4ea33233934c01e0a029b17f039..930087dcf9f985ec84d4a7f1a4da3110f5452ab3 100644
|
| --- a/remoting/client/software_video_renderer.cc
|
| +++ b/remoting/client/software_video_renderer.cc
|
| @@ -46,18 +46,17 @@ std::unique_ptr<webrtc::DesktopFrame> DoDecodeFrame(
|
| } // namespace
|
|
|
| SoftwareVideoRenderer::SoftwareVideoRenderer(protocol::FrameConsumer* consumer)
|
| - : consumer_(consumer),
|
| - weak_factory_(this) {
|
| + : consumer_(consumer), weak_factory_(this) {
|
| thread_checker_.DetachFromThread();
|
| }
|
|
|
| SoftwareVideoRenderer::SoftwareVideoRenderer(
|
| scoped_refptr<base::SingleThreadTaskRunner> decode_task_runner,
|
| protocol::FrameConsumer* consumer,
|
| - protocol::PerformanceTracker* perf_tracker)
|
| + protocol::FrameStatsConsumer* stats_consumer)
|
| : decode_task_runner_(decode_task_runner),
|
| consumer_(consumer),
|
| - perf_tracker_(perf_tracker),
|
| + stats_consumer_(stats_consumer),
|
| weak_factory_(this) {}
|
|
|
| SoftwareVideoRenderer::~SoftwareVideoRenderer() {
|
| @@ -67,10 +66,10 @@ SoftwareVideoRenderer::~SoftwareVideoRenderer() {
|
|
|
| bool SoftwareVideoRenderer::Initialize(
|
| const ClientContext& client_context,
|
| - protocol::PerformanceTracker* perf_tracker) {
|
| + protocol::FrameStatsConsumer* stats_consumer) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| decode_task_runner_ = client_context.decode_task_runner();
|
| - perf_tracker_ = perf_tracker;
|
| + stats_consumer_ = stats_consumer;
|
| return true;
|
| }
|
|
|
| @@ -105,6 +104,10 @@ protocol::FrameConsumer* SoftwareVideoRenderer::GetFrameConsumer() {
|
| return consumer_;
|
| }
|
|
|
| +protocol::FrameStatsConsumer* SoftwareVideoRenderer::GetFrameStatsConsumer() {
|
| + return stats_consumer_;
|
| +}
|
| +
|
| void SoftwareVideoRenderer::ProcessVideoPacket(
|
| std::unique_ptr<VideoPacket> packet,
|
| const base::Closure& done) {
|
| @@ -112,15 +115,17 @@ void SoftwareVideoRenderer::ProcessVideoPacket(
|
|
|
| base::ScopedClosureRunner done_runner(done);
|
|
|
| - std::unique_ptr<protocol::FrameStats> frame_stats(new protocol::FrameStats(
|
| - protocol::FrameStats::GetForVideoPacket(*packet)));
|
| + std::unique_ptr<protocol::FrameStats> frame_stats(new protocol::FrameStats());
|
| + frame_stats->host_stats =
|
| + protocol::HostFrameStats::GetForVideoPacket(*packet);
|
| + frame_stats->client_stats.time_received = base::TimeTicks::Now();
|
|
|
| // If the video packet is empty then there is nothing to decode. Empty packets
|
| // are used to maintain activity on the network. Stats for such packets still
|
| // need to be reported.
|
| if (!packet->has_data() || packet->data().size() == 0) {
|
| - if (perf_tracker_)
|
| - perf_tracker_->RecordVideoFrameStats(*frame_stats);
|
| + if (stats_consumer_)
|
| + stats_consumer_->OnVideoFrameStats(*frame_stats);
|
| return;
|
| }
|
|
|
| @@ -162,8 +167,7 @@ void SoftwareVideoRenderer::RenderFrame(
|
| std::unique_ptr<webrtc::DesktopFrame> frame) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| - stats->time_decoded = base::TimeTicks::Now();
|
| -
|
| + stats->client_stats.time_decoded = base::TimeTicks::Now();
|
| if (!frame) {
|
| if (!done.is_null())
|
| done.Run();
|
| @@ -181,9 +185,9 @@ void SoftwareVideoRenderer::OnFrameRendered(
|
| const base::Closure& done) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| - stats->time_rendered = base::TimeTicks::Now();
|
| - if (perf_tracker_)
|
| - perf_tracker_->RecordVideoFrameStats(*stats);
|
| + stats->client_stats.time_rendered = base::TimeTicks::Now();
|
| + if (stats_consumer_)
|
| + stats_consumer_->OnVideoFrameStats(*stats);
|
|
|
| if (!done.is_null())
|
| done.Run();
|
|
|