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_rtp_headers", 24 "../../modules:module_api_public", 25 "../../modules/rtp_rtcp:rtp_video_header", 26 "../../rtc_base:checks", 27 "../../rtc_base/experiments:alr_experiment", 28 "../../rtc_base/experiments:rtt_mult_experiment", 29 "../../rtc_base/system:rtc_export", 30 "../../system_wrappers", 31 ] 32 absl_deps = [ 33 "//third_party/abseil-cpp/absl/types:optional", 34 "//third_party/abseil-cpp/absl/types:variant", 35 ] 36} 37 38rtc_library("chain_diff_calculator") { 39 sources = [ 40 "chain_diff_calculator.cc", 41 "chain_diff_calculator.h", 42 ] 43 44 deps = [ 45 "../../rtc_base:checks", 46 "../../rtc_base:logging", 47 ] 48 absl_deps = [ 49 "//third_party/abseil-cpp/absl/container:inlined_vector", 50 "//third_party/abseil-cpp/absl/types:optional", 51 ] 52} 53 54rtc_library("frame_dependencies_calculator") { 55 sources = [ 56 "frame_dependencies_calculator.cc", 57 "frame_dependencies_calculator.h", 58 ] 59 60 deps = [ 61 "../../api:array_view", 62 "../../common_video/generic_frame_descriptor", 63 "../../rtc_base:checks", 64 "../../rtc_base:logging", 65 ] 66 absl_deps = [ 67 "//third_party/abseil-cpp/absl/algorithm:container", 68 "//third_party/abseil-cpp/absl/container:inlined_vector", 69 "//third_party/abseil-cpp/absl/types:optional", 70 ] 71} 72 73rtc_library("nack_requester") { 74 sources = [ 75 "histogram.cc", 76 "histogram.h", 77 "nack_requester.cc", 78 "nack_requester.h", 79 ] 80 81 deps = [ 82 "..:module_api", 83 "../../api:field_trials_view", 84 "../../api:sequence_checker", 85 "../../api/task_queue", 86 "../../api/task_queue:pending_task_safety_flag", 87 "../../api/units:time_delta", 88 "../../api/units:timestamp", 89 "../../rtc_base:checks", 90 "../../rtc_base:logging", 91 "../../rtc_base:macromagic", 92 "../../rtc_base:rtc_numerics", 93 "../../rtc_base/experiments:field_trial_parser", 94 "../../rtc_base/task_utils:repeating_task", 95 "../../system_wrappers", 96 ] 97} 98 99rtc_library("packet_buffer") { 100 sources = [ 101 "packet_buffer.cc", 102 "packet_buffer.h", 103 ] 104 deps = [ 105 ":codec_globals_headers", 106 "../../api:array_view", 107 "../../api:rtp_packet_info", 108 "../../api/units:timestamp", 109 "../../api/video:encoded_image", 110 "../../api/video:video_frame_type", 111 "../../common_video", 112 "../../rtc_base:checks", 113 "../../rtc_base:copy_on_write_buffer", 114 "../../rtc_base:logging", 115 "../../rtc_base:macromagic", 116 "../../rtc_base:mod_ops", 117 "../../rtc_base:rtc_numerics", 118 "../rtp_rtcp:rtp_rtcp_format", 119 "../rtp_rtcp:rtp_video_header", 120 ] 121 absl_deps = [ 122 "//third_party/abseil-cpp/absl/base:core_headers", 123 "//third_party/abseil-cpp/absl/types:variant", 124 ] 125} 126 127rtc_library("h264_packet_buffer") { 128 sources = [ 129 "h264_packet_buffer.cc", 130 "h264_packet_buffer.h", 131 ] 132 deps = [ 133 ":codec_globals_headers", 134 ":packet_buffer", 135 "../../api:array_view", 136 "../../api:rtp_packet_info", 137 "../../api/units:timestamp", 138 "../../api/video:encoded_image", 139 "../../api/video:video_frame_type", 140 "../../common_video", 141 "../../rtc_base:checks", 142 "../../rtc_base:copy_on_write_buffer", 143 "../../rtc_base:logging", 144 "../../rtc_base:rtc_numerics", 145 "../rtp_rtcp:rtp_rtcp_format", 146 "../rtp_rtcp:rtp_video_header", 147 ] 148 absl_deps = [ 149 "//third_party/abseil-cpp/absl/base:core_headers", 150 "//third_party/abseil-cpp/absl/types:optional", 151 ] 152} 153 154rtc_library("frame_helpers") { 155 sources = [ 156 "frame_helpers.cc", 157 "frame_helpers.h", 158 ] 159 deps = [ 160 "../../api/video:encoded_frame", 161 "../../rtc_base:logging", 162 ] 163 absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ] 164} 165 166rtc_library("frame_buffer2") { 167 sources = [ 168 "frame_buffer2.cc", 169 "frame_buffer2.h", 170 ] 171 deps = [ 172 ":frame_helpers", 173 ":video_codec_interface", 174 ":video_coding_utility", 175 "../../api:field_trials_view", 176 "../../api:sequence_checker", 177 "../../api/task_queue", 178 "../../api/units:data_size", 179 "../../api/units:time_delta", 180 "../../api/video:encoded_frame", 181 "../../api/video:encoded_image", 182 "../../api/video:video_rtp_headers", 183 "../../rtc_base:checks", 184 "../../rtc_base:event_tracer", 185 "../../rtc_base:logging", 186 "../../rtc_base:macromagic", 187 "../../rtc_base:rtc_event", 188 "../../rtc_base:rtc_numerics", 189 "../../rtc_base/experiments:field_trial_parser", 190 "../../rtc_base/experiments:rtt_mult_experiment", 191 "../../rtc_base/synchronization:mutex", 192 "../../rtc_base/system:no_unique_address", 193 "../../rtc_base/task_utils:repeating_task", 194 "../../system_wrappers", 195 "timing:inter_frame_delay", 196 "timing:jitter_estimator", 197 "timing:timing_module", 198 ] 199 absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ] 200} 201 202rtc_library("video_coding") { 203 visibility = [ "*" ] 204 sources = [ 205 "decoder_database.cc", 206 "decoder_database.h", 207 "fec_controller_default.cc", 208 "fec_controller_default.h", 209 "fec_rate_table.h", 210 "frame_object.cc", 211 "frame_object.h", 212 "generic_decoder.cc", 213 "generic_decoder.h", 214 "h264_sprop_parameter_sets.cc", 215 "h264_sprop_parameter_sets.h", 216 "h264_sps_pps_tracker.cc", 217 "h264_sps_pps_tracker.h", 218 "include/video_codec_initializer.h", 219 "internal_defines.h", 220 "loss_notification_controller.cc", 221 "loss_notification_controller.h", 222 "media_opt_util.cc", 223 "media_opt_util.h", 224 "rtp_frame_id_only_ref_finder.cc", 225 "rtp_frame_id_only_ref_finder.h", 226 "rtp_frame_reference_finder.cc", 227 "rtp_frame_reference_finder.h", 228 "rtp_generic_ref_finder.cc", 229 "rtp_generic_ref_finder.h", 230 "rtp_seq_num_only_ref_finder.cc", 231 "rtp_seq_num_only_ref_finder.h", 232 "rtp_vp8_ref_finder.cc", 233 "rtp_vp8_ref_finder.h", 234 "rtp_vp9_ref_finder.cc", 235 "rtp_vp9_ref_finder.h", 236 "video_codec_initializer.cc", 237 "video_receiver2.cc", 238 "video_receiver2.h", 239 ] 240 241 deps = [ 242 ":codec_globals_headers", 243 ":encoded_frame", 244 ":frame_helpers", 245 ":video_codec_interface", 246 ":video_coding_utility", 247 ":webrtc_vp8_scalability", 248 ":webrtc_vp9_helpers", 249 "..:module_api", 250 "..:module_api_public", 251 "..:module_fec_api", 252 "../../api:array_view", 253 "../../api:fec_controller_api", 254 "../../api:field_trials_view", 255 "../../api:rtp_headers", 256 "../../api:rtp_packet_info", 257 "../../api:scoped_refptr", 258 "../../api:sequence_checker", 259 "../../api/task_queue", 260 "../../api/units:data_rate", 261 "../../api/units:data_size", 262 "../../api/units:frequency", 263 "../../api/units:time_delta", 264 "../../api/units:timestamp", 265 "../../api/video:builtin_video_bitrate_allocator_factory", 266 "../../api/video:encoded_frame", 267 "../../api/video:encoded_image", 268 "../../api/video:video_adaptation", 269 "../../api/video:video_adaptation", 270 "../../api/video:video_bitrate_allocation", 271 "../../api/video:video_bitrate_allocator", 272 "../../api/video:video_bitrate_allocator_factory", 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 "../../rtc_base", 279 "../../rtc_base:checks", 280 "../../rtc_base:copy_on_write_buffer", 281 "../../rtc_base:event_tracer", 282 "../../rtc_base:logging", 283 "../../rtc_base:macromagic", 284 "../../rtc_base:rtc_event", 285 "../../rtc_base:rtc_numerics", 286 "../../rtc_base:safe_conversions", 287 "../../rtc_base:threading", 288 "../../rtc_base:timeutils", 289 "../../rtc_base/experiments:alr_experiment", 290 "../../rtc_base/experiments:field_trial_parser", 291 "../../rtc_base/experiments:min_video_bitrate_experiment", 292 "../../rtc_base/experiments:rate_control_settings", 293 "../../rtc_base/experiments:rtt_mult_experiment", 294 "../../rtc_base/synchronization:mutex", 295 "../../rtc_base/system:no_unique_address", 296 "../../rtc_base/task_utils:repeating_task", 297 "../../rtc_base/third_party/base64", 298 "../../system_wrappers", 299 "../../system_wrappers:field_trial", 300 "../../system_wrappers:metrics", 301 "../../video/config:encoder_config", 302 "../rtp_rtcp", 303 "../rtp_rtcp:rtp_rtcp_format", 304 "../rtp_rtcp:rtp_video_header", 305 "codecs/av1:av1_svc_config", 306 "svc:scalability_mode_util", 307 "timing:inter_frame_delay", 308 "timing:jitter_estimator", 309 "timing:rtt_filter", 310 "timing:timing_module", 311 ] 312 absl_deps = [ 313 "//third_party/abseil-cpp/absl/algorithm:container", 314 "//third_party/abseil-cpp/absl/base:core_headers", 315 "//third_party/abseil-cpp/absl/container:inlined_vector", 316 "//third_party/abseil-cpp/absl/types:optional", 317 "//third_party/abseil-cpp/absl/types:variant", 318 ] 319} 320 321rtc_library("video_codec_interface") { 322 visibility = [ "*" ] 323 sources = [ 324 "include/video_codec_interface.cc", 325 "include/video_codec_interface.h", 326 "include/video_coding_defines.h", 327 "include/video_error_codes.h", 328 "video_coding_defines.cc", 329 ] 330 deps = [ 331 ":codec_globals_headers", 332 "../../api/video:video_frame", 333 "../../api/video:video_rtp_headers", 334 "../../api/video_codecs:video_codecs_api", 335 "../../common_video", 336 "../../common_video/generic_frame_descriptor", 337 "../../rtc_base/system:rtc_export", 338 ] 339 absl_deps = [ 340 "//third_party/abseil-cpp/absl/base:core_headers", 341 "//third_party/abseil-cpp/absl/types:optional", 342 ] 343} 344 345rtc_library("video_coding_legacy") { 346 visibility = [ ":video_coding_unittests" ] 347 sources = [ 348 "decoding_state.cc", 349 "decoding_state.h", 350 "event_wrapper.cc", 351 "event_wrapper.h", 352 "frame_buffer.cc", 353 "frame_buffer.h", 354 "include/video_coding.h", 355 "jitter_buffer.cc", 356 "jitter_buffer.h", 357 "jitter_buffer_common.h", 358 "packet.cc", 359 "packet.h", 360 "receiver.cc", 361 "receiver.h", 362 "session_info.cc", 363 "session_info.h", 364 "video_coding_impl.cc", 365 "video_coding_impl.h", 366 "video_receiver.cc", 367 ] 368 deps = [ 369 ":codec_globals_headers", 370 ":encoded_frame", 371 ":video_codec_interface", 372 ":video_coding", 373 "..:module_api", 374 "..:module_api_public", 375 "../../api:field_trials_view", 376 "../../api:rtp_headers", 377 "../../api:rtp_packet_info", 378 "../../api:sequence_checker", 379 "../../api/transport:field_trial_based_config", 380 "../../api/units:timestamp", 381 "../../api/video:encoded_image", 382 "../../api/video:video_frame", 383 "../../api/video:video_frame_type", 384 "../../api/video:video_rtp_headers", 385 "../../api/video_codecs:video_codecs_api", 386 "../../common_video", 387 "../../modules/rtp_rtcp:rtp_video_header", 388 "../../rtc_base:checks", 389 "../../rtc_base:event_tracer", 390 "../../rtc_base:logging", 391 "../../rtc_base:macromagic", 392 "../../rtc_base:one_time_event", 393 "../../rtc_base:rtc_event", 394 "../../rtc_base:safe_conversions", 395 "../../rtc_base/memory:always_valid_pointer", 396 "../../rtc_base/synchronization:mutex", 397 "../../system_wrappers", 398 "../rtp_rtcp:rtp_rtcp_format", 399 "../rtp_rtcp:rtp_video_header", 400 "timing:inter_frame_delay", 401 "timing:jitter_estimator", 402 "timing:timing_module", 403 ] 404 absl_deps = [ 405 "//third_party/abseil-cpp/absl/memory", 406 "//third_party/abseil-cpp/absl/types:optional", 407 "//third_party/abseil-cpp/absl/types:variant", 408 ] 409} 410 411rtc_source_set("codec_globals_headers") { 412 visibility = [ "*" ] 413 sources = [ 414 "codecs/h264/include/h264_globals.h", 415 "codecs/interface/common_constants.h", 416 "codecs/vp8/include/vp8_globals.h", 417 "codecs/vp9/include/vp9_globals.h", 418 ] 419 420 deps = [ "../../rtc_base:checks" ] 421} 422 423rtc_library("video_coding_utility") { 424 visibility = [ "*" ] 425 sources = [ 426 "utility/bandwidth_quality_scaler.cc", 427 "utility/bandwidth_quality_scaler.h", 428 "utility/decoded_frames_history.cc", 429 "utility/decoded_frames_history.h", 430 "utility/frame_dropper.cc", 431 "utility/frame_dropper.h", 432 "utility/framerate_controller_deprecated.cc", 433 "utility/framerate_controller_deprecated.h", 434 "utility/ivf_defines.h", 435 "utility/ivf_file_reader.cc", 436 "utility/ivf_file_reader.h", 437 "utility/ivf_file_writer.cc", 438 "utility/ivf_file_writer.h", 439 "utility/qp_parser.cc", 440 "utility/qp_parser.h", 441 "utility/quality_scaler.cc", 442 "utility/quality_scaler.h", 443 "utility/simulcast_rate_allocator.cc", 444 "utility/simulcast_rate_allocator.h", 445 "utility/simulcast_utility.cc", 446 "utility/simulcast_utility.h", 447 "utility/vp8_constants.h", 448 "utility/vp8_header_parser.cc", 449 "utility/vp8_header_parser.h", 450 "utility/vp9_constants.h", 451 "utility/vp9_uncompressed_header_parser.cc", 452 "utility/vp9_uncompressed_header_parser.h", 453 ] 454 455 deps = [ 456 ":video_codec_interface", 457 "../../api:array_view", 458 "../../api:field_trials_view", 459 "../../api:scoped_refptr", 460 "../../api:sequence_checker", 461 "../../api/units:time_delta", 462 "../../api/video:encoded_frame", 463 "../../api/video:encoded_image", 464 "../../api/video:video_adaptation", 465 "../../api/video:video_bitrate_allocation", 466 "../../api/video:video_bitrate_allocator", 467 "../../api/video:video_codec_constants", 468 "../../api/video:video_frame", 469 "../../api/video_codecs:video_codecs_api", 470 "../../common_video", 471 "../../modules/rtp_rtcp", 472 "../../rtc_base:bitstream_reader", 473 "../../rtc_base:checks", 474 "../../rtc_base:logging", 475 "../../rtc_base:rate_statistics", 476 "../../rtc_base:refcount", 477 "../../rtc_base:rtc_numerics", 478 "../../rtc_base:stringutils", 479 "../../rtc_base:timeutils", 480 "../../rtc_base:weak_ptr", 481 "../../rtc_base/experiments:bandwidth_quality_scaler_settings", 482 "../../rtc_base/experiments:encoder_info_settings", 483 "../../rtc_base/experiments:quality_scaler_settings", 484 "../../rtc_base/experiments:quality_scaling_experiment", 485 "../../rtc_base/experiments:rate_control_settings", 486 "../../rtc_base/experiments:stable_target_rate_experiment", 487 "../../rtc_base/synchronization:mutex", 488 "../../rtc_base/system:arch", 489 "../../rtc_base/system:file_wrapper", 490 "../../rtc_base/system:no_unique_address", 491 "../../rtc_base/task_utils:repeating_task", 492 "../../system_wrappers:field_trial", 493 "../rtp_rtcp:rtp_rtcp_format", 494 ] 495 absl_deps = [ 496 "//third_party/abseil-cpp/absl/numeric:bits", 497 "//third_party/abseil-cpp/absl/strings:strings", 498 "//third_party/abseil-cpp/absl/types:optional", 499 ] 500} 501 502rtc_library("webrtc_h264") { 503 visibility = [ "*" ] 504 sources = [ 505 "codecs/h264/h264.cc", 506 "codecs/h264/h264_color_space.cc", 507 "codecs/h264/h264_color_space.h", 508 "codecs/h264/h264_decoder_impl.cc", 509 "codecs/h264/h264_decoder_impl.h", 510 "codecs/h264/h264_encoder_impl.cc", 511 "codecs/h264/h264_encoder_impl.h", 512 "codecs/h264/include/h264.h", 513 ] 514 515 defines = [] 516 deps = [ 517 ":video_codec_interface", 518 ":video_coding_utility", 519 "../../api/video:video_frame", 520 "../../api/video:video_frame_i010", 521 "../../api/video:video_rtp_headers", 522 "../../api/video_codecs:scalability_mode", 523 "../../api/video_codecs:video_codecs_api", 524 "../../common_video", 525 "../../media:rtc_media_base", 526 "../../rtc_base", 527 "../../rtc_base:checks", 528 "../../rtc_base:event_tracer", 529 "../../rtc_base:logging", 530 "../../rtc_base:timeutils", 531 "../../rtc_base/system:rtc_export", 532 "../../system_wrappers:field_trial", 533 "../../system_wrappers:metrics", 534 "svc:scalability_structures", 535 "svc:scalable_video_controller", 536 "//third_party/libyuv", 537 ] 538 absl_deps = [ 539 "//third_party/abseil-cpp/absl/container:inlined_vector", 540 "//third_party/abseil-cpp/absl/strings", 541 "//third_party/abseil-cpp/absl/types:optional", 542 ] 543 544 if (rtc_use_h264) { 545 deps += [ 546 "//third_party/ffmpeg", 547 "//third_party/openh264:encoder", 548 ] 549 if (!build_with_mozilla) { 550 deps += [ "../../media:rtc_media_base" ] 551 } 552 } 553} 554 555rtc_library("webrtc_multiplex") { 556 sources = [ 557 "codecs/multiplex/augmented_video_frame_buffer.cc", 558 "codecs/multiplex/include/augmented_video_frame_buffer.h", 559 "codecs/multiplex/include/multiplex_decoder_adapter.h", 560 "codecs/multiplex/include/multiplex_encoder_adapter.h", 561 "codecs/multiplex/multiplex_decoder_adapter.cc", 562 "codecs/multiplex/multiplex_encoded_image_packer.cc", 563 "codecs/multiplex/multiplex_encoded_image_packer.h", 564 "codecs/multiplex/multiplex_encoder_adapter.cc", 565 ] 566 567 deps = [ 568 ":video_codec_interface", 569 ":video_coding_utility", 570 "../../api:fec_controller_api", 571 "../../api:scoped_refptr", 572 "../../api/video:encoded_image", 573 "../../api/video:video_frame", 574 "../../api/video:video_rtp_headers", 575 "../../api/video_codecs:video_codecs_api", 576 "../../common_video", 577 "../../media:rtc_media_base", 578 "../../rtc_base", 579 "../../rtc_base:checks", 580 "../../rtc_base:logging", 581 "../../rtc_base/synchronization:mutex", 582 "../rtp_rtcp:rtp_rtcp_format", 583 ] 584} 585 586# This target defines a bare-bones interface towards libvpx, used by the 587# VP8 and VP9 wrappers below. 588rtc_library("webrtc_libvpx_interface") { 589 visibility = [ "*" ] 590 sources = [ 591 "codecs/interface/libvpx_interface.cc", 592 "codecs/interface/libvpx_interface.h", 593 ] 594 deps = [ "../../rtc_base:checks" ] 595 if (rtc_build_libvpx) { 596 deps += [ rtc_libvpx_dir ] 597 } 598} 599 600rtc_library("mock_libvpx_interface") { 601 testonly = true 602 sources = [ "codecs/interface/mock_libvpx_interface.h" ] 603 deps = [ 604 ":webrtc_libvpx_interface", 605 "../../test:test_support", 606 ] 607} 608 609# This target includes the internal SW codec. 610rtc_library("webrtc_vp8") { 611 visibility = [ "*" ] 612 poisonous = [ "software_video_codecs" ] 613 sources = [ 614 "codecs/vp8/include/vp8.h", 615 "codecs/vp8/libvpx_vp8_decoder.cc", 616 "codecs/vp8/libvpx_vp8_decoder.h", 617 "codecs/vp8/libvpx_vp8_encoder.cc", 618 "codecs/vp8/libvpx_vp8_encoder.h", 619 ] 620 621 deps = [ 622 ":codec_globals_headers", 623 ":video_codec_interface", 624 ":video_coding_utility", 625 ":webrtc_libvpx_interface", 626 ":webrtc_vp8_scalability", 627 ":webrtc_vp8_temporal_layers", 628 "../../api:fec_controller_api", 629 "../../api:scoped_refptr", 630 "../../api/video:encoded_image", 631 "../../api/video:video_frame", 632 "../../api/video:video_rtp_headers", 633 "../../api/video_codecs:video_codecs_api", 634 "../../api/video_codecs:vp8_temporal_layers_factory", 635 "../../common_video", 636 "../../rtc_base:checks", 637 "../../rtc_base:event_tracer", 638 "../../rtc_base:logging", 639 "../../rtc_base:rtc_numerics", 640 "../../rtc_base:timeutils", 641 "../../rtc_base/experiments:cpu_speed_experiment", 642 "../../rtc_base/experiments:encoder_info_settings", 643 "../../rtc_base/experiments:field_trial_parser", 644 "../../rtc_base/experiments:rate_control_settings", 645 "../../system_wrappers:field_trial", 646 "../../system_wrappers:metrics", 647 "svc:scalability_mode_util", 648 "//third_party/libyuv", 649 ] 650 absl_deps = [ 651 "//third_party/abseil-cpp/absl/algorithm:container", 652 "//third_party/abseil-cpp/absl/strings:strings", 653 "//third_party/abseil-cpp/absl/types:optional", 654 ] 655 if (rtc_build_libvpx) { 656 deps += [ rtc_libvpx_dir ] 657 } 658} 659 660rtc_source_set("webrtc_vp8_scalability") { 661 sources = [ 662 "codecs/vp8/vp8_scalability.cc", 663 "codecs/vp8/vp8_scalability.h", 664 ] 665 deps = [ "../../api/video_codecs:scalability_mode" ] 666} 667 668rtc_library("webrtc_vp8_temporal_layers") { 669 visibility = [ "*" ] 670 sources = [ 671 "codecs/vp8/default_temporal_layers.cc", 672 "codecs/vp8/default_temporal_layers.h", 673 "codecs/vp8/include/temporal_layers_checker.h", 674 "codecs/vp8/screenshare_layers.cc", 675 "codecs/vp8/screenshare_layers.h", 676 "codecs/vp8/temporal_layers.h", 677 "codecs/vp8/temporal_layers_checker.cc", 678 ] 679 680 deps = [ 681 ":codec_globals_headers", 682 ":video_codec_interface", 683 ":video_coding_utility", 684 "../../api:fec_controller_api", 685 "../../api/video_codecs:video_codecs_api", 686 "../../rtc_base:checks", 687 "../../rtc_base:logging", 688 "../../rtc_base:macromagic", 689 "../../rtc_base:rate_statistics", 690 "../../rtc_base:rtc_numerics", 691 "../../rtc_base:timeutils", 692 "../../system_wrappers:field_trial", 693 "../../system_wrappers:metrics", 694 ] 695 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 696} 697 698# This target includes VP9 files that may be used for any VP9 codec, internal SW or external HW. 699rtc_library("webrtc_vp9_helpers") { 700 sources = [ 701 "codecs/vp9/svc_config.cc", 702 "codecs/vp9/svc_config.h", 703 ] 704 705 deps = [ 706 ":codec_globals_headers", 707 ":video_codec_interface", 708 "../../api/video:video_bitrate_allocation", 709 "../../api/video:video_bitrate_allocator", 710 "../../api/video:video_codec_constants", 711 "../../api/video_codecs:video_codecs_api", 712 "../../common_video", 713 "../../media:rtc_media_base", 714 "../../rtc_base:checks", 715 "../../rtc_base:logging", 716 "../../rtc_base/experiments:stable_target_rate_experiment", 717 "svc:scalability_mode_util", 718 "svc:scalability_structures", 719 "svc:scalable_video_controller", 720 ] 721 absl_deps = [ "//third_party/abseil-cpp/absl/container:inlined_vector" ] 722} 723 724rtc_library("webrtc_vp9") { 725 visibility = [ "*" ] 726 poisonous = [ "software_video_codecs" ] 727 sources = [ 728 "codecs/vp9/include/vp9.h", 729 "codecs/vp9/libvpx_vp9_decoder.cc", 730 "codecs/vp9/libvpx_vp9_decoder.h", 731 "codecs/vp9/libvpx_vp9_encoder.cc", 732 "codecs/vp9/libvpx_vp9_encoder.h", 733 "codecs/vp9/vp9.cc", 734 "codecs/vp9/vp9_frame_buffer_pool.cc", 735 "codecs/vp9/vp9_frame_buffer_pool.h", 736 ] 737 738 deps = [ 739 ":video_codec_interface", 740 ":video_coding_utility", 741 ":webrtc_libvpx_interface", 742 ":webrtc_vp9_helpers", 743 "../../api:fec_controller_api", 744 "../../api:field_trials_view", 745 "../../api:refcountedbase", 746 "../../api:scoped_refptr", 747 "../../api/transport:field_trial_based_config", 748 "../../api/video:video_frame", 749 "../../api/video:video_frame_i010", 750 "../../api/video:video_rtp_headers", 751 "../../api/video_codecs:scalability_mode", 752 "../../api/video_codecs:video_codecs_api", 753 "../../common_video", 754 "../../media:rtc_media_base", 755 "../../rtc_base", 756 "../../rtc_base:buffer", 757 "../../rtc_base:checks", 758 "../../rtc_base:event_tracer", 759 "../../rtc_base:logging", 760 "../../rtc_base:stringutils", 761 "../../rtc_base:timeutils", 762 "../../rtc_base/containers:flat_map", 763 "../../rtc_base/experiments:encoder_info_settings", 764 "../../rtc_base/experiments:field_trial_parser", 765 "../../rtc_base/experiments:rate_control_settings", 766 "../../rtc_base/synchronization:mutex", 767 "../../system_wrappers:field_trial", 768 "../rtp_rtcp:rtp_rtcp_format", 769 "svc:scalability_mode_util", 770 "svc:scalability_structures", 771 "svc:scalable_video_controller", 772 "svc:svc_rate_allocator", 773 "//third_party/libyuv", 774 ] 775 absl_deps = [ 776 "//third_party/abseil-cpp/absl/algorithm:container", 777 "//third_party/abseil-cpp/absl/container:inlined_vector", 778 "//third_party/abseil-cpp/absl/memory", 779 "//third_party/abseil-cpp/absl/strings:strings", 780 ] 781 if (rtc_build_libvpx) { 782 deps += [ rtc_libvpx_dir ] 783 } 784} 785 786if (rtc_include_tests) { 787 if (is_android) { 788 rtc_library("android_codec_factory_helper") { 789 sources = [ 790 "codecs/test/android_codec_factory_helper.cc", 791 "codecs/test/android_codec_factory_helper.h", 792 ] 793 794 deps = [ 795 "../../api/video_codecs:video_codecs_api", 796 "../../modules/utility:utility", 797 "../../rtc_base:checks", 798 "../../rtc_base:ignore_wundef", 799 "../../sdk/android:internal_jni", 800 "../../sdk/android:native_api_base", 801 "../../sdk/android:native_api_codecs", 802 "../../sdk/android:native_api_jni", 803 ] 804 } 805 } 806 807 if (is_ios || is_mac) { 808 rtc_library("objc_codec_factory_helper") { 809 sources = [ 810 "codecs/test/objc_codec_factory_helper.h", 811 "codecs/test/objc_codec_factory_helper.mm", 812 ] 813 814 deps = [ 815 "../../api/video:video_frame", 816 "../../api/video:video_rtp_headers", 817 "../../api/video_codecs:video_codecs_api", 818 "../../media:rtc_audio_video", 819 "../../media:rtc_media_base", 820 "../../sdk:native_api", 821 "../../sdk:peerconnectionfactory_base_objc", 822 "../../sdk:videocodec_objc", 823 "../../sdk:videosource_objc", 824 "../../sdk:videotoolbox_objc", 825 ] 826 } 827 } 828 829 rtc_library("encoded_video_frame_producer") { 830 testonly = true 831 sources = [ 832 "codecs/test/encoded_video_frame_producer.cc", 833 "codecs/test/encoded_video_frame_producer.h", 834 ] 835 deps = [ 836 ":video_codec_interface", 837 "../../api:create_frame_generator", 838 "../../api:frame_generator_api", 839 "../../api/transport/rtp:dependency_descriptor", 840 "../../api/video:encoded_image", 841 "../../api/video:video_frame", 842 "../../api/video:video_frame_type", 843 "../../api/video_codecs:video_codecs_api", 844 "../../rtc_base:checks", 845 ] 846 } 847 848 rtc_library("simulcast_test_fixture_impl") { 849 testonly = true 850 sources = [ 851 "utility/simulcast_test_fixture_impl.cc", 852 "utility/simulcast_test_fixture_impl.h", 853 ] 854 855 deps = [ 856 ":video_codec_interface", 857 ":video_coding", 858 ":video_coding_utility", 859 "../../api:mock_video_decoder", 860 "../../api:mock_video_encoder", 861 "../../api:simulcast_test_fixture_api", 862 "../../api/video:encoded_image", 863 "../../api/video:video_frame", 864 "../../api/video:video_rtp_headers", 865 "../../api/video_codecs:video_codecs_api", 866 "../../common_video", 867 "../../rtc_base:checks", 868 "../../test:test_support", 869 ] 870 } 871 872 rtc_library("video_codecs_test_framework") { 873 testonly = true 874 sources = [ 875 "codecs/test/video_codec_unittest.cc", 876 "codecs/test/video_codec_unittest.h", 877 "codecs/test/videoprocessor.cc", 878 "codecs/test/videoprocessor.h", 879 ] 880 881 deps = [ 882 ":codec_globals_headers", 883 ":video_codec_interface", 884 ":video_coding", 885 ":video_coding_utility", 886 ":videocodec_test_stats_impl", 887 ":webrtc_vp9_helpers", 888 "..:module_api", 889 "../../api:create_frame_generator", 890 "../../api:frame_generator_api", 891 "../../api:scoped_refptr", 892 "../../api:sequence_checker", 893 "../../api:videocodec_test_fixture_api", 894 "../../api/task_queue", 895 "../../api/video:builtin_video_bitrate_allocator_factory", 896 "../../api/video:encoded_image", 897 "../../api/video:video_bitrate_allocation", 898 "../../api/video:video_bitrate_allocator", 899 "../../api/video:video_bitrate_allocator_factory", 900 "../../api/video:video_frame", 901 "../../api/video:video_rtp_headers", 902 "../../api/video_codecs:video_codecs_api", 903 "../../common_video", 904 "../../rtc_base:buffer", 905 "../../rtc_base:checks", 906 "../../rtc_base:macromagic", 907 "../../rtc_base:rtc_event", 908 "../../rtc_base:timeutils", 909 "../../rtc_base/synchronization:mutex", 910 "../../rtc_base/system:no_unique_address", 911 "../../test:test_support", 912 "../../test:video_test_common", 913 "../../test:video_test_support", 914 "../rtp_rtcp:rtp_rtcp_format", 915 "//third_party/libyuv", 916 ] 917 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 918 } 919 920 video_coding_modules_tests_resources = [] 921 if (is_android) { 922 video_coding_modules_tests_resources += [ 923 "../../resources/foreman_128x96.yuv", 924 "../../resources/foreman_160x120.yuv", 925 "../../resources/foreman_176x144.yuv", 926 "../../resources/foreman_240x136.yuv", 927 "../../resources/foreman_320x240.yuv", 928 "../../resources/foreman_480x272.yuv", 929 ] 930 } 931 if (!is_android) { 932 video_coding_modules_tests_resources += [ 933 "../../resources/ConferenceMotion_1280_720_50.yuv", 934 "../../resources/FourPeople_1280x720_30.yuv", 935 ] 936 } 937 938 num_video_coding_modules_tests_resources = 0 939 foreach(i, video_coding_modules_tests_resources) { 940 num_video_coding_modules_tests_resources += 1 941 } 942 943 if (num_video_coding_modules_tests_resources > 0) { 944 if (is_ios || is_mac) { 945 bundle_data("video_coding_modules_tests_resources_bundle_data") { 946 testonly = true 947 sources = video_coding_modules_tests_resources 948 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] 949 } 950 } 951 } 952 953 rtc_library("videocodec_test_impl") { 954 testonly = true 955 sources = [ 956 "codecs/test/videocodec_test_fixture_impl.cc", 957 "codecs/test/videocodec_test_fixture_impl.h", 958 ] 959 deps = [ 960 ":codec_globals_headers", 961 ":video_codec_interface", 962 ":video_codecs_test_framework", 963 ":video_coding_utility", 964 ":videocodec_test_stats_impl", 965 ":webrtc_vp9_helpers", 966 "../../api:array_view", 967 "../../api:videocodec_test_fixture_api", 968 "../../api/test/metrics:global_metrics_logger_and_exporter", 969 "../../api/test/metrics:metric", 970 "../../api/test/video:function_video_factory", 971 "../../api/transport:field_trial_based_config", 972 "../../api/video:video_bitrate_allocation", 973 "../../api/video_codecs:video_codecs_api", 974 "../../api/video_codecs:video_decoder_factory_template", 975 "../../api/video_codecs:video_decoder_factory_template_dav1d_adapter", 976 "../../api/video_codecs:video_decoder_factory_template_libvpx_vp8_adapter", 977 "../../api/video_codecs:video_decoder_factory_template_libvpx_vp9_adapter", 978 "../../api/video_codecs:video_decoder_factory_template_open_h264_adapter", 979 "../../api/video_codecs:video_encoder_factory_template", 980 "../../api/video_codecs:video_encoder_factory_template_libaom_av1_adapter", 981 "../../api/video_codecs:video_encoder_factory_template_libvpx_vp8_adapter", 982 "../../api/video_codecs:video_encoder_factory_template_libvpx_vp9_adapter", 983 "../../api/video_codecs:video_encoder_factory_template_open_h264_adapter", 984 "../../call:video_stream_api", 985 "../../common_video", 986 "../../media:rtc_audio_video", 987 "../../media:rtc_media_base", 988 "../../rtc_base:checks", 989 "../../rtc_base:logging", 990 "../../rtc_base:rtc_base_tests_utils", 991 "../../rtc_base:stringutils", 992 "../../rtc_base:task_queue_for_test", 993 "../../rtc_base:timeutils", 994 "../../system_wrappers", 995 "../../test:fileutils", 996 "../../test:test_support", 997 "../../test:video_test_common", 998 "../../test:video_test_support", 999 "../../video/config:encoder_config", 1000 "../../video/config:streams_config", 1001 ] 1002 absl_deps = [ 1003 "//third_party/abseil-cpp/absl/strings:strings", 1004 "//third_party/abseil-cpp/absl/types:optional", 1005 ] 1006 } 1007 1008 rtc_library("videocodec_test_stats_impl") { 1009 testonly = true 1010 sources = [ 1011 "codecs/test/videocodec_test_stats_impl.cc", 1012 "codecs/test/videocodec_test_stats_impl.h", 1013 ] 1014 deps = [ 1015 "../../api:videocodec_test_fixture_api", 1016 "../../api/numerics", 1017 "../../rtc_base:checks", 1018 "../../rtc_base:rtc_numerics", 1019 "../../rtc_base:stringutils", 1020 "../../test:test_common", 1021 "../rtp_rtcp:rtp_rtcp_format", 1022 ] 1023 } 1024 1025 rtc_library("video_coding_modules_tests") { 1026 testonly = true 1027 defines = [] 1028 1029 sources = [ 1030 "codecs/h264/test/h264_impl_unittest.cc", 1031 "codecs/multiplex/test/multiplex_adapter_unittest.cc", 1032 "codecs/test/video_encoder_decoder_instantiation_tests.cc", 1033 "codecs/test/videocodec_test_av1.cc", 1034 "codecs/test/videocodec_test_libvpx.cc", 1035 "codecs/vp8/test/vp8_impl_unittest.cc", 1036 ] 1037 1038 if (rtc_libvpx_build_vp9) { 1039 sources += [ "codecs/vp9/test/vp9_impl_unittest.cc" ] 1040 } 1041 1042 if (rtc_use_h264) { 1043 sources += [ "codecs/test/videocodec_test_openh264.cc" ] 1044 } 1045 1046 deps = [ 1047 ":encoded_video_frame_producer", 1048 ":mock_libvpx_interface", 1049 ":video_codec_interface", 1050 ":video_codecs_test_framework", 1051 ":video_coding_utility", 1052 ":videocodec_test_impl", 1053 ":webrtc_h264", 1054 ":webrtc_libvpx_interface", 1055 ":webrtc_multiplex", 1056 ":webrtc_vp8", 1057 ":webrtc_vp9", 1058 ":webrtc_vp9_helpers", 1059 "../../api:create_frame_generator", 1060 "../../api:create_videocodec_test_fixture_api", 1061 "../../api:frame_generator_api", 1062 "../../api:mock_video_codec_factory", 1063 "../../api:mock_video_decoder", 1064 "../../api:mock_video_encoder", 1065 "../../api:scoped_refptr", 1066 "../../api:videocodec_test_fixture_api", 1067 "../../api/test/video:function_video_factory", 1068 "../../api/video:encoded_image", 1069 "../../api/video:video_frame", 1070 "../../api/video:video_rtp_headers", 1071 "../../api/video_codecs:rtc_software_fallback_wrappers", 1072 "../../api/video_codecs:video_codecs_api", 1073 "../../common_video", 1074 "../../common_video/test:utilities", 1075 "../../media:rtc_internal_video_codecs", 1076 "../../media:rtc_media_base", 1077 "../../media:rtc_simulcast_encoder_adapter", 1078 "../../rtc_base", 1079 "../../rtc_base:refcount", 1080 "../../rtc_base:stringutils", 1081 "../../rtc_base:timeutils", 1082 "../../test:explicit_key_value_config", 1083 "../../test:field_trial", 1084 "../../test:fileutils", 1085 "../../test:test_support", 1086 "../../test:video_test_common", 1087 "../rtp_rtcp:rtp_rtcp_format", 1088 "codecs/av1:dav1d_decoder", 1089 "//third_party/libyuv", 1090 ] 1091 absl_deps = [ 1092 "//third_party/abseil-cpp/absl/memory", 1093 "//third_party/abseil-cpp/absl/types:optional", 1094 ] 1095 1096 data = video_coding_modules_tests_resources 1097 1098 if (is_android) { 1099 sources += [ "codecs/test/videocodec_test_mediacodec.cc" ] 1100 1101 deps += [ 1102 ":android_codec_factory_helper", 1103 "../../rtc_base:stringutils", 1104 ] 1105 } 1106 1107 if (is_ios || is_mac) { 1108 sources += [ "codecs/test/videocodec_test_videotoolbox.cc" ] 1109 1110 deps += [ ":objc_codec_factory_helper" ] 1111 1112 if (num_video_coding_modules_tests_resources > 0) { 1113 deps += [ ":video_coding_modules_tests_resources_bundle_data" ] 1114 } 1115 } 1116 1117 if (rtc_build_libvpx) { 1118 deps += [ rtc_libvpx_dir ] 1119 } 1120 } 1121 1122 rtc_library("video_coding_unittests") { 1123 testonly = true 1124 1125 sources = [ 1126 "chain_diff_calculator_unittest.cc", 1127 "codecs/test/videocodec_test_fixture_config_unittest.cc", 1128 "codecs/test/videocodec_test_stats_impl_unittest.cc", 1129 "codecs/test/videoprocessor_unittest.cc", 1130 "codecs/vp8/default_temporal_layers_unittest.cc", 1131 "codecs/vp8/libvpx_vp8_simulcast_test.cc", 1132 "codecs/vp8/screenshare_layers_unittest.cc", 1133 "codecs/vp9/svc_config_unittest.cc", 1134 "decoder_database_unittest.cc", 1135 "decoding_state_unittest.cc", 1136 "fec_controller_unittest.cc", 1137 "frame_buffer2_unittest.cc", 1138 "frame_dependencies_calculator_unittest.cc", 1139 "frame_helpers_unittest.cc", 1140 "generic_decoder_unittest.cc", 1141 "h264_packet_buffer_unittest.cc", 1142 "h264_sprop_parameter_sets_unittest.cc", 1143 "h264_sps_pps_tracker_unittest.cc", 1144 "histogram_unittest.cc", 1145 "jitter_buffer_unittest.cc", 1146 "loss_notification_controller_unittest.cc", 1147 "nack_requester_unittest.cc", 1148 "packet_buffer_unittest.cc", 1149 "receiver_unittest.cc", 1150 "rtp_frame_reference_finder_unittest.cc", 1151 "rtp_vp8_ref_finder_unittest.cc", 1152 "rtp_vp9_ref_finder_unittest.cc", 1153 "session_info_unittest.cc", 1154 "test/stream_generator.cc", 1155 "test/stream_generator.h", 1156 "utility/bandwidth_quality_scaler_unittest.cc", 1157 "utility/decoded_frames_history_unittest.cc", 1158 "utility/frame_dropper_unittest.cc", 1159 "utility/framerate_controller_deprecated_unittest.cc", 1160 "utility/ivf_file_reader_unittest.cc", 1161 "utility/ivf_file_writer_unittest.cc", 1162 "utility/qp_parser_unittest.cc", 1163 "utility/quality_scaler_unittest.cc", 1164 "utility/simulcast_rate_allocator_unittest.cc", 1165 "utility/vp9_uncompressed_header_parser_unittest.cc", 1166 "video_codec_initializer_unittest.cc", 1167 "video_receiver2_unittest.cc", 1168 "video_receiver_unittest.cc", 1169 ] 1170 if (rtc_use_h264) { 1171 sources += [ 1172 "codecs/h264/h264_encoder_impl_unittest.cc", 1173 "codecs/h264/h264_simulcast_unittest.cc", 1174 ] 1175 } 1176 1177 deps = [ 1178 ":chain_diff_calculator", 1179 ":codec_globals_headers", 1180 ":encoded_frame", 1181 ":frame_buffer2", 1182 ":frame_dependencies_calculator", 1183 ":frame_helpers", 1184 ":h264_packet_buffer", 1185 ":nack_requester", 1186 ":packet_buffer", 1187 ":simulcast_test_fixture_impl", 1188 ":video_codec_interface", 1189 ":video_codecs_test_framework", 1190 ":video_coding", 1191 ":video_coding_legacy", 1192 ":video_coding_utility", 1193 ":videocodec_test_impl", 1194 ":videocodec_test_stats_impl", 1195 ":webrtc_h264", 1196 ":webrtc_vp8", 1197 ":webrtc_vp8_temporal_layers", 1198 ":webrtc_vp9", 1199 ":webrtc_vp9_helpers", 1200 "..:module_fec_api", 1201 "../../api:array_view", 1202 "../../api:create_simulcast_test_fixture_api", 1203 "../../api:fec_controller_api", 1204 "../../api:mock_fec_controller_override", 1205 "../../api:mock_video_decoder", 1206 "../../api:mock_video_encoder", 1207 "../../api:rtp_packet_info", 1208 "../../api:scoped_refptr", 1209 "../../api:simulcast_test_fixture_api", 1210 "../../api:videocodec_test_fixture_api", 1211 "../../api/task_queue", 1212 "../../api/task_queue:default_task_queue_factory", 1213 "../../api/test/video:function_video_factory", 1214 "../../api/units:data_size", 1215 "../../api/units:frequency", 1216 "../../api/units:time_delta", 1217 "../../api/units:timestamp", 1218 "../../api/video:builtin_video_bitrate_allocator_factory", 1219 "../../api/video:encoded_frame", 1220 "../../api/video:render_resolution", 1221 "../../api/video:video_adaptation", 1222 "../../api/video:video_bitrate_allocation", 1223 "../../api/video:video_bitrate_allocator", 1224 "../../api/video:video_bitrate_allocator_factory", 1225 "../../api/video:video_frame", 1226 "../../api/video:video_frame_type", 1227 "../../api/video:video_rtp_headers", 1228 "../../api/video_codecs:video_codecs_api", 1229 "../../api/video_codecs:vp8_temporal_layers_factory", 1230 "../../common_video", 1231 "../../common_video/generic_frame_descriptor", 1232 "../../common_video/test:utilities", 1233 "../../media:rtc_media_base", 1234 "../../rtc_base", 1235 "../../rtc_base:checks", 1236 "../../rtc_base:histogram_percentile_counter", 1237 "../../rtc_base:platform_thread", 1238 "../../rtc_base:random", 1239 "../../rtc_base:refcount", 1240 "../../rtc_base:rtc_base_tests_utils", 1241 "../../rtc_base:rtc_event", 1242 "../../rtc_base:rtc_numerics", 1243 "../../rtc_base:stringutils", 1244 "../../rtc_base:task_queue_for_test", 1245 "../../rtc_base:timeutils", 1246 "../../rtc_base/experiments:encoder_info_settings", 1247 "../../rtc_base/synchronization:mutex", 1248 "../../rtc_base/system:unused", 1249 "../../system_wrappers", 1250 "../../system_wrappers:field_trial", 1251 "../../system_wrappers:metrics", 1252 "../../test:fake_encoded_frame", 1253 "../../test:fake_video_codecs", 1254 "../../test:field_trial", 1255 "../../test:fileutils", 1256 "../../test:run_loop", 1257 "../../test:scoped_key_value_config", 1258 "../../test:test_support", 1259 "../../test:video_test_common", 1260 "../../test:video_test_support", 1261 "../../test/time_controller:time_controller", 1262 "../rtp_rtcp:rtp_rtcp_format", 1263 "../rtp_rtcp:rtp_video_header", 1264 "codecs/av1:video_coding_codecs_av1_tests", 1265 "svc:scalability_structure_tests", 1266 "svc:svc_rate_allocator_tests", 1267 "timing:jitter_estimator", 1268 "timing:timing_module", 1269 ] 1270 absl_deps = [ 1271 "//third_party/abseil-cpp/absl/memory", 1272 "//third_party/abseil-cpp/absl/types:optional", 1273 "//third_party/abseil-cpp/absl/types:variant", 1274 ] 1275 if (rtc_build_libvpx) { 1276 deps += [ rtc_libvpx_dir ] 1277 } 1278 } 1279} 1280