Commit 9279a242 authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

ARC: fix the arc video playback with --mus

With recent changes, --mus has a separate viz process wich is launched by
browser process via GpuPorcessHost. So we should use GpuProcessHost to
request ARC related interfaces in Viz.

Bug: 793901
Change-Id: Idd27f95fcf962b54634876024d0da4600da3f3aa
Reviewed-on: https://chromium-review.googlesource.com/820151Reviewed-by: default avatarYusuke Sato <yusukes@chromium.org>
Reviewed-by: default avatarSadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523338}
parent cce71934
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/singleton.h" #include "base/memory/singleton.h"
#include "base/threading/thread_checker.h" #include "base/threading/thread_checker.h"
#include "chrome/browser/chromeos/ash_config.h"
#include "components/arc/arc_bridge_service.h" #include "components/arc/arc_bridge_service.h"
#include "components/arc/arc_browser_context_keyed_service_factory_base.h" #include "components/arc/arc_browser_context_keyed_service_factory_base.h"
#include "components/arc/common/video_decode_accelerator.mojom.h" #include "components/arc/common/video_decode_accelerator.mojom.h"
...@@ -24,6 +23,7 @@ ...@@ -24,6 +23,7 @@
#include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/connector.h"
#include "services/ui/public/interfaces/arc.mojom.h" #include "services/ui/public/interfaces/arc.mojom.h"
#include "services/ui/public/interfaces/constants.mojom.h" #include "services/ui/public/interfaces/constants.mojom.h"
#include "ui/base/ui_base_switches_util.h"
namespace arc { namespace arc {
...@@ -50,9 +50,7 @@ class GpuArcVideoServiceHostFactory ...@@ -50,9 +50,7 @@ class GpuArcVideoServiceHostFactory
class VideoAcceleratorFactoryService : public mojom::VideoAcceleratorFactory { class VideoAcceleratorFactoryService : public mojom::VideoAcceleratorFactory {
public: public:
VideoAcceleratorFactoryService() { VideoAcceleratorFactoryService() { DCHECK(!switches::IsMusHostingViz()); }
DCHECK_EQ(chromeos::GetAshConfig(), ash::Config::CLASSIC);
}
~VideoAcceleratorFactoryService() override = default; ~VideoAcceleratorFactoryService() override = default;
...@@ -87,18 +85,18 @@ class VideoAcceleratorFactoryService : public mojom::VideoAcceleratorFactory { ...@@ -87,18 +85,18 @@ class VideoAcceleratorFactoryService : public mojom::VideoAcceleratorFactory {
DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryService); DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryService);
}; };
class VideoAcceleratorFactoryServiceMus class VideoAcceleratorFactoryServiceViz
: public mojom::VideoAcceleratorFactory { : public mojom::VideoAcceleratorFactory {
public: public:
VideoAcceleratorFactoryServiceMus() { VideoAcceleratorFactoryServiceViz() {
DCHECK_NE(chromeos::GetAshConfig(), ash::Config::CLASSIC); DCHECK(switches::IsMusHostingViz());
DETACH_FROM_THREAD(thread_checker_); DETACH_FROM_THREAD(thread_checker_);
auto* connector = auto* connector =
content::ServiceManagerConnection::GetForProcess()->GetConnector(); content::ServiceManagerConnection::GetForProcess()->GetConnector();
connector->BindInterface(ui::mojom::kServiceName, &arc_); connector->BindInterface(ui::mojom::kServiceName, &arc_);
} }
~VideoAcceleratorFactoryServiceMus() override { ~VideoAcceleratorFactoryServiceViz() override {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
} }
...@@ -125,14 +123,14 @@ class VideoAcceleratorFactoryServiceMus ...@@ -125,14 +123,14 @@ class VideoAcceleratorFactoryServiceMus
ui::mojom::ArcPtr arc_; ui::mojom::ArcPtr arc_;
DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryServiceMus); DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryServiceViz);
}; };
std::unique_ptr<mojom::VideoAcceleratorFactory> std::unique_ptr<mojom::VideoAcceleratorFactory>
CreateVideoAcceleratorFactory() { CreateVideoAcceleratorFactory() {
if (chromeos::GetAshConfig() == ash::Config::CLASSIC) if (switches::IsMusHostingViz())
return std::make_unique<VideoAcceleratorFactoryServiceViz>();
return std::make_unique<VideoAcceleratorFactoryService>(); return std::make_unique<VideoAcceleratorFactoryService>();
return std::make_unique<VideoAcceleratorFactoryServiceMus>();
} }
} // namespace } // namespace
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment