# Copyright (c) 2015 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("//build/config/features.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("../../webrtc.gni")

rtc_library("webrtc_fuzzer_main") {
  sources = [ "webrtc_fuzzer_main.cc" ]
  testonly = true
  deps = [
    "../../rtc_base:logging",
    "//testing/libfuzzer:fuzzing_engine_main",
  ]

  # When WebRTC fuzzer tests are built on Chromium bots they need to link
  # with Chromium's implementation of metrics, field trial, and system time.
  if (build_with_chromium) {
    deps += [
      "../../../webrtc_overrides:field_trial",
      "../../../webrtc_overrides:metrics",
      "../../../webrtc_overrides:system_time",
    ]
  }
}

rtc_library("fuzz_data_helper") {
  testonly = true
  sources = [
    "fuzz_data_helper.cc",
    "fuzz_data_helper.h",
  ]
  deps = [
    "../../api:array_view",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
  visibility = [ ":*" ]  # Only targets in this file can depend on this.
}

set_defaults("webrtc_fuzzer_test") {
  configs = rtc_add_configs
}

template("webrtc_fuzzer_test") {
  fuzzer_test(target_name) {
    forward_variables_from(invoker, "*")
    deps += [
      ":fuzz_data_helper",
      ":webrtc_fuzzer_main",
    ]
    additional_configs = configs

    assert(
        !defined(absl_deps),
        "`absl_deps` has been deprecated, add your Abseil dependencies to the `deps` variable.")

    # Abseil dependencies need to be converted to //third_party/abseil-cpp:absl when build_with_chromium=true
    if (build_with_chromium) {
      absl_dependencies =
          filter_labels_include(deps, [ "//third_party/abseil-cpp/*" ])
      if (absl_dependencies != []) {
        filtered_deps =
            filter_labels_exclude(deps, [ "//third_party/abseil-cpp/*" ])
        deps = []
        deps = filtered_deps
        deps += [ "//third_party/abseil-cpp:absl" ]
      }
    }

    if (!build_with_chromium && is_clang) {
      suppressed_configs = [ "//build/config/clang:find_bad_constructs" ]
    }
  }
}

webrtc_fuzzer_test("h264_depacketizer_fuzzer") {
  sources = [ "h264_depacketizer_fuzzer.cc" ]
  deps = [ "../../modules/rtp_rtcp" ]
  seed_corpus = "corpora/h264-depacketizer-fuzzer-corpus"
}

webrtc_fuzzer_test("vp8_depacketizer_fuzzer") {
  sources = [ "vp8_depacketizer_fuzzer.cc" ]
  deps = [
    "../../api:array_view",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_video_header",
  ]
}

webrtc_fuzzer_test("vp9_depacketizer_fuzzer") {
  sources = [ "vp9_depacketizer_fuzzer.cc" ]
  deps = [
    "../../api:array_view",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_video_header",
  ]
}

webrtc_fuzzer_test("vp8_qp_parser_fuzzer") {
  sources = [ "vp8_qp_parser_fuzzer.cc" ]
  deps = [
    "../../modules/video_coding:video_coding_utility",
    "../../modules/video_coding/",
  ]
}

webrtc_fuzzer_test("vp9_qp_parser_fuzzer") {
  sources = [ "vp9_qp_parser_fuzzer.cc" ]
  deps = [
    "../../modules/video_coding:video_coding_utility",
    "../../modules/video_coding/",
  ]
}

webrtc_fuzzer_test("h264_bitstream_parser_fuzzer") {
  sources = [ "h264_bitstream_parser_fuzzer.cc" ]
  deps = [
    "../../common_video",
    "../../modules/video_coding/",
  ]
}

if (rtc_use_h265) {
  webrtc_fuzzer_test("h265_bitstream_parser_fuzzer") {
    sources = [ "h265_bitstream_parser_fuzzer.cc" ]
    deps = [
      "../../common_video",
      "../../modules/video_coding/",
    ]
  }

  webrtc_fuzzer_test("h265_depacketizer_fuzzer") {
    sources = [ "h265_depacketizer_fuzzer.cc" ]
    deps = [ "../../modules/rtp_rtcp" ]
  }
}

webrtc_fuzzer_test("forward_error_correction_fuzzer") {
  sources = [ "forward_error_correction_fuzzer.cc" ]
  deps = [
    "../../api:scoped_refptr",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:byte_buffer",
  ]
}

webrtc_fuzzer_test("flexfec_header_reader_fuzzer") {
  sources = [ "flexfec_header_reader_fuzzer.cc" ]
  deps = [
    "../../api:scoped_refptr",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

webrtc_fuzzer_test("flexfec_sender_fuzzer") {
  sources = [ "flexfec_sender_fuzzer.cc" ]
  deps = [
    "../../api/environment",
    "../../api/environment:environment_factory",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../system_wrappers",
  ]
}

webrtc_fuzzer_test("ulpfec_header_reader_fuzzer") {
  sources = [ "ulpfec_header_reader_fuzzer.cc" ]
  deps = [
    "../../api:scoped_refptr",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:fec_test_helper",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

webrtc_fuzzer_test("ulpfec_generator_fuzzer") {
  sources = [ "ulpfec_generator_fuzzer.cc" ]
  deps = [
    "../../api/environment",
    "../../api/environment:environment_factory",
    "../../modules:module_api_public",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:fec_test_helper",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
    "../../rtc_base:copy_on_write_buffer",
    "../../system_wrappers",
  ]
}

webrtc_fuzzer_test("ulpfec_receiver_fuzzer") {
  sources = [ "ulpfec_receiver_fuzzer.cc" ]
  deps = [
    ":fuzz_data_helper",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

webrtc_fuzzer_test("flexfec_receiver_fuzzer") {
  sources = [ "flexfec_receiver_fuzzer.cc" ]
  deps = [
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

webrtc_fuzzer_test("rtp_video_frame_assembler_fuzzer") {
  sources = [ "rtp_video_frame_assembler_fuzzer.cc" ]
  deps = [
    "../../api/video:rtp_video_frame_assembler",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

webrtc_fuzzer_test("rtcp_receiver_fuzzer") {
  sources = [ "rtcp_receiver_fuzzer.cc" ]
  deps = [
    "../../api:array_view",
    "../../api/environment",
    "../../api/environment:environment_factory",
    "../../modules/rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
    "../../system_wrappers",
    "../../test:explicit_key_value_config",
  ]
  seed_corpus = "corpora/rtcp-corpus"
}

webrtc_fuzzer_test("rtp_packet_fuzzer") {
  sources = [ "rtp_packet_fuzzer.cc" ]
  deps = [
    "../../common_video:corruption_detection_message",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
  seed_corpus = "corpora/rtp-corpus"
}

webrtc_fuzzer_test("rtp_packetizer_av1_fuzzer") {
  sources = [ "rtp_packetizer_av1_fuzzer.cc" ]
  deps = [
    "../../api/video:video_frame_type",
    "../../modules/rtp_rtcp:rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("rtp_format_h264_fuzzer") {
  sources = [ "rtp_format_h264_fuzzer.cc" ]
  deps = [
    "../../api/video:video_frame_type",
    "../../modules/rtp_rtcp:rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("rtp_format_vp8_fuzzer") {
  sources = [ "rtp_format_vp8_fuzzer.cc" ]
  deps = [
    "../../api/video:video_frame_type",
    "../../modules/rtp_rtcp:rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("rtp_format_vp9_fuzzer") {
  sources = [ "rtp_format_vp9_fuzzer.cc" ]
  deps = [
    "../../api/video:video_frame_type",
    "../../modules/rtp_rtcp:rtp_rtcp",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("receive_side_congestion_controller_fuzzer") {
  sources = [ "receive_side_congestion_controller_fuzzer.cc" ]
  deps = [
    "../../api:array_view",
    "../../api/environment:environment_factory",
    "../../api/units:time_delta",
    "../../api/units:timestamp",
    "../../modules/congestion_controller",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../system_wrappers",
  ]
  seed_corpus = "corpora/receive-side-cc"
}

rtc_library("audio_decoder_fuzzer") {
  testonly = true
  sources = [
    "audio_decoder_fuzzer.cc",
    "audio_decoder_fuzzer.h",
  ]
  deps = [
    "../../api/audio_codecs:audio_codecs_api",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("audio_decoder_g722_fuzzer") {
  sources = [ "audio_decoder_g722_fuzzer.cc" ]
  deps = [
    ":audio_decoder_fuzzer",
    "../../modules/audio_coding:g722",
  ]
}

webrtc_fuzzer_test("audio_decoder_ilbc_fuzzer") {
  sources = [ "audio_decoder_ilbc_fuzzer.cc" ]
  deps = [
    ":audio_decoder_fuzzer",
    "../../modules/audio_coding:ilbc",
  ]
}

webrtc_fuzzer_test("audio_decoder_opus_fuzzer") {
  sources = [ "audio_decoder_opus_fuzzer.cc" ]
  deps = [
    ":audio_decoder_fuzzer",
    "..:explicit_key_value_config",
    "../../modules/audio_coding:webrtc_opus",
  ]
}

webrtc_fuzzer_test("audio_decoder_opus_redundant_fuzzer") {
  sources = [ "audio_decoder_opus_redundant_fuzzer.cc" ]
  deps = [
    ":audio_decoder_fuzzer",
    "..:explicit_key_value_config",
    "../../modules/audio_coding:webrtc_opus",
  ]
}

webrtc_fuzzer_test("audio_decoder_multiopus_fuzzer") {
  sources = [ "audio_decoder_multistream_opus_fuzzer.cc" ]
  deps = [
    ":audio_decoder_fuzzer",
    "../../api/audio_codecs/opus:audio_decoder_multiopus",
    "../../api/audio_codecs/opus:audio_decoder_opus_config",
  ]
}

webrtc_fuzzer_test("audio_decoder_pcm_fuzzer") {
  sources = [ "audio_decoder_pcm_fuzzer.cc" ]
  deps = [
    ":audio_decoder_fuzzer",
    "../../modules/audio_coding:g711",
  ]
}

webrtc_fuzzer_test("audio_decoder_pcm16b_fuzzer") {
  sources = [ "audio_decoder_pcm16b_fuzzer.cc" ]
  deps = [
    ":audio_decoder_fuzzer",
    "../../modules/audio_coding:pcm16b",
  ]
}

rtc_library("audio_encoder_fuzzer") {
  testonly = true
  sources = [
    "audio_encoder_fuzzer.cc",
    "audio_encoder_fuzzer.h",
  ]
  deps = [
    ":fuzz_data_helper",
    "../../api:array_view",
    "../../api/audio_codecs:audio_codecs_api",
    "../../rtc_base:buffer",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("audio_encoder_opus_fuzzer") {
  sources = [ "audio_encoder_opus_fuzzer.cc" ]
  deps = [
    ":audio_encoder_fuzzer",
    "../../api/audio_codecs/opus:audio_encoder_opus",
    "../../api/environment",
    "../../api/environment:environment_factory",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("turn_unwrap_fuzzer") {
  sources = [ "turn_unwrap_fuzzer.cc" ]
  deps = [
    "../../media",
    "../../media:turn_utils",
  ]
}

webrtc_fuzzer_test("neteq_rtp_fuzzer") {
  sources = [ "neteq_rtp_fuzzer.cc" ]
  deps = [
    "../../api:array_view",
    "../../api/audio_codecs:builtin_audio_decoder_factory",
    "../../modules/audio_coding:neteq",
    "../../modules/audio_coding:neteq_test_tools",
    "../../modules/audio_coding:neteq_tools_minimal",
    "../../modules/audio_coding:pcm16b",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
  ]
}

webrtc_fuzzer_test("neteq_signal_fuzzer") {
  sources = [ "neteq_signal_fuzzer.cc" ]
  deps = [
    "../../api:array_view",
    "../../api/audio_codecs:builtin_audio_decoder_factory",
    "../../modules/audio_coding:neteq",
    "../../modules/audio_coding:neteq_test_tools",
    "../../modules/audio_coding:neteq_tools_minimal",
    "../../modules/audio_coding:pcm16b",
    "../../rtc_base:random",
    "../../rtc_base:safe_conversions",
  ]
}

webrtc_fuzzer_test("residual_echo_detector_fuzzer") {
  sources = [ "residual_echo_detector_fuzzer.cc" ]
  deps = [
    "../../api/audio:echo_detector_creator",
    "../../rtc_base:checks",
    "../../rtc_base:refcount",
  ]
}

webrtc_fuzzer_test("sdp_parser_fuzzer") {
  sources = [ "sdp_parser_fuzzer.cc" ]
  deps = [
    "../../api:libjingle_peerconnection_api",
    "../../pc:libjingle_peerconnection",
  ]
  seed_corpus = "corpora/sdp-corpus"
}

if (!build_with_chromium) {
  # This target depends on test infrastructure that can't be built
  # with Chromium at the moment.
  # TODO: bugs.webrtc.org/42222682 - Make this fuzzer build in Chromium.

  webrtc_fuzzer_test("sdp_integration_fuzzer") {
    sources = [ "sdp_integration_fuzzer.cc" ]
    deps = [
      "../../api:libjingle_peerconnection_api",
      "../../pc:integration_test_helpers",
      "../../pc:libjingle_peerconnection",
      "../../test:test_support",
      "//third_party/abseil-cpp/absl/strings",
    ]
    seed_corpus = "corpora/sdp-corpus"
  }
}

webrtc_fuzzer_test("stun_parser_fuzzer") {
  sources = [ "stun_parser_fuzzer.cc" ]
  deps = [
    "../../api/transport:stun_types",
    "../../p2p:rtc_p2p",
  ]
  seed_corpus = "corpora/stun-corpus"
  dict = "corpora/stun.tokens"
}

webrtc_fuzzer_test("stun_validator_fuzzer") {
  sources = [ "stun_validator_fuzzer.cc" ]
  deps = [
    "../../api/transport:stun_types",
    "../../p2p:rtc_p2p",
  ]
  seed_corpus = "corpora/stun-corpus"
  dict = "corpora/stun.tokens"
}

webrtc_fuzzer_test("pseudotcp_parser_fuzzer") {
  sources = [ "pseudotcp_parser_fuzzer.cc" ]
  deps = [
    "../../p2p:pseudo_tcp",
    "../../p2p:rtc_p2p",
    "../../rtc_base:threading",
  ]
}

rtc_library("audio_processing_fuzzer_helper") {
  testonly = true
  sources = [
    "audio_processing_fuzzer_helper.cc",
    "audio_processing_fuzzer_helper.h",
  ]
  deps = [
    ":fuzz_data_helper",
    "../../api/audio:audio_frame_api",
    "../../api/audio:audio_processing",
    "../../modules/audio_processing",
    "../../modules/audio_processing:audio_frame_proxies",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("audio_processing_fuzzer") {
  sources = [ "audio_processing_configs_fuzzer.cc" ]
  deps = [
    ":audio_processing_fuzzer_helper",
    "../../api:scoped_refptr",
    "../../api/audio:aec3_factory",
    "../../api/audio:audio_processing",
    "../../api/audio:echo_detector_creator",
    "../../api/task_queue",
    "../../api/task_queue:default_task_queue_factory",
    "../../modules/audio_processing",
    "../../modules/audio_processing:audio_buffer",
    "../../modules/audio_processing:audioproc_test_utils",
    "../../modules/audio_processing/aec3",
    "../../modules/audio_processing/aec_dump",
    "../../modules/audio_processing/aec_dump:aec_dump_impl",
    "../../rtc_base:macromagic",
    "../../rtc_base:safe_minmax",
    "../../system_wrappers:field_trial",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/memory",
  ]
  seed_corpus = "corpora/audio_processing-corpus"
}

webrtc_fuzzer_test("audio_processing_sample_rate_fuzzer") {
  sources = [ "audio_processing_sample_rate_fuzzer.cc" ]
  deps = [
    "../../api:scoped_refptr",
    "../../api/audio:audio_frame_api",
    "../../api/audio:audio_processing",
    "../../modules/audio_processing",
    "../../modules/audio_processing:audio_frame_proxies",
    "../../modules/audio_processing:audioproc_test_utils",
    "../../rtc_base:checks",
    "../../rtc_base:macromagic",
    "../../rtc_base:safe_minmax",
  ]
}

webrtc_fuzzer_test("agc_fuzzer") {
  sources = [ "agc_fuzzer.cc" ]
  deps = [
    ":fuzz_data_helper",
    "../../api/audio:audio_processing",
    "../../modules/audio_processing",
    "../../modules/audio_processing:audio_buffer",
    "../../rtc_base:macromagic",
    "../../rtc_base:safe_minmax",
  ]

  seed_corpus = "corpora/agc-corpus"
}

webrtc_fuzzer_test("aec3_config_json_fuzzer") {
  sources = [ "aec3_config_json_fuzzer.cc" ]
  deps = [
    ":fuzz_data_helper",
    "../../api/audio:aec3_config",
    "../../modules/audio_processing:aec3_config_json",
  ]
  dict = "//testing/libfuzzer/fuzzers/dicts/json.dict"
  seed_corpus = "corpora/aec3-config-json-corpus"
}

webrtc_fuzzer_test("aec3_fuzzer") {
  defines = []
  if (apm_debug_dump) {
    defines += [ "WEBRTC_APM_DEBUG_DUMP=1" ]
  } else {
    defines += [ "WEBRTC_APM_DEBUG_DUMP=0" ]
  }
  sources = [ "aec3_fuzzer.cc" ]
  deps = [
    ":fuzz_data_helper",
    "../../api/audio:audio_processing",
    "../../modules/audio_processing:audio_buffer",
    "../../modules/audio_processing/aec3",
  ]
}

webrtc_fuzzer_test("comfort_noise_decoder_fuzzer") {
  sources = [ "comfort_noise_decoder_fuzzer.cc" ]
  deps = [
    "../../api:array_view",
    "../../modules/audio_coding:webrtc_cng",
    "../../rtc_base:buffer",
  ]
}

webrtc_fuzzer_test("rtp_depacketizer_av1_assemble_frame_fuzzer") {
  sources = [ "rtp_depacketizer_av1_assemble_frame_fuzzer.cc" ]
  seed_corpus = "corpora/rtp-depacketizer-av1-assemble-frame-corpus"
  deps = [
    ":fuzz_data_helper",
    "../../api:array_view",
    "../../modules/rtp_rtcp",
  ]
}

webrtc_fuzzer_test("rtp_dependency_descriptor_fuzzer") {
  sources = [ "rtp_dependency_descriptor_fuzzer.cc" ]
  seed_corpus = "corpora/dependency_descriptor-corpus"
  deps = [
    "../../api:array_view",
    "../../common_video/generic_frame_descriptor",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
  ]
}

webrtc_fuzzer_test("rtp_video_layers_allocation_fuzzer") {
  sources = [ "rtp_video_layers_allocation_fuzzer.cc" ]
  seed_corpus = "corpora/video_layers_allocation-corpus"
  deps = [
    "../../api:array_view",
    "../../api/video:video_layers_allocation",
    "../../modules/rtp_rtcp:rtp_rtcp_format",
    "../../rtc_base:checks",
  ]

  # video_layers_allocation is an rtp header extension and thus can't be longer
  # than 255 bytes on the wire.
  libfuzzer_options = [ "max_len=255" ]
}

webrtc_fuzzer_test("rtp_frame_reference_finder_fuzzer") {
  sources = [ "rtp_frame_reference_finder_fuzzer.cc" ]
  deps = [
    "../../api:rtp_packet_info",
    "../../api:scoped_refptr",
    "../../modules/rtp_rtcp",
    "../../modules/video_coding:video_coding",
    "../../system_wrappers",
  ]
}

webrtc_fuzzer_test("frame_buffer_fuzzer") {
  sources = [ "frame_buffer_fuzzer.cc" ]
  deps = [
    ":fuzz_data_helper",
    "../../api:array_view",
    "../../api/video:encoded_frame",
    "../../api/video:frame_buffer",
    "../../rtc_base:rtc_numerics",
    "../../test:scoped_key_value_config",
  ]
}

webrtc_fuzzer_test("field_trial_fuzzer") {
  sources = [ "field_trial_fuzzer.cc" ]
  deps = [ "../../system_wrappers:field_trial" ]
  seed_corpus = "corpora/field_trial-corpus"
}

webrtc_fuzzer_test("string_to_number_fuzzer") {
  sources = [ "string_to_number_fuzzer.cc" ]
  deps = [ "../../rtc_base:stringutils" ]
  seed_corpus = "corpora/string_to_number-corpus"
}

webrtc_fuzzer_test("sctp_utils_fuzzer") {
  sources = [ "sctp_utils_fuzzer.cc" ]
  deps = [
    "../../api:libjingle_peerconnection_api",
    "../../pc:libjingle_peerconnection",
    "../../pc:sctp_utils",
    "../../rtc_base:copy_on_write_buffer",
  ]
}

webrtc_fuzzer_test("dcsctp_socket_fuzzer") {
  sources = [ "dcsctp_socket_fuzzer.cc" ]
  deps = [
    "../../net/dcsctp/fuzzers:dcsctp_fuzzers",
    "../../net/dcsctp/public:socket",
    "../../net/dcsctp/public:types",
    "../../net/dcsctp/socket:dcsctp_socket",
    "../../rtc_base:logging",
  ]
}

webrtc_fuzzer_test("ssl_certificate_fuzzer") {
  sources = [ "ssl_certificate_fuzzer.cc" ]
  deps = [
    "../:rtp_test_utils",
    "../../rtc_base:digest",
    "../../rtc_base:ssl",
    "../../rtc_base:stringutils",
  ]
}

webrtc_fuzzer_test("vp8_replay_fuzzer") {
  sources = [ "vp8_replay_fuzzer.cc" ]
  deps = [ "utils:rtp_replayer" ]
  seed_corpus = "corpora/rtpdump-corpus/vp8"
}

if (rtc_build_libvpx) {
  webrtc_fuzzer_test("vp9_encoder_references_fuzzer") {
    sources = [ "vp9_encoder_references_fuzzer.cc" ]
    deps = [
      "..:test_support",
      "../../api:array_view",
      "../../api:field_trials_view",
      "../../api/environment:environment_factory",
      "../../api/video:video_frame",
      "../../api/video_codecs:video_codecs_api",
      "../../media:media_constants",
      "../../modules/video_coding:frame_dependencies_calculator",
      "../../modules/video_coding:webrtc_libvpx_interface",
      "../../modules/video_coding:webrtc_vp9",
      "../../rtc_base:safe_compare",
      "//third_party/abseil-cpp/absl/algorithm:container",
      "//third_party/abseil-cpp/absl/base:core_headers",
      "//third_party/abseil-cpp/absl/container:inlined_vector",
      rtc_libvpx_dir,
    ]
    seed_corpus = "corpora/vp9-encoder-references-corpus"
    defines = [ "RTC_ENABLE_VP9" ]
  }
}

webrtc_fuzzer_test("vp9_replay_fuzzer") {
  sources = [ "vp9_replay_fuzzer.cc" ]
  deps = [ "utils:rtp_replayer" ]
  seed_corpus = "corpora/rtpdump-corpus/vp9"
}

group("fuzzers") {
  testonly = true
  deps = [
    ":aec3_config_json_fuzzer",
    ":aec3_fuzzer",
    ":agc_fuzzer",
    ":audio_decoder_fuzzer",
    ":audio_decoder_g722_fuzzer",
    ":audio_decoder_ilbc_fuzzer",
    ":audio_decoder_multiopus_fuzzer",
    ":audio_decoder_opus_fuzzer",
    ":audio_decoder_opus_redundant_fuzzer",
    ":audio_decoder_pcm16b_fuzzer",
    ":audio_decoder_pcm_fuzzer",
    ":audio_encoder_fuzzer",
    ":audio_encoder_opus_fuzzer",
    ":audio_processing_fuzzer",
    ":audio_processing_sample_rate_fuzzer",
    ":comfort_noise_decoder_fuzzer",
    ":dcsctp_socket_fuzzer",
    ":field_trial_fuzzer",
    ":flexfec_header_reader_fuzzer",
    ":flexfec_receiver_fuzzer",
    ":flexfec_sender_fuzzer",
    ":forward_error_correction_fuzzer",
    ":frame_buffer_fuzzer",
    ":h264_bitstream_parser_fuzzer",
    ":h264_depacketizer_fuzzer",
    ":neteq_rtp_fuzzer",
    ":neteq_signal_fuzzer",
    ":pseudotcp_parser_fuzzer",
    ":receive_side_congestion_controller_fuzzer",
    ":residual_echo_detector_fuzzer",
    ":rtcp_receiver_fuzzer",
    ":rtp_depacketizer_av1_assemble_frame_fuzzer",
    ":rtp_dependency_descriptor_fuzzer",
    ":rtp_format_h264_fuzzer",
    ":rtp_format_vp8_fuzzer",
    ":rtp_format_vp9_fuzzer",
    ":rtp_frame_reference_finder_fuzzer",
    ":rtp_packet_fuzzer",
    ":rtp_packetizer_av1_fuzzer",
    ":rtp_video_frame_assembler_fuzzer",
    ":rtp_video_layers_allocation_fuzzer",
    ":sctp_utils_fuzzer",
    ":sdp_parser_fuzzer",
    ":ssl_certificate_fuzzer",
    ":string_to_number_fuzzer",
    ":stun_parser_fuzzer",
    ":stun_validator_fuzzer",
    ":turn_unwrap_fuzzer",
    ":ulpfec_generator_fuzzer",
    ":ulpfec_header_reader_fuzzer",
    ":ulpfec_receiver_fuzzer",
    ":vp8_depacketizer_fuzzer",
    ":vp8_qp_parser_fuzzer",
    ":vp8_replay_fuzzer",
    ":vp9_depacketizer_fuzzer",
    ":vp9_qp_parser_fuzzer",
    ":vp9_replay_fuzzer",
  ]
  if (rtc_use_h265) {
    deps += [
      ":h265_bitstream_parser_fuzzer",
      ":h265_depacketizer_fuzzer",
    ]
  }

  if (rtc_build_libvpx) {
    deps += [ ":vp9_encoder_references_fuzzer" ]
  }

  if (!build_with_chromium) {
    # TODO: bugs.webrtc.org/42222682 - Add unconditionally when this fuzzer
    # builds in Chromium.
    deps += [ ":sdp_integration_fuzzer" ]
  }
}
