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

Unified Diff: trunk/src/content/renderer/media/webmediaplayer_impl.cc

Issue 258383002: Revert 266822 "Remove dropped frame counting and task posting fr..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 8 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 | « trunk/src/content/renderer/media/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/content/renderer/media/webmediaplayer_impl.cc
===================================================================
--- trunk/src/content/renderer/media/webmediaplayer_impl.cc (revision 266950)
+++ trunk/src/content/renderer/media/webmediaplayer_impl.cc (working copy)
@@ -171,14 +171,12 @@
supports_save_(true),
starting_(false),
chunk_demuxer_(NULL),
- // Threaded compositing isn't enabled universally yet.
- compositor_task_runner_(
- RenderThreadImpl::current()->compositor_message_loop_proxy()
- ? RenderThreadImpl::current()->compositor_message_loop_proxy()
- : base::MessageLoopProxy::current()),
- compositor_(new VideoFrameCompositor(
+ compositor_( // Threaded compositing isn't enabled universally yet.
+ (RenderThreadImpl::current()->compositor_message_loop_proxy()
+ ? RenderThreadImpl::current()->compositor_message_loop_proxy()
+ : base::MessageLoopProxy::current()),
BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged),
- BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))),
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged)),
text_track_index_(0),
web_cdm_(NULL) {
media_log_->AddEvent(
@@ -234,8 +232,6 @@
base::Bind(&base::WaitableEvent::Signal, base::Unretained(&waiter)));
waiter.Wait();
- compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_);
-
// Let V8 know we are not using extra resources anymore.
if (incremented_externally_allocated_memory_) {
v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(
@@ -564,7 +560,7 @@
// - We haven't reached HAVE_CURRENT_DATA and need to paint black
// - We're painting to a canvas
// See http://crbug.com/341225 http://crbug.com/342621 for details.
- scoped_refptr<media::VideoFrame> video_frame = compositor_->GetCurrentFrame();
+ scoped_refptr<media::VideoFrame> video_frame = compositor_.GetCurrentFrame();
TRACE_EVENT0("media", "WebMediaPlayerImpl:paint");
gfx::Rect gfx_rect(rect);
@@ -598,7 +594,14 @@
DCHECK(main_loop_->BelongsToCurrentThread());
media::PipelineStatistics stats = pipeline_.GetStatistics();
- return stats.video_frames_dropped;
+
+ unsigned frames_dropped = stats.video_frames_dropped;
+
+ frames_dropped += const_cast<VideoFrameCompositor&>(compositor_)
+ .GetFramesDroppedBeforeCompositorWasNotified();
+
+ DCHECK_LE(frames_dropped, stats.video_frames_decoded);
+ return frames_dropped;
}
unsigned WebMediaPlayerImpl::audioDecodedByteCount() const {
@@ -623,7 +626,7 @@
unsigned int type,
bool premultiply_alpha,
bool flip_y) {
- scoped_refptr<media::VideoFrame> video_frame = compositor_->GetCurrentFrame();
+ scoped_refptr<media::VideoFrame> video_frame = compositor_.GetCurrentFrame();
TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture");
@@ -988,8 +991,8 @@
if (hasVideo()) {
DCHECK(!video_weblayer_);
- video_weblayer_.reset(
- new webkit::WebLayerImpl(cc::VideoLayer::Create(compositor_)));
+ video_weblayer_.reset(new webkit::WebLayerImpl(
+ cc::VideoLayer::Create(compositor_.GetVideoFrameProvider())));
video_weblayer_->setOpaque(opaque_);
client_->setWebLayer(video_weblayer_.get());
}
@@ -1306,11 +1309,7 @@
void WebMediaPlayerImpl::FrameReady(
const scoped_refptr<media::VideoFrame>& frame) {
- compositor_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&VideoFrameCompositor::UpdateCurrentFrame,
- base::Unretained(compositor_),
- frame));
+ compositor_.UpdateCurrentFrame(frame);
}
void WebMediaPlayerImpl::SetDecryptorReadyCB(
« no previous file with comments | « trunk/src/content/renderer/media/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698