| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "media/remoting/remote_renderer_impl.h" | 5 #include "media/remoting/remote_renderer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 OnFatalError(remoting::RPC_INVALID); | 583 OnFatalError(remoting::RPC_INVALID); |
| 584 return; | 584 return; |
| 585 } | 585 } |
| 586 VLOG(2) << __func__ << ": Received RPC_RC_ONBUFFERINGSTATECHANGE with state=" | 586 VLOG(2) << __func__ << ": Received RPC_RC_ONBUFFERINGSTATECHANGE with state=" |
| 587 << message->rendererclient_onbufferingstatechange_rpc().state(); | 587 << message->rendererclient_onbufferingstatechange_rpc().state(); |
| 588 base::Optional<::media::BufferingState> state = | 588 base::Optional<::media::BufferingState> state = |
| 589 remoting::ToMediaBufferingState( | 589 remoting::ToMediaBufferingState( |
| 590 message->rendererclient_onbufferingstatechange_rpc().state()); | 590 message->rendererclient_onbufferingstatechange_rpc().state()); |
| 591 if (!state.has_value()) | 591 if (!state.has_value()) |
| 592 return; | 592 return; |
| 593 if (state == BufferingState::BUFFERING_HAVE_NOTHING) { |
| 594 is_waiting_for_buffering_ = true; |
| 595 } else if (is_waiting_for_buffering_) { |
| 596 is_waiting_for_buffering_ = false; |
| 597 ResetMeasurements(); |
| 598 } |
| 599 |
| 593 client_->OnBufferingStateChange(state.value()); | 600 client_->OnBufferingStateChange(state.value()); |
| 594 } | 601 } |
| 595 | 602 |
| 596 void RemoteRendererImpl::OnVideoNaturalSizeChange( | 603 void RemoteRendererImpl::OnVideoNaturalSizeChange( |
| 597 std::unique_ptr<remoting::pb::RpcMessage> message) { | 604 std::unique_ptr<remoting::pb::RpcMessage> message) { |
| 598 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 605 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 599 DCHECK(message); | 606 DCHECK(message); |
| 600 // Shutdown remoting session if receiving malformed RPC message. | 607 // Shutdown remoting session if receiving malformed RPC message. |
| 601 if (!message->has_rendererclient_onvideonatualsizechange_rpc()) { | 608 if (!message->has_rendererclient_onvideonatualsizechange_rpc()) { |
| 602 VLOG(1) << __func__ << " missing required RPC message"; | 609 VLOG(1) << __func__ << " missing required RPC message"; |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 interstitial_background_ = background_image.value(); | 727 interstitial_background_ = background_image.value(); |
| 721 canvas_size_ = canvas_size; | 728 canvas_size_ = canvas_size; |
| 722 PaintRemotingInterstitial(interstitial_background_, canvas_size_, | 729 PaintRemotingInterstitial(interstitial_background_, canvas_size_, |
| 723 interstitial_type, video_renderer_sink_); | 730 interstitial_type, video_renderer_sink_); |
| 724 } | 731 } |
| 725 | 732 |
| 726 void RemoteRendererImpl::OnMediaTimeUpdated() { | 733 void RemoteRendererImpl::OnMediaTimeUpdated() { |
| 727 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 734 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 728 if (!flush_cb_.is_null()) | 735 if (!flush_cb_.is_null()) |
| 729 return; // Don't manage and check the queue when Flush() is on-going. | 736 return; // Don't manage and check the queue when Flush() is on-going. |
| 737 if (is_waiting_for_buffering_) |
| 738 return; // Don't manage and check the queue when buffering is on-going. |
| 730 | 739 |
| 731 base::TimeTicks current_time = base::TimeTicks::Now(); | 740 base::TimeTicks current_time = base::TimeTicks::Now(); |
| 732 if (current_time < ignore_updates_until_time_) | 741 if (current_time < ignore_updates_until_time_) |
| 733 return; // Not stable yet. | 742 return; // Not stable yet. |
| 734 | 743 |
| 735 media_time_queue_.push_back( | 744 media_time_queue_.push_back( |
| 736 std::make_pair(current_time, current_media_time_)); | 745 std::make_pair(current_time, current_media_time_)); |
| 737 base::TimeDelta window_duration = | 746 base::TimeDelta window_duration = |
| 738 current_time - media_time_queue_.front().first; | 747 current_time - media_time_queue_.front().first; |
| 739 if (window_duration < kTrackingWindow) | 748 if (window_duration < kTrackingWindow) |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 857 kDataFlowPollPeriod.InSecondsF()) / | 866 kDataFlowPollPeriod.InSecondsF()) / |
| 858 kBytesPerKilobit; | 867 kBytesPerKilobit; |
| 859 DCHECK_GE(kilobits_per_second, 0); | 868 DCHECK_GE(kilobits_per_second, 0); |
| 860 const base::CheckedNumeric<int> checked_kbps = kilobits_per_second; | 869 const base::CheckedNumeric<int> checked_kbps = kilobits_per_second; |
| 861 metrics_recorder_.OnVideoRateEstimate( | 870 metrics_recorder_.OnVideoRateEstimate( |
| 862 checked_kbps.ValueOrDefault(std::numeric_limits<int>::max())); | 871 checked_kbps.ValueOrDefault(std::numeric_limits<int>::max())); |
| 863 } | 872 } |
| 864 } | 873 } |
| 865 | 874 |
| 866 } // namespace media | 875 } // namespace media |
| OLD | NEW |