| Index: media/blink/webmediaplayer_impl.cc
|
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
| index 2986a27c8a2daacba2205b99fca390f6d153e882..86c99667db86c950af32026a23ae239d7efa4385 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::kUseSurfaceLayerForVideo))
|
| + bridge_ = base::WrapUnique(blink::WebVideoSurfaceLayerBridge::Create());
|
| +
|
| force_video_overlays_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kForceVideoOverlays);
|
|
|
| @@ -323,7 +327,8 @@ WebMediaPlayerImpl::~WebMediaPlayerImpl() {
|
|
|
| // Destruct compositor resources in the proper order.
|
| client_->SetWebLayer(nullptr);
|
| - if (video_weblayer_)
|
| + if (video_weblayer_ &&
|
| + !base::FeatureList::IsEnabled(media::kUseSurfaceLayerForVideo))
|
| static_cast<cc::VideoLayer*>(video_weblayer_->layer())->StopUsingProvider();
|
| compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_);
|
|
|
| @@ -1350,8 +1355,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::kUseSurfaceLayerForVideo)) {
|
| + 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());
|
|
|