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

Unified Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 12090109: Tab Capture: Backing store readbacks to YV12 VideoFrames. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch for review. Created 7 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
Index: content/browser/renderer_host/render_widget_host_impl.cc
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 028aa9b35ed8580fe85aa7bde558117300d66be9..0a759e7aec99cfdb29b8d27b96687520b87e1ac1 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -601,6 +601,35 @@ void RenderWidgetHostImpl::CopyFromBackingStore(
callback.Run(result, output.GetBitmap());
}
+bool RenderWidgetHostImpl::CanCopyToVideoFrame() const {
+#if !defined(OS_WIN)
+ return false;
+#else
+ return view_ && is_accelerated_compositing_active_;
+#endif
+}
+
+void RenderWidgetHostImpl::CopyFromBackingStoreToVideoFrame(
+ const gfx::Rect& src_subrect,
+ const gfx::Size& dst_size,
+ const base::Callback<void(media::VideoFrame*)>& callback) {
+#if defined(OS_WIN)
+ if (view_ && is_accelerated_compositing_active_) {
+ TRACE_EVENT0("browser",
+ "RenderWidgetHostImpl::CopyFromBackingStoreToVideoFrame");
+ gfx::Rect copy_rect = src_subrect.IsEmpty() ?
+ gfx::Rect(view_->GetViewBounds().size()) : src_subrect;
+ view_->CopyFromCompositingSurfaceToVideoFrame(copy_rect,
+ dst_size,
+ callback);
+ return;
+ }
+
+ NOTREACHED() << "CopyFromBackingStoreToVideoFrame() called when not possible";
+#endif
+ callback.Run(media::VideoFrame::CreateEmptyFrame());
+}
+
#if defined(TOOLKIT_GTK)
bool RenderWidgetHostImpl::CopyFromBackingStoreToGtkWindow(
const gfx::Rect& dest_rect, GdkWindow* target) {

Powered by Google App Engine
This is Rietveld 408576698