# 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/module_args/mojo.gni")
import("//mojo/public/mojo_application.gni")
import("$mojo_sdk_root/mojo/public/mojo_sdk.gni")

source_set("framework") {
  sources = [
    "engine.cc",
    "engine.h",
    "graph.cc",
    "graph.h",
    "metadata.cc",
    "metadata.h",
    "models/active_multistream_sink.h",
    "models/active_multistream_source.h",
    "models/active_sink.h",
    "models/active_source.h",
    "models/demand.h",
    "models/multistream_source.h",
    "models/part.h",
    "models/transform.h",
    "packet.cc",
    "packet.h",
    "parts/decoder.h",
    "parts/demux.h",
    "parts/lpcm_reformatter.cc",
    "parts/lpcm_reformatter.h",
    "parts/null_sink.cc",
    "parts/null_sink.h",
    "parts/reader.h",
    "parts/reader_cache.cc",
    "parts/reader_cache.h",
    "parts/sparse_byte_buffer.cc",
    "parts/sparse_byte_buffer.h",
    "payload_allocator.cc",
    "payload_allocator.h",
    "refs.cc",
    "refs.h",
    "result.h",
    "stages/active_multistream_sink_stage.cc",
    "stages/active_multistream_sink_stage.h",
    "stages/active_multistream_source_stage.cc",
    "stages/active_multistream_source_stage.h",
    "stages/active_sink_stage.cc",
    "stages/active_sink_stage.h",
    "stages/active_source_stage.cc",
    "stages/active_source_stage.h",
    "stages/input.cc",
    "stages/input.h",
    "stages/multistream_source_stage.cc",
    "stages/multistream_source_stage.h",
    "stages/output.cc",
    "stages/output.h",
    "stages/stage.cc",
    "stages/stage.h",
    "stages/transform_stage.cc",
    "stages/transform_stage.h",
    "stages/util.cc",
    "stages/util.h",
    "types/audio_stream_type.cc",
    "types/audio_stream_type.h",
    "types/bytes.cc",
    "types/bytes.h",
    "types/stream_type.cc",
    "types/stream_type.h",
    "types/subpicture_stream_type.cc",
    "types/subpicture_stream_type.h",
    "types/text_stream_type.cc",
    "types/text_stream_type.h",
    "types/video_stream_type.cc",
    "types/video_stream_type.h",
    "util/callback_joiner.cc",
    "util/callback_joiner.h",
    "util/conversion_pipeline_builder.cc",
    "util/conversion_pipeline_builder.h",
    "util/formatting.cc",
    "util/formatting.h",
    "util/incident.cc",
    "util/incident.h",
    "util/lpcm_util.cc",
    "util/lpcm_util.h",
    "util/safe_clone.h",
  ]

  deps = [
    "//base",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/bindings:callback",
  ]
}

mojo_native_application("apptests") {
  output_name = "media_framework_apptests"

  testonly = true

  sources = [
    "test/incident_test.cc",
    "test/sparse_byte_buffer_test.cc",
    "test/test_base.h",
  ]

  deps = [
    ":framework",
    "//base",
    "//mojo/application",
    "//mojo/application:test_support",
    "//services/media/framework_create",
  ]
}
