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

Unified Diff: media/filters/skcanvas_video_renderer.cc

Issue 848683003: WebRTC: One WebRTC Video can have both SW and HW VideoFrame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/skcanvas_video_renderer.cc
diff --git a/media/filters/skcanvas_video_renderer.cc b/media/filters/skcanvas_video_renderer.cc
index da1c4de8febda03b7da00ae98eaa845a2b8edede..465d1f0a628cc7b11490b71be7dfabf2cea56863 100644
--- a/media/filters/skcanvas_video_renderer.cc
+++ b/media/filters/skcanvas_video_renderer.cc
@@ -429,10 +429,14 @@ void SkCanvasVideoRenderer::Paint(const scoped_refptr<VideoFrame>& video_frame,
if (accelerated_last_frame_.isNull() ||
video_frame->timestamp() != accelerated_last_frame_timestamp_) {
if (video_frame->format() == VideoFrame::NATIVE_TEXTURE) {
+ // Draw HW Video on HW Canvas.
DCHECK(context_3d.gl);
DCHECK(context_3d.gr_context);
- // Draw HW Video on HW Canvas.
- DCHECK(!accelerated_generator_);
+ if (accelerated_generator_) {
+ // Reset SkBitmap used in SWVideo-to-HWCanvas path.
+ accelerated_last_frame_.reset();
+ accelerated_generator_ = nullptr;
+ }
if (!CopyVideoFrameTextureToSkBitmapTexture(
video_frame.get(), &accelerated_last_frame_, context_3d)) {
NOTREACHED();
@@ -440,6 +444,10 @@ void SkCanvasVideoRenderer::Paint(const scoped_refptr<VideoFrame>& video_frame,
}
} else {
// Draw SW Video on HW Canvas.
+ if (!accelerated_generator_ && !accelerated_last_frame_.isNull()) {
+ // Reset SkBitmap used in HWVideo-to-HWCanvas path.
+ accelerated_last_frame_.reset();
DaleCurtis 2015/01/12 20:47:01 Can you explain why you need these conditionals? I
dshwang 2015/01/13 08:38:22 That's good question. It's because allocating acce
+ }
accelerated_generator_ = new VideoImageGenerator(video_frame);
// Note: This takes ownership of |accelerated_generator_|.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698