# 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 = [
      ":encoded_image_data_injector_api",
      ":example_video_quality_analyzer",
      ":quality_analyzing_video_decoder",
      ":quality_analyzing_video_encoder",
      ":single_process_encoded_image_data_injector",
      ":video_frame_tracking_id_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_video_quality_analyzer_frames_comparator_test",
        ":default_video_quality_analyzer_metric_names_test",
        ":default_video_quality_analyzer_stream_state_test",
        ":default_video_quality_analyzer_test",
        ":multi_reader_queue_test",
        ":names_collection_test",
        ":peer_connection_e2e_smoke_test",
        ":peer_connection_quality_test_metric_names_test",
        ":simulcast_dummy_buffer_helper_test",
        ":single_process_encoded_image_data_injector_unittest",
        ":stats_poller_test",
        ":video_dumping_test",
        ":video_frame_tracking_id_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:field_trials_view",
      "../../../api:libjingle_peerconnection_api",
      "../../../api:packet_socket_factory",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api/audio:audio_mixer_api",
      "../../../api/rtc_event_log",
      "../../../api/task_queue",
      "../../../api/transport:network_control",
      "../../../api/video_codecs:video_codecs_api",
      "../../../modules/audio_processing:api",
      "../../../p2p:rtc_p2p",
      "../../../rtc_base",
      "../../../rtc_base:threading",
    ]
  }

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

    deps = [ "../../../api/video:encoded_image" ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  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",
      "../../../rtc_base/synchronization:mutex",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
  }

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

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

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

  rtc_library("simulcast_dummy_buffer_helper_test") {
    testonly = true
    sources = [ "analyzer/video/simulcast_dummy_buffer_helper_test.cc" ]
    deps = [
      ":simulcast_dummy_buffer_helper",
      "../..:test_support",
      "../../../api/video:video_frame",
      "../../../rtc_base:random",
    ]
  }

  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",
      ":simulcast_dummy_buffer_helper",
      "../../../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",
      "../../../rtc_base/synchronization:mutex",
    ]
    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",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../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",
      "../../../modules/video_coding/svc:scalability_mode_util",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
      "../../../rtc_base/synchronization:mutex",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  if (rtc_include_tests) {
    rtc_library("video_dumping") {
      testonly = true
      sources = [
        "analyzer/video/video_dumping.cc",
        "analyzer/video/video_dumping.h",
      ]
      deps = [
        "../..:video_test_support",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/video:video_frame",
        "../../../system_wrappers",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }

    rtc_library("video_dumping_test") {
      testonly = true
      sources = [ "analyzer/video/video_dumping_test.cc" ]
      deps = [
        ":video_dumping",
        "../..:fileutils",
        "../..:test_support",
        "../..:video_test_support",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:scoped_refptr",
        "../../../api/video:video_frame",
        "../../../rtc_base:random",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
    }

    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",
        ":quality_analyzing_video_decoder",
        ":quality_analyzing_video_encoder",
        ":simulcast_dummy_buffer_helper",
        ":video_dumping",
        "../..:fixed_fps_video_frame_writer_adapter",
        "../..: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:checks",
        "../../../rtc_base:criticalsection",
        "../../../rtc_base:logging",
        "../../../rtc_base:stringutils",
        "../../../rtc_base/synchronization:mutex",
        "../../../system_wrappers",
        "../../../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:swap_queue",
      ]
    }

    rtc_library("test_peer") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "test_peer.cc",
        "test_peer.h",
      ]
      deps = [
        ":peer_configurer",
        ":peer_connection_quality_test_params",
        ":stats_provider",
        "../../../api:frame_generator_api",
        "../../../api:function_view",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:scoped_refptr",
        "../../../api:sequence_checker",
        "../../../api/task_queue:pending_task_safety_flag",
        "../../../modules/audio_processing:api",
        "../../../pc:peerconnection_wrapper",
        "../../../rtc_base:logging",
        "../../../rtc_base:refcount",
        "../../../rtc_base/synchronization:mutex",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings",
        "//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:create_time_controller",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:time_controller",
        "../../../api/rtc_event_log:rtc_event_log_factory",
        "../../../api/task_queue:default_task_queue_factory",
        "../../../api/transport:field_trial_based_config",
        "../../../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",
        "../../../rtc_base:threading",
      ]
      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:session_description",
        "../../../pc:video_track_source",
      ]
      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/audio:audio_mixer_api",
        "../../../api/rtc_event_log",
        "../../../api/task_queue",
        "../../../api/transport:network_control",
        "../../../api/video_codecs:video_codecs_api",
        "../../../modules/audio_processing:api",
        "../../../modules/video_coding/svc:scalability_mode_util",
        "../../../modules/video_coding/svc:scalability_structures",
        "../../../rtc_base",
        "../../../rtc_base:macromagic",
        "../../../rtc_base:threading",
      ]
      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/task_queue",
        "../../../api/units:time_delta",
        "../../../api/units:timestamp",
        "../../../rtc_base:checks",
        "../../../rtc_base:criticalsection",
        "../../../rtc_base:logging",
        "../../../rtc_base:task_queue_for_test",
        "../../../rtc_base/synchronization:mutex",
        "../../../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_frame_tracking_id_injector",
        ":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:time_controller",
        "../../../api:video_quality_analyzer_api",
        "../../../api/rtc_event_log",
        "../../../api/task_queue",
        "../../../api/test/metrics:metric",
        "../../../api/test/metrics:metrics_logger",
        "../../../api/test/metrics:metrics_logger_and_exporter",
        "../../../api/units:time_delta",
        "../../../api/units:timestamp",
        "../../../pc:pc_test_utils",
        "../../../pc:sdp_utils",
        "../../../rtc_base",
        "../../../rtc_base:gunit_helpers",
        "../../../rtc_base:macromagic",
        "../../../rtc_base:safe_conversions",
        "../../../rtc_base:stringutils",
        "../../../rtc_base:task_queue_for_test",
        "../../../rtc_base:threading",
        "../../../rtc_base/synchronization:mutex",
        "../../../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:buffer",
        "../../../test:test_support",
      ]
    }

    rtc_library("video_frame_tracking_id_injector_unittest") {
      testonly = true
      sources =
          [ "analyzer/video/video_frame_tracking_id_injector_unittest.cc" ]
      deps = [
        ":video_frame_tracking_id_injector",
        "../../../api/video:encoded_image",
        "../../../rtc_base:buffer",
        "../../../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",
        ":default_video_quality_analyzer_shared",
        ":network_quality_metrics_reporter",
        ":stats_based_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/test/metrics:global_metrics_logger_and_exporter",
        "../../../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_mac || is_ios) {
        deps += [ "../../../modules/video_coding:objc_codec_factory_helper" ]
      }
      if (is_ios) {
        deps += [ ":peer_connection_e2e_smoke_test_resources_bundle_data" ]
      }
    }

    rtc_library("peer_connection_quality_test_metric_names_test") {
      testonly = true
      sources = [ "peer_connection_quality_test_metric_names_test.cc" ]
      deps = [
        ":metric_metadata_keys",
        ":peerconnection_quality_test",
        ":stats_based_network_quality_metrics_reporter",
        "../..:test_support",
        "../../../api:create_network_emulation_manager",
        "../../../api:create_peer_connection_quality_test_frame_generator",
        "../../../api:network_emulation_manager_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/test/metrics:metrics_logger",
        "../../../api/test/metrics:metrics_logger_and_exporter",
        "../../../api/test/metrics:stdout_metrics_exporter",
        "../../../api/units:time_delta",
      ]
    }

    rtc_library("stats_provider") {
      visibility = [ "*" ]
      testonly = true
      sources = [ "stats_provider.h" ]
      deps = [ "../../../api:rtc_stats_api" ]
    }

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

    rtc_library("stats_poller_test") {
      testonly = true
      sources = [ "stats_poller_test.cc" ]
      deps = [
        ":stats_poller",
        "../..:test_support",
        "../../../api:rtc_stats_api",
      ]
    }

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

    rtc_library("default_video_quality_analyzer_metric_names_test") {
      testonly = true
      sources = [
        "analyzer/video/default_video_quality_analyzer_metric_names_test.cc",
      ]
      deps = [
        ":default_video_quality_analyzer",
        ":default_video_quality_analyzer_shared",
        "../..:test_support",
        "../../../api:create_frame_generator",
        "../../../api:rtp_packet_info",
        "../../../api/test/metrics:metric",
        "../../../api/test/metrics:metrics_logger",
        "../../../api/test/metrics:metrics_logger_and_exporter",
        "../../../api/test/metrics:stdout_metrics_exporter",
        "../../../api/video:encoded_image",
        "../../../api/video:video_frame",
        "../../../common_video",
        "../../../rtc_base:stringutils",
        "../../../rtc_tools:video_quality_analysis",
        "../../../system_wrappers",
      ]
    }

    rtc_library("default_video_quality_analyzer_frames_comparator_test") {
      testonly = true
      sources = [ "analyzer/video/default_video_quality_analyzer_frames_comparator_test.cc" ]
      deps = [
        ":default_video_quality_analyzer_internal",
        ":default_video_quality_analyzer_shared",
        "../..:test_support",
        "../../../api:create_frame_generator",
        "../../../api/units:timestamp",
        "../../../rtc_base:stringutils",
        "../../../system_wrappers",
      ]
    }

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

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

    rtc_library("default_video_quality_analyzer_stream_state_test") {
      testonly = true
      sources = [
        "analyzer/video/default_video_quality_analyzer_stream_state_test.cc",
      ]
      deps = [
        ":default_video_quality_analyzer_internal",
        "../../../api/units:timestamp",
        "../../../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:sequence_checker",
      "../../../api:track_id_stream_info_map",
      "../../../rtc_base:macromagic",
    ]
    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/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/test/metrics:metrics_logger_and_exporter",
      "../../../api/units:time_delta",
      "../../../api/units:timestamp",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
      "../../../rtc_base:rtc_numerics",
      "../../../rtc_base/synchronization:mutex",
    ]
    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_base/synchronization:mutex",
    ]
  }

  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 = [
      ":metric_metadata_keys",
      "../..:perf_test",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:track_id_stream_info_map",
      "../../../api/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/test/metrics:metrics_logger_and_exporter",
      "../../../api/units:data_rate",
      "../../../api/units:data_size",
      "../../../api/units:time_delta",
      "../../../api/units:timestamp",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_numerics",
      "../../../rtc_base/synchronization:mutex",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

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

  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 = [
      ":default_video_quality_analyzer_internal",
      ":default_video_quality_analyzer_shared",
      ":metric_metadata_keys",
      "../..:perf_test",
      "../../../api:array_view",
      "../../../api:video_quality_analyzer_api",
      "../../../api/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/test/metrics:metrics_logger_and_exporter",
      "../../../api/units:data_size",
      "../../../api/units:time_delta",
      "../../../api/units:timestamp",
      "../../../api/video:encoded_image",
      "../../../api/video:video_frame",
      "../../../api/video:video_frame_type",
      "../../../api/video:video_rtp_headers",
      "../../../common_video",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
      "../../../rtc_base:macromagic",
      "../../../rtc_base:platform_thread",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:rtc_numerics",
      "../../../rtc_base:stringutils",
      "../../../rtc_base:timeutils",
      "../../../rtc_base/synchronization:mutex",
      "../../../rtc_tools:video_quality_analysis",
      "../../../system_wrappers",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  # This target contains implementation details of DefaultVideoQualityAnalyzer,
  # so headers exported by it shouldn't be used in other places.
  rtc_library("default_video_quality_analyzer_internal") {
    visibility = [
      ":default_video_quality_analyzer",
      ":default_video_quality_analyzer_frames_comparator_test",
      ":default_video_quality_analyzer_stream_state_test",
      ":names_collection_test",
    ]

    testonly = true
    sources = [
      "analyzer/video/default_video_quality_analyzer_cpu_measurer.cc",
      "analyzer/video/default_video_quality_analyzer_cpu_measurer.h",
      "analyzer/video/default_video_quality_analyzer_frame_in_flight.cc",
      "analyzer/video/default_video_quality_analyzer_frame_in_flight.h",
      "analyzer/video/default_video_quality_analyzer_frames_comparator.cc",
      "analyzer/video/default_video_quality_analyzer_frames_comparator.h",
      "analyzer/video/default_video_quality_analyzer_internal_shared_objects.cc",
      "analyzer/video/default_video_quality_analyzer_internal_shared_objects.h",
      "analyzer/video/default_video_quality_analyzer_stream_state.cc",
      "analyzer/video/default_video_quality_analyzer_stream_state.h",
      "analyzer/video/names_collection.cc",
      "analyzer/video/names_collection.h",
    ]

    deps = [
      ":default_video_quality_analyzer_shared",
      ":metric_metadata_keys",
      ":multi_reader_queue",
      "../../../api:array_view",
      "../../../api:scoped_refptr",
      "../../../api/numerics:numerics",
      "../../../api/units:data_size",
      "../../../api/units:timestamp",
      "../../../api/video:video_frame",
      "../../../api/video:video_frame_type",
      "../../../common_video",
      "../../../rtc_base:checks",
      "../../../rtc_base:platform_thread",
      "../../../rtc_base:rtc_base_tests_utils",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:stringutils",
      "../../../rtc_base:timeutils",
      "../../../rtc_base/synchronization:mutex",
      "../../../rtc_tools:video_quality_analysis",
      "../../../system_wrappers:system_wrappers",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings:strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

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

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

    deps = [
      "../../../api/numerics:numerics",
      "../../../api/units:timestamp",
      "../../../rtc_base:checks",
      "../../../rtc_base:stringutils",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }

  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/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/test/metrics:metrics_logger_and_exporter",
      "../../../api/units:data_size",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base/synchronization:mutex",
      "../../../system_wrappers:field_trial",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("stats_based_network_quality_metrics_reporter") {
    visibility = [ "*" ]
    testonly = true
    sources = [
      "stats_based_network_quality_metrics_reporter.cc",
      "stats_based_network_quality_metrics_reporter.h",
    ]
    deps = [
      "../..:perf_test",
      "../../../api:array_view",
      "../../../api:network_emulation_manager_api",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:scoped_refptr",
      "../../../api/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/test/metrics:metrics_logger_and_exporter",
      "../../../api/test/network_emulation",
      "../../../api/units:data_rate",
      "../../../api/units:data_size",
      "../../../api/units:timestamp",
      "../../../rtc_base",
      "../../../rtc_base:checks",
      "../../../rtc_base:ip_address",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:stringutils",
      "../../../rtc_base/synchronization:mutex",
      "../../../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/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/test/metrics:metrics_logger_and_exporter",
      "../../../api/units:timestamp",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:rtc_numerics",
      "../../../rtc_base/synchronization:mutex",
      "../../../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:sdp_utils",
      "../../../pc:session_description",
      "../../../pc:simulcast_description",
      "../../../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_reader_queue") {
    visibility = [ "*" ]
    testonly = true
    sources = [ "analyzer/video/multi_reader_queue.h" ]
    deps = [ "../../../rtc_base:checks" ]
    absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
  }
}
