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

Unified Diff: content/renderer/media_recorder/video_track_recorder.cc

Issue 2764633002: cc/paint: Remove cc::PaintSurface. (Closed)
Patch Set: fix for relanding Created 3 years, 9 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
Index: content/renderer/media_recorder/video_track_recorder.cc
diff --git a/content/renderer/media_recorder/video_track_recorder.cc b/content/renderer/media_recorder/video_track_recorder.cc
index c18c3683c7573cdbe88d66df3cad5ad0737fa65f..80a124270dc9759d33184e53c3cd7de147e9e793 100644
--- a/content/renderer/media_recorder/video_track_recorder.cc
+++ b/content/renderer/media_recorder/video_track_recorder.cc
@@ -16,8 +16,7 @@
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "base/trace_event/trace_event.h"
-#include "cc/paint/paint_canvas.h"
-#include "cc/paint/paint_surface.h"
+#include "cc/paint/skia_paint_canvas.h"
#include "content/renderer/media/renderer_gpu_video_accelerator_factories.h"
#include "content/renderer/render_thread_impl.h"
#include "media/base/bind_to_current_loop.h"
@@ -242,7 +241,8 @@ class VideoTrackRecorder::Encoder : public base::RefCountedThreadSafe<Encoder> {
// Used to retrieve incoming opaque VideoFrames (i.e. VideoFrames backed by
// textures). Created on-demand on |main_task_runner_|.
std::unique_ptr<media::SkCanvasVideoRenderer> video_renderer_;
- sk_sp<cc::PaintSurface> surface_;
+ SkBitmap bitmap_;
+ std::unique_ptr<cc::PaintCanvas> canvas_;
DISALLOW_COPY_AND_ASSIGN(Encoder);
};
@@ -313,20 +313,21 @@ void VideoTrackRecorder::Encoder::RetrieveFrameOnMainThread(
kOpaque_SkAlphaType);
// Create |surface_| if it doesn't exist or incoming resolution has changed.
- if (!surface_ || surface_->width() != info.width() ||
- surface_->height() != info.height()) {
- surface_ = cc::PaintSurface::MakeRaster(info);
+ if (!canvas_ || canvas_->imageInfo().width() != info.width() ||
Khushal 2017/03/28 20:57:42 The bug was that the bitmap would have the pixels
+ canvas_->imageInfo().height() != info.height()) {
+ bitmap_.allocPixels(info);
+ canvas_ = base::MakeUnique<cc::SkiaPaintCanvas>(bitmap_);
}
if (!video_renderer_)
video_renderer_.reset(new media::SkCanvasVideoRenderer);
DCHECK(context_provider->ContextGL());
- video_renderer_->Copy(video_frame.get(), surface_->getCanvas(),
+ video_renderer_->Copy(video_frame.get(), canvas_.get(),
media::Context3D(context_provider->ContextGL(),
context_provider->GrContext()));
SkPixmap pixmap;
- if (!cc::ToPixmap(surface_->getCanvas(), &pixmap)) {
+ if (!bitmap_.peekPixels(&pixmap)) {
DLOG(ERROR) << "Error trying to map PaintSurface's pixels";
return;
}

Powered by Google App Engine
This is Rietveld 408576698