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