blob: 40bfc89b85502ce39a982c91065af37bf588d6b9 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
declare_args() {
# Allows distributions to link pulseaudio directly (DT_NEEDED) instead of
# using dlopen. This helps with automated detection of ABI mismatches and
# prevents silent errors.
link_pulseaudio = false
# Enable usage of FFmpeg within the media library. Used for most software
# based decoding, demuxing, and sometimes optimized FFTs. If disabled,
# implementors must provide their own demuxers and decoders.
media_use_ffmpeg = true
# Enable usage of libvpx within the media library. Used for software based
# decoding of VP9 and VP8A type content.
media_use_libvpx = true
# iOS doesn't use ffmpeg, libvpx.
if (is_ios) {
media_use_ffmpeg = false
media_use_libvpx = false
# Override to dynamically link the cras (ChromeOS audio) library.
use_cras = false
# Use low-memory buffers on non-Android builds of Chromecast.
use_low_memory_buffer = is_chromecast && !is_android
# Enables AC3/EAC3 audio demuxing. This is enabled only on Chromecast, since
# it only provides demuxing, and is only useful for AC3/EAC3 audio
# pass-through to HDMI sink on Chromecast.
enable_ac3_eac3_audio_demuxing = proprietary_codecs && is_chromecast
enable_mse_mpeg2ts_stream_parser = proprietary_codecs && is_chromecast
# Enable HEVC/H265 demuxing. Actual decoding must be provided by the
# platform. Enable by default for Chromecast.
enable_hevc_demuxing = proprietary_codecs && is_chromecast
# TODO(GYP): This should be a platform define.
is_openbsd = false
# Use a second declare_args() to pick up possible overrides of |use_cras|.
declare_args() {
# Enables runtime selection of PulseAudio library.
use_pulseaudio = false
# Enables runtime selection of ALSA library for audio.
use_alsa = false
# Alsa should be used on non-Android, non-Mac POSIX systems.
if (is_posix && !is_headless && !is_android && !is_mac) {
use_alsa = true
# Pulse is not supported on Chromecast platforms.
if (!use_cras && !is_chromecast) {
use_pulseaudio = true
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|).
enable_mojo_media = false
# Enable the TestMojoMediaClient to be used in MojoMediaApplication. This is
# for testing only and will override the default platform MojoMediaClient.
enable_test_mojo_media_client = false
# Use a second 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.
# - "audio_decoder": Use mojo based audio decoder in the default media
# Renderer. Cannot be used with the mojo Renderer above.
# TODO(xhwang): Support mojo base video decoders here.
# See and
mojo_media_services = []
# The process to host the mojo media application.
# Valid options are:
# - "none": Do not use mojo media application.
# - "browser": Use mojo media application hosted in the browser process.
# - "gpu": Use mojo media application hosted in the gpu process.
# - "utility": Use mojo media application hosted in the utility process.
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_android) {
mojo_media_services = [
mojo_media_host = "gpu"
} else if (is_chromecast) {
mojo_media_services = [
mojo_media_host = "browser"
} else {
mojo_media_services = [ "cdm" ]
mojo_media_host = "utility"