Commit 8864b58f authored by Xiaohan Wang's avatar Xiaohan Wang Committed by Commit Bot

media: Remove enable_mojo_media gn arg

This arg is almost enabled on all platforms (except Fuchsia) and
actually controls very few files. Most of the mojo media related
features are controlled by subsidiary buildflags like ENABLE_MOJO_CDM.

This CL removes this arg to make the code cleaner.

Bug: 1067786
Change-Id: I49cb56afefc08902734ab861c87cbbf98cc6366f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2133851Reviewed-by: default avatarNico Weber <thakis@chromium.org>
Reviewed-by: default avatarYuchen Liu <yucliu@chromium.org>
Commit-Queue: Xiaohan Wang <xhwang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#756799}
parent 6971cbb3
......@@ -49,7 +49,7 @@ declare_args() {
# Configures media options for cast. See media/media_options.gni
cast_mojo_media_services = []
cast_mojo_media_host = "none"
cast_mojo_media_host = ""
if (enable_cast_renderer) {
# In this path, mojo media services are hosted in two processes:
......
......@@ -206,6 +206,7 @@ cast_source_set("browser") {
"//gpu",
"//ipc",
"//media",
"//media/mojo/services",
"//net",
"//services/media_session/public/mojom",
"//services/network/public/mojom",
......@@ -301,10 +302,6 @@ cast_source_set("browser") {
deps += [ "//ui/ozone" ]
}
if (enable_mojo_media) {
deps += [ "//media/mojo/services" ]
}
if (enable_external_mojo_services) {
deps += [ "//chromecast/external_mojo/broker_service" ]
}
......
......@@ -191,6 +191,8 @@ target(link_target_type, "renderer") {
"media/inspector_media_event_handler.h",
"media/media_factory.cc",
"media/media_factory.h",
"media/media_interface_factory.cc",
"media/media_interface_factory.h",
"media/media_permission_dispatcher.cc",
"media/media_permission_dispatcher.h",
"media/power_status_helper_impl.cc",
......@@ -659,13 +661,6 @@ target(link_target_type, "renderer") {
deps += [ "//printing" ]
}
if (enable_mojo_media) {
sources += [
"media/media_interface_factory.cc",
"media/media_interface_factory.h",
]
}
if (is_linux || is_android) {
deps += [ "//sandbox:sandbox_buildflags" ]
}
......
......@@ -21,6 +21,7 @@
#include "content/renderer/media/audio/audio_device_factory.h"
#include "content/renderer/media/batching_media_log.h"
#include "content/renderer/media/inspector_media_event_handler.h"
#include "content/renderer/media/media_interface_factory.h"
#include "content/renderer/media/power_status_helper_impl.h"
#include "content/renderer/media/render_media_event_handler.h"
#include "content/renderer/media/renderer_webmediaplayer_delegate.h"
......@@ -71,10 +72,6 @@
#include "content/renderer/media/cast_renderer_client_factory.h"
#endif
#if BUILDFLAG(ENABLE_MOJO_MEDIA)
#include "content/renderer/media/media_interface_factory.h"
#endif
#if defined(OS_FUCHSIA)
#include "content/renderer/media/fuchsia_renderer_factory.h"
#include "media/fuchsia/cdm/client/fuchsia_cdm_util.h"
......@@ -695,7 +692,6 @@ media::CdmFactory* MediaFactory::GetCdmFactory() {
return cdm_factory_.get();
}
#if BUILDFLAG(ENABLE_MOJO_MEDIA)
media::mojom::InterfaceFactory* MediaFactory::GetMediaInterfaceFactory() {
DCHECK(interface_broker_);
......@@ -712,6 +708,5 @@ MediaFactory::CreateMojoRendererFactory() {
return std::make_unique<media::MojoRendererFactory>(
GetMediaInterfaceFactory());
}
#endif // BUILDFLAG(ENABLE_MOJO_MEDIA)
} // namespace content
......@@ -16,6 +16,8 @@
#include "media/blink/webmediaplayer_params.h"
#include "media/media_buildflags.h"
#include "media/mojo/buildflags.h"
#include "media/mojo/clients/mojo_renderer_factory.h"
#include "media/mojo/mojom/interface_factory.mojom.h"
#include "media/mojo/mojom/remoting.mojom.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/platform/web_media_player_source.h"
......@@ -24,11 +26,6 @@
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/web/web_media_inspector.h"
#if BUILDFLAG(ENABLE_MOJO_MEDIA)
#include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck
#include "media/mojo/mojom/interface_factory.mojom.h" // nogncheck
#endif
namespace blink {
class BrowserInterfaceBrokerProxy;
class WebContentDecryptionModule;
......@@ -142,19 +139,17 @@ class MediaFactory {
media::CdmFactory* GetCdmFactory();
#if BUILDFLAG(ENABLE_MOJO_MEDIA)
media::mojom::InterfaceFactory* GetMediaInterfaceFactory();
std::unique_ptr<media::MojoRendererFactory> CreateMojoRendererFactory();
// The media interface provider attached to this frame, lazily initialized.
std::unique_ptr<MediaInterfaceFactory> media_interface_factory_;
#endif
// The render frame we're helping. RenderFrameImpl owns this factory, so the
// pointer will always be valid.
RenderFrameImpl* render_frame_;
// The media interface provider attached to this frame, lazily initialized.
std::unique_ptr<MediaInterfaceFactory> media_interface_factory_;
// Injected callback for requesting overlay routing tokens.
media::RequestRoutingTokenCallback request_routing_token_cb_;
......
......@@ -158,16 +158,6 @@ enable_library_cdms =
(is_linux && !is_chromecast) || is_mac || is_win || is_fuchsia
declare_args() {
# Experiment to enable mojo media services (e.g. "renderer", "cdm", see
# |mojo_media_services|). When enabled, selected mojo paths will be enabled in
# the media pipeline and corresponding services will hosted in the selected
# remote process (e.g. "utility" process, see |mojo_media_host|).
# This is explicitly disabled for Fuchsia.
enable_mojo_media =
!is_fuchsia &&
(is_android || is_chromeos || is_mac || is_win || enable_library_cdms ||
(is_desktop_linux && use_vaapi) || is_chromecast)
# When enabled, this feature allows developers to use a runtime flag to
# choose the implementation of the renderer that is used. On a build which
# enables the mojo renderer, if --disable-mojo-renderer is passed at start-up,
......@@ -196,60 +186,48 @@ declare_args() {
enable_cdm_proxy = false
}
# This feature can only be enabled when using Mojo media. Furthermore, the
# "renderer" service must be enabled, which is asserted in
# //media/mojo/services/BUILD.gn
assert(
!enable_runtime_media_renderer_selection || enable_mojo_media,
"Runtime media renderer selection only applies when mojo media is enabled.")
assert(!enable_cdm_host_verification || is_mac || is_win,
"CDM host verification is only supported on Mac and Windows.")
assert(enable_library_cdms || !enable_cdm_proxy,
"CDM Proxy should only be enabled when library CDM is enabled.")
# Default |mojo_media_services| and |mojo_media_host| on various platforms. See
# comments below for valid values. Can be overridden by gn build arguments from
# the --args command line flag.
_default_mojo_media_services = []
_default_mojo_media_host = "none"
# Default mojo_media_services and mojo_media_host on various platforms.
# Can be overridden by gn build arguments from the --args command line flag
# for local testing.
if (enable_mojo_media) {
if (is_chromecast) {
_default_mojo_media_services = cast_mojo_media_services
_default_mojo_media_host = cast_mojo_media_host
} else if (is_android) {
_default_mojo_media_services = [
"cdm",
"audio_decoder",
"video_decoder",
]
_default_mojo_media_host = "gpu"
} else if (is_chromeos || is_mac || is_win ||
(is_desktop_linux && use_vaapi)) {
_default_mojo_media_services = [ "video_decoder" ]
_default_mojo_media_host = "gpu"
}
if (enable_library_cdms) {
_default_mojo_media_services += [ "cdm" ]
_default_mojo_media_host = ""
if (is_chromecast) {
_default_mojo_media_services = cast_mojo_media_services
_default_mojo_media_host = cast_mojo_media_host
} else if (is_android) {
_default_mojo_media_services = [
"cdm",
"audio_decoder",
"video_decoder",
]
_default_mojo_media_host = "gpu"
} else if (is_chromeos || is_mac || is_win || (is_desktop_linux && use_vaapi)) {
_default_mojo_media_services = [ "video_decoder" ]
_default_mojo_media_host = "gpu"
}
# Having a CDM running means it could require a CdmProxy running in the GPU
# process.
assert(
_default_mojo_media_host == "none" || _default_mojo_media_host == "gpu",
"For now, mojo_media_host should not overwrite it with a different " +
"value if it has been set.")
_default_mojo_media_host = "gpu"
}
# On Fuchsia, this is only enabled to build libclearkeycdm.so, the mojo CDM
# service is not used.
if (enable_library_cdms && !is_fuchsia) {
_default_mojo_media_services += [ "cdm" ]
# Having a CDM running means it could require a CdmProxy running in the GPU
# process.
assert(_default_mojo_media_host == "" || _default_mojo_media_host == "gpu",
"For now, mojo_media_host should not overwrite it with a different " +
"value if it has been set.")
_default_mojo_media_host = "gpu"
}
# Use another declare_args() to pick up possible overrides of enable_mojo_media
# from --args command line flags. See "gn help declare_args".
declare_args() {
# A list of mojo media services that should be used in the media pipeline.
# Must not be empty if |enable_mojo_media| is true.
# Valid entries in the list are:
# - "renderer": Use mojo-based media Renderer service.
# - "cdm": Use mojo-based Content Decryption Module.
......@@ -266,10 +244,10 @@ declare_args() {
# |mojo_media_services| still run in the MediaService in the process specified
# by "mojo_media_host".
# Valid options are:
# - "none": Do not use mojo media service.
# - "browser": Use mojo media service hosted in the browser process.
# - "gpu": Use mojo media service hosted in the gpu process.
# - "utility": Use mojo media service hosted in the utility process.
# - "": Do not use mojo media service.
mojo_media_host = _default_mojo_media_host
}
......
......@@ -18,39 +18,32 @@ buildflag_header("buildflags") {
enable_mojo_media_in_gpu_process = false
enable_mojo_media_in_utility_process = false
if (!enable_mojo_media) {
assert(mojo_media_services == [], "Mojo media is not enabled")
assert(mojo_media_host == "none", "Mojo media is not enabled")
} else {
assert(mojo_media_services != [], "No mojo media service specified")
foreach(service, mojo_media_services) {
if (service == "renderer") {
enable_mojo_renderer = true
} else if (service == "cdm") {
enable_mojo_cdm = true
} else if (service == "audio_decoder") {
enable_mojo_audio_decoder = true
} else if (service == "video_decoder") {
enable_mojo_video_decoder = true
} else {
assert(false, "Invalid mojo media service: $service")
}
}
if (mojo_media_host == "browser") {
enable_mojo_media_in_browser_process = true
} else if (mojo_media_host == "gpu") {
enable_mojo_media_in_gpu_process = true
} else if (mojo_media_host == "utility") {
enable_mojo_media_in_utility_process = true
foreach(service, mojo_media_services) {
if (service == "renderer") {
enable_mojo_renderer = true
} else if (service == "cdm") {
enable_mojo_cdm = true
} else if (service == "audio_decoder") {
enable_mojo_audio_decoder = true
} else if (service == "video_decoder") {
enable_mojo_video_decoder = true
} else {
assert(false, "Invalid mojo media host: $mojo_media_host")
assert(false, "Invalid mojo media service: $service")
}
}
if (mojo_media_host == "browser") {
enable_mojo_media_in_browser_process = true
} else if (mojo_media_host == "gpu") {
enable_mojo_media_in_gpu_process = true
} else if (mojo_media_host == "utility") {
enable_mojo_media_in_utility_process = true
} else if (mojo_media_host != "") {
assert(false, "Invalid mojo media host: $mojo_media_host")
}
flags = [
"ENABLE_CAST_RENDERER=$enable_cast_renderer",
"ENABLE_MOJO_MEDIA=$enable_mojo_media",
"ENABLE_MOJO_RENDERER=$enable_mojo_renderer",
"ENABLE_MOJO_CDM=$enable_mojo_cdm",
"ENABLE_MOJO_AUDIO_DECODER=$enable_mojo_audio_decoder",
......
......@@ -62,10 +62,8 @@ specify which remote media components you want to enable. For example, with the
following gn arguments, the media pipeline will enable `MojoRenderer` and
`MojoCdm`:
```
enable_mojo_media = true
mojo_media_services = ["renderer", "cdm"]
```
Note that you must set `enable_mojo_media` first.
### Media Mojo Interface Factory
......
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