# 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 += [
    # TODO(crbug.com/167187): Fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",

    "//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",
  ]
}
