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

import("//build/buildflag_header.gni")
import("//build/config/linux/pkg_config.gni")
import("//build/shim_headers.gni")

pkg_config("system_ffmpeg") {
  packages = [
    "libavcodec",
    "libavformat",
    "libavutil",
  ]
}

buildflag_header("ffmpeg_features") {
  header = "ffmpeg_features.h"
  flags = [ "USE_SYSTEM_FFMPEG=true" ]
}

shim_headers("ffmpeg_shim") {
  root_path = "."
  headers = [
    "libavcodec/avcodec.h",
    "libavformat/avformat.h",
    "libavutil/imgutils.h",
  ]
}

source_set("ffmpeg") {
  deps = [
    ":ffmpeg_features",
    ":ffmpeg_shim",
  ]
  public_configs = [ ":system_ffmpeg" ]
}
