| Index: media/filters/video_renderer_algorithm.cc
|
| diff --git a/media/filters/video_renderer_algorithm.cc b/media/filters/video_renderer_algorithm.cc
|
| index 71783cf8ca9d80ba76aa1c1e107dcee03e9a4c0f..38915ddf57e649a6775dfde25b0cb14bdb311cbb 100644
|
| --- a/media/filters/video_renderer_algorithm.cc
|
| +++ b/media/filters/video_renderer_algorithm.cc
|
| @@ -685,6 +685,24 @@ void VideoRendererAlgorithm::UpdateEffectiveFramesQueued() {
|
| return;
|
| }
|
|
|
| + // Determine the lower bound of the number of effective queues first.
|
| + // Normally, this is 0.
|
| + size_t min_frames_queued = 0;
|
| +
|
| + // If frame dropping is disabled, the lower bound is the number of frames
|
| + // that were not rendered yet.
|
| + if (frame_dropping_disabled_) {
|
| + min_frames_queued = std::count_if(
|
| + frame_queue_.cbegin(), frame_queue_.cend(),
|
| + [](const ReadyFrame& frame) { return frame.render_count == 0; });
|
| + }
|
| +
|
| + // Next, see if can report more frames as queued.
|
| + effective_frames_queued_ =
|
| + std::max(min_frames_queued, CountEffectiveFramesQueued());
|
| +}
|
| +
|
| +size_t VideoRendererAlgorithm::CountEffectiveFramesQueued() const {
|
| // If we don't have cadence, subtract off any frames which are before
|
| // the last rendered frame or are past their expected rendering time.
|
| if (!cadence_estimator_.has_cadence()) {
|
| @@ -694,16 +712,13 @@ void VideoRendererAlgorithm::UpdateEffectiveFramesQueued() {
|
| if (frame.end_time.is_null() || frame.end_time > last_deadline_max_)
|
| break;
|
| }
|
| - effective_frames_queued_ = frame_queue_.size() - expired_frames;
|
| - return;
|
| + return frame_queue_.size() - expired_frames;
|
| }
|
|
|
| // Find the first usable frame to start counting from.
|
| const int start_index = FindBestFrameByCadence(nullptr);
|
| - if (start_index < 0) {
|
| - effective_frames_queued_ = 0;
|
| - return;
|
| - }
|
| + if (start_index < 0)
|
| + return 0;
|
|
|
| const base::TimeTicks minimum_start_time =
|
| last_deadline_max_ - max_acceptable_drift_;
|
| @@ -715,8 +730,7 @@ void VideoRendererAlgorithm::UpdateEffectiveFramesQueued() {
|
| ++renderable_frame_count;
|
| }
|
| }
|
| -
|
| - effective_frames_queued_ = renderable_frame_count;
|
| + return renderable_frame_count;
|
| }
|
|
|
| } // namespace media
|
|
|