# Copyright 2019 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() {
  # FFMPEG: If installed on the system, set have_ffmpeg to true. This also
  # requires the FFMPEG headers be installed. On Debian-like systems, this can
  # be done by running `cast/standalone_receiver/install_demo_deps_debian.sh`
  # to install both FFMPEG and libSDL.
  have_ffmpeg = false
  ffmpeg_libs = [
    "avcodec",
    "avformat",
    "avutil",
    "swresample",
  ]
  ffmpeg_include_dirs = []  # Add only if headers are at non-standard locations.
  ffmpeg_lib_dirs = []  # Add only if libraries are at non-standard locations.

  # libopus: If installed on the system, set have_libopus to true. This also
  # requires the libopus headers be installed. For example, on Debian-like
  # systems, the following should install everything needed:
  #
  #   sudo apt-get install libopus0 libopus-dev
  have_libopus = false
  libopus_libs = [ "opus" ]
  libopus_include_dirs = []  # Add only if headers are at non-standard locations.
  libopus_lib_dirs = []  # Add only if libraries are at non-standard locations.

  # libsdl2: If installed on the system, set have_libsdl2 to true. This also
  # requires the libSDL2 headers be installed. On Debian-like systems, this can
  # be done by running `cast/standalone_receiver/install_demo_deps_debian.sh`
  # to install both FFMPEG and libSDL.
  have_libsdl2 = false
  libsdl2_libs = [ "SDL2" ]
  libsdl2_include_dirs = []  # Add only if headers are at non-standard locations.
  libsdl2_lib_dirs = []  # Add only if libraries are at non-standard locations.

  # libvpx: If installed on the system, set have_libvpx to true. This also
  # requires the libvpx headers be installed. For example, on Debian-like
  # systems, the following should install everything needed:
  #
  #   sudo apt-get install libvpx5 libvpx-dev
  have_libvpx = false
  libvpx_libs = [ "vpx" ]
  libvpx_include_dirs = []  # Add only if headers are at non-standard locations.
  libvpx_lib_dirs = []  # Add only if libraries are at non-standard locations.
}
