# 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("//media/media_options.gni")

assert(media_use_ffmpeg)

source_set("ffmpeg") {
  visibility = [ "//media/*" ]
  allow_circular_includes_from = [ "//media/base" ]
  configs += [ "//media/base:base_config" ]
  sources = [
    "ffmpeg_common.cc",
    "ffmpeg_common.h",
    "ffmpeg_deleters.h",
  ]
  deps = [
    "//base",
    "//media:media_features",
    "//media:shared_memory_support",
    "//media/base",
    "//third_party/ffmpeg",
    "//third_party/ffmpeg:ffmpeg_features",
  ]
}

source_set("ffmpeg_unittests") {
  testonly = true
  sources = [
    "ffmpeg_common_unittest.cc",
  ]
  deps = [
    "//base",
    "//media",
    "//media/base:test_support",
    "//testing/gtest",
    "//third_party/ffmpeg",
  ]
}

source_set("ffmpeg_regression_tests") {
  testonly = true
  sources = [
    "ffmpeg_regression_tests.cc",
  ]
  deps = [
    "//base",
    "//media",
    "//media/test:pipeline_integration_test_base",
    "//testing/gmock",
    "//third_party/ffmpeg",
  ]
}
