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

Unified Diff: content/renderer/media/html_video_element_capturer_source.cc

Issue 2018183002: HTMLVideoElementCapturer: use SkSurface::MakeRaster ISO skia::CreatePlatformCanvas (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
Index: content/renderer/media/html_video_element_capturer_source.cc
diff --git a/content/renderer/media/html_video_element_capturer_source.cc b/content/renderer/media/html_video_element_capturer_source.cc
index b45626c2fe9e735919c86e99b0cbd32b3ab3cd58..75e67efbee9211675b1f91c80d13efba63a4b1ad 100644
--- a/content/renderer/media/html_video_element_capturer_source.cc
+++ b/content/renderer/media/html_video_element_capturer_source.cc
@@ -18,6 +18,7 @@
#include "third_party/WebKit/public/platform/WebSize.h"
#include "third_party/libyuv/include/libyuv.h"
#include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkSurface.h"
#include "third_party/skia/include/core/SkXfermode.h"
namespace {
@@ -92,13 +93,9 @@ void HtmlVideoElementCapturerSource::StartCapture(
return;
}
const blink::WebSize resolution = web_media_player_->naturalSize();
- // TODO(mcasas): Don't use CreatePlatformCanvas here: http://crbug.com/615454.
- canvas_ = sk_sp<SkCanvas>(skia::CreatePlatformCanvas(resolution.width,
- resolution.height,
- true /* is_opaque */,
- 0 /* data */,
- skia::RETURN_NULL_ON_FAILURE));
- if (!canvas_){
+ surface_ =
+ SkSurface::MakeRasterN32Premul(resolution.width, resolution.height);
+ if (!surface_) {
running_callback_.Run(false);
return;
}
@@ -135,14 +132,15 @@ void HtmlVideoElementCapturerSource::sendNewFrame() {
const base::TimeTicks current_time = base::TimeTicks::Now();
const blink::WebSize resolution = web_media_player_->naturalSize();
+ SkCanvas* canvas = surface_->getCanvas();
web_media_player_->paint(
- canvas_.get(), blink::WebRect(0, 0, resolution.width, resolution.height),
+ canvas, blink::WebRect(0, 0, resolution.width, resolution.height),
0xFF /* alpha */, SkXfermode::kSrc_Mode);
- DCHECK_NE(kUnknown_SkColorType, canvas_->imageInfo().colorType());
- DCHECK_EQ(canvas_->imageInfo().width(), resolution.width);
- DCHECK_EQ(canvas_->imageInfo().height(), resolution.height);
+ DCHECK_NE(kUnknown_SkColorType, canvas->imageInfo().colorType());
+ DCHECK_EQ(canvas->imageInfo().width(), resolution.width);
+ DCHECK_EQ(canvas->imageInfo().height(), resolution.height);
- const SkBitmap bitmap = skia::ReadPixels(canvas_.get());
+ const SkBitmap bitmap = skia::ReadPixels(canvas);
Stephen White 2016/05/31 18:42:43 This may or may not be applicable, but note that n
mcasas 2016/05/31 18:49:36 Acknowledged. From this side, it'd be always a rea
DCHECK_NE(kUnknown_SkColorType, bitmap.colorType());
DCHECK(!bitmap.drawsNothing());
DCHECK(bitmap.getPixels());

Powered by Google App Engine
This is Rietveld 408576698