# 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") {
  # Do not expand the visibility here without double-checking with OWNERS, this
  # is a roll-up target which is part of the //media component. Most other DEPs
  # should be using //media and not directly DEP this roll-up target.
  visibility = [
    "//media",
    "//media/filters",
  ]
  configs += [
    "//media:subcomponent_config",
  ]
  sources = [
    "ffmpeg_common.cc",
    "ffmpeg_common.h",
    "ffmpeg_decoding_loop.cc",
    "ffmpeg_decoding_loop.h",
    "ffmpeg_deleters.h",
  ]
  deps = [
    "//base",
    "//media/base",
    "//media/formats",
    "//third_party/ffmpeg",
    "//third_party/ffmpeg:ffmpeg_features",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [ "ffmpeg_common_unittest.cc" ]
  configs += [ "//media:media_config" ]
  deps = [
    "//base",
    "//media: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",
  ]
}
