# 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_buildflags") {
  header = "ffmpeg_buildflags.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_buildflags",
    ":ffmpeg_shim",
  ]
  public_configs = [ ":system_ffmpeg" ]
}
