| 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) {
|
|
|