Index: media/blink/webmediaplayer_impl.cc |
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
index 52ee0e8e7cb426264f7b91c0169f9e6e99283dd1..01a431f59b70becc1cc88b1ab2d9d4d79d6291e4 100644 |
--- a/media/blink/webmediaplayer_impl.cc |
+++ b/media/blink/webmediaplayer_impl.cc |
@@ -61,6 +61,7 @@ |
#include "third_party/WebKit/public/platform/WebSize.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
#include "third_party/WebKit/public/platform/WebURL.h" |
+#include "third_party/WebKit/public/platform/WebVideoSurfaceLayerBridge.h" |
#include "third_party/WebKit/public/web/WebDocument.h" |
#include "third_party/WebKit/public/web/WebFrame.h" |
#include "third_party/WebKit/public/web/WebLocalFrame.h" |
@@ -267,6 +268,9 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( |
DCHECK(client_); |
DCHECK(delegate_); |
+ if (base::FeatureList::IsEnabled(media::kVideoSurface)) |
+ bridge_ = base::WrapUnique(blink::WebVideoSurfaceLayerBridge::Create()); |
+ |
force_video_overlays_ = base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kForceVideoOverlays); |
@@ -323,7 +327,7 @@ WebMediaPlayerImpl::~WebMediaPlayerImpl() { |
// Destruct compositor resources in the proper order. |
client_->SetWebLayer(nullptr); |
- if (video_weblayer_) |
+ if (video_weblayer_ && !base::FeatureList::IsEnabled(kVideoSurface)) |
static_cast<cc::VideoLayer*>(video_weblayer_->layer())->StopUsingProvider(); |
compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_); |
@@ -1349,8 +1353,12 @@ void WebMediaPlayerImpl::OnMetadata(PipelineMetadata metadata) { |
} |
DCHECK(!video_weblayer_); |
- video_weblayer_.reset(new cc_blink::WebLayerImpl(cc::VideoLayer::Create( |
- compositor_, pipeline_metadata_.video_rotation))); |
+ if (base::FeatureList::IsEnabled(media::kVideoSurface)) { |
+ video_weblayer_.reset(new cc_blink::WebLayerImpl(bridge_->GetLayer())); |
+ } else { |
+ video_weblayer_.reset(new cc_blink::WebLayerImpl(cc::VideoLayer::Create( |
+ compositor_, pipeline_metadata_.video_rotation))); |
+ } |
video_weblayer_->layer()->SetContentsOpaque(opaque_); |
video_weblayer_->SetContentsOpaqueIsFixed(true); |
client_->SetWebLayer(video_weblayer_.get()); |