# Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../../webrtc.gni")

if (!build_with_chromium) {
  group("e2e") {
    testonly = true

    deps = [
      ":default_encoded_image_data_injector",
      ":encoded_image_data_injector_api",
      ":example_video_quality_analyzer",
      ":id_generator",
      ":quality_analyzing_video_decoder",
      ":quality_analyzing_video_encoder",
      ":single_process_encoded_image_data_injector",
    ]
    if (rtc_include_tests) {
      deps += [
        ":peerconnection_quality_test",
        ":test_peer",
        ":video_quality_analyzer_injection_helper",
      ]
    }
  }

  if (rtc_include_tests) {
    group("e2e_unittests") {
      testonly = true

      deps = [
        ":default_encoded_image_data_injector_unittest",
        ":default_video_quality_analyzer_test",
        ":multi_head_queue_test",
        ":peer_connection_e2e_smoke_test",
        ":single_process_encoded_image_data_injector_unittest",
      ]
    }
  }

  rtc_library("peer_connection_quality_test_params") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "peer_connection_quality_test_params.h" ]

    deps = [
      "../../../api:callfactory_api",
      "../../../api:fec_controller_api",
      "../../../api:libjingle_peerconnection_api",
      "../../../api:packet_socket_factory",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api/rtc_event_log",
      "../../../api/task_queue",
      "../../../api/transport:network_control",
      "../../../api/video_codecs:video_codecs_api",
      "../../../rtc_base",
    ]
  }

  rtc_library("encoded_image_data_injector_api") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "analyzer/video/encoded_image_data_injector.h" ]

    deps = [ "../../../api/video:encoded_image" ]
  }

  rtc_library("default_encoded_image_data_injector") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/video/default_encoded_image_data_injector.cc",
      "analyzer/video/default_encoded_image_data_injector.h",
    ]

    deps = [
      ":encoded_image_data_injector_api",
      "../../../api/video:encoded_image",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
  }

  rtc_library("single_process_encoded_image_data_injector") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/video/single_process_encoded_image_data_injector.cc",
      "analyzer/video/single_process_encoded_image_data_injector.h",
    ]

    deps = [
      ":encoded_image_data_injector_api",
      "../../../api/video:encoded_image",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
  }

  rtc_library("id_generator") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/video/id_generator.cc",
      "analyzer/video/id_generator.h",
    ]
    deps = []
  }

  rtc_library("simulcast_dummy_buffer_helper") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/video/simulcast_dummy_buffer_helper.cc",
      "analyzer/video/simulcast_dummy_buffer_helper.h",
    ]
    deps = [
      "../../../api/video:video_frame",
      "../../../api/video:video_frame_i420",
    ]
  }

  rtc_library("quality_analyzing_video_decoder") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/video/quality_analyzing_video_decoder.cc",
      "analyzer/video/quality_analyzing_video_decoder.h",
    ]
    deps = [
      ":encoded_image_data_injector_api",
      ":id_generator",
      ":simulcast_dummy_buffer_helper",
      "../../../api:video_quality_analyzer_api",
      "../../../api/video:encoded_image",
      "../../../api/video:video_frame",
      "../../../api/video:video_frame_i420",
      "../../../api/video:video_rtp_headers",
      "../../../api/video_codecs:video_codecs_api",
      "../../../modules/video_coding:video_codec_interface",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("quality_analyzing_video_encoder") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/video/quality_analyzing_video_encoder.cc",
      "analyzer/video/quality_analyzing_video_encoder.h",
    ]
    deps = [
      ":encoded_image_data_injector_api",
      ":id_generator",
      "../../../api:video_quality_analyzer_api",
      "../../../api/video:encoded_image",
      "../../../api/video:video_frame",
      "../../../api/video:video_rtp_headers",
      "../../../api/video_codecs:video_codecs_api",
      "../../../modules/video_coding:video_codec_interface",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  if (rtc_include_tests) {
    rtc_library("video_quality_analyzer_injection_helper") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "analyzer/video/video_quality_analyzer_injection_helper.cc",
        "analyzer/video/video_quality_analyzer_injection_helper.h",
      ]
      deps = [
        ":encoded_image_data_injector_api",
        ":id_generator",
        ":quality_analyzing_video_decoder",
        ":quality_analyzing_video_encoder",
        ":simulcast_dummy_buffer_helper",
        "../..:test_renderer",
        "../../../api:array_view",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:stats_observer_interface",
        "../../../api:video_quality_analyzer_api",
        "../../../api/video:video_frame",
        "../../../api/video:video_rtp_headers",
        "../../../api/video_codecs:video_codecs_api",
        "../../../rtc_base:criticalsection",
        "../../../test:video_test_common",
        "../../../test:video_test_support",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings",
      ]
    }

    rtc_library("echo_emulation") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "echo/echo_emulation.cc",
        "echo/echo_emulation.h",
      ]
      deps = [
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../modules/audio_device:audio_device_impl",
        "../../../rtc_base:rtc_base_approved",
      ]
    }

    rtc_library("test_peer") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test_peer.cc",
        "test_peer.h",
      ]
      deps = [
        ":peer_configurer",
        ":peer_connection_quality_test_params",
        "../../../api:frame_generator_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:scoped_refptr",
        "../../../modules/audio_processing:api",
        "../../../pc:peerconnection_wrapper",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/types:variant",
      ]
    }

    rtc_library("test_peer_factory") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test_peer_factory.cc",
        "test_peer_factory.h",
      ]
      deps = [
        ":echo_emulation",
        ":peer_configurer",
        ":peer_connection_quality_test_params",
        ":quality_analyzing_video_encoder",
        ":test_peer",
        ":video_quality_analyzer_injection_helper",
        "../..:copy_to_file_audio_capturer",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/rtc_event_log:rtc_event_log_factory",
        "../../../api/task_queue:default_task_queue_factory",
        "../../../api/video_codecs:builtin_video_decoder_factory",
        "../../../api/video_codecs:builtin_video_encoder_factory",
        "../../../media:rtc_audio_video",
        "../../../media:rtc_media_engine_defaults",
        "../../../modules/audio_device:audio_device_impl",
        "../../../modules/audio_processing/aec_dump",
        "../../../p2p:rtc_p2p",
        "../../../rtc_base:rtc_task_queue",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings",
      ]
    }

    rtc_library("media_helper") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "media/media_helper.cc",
        "media/media_helper.h",
        "media/test_video_capturer_video_track_source.h",
      ]
      deps = [
        ":peer_configurer",
        ":test_peer",
        ":video_quality_analyzer_injection_helper",
        "../..:fileutils",
        "../..:platform_video_capturer",
        "../..:video_test_common",
        "../../../api:create_frame_generator",
        "../../../api:frame_generator_api",
        "../../../api:media_stream_interface",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/video:video_frame",
        "../../../pc:peerconnection",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/types:variant" ]
    }

    rtc_library("peer_configurer") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "peer_configurer.cc",
        "peer_configurer.h",
      ]
      deps = [
        ":peer_connection_quality_test_params",
        "../..:fileutils",
        "../../../api:callfactory_api",
        "../../../api:create_peer_connection_quality_test_frame_generator",
        "../../../api:fec_controller_api",
        "../../../api:packet_socket_factory",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/rtc_event_log",
        "../../../api/task_queue",
        "../../../api/transport:network_control",
        "../../../api/video_codecs:video_codecs_api",
        "../../../rtc_base",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
    }

    rtc_library("test_activities_executor") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test_activities_executor.cc",
        "test_activities_executor.h",
      ]
      deps = [
        "../../../api/units:time_delta",
        "../../../api/units:timestamp",
        "../../../rtc_base:checks",
        "../../../rtc_base:criticalsection",
        "../../../rtc_base:logging",
        "../../../rtc_base:rtc_base_approved",
        "../../../rtc_base:task_queue_for_test",
        "../../../rtc_base/task_utils:repeating_task",
        "../../../system_wrappers",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }

    rtc_library("peerconnection_quality_test") {
      visibility = [ "*" ]
      testonly = true

      sources = [
        "peer_connection_quality_test.cc",
        "peer_connection_quality_test.h",
      ]
      deps = [
        ":analyzer_helper",
        ":cross_media_metrics_reporter",
        ":default_audio_quality_analyzer",
        ":default_video_quality_analyzer",
        ":media_helper",
        ":peer_configurer",
        ":peer_connection_quality_test_params",
        ":sdp_changer",
        ":single_process_encoded_image_data_injector",
        ":stats_poller",
        ":test_activities_executor",
        ":test_peer",
        ":test_peer_factory",
        ":video_quality_analyzer_injection_helper",
        ":video_quality_metrics_reporter",
        "../..:field_trial",
        "../..:fileutils",
        "../..:perf_test",
        "../../../api:audio_quality_analyzer_api",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:media_stream_interface",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:rtc_event_log_output_file",
        "../../../api:scoped_refptr",
        "../../../api:video_quality_analyzer_api",
        "../../../api/rtc_event_log",
        "../../../api/task_queue",
        "../../../api/task_queue:default_task_queue_factory",
        "../../../api/units:time_delta",
        "../../../api/units:timestamp",
        "../../../pc:pc_test_utils",
        "../../../pc:peerconnection",
        "../../../rtc_base",
        "../../../rtc_base:gunit_helpers",
        "../../../rtc_base:macromagic",
        "../../../rtc_base:rtc_base_approved",
        "../../../rtc_base:safe_conversions",
        "../../../rtc_base:task_queue_for_test",
        "../../../system_wrappers",
        "../../../system_wrappers:field_trial",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
    }

    rtc_library("single_process_encoded_image_data_injector_unittest") {
      testonly = true
      sources = [
        "analyzer/video/single_process_encoded_image_data_injector_unittest.cc",
      ]
      deps = [
        ":single_process_encoded_image_data_injector",
        "../../../api/video:encoded_image",
        "../../../rtc_base:rtc_base_approved",
        "../../../test:test_support",
      ]
    }

    rtc_library("default_encoded_image_data_injector_unittest") {
      testonly = true
      sources =
          [ "analyzer/video/default_encoded_image_data_injector_unittest.cc" ]
      deps = [
        ":default_encoded_image_data_injector",
        "../../../api/video:encoded_image",
        "../../../rtc_base:rtc_base_approved",
        "../../../test:test_support",
      ]
    }

    peer_connection_e2e_smoke_test_resources = [
      "../../../resources/pc_quality_smoke_test_alice_source.wav",
      "../../../resources/pc_quality_smoke_test_bob_source.wav",
    ]
    if (is_ios) {
      bundle_data("peer_connection_e2e_smoke_test_resources_bundle_data") {
        testonly = true
        sources = peer_connection_e2e_smoke_test_resources
        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
      }
    }

    rtc_library("peer_connection_e2e_smoke_test") {
      testonly = true

      sources = [ "peer_connection_e2e_smoke_test.cc" ]
      deps = [
        ":default_audio_quality_analyzer",
        ":default_video_quality_analyzer",
        ":network_quality_metrics_reporter",
        "../../../api:callfactory_api",
        "../../../api:create_network_emulation_manager",
        "../../../api:create_peer_connection_quality_test_frame_generator",
        "../../../api:create_peerconnection_quality_test_fixture",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:media_stream_interface",
        "../../../api:network_emulation_manager_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:scoped_refptr",
        "../../../api:simulated_network_api",
        "../../../api/audio_codecs:builtin_audio_decoder_factory",
        "../../../api/audio_codecs:builtin_audio_encoder_factory",
        "../../../api/video_codecs:builtin_video_decoder_factory",
        "../../../api/video_codecs:builtin_video_encoder_factory",
        "../../../call:simulated_network",
        "../../../media:rtc_audio_video",
        "../../../modules/audio_device:audio_device_impl",
        "../../../p2p:rtc_p2p",
        "../../../pc:pc_test_utils",
        "../../../pc:peerconnection_wrapper",
        "../../../rtc_base",
        "../../../rtc_base:gunit_helpers",
        "../../../rtc_base:logging",
        "../../../rtc_base:rtc_event",
        "../../../system_wrappers:field_trial",
        "../../../test:field_trial",
        "../../../test:fileutils",
        "../../../test:test_support",
      ]
      data = peer_connection_e2e_smoke_test_resources
      if (is_ios) {
        deps += [ ":peer_connection_e2e_smoke_test_resources_bundle_data" ]
      }
    }

    rtc_library("stats_poller") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "stats_poller.cc",
        "stats_poller.h",
      ]
      deps = [
        ":test_peer",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:rtc_stats_api",
        "../../../api:stats_observer_interface",
        "../../../rtc_base:logging",
      ]
    }

    rtc_library("default_video_quality_analyzer_test") {
      testonly = true
      sources = [ "analyzer/video/default_video_quality_analyzer_test.cc" ]
      deps = [
        ":default_video_quality_analyzer",
        "../..:test_support",
        "../../../api:create_frame_generator",
        "../../../api:rtp_packet_info",
        "../../../api/video:encoded_image",
        "../../../api/video:video_frame",
        "../../../api/video:video_frame_i420",
        "../../../modules/rtp_rtcp:rtp_rtcp_format",
        "../../../rtc_base:stringutils",
        "../../../system_wrappers",
      ]
    }

    rtc_library("multi_head_queue_test") {
      testonly = true
      sources = [ "analyzer/video/multi_head_queue_test.cc" ]
      deps = [
        ":multi_head_queue",
        "../../../test:test_support",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
    }
  }

  rtc_library("analyzer_helper") {
    visibility = [ "*" ]
    sources = [
      "analyzer_helper.cc",
      "analyzer_helper.h",
    ]
    deps = [
      "../../../api:track_id_stream_info_map",
      "../../../rtc_base:macromagic",
      "../../../rtc_base/synchronization:sequence_checker",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("default_audio_quality_analyzer") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/audio/default_audio_quality_analyzer.cc",
      "analyzer/audio/default_audio_quality_analyzer.h",
    ]

    deps = [
      "../..:perf_test",
      "../../../api:audio_quality_analyzer_api",
      "../../../api:rtc_stats_api",
      "../../../api:stats_observer_interface",
      "../../../api:track_id_stream_info_map",
      "../../../api/units:time_delta",
      "../../../api/units:timestamp",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
      "../../../rtc_base:rtc_numerics",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("example_video_quality_analyzer") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "analyzer/video/example_video_quality_analyzer.cc",
      "analyzer/video/example_video_quality_analyzer.h",
    ]

    deps = [
      "../../../api:array_view",
      "../../../api:video_quality_analyzer_api",
      "../../../api/video:encoded_image",
      "../../../api/video:video_frame",
      "../../../api/video:video_rtp_headers",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
    ]
  }

  rtc_library("video_quality_metrics_reporter") {
    visibility = [ "*" ]

    testonly = true
    sources = [
      "analyzer/video/video_quality_metrics_reporter.cc",
      "analyzer/video/video_quality_metrics_reporter.h",
    ]
    deps = [
      "../..:perf_test",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:track_id_stream_info_map",
      "../../../api/units:data_rate",
      "../../../api/units:data_size",
      "../../../api/units:time_delta",
      "../../../api/units:timestamp",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_numerics",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("default_video_quality_analyzer") {
    visibility = [ "*" ]

    testonly = true
    sources = [
      "analyzer/video/default_video_quality_analyzer.cc",
      "analyzer/video/default_video_quality_analyzer.h",
    ]

    deps = [
      ":multi_head_queue",
      "../..:perf_test",
      "../../../api:array_view",
      "../../../api:video_quality_analyzer_api",
      "../../../api/units:time_delta",
      "../../../api/units:timestamp",
      "../../../api/video:encoded_image",
      "../../../api/video:video_frame",
      "../../../api/video:video_frame_i420",
      "../../../api/video:video_rtp_headers",
      "../../../common_video",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
      "../../../rtc_base:rtc_base_approved",
      "../../../rtc_base:rtc_base_tests_utils",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:rtc_numerics",
      "../../../rtc_base:timeutils",
      "../../../system_wrappers",
    ]
  }

  rtc_library("network_quality_metrics_reporter") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "network_quality_metrics_reporter.cc",
      "network_quality_metrics_reporter.h",
    ]
    deps = [
      "../..:perf_test",
      "../../../api:network_emulation_manager_api",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:track_id_stream_info_map",
      "../../../api/units:data_size",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_event",
      "../../../system_wrappers:field_trial",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("cross_media_metrics_reporter") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "cross_media_metrics_reporter.cc",
      "cross_media_metrics_reporter.h",
    ]
    deps = [
      "../..:perf_test",
      "../../../api:network_emulation_manager_api",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:track_id_stream_info_map",
      "../../../api/units:timestamp",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:rtc_numerics",
      "../../../system_wrappers:field_trial",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("sdp_changer") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "sdp/sdp_changer.cc",
      "sdp/sdp_changer.h",
    ]
    deps = [
      "../../../api:array_view",
      "../../../api:libjingle_peerconnection_api",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtp_parameters",
      "../../../media:rtc_media_base",
      "../../../p2p:rtc_p2p",
      "../../../pc:peerconnection",
      "../../../pc:rtc_pc_base",
      "../../../rtc_base:stringutils",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/abseil-cpp/absl/strings:strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("multi_head_queue") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "analyzer/video/multi_head_queue.h" ]
    deps = [ "../../../rtc_base:checks" ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }
}
