1# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2# 3# Use of this source code is governed by a BSD-style license 4# that can be found in the LICENSE file in the root of the source 5# tree. An additional intellectual property rights grant can be found 6# in the file PATENTS. All contributing project authors may 7# be found in the AUTHORS file in the root of the source tree. 8 9import("../../webrtc.gni") 10 11rtc_library("rtp_rtcp_format") { 12 visibility = [ "*" ] 13 public = [ 14 "include/report_block_data.h", 15 "include/rtcp_statistics.h", 16 "include/rtp_cvo.h", 17 "include/rtp_header_extension_map.h", 18 "include/rtp_packet_sender.h", 19 "include/rtp_rtcp_defines.h", 20 "source/byte_io.h", 21 "source/rtcp_packet.h", 22 "source/rtcp_packet/app.h", 23 "source/rtcp_packet/bye.h", 24 "source/rtcp_packet/common_header.h", 25 "source/rtcp_packet/compound_packet.h", 26 "source/rtcp_packet/dlrr.h", 27 "source/rtcp_packet/extended_jitter_report.h", 28 "source/rtcp_packet/extended_reports.h", 29 "source/rtcp_packet/fir.h", 30 "source/rtcp_packet/loss_notification.h", 31 "source/rtcp_packet/nack.h", 32 "source/rtcp_packet/pli.h", 33 "source/rtcp_packet/psfb.h", 34 "source/rtcp_packet/rapid_resync_request.h", 35 "source/rtcp_packet/receiver_report.h", 36 "source/rtcp_packet/remb.h", 37 "source/rtcp_packet/remote_estimate.h", 38 "source/rtcp_packet/report_block.h", 39 "source/rtcp_packet/rrtr.h", 40 "source/rtcp_packet/rtpfb.h", 41 "source/rtcp_packet/sdes.h", 42 "source/rtcp_packet/sender_report.h", 43 "source/rtcp_packet/target_bitrate.h", 44 "source/rtcp_packet/tmmb_item.h", 45 "source/rtcp_packet/tmmbn.h", 46 "source/rtcp_packet/tmmbr.h", 47 "source/rtcp_packet/transport_feedback.h", 48 "source/rtp_dependency_descriptor_extension.h", 49 "source/rtp_generic_frame_descriptor.h", 50 "source/rtp_generic_frame_descriptor_extension.h", 51 "source/rtp_header_extensions.h", 52 "source/rtp_packet.h", 53 "source/rtp_packet_received.h", 54 "source/rtp_packet_to_send.h", 55 ] 56 sources = [ 57 "include/report_block_data.cc", 58 "include/rtp_rtcp_defines.cc", 59 "source/rtcp_packet.cc", 60 "source/rtcp_packet/app.cc", 61 "source/rtcp_packet/bye.cc", 62 "source/rtcp_packet/common_header.cc", 63 "source/rtcp_packet/compound_packet.cc", 64 "source/rtcp_packet/dlrr.cc", 65 "source/rtcp_packet/extended_jitter_report.cc", 66 "source/rtcp_packet/extended_reports.cc", 67 "source/rtcp_packet/fir.cc", 68 "source/rtcp_packet/loss_notification.cc", 69 "source/rtcp_packet/nack.cc", 70 "source/rtcp_packet/pli.cc", 71 "source/rtcp_packet/psfb.cc", 72 "source/rtcp_packet/rapid_resync_request.cc", 73 "source/rtcp_packet/receiver_report.cc", 74 "source/rtcp_packet/remb.cc", 75 "source/rtcp_packet/remote_estimate.cc", 76 "source/rtcp_packet/report_block.cc", 77 "source/rtcp_packet/rrtr.cc", 78 "source/rtcp_packet/rtpfb.cc", 79 "source/rtcp_packet/sdes.cc", 80 "source/rtcp_packet/sender_report.cc", 81 "source/rtcp_packet/target_bitrate.cc", 82 "source/rtcp_packet/tmmb_item.cc", 83 "source/rtcp_packet/tmmbn.cc", 84 "source/rtcp_packet/tmmbr.cc", 85 "source/rtcp_packet/transport_feedback.cc", 86 "source/rtp_dependency_descriptor_extension.cc", 87 "source/rtp_dependency_descriptor_reader.cc", 88 "source/rtp_dependency_descriptor_reader.h", 89 "source/rtp_dependency_descriptor_writer.cc", 90 "source/rtp_dependency_descriptor_writer.h", 91 "source/rtp_generic_frame_descriptor.cc", 92 "source/rtp_generic_frame_descriptor_extension.cc", 93 "source/rtp_header_extension_map.cc", 94 "source/rtp_header_extensions.cc", 95 "source/rtp_packet.cc", 96 "source/rtp_packet_received.cc", 97 "source/rtp_packet_to_send.cc", 98 ] 99 100 deps = [ 101 "..:module_api", 102 "..:module_api_public", 103 "../../api:array_view", 104 "../../api:function_view", 105 "../../api:rtp_headers", 106 "../../api:rtp_parameters", 107 "../../api/audio_codecs:audio_codecs_api", 108 "../../api/transport:network_control", 109 "../../api/transport/rtp:dependency_descriptor", 110 "../../api/units:time_delta", 111 "../../api/video:video_frame", 112 "../../api/video:video_rtp_headers", 113 "../../common_video", 114 "../../rtc_base:checks", 115 "../../rtc_base:deprecation", 116 "../../rtc_base:divide_round", 117 "../../rtc_base:rtc_base_approved", 118 "../../rtc_base/system:unused", 119 "../../system_wrappers", 120 "../video_coding:codec_globals_headers", 121 ] 122 absl_deps = [ 123 "//third_party/abseil-cpp/absl/algorithm:container", 124 "//third_party/abseil-cpp/absl/strings", 125 "//third_party/abseil-cpp/absl/types:optional", 126 "//third_party/abseil-cpp/absl/types:variant", 127 ] 128} 129 130rtc_library("rtp_rtcp") { 131 visibility = [ "*" ] 132 sources = [ 133 "include/flexfec_receiver.h", 134 "include/flexfec_sender.h", 135 "include/receive_statistics.h", 136 "include/remote_ntp_time_estimator.h", 137 "include/rtp_rtcp.h", # deprecated 138 "include/ulpfec_receiver.h", 139 "source/absolute_capture_time_receiver.cc", 140 "source/absolute_capture_time_receiver.h", 141 "source/absolute_capture_time_sender.cc", 142 "source/absolute_capture_time_sender.h", 143 "source/active_decode_targets_helper.cc", 144 "source/active_decode_targets_helper.h", 145 "source/create_video_rtp_depacketizer.cc", 146 "source/create_video_rtp_depacketizer.h", 147 "source/deprecated/deprecated_rtp_sender_egress.cc", 148 "source/deprecated/deprecated_rtp_sender_egress.h", 149 "source/dtmf_queue.cc", 150 "source/dtmf_queue.h", 151 "source/fec_private_tables_bursty.cc", 152 "source/fec_private_tables_bursty.h", 153 "source/fec_private_tables_random.cc", 154 "source/fec_private_tables_random.h", 155 "source/flexfec_header_reader_writer.cc", 156 "source/flexfec_header_reader_writer.h", 157 "source/flexfec_receiver.cc", 158 "source/flexfec_sender.cc", 159 "source/forward_error_correction.cc", 160 "source/forward_error_correction.h", 161 "source/forward_error_correction_internal.cc", 162 "source/forward_error_correction_internal.h", 163 "source/packet_loss_stats.cc", 164 "source/packet_loss_stats.h", 165 "source/receive_statistics_impl.cc", 166 "source/receive_statistics_impl.h", 167 "source/remote_ntp_time_estimator.cc", 168 "source/rtcp_nack_stats.cc", 169 "source/rtcp_nack_stats.h", 170 "source/rtcp_receiver.cc", 171 "source/rtcp_receiver.h", 172 "source/rtcp_sender.cc", 173 "source/rtcp_sender.h", 174 "source/rtp_descriptor_authentication.cc", 175 "source/rtp_descriptor_authentication.h", 176 "source/rtp_format.cc", 177 "source/rtp_format.h", 178 "source/rtp_format_h264.cc", 179 "source/rtp_format_h264.h", 180 "source/rtp_format_video_generic.cc", 181 "source/rtp_format_video_generic.h", 182 "source/rtp_format_vp8.cc", 183 "source/rtp_format_vp8.h", 184 "source/rtp_format_vp9.cc", 185 "source/rtp_format_vp9.h", 186 "source/rtp_header_extension_size.cc", 187 "source/rtp_header_extension_size.h", 188 "source/rtp_packet_history.cc", 189 "source/rtp_packet_history.h", 190 "source/rtp_packetizer_av1.cc", 191 "source/rtp_packetizer_av1.h", 192 "source/rtp_rtcp_config.h", 193 "source/rtp_rtcp_impl.cc", 194 "source/rtp_rtcp_impl.h", 195 "source/rtp_rtcp_impl2.cc", 196 "source/rtp_rtcp_impl2.h", 197 "source/rtp_rtcp_interface.h", 198 "source/rtp_sender.cc", 199 "source/rtp_sender.h", 200 "source/rtp_sender_audio.cc", 201 "source/rtp_sender_audio.h", 202 "source/rtp_sender_egress.cc", 203 "source/rtp_sender_egress.h", 204 "source/rtp_sender_video.cc", 205 "source/rtp_sender_video.h", 206 "source/rtp_sender_video_frame_transformer_delegate.cc", 207 "source/rtp_sender_video_frame_transformer_delegate.h", 208 "source/rtp_sequence_number_map.cc", 209 "source/rtp_sequence_number_map.h", 210 "source/rtp_utility.cc", 211 "source/rtp_utility.h", 212 "source/source_tracker.cc", 213 "source/source_tracker.h", 214 "source/time_util.cc", 215 "source/time_util.h", 216 "source/tmmbr_help.cc", 217 "source/tmmbr_help.h", 218 "source/ulpfec_generator.cc", 219 "source/ulpfec_generator.h", 220 "source/ulpfec_header_reader_writer.cc", 221 "source/ulpfec_header_reader_writer.h", 222 "source/ulpfec_receiver_impl.cc", 223 "source/ulpfec_receiver_impl.h", 224 "source/video_fec_generator.h", 225 "source/video_rtp_depacketizer.cc", 226 "source/video_rtp_depacketizer.h", 227 "source/video_rtp_depacketizer_av1.cc", 228 "source/video_rtp_depacketizer_av1.h", 229 "source/video_rtp_depacketizer_generic.cc", 230 "source/video_rtp_depacketizer_generic.h", 231 "source/video_rtp_depacketizer_h264.cc", 232 "source/video_rtp_depacketizer_h264.h", 233 "source/video_rtp_depacketizer_raw.cc", 234 "source/video_rtp_depacketizer_raw.h", 235 "source/video_rtp_depacketizer_vp8.cc", 236 "source/video_rtp_depacketizer_vp8.h", 237 "source/video_rtp_depacketizer_vp9.cc", 238 "source/video_rtp_depacketizer_vp9.h", 239 ] 240 241 if (rtc_enable_bwe_test_logging) { 242 defines = [ "BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=1" ] 243 } else { 244 defines = [ "BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0" ] 245 } 246 247 deps = [ 248 ":rtp_rtcp_format", 249 ":rtp_video_header", 250 "..:module_api", 251 "..:module_api_public", 252 "..:module_fec_api", 253 "../..:webrtc_common", 254 "../../api:array_view", 255 "../../api:frame_transformer_interface", 256 "../../api:function_view", 257 "../../api:libjingle_peerconnection_api", 258 "../../api:rtp_headers", 259 "../../api:rtp_packet_info", 260 "../../api:rtp_parameters", 261 "../../api:scoped_refptr", 262 "../../api:transport_api", 263 "../../api/audio_codecs:audio_codecs_api", 264 "../../api/crypto:frame_encryptor_interface", 265 "../../api/rtc_event_log", 266 "../../api/task_queue:task_queue", 267 "../../api/transport:field_trial_based_config", 268 "../../api/transport:webrtc_key_value_config", 269 "../../api/transport/rtp:dependency_descriptor", 270 "../../api/transport/rtp:rtp_source", 271 "../../api/units:data_rate", 272 "../../api/units:time_delta", 273 "../../api/units:timestamp", 274 "../../api/video:encoded_frame", 275 "../../api/video:encoded_image", 276 "../../api/video:video_bitrate_allocation", 277 "../../api/video:video_bitrate_allocator", 278 "../../api/video:video_codec_constants", 279 "../../api/video:video_frame", 280 "../../api/video:video_frame_type", 281 "../../api/video:video_rtp_headers", 282 "../../api/video_codecs:video_codecs_api", 283 "../../call:rtp_interfaces", 284 "../../common_video", 285 "../../logging:rtc_event_audio", 286 "../../logging:rtc_event_rtp_rtcp", 287 "../../modules/audio_coding:audio_coding_module_typedefs", 288 "../../rtc_base:checks", 289 "../../rtc_base:deprecation", 290 "../../rtc_base:divide_round", 291 "../../rtc_base:gtest_prod", 292 "../../rtc_base:rate_limiter", 293 "../../rtc_base:rtc_base_approved", 294 "../../rtc_base:rtc_numerics", 295 "../../rtc_base:safe_minmax", 296 "../../rtc_base/experiments:field_trial_parser", 297 "../../rtc_base/synchronization:mutex", 298 "../../rtc_base/synchronization:sequence_checker", 299 "../../rtc_base/task_utils:pending_task_safety_flag", 300 "../../rtc_base/task_utils:repeating_task", 301 "../../rtc_base/task_utils:to_queued_task", 302 "../../rtc_base/time:timestamp_extrapolator", 303 "../../system_wrappers", 304 "../../system_wrappers:metrics", 305 "../remote_bitrate_estimator", 306 "../video_coding:codec_globals_headers", 307 ] 308 absl_deps = [ 309 "//third_party/abseil-cpp/absl/algorithm:container", 310 "//third_party/abseil-cpp/absl/base:core_headers", 311 "//third_party/abseil-cpp/absl/container:inlined_vector", 312 "//third_party/abseil-cpp/absl/memory", 313 "//third_party/abseil-cpp/absl/strings", 314 "//third_party/abseil-cpp/absl/types:optional", 315 "//third_party/abseil-cpp/absl/types:variant", 316 ] 317} 318 319rtc_library("rtcp_transceiver") { 320 visibility = [ "*" ] 321 public = [ 322 "source/rtcp_transceiver.h", 323 "source/rtcp_transceiver_config.h", 324 "source/rtcp_transceiver_impl.h", 325 ] 326 sources = [ 327 "source/rtcp_transceiver.cc", 328 "source/rtcp_transceiver_config.cc", 329 "source/rtcp_transceiver_impl.cc", 330 ] 331 deps = [ 332 ":rtp_rtcp", 333 ":rtp_rtcp_format", 334 "../../:webrtc_common", 335 "../../api:array_view", 336 "../../api:rtp_headers", 337 "../../api:transport_api", 338 "../../api/task_queue", 339 "../../api/video:video_bitrate_allocation", 340 "../../rtc_base:checks", 341 "../../rtc_base:rtc_base_approved", 342 "../../rtc_base/task_utils:repeating_task", 343 "../../rtc_base/task_utils:to_queued_task", 344 "../../system_wrappers", 345 ] 346 absl_deps = [ 347 "//third_party/abseil-cpp/absl/algorithm:container", 348 "//third_party/abseil-cpp/absl/memory", 349 "//third_party/abseil-cpp/absl/types:optional", 350 ] 351} 352 353rtc_library("rtp_video_header") { 354 visibility = [ "*" ] 355 sources = [ 356 "source/rtp_video_header.cc", 357 "source/rtp_video_header.h", 358 ] 359 deps = [ 360 "../../:webrtc_common", 361 "../../api/transport/rtp:dependency_descriptor", 362 "../../api/video:video_frame", 363 "../../api/video:video_frame_type", 364 "../../api/video:video_rtp_headers", 365 "../../modules/video_coding:codec_globals_headers", 366 ] 367 absl_deps = [ 368 "//third_party/abseil-cpp/absl/container:inlined_vector", 369 "//third_party/abseil-cpp/absl/types:optional", 370 "//third_party/abseil-cpp/absl/types:variant", 371 ] 372} 373 374rtc_library("fec_test_helper") { 375 testonly = true 376 sources = [ 377 "source/fec_test_helper.cc", 378 "source/fec_test_helper.h", 379 ] 380 deps = [ 381 ":rtp_rtcp", 382 ":rtp_rtcp_format", 383 "..:module_api", 384 "../../rtc_base:checks", 385 "../../rtc_base:rtc_base_approved", 386 ] 387} 388 389rtc_library("mock_rtp_rtcp") { 390 testonly = true 391 public = [ 392 "mocks/mock_recovered_packet_receiver.h", 393 "mocks/mock_rtcp_bandwidth_observer.h", 394 "mocks/mock_rtcp_rtt_stats.h", 395 "mocks/mock_rtp_rtcp.h", 396 ] 397 deps = [ 398 ":rtp_rtcp", 399 ":rtp_rtcp_format", 400 "..:module_api", 401 "../../api/video:video_bitrate_allocation", 402 "../../rtc_base:checks", 403 "../../rtc_base:rtc_base_approved", 404 "../../test:test_support", 405 ] 406 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 407} 408 409if (rtc_include_tests) { 410 rtc_executable("test_packet_masks_metrics") { 411 testonly = true 412 413 sources = [ 414 "test/testFec/average_residual_loss_xor_codes.h", 415 "test/testFec/test_packet_masks_metrics.cc", 416 ] 417 418 deps = [ 419 ":rtp_rtcp", 420 "../../test:fileutils", 421 "../../test:test_main", 422 "../../test:test_support", 423 "//testing/gtest", 424 ] 425 } # test_packet_masks_metrics 426 427 rtc_library("rtp_rtcp_modules_tests") { 428 testonly = true 429 430 sources = [ "test/testFec/test_fec.cc" ] 431 deps = [ 432 ":rtp_rtcp", 433 ":rtp_rtcp_format", 434 "../../rtc_base:rtc_base_approved", 435 "../../test:fileutils", 436 "../../test:test_support", 437 ] 438 } 439 440 rtc_library("rtp_rtcp_unittests") { 441 testonly = true 442 443 sources = [ 444 "source/absolute_capture_time_receiver_unittest.cc", 445 "source/absolute_capture_time_sender_unittest.cc", 446 "source/active_decode_targets_helper_unittest.cc", 447 "source/byte_io_unittest.cc", 448 "source/fec_private_tables_bursty_unittest.cc", 449 "source/flexfec_header_reader_writer_unittest.cc", 450 "source/flexfec_receiver_unittest.cc", 451 "source/flexfec_sender_unittest.cc", 452 "source/nack_rtx_unittest.cc", 453 "source/packet_loss_stats_unittest.cc", 454 "source/receive_statistics_unittest.cc", 455 "source/remote_ntp_time_estimator_unittest.cc", 456 "source/rtcp_nack_stats_unittest.cc", 457 "source/rtcp_packet/app_unittest.cc", 458 "source/rtcp_packet/bye_unittest.cc", 459 "source/rtcp_packet/common_header_unittest.cc", 460 "source/rtcp_packet/compound_packet_unittest.cc", 461 "source/rtcp_packet/dlrr_unittest.cc", 462 "source/rtcp_packet/extended_jitter_report_unittest.cc", 463 "source/rtcp_packet/extended_reports_unittest.cc", 464 "source/rtcp_packet/fir_unittest.cc", 465 "source/rtcp_packet/loss_notification_unittest.cc", 466 "source/rtcp_packet/nack_unittest.cc", 467 "source/rtcp_packet/pli_unittest.cc", 468 "source/rtcp_packet/rapid_resync_request_unittest.cc", 469 "source/rtcp_packet/receiver_report_unittest.cc", 470 "source/rtcp_packet/remb_unittest.cc", 471 "source/rtcp_packet/remote_estimate_unittest.cc", 472 "source/rtcp_packet/report_block_unittest.cc", 473 "source/rtcp_packet/rrtr_unittest.cc", 474 "source/rtcp_packet/sdes_unittest.cc", 475 "source/rtcp_packet/sender_report_unittest.cc", 476 "source/rtcp_packet/target_bitrate_unittest.cc", 477 "source/rtcp_packet/tmmbn_unittest.cc", 478 "source/rtcp_packet/tmmbr_unittest.cc", 479 "source/rtcp_packet/transport_feedback_unittest.cc", 480 "source/rtcp_packet_unittest.cc", 481 "source/rtcp_receiver_unittest.cc", 482 "source/rtcp_sender_unittest.cc", 483 "source/rtcp_transceiver_impl_unittest.cc", 484 "source/rtcp_transceiver_unittest.cc", 485 "source/rtp_dependency_descriptor_extension_unittest.cc", 486 "source/rtp_fec_unittest.cc", 487 "source/rtp_format_h264_unittest.cc", 488 "source/rtp_format_unittest.cc", 489 "source/rtp_format_video_generic_unittest.cc", 490 "source/rtp_format_vp8_test_helper.cc", 491 "source/rtp_format_vp8_test_helper.h", 492 "source/rtp_format_vp8_unittest.cc", 493 "source/rtp_format_vp9_unittest.cc", 494 "source/rtp_generic_frame_descriptor_extension_unittest.cc", 495 "source/rtp_header_extension_map_unittest.cc", 496 "source/rtp_header_extension_size_unittest.cc", 497 "source/rtp_packet_history_unittest.cc", 498 "source/rtp_packet_unittest.cc", 499 "source/rtp_packetizer_av1_unittest.cc", 500 "source/rtp_rtcp_impl2_unittest.cc", 501 "source/rtp_rtcp_impl_unittest.cc", 502 "source/rtp_sender_audio_unittest.cc", 503 "source/rtp_sender_unittest.cc", 504 "source/rtp_sender_video_unittest.cc", 505 "source/rtp_sequence_number_map_unittest.cc", 506 "source/rtp_utility_unittest.cc", 507 "source/source_tracker_unittest.cc", 508 "source/time_util_unittest.cc", 509 "source/ulpfec_generator_unittest.cc", 510 "source/ulpfec_header_reader_writer_unittest.cc", 511 "source/ulpfec_receiver_unittest.cc", 512 "source/video_rtp_depacketizer_av1_unittest.cc", 513 "source/video_rtp_depacketizer_generic_unittest.cc", 514 "source/video_rtp_depacketizer_h264_unittest.cc", 515 "source/video_rtp_depacketizer_raw_unittest.cc", 516 "source/video_rtp_depacketizer_vp8_unittest.cc", 517 "source/video_rtp_depacketizer_vp9_unittest.cc", 518 ] 519 deps = [ 520 ":fec_test_helper", 521 ":mock_rtp_rtcp", 522 ":rtcp_transceiver", 523 ":rtp_rtcp", 524 ":rtp_rtcp_format", 525 "..:module_api", 526 "../..:webrtc_common", 527 "../../api:array_view", 528 "../../api:libjingle_peerconnection_api", 529 "../../api:mock_frame_encryptor", 530 "../../api:rtp_headers", 531 "../../api:rtp_packet_info", 532 "../../api:rtp_parameters", 533 "../../api:scoped_refptr", 534 "../../api:transport_api", 535 "../../api/rtc_event_log", 536 "../../api/transport:field_trial_based_config", 537 "../../api/transport/rtp:dependency_descriptor", 538 "../../api/units:timestamp", 539 "../../api/video:encoded_image", 540 "../../api/video:video_bitrate_allocation", 541 "../../api/video:video_bitrate_allocator", 542 "../../api/video:video_codec_constants", 543 "../../api/video:video_frame", 544 "../../api/video:video_rtp_headers", 545 "../../api/video_codecs:video_codecs_api", 546 "../../call:rtp_receiver", 547 "../../common_video", 548 "../../common_video/generic_frame_descriptor", 549 "../../common_video/test:utilities", 550 "../../logging:mocks", 551 "../../rtc_base:checks", 552 "../../rtc_base:rate_limiter", 553 "../../rtc_base:rtc_base_approved", 554 "../../rtc_base:rtc_base_tests_utils", 555 "../../rtc_base:rtc_numerics", 556 "../../rtc_base:task_queue_for_test", 557 "../../rtc_base/task_utils:to_queued_task", 558 "../../system_wrappers", 559 "../../test:field_trial", 560 "../../test:mock_frame_transformer", 561 "../../test:mock_transport", 562 "../../test:rtp_test_utils", 563 "../../test:test_common", 564 "../../test:test_support", 565 "../../test/time_controller:time_controller", 566 "../video_coding:codec_globals_headers", 567 ] 568 absl_deps = [ 569 "//third_party/abseil-cpp/absl/algorithm:container", 570 "//third_party/abseil-cpp/absl/base:core_headers", 571 "//third_party/abseil-cpp/absl/memory", 572 "//third_party/abseil-cpp/absl/types:optional", 573 ] 574 } 575} 576