1# Copyright (c) 2016 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") 10if (rtc_enable_protobuf) { 11 import("//third_party/protobuf/proto_library.gni") 12} 13if (is_android) { 14 import("//build/config/android/config.gni") 15 import("//build/config/android/rules.gni") 16} 17 18group("logging") { 19 deps = [ 20 ":rtc_event_audio", 21 ":rtc_event_begin_end", 22 ":rtc_event_bwe", 23 ":rtc_event_log_impl_encoder", 24 ":rtc_event_pacing", 25 ":rtc_event_rtp_rtcp", 26 ":rtc_event_video", 27 ] 28} 29 30rtc_source_set("rtc_event_log_api") { 31 sources = [ "rtc_event_log/encoder/rtc_event_log_encoder.h" ] 32 33 deps = [ "../api/rtc_event_log" ] 34} 35 36rtc_library("rtc_event_field") { 37 sources = [ 38 "rtc_event_log/events/fixed_length_encoding_parameters_v3.cc", 39 "rtc_event_log/events/fixed_length_encoding_parameters_v3.h", 40 "rtc_event_log/events/rtc_event_definition.h", 41 "rtc_event_log/events/rtc_event_field_encoding.cc", 42 "rtc_event_log/events/rtc_event_field_encoding.h", 43 "rtc_event_log/events/rtc_event_field_encoding_parser.cc", 44 "rtc_event_log/events/rtc_event_field_encoding_parser.h", 45 "rtc_event_log/events/rtc_event_field_extraction.cc", 46 "rtc_event_log/events/rtc_event_field_extraction.h", 47 ] 48 49 deps = [ 50 ":rtc_event_number_encodings", 51 "../api:array_view", 52 "../api/rtc_event_log", 53 "../api/units:timestamp", 54 "../rtc_base:bitstream_reader", 55 "../rtc_base:checks", 56 "../rtc_base:logging", 57 ] 58 absl_deps = [ 59 "//third_party/abseil-cpp/absl/strings", 60 "//third_party/abseil-cpp/absl/types:optional", 61 ] 62} 63 64rtc_library("rtc_stream_config") { 65 sources = [ 66 "rtc_event_log/rtc_stream_config.cc", 67 "rtc_event_log/rtc_stream_config.h", 68 ] 69 70 deps = [ 71 "../api:rtp_headers", 72 "../api:rtp_parameters", 73 ] 74 absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] 75} 76 77rtc_library("rtc_event_pacing") { 78 sources = [ 79 "rtc_event_log/events/rtc_event_alr_state.cc", 80 "rtc_event_log/events/rtc_event_alr_state.h", 81 ] 82 83 deps = [ 84 ":rtc_event_field", 85 "../api/rtc_event_log", 86 "../api/units:timestamp", 87 ] 88 absl_deps = [ 89 "//third_party/abseil-cpp/absl/memory", 90 "//third_party/abseil-cpp/absl/strings", 91 ] 92} 93 94rtc_library("rtc_event_audio") { 95 sources = [ 96 "rtc_event_log/events/rtc_event_audio_network_adaptation.cc", 97 "rtc_event_log/events/rtc_event_audio_network_adaptation.h", 98 "rtc_event_log/events/rtc_event_audio_playout.cc", 99 "rtc_event_log/events/rtc_event_audio_playout.h", 100 "rtc_event_log/events/rtc_event_audio_receive_stream_config.cc", 101 "rtc_event_log/events/rtc_event_audio_receive_stream_config.h", 102 "rtc_event_log/events/rtc_event_audio_send_stream_config.cc", 103 "rtc_event_log/events/rtc_event_audio_send_stream_config.h", 104 ] 105 106 deps = [ 107 ":rtc_event_field", 108 ":rtc_stream_config", 109 "../api/rtc_event_log", 110 "../api/units:timestamp", 111 "../modules/audio_coding:audio_network_adaptor_config", 112 "../rtc_base:checks", 113 ] 114 absl_deps = [ 115 "//third_party/abseil-cpp/absl/memory", 116 "//third_party/abseil-cpp/absl/strings", 117 ] 118} 119 120rtc_library("rtc_event_begin_end") { 121 sources = [ 122 "rtc_event_log/events/rtc_event_begin_log.cc", 123 "rtc_event_log/events/rtc_event_begin_log.h", 124 "rtc_event_log/events/rtc_event_end_log.cc", 125 "rtc_event_log/events/rtc_event_end_log.h", 126 ] 127 deps = [ 128 ":rtc_event_field", 129 "../api:array_view", 130 "../api/rtc_event_log", 131 "../api/units:timestamp", 132 ] 133 absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] 134} 135 136rtc_library("rtc_event_bwe") { 137 sources = [ 138 "rtc_event_log/events/rtc_event_bwe_update_delay_based.cc", 139 "rtc_event_log/events/rtc_event_bwe_update_delay_based.h", 140 "rtc_event_log/events/rtc_event_bwe_update_loss_based.cc", 141 "rtc_event_log/events/rtc_event_bwe_update_loss_based.h", 142 "rtc_event_log/events/rtc_event_probe_cluster_created.cc", 143 "rtc_event_log/events/rtc_event_probe_cluster_created.h", 144 "rtc_event_log/events/rtc_event_probe_result_failure.cc", 145 "rtc_event_log/events/rtc_event_probe_result_failure.h", 146 "rtc_event_log/events/rtc_event_probe_result_success.cc", 147 "rtc_event_log/events/rtc_event_probe_result_success.h", 148 "rtc_event_log/events/rtc_event_remote_estimate.h", 149 "rtc_event_log/events/rtc_event_route_change.cc", 150 "rtc_event_log/events/rtc_event_route_change.h", 151 ] 152 153 deps = [ 154 ":rtc_event_field", 155 "../api:network_state_predictor_api", 156 "../api/rtc_event_log", 157 "../api/units:data_rate", 158 "../api/units:timestamp", 159 ] 160 absl_deps = [ 161 "//third_party/abseil-cpp/absl/memory", 162 "//third_party/abseil-cpp/absl/strings", 163 "//third_party/abseil-cpp/absl/types:optional", 164 ] 165} 166 167rtc_library("rtc_event_frame_events") { 168 sources = [ 169 "rtc_event_log/events/rtc_event_frame_decoded.cc", 170 "rtc_event_log/events/rtc_event_frame_decoded.h", 171 ] 172 deps = [ 173 ":rtc_event_field", 174 "../api/rtc_event_log", 175 "../api/units:timestamp", 176 "../api/video:video_frame", 177 "../rtc_base:timeutils", 178 ] 179 absl_deps = [ 180 "//third_party/abseil-cpp/absl/memory", 181 "//third_party/abseil-cpp/absl/strings", 182 "//third_party/abseil-cpp/absl/types:optional", 183 ] 184} 185 186rtc_library("rtc_event_generic_packet_events") { 187 visibility = [ "*" ] 188 sources = [ 189 "rtc_event_log/events/rtc_event_generic_ack_received.cc", 190 "rtc_event_log/events/rtc_event_generic_ack_received.h", 191 "rtc_event_log/events/rtc_event_generic_packet_received.cc", 192 "rtc_event_log/events/rtc_event_generic_packet_received.h", 193 "rtc_event_log/events/rtc_event_generic_packet_sent.cc", 194 "rtc_event_log/events/rtc_event_generic_packet_sent.h", 195 ] 196 deps = [ 197 ":rtc_event_field", 198 "../api/rtc_event_log", 199 "../api/units:timestamp", 200 "../rtc_base:timeutils", 201 ] 202 absl_deps = [ 203 "//third_party/abseil-cpp/absl/memory", 204 "//third_party/abseil-cpp/absl/strings", 205 "//third_party/abseil-cpp/absl/types:optional", 206 ] 207} 208 209rtc_library("rtc_event_rtp_rtcp") { 210 sources = [ 211 "rtc_event_log/events/logged_rtp_rtcp.h", 212 "rtc_event_log/events/rtc_event_rtcp_packet_incoming.cc", 213 "rtc_event_log/events/rtc_event_rtcp_packet_incoming.h", 214 "rtc_event_log/events/rtc_event_rtcp_packet_outgoing.cc", 215 "rtc_event_log/events/rtc_event_rtcp_packet_outgoing.h", 216 "rtc_event_log/events/rtc_event_rtp_packet_incoming.cc", 217 "rtc_event_log/events/rtc_event_rtp_packet_incoming.h", 218 "rtc_event_log/events/rtc_event_rtp_packet_outgoing.cc", 219 "rtc_event_log/events/rtc_event_rtp_packet_outgoing.h", 220 ] 221 222 deps = [ 223 ":rtc_event_field", 224 "../api:array_view", 225 "../api:rtp_headers", 226 "../api/rtc_event_log", 227 "../api/units:timestamp", 228 "../modules/rtp_rtcp:rtp_rtcp_format", 229 "../rtc_base:buffer", 230 "../rtc_base:checks", 231 ] 232 absl_deps = [ 233 "//third_party/abseil-cpp/absl/memory", 234 "//third_party/abseil-cpp/absl/strings", 235 ] 236} 237 238rtc_library("rtc_event_video") { 239 sources = [ 240 "rtc_event_log/events/rtc_event_video_receive_stream_config.cc", 241 "rtc_event_log/events/rtc_event_video_receive_stream_config.h", 242 "rtc_event_log/events/rtc_event_video_send_stream_config.cc", 243 "rtc_event_log/events/rtc_event_video_send_stream_config.h", 244 ] 245 246 deps = [ 247 ":rtc_event_field", 248 ":rtc_stream_config", 249 "../api/rtc_event_log", 250 "../api/units:timestamp", 251 "../rtc_base:checks", 252 ] 253 absl_deps = [ 254 "//third_party/abseil-cpp/absl/memory", 255 "//third_party/abseil-cpp/absl/strings", 256 ] 257} 258 259rtc_library("rtc_event_number_encodings") { 260 sources = [ 261 "rtc_event_log/encoder/bit_writer.cc", 262 "rtc_event_log/encoder/bit_writer.h", 263 "rtc_event_log/encoder/rtc_event_log_encoder_common.cc", 264 "rtc_event_log/encoder/rtc_event_log_encoder_common.h", 265 "rtc_event_log/encoder/var_int.cc", 266 "rtc_event_log/encoder/var_int.h", 267 ] 268 269 defines = [] 270 271 deps = [ 272 "../rtc_base:bit_buffer", 273 "../rtc_base:bitstream_reader", 274 "../rtc_base:checks", 275 "../rtc_base:ignore_wundef", 276 "../rtc_base:macromagic", 277 ] 278 absl_deps = [ 279 "//third_party/abseil-cpp/absl/memory", 280 "//third_party/abseil-cpp/absl/strings", 281 "//third_party/abseil-cpp/absl/types:optional", 282 ] 283} 284 285# TODO(eladalon): Break down into (1) encoder and (2) decoder; we don't need 286# the decoder code in the WebRTC library, only in unit tests and tools. 287rtc_library("rtc_event_log_impl_encoder") { 288 sources = [ 289 "rtc_event_log/encoder/blob_encoding.cc", 290 "rtc_event_log/encoder/blob_encoding.h", 291 "rtc_event_log/encoder/delta_encoding.cc", 292 "rtc_event_log/encoder/delta_encoding.h", 293 ] 294 295 defines = [] 296 297 deps = [ 298 ":rtc_event_number_encodings", 299 "../api:rtp_headers", 300 "../api:rtp_parameters", 301 "../api/transport:network_control", 302 "../rtc_base:bit_buffer", 303 "../rtc_base:bitstream_reader", 304 "../rtc_base:buffer", 305 "../rtc_base:checks", 306 "../rtc_base:ignore_wundef", 307 "../rtc_base:logging", 308 "../rtc_base:safe_conversions", 309 ] 310 absl_deps = [ 311 "//third_party/abseil-cpp/absl/memory", 312 "//third_party/abseil-cpp/absl/strings", 313 "//third_party/abseil-cpp/absl/types:optional", 314 ] 315 316 if (rtc_enable_protobuf) { 317 deps += [ 318 ":ice_log", 319 ":rtc_event_audio", 320 ":rtc_event_begin_end", 321 ":rtc_event_bwe", 322 ":rtc_event_field", 323 ":rtc_event_frame_events", 324 ":rtc_event_generic_packet_events", 325 ":rtc_event_log2_proto", 326 ":rtc_event_log_api", 327 ":rtc_event_log_proto", 328 ":rtc_event_pacing", 329 ":rtc_event_rtp_rtcp", 330 ":rtc_event_video", 331 ":rtc_stream_config", 332 "../api:array_view", 333 "../api:network_state_predictor_api", 334 "../modules/audio_coding:audio_network_adaptor", 335 "../modules/rtp_rtcp:rtp_rtcp_format", 336 ] 337 sources += [ 338 "rtc_event_log/encoder/rtc_event_log_encoder_legacy.cc", 339 "rtc_event_log/encoder/rtc_event_log_encoder_legacy.h", 340 "rtc_event_log/encoder/rtc_event_log_encoder_new_format.cc", 341 "rtc_event_log/encoder/rtc_event_log_encoder_new_format.h", 342 "rtc_event_log/encoder/rtc_event_log_encoder_v3.cc", 343 "rtc_event_log/encoder/rtc_event_log_encoder_v3.h", 344 ] 345 } 346} 347 348# TODO(bugs.webrtc.org/6463): For backwards compatibility; delete as 349# soon as downstream dependencies are updated. 350rtc_source_set("rtc_event_log_impl_output") { 351 sources = [ "rtc_event_log/output/rtc_event_log_output_file.h" ] 352 deps = [ "../api:rtc_event_log_output_file" ] 353} 354 355if (rtc_enable_protobuf) { 356 rtc_library("rtc_event_log_impl") { 357 visibility = [ "../api/rtc_event_log:rtc_event_log_factory" ] 358 sources = [ 359 "rtc_event_log/rtc_event_log_impl.cc", 360 "rtc_event_log/rtc_event_log_impl.h", 361 ] 362 deps = [ 363 ":ice_log", 364 ":rtc_event_log_api", 365 ":rtc_event_log_impl_encoder", 366 "../api:libjingle_logging_api", 367 "../api:sequence_checker", 368 "../api/rtc_event_log", 369 "../api/task_queue", 370 "../api/units:time_delta", 371 "../rtc_base:checks", 372 "../rtc_base:logging", 373 "../rtc_base:macromagic", 374 "../rtc_base:rtc_event", 375 "../rtc_base:rtc_task_queue", 376 "../rtc_base:safe_conversions", 377 "../rtc_base:safe_minmax", 378 "../rtc_base:timeutils", 379 "../rtc_base/system:no_unique_address", 380 ] 381 absl_deps = [ 382 "//third_party/abseil-cpp/absl/strings", 383 "//third_party/abseil-cpp/absl/types:optional", 384 ] 385 } 386} 387 388rtc_library("fake_rtc_event_log") { 389 testonly = true 390 sources = [ 391 "rtc_event_log/fake_rtc_event_log.cc", 392 "rtc_event_log/fake_rtc_event_log.h", 393 "rtc_event_log/fake_rtc_event_log_factory.cc", 394 "rtc_event_log/fake_rtc_event_log_factory.h", 395 ] 396 397 deps = [ 398 "../api/rtc_event_log", 399 "../rtc_base", 400 "../rtc_base:macromagic", 401 "../rtc_base/synchronization:mutex", 402 ] 403} 404 405if (rtc_enable_protobuf) { 406 proto_library("rtc_event_log_proto") { 407 visibility = [ "*" ] 408 sources = [ "rtc_event_log/rtc_event_log.proto" ] 409 proto_out_dir = "logging/rtc_event_log" 410 } 411 412 proto_library("rtc_event_log2_proto") { 413 visibility = [ "*" ] 414 sources = [ "rtc_event_log/rtc_event_log2.proto" ] 415 proto_out_dir = "logging/rtc_event_log" 416 } 417 418 rtc_library("rtc_event_log_parser") { 419 visibility = [ "*" ] 420 sources = [ 421 "rtc_event_log/logged_events.h", 422 "rtc_event_log/rtc_event_log_parser.cc", 423 "rtc_event_log/rtc_event_log_parser.h", 424 "rtc_event_log/rtc_event_processor.cc", 425 "rtc_event_log/rtc_event_processor.h", 426 ] 427 428 deps = [ 429 ":ice_log", 430 ":rtc_event_audio", 431 ":rtc_event_begin_end", 432 ":rtc_event_bwe", 433 ":rtc_event_frame_events", 434 ":rtc_event_generic_packet_events", 435 ":rtc_event_log2_proto", 436 ":rtc_event_log_impl_encoder", 437 ":rtc_event_log_proto", 438 ":rtc_event_number_encodings", 439 ":rtc_event_pacing", 440 ":rtc_event_rtp_rtcp", 441 ":rtc_event_video", 442 ":rtc_stream_config", 443 "../api:function_view", 444 "../api:network_state_predictor_api", 445 "../api:rtp_headers", 446 "../api:rtp_parameters", 447 "../api/rtc_event_log", 448 "../api/units:data_rate", 449 "../api/units:time_delta", 450 "../api/units:timestamp", 451 "../api/video:video_frame", 452 "../call:video_stream_api", 453 "../modules:module_api_public", 454 "../modules/audio_coding:audio_network_adaptor", 455 "../modules/rtp_rtcp:rtp_rtcp_format", 456 "../rtc_base:checks", 457 "../rtc_base:copy_on_write_buffer", 458 "../rtc_base:ignore_wundef", 459 "../rtc_base:logging", 460 "../rtc_base:protobuf_utils", 461 "../rtc_base:rtc_numerics", 462 "../rtc_base:safe_conversions", 463 "../rtc_base/system:file_wrapper", 464 ] 465 absl_deps = [ 466 "//third_party/abseil-cpp/absl/base:core_headers", 467 "//third_party/abseil-cpp/absl/memory", 468 "//third_party/abseil-cpp/absl/strings", 469 "//third_party/abseil-cpp/absl/types:optional", 470 ] 471 } 472 473 if (rtc_include_tests) { 474 rtc_library("rtc_event_log_tests") { 475 testonly = true 476 assert(rtc_enable_protobuf) 477 sources = [ 478 "rtc_event_log/encoder/blob_encoding_unittest.cc", 479 "rtc_event_log/encoder/delta_encoding_unittest.cc", 480 "rtc_event_log/encoder/rtc_event_log_encoder_common_unittest.cc", 481 "rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc", 482 "rtc_event_log/events/rtc_event_field_encoding_unittest.cc", 483 "rtc_event_log/events/rtc_event_field_extraction_unittest.cc", 484 "rtc_event_log/rtc_event_log_unittest.cc", 485 "rtc_event_log/rtc_event_log_unittest_helper.cc", 486 "rtc_event_log/rtc_event_log_unittest_helper.h", 487 "rtc_event_log/rtc_event_processor_unittest.cc", 488 ] 489 deps = [ 490 ":ice_log", 491 ":rtc_event_audio", 492 ":rtc_event_bwe", 493 ":rtc_event_field", 494 ":rtc_event_frame_events", 495 ":rtc_event_generic_packet_events", 496 ":rtc_event_log2_proto", 497 ":rtc_event_log_impl_encoder", 498 ":rtc_event_log_parser", 499 ":rtc_event_log_proto", 500 ":rtc_event_number_encodings", 501 ":rtc_event_pacing", 502 ":rtc_event_rtp_rtcp", 503 ":rtc_event_video", 504 ":rtc_stream_config", 505 "../api:array_view", 506 "../api:network_state_predictor_api", 507 "../api:rtc_event_log_output_file", 508 "../api:rtp_headers", 509 "../api:rtp_parameters", 510 "../api/rtc_event_log", 511 "../api/rtc_event_log:rtc_event_log_factory", 512 "../api/task_queue:default_task_queue_factory", 513 "../api/units:time_delta", 514 "../api/units:timestamp", 515 "../call", 516 "../call:call_interfaces", 517 "../modules/audio_coding:audio_network_adaptor", 518 "../modules/rtp_rtcp:rtp_rtcp_format", 519 "../rtc_base:buffer", 520 "../rtc_base:checks", 521 "../rtc_base:macromagic", 522 "../rtc_base:random", 523 "../rtc_base:rtc_base_tests_utils", 524 "../rtc_base:timeutils", 525 "../system_wrappers", 526 "../test:fileutils", 527 "../test:test_support", 528 "../test/logging:log_writer", 529 "//testing/gtest", 530 ] 531 absl_deps = [ 532 "//third_party/abseil-cpp/absl/memory", 533 "//third_party/abseil-cpp/absl/strings", 534 "//third_party/abseil-cpp/absl/types:optional", 535 ] 536 } 537 538 if (!build_with_chromium) { 539 rtc_executable("rtc_event_log_rtp_dump") { 540 testonly = true 541 sources = [ "rtc_event_log/rtc_event_log2rtp_dump.cc" ] 542 deps = [ 543 ":rtc_event_log_parser", 544 "../api:array_view", 545 "../api:rtp_headers", 546 "../api/rtc_event_log", 547 "../modules/rtp_rtcp", 548 "../modules/rtp_rtcp:rtp_rtcp_format", 549 "../rtc_base:checks", 550 "../rtc_base:protobuf_utils", 551 "../test:rtp_test_utils", 552 "//third_party/abseil-cpp/absl/flags:flag", 553 "//third_party/abseil-cpp/absl/flags:parse", 554 "//third_party/abseil-cpp/absl/flags:usage", 555 "//third_party/abseil-cpp/absl/memory", 556 "//third_party/abseil-cpp/absl/strings", 557 "//third_party/abseil-cpp/absl/types:optional", 558 ] 559 } 560 } 561 } 562} 563 564rtc_library("ice_log") { 565 sources = [ 566 "rtc_event_log/events/rtc_event_dtls_transport_state.cc", 567 "rtc_event_log/events/rtc_event_dtls_transport_state.h", 568 "rtc_event_log/events/rtc_event_dtls_writable_state.cc", 569 "rtc_event_log/events/rtc_event_dtls_writable_state.h", 570 "rtc_event_log/events/rtc_event_ice_candidate_pair.cc", 571 "rtc_event_log/events/rtc_event_ice_candidate_pair.h", 572 "rtc_event_log/events/rtc_event_ice_candidate_pair_config.cc", 573 "rtc_event_log/events/rtc_event_ice_candidate_pair_config.h", 574 "rtc_event_log/ice_logger.cc", 575 "rtc_event_log/ice_logger.h", 576 ] 577 578 deps = [ 579 ":rtc_event_field", 580 "../api:dtls_transport_interface", 581 "../api:libjingle_logging_api", 582 "../api/rtc_event_log", 583 "../api/units:timestamp", 584 ] 585 absl_deps = [ 586 "//third_party/abseil-cpp/absl/memory", 587 "//third_party/abseil-cpp/absl/strings", 588 ] 589} 590 591if (rtc_include_tests) { 592 rtc_library("mocks") { 593 testonly = true 594 sources = [ 595 "rtc_event_log/mock/mock_rtc_event_log.cc", 596 "rtc_event_log/mock/mock_rtc_event_log.h", 597 ] 598 deps = [ 599 "../api/rtc_event_log", 600 "../test:test_support", 601 ] 602 } 603} 604