Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Unified Diff: media/renderers/video_renderer_impl.cc

Issue 1135143002: Partially revert change to not post AttemptRead() every Render(). (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/renderers/video_renderer_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/renderers/video_renderer_impl.cc
diff --git a/media/renderers/video_renderer_impl.cc b/media/renderers/video_renderer_impl.cc
index 8d3f2ae0e41c75f9cbdc64fa902829294493961b..722438681254ddc4fa26a895a6f64e0540c15e68 100644
--- a/media/renderers/video_renderer_impl.cc
+++ b/media/renderers/video_renderer_impl.cc
@@ -239,13 +239,11 @@ scoped_refptr<VideoFrame> VideoRendererImpl::Render(
base::TimeDelta::FromMilliseconds(250));
}
- // To avoid unnecessary work, only post this task if there is a chance of work
- // to be done. AttemptRead() may still ignore this call for other reasons.
- if (!rendered_end_of_stream_ && !HaveReachedBufferingCap(effective_frames)) {
- task_runner_->PostTask(FROM_HERE,
- base::Bind(&VideoRendererImpl::AttemptRead,
- weak_factory_.GetWeakPtr()));
- }
+ // Always post this task, it will acquire new frames if necessary and since it
+ // happens on another thread, even if we don't have room in the queue now, by
+ // the time it runs (may be delayed up to 50ms for complex decodes!) we might.
+ task_runner_->PostTask(FROM_HERE, base::Bind(&VideoRendererImpl::AttemptRead,
+ weak_factory_.GetWeakPtr()));
return result;
}
@@ -685,22 +683,17 @@ void VideoRendererImpl::MaybeStopSinkAfterFirstPaint() {
bool VideoRendererImpl::HaveReachedBufferingCap() {
DCHECK(task_runner_->BelongsToCurrentThread());
- return HaveReachedBufferingCap(use_new_video_renderering_path_
- ? algorithm_->EffectiveFramesQueued()
- : 0);
-}
+ const size_t kMaxVideoFrames = limits::kMaxVideoFrames;
-bool VideoRendererImpl::HaveReachedBufferingCap(size_t effective_frames) {
if (use_new_video_renderering_path_) {
// When the display rate is less than the frame rate, the effective frames
// queued may be much smaller than the actual number of frames queued. Here
// we ensure that frames_queued() doesn't get excessive.
- return effective_frames >= static_cast<size_t>(limits::kMaxVideoFrames) ||
- algorithm_->frames_queued() >=
- static_cast<size_t>(3 * limits::kMaxVideoFrames);
+ return algorithm_->EffectiveFramesQueued() >= kMaxVideoFrames ||
+ algorithm_->frames_queued() >= 3 * kMaxVideoFrames;
}
- return ready_frames_.size() >= static_cast<size_t>(limits::kMaxVideoFrames);
+ return ready_frames_.size() >= kMaxVideoFrames;
}
void VideoRendererImpl::StartSink() {
« no previous file with comments | « media/renderers/video_renderer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698