1# Copyright (c) 2015 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("version") { 12 sources = [ 13 "version.cc", 14 "version.h", 15 ] 16 visibility = [ ":*" ] 17} 18 19rtc_library("call_interfaces") { 20 sources = [ 21 "audio_receive_stream.cc", 22 "audio_receive_stream.h", 23 "audio_send_stream.h", 24 "audio_state.cc", 25 "audio_state.h", 26 "call.h", 27 "call_config.cc", 28 "call_config.h", 29 "flexfec_receive_stream.cc", 30 "flexfec_receive_stream.h", 31 "packet_receiver.h", 32 "syncable.cc", 33 "syncable.h", 34 ] 35 if (!build_with_mozilla) { 36 sources += [ "audio_send_stream.cc" ] 37 } 38 39 deps = [ 40 ":audio_sender_interface", 41 ":receive_stream_interface", 42 ":rtp_interfaces", 43 ":video_stream_api", 44 "../api:fec_controller_api", 45 "../api:field_trials_view", 46 "../api:frame_transformer_interface", 47 "../api:network_state_predictor_api", 48 "../api:rtc_error", 49 "../api:rtp_headers", 50 "../api:rtp_parameters", 51 "../api:rtp_sender_interface", 52 "../api:scoped_refptr", 53 "../api:transport_api", 54 "../api/adaptation:resource_adaptation_api", 55 "../api/audio:audio_frame_processor", 56 "../api/audio:audio_mixer_api", 57 "../api/audio_codecs:audio_codecs_api", 58 "../api/crypto:frame_encryptor_interface", 59 "../api/crypto:options", 60 "../api/metronome", 61 "../api/neteq:neteq_api", 62 "../api/task_queue", 63 "../api/transport:bitrate_settings", 64 "../api/transport:network_control", 65 "../modules/async_audio_processing", 66 "../modules/audio_device", 67 "../modules/audio_processing", 68 "../modules/audio_processing:api", 69 "../modules/audio_processing:audio_processing_statistics", 70 "../modules/rtp_rtcp:rtp_rtcp_format", 71 "../rtc_base", 72 "../rtc_base:audio_format_to_string", 73 "../rtc_base:checks", 74 "../rtc_base:copy_on_write_buffer", 75 "../rtc_base:refcount", 76 "../rtc_base:stringutils", 77 "../rtc_base/network:sent_packet", 78 ] 79 absl_deps = [ 80 "//third_party/abseil-cpp/absl/functional:any_invocable", 81 "//third_party/abseil-cpp/absl/functional:bind_front", 82 "//third_party/abseil-cpp/absl/strings", 83 "//third_party/abseil-cpp/absl/types:optional", 84 ] 85} 86 87rtc_source_set("audio_sender_interface") { 88 visibility = [ "*" ] 89 sources = [ "audio_sender.h" ] 90 deps = [ "../api/audio:audio_frame_api" ] 91} 92 93# TODO(nisse): These RTP targets should be moved elsewhere 94# when interfaces have stabilized. See also TODO for `mock_rtp_interfaces`. 95rtc_library("rtp_interfaces") { 96 # Client code SHOULD NOT USE THIS TARGET, but for now it needs to be public 97 # because there exists client code that uses it. 98 # TODO(bugs.webrtc.org/9808): Move to private visibility as soon as that 99 # client code gets updated. 100 visibility = [ "*" ] 101 sources = [ 102 "rtp_config.cc", 103 "rtp_config.h", 104 "rtp_packet_sink_interface.h", 105 "rtp_stream_receiver_controller_interface.h", 106 "rtp_transport_config.h", 107 "rtp_transport_controller_send_factory_interface.h", 108 "rtp_transport_controller_send_interface.h", 109 ] 110 deps = [ 111 "../api:array_view", 112 "../api:fec_controller_api", 113 "../api:field_trials_view", 114 "../api:frame_transformer_interface", 115 "../api:network_state_predictor_api", 116 "../api:rtp_headers", 117 "../api:rtp_parameters", 118 "../api/crypto:options", 119 "../api/rtc_event_log", 120 "../api/transport:bitrate_settings", 121 "../api/transport:network_control", 122 "../api/units:timestamp", 123 "../common_video:frame_counts", 124 "../modules/rtp_rtcp:rtp_rtcp_format", 125 "../rtc_base:checks", 126 "../rtc_base:rtc_task_queue", 127 "../rtc_base:stringutils", 128 ] 129 absl_deps = [ 130 "//third_party/abseil-cpp/absl/algorithm:container", 131 "//third_party/abseil-cpp/absl/strings", 132 "//third_party/abseil-cpp/absl/types:optional", 133 ] 134} 135 136rtc_library("rtp_receiver") { 137 visibility = [ "*" ] 138 sources = [ 139 "rtp_demuxer.cc", 140 "rtp_demuxer.h", 141 "rtp_stream_receiver_controller.cc", 142 "rtp_stream_receiver_controller.h", 143 "rtx_receive_stream.cc", 144 "rtx_receive_stream.h", 145 ] 146 deps = [ 147 ":rtp_interfaces", 148 "../api:array_view", 149 "../api:rtp_headers", 150 "../api:sequence_checker", 151 "../modules/rtp_rtcp", 152 "../modules/rtp_rtcp:rtp_rtcp_format", 153 "../rtc_base:checks", 154 "../rtc_base:logging", 155 "../rtc_base:stringutils", 156 "../rtc_base/containers:flat_map", 157 "../rtc_base/containers:flat_set", 158 "../rtc_base/system:no_unique_address", 159 ] 160 absl_deps = [ 161 "//third_party/abseil-cpp/absl/strings:strings", 162 "//third_party/abseil-cpp/absl/types:optional", 163 ] 164} 165 166rtc_library("rtp_sender") { 167 sources = [ 168 "rtp_payload_params.cc", 169 "rtp_payload_params.h", 170 "rtp_transport_controller_send.cc", 171 "rtp_transport_controller_send.h", 172 "rtp_transport_controller_send_factory.h", 173 "rtp_video_sender.cc", 174 "rtp_video_sender.h", 175 "rtp_video_sender_interface.h", 176 ] 177 deps = [ 178 ":bitrate_configurator", 179 ":rtp_interfaces", 180 "../api:array_view", 181 "../api:bitrate_allocation", 182 "../api:fec_controller_api", 183 "../api:field_trials_view", 184 "../api:network_state_predictor_api", 185 "../api:rtp_parameters", 186 "../api:sequence_checker", 187 "../api:transport_api", 188 "../api/rtc_event_log", 189 "../api/task_queue:pending_task_safety_flag", 190 "../api/task_queue:task_queue", 191 "../api/transport:field_trial_based_config", 192 "../api/transport:goog_cc", 193 "../api/transport:network_control", 194 "../api/units:data_rate", 195 "../api/units:time_delta", 196 "../api/units:timestamp", 197 "../api/video:video_frame", 198 "../api/video:video_layers_allocation", 199 "../api/video:video_rtp_headers", 200 "../api/video_codecs:video_codecs_api", 201 "../logging:rtc_event_bwe", 202 "../modules/congestion_controller", 203 "../modules/congestion_controller/rtp:control_handler", 204 "../modules/congestion_controller/rtp:transport_feedback", 205 "../modules/pacing", 206 "../modules/rtp_rtcp", 207 "../modules/rtp_rtcp:rtp_rtcp_format", 208 "../modules/rtp_rtcp:rtp_video_header", 209 "../modules/utility:utility", 210 "../modules/video_coding:chain_diff_calculator", 211 "../modules/video_coding:codec_globals_headers", 212 "../modules/video_coding:frame_dependencies_calculator", 213 "../modules/video_coding:video_codec_interface", 214 "../rtc_base", 215 "../rtc_base:checks", 216 "../rtc_base:event_tracer", 217 "../rtc_base:logging", 218 "../rtc_base:macromagic", 219 "../rtc_base:race_checker", 220 "../rtc_base:random", 221 "../rtc_base:rate_limiter", 222 "../rtc_base:rtc_task_queue", 223 "../rtc_base:timeutils", 224 "../rtc_base/synchronization:mutex", 225 "../rtc_base/task_utils:repeating_task", 226 ] 227 absl_deps = [ 228 "//third_party/abseil-cpp/absl/algorithm:container", 229 "//third_party/abseil-cpp/absl/container:inlined_vector", 230 "//third_party/abseil-cpp/absl/strings:strings", 231 "//third_party/abseil-cpp/absl/types:optional", 232 "//third_party/abseil-cpp/absl/types:variant", 233 ] 234} 235 236rtc_library("bitrate_configurator") { 237 sources = [ 238 "rtp_bitrate_configurator.cc", 239 "rtp_bitrate_configurator.h", 240 ] 241 deps = [ 242 ":rtp_interfaces", 243 244 # For api/bitrate_constraints.h 245 "../api:libjingle_peerconnection_api", 246 "../api/transport:bitrate_settings", 247 "../api/units:data_rate", 248 "../rtc_base:checks", 249 ] 250 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 251} 252 253rtc_library("bitrate_allocator") { 254 sources = [ 255 "bitrate_allocator.cc", 256 "bitrate_allocator.h", 257 ] 258 deps = [ 259 "../api:bitrate_allocation", 260 "../api:sequence_checker", 261 "../api/transport:network_control", 262 "../api/units:data_rate", 263 "../api/units:time_delta", 264 "../rtc_base:checks", 265 "../rtc_base:logging", 266 "../rtc_base:safe_minmax", 267 "../rtc_base/system:no_unique_address", 268 "../system_wrappers", 269 "../system_wrappers:field_trial", 270 "../system_wrappers:metrics", 271 ] 272 absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ] 273} 274 275rtc_library("call") { 276 sources = [ 277 "call.cc", 278 "call_factory.cc", 279 "call_factory.h", 280 "degraded_call.cc", 281 "degraded_call.h", 282 "flexfec_receive_stream_impl.cc", 283 "flexfec_receive_stream_impl.h", 284 "receive_time_calculator.cc", 285 "receive_time_calculator.h", 286 ] 287 288 deps = [ 289 ":bitrate_allocator", 290 ":call_interfaces", 291 ":fake_network", 292 ":rtp_interfaces", 293 ":rtp_receiver", 294 ":rtp_sender", 295 ":simulated_network", 296 ":version", 297 ":video_stream_api", 298 "../api:array_view", 299 "../api:callfactory_api", 300 "../api:fec_controller_api", 301 "../api:field_trials_view", 302 "../api:rtp_headers", 303 "../api:rtp_parameters", 304 "../api:sequence_checker", 305 "../api:simulated_network_api", 306 "../api:transport_api", 307 "../api/rtc_event_log", 308 "../api/task_queue:pending_task_safety_flag", 309 "../api/transport:network_control", 310 "../api/units:time_delta", 311 "../api/video_codecs:video_codecs_api", 312 "../audio", 313 "../logging:rtc_event_audio", 314 "../logging:rtc_event_rtp_rtcp", 315 "../logging:rtc_event_video", 316 "../logging:rtc_stream_config", 317 "../modules/congestion_controller", 318 "../modules/pacing", 319 "../modules/rtp_rtcp", 320 "../modules/rtp_rtcp:rtp_rtcp_format", 321 "../modules/video_coding", 322 "../rtc_base:checks", 323 "../rtc_base:copy_on_write_buffer", 324 "../rtc_base:event_tracer", 325 "../rtc_base:logging", 326 "../rtc_base:macromagic", 327 "../rtc_base:rate_limiter", 328 "../rtc_base:rtc_event", 329 "../rtc_base:rtc_task_queue", 330 "../rtc_base:safe_minmax", 331 "../rtc_base:stringutils", 332 "../rtc_base:timeutils", 333 "../rtc_base/experiments:field_trial_parser", 334 "../rtc_base/network:sent_packet", 335 "../rtc_base/system:no_unique_address", 336 "../rtc_base/task_utils:repeating_task", 337 "../system_wrappers", 338 "../system_wrappers:field_trial", 339 "../system_wrappers:metrics", 340 "../video", 341 "../video:decode_synchronizer", 342 "../video/config:encoder_config", 343 "adaptation:resource_adaptation", 344 ] 345 absl_deps = [ 346 "//third_party/abseil-cpp/absl/functional:bind_front", 347 "//third_party/abseil-cpp/absl/memory", 348 "//third_party/abseil-cpp/absl/strings", 349 "//third_party/abseil-cpp/absl/types:optional", 350 ] 351} 352 353rtc_source_set("receive_stream_interface") { 354 sources = [ "receive_stream.h" ] 355 deps = [ 356 "../api:frame_transformer_interface", 357 "../api:rtp_parameters", 358 "../api:scoped_refptr", 359 "../api/crypto:frame_decryptor_interface", 360 "../api/transport/rtp:rtp_source", 361 "../modules/rtp_rtcp:rtp_rtcp_format", 362 ] 363} 364 365rtc_library("video_stream_api") { 366 sources = [ 367 "video_receive_stream.cc", 368 "video_receive_stream.h", 369 "video_send_stream.cc", 370 "video_send_stream.h", 371 ] 372 deps = [ 373 ":receive_stream_interface", 374 ":rtp_interfaces", 375 "../api:frame_transformer_interface", 376 "../api:rtp_headers", 377 "../api:rtp_parameters", 378 "../api:rtp_sender_interface", 379 "../api:scoped_refptr", 380 "../api:transport_api", 381 "../api/adaptation:resource_adaptation_api", 382 "../api/crypto:frame_encryptor_interface", 383 "../api/crypto:options", 384 "../api/video:recordable_encoded_frame", 385 "../api/video:video_frame", 386 "../api/video:video_rtp_headers", 387 "../api/video:video_stream_encoder", 388 "../api/video_codecs:video_codecs_api", 389 "../common_video", 390 "../common_video:frame_counts", 391 "../modules/rtp_rtcp:rtp_rtcp_format", 392 "../rtc_base:checks", 393 "../rtc_base:stringutils", 394 "../video/config:encoder_config", 395 ] 396 absl_deps = [ 397 "//third_party/abseil-cpp/absl/functional:any_invocable", 398 "//third_party/abseil-cpp/absl/types:optional", 399 ] 400} 401 402rtc_library("simulated_network") { 403 sources = [ 404 "simulated_network.cc", 405 "simulated_network.h", 406 ] 407 deps = [ 408 "../api:sequence_checker", 409 "../api:simulated_network_api", 410 "../api/units:data_rate", 411 "../api/units:data_size", 412 "../api/units:time_delta", 413 "../api/units:timestamp", 414 "../rtc_base:checks", 415 "../rtc_base:macromagic", 416 "../rtc_base:race_checker", 417 "../rtc_base:random", 418 "../rtc_base/synchronization:mutex", 419 ] 420 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 421} 422 423rtc_source_set("simulated_packet_receiver") { 424 sources = [ "simulated_packet_receiver.h" ] 425 deps = [ 426 ":call_interfaces", 427 "../api:simulated_network_api", 428 ] 429} 430 431rtc_library("fake_network") { 432 sources = [ 433 "fake_network_pipe.cc", 434 "fake_network_pipe.h", 435 ] 436 deps = [ 437 ":call_interfaces", 438 ":simulated_network", 439 ":simulated_packet_receiver", 440 "../api:rtp_parameters", 441 "../api:sequence_checker", 442 "../api:simulated_network_api", 443 "../api:transport_api", 444 "../rtc_base:checks", 445 "../rtc_base:logging", 446 "../rtc_base:macromagic", 447 "../rtc_base/synchronization:mutex", 448 "../system_wrappers", 449 ] 450} 451 452if (rtc_include_tests) { 453 if (!build_with_chromium) { 454 rtc_library("call_tests") { 455 testonly = true 456 457 sources = [ 458 "bitrate_allocator_unittest.cc", 459 "bitrate_estimator_tests.cc", 460 "call_unittest.cc", 461 "flexfec_receive_stream_unittest.cc", 462 "receive_time_calculator_unittest.cc", 463 "rtp_bitrate_configurator_unittest.cc", 464 "rtp_demuxer_unittest.cc", 465 "rtp_payload_params_unittest.cc", 466 "rtp_video_sender_unittest.cc", 467 "rtx_receive_stream_unittest.cc", 468 ] 469 deps = [ 470 ":bitrate_allocator", 471 ":bitrate_configurator", 472 ":call", 473 ":call_interfaces", 474 ":mock_rtp_interfaces", 475 ":rtp_interfaces", 476 ":rtp_receiver", 477 ":rtp_sender", 478 ":simulated_network", 479 "../api:array_view", 480 "../api:create_frame_generator", 481 "../api:mock_audio_mixer", 482 "../api:rtp_headers", 483 "../api:rtp_parameters", 484 "../api:transport_api", 485 "../api/audio_codecs:builtin_audio_decoder_factory", 486 "../api/rtc_event_log", 487 "../api/task_queue:default_task_queue_factory", 488 "../api/test/video:function_video_factory", 489 "../api/transport:field_trial_based_config", 490 "../api/video:builtin_video_bitrate_allocator_factory", 491 "../api/video:video_frame", 492 "../api/video:video_rtp_headers", 493 "../audio", 494 "../modules/audio_device:mock_audio_device", 495 "../modules/audio_mixer", 496 "../modules/audio_mixer:audio_mixer_impl", 497 "../modules/audio_processing:mocks", 498 "../modules/congestion_controller", 499 "../modules/pacing", 500 "../modules/rtp_rtcp", 501 "../modules/rtp_rtcp:mock_rtp_rtcp", 502 "../modules/rtp_rtcp:rtp_rtcp_format", 503 "../modules/video_coding", 504 "../modules/video_coding:codec_globals_headers", 505 "../modules/video_coding:video_codec_interface", 506 "../rtc_base:checks", 507 "../rtc_base:logging", 508 "../rtc_base:macromagic", 509 "../rtc_base:random", 510 "../rtc_base:rate_limiter", 511 "../rtc_base:rtc_event", 512 "../rtc_base:safe_conversions", 513 "../rtc_base:task_queue_for_test", 514 "../rtc_base:threading", 515 "../rtc_base:timeutils", 516 "../rtc_base/synchronization:mutex", 517 "../system_wrappers", 518 "../test:audio_codec_mocks", 519 "../test:direct_transport", 520 "../test:encoder_settings", 521 "../test:explicit_key_value_config", 522 "../test:fake_video_codecs", 523 "../test:field_trial", 524 "../test:mock_frame_transformer", 525 "../test:mock_transport", 526 "../test:run_loop", 527 "../test:scoped_key_value_config", 528 "../test:test_common", 529 "../test:test_support", 530 "../test:video_test_common", 531 "../test/scenario", 532 "../test/time_controller:time_controller", 533 "../video", 534 "adaptation:resource_adaptation_test_utilities", 535 "//testing/gmock", 536 "//testing/gtest", 537 ] 538 absl_deps = [ 539 "//third_party/abseil-cpp/absl/container:inlined_vector", 540 "//third_party/abseil-cpp/absl/functional:any_invocable", 541 "//third_party/abseil-cpp/absl/memory", 542 "//third_party/abseil-cpp/absl/strings", 543 "//third_party/abseil-cpp/absl/types:optional", 544 "//third_party/abseil-cpp/absl/types:variant", 545 ] 546 } 547 548 rtc_library("call_perf_tests") { 549 testonly = true 550 551 sources = [ 552 "call_perf_tests.cc", 553 "rampup_tests.cc", 554 "rampup_tests.h", 555 ] 556 deps = [ 557 ":call_interfaces", 558 ":simulated_network", 559 ":video_stream_api", 560 "../api:rtc_event_log_output_file", 561 "../api:simulated_network_api", 562 "../api/audio_codecs:builtin_audio_encoder_factory", 563 "../api/numerics", 564 "../api/rtc_event_log", 565 "../api/rtc_event_log:rtc_event_log_factory", 566 "../api/task_queue", 567 "../api/task_queue:default_task_queue_factory", 568 "../api/task_queue:pending_task_safety_flag", 569 "../api/test/metrics:global_metrics_logger_and_exporter", 570 "../api/test/metrics:metric", 571 "../api/video:builtin_video_bitrate_allocator_factory", 572 "../api/video:video_bitrate_allocation", 573 "../api/video_codecs:video_codecs_api", 574 "../media:rtc_internal_video_codecs", 575 "../media:rtc_simulcast_encoder_adapter", 576 "../modules/audio_coding", 577 "../modules/audio_device", 578 "../modules/audio_device:audio_device_impl", 579 "../modules/audio_mixer:audio_mixer_impl", 580 "../modules/rtp_rtcp", 581 "../modules/rtp_rtcp:rtp_rtcp_format", 582 "../rtc_base", 583 "../rtc_base:checks", 584 "../rtc_base:logging", 585 "../rtc_base:macromagic", 586 "../rtc_base:platform_thread", 587 "../rtc_base:rtc_event", 588 "../rtc_base:stringutils", 589 "../rtc_base:task_queue_for_test", 590 "../rtc_base:threading", 591 "../rtc_base:timeutils", 592 "../rtc_base/synchronization:mutex", 593 "../rtc_base/task_utils:repeating_task", 594 "../system_wrappers", 595 "../system_wrappers:metrics", 596 "../test:direct_transport", 597 "../test:encoder_settings", 598 "../test:fake_video_codecs", 599 "../test:field_trial", 600 "../test:fileutils", 601 "../test:null_transport", 602 "../test:test_common", 603 "../test:test_support", 604 "../test:video_test_common", 605 "../video", 606 "../video/config:encoder_config", 607 "//testing/gtest", 608 ] 609 absl_deps = [ 610 "//third_party/abseil-cpp/absl/flags:flag", 611 "//third_party/abseil-cpp/absl/strings", 612 ] 613 } 614 } 615 616 # TODO(eladalon): This should be moved, as with the TODO for `rtp_interfaces`. 617 rtc_source_set("mock_rtp_interfaces") { 618 testonly = true 619 620 sources = [ 621 "test/mock_rtp_packet_sink_interface.h", 622 "test/mock_rtp_transport_controller_send.h", 623 ] 624 deps = [ 625 ":rtp_interfaces", 626 "../api:frame_transformer_interface", 627 "../api:libjingle_peerconnection_api", 628 "../api/crypto:frame_encryptor_interface", 629 "../api/crypto:options", 630 "../api/transport:bitrate_settings", 631 "../modules/pacing", 632 "../rtc_base", 633 "../rtc_base:rate_limiter", 634 "../rtc_base/network:sent_packet", 635 "../test:test_support", 636 ] 637 absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] 638 } 639 rtc_source_set("mock_bitrate_allocator") { 640 testonly = true 641 642 sources = [ "test/mock_bitrate_allocator.h" ] 643 deps = [ 644 ":bitrate_allocator", 645 "../test:test_support", 646 ] 647 } 648 rtc_source_set("mock_call_interfaces") { 649 testonly = true 650 651 sources = [ "test/mock_audio_send_stream.h" ] 652 deps = [ 653 ":call_interfaces", 654 "../test:test_support", 655 ] 656 } 657 658 rtc_library("fake_network_pipe_unittests") { 659 testonly = true 660 661 sources = [ 662 "fake_network_pipe_unittest.cc", 663 "simulated_network_unittest.cc", 664 ] 665 deps = [ 666 ":fake_network", 667 ":simulated_network", 668 "../api:simulated_network_api", 669 "../api/units:data_rate", 670 "../api/units:time_delta", 671 "../system_wrappers", 672 "../test:test_support", 673 "//testing/gtest", 674 ] 675 absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ] 676 } 677} 678