# 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.

# These variables need to be args.

# Override to dynamically link the cras (ChromeOS audio) library.
use_cras = false

# Option e.g. for Linux distributions to link pulseaudio directly
# (DT_NEEDED) instead of using dlopen. This helps with automated
# detection of ABI mismatches and prevents silent errors.
#
# TODO(ajwong): Why is this prefixed "linux_"?
linux_link_pulseaudio = false

# TODO(ajwong): Enable libvpx once that's converted.
media_use_ffmpeg = true
media_use_libvpx = true
if (is_android || is_ios) {
  # Android and iOS don't use ffmpeg or libvpx.
  media_use_ffmpeg = false
  media_use_libvpx = false
}

# TODO(ajwong): how to disable embedded?
# Original conditional: (OS=="linux" or OS=="freebsd" or OS=="solaris") and embedded!=1
use_alsa = false
use_pulseaudio = false
if (is_posix && !is_android && !is_mac) {
  use_alsa = true
  if (!use_cras) {
    use_pulseaudio = true
  }
}

# TODO(ajwong): is_openbsd should be a platform define.
is_openbsd = false

# TODO(ajwong): This should be branding controlled?
proprietary_codecs = false

# TODO(ajwong): Where are these coming from?jk
enable_mpeg2ts_stream_parser = false
enable_browser_cdms = is_android
