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("//third_party/libaom/options.gni") 10import("../../webrtc.gni") 11 12rtc_library("encoded_frame") { 13 visibility = [ "*" ] 14 sources = [ 15 "encoded_frame.cc", 16 "encoded_frame.h", 17 ] 18 deps = [ 19 ":codec_globals_headers", 20 ":video_codec_interface", 21 "../../api/video:encoded_image", 22 "../../api/video:video_frame", 23 "../../api/video:video_frame_i420", 24 "../../api/video:video_rtp_headers", 25 "../../modules:module_api", 26 "../../modules:module_api_public", 27 "../../modules/rtp_rtcp:rtp_video_header", 28 "../../rtc_base:checks", 29 "../../rtc_base:rtc_base_approved", 30 "../../rtc_base/experiments:alr_experiment", 31 "../../rtc_base/experiments:rtt_mult_experiment", 32 "../../rtc_base/system:rtc_export", 33 "../../system_wrappers", 34 ] 35 absl_deps = [ 36 "//third_party/abseil-cpp/absl/types:optional", 37 "//third_party/abseil-cpp/absl/types:variant", 38 ] 39} 40 41rtc_library("chain_diff_calculator") { 42 sources = [ 43 "chain_diff_calculator.cc", 44 "chain_diff_calculator.h", 45 ] 46 47 deps = [ 48 "../../rtc_base:checks", 49 "../../rtc_base:logging", 50 ] 51 absl_deps = [ 52 "//third_party/abseil-cpp/absl/container:inlined_vector", 53 "//third_party/abseil-cpp/absl/types:optional", 54 ] 55} 56 57rtc_library("frame_dependencies_calculator") { 58 sources = [ 59 "frame_dependencies_calculator.cc", 60 "frame_dependencies_calculator.h", 61 ] 62 63 deps = [ 64 "../../api:array_view", 65 "../../api/video:video_frame_type", 66 "../../common_video/generic_frame_descriptor", 67 "../../rtc_base:checks", 68 "../../rtc_base:logging", 69 ] 70 absl_deps = [ 71 "//third_party/abseil-cpp/absl/algorithm:container", 72 "//third_party/abseil-cpp/absl/container:inlined_vector", 73 "//third_party/abseil-cpp/absl/types:optional", 74 ] 75} 76 77rtc_library("nack_module") { 78 sources = [ 79 "histogram.cc", 80 "histogram.h", 81 "nack_module2.cc", 82 "nack_module2.h", 83 ] 84 85 deps = [ 86 "..:module_api", 87 "../../api/units:time_delta", 88 "../../api/units:timestamp", 89 "../../rtc_base:checks", 90 "../../rtc_base:rtc_base_approved", 91 "../../rtc_base:rtc_numerics", 92 "../../rtc_base:rtc_task_queue", 93 "../../rtc_base/experiments:field_trial_parser", 94 "../../rtc_base/synchronization:sequence_checker", 95 "../../rtc_base/task_utils:pending_task_safety_flag", 96 "../../rtc_base/task_utils:repeating_task", 97 "../../system_wrappers", 98 "../../system_wrappers:field_trial", 99 "../utility", 100 ] 101} 102 103rtc_library("video_coding") { 104 visibility = [ "*" ] 105 deps = [ 106 "..:module_fec_api", 107 "../../api:array_view", 108 "../../api:scoped_refptr", 109 "../../api/video:encoded_image", 110 "../../api/video:video_adaptation", 111 "../../api/video:video_bitrate_allocation", 112 "../../api/video:video_bitrate_allocator_factory", 113 "../../rtc_base:deprecation", 114 "../../rtc_base/task_utils:to_queued_task", 115 "../../system_wrappers:field_trial", 116 "../../system_wrappers:metrics", 117 "../rtp_rtcp:rtp_video_header", 118 ] 119 absl_deps = [ 120 "//third_party/abseil-cpp/absl/base:core_headers", 121 "//third_party/abseil-cpp/absl/container:inlined_vector", 122 "//third_party/abseil-cpp/absl/memory", 123 "//third_party/abseil-cpp/absl/types:optional", 124 "//third_party/abseil-cpp/absl/types:variant", 125 ] 126 127 sources = [ 128 "codec_timer.cc", 129 "codec_timer.h", 130 "decoder_database.cc", 131 "decoder_database.h", 132 "fec_controller_default.cc", 133 "fec_controller_default.h", 134 "fec_rate_table.h", 135 "frame_buffer2.cc", 136 "frame_buffer2.h", 137 "frame_object.cc", 138 "frame_object.h", 139 "generic_decoder.cc", 140 "generic_decoder.h", 141 "h264_sprop_parameter_sets.cc", 142 "h264_sprop_parameter_sets.h", 143 "h264_sps_pps_tracker.cc", 144 "h264_sps_pps_tracker.h", 145 "include/video_codec_initializer.h", 146 "inter_frame_delay.cc", 147 "inter_frame_delay.h", 148 "internal_defines.h", 149 "jitter_estimator.cc", 150 "jitter_estimator.h", 151 "loss_notification_controller.cc", 152 "loss_notification_controller.h", 153 "media_opt_util.cc", 154 "media_opt_util.h", 155 "packet_buffer.cc", 156 "packet_buffer.h", 157 "rtp_frame_reference_finder.cc", 158 "rtp_frame_reference_finder.h", 159 "rtt_filter.cc", 160 "rtt_filter.h", 161 "timestamp_map.cc", 162 "timestamp_map.h", 163 "timing.cc", 164 "timing.h", 165 "unique_timestamp_counter.cc", 166 "unique_timestamp_counter.h", 167 "video_codec_initializer.cc", 168 "video_receiver2.cc", 169 "video_receiver2.h", 170 ] 171 172 deps += [ 173 ":codec_globals_headers", 174 ":encoded_frame", 175 ":video_codec_interface", 176 ":video_coding_utility", 177 ":webrtc_vp9_helpers", 178 "..:module_api", 179 "..:module_api_public", 180 "../../api:fec_controller_api", 181 "../../api:rtp_headers", 182 "../../api:rtp_packet_info", 183 "../../api/units:data_rate", 184 "../../api/units:time_delta", 185 "../../api/video:builtin_video_bitrate_allocator_factory", 186 "../../api/video:encoded_frame", 187 "../../api/video:video_adaptation", 188 "../../api/video:video_bitrate_allocator", 189 "../../api/video:video_frame", 190 "../../api/video:video_frame_i420", 191 "../../api/video:video_frame_type", 192 "../../api/video:video_rtp_headers", 193 "../../api/video_codecs:video_codecs_api", 194 "../../common_video", 195 "../../rtc_base", 196 "../../rtc_base:checks", 197 "../../rtc_base:rtc_base_approved", 198 "../../rtc_base:rtc_numerics", 199 "../../rtc_base:rtc_task_queue", 200 "../../rtc_base/experiments:alr_experiment", 201 "../../rtc_base/experiments:field_trial_parser", 202 "../../rtc_base/experiments:jitter_upper_bound_experiment", 203 "../../rtc_base/experiments:min_video_bitrate_experiment", 204 "../../rtc_base/experiments:rate_control_settings", 205 "../../rtc_base/experiments:rtt_mult_experiment", 206 "../../rtc_base/synchronization:mutex", 207 "../../rtc_base/synchronization:sequence_checker", 208 "../../rtc_base/task_utils:repeating_task", 209 "../../rtc_base/third_party/base64", 210 "../../rtc_base/time:timestamp_extrapolator", 211 "../../system_wrappers", 212 "../rtp_rtcp", 213 "../rtp_rtcp:rtp_rtcp_format", 214 ] 215} 216 217rtc_library("video_codec_interface") { 218 visibility = [ "*" ] 219 sources = [ 220 "include/video_codec_interface.cc", 221 "include/video_codec_interface.h", 222 "include/video_coding_defines.h", 223 "include/video_error_codes.h", 224 "video_coding_defines.cc", 225 ] 226 deps = [ 227 ":codec_globals_headers", 228 "..:module_api", 229 "../../api/video:video_frame", 230 "../../api/video:video_rtp_headers", 231 "../../api/video_codecs:video_codecs_api", 232 "../../common_video", 233 "../../common_video/generic_frame_descriptor", 234 "../../rtc_base/system:rtc_export", 235 ] 236 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 237} 238 239rtc_library("video_coding_legacy") { 240 visibility = [ ":video_coding_unittests" ] 241 sources = [ 242 "decoding_state.cc", 243 "decoding_state.h", 244 "event_wrapper.cc", 245 "event_wrapper.h", 246 "frame_buffer.cc", 247 "frame_buffer.h", 248 "include/video_coding.h", 249 "jitter_buffer.cc", 250 "jitter_buffer.h", 251 "jitter_buffer_common.h", 252 "packet.cc", 253 "packet.h", 254 "receiver.cc", 255 "receiver.h", 256 "session_info.cc", 257 "session_info.h", 258 "video_coding_impl.cc", 259 "video_coding_impl.h", 260 "video_receiver.cc", 261 ] 262 deps = [ 263 ":codec_globals_headers", 264 ":encoded_frame", 265 ":video_codec_interface", 266 ":video_coding", 267 "..:module_api", 268 "..:module_api_public", 269 "../../:webrtc_common", 270 "../../api:rtp_headers", 271 "../../api:rtp_packet_info", 272 "../../api/video:encoded_image", 273 "../../api/video:video_frame", 274 "../../api/video:video_frame_type", 275 "../../api/video:video_rtp_headers", 276 "../../api/video_codecs:video_codecs_api", 277 "../../common_video", 278 "../../modules/rtp_rtcp:rtp_video_header", 279 "../../rtc_base:checks", 280 "../../rtc_base:logging", 281 "../../rtc_base:rtc_base_approved", 282 "../../rtc_base:rtc_event", 283 "../../rtc_base/synchronization:mutex", 284 "../../rtc_base/synchronization:sequence_checker", 285 "../../system_wrappers", 286 "../rtp_rtcp:rtp_rtcp_format", 287 "../rtp_rtcp:rtp_video_header", 288 "../utility", 289 ] 290 absl_deps = [ 291 "//third_party/abseil-cpp/absl/memory", 292 "//third_party/abseil-cpp/absl/types:optional", 293 "//third_party/abseil-cpp/absl/types:variant", 294 ] 295} 296 297rtc_source_set("codec_globals_headers") { 298 visibility = [ "*" ] 299 sources = [ 300 "codecs/h264/include/h264_globals.h", 301 "codecs/interface/common_constants.h", 302 "codecs/vp8/include/vp8_globals.h", 303 "codecs/vp9/include/vp9_globals.h", 304 ] 305 306 deps = [ "../../rtc_base:checks" ] 307} 308 309rtc_library("video_coding_utility") { 310 visibility = [ "*" ] 311 sources = [ 312 "utility/decoded_frames_history.cc", 313 "utility/decoded_frames_history.h", 314 "utility/frame_dropper.cc", 315 "utility/frame_dropper.h", 316 "utility/framerate_controller.cc", 317 "utility/framerate_controller.h", 318 "utility/ivf_file_reader.cc", 319 "utility/ivf_file_reader.h", 320 "utility/ivf_file_writer.cc", 321 "utility/ivf_file_writer.h", 322 "utility/quality_scaler.cc", 323 "utility/quality_scaler.h", 324 "utility/simulcast_rate_allocator.cc", 325 "utility/simulcast_rate_allocator.h", 326 "utility/simulcast_utility.cc", 327 "utility/simulcast_utility.h", 328 "utility/vp8_header_parser.cc", 329 "utility/vp8_header_parser.h", 330 "utility/vp9_uncompressed_header_parser.cc", 331 "utility/vp9_uncompressed_header_parser.h", 332 ] 333 334 deps = [ 335 ":video_codec_interface", 336 "..:module_api", 337 "../../api:scoped_refptr", 338 "../../api/video:encoded_frame", 339 "../../api/video:encoded_image", 340 "../../api/video:video_adaptation", 341 "../../api/video:video_bitrate_allocation", 342 "../../api/video:video_bitrate_allocator", 343 "../../api/video:video_frame", 344 "../../api/video_codecs:video_codecs_api", 345 "../../common_video", 346 "../../modules/rtp_rtcp", 347 "../../rtc_base:checks", 348 "../../rtc_base:rtc_base_approved", 349 "../../rtc_base:rtc_numerics", 350 "../../rtc_base:rtc_task_queue", 351 "../../rtc_base:weak_ptr", 352 "../../rtc_base/experiments:quality_scaler_settings", 353 "../../rtc_base/experiments:quality_scaling_experiment", 354 "../../rtc_base/experiments:rate_control_settings", 355 "../../rtc_base/experiments:stable_target_rate_experiment", 356 "../../rtc_base/synchronization:sequence_checker", 357 "../../rtc_base/system:arch", 358 "../../rtc_base/system:file_wrapper", 359 "../../rtc_base/task_utils:repeating_task", 360 "../../rtc_base/task_utils:to_queued_task", 361 "../../system_wrappers:field_trial", 362 "../rtp_rtcp:rtp_rtcp_format", 363 ] 364 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 365} 366 367rtc_library("webrtc_h264") { 368 visibility = [ "*" ] 369 sources = [ 370 "codecs/h264/h264.cc", 371 "codecs/h264/h264_color_space.cc", 372 "codecs/h264/h264_color_space.h", 373 "codecs/h264/h264_decoder_impl.cc", 374 "codecs/h264/h264_decoder_impl.h", 375 "codecs/h264/h264_encoder_impl.cc", 376 "codecs/h264/h264_encoder_impl.h", 377 "codecs/h264/include/h264.h", 378 ] 379 380 defines = [] 381 deps = [ 382 ":video_codec_interface", 383 ":video_coding_utility", 384 "../../api/video:video_frame", 385 "../../api/video:video_frame_i010", 386 "../../api/video:video_frame_i420", 387 "../../api/video:video_rtp_headers", 388 "../../api/video_codecs:video_codecs_api", 389 "../../common_video", 390 "../../media:rtc_h264_profile_id", 391 "../../media:rtc_media_base", 392 "../../rtc_base", 393 "../../rtc_base:checks", 394 "../../rtc_base/system:rtc_export", 395 "../../system_wrappers:field_trial", 396 "../../system_wrappers:metrics", 397 "//third_party/libyuv", 398 ] 399 absl_deps = [ 400 "//third_party/abseil-cpp/absl/strings", 401 "//third_party/abseil-cpp/absl/types:optional", 402 ] 403 404 if (rtc_use_h264) { 405 deps += [ 406 "//third_party/ffmpeg", 407 "//third_party/openh264:encoder", 408 ] 409 if (!build_with_mozilla) { 410 deps += [ "../../media:rtc_media_base" ] 411 } 412 } 413} 414 415rtc_library("webrtc_multiplex") { 416 sources = [ 417 "codecs/multiplex/augmented_video_frame_buffer.cc", 418 "codecs/multiplex/include/augmented_video_frame_buffer.h", 419 "codecs/multiplex/include/multiplex_decoder_adapter.h", 420 "codecs/multiplex/include/multiplex_encoder_adapter.h", 421 "codecs/multiplex/multiplex_decoder_adapter.cc", 422 "codecs/multiplex/multiplex_encoded_image_packer.cc", 423 "codecs/multiplex/multiplex_encoded_image_packer.h", 424 "codecs/multiplex/multiplex_encoder_adapter.cc", 425 ] 426 427 deps = [ 428 ":video_codec_interface", 429 ":video_coding_utility", 430 "..:module_api", 431 "../../api:fec_controller_api", 432 "../../api:scoped_refptr", 433 "../../api/video:encoded_image", 434 "../../api/video:video_frame", 435 "../../api/video:video_frame_i420", 436 "../../api/video:video_rtp_headers", 437 "../../api/video_codecs:video_codecs_api", 438 "../../common_video", 439 "../../media:rtc_media_base", 440 "../../rtc_base", 441 "../../rtc_base:checks", 442 "../../rtc_base/synchronization:mutex", 443 "../rtp_rtcp:rtp_rtcp_format", 444 ] 445} 446 447# This target includes the internal SW codec. 448rtc_library("webrtc_vp8") { 449 visibility = [ "*" ] 450 poisonous = [ "software_video_codecs" ] 451 sources = [ 452 "codecs/vp8/include/vp8.h", 453 "codecs/vp8/libvpx_interface.cc", 454 "codecs/vp8/libvpx_interface.h", 455 "codecs/vp8/libvpx_vp8_decoder.cc", 456 "codecs/vp8/libvpx_vp8_decoder.h", 457 "codecs/vp8/libvpx_vp8_encoder.cc", 458 "codecs/vp8/libvpx_vp8_encoder.h", 459 ] 460 461 deps = [ 462 ":codec_globals_headers", 463 ":video_codec_interface", 464 ":video_coding_utility", 465 ":webrtc_vp8_temporal_layers", 466 "..:module_api", 467 "../..:webrtc_common", 468 "../../api:fec_controller_api", 469 "../../api:scoped_refptr", 470 "../../api/video:encoded_image", 471 "../../api/video:video_frame", 472 "../../api/video:video_frame_i420", 473 "../../api/video:video_rtp_headers", 474 "../../api/video_codecs:video_codecs_api", 475 "../../api/video_codecs:vp8_temporal_layers_factory", 476 "../../common_video", 477 "../../rtc_base:checks", 478 "../../rtc_base:deprecation", 479 "../../rtc_base:rtc_base_approved", 480 "../../rtc_base:rtc_numerics", 481 "../../rtc_base/experiments:cpu_speed_experiment", 482 "../../rtc_base/experiments:field_trial_parser", 483 "../../rtc_base/experiments:rate_control_settings", 484 "../../system_wrappers:field_trial", 485 "../../system_wrappers:metrics", 486 "//third_party/libyuv", 487 ] 488 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 489 if (rtc_build_libvpx) { 490 deps += [ rtc_libvpx_dir ] 491 } 492} 493 494rtc_library("webrtc_vp8_temporal_layers") { 495 visibility = [ "*" ] 496 sources = [ 497 "codecs/vp8/default_temporal_layers.cc", 498 "codecs/vp8/default_temporal_layers.h", 499 "codecs/vp8/include/temporal_layers_checker.h", 500 "codecs/vp8/screenshare_layers.cc", 501 "codecs/vp8/screenshare_layers.h", 502 "codecs/vp8/temporal_layers.h", 503 "codecs/vp8/temporal_layers_checker.cc", 504 ] 505 506 deps = [ 507 ":codec_globals_headers", 508 ":video_codec_interface", 509 ":video_coding_utility", 510 "..:module_api", 511 "../..:webrtc_common", 512 "../../api:fec_controller_api", 513 "../../api/video_codecs:video_codecs_api", 514 "../../rtc_base:checks", 515 "../../rtc_base:rtc_base_approved", 516 "../../rtc_base:rtc_numerics", 517 "../../system_wrappers:field_trial", 518 "../../system_wrappers:metrics", 519 ] 520 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 521} 522 523# This target includes VP9 files that may be used for any VP9 codec, internal SW or external HW. 524rtc_library("webrtc_vp9_helpers") { 525 sources = [ 526 "codecs/vp9/svc_config.cc", 527 "codecs/vp9/svc_config.h", 528 "codecs/vp9/svc_rate_allocator.cc", 529 "codecs/vp9/svc_rate_allocator.h", 530 ] 531 532 deps = [ 533 ":codec_globals_headers", 534 ":video_codec_interface", 535 "../..:webrtc_common", 536 "../../api/video:video_bitrate_allocation", 537 "../../api/video:video_bitrate_allocator", 538 "../../api/video:video_codec_constants", 539 "../../api/video_codecs:video_codecs_api", 540 "../../common_video", 541 "../../rtc_base:checks", 542 "../../rtc_base:logging", 543 "../../rtc_base/experiments:stable_target_rate_experiment", 544 ] 545 absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ] 546} 547 548rtc_library("webrtc_vp9") { 549 visibility = [ "*" ] 550 poisonous = [ "software_video_codecs" ] 551 sources = [ 552 "codecs/vp9/include/vp9.h", 553 "codecs/vp9/vp9.cc", 554 "codecs/vp9/vp9_frame_buffer_pool.cc", 555 "codecs/vp9/vp9_frame_buffer_pool.h", 556 "codecs/vp9/vp9_impl.cc", 557 "codecs/vp9/vp9_impl.h", 558 ] 559 560 deps = [ 561 ":video_codec_interface", 562 ":video_coding_utility", 563 ":webrtc_vp9_helpers", 564 "..:module_api", 565 "../..:webrtc_common", 566 "../../api:fec_controller_api", 567 "../../api:scoped_refptr", 568 "../../api/video:video_frame", 569 "../../api/video:video_frame_i010", 570 "../../api/video:video_rtp_headers", 571 "../../api/video_codecs:video_codecs_api", 572 "../../common_video", 573 "../../media:rtc_media_base", 574 "../../media:rtc_vp9_profile", 575 "../../rtc_base", 576 "../../rtc_base:checks", 577 "../../rtc_base/experiments:rate_control_settings", 578 "../../rtc_base/synchronization:mutex", 579 "../../system_wrappers:field_trial", 580 "../rtp_rtcp:rtp_rtcp_format", 581 ] 582 absl_deps = [ "//third_party/abseil-cpp/absl/memory" ] 583 if (rtc_build_libvpx) { 584 deps += [ rtc_libvpx_dir ] 585 } 586} 587 588if (rtc_include_tests) { 589 if (is_android) { 590 rtc_library("android_codec_factory_helper") { 591 sources = [ 592 "codecs/test/android_codec_factory_helper.cc", 593 "codecs/test/android_codec_factory_helper.h", 594 ] 595 596 deps = [ 597 "../../api/video_codecs:video_codecs_api", 598 "../../rtc_base:checks", 599 "../../rtc_base:ignore_wundef", 600 "../../rtc_base:rtc_base_approved", 601 "../../sdk/android:native_api_base", 602 "../../sdk/android:native_api_codecs", 603 "../../sdk/android:native_api_jni", 604 "//base", 605 ] 606 } 607 } 608 609 if (is_ios || is_mac) { 610 rtc_library("objc_codec_factory_helper") { 611 sources = [ 612 "codecs/test/objc_codec_factory_helper.h", 613 "codecs/test/objc_codec_factory_helper.mm", 614 ] 615 616 deps = [ 617 "../../api/video:video_frame", 618 "../../api/video:video_rtp_headers", 619 "../../api/video_codecs:video_codecs_api", 620 "../../media:rtc_audio_video", 621 "../../media:rtc_media_base", 622 "../../modules:module_api", 623 "../../rtc_base:rtc_base_approved", 624 "../../sdk:native_api", 625 "../../sdk:peerconnectionfactory_base_objc", 626 "../../sdk:videocodec_objc", 627 "../../sdk:videosource_objc", 628 "../../sdk:videotoolbox_objc", 629 ] 630 } 631 } 632 633 rtc_library("encoded_video_frame_producer") { 634 testonly = true 635 sources = [ 636 "codecs/test/encoded_video_frame_producer.cc", 637 "codecs/test/encoded_video_frame_producer.h", 638 ] 639 deps = [ 640 ":video_codec_interface", 641 "../../api:create_frame_generator", 642 "../../api:frame_generator_api", 643 "../../api/transport/rtp:dependency_descriptor", 644 "../../api/video:encoded_image", 645 "../../api/video:video_frame", 646 "../../api/video:video_frame_type", 647 "../../api/video_codecs:video_codecs_api", 648 "../../rtc_base:checks", 649 ] 650 } 651 652 rtc_library("simulcast_test_fixture_impl") { 653 testonly = true 654 sources = [ 655 "utility/simulcast_test_fixture_impl.cc", 656 "utility/simulcast_test_fixture_impl.h", 657 ] 658 659 deps = [ 660 ":video_codec_interface", 661 ":video_coding", 662 ":video_coding_utility", 663 "../../:webrtc_common", 664 "../../api:mock_video_decoder", 665 "../../api:mock_video_encoder", 666 "../../api:simulcast_test_fixture_api", 667 "../../api/video:encoded_image", 668 "../../api/video:video_frame", 669 "../../api/video:video_frame_i420", 670 "../../api/video:video_rtp_headers", 671 "../../api/video_codecs:video_codecs_api", 672 "../../common_video", 673 "../../rtc_base:checks", 674 "../../rtc_base:rtc_base_approved", 675 "../../test:test_support", 676 ] 677 } 678 679 rtc_library("video_codecs_test_framework") { 680 testonly = true 681 sources = [ 682 "codecs/test/video_codec_unittest.cc", 683 "codecs/test/video_codec_unittest.h", 684 "codecs/test/videoprocessor.cc", 685 "codecs/test/videoprocessor.h", 686 ] 687 688 deps = [ 689 ":codec_globals_headers", 690 ":video_codec_interface", 691 ":video_coding", 692 ":video_coding_utility", 693 ":videocodec_test_stats_impl", 694 ":webrtc_vp9_helpers", 695 "..:module_api", 696 "../../api:create_frame_generator", 697 "../../api:frame_generator_api", 698 "../../api:scoped_refptr", 699 "../../api:videocodec_test_fixture_api", 700 "../../api/task_queue", 701 "../../api/video:builtin_video_bitrate_allocator_factory", 702 "../../api/video:encoded_image", 703 "../../api/video:video_bitrate_allocation", 704 "../../api/video:video_bitrate_allocator", 705 "../../api/video:video_bitrate_allocator_factory", 706 "../../api/video:video_frame", 707 "../../api/video:video_frame_i420", 708 "../../api/video:video_rtp_headers", 709 "../../api/video_codecs:video_codecs_api", 710 "../../common_video", 711 "../../rtc_base:checks", 712 "../../rtc_base:rtc_base_approved", 713 "../../rtc_base:rtc_task_queue", 714 "../../rtc_base/synchronization:mutex", 715 "../../rtc_base/synchronization:sequence_checker", 716 "../../rtc_base/task_utils:to_queued_task", 717 "../../test:test_support", 718 "../../test:video_test_common", 719 "../../test:video_test_support", 720 "../rtp_rtcp:rtp_rtcp_format", 721 "//third_party/libyuv", 722 ] 723 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 724 } 725 726 video_coding_modules_tests_resources = [] 727 if (is_android) { 728 video_coding_modules_tests_resources += [ 729 "../../resources/foreman_128x96.yuv", 730 "../../resources/foreman_160x120.yuv", 731 "../../resources/foreman_176x144.yuv", 732 "../../resources/foreman_240x136.yuv", 733 "../../resources/foreman_320x240.yuv", 734 "../../resources/foreman_480x272.yuv", 735 ] 736 } 737 if (!is_android) { 738 video_coding_modules_tests_resources += [ 739 "../../resources/ConferenceMotion_1280_720_50.yuv", 740 "../../resources/FourPeople_1280x720_30.yuv", 741 ] 742 } 743 744 num_video_coding_modules_tests_resources = 0 745 foreach(i, video_coding_modules_tests_resources) { 746 num_video_coding_modules_tests_resources += 1 747 } 748 749 if (num_video_coding_modules_tests_resources > 0) { 750 if (is_ios || is_mac) { 751 bundle_data("video_coding_modules_tests_resources_bundle_data") { 752 testonly = true 753 sources = video_coding_modules_tests_resources 754 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] 755 } 756 } 757 } 758 759 rtc_library("videocodec_test_impl") { 760 testonly = true 761 sources = [ 762 "codecs/test/videocodec_test_fixture_impl.cc", 763 "codecs/test/videocodec_test_fixture_impl.h", 764 ] 765 deps = [ 766 ":codec_globals_headers", 767 ":video_codec_interface", 768 ":video_codecs_test_framework", 769 ":video_coding_utility", 770 ":videocodec_test_stats_impl", 771 ":webrtc_vp9_helpers", 772 "../..:webrtc_common", 773 "../../api:array_view", 774 "../../api:videocodec_test_fixture_api", 775 "../../api/test/video:function_video_factory", 776 "../../api/video:video_bitrate_allocation", 777 "../../api/video_codecs:video_codecs_api", 778 "../../call:video_stream_api", 779 "../../common_video", 780 "../../media:rtc_audio_video", 781 "../../media:rtc_h264_profile_id", 782 "../../media:rtc_internal_video_codecs", 783 "../../media:rtc_media_base", 784 "../../rtc_base:checks", 785 "../../rtc_base:rtc_base_approved", 786 "../../rtc_base:rtc_base_tests_utils", 787 "../../rtc_base:task_queue_for_test", 788 "../../system_wrappers", 789 "../../test:fileutils", 790 "../../test:perf_test", 791 "../../test:test_support", 792 "../../test:video_test_common", 793 "../../test:video_test_support", 794 ] 795 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 796 } 797 798 rtc_library("videocodec_test_stats_impl") { 799 testonly = true 800 sources = [ 801 "codecs/test/videocodec_test_stats_impl.cc", 802 "codecs/test/videocodec_test_stats_impl.h", 803 ] 804 deps = [ 805 "../../api:videocodec_test_fixture_api", 806 "../../rtc_base:checks", 807 "../../rtc_base:rtc_numerics", 808 "../../rtc_base:stringutils", 809 "../../test:test_common", 810 "../rtp_rtcp:rtp_rtcp_format", 811 ] 812 } 813 814 rtc_library("video_coding_modules_tests") { 815 testonly = true 816 defines = [] 817 818 sources = [ 819 "codecs/h264/test/h264_impl_unittest.cc", 820 "codecs/multiplex/test/multiplex_adapter_unittest.cc", 821 "codecs/test/video_encoder_decoder_instantiation_tests.cc", 822 "codecs/test/videocodec_test_libvpx.cc", 823 "codecs/vp8/test/mock_libvpx_interface.h", 824 "codecs/vp8/test/vp8_impl_unittest.cc", 825 "codecs/vp9/test/vp9_impl_unittest.cc", 826 ] 827 828 # TODO(jianj): Fix crash on iOS and re-enable 829 if (enable_libaom && !is_ios) { 830 sources += [ "codecs/test/videocodec_test_libaom.cc" ] 831 } 832 if (rtc_use_h264) { 833 sources += [ "codecs/test/videocodec_test_openh264.cc" ] 834 } 835 836 deps = [ 837 ":encoded_video_frame_producer", 838 ":video_codec_interface", 839 ":video_codecs_test_framework", 840 ":video_coding_utility", 841 ":videocodec_test_impl", 842 ":webrtc_h264", 843 ":webrtc_multiplex", 844 ":webrtc_vp8", 845 ":webrtc_vp9", 846 ":webrtc_vp9_helpers", 847 "../..:webrtc_common", 848 "../../api:create_frame_generator", 849 "../../api:create_videocodec_test_fixture_api", 850 "../../api:frame_generator_api", 851 "../../api:mock_video_codec_factory", 852 "../../api:mock_video_decoder", 853 "../../api:mock_video_encoder", 854 "../../api:scoped_refptr", 855 "../../api:videocodec_test_fixture_api", 856 "../../api/test/video:function_video_factory", 857 "../../api/video:encoded_image", 858 "../../api/video:video_frame", 859 "../../api/video:video_frame_i420", 860 "../../api/video:video_rtp_headers", 861 "../../api/video_codecs:rtc_software_fallback_wrappers", 862 "../../api/video_codecs:video_codecs_api", 863 "../../common_video", 864 "../../common_video/test:utilities", 865 "../../media:rtc_h264_profile_id", 866 "../../media:rtc_internal_video_codecs", 867 "../../media:rtc_media_base", 868 "../../media:rtc_simulcast_encoder_adapter", 869 "../../media:rtc_vp9_profile", 870 "../../rtc_base", 871 "../../test:field_trial", 872 "../../test:fileutils", 873 "../../test:test_support", 874 "../../test:video_test_common", 875 "../rtp_rtcp:rtp_rtcp_format", 876 "//third_party/libyuv", 877 ] 878 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 879 880 data = video_coding_modules_tests_resources 881 882 if (is_android) { 883 sources += [ "codecs/test/videocodec_test_mediacodec.cc" ] 884 885 deps += [ ":android_codec_factory_helper" ] 886 } 887 888 if (is_ios || is_mac) { 889 sources += [ "codecs/test/videocodec_test_videotoolbox.cc" ] 890 891 deps += [ ":objc_codec_factory_helper" ] 892 893 if (num_video_coding_modules_tests_resources > 0) { 894 deps += [ ":video_coding_modules_tests_resources_bundle_data" ] 895 } 896 } 897 898 if (rtc_build_libvpx) { 899 deps += [ rtc_libvpx_dir ] 900 } 901 } 902 903 rtc_library("video_coding_unittests") { 904 testonly = true 905 906 sources = [ 907 "chain_diff_calculator_unittest.cc", 908 "codecs/test/videocodec_test_fixture_config_unittest.cc", 909 "codecs/test/videocodec_test_stats_impl_unittest.cc", 910 "codecs/test/videoprocessor_unittest.cc", 911 "codecs/vp8/default_temporal_layers_unittest.cc", 912 "codecs/vp8/libvpx_vp8_simulcast_test.cc", 913 "codecs/vp8/screenshare_layers_unittest.cc", 914 "codecs/vp9/svc_config_unittest.cc", 915 "codecs/vp9/svc_rate_allocator_unittest.cc", 916 "decoding_state_unittest.cc", 917 "fec_controller_unittest.cc", 918 "frame_buffer2_unittest.cc", 919 "frame_dependencies_calculator_unittest.cc", 920 "generic_decoder_unittest.cc", 921 "h264_sprop_parameter_sets_unittest.cc", 922 "h264_sps_pps_tracker_unittest.cc", 923 "histogram_unittest.cc", 924 "jitter_buffer_unittest.cc", 925 "jitter_estimator_tests.cc", 926 "loss_notification_controller_unittest.cc", 927 "nack_module2_unittest.cc", 928 "nack_module_unittest.cc", 929 "packet_buffer_unittest.cc", 930 "receiver_unittest.cc", 931 "rtp_frame_reference_finder_unittest.cc", 932 "session_info_unittest.cc", 933 "test/stream_generator.cc", 934 "test/stream_generator.h", 935 "timing_unittest.cc", 936 "unique_timestamp_counter_unittest.cc", 937 "utility/decoded_frames_history_unittest.cc", 938 "utility/frame_dropper_unittest.cc", 939 "utility/framerate_controller_unittest.cc", 940 "utility/ivf_file_reader_unittest.cc", 941 "utility/ivf_file_writer_unittest.cc", 942 "utility/quality_scaler_unittest.cc", 943 "utility/simulcast_rate_allocator_unittest.cc", 944 "video_codec_initializer_unittest.cc", 945 "video_receiver_unittest.cc", 946 ] 947 if (rtc_use_h264) { 948 sources += [ 949 "codecs/h264/h264_encoder_impl_unittest.cc", 950 "codecs/h264/h264_simulcast_unittest.cc", 951 ] 952 } 953 954 deps = [ 955 ":chain_diff_calculator", 956 ":codec_globals_headers", 957 ":encoded_frame", 958 ":frame_dependencies_calculator", 959 ":nack_module", 960 ":simulcast_test_fixture_impl", 961 ":video_codec_interface", 962 ":video_codecs_test_framework", 963 ":video_coding", 964 ":video_coding_legacy", 965 ":video_coding_utility", 966 ":videocodec_test_impl", 967 ":videocodec_test_stats_impl", 968 ":webrtc_h264", 969 ":webrtc_vp8", 970 ":webrtc_vp8_temporal_layers", 971 ":webrtc_vp9", 972 ":webrtc_vp9_helpers", 973 "..:module_api", 974 "..:module_fec_api", 975 "../../api:array_view", 976 "../../api:create_simulcast_test_fixture_api", 977 "../../api:fec_controller_api", 978 "../../api:mock_fec_controller_override", 979 "../../api:mock_video_decoder", 980 "../../api:mock_video_encoder", 981 "../../api:scoped_refptr", 982 "../../api:simulcast_test_fixture_api", 983 "../../api:videocodec_test_fixture_api", 984 "../../api/task_queue:default_task_queue_factory", 985 "../../api/test/video:function_video_factory", 986 "../../api/video:builtin_video_bitrate_allocator_factory", 987 "../../api/video:video_adaptation", 988 "../../api/video:video_bitrate_allocation", 989 "../../api/video:video_bitrate_allocator", 990 "../../api/video:video_bitrate_allocator_factory", 991 "../../api/video:video_frame", 992 "../../api/video:video_frame_i420", 993 "../../api/video:video_frame_type", 994 "../../api/video:video_rtp_headers", 995 "../../api/video_codecs:video_codecs_api", 996 "../../api/video_codecs:vp8_temporal_layers_factory", 997 "../../common_video", 998 "../../common_video/generic_frame_descriptor", 999 "../../common_video/test:utilities", 1000 "../../media:rtc_media_base", 1001 "../../rtc_base", 1002 "../../rtc_base:checks", 1003 "../../rtc_base:rtc_base_approved", 1004 "../../rtc_base:rtc_base_tests_utils", 1005 "../../rtc_base:rtc_numerics", 1006 "../../rtc_base:rtc_task_queue", 1007 "../../rtc_base:task_queue_for_test", 1008 "../../rtc_base/experiments:jitter_upper_bound_experiment", 1009 "../../rtc_base/synchronization:mutex", 1010 "../../system_wrappers", 1011 "../../system_wrappers:field_trial", 1012 "../../system_wrappers:metrics", 1013 "../../test:fake_video_codecs", 1014 "../../test:field_trial", 1015 "../../test:fileutils", 1016 "../../test:test_common", 1017 "../../test:test_support", 1018 "../../test:video_test_common", 1019 "../../test:video_test_support", 1020 "../../test/time_controller:time_controller", 1021 "../rtp_rtcp:rtp_rtcp_format", 1022 "../rtp_rtcp:rtp_video_header", 1023 "codecs/av1:scalability_structure_tests", 1024 "codecs/av1:video_coding_codecs_av1_tests", 1025 "deprecated:nack_module", 1026 ] 1027 absl_deps = [ 1028 "//third_party/abseil-cpp/absl/memory", 1029 "//third_party/abseil-cpp/absl/types:optional", 1030 "//third_party/abseil-cpp/absl/types:variant", 1031 ] 1032 if (rtc_build_libvpx) { 1033 deps += [ rtc_libvpx_dir ] 1034 } 1035 } 1036} 1037