Index: content/common/gpu/media/rendering_helper.cc |
diff --git a/content/common/gpu/media/rendering_helper.cc b/content/common/gpu/media/rendering_helper.cc |
index 00e85f9f0ecd0c44b1961175d1fc5ce248670712..d6621c92a56ae663e37736aa980587715562e953 100644 |
--- a/content/common/gpu/media/rendering_helper.cc |
+++ b/content/common/gpu/media/rendering_helper.cc |
@@ -75,7 +75,7 @@ VideoFrameTexture::~VideoFrameTexture() { |
} |
RenderingHelper::RenderedVideo::RenderedVideo() |
- : last_frame_rendered(false), is_flushing(false) { |
+ : last_frame_rendered(false), is_flushing(false), frames_to_drop(0) { |
} |
RenderingHelper::RenderedVideo::~RenderedVideo() { |
@@ -398,6 +398,11 @@ void RenderingHelper::QueueVideoFrame( |
RenderedVideo* video = &videos_[window_id]; |
DCHECK(!video->is_flushing); |
+ if (video->frames_to_drop > 0) { |
+ --video->frames_to_drop; |
acolwell GONE FROM CHROMIUM
2014/09/16 19:10:39
Is this frame dropping visible outside this code i
Owen Lin
2014/09/17 02:48:35
The code is only used in the vda_unittest. It won'
|
+ return; |
+ } |
+ |
// Pop the last frame if it has been rendered. |
if (video->last_frame_rendered) { |
// When last_frame_rendered is true, we should have only one pending frame. |
@@ -525,6 +530,9 @@ void RenderingHelper::RenderContent() { |
GLSetViewPort(video->render_area); |
RenderTexture(frame->texture_target(), frame->texture_id()); |
+ if (video->last_frame_rendered) |
Pawel Osciak
2014/09/15 14:09:34
Please note here that we won't start dropping befo
Owen Lin
2014/09/16 01:38:34
That's the expected behavior, we always wait for t
|
+ ++video->frames_to_drop; |
+ |
if (video->pending_frames.size() > 1 || video->is_flushing) { |
frames_to_be_returned.push_back(video->pending_frames.front()); |
video->pending_frames.pop(); |