1# Copyright 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 (is_ios) { 11 import("//build/config/ios/ios_sdk.gni") 12 import("//build/config/ios/rules.gni") 13} 14if (is_mac) { 15 import("//build/config/mac/rules.gni") 16} 17 18group("sdk") { 19 public_deps = [] 20 if (!build_with_chromium) { 21 if (is_android) { 22 public_deps += [ "android" ] 23 } 24 if (is_ios) { 25 public_deps += [ ":framework_objc" ] 26 } 27 } 28} 29 30rtc_library("media_constraints") { 31 sources = [ 32 "media_constraints.cc", 33 "media_constraints.h", 34 ] 35 deps = [ 36 "../api:audio_options_api", 37 "../api:libjingle_peerconnection_api", 38 ] 39 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 40} 41 42rtc_library("sdk_tests") { 43 testonly = true 44 sources = [ "media_constraints_unittest.cc" ] 45 deps = [ 46 ":media_constraints", 47 "../test:test_support", 48 ] 49} 50 51if (is_ios || is_mac) { 52 config("common_config_objc") { 53 include_dirs = [ 54 "objc", 55 56 # This is needed so that framework headers can include base headers 57 # without pathname (so it works from within the framework module). 58 "objc/base", 59 60 # This is here for backward compatiblity reasons. 61 "objc/Framework/Headers", # TODO(bugs.webrtc.org/9627): Remove this. 62 ] 63 cflags = [ 64 "-Wimplicit-retain-self", 65 "-Wstrict-overflow", 66 "-Wmissing-field-initializers", 67 ] 68 69 if (use_clang_coverage) { 70 configs = [ "//build/config/coverage:default_coverage" ] 71 } 72 } 73 74 config("used_from_extension") { 75 if (is_ios && rtc_apprtcmobile_broadcast_extension) { 76 cflags = [ "-fapplication-extension" ] 77 } 78 } 79 80 # TODO(bugs.webrtc.org/9627): Remove this when unused. Targets should depend on base_objc 81 # or helpers_objc directly instead. 82 rtc_library("common_objc") { 83 visibility = [ "*" ] 84 85 sources = [ "objc/helpers/noop.mm" ] 86 87 public_configs = [ ":common_config_objc" ] 88 89 deps = [ 90 ":base_objc", 91 ":helpers_objc", 92 ] 93 } 94 95 rtc_library("base_objc") { 96 visibility = [ "*" ] 97 sources = [ 98 "objc/base/RTCCodecSpecificInfo.h", 99 "objc/base/RTCEncodedImage.h", 100 "objc/base/RTCEncodedImage.m", 101 "objc/base/RTCI420Buffer.h", 102 "objc/base/RTCLogging.h", 103 "objc/base/RTCLogging.mm", 104 "objc/base/RTCMacros.h", 105 "objc/base/RTCMutableI420Buffer.h", 106 "objc/base/RTCMutableYUVPlanarBuffer.h", 107 "objc/base/RTCRtpFragmentationHeader.h", 108 "objc/base/RTCRtpFragmentationHeader.m", 109 "objc/base/RTCVideoCapturer.h", 110 "objc/base/RTCVideoCapturer.m", 111 "objc/base/RTCVideoCodecInfo.h", 112 "objc/base/RTCVideoCodecInfo.m", 113 "objc/base/RTCVideoDecoder.h", 114 "objc/base/RTCVideoDecoderFactory.h", 115 "objc/base/RTCVideoEncoder.h", 116 "objc/base/RTCVideoEncoderFactory.h", 117 "objc/base/RTCVideoEncoderQpThresholds.h", 118 "objc/base/RTCVideoEncoderQpThresholds.m", 119 "objc/base/RTCVideoEncoderSettings.h", 120 "objc/base/RTCVideoEncoderSettings.m", 121 "objc/base/RTCVideoFrame.h", 122 "objc/base/RTCVideoFrame.mm", 123 "objc/base/RTCVideoFrameBuffer.h", 124 "objc/base/RTCVideoRenderer.h", 125 "objc/base/RTCYUVPlanarBuffer.h", 126 ] 127 128 deps = [ 129 "../rtc_base", 130 "../rtc_base:checks", 131 ] 132 configs += [ 133 "..:common_objc", 134 ":used_from_extension", 135 ] 136 137 public_configs = [ ":common_config_objc" ] 138 } 139 140 rtc_library("helpers_objc") { 141 sources = [ 142 "objc/helpers/AVCaptureSession+DevicePosition.h", 143 "objc/helpers/AVCaptureSession+DevicePosition.mm", 144 "objc/helpers/NSString+StdString.h", 145 "objc/helpers/NSString+StdString.mm", 146 "objc/helpers/RTCDispatcher+Private.h", 147 "objc/helpers/RTCDispatcher.h", 148 "objc/helpers/RTCDispatcher.m", 149 "objc/helpers/scoped_cftyperef.h", 150 ] 151 152 deps = [ 153 ":base_objc", 154 "../rtc_base:checks", 155 ] 156 157 frameworks = [ 158 "AVFoundation.framework", 159 "CoreMedia.framework", 160 ] 161 162 configs += [ 163 "..:common_objc", 164 ":used_from_extension", 165 ] 166 167 public_configs = [ ":common_config_objc" ] 168 169 if (is_ios) { 170 sources += [ 171 "objc/helpers/RTCCameraPreviewView.h", 172 "objc/helpers/RTCCameraPreviewView.m", 173 "objc/helpers/UIDevice+RTCDevice.h", 174 "objc/helpers/UIDevice+RTCDevice.mm", 175 ] 176 } 177 } 178 179 if (!build_with_chromium) { 180 rtc_library("callback_logger_objc") { 181 sources = [ 182 "objc/api/logging/RTCCallbackLogger.h", 183 "objc/api/logging/RTCCallbackLogger.mm", 184 ] 185 186 deps = [ 187 ":base_objc", 188 "../rtc_base", 189 "../rtc_base:checks", 190 "../rtc_base:logging", 191 ] 192 193 configs += [ 194 "..:common_objc", 195 ":used_from_extension", 196 ] 197 } 198 199 rtc_library("file_logger_objc") { 200 sources = [ 201 "objc/api/peerconnection/RTCFileLogger.h", 202 "objc/api/peerconnection/RTCFileLogger.mm", 203 ] 204 205 deps = [ 206 ":base_objc", 207 "../rtc_base", 208 "../rtc_base:checks", 209 "../rtc_base:logging", 210 ] 211 212 configs += [ 213 "..:common_objc", 214 ":used_from_extension", 215 ] 216 } 217 } 218 219 if (!build_with_chromium) { 220 if (is_ios) { 221 rtc_library("native_api_audio_device_module") { 222 visibility = [ "*" ] 223 224 sources = [ 225 "objc/native/api/audio_device_module.h", 226 "objc/native/api/audio_device_module.mm", 227 ] 228 229 deps = [ 230 ":audio_device", 231 "../modules/audio_device:audio_device_api", 232 "../modules/audio_device:audio_device_generic", 233 "../rtc_base:checks", 234 "../rtc_base:rtc_base_approved", 235 "../system_wrappers", 236 ] 237 } 238 239 rtc_source_set("audio_session_observer") { 240 visibility = [ ":*" ] 241 242 sources = [ "objc/native/src/audio/audio_session_observer.h" ] 243 244 deps = [ "../rtc_base" ] 245 } 246 247 rtc_library("audio_device") { 248 visibility = [ "*" ] 249 250 sources = [ 251 "objc/native/src/audio/audio_device_ios.h", 252 "objc/native/src/audio/audio_device_ios.mm", 253 "objc/native/src/audio/audio_device_module_ios.h", 254 "objc/native/src/audio/audio_device_module_ios.mm", 255 "objc/native/src/audio/helpers.h", 256 "objc/native/src/audio/helpers.mm", 257 "objc/native/src/audio/voice_processing_audio_unit.h", 258 "objc/native/src/audio/voice_processing_audio_unit.mm", 259 ] 260 261 deps = [ 262 ":audio_objc", 263 ":audio_session_observer", 264 ":base_objc", 265 "../api:array_view", 266 "../api/task_queue", 267 "../api/task_queue:default_task_queue_factory", 268 "../modules/audio_device:audio_device_api", 269 "../modules/audio_device:audio_device_buffer", 270 "../modules/audio_device:audio_device_generic", 271 "../rtc_base", 272 "../rtc_base:checks", 273 "../system_wrappers:field_trial", 274 "../system_wrappers:metrics", 275 ] 276 absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ] 277 278 frameworks = [ "AudioToolbox.framework" ] 279 } 280 281 # This target exists to expose :audio_session_objc and 282 # :audio_session_delegate_adapter_objc for backward compatibility, 283 # and should be deprecated. 284 group("audio_objc") { 285 public_deps = [ # no-presubmit-check TODO(webrtc:11238) 286 ":audio_session_delegate_adapter_objc", 287 ":audio_session_objc", 288 ] 289 } 290 291 rtc_library("audio_session_delegate_adapter_objc") { 292 sources = [ 293 "objc/components/audio/RTCNativeAudioSessionDelegateAdapter.h", 294 "objc/components/audio/RTCNativeAudioSessionDelegateAdapter.mm", 295 ] 296 297 configs += [ 298 "..:common_objc", 299 ":used_from_extension", 300 ] 301 302 public_configs = [ ":common_config_objc" ] 303 304 deps = [ 305 ":audio_session_objc", 306 ":audio_session_observer", 307 ":base_objc", 308 ] 309 } 310 311 rtc_library("audio_session_objc") { 312 visibility = [ "*" ] 313 314 sources = [ 315 "objc/components/audio/RTCAudioSession+Configuration.mm", 316 "objc/components/audio/RTCAudioSession+Private.h", 317 "objc/components/audio/RTCAudioSession.h", 318 "objc/components/audio/RTCAudioSession.mm", 319 "objc/components/audio/RTCAudioSessionConfiguration.h", 320 "objc/components/audio/RTCAudioSessionConfiguration.m", 321 ] 322 323 configs += [ 324 "..:common_objc", 325 ":used_from_extension", 326 ] 327 328 public_configs = [ ":common_config_objc" ] 329 330 frameworks = [ "AVFoundation.framework" ] 331 332 deps = [ 333 ":base_objc", 334 ":helpers_objc", 335 "../rtc_base", 336 "../rtc_base:checks", 337 "../rtc_base:rtc_base_approved", 338 ] 339 } 340 } 341 342 rtc_library("videosource_objc") { 343 sources = [ 344 "objc/api/peerconnection/RTCVideoSource+Private.h", 345 "objc/api/peerconnection/RTCVideoSource.h", 346 "objc/api/peerconnection/RTCVideoSource.mm", 347 ] 348 349 deps = [ 350 ":base_objc", 351 ":mediasource_objc", 352 ":native_video", 353 ":videoframebuffer_objc", 354 "../api:libjingle_peerconnection_api", 355 "../api:media_stream_interface", 356 "../api/video:video_frame", 357 "../api/video:video_frame_i420", 358 "../api/video:video_rtp_headers", 359 "../common_video", 360 "../media:rtc_media_base", 361 "../rtc_base", 362 "../rtc_base:checks", 363 "//third_party/libyuv", 364 ] 365 366 configs += [ 367 "..:common_objc", 368 ":used_from_extension", 369 ] 370 } 371 372 rtc_library("videoframebuffer_objc") { 373 visibility = [ "*" ] 374 sources = [ 375 "objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h", 376 "objc/api/video_frame_buffer/RTCNativeI420Buffer.h", 377 "objc/api/video_frame_buffer/RTCNativeI420Buffer.mm", 378 "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h", 379 "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.mm", 380 "objc/components/video_frame_buffer/RTCCVPixelBuffer.h", 381 "objc/components/video_frame_buffer/RTCCVPixelBuffer.mm", 382 ] 383 deps = [ 384 ":base_objc", 385 "//api/video:video_frame", 386 "//api/video:video_frame_i420", 387 "//api/video:video_rtp_headers", 388 "//common_video", 389 "//rtc_base:checks", 390 "//rtc_base:rtc_base_approved", 391 "//third_party/libyuv", 392 ] 393 configs += [ 394 "..:common_objc", 395 ":used_from_extension", 396 ] 397 frameworks = [ 398 "VideoToolbox.framework", 399 "CoreGraphics.framework", 400 "CoreVideo.framework", 401 ] 402 } 403 404 rtc_library("video_objc") { 405 sources = [ 406 "objc/components/renderer/opengl/RTCDefaultShader.h", 407 "objc/components/renderer/opengl/RTCDefaultShader.mm", 408 "objc/components/renderer/opengl/RTCI420TextureCache.h", 409 "objc/components/renderer/opengl/RTCI420TextureCache.mm", 410 "objc/components/renderer/opengl/RTCOpenGLDefines.h", 411 "objc/components/renderer/opengl/RTCShader.h", 412 "objc/components/renderer/opengl/RTCShader.mm", 413 "objc/components/renderer/opengl/RTCVideoViewShading.h", 414 ] 415 frameworks = [ "CoreVideo.framework" ] 416 if (is_ios) { 417 sources += [ 418 "objc/components/renderer/opengl/RTCNV12TextureCache.h", 419 "objc/components/renderer/opengl/RTCNV12TextureCache.m", 420 ] 421 frameworks += [ 422 "GLKit.framework", 423 "OpenGLES.framework", 424 "QuartzCore.framework", 425 ] 426 } else if (is_mac) { 427 frameworks += [ 428 "CoreMedia.framework", 429 "OpenGL.framework", 430 ] 431 } 432 433 deps = [ 434 ":base_objc", 435 ":helpers_objc", 436 ":mediaconstraints_objc", 437 ":native_video", 438 ":videoframebuffer_objc", 439 ":videosource_objc", 440 "../api:libjingle_peerconnection_api", 441 "../api/video:video_frame", 442 "../api/video:video_rtp_headers", 443 "../common_video", 444 "../media:rtc_media_base", 445 "../rtc_base", 446 "../rtc_base:checks", 447 ] 448 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 449 450 configs += [ 451 "..:common_objc", 452 ":used_from_extension", 453 ] 454 } 455 456 rtc_library("ui_objc") { 457 visibility = [ "*" ] 458 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 459 if (is_ios) { 460 sources = [ 461 "objc/components/renderer/opengl/RTCDisplayLinkTimer.h", 462 "objc/components/renderer/opengl/RTCDisplayLinkTimer.m", 463 "objc/components/renderer/opengl/RTCEAGLVideoView.h", 464 "objc/components/renderer/opengl/RTCEAGLVideoView.m", 465 ] 466 } 467 if (is_mac) { 468 sources = [ 469 "objc/components/renderer/opengl/RTCNSGLVideoView.h", 470 "objc/components/renderer/opengl/RTCNSGLVideoView.m", 471 ] 472 } 473 configs += [ "..:common_objc" ] 474 deps = [ 475 ":base_objc", 476 ":helpers_objc", 477 ":video_objc", 478 ":videocapture_objc", 479 ":videoframebuffer_objc", 480 ] 481 } 482 483 if (rtc_use_metal_rendering) { 484 rtc_library("metal_objc") { 485 visibility = [ "*" ] 486 allow_poison = [ 487 "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. 488 "default_task_queue", 489 ] 490 sources = [ 491 "objc/components/renderer/metal/RTCMTLI420Renderer.h", 492 "objc/components/renderer/metal/RTCMTLI420Renderer.mm", 493 "objc/components/renderer/metal/RTCMTLRenderer+Private.h", 494 "objc/components/renderer/metal/RTCMTLRenderer.h", 495 "objc/components/renderer/metal/RTCMTLRenderer.mm", 496 ] 497 if (is_ios) { 498 sources += [ 499 "objc/components/renderer/metal/RTCMTLNV12Renderer.h", 500 "objc/components/renderer/metal/RTCMTLNV12Renderer.mm", 501 "objc/components/renderer/metal/RTCMTLRGBRenderer.h", 502 "objc/components/renderer/metal/RTCMTLRGBRenderer.mm", 503 "objc/components/renderer/metal/RTCMTLVideoView.h", 504 "objc/components/renderer/metal/RTCMTLVideoView.m", 505 ] 506 } 507 frameworks = [ 508 "CoreVideo.framework", 509 "Metal.framework", 510 "MetalKit.framework", 511 ] 512 if (is_mac) { 513 sources += [ 514 "objc/components/renderer/metal/RTCMTLNSVideoView.h", 515 "objc/components/renderer/metal/RTCMTLNSVideoView.m", 516 ] 517 frameworks += [ "AppKit.framework" ] 518 } 519 deps = [ 520 ":base_objc", 521 ":peerconnectionfactory_base_objc", 522 ":video_objc", 523 ":videoframebuffer_objc", 524 "../api/video:video_frame", 525 "../api/video:video_rtp_headers", 526 "../rtc_base:checks", 527 "../rtc_base:rtc_base_approved", 528 ] 529 configs += [ "..:common_objc" ] 530 public_configs = [ ":common_config_objc" ] 531 } 532 } 533 534 # TODO(bugs.webrtc.org/9627): Remove this target. 535 rtc_library("videocapturebase_objc") { 536 visibility = [ "*" ] 537 sources = [ "objc/helpers/noop.mm" ] 538 539 configs += [ "..:common_objc" ] 540 541 public_configs = [ ":common_config_objc" ] 542 543 deps = [ 544 ":base_objc", 545 ":videoframebuffer_objc", 546 ] 547 } 548 549 rtc_library("videocapture_objc") { 550 visibility = [ "*" ] 551 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 552 sources = [ 553 "objc/components/capturer/RTCCameraVideoCapturer.h", 554 "objc/components/capturer/RTCCameraVideoCapturer.m", 555 ] 556 if (is_ios) { 557 sources += [ 558 "objc/components/capturer/RTCFileVideoCapturer.h", 559 "objc/components/capturer/RTCFileVideoCapturer.m", 560 ] 561 } 562 frameworks = [ 563 "AVFoundation.framework", 564 "CoreVideo.framework", 565 ] 566 567 configs += [ "..:common_objc" ] 568 569 public_configs = [ ":common_config_objc" ] 570 571 deps = [ 572 ":base_objc", 573 ":helpers_objc", 574 ":video_objc", 575 ":videoframebuffer_objc", 576 "../rtc_base/system:gcd_helpers", 577 ] 578 } 579 580 rtc_library("videocodec_objc") { 581 visibility = [ "*" ] 582 configs += [ "..:no_global_constructors" ] 583 sources = [ 584 "objc/components/video_codec/RTCCodecSpecificInfoH264+Private.h", 585 "objc/components/video_codec/RTCCodecSpecificInfoH264.h", 586 "objc/components/video_codec/RTCCodecSpecificInfoH264.mm", 587 "objc/components/video_codec/RTCH264ProfileLevelId.h", 588 "objc/components/video_codec/RTCH264ProfileLevelId.mm", 589 ] 590 if (is_ios) { 591 sources += [ 592 "objc/components/video_codec/UIDevice+H264Profile.h", 593 "objc/components/video_codec/UIDevice+H264Profile.mm", 594 ] 595 } 596 597 public_configs = [ ":common_config_objc" ] 598 deps = [ 599 ":base_objc", 600 ":helpers_objc", 601 "../api/video_codecs:video_codecs_api", 602 "../common_video", 603 "../media:rtc_h264_profile_id", 604 "../media:rtc_media_base", 605 "../modules:module_api", 606 "../modules/video_coding:video_codec_interface", 607 "../rtc_base:checks", 608 "../rtc_base:rtc_base_approved", 609 ] 610 } 611 612 rtc_library("default_codec_factory_objc") { 613 sources = [ 614 "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h", 615 "objc/components/video_codec/RTCDefaultVideoDecoderFactory.m", 616 "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h", 617 "objc/components/video_codec/RTCDefaultVideoEncoderFactory.m", 618 ] 619 620 deps = [ 621 ":base_objc", 622 ":native_video", 623 ":videocodec_objc", 624 ":videotoolbox_objc", 625 ":vp8", 626 ":vp9", 627 ":vpx_codec_constants", 628 ] 629 } 630 631 rtc_library("vpx_codec_constants") { 632 configs += [ "..:no_global_constructors" ] 633 sources = [ 634 "objc/api/video_codec/RTCVideoCodecConstants.h", 635 "objc/api/video_codec/RTCVideoCodecConstants.mm", 636 ] 637 638 deps = [ 639 ":base_objc", 640 "../media:rtc_media_base", 641 ] 642 } 643 644 rtc_library("vp8") { 645 visibility = [ "*" ] 646 allow_poison = [ "software_video_codecs" ] 647 sources = [ 648 "objc/api/video_codec/RTCVideoDecoderVP8.h", 649 "objc/api/video_codec/RTCVideoDecoderVP8.mm", 650 "objc/api/video_codec/RTCVideoEncoderVP8.h", 651 "objc/api/video_codec/RTCVideoEncoderVP8.mm", 652 ] 653 654 deps = [ 655 ":base_objc", 656 ":wrapped_native_codec_objc", 657 "../modules/video_coding:webrtc_vp8", 658 ] 659 } 660 661 rtc_library("vp9") { 662 visibility = [ "*" ] 663 allow_poison = [ "software_video_codecs" ] 664 sources = [ 665 "objc/api/video_codec/RTCVideoDecoderVP9.h", 666 "objc/api/video_codec/RTCVideoDecoderVP9.mm", 667 "objc/api/video_codec/RTCVideoEncoderVP9.h", 668 "objc/api/video_codec/RTCVideoEncoderVP9.mm", 669 ] 670 671 deps = [ 672 ":base_objc", 673 ":wrapped_native_codec_objc", 674 "../media:rtc_media_base", 675 "../modules/video_coding:webrtc_vp9", 676 ] 677 } 678 679 # Build the PeerConnectionFactory without audio/video support. 680 # This target depends on the objc_peeerconnectionfactory_base which still 681 # includes some audio/video related objects such as RTCAudioSource because 682 # these objects are just thin wrappers of native C++ interfaces required 683 # when implementing webrtc::PeerConnectionFactoryInterface and 684 # webrtc::PeerConnectionInterface. 685 # The applications which only use WebRTC DataChannel can depend on this. 686 rtc_library("peerconnectionfactory_no_media_objc") { 687 visibility = [ "*" ] 688 allow_poison = [ 689 "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. 690 "default_task_queue", 691 ] 692 defines = [ "HAVE_NO_MEDIA" ] 693 694 sources = [ "objc/helpers/noop.mm" ] 695 696 public_configs = [ ":common_config_objc" ] 697 698 deps = [ 699 ":native_api", 700 ":native_video", 701 ":peerconnectionfactory_base_objc", 702 "../api:libjingle_peerconnection_api", 703 "../rtc_base", 704 ] 705 } 706 707 rtc_library("mediaconstraints_objc") { 708 configs += [ "..:no_global_constructors" ] 709 sources = [ 710 "objc/api/peerconnection/RTCMediaConstraints+Private.h", 711 "objc/api/peerconnection/RTCMediaConstraints.h", 712 "objc/api/peerconnection/RTCMediaConstraints.mm", 713 ] 714 715 public_configs = [ ":common_config_objc" ] 716 deps = [ 717 ":base_objc", 718 ":helpers_objc", 719 ":media_constraints", 720 ] 721 } 722 723 # TODO(bugs.webrtc.org/9627): Remove, targets should depend on base_objc. 724 rtc_library("videorenderer_objc") { 725 visibility = [ "*" ] 726 sources = [ "objc/helpers/noop.mm" ] 727 728 configs += [ "..:common_objc" ] 729 public_configs = [ ":common_config_objc" ] 730 731 deps = [ ":base_objc" ] 732 } 733 734 rtc_library("videorendereradapter_objc") { 735 visibility = [ "*" ] 736 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 737 sources = [ 738 "objc/api/RTCVideoRendererAdapter+Private.h", 739 "objc/api/RTCVideoRendererAdapter.h", 740 "objc/api/RTCVideoRendererAdapter.mm", 741 ] 742 743 configs += [ "..:common_objc" ] 744 public_configs = [ ":common_config_objc" ] 745 746 deps = [ 747 ":base_objc", 748 ":native_api", 749 ":videoframebuffer_objc", 750 "../api:libjingle_peerconnection_api", 751 "../api:media_stream_interface", 752 ] 753 } 754 755 rtc_library("mediasource_objc") { 756 sources = [ 757 "objc/api/peerconnection/RTCMediaSource+Private.h", 758 "objc/api/peerconnection/RTCMediaSource.h", 759 "objc/api/peerconnection/RTCMediaSource.mm", 760 ] 761 762 configs += [ 763 "..:common_objc", 764 ":used_from_extension", 765 ] 766 public_configs = [ ":common_config_objc" ] 767 768 deps = [ 769 ":base_objc", 770 "../api:media_stream_interface", 771 "../rtc_base:checks", 772 ] 773 } 774 775 rtc_library("base_native_additions_objc") { 776 sources = [ 777 "objc/api/peerconnection/RTCEncodedImage+Private.h", 778 "objc/api/peerconnection/RTCEncodedImage+Private.mm", 779 "objc/api/peerconnection/RTCRtpFragmentationHeader+Private.h", 780 "objc/api/peerconnection/RTCRtpFragmentationHeader+Private.mm", 781 "objc/api/peerconnection/RTCVideoCodecInfo+Private.h", 782 "objc/api/peerconnection/RTCVideoCodecInfo+Private.mm", 783 "objc/api/peerconnection/RTCVideoEncoderSettings+Private.h", 784 "objc/api/peerconnection/RTCVideoEncoderSettings+Private.mm", 785 ] 786 787 configs += [ "..:common_objc" ] 788 789 public_configs = [ ":common_config_objc" ] 790 791 deps = [ 792 ":base_objc", 793 ":helpers_objc", 794 "../api/video:encoded_image", 795 "../api/video_codecs:video_codecs_api", 796 "../modules:module_api", 797 "../modules/video_coding:video_codec_interface", 798 "../rtc_base", 799 ] 800 } 801 802 rtc_library("peerconnectionfactory_base_objc") { 803 visibility = [ "*" ] 804 allow_poison = [ 805 "audio_codecs", # TODO(bugs.webrtc.org/8396): Remove. 806 "default_task_queue", 807 ] 808 configs += [ 809 "..:no_exit_time_destructors", 810 "..:no_global_constructors", 811 ] 812 sources = [ 813 "objc/api/peerconnection/RTCAudioSource+Private.h", 814 "objc/api/peerconnection/RTCAudioSource.h", 815 "objc/api/peerconnection/RTCAudioSource.mm", 816 "objc/api/peerconnection/RTCAudioTrack+Private.h", 817 "objc/api/peerconnection/RTCAudioTrack.h", 818 "objc/api/peerconnection/RTCAudioTrack.mm", 819 "objc/api/peerconnection/RTCCertificate.h", 820 "objc/api/peerconnection/RTCCertificate.mm", 821 "objc/api/peerconnection/RTCConfiguration+Native.h", 822 "objc/api/peerconnection/RTCConfiguration+Private.h", 823 "objc/api/peerconnection/RTCConfiguration.h", 824 "objc/api/peerconnection/RTCConfiguration.mm", 825 "objc/api/peerconnection/RTCCryptoOptions.h", 826 "objc/api/peerconnection/RTCCryptoOptions.mm", 827 "objc/api/peerconnection/RTCDataChannel+Private.h", 828 "objc/api/peerconnection/RTCDataChannel.h", 829 "objc/api/peerconnection/RTCDataChannel.mm", 830 "objc/api/peerconnection/RTCDataChannelConfiguration+Private.h", 831 "objc/api/peerconnection/RTCDataChannelConfiguration.h", 832 "objc/api/peerconnection/RTCDataChannelConfiguration.mm", 833 "objc/api/peerconnection/RTCDtmfSender+Private.h", 834 "objc/api/peerconnection/RTCDtmfSender.h", 835 "objc/api/peerconnection/RTCDtmfSender.mm", 836 "objc/api/peerconnection/RTCFieldTrials.h", 837 "objc/api/peerconnection/RTCFieldTrials.mm", 838 "objc/api/peerconnection/RTCIceCandidate+Private.h", 839 "objc/api/peerconnection/RTCIceCandidate.h", 840 "objc/api/peerconnection/RTCIceCandidate.mm", 841 "objc/api/peerconnection/RTCIceServer+Private.h", 842 "objc/api/peerconnection/RTCIceServer.h", 843 "objc/api/peerconnection/RTCIceServer.mm", 844 "objc/api/peerconnection/RTCLegacyStatsReport+Private.h", 845 "objc/api/peerconnection/RTCLegacyStatsReport.h", 846 "objc/api/peerconnection/RTCLegacyStatsReport.mm", 847 "objc/api/peerconnection/RTCMediaStream+Private.h", 848 "objc/api/peerconnection/RTCMediaStream.h", 849 "objc/api/peerconnection/RTCMediaStream.mm", 850 "objc/api/peerconnection/RTCMediaStreamTrack+Private.h", 851 "objc/api/peerconnection/RTCMediaStreamTrack.h", 852 "objc/api/peerconnection/RTCMediaStreamTrack.mm", 853 "objc/api/peerconnection/RTCMetrics.h", 854 "objc/api/peerconnection/RTCMetrics.mm", 855 "objc/api/peerconnection/RTCMetricsSampleInfo+Private.h", 856 "objc/api/peerconnection/RTCMetricsSampleInfo.h", 857 "objc/api/peerconnection/RTCMetricsSampleInfo.mm", 858 "objc/api/peerconnection/RTCPeerConnection+DataChannel.mm", 859 "objc/api/peerconnection/RTCPeerConnection+Private.h", 860 "objc/api/peerconnection/RTCPeerConnection+Stats.mm", 861 "objc/api/peerconnection/RTCPeerConnection.h", 862 "objc/api/peerconnection/RTCPeerConnection.mm", 863 "objc/api/peerconnection/RTCPeerConnectionFactory+Native.h", 864 "objc/api/peerconnection/RTCPeerConnectionFactory+Private.h", 865 "objc/api/peerconnection/RTCPeerConnectionFactory.h", 866 "objc/api/peerconnection/RTCPeerConnectionFactory.mm", 867 "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.h", 868 "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.mm", 869 "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.h", 870 "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm", 871 "objc/api/peerconnection/RTCPeerConnectionFactoryOptions+Private.h", 872 "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h", 873 "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.mm", 874 "objc/api/peerconnection/RTCRtcpParameters+Private.h", 875 "objc/api/peerconnection/RTCRtcpParameters.h", 876 "objc/api/peerconnection/RTCRtcpParameters.mm", 877 "objc/api/peerconnection/RTCRtpCodecParameters+Private.h", 878 "objc/api/peerconnection/RTCRtpCodecParameters.h", 879 "objc/api/peerconnection/RTCRtpCodecParameters.mm", 880 "objc/api/peerconnection/RTCRtpEncodingParameters+Private.h", 881 "objc/api/peerconnection/RTCRtpEncodingParameters.h", 882 "objc/api/peerconnection/RTCRtpEncodingParameters.mm", 883 "objc/api/peerconnection/RTCRtpHeaderExtension+Private.h", 884 "objc/api/peerconnection/RTCRtpHeaderExtension.h", 885 "objc/api/peerconnection/RTCRtpHeaderExtension.mm", 886 "objc/api/peerconnection/RTCRtpParameters+Private.h", 887 "objc/api/peerconnection/RTCRtpParameters.h", 888 "objc/api/peerconnection/RTCRtpParameters.mm", 889 "objc/api/peerconnection/RTCRtpReceiver+Native.h", 890 "objc/api/peerconnection/RTCRtpReceiver+Private.h", 891 "objc/api/peerconnection/RTCRtpReceiver.h", 892 "objc/api/peerconnection/RTCRtpReceiver.mm", 893 "objc/api/peerconnection/RTCRtpSender+Native.h", 894 "objc/api/peerconnection/RTCRtpSender+Private.h", 895 "objc/api/peerconnection/RTCRtpSender.h", 896 "objc/api/peerconnection/RTCRtpSender.mm", 897 "objc/api/peerconnection/RTCRtpTransceiver+Private.h", 898 "objc/api/peerconnection/RTCRtpTransceiver.h", 899 "objc/api/peerconnection/RTCRtpTransceiver.mm", 900 "objc/api/peerconnection/RTCSSLAdapter.h", 901 "objc/api/peerconnection/RTCSSLAdapter.mm", 902 "objc/api/peerconnection/RTCSessionDescription+Private.h", 903 "objc/api/peerconnection/RTCSessionDescription.h", 904 "objc/api/peerconnection/RTCSessionDescription.mm", 905 "objc/api/peerconnection/RTCStatisticsReport+Private.h", 906 "objc/api/peerconnection/RTCStatisticsReport.h", 907 "objc/api/peerconnection/RTCStatisticsReport.mm", 908 "objc/api/peerconnection/RTCTracing.h", 909 "objc/api/peerconnection/RTCTracing.mm", 910 "objc/api/peerconnection/RTCVideoTrack+Private.h", 911 "objc/api/peerconnection/RTCVideoTrack.h", 912 "objc/api/peerconnection/RTCVideoTrack.mm", 913 ] 914 915 configs += [ 916 "..:common_objc", 917 ":used_from_extension", 918 ] 919 public_configs = [ ":common_config_objc" ] 920 921 deps = [ 922 ":base_native_additions_objc", 923 ":base_objc", 924 ":file_logger_objc", 925 ":helpers_objc", 926 ":legacy_header_paths", 927 ":mediaconstraints_objc", 928 ":mediasource_objc", 929 ":native_api", 930 ":native_video", 931 ":video_objc", 932 ":videoframebuffer_objc", 933 ":videorendereradapter_objc", 934 ":videosource_objc", 935 ":videotoolbox_objc", 936 "../api:libjingle_peerconnection_api", 937 "../api:media_stream_interface", 938 "../api:rtc_event_log_output_file", 939 "../api:rtc_stats_api", 940 "../api:rtp_parameters", 941 "../api:scoped_refptr", 942 "../api/audio_codecs:audio_codecs_api", 943 "../api/audio_codecs:builtin_audio_decoder_factory", 944 "../api/audio_codecs:builtin_audio_encoder_factory", 945 "../api/crypto:frame_decryptor_interface", 946 "../api/crypto:frame_encryptor_interface", 947 "../api/rtc_event_log:rtc_event_log_factory", 948 "../api/task_queue:default_task_queue_factory", 949 "../api/video:video_frame", 950 "../api/video:video_rtp_headers", 951 "../api/video_codecs:video_codecs_api", 952 "../common_video", 953 "../media:rtc_media_base", 954 "../modules:module_api", 955 "../modules/audio_device:audio_device_api", 956 "../modules/audio_processing", 957 "../modules/audio_processing:api", 958 "../modules/video_coding:video_codec_interface", 959 "../pc:peerconnection", 960 "../rtc_base", 961 "../rtc_base:checks", 962 "../system_wrappers:field_trial", 963 "../system_wrappers:metrics", 964 ] 965 966 if (is_ios) { 967 deps += [ ":native_api_audio_device_module" ] 968 } 969 } 970 971 # TODO(bugs.webrtc.org/9627): Remove this target. 972 rtc_source_set("legacy_header_paths") { 973 sources = [ 974 "objc/Framework/Classes/Common/NSString+StdString.h", 975 "objc/Framework/Classes/Common/scoped_cftyperef.h", 976 "objc/Framework/Classes/PeerConnection/RTCConfiguration+Native.h", 977 "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Native.h", 978 "objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h", 979 "objc/Framework/Classes/Video/RTCDefaultShader.h", 980 "objc/Framework/Classes/Video/RTCNV12TextureCache.h", 981 "objc/Framework/Classes/VideoToolbox/nalu_rewriter.h", 982 "objc/Framework/Headers/WebRTC/RTCAudioSession.h", 983 "objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h", 984 "objc/Framework/Headers/WebRTC/RTCAudioSource.h", 985 "objc/Framework/Headers/WebRTC/RTCAudioTrack.h", 986 "objc/Framework/Headers/WebRTC/RTCCVPixelBuffer.h", 987 "objc/Framework/Headers/WebRTC/RTCCallbackLogger.h", 988 "objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h", 989 "objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h", 990 "objc/Framework/Headers/WebRTC/RTCCertificate.h", 991 "objc/Framework/Headers/WebRTC/RTCConfiguration.h", 992 "objc/Framework/Headers/WebRTC/RTCDataChannel.h", 993 "objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h", 994 "objc/Framework/Headers/WebRTC/RTCDefaultVideoDecoderFactory.h", 995 "objc/Framework/Headers/WebRTC/RTCDefaultVideoEncoderFactory.h", 996 "objc/Framework/Headers/WebRTC/RTCDispatcher.h", 997 "objc/Framework/Headers/WebRTC/RTCDtmfSender.h", 998 "objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h", 999 "objc/Framework/Headers/WebRTC/RTCFieldTrials.h", 1000 "objc/Framework/Headers/WebRTC/RTCFileLogger.h", 1001 "objc/Framework/Headers/WebRTC/RTCFileVideoCapturer.h", 1002 "objc/Framework/Headers/WebRTC/RTCH264ProfileLevelId.h", 1003 "objc/Framework/Headers/WebRTC/RTCIceCandidate.h", 1004 "objc/Framework/Headers/WebRTC/RTCIceServer.h", 1005 "objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h", 1006 "objc/Framework/Headers/WebRTC/RTCLogging.h", 1007 "objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h", 1008 "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h", 1009 "objc/Framework/Headers/WebRTC/RTCMacros.h", 1010 "objc/Framework/Headers/WebRTC/RTCMediaConstraints.h", 1011 "objc/Framework/Headers/WebRTC/RTCMediaSource.h", 1012 "objc/Framework/Headers/WebRTC/RTCMediaStream.h", 1013 "objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h", 1014 "objc/Framework/Headers/WebRTC/RTCMetrics.h", 1015 "objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h", 1016 "objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h", 1017 "objc/Framework/Headers/WebRTC/RTCPeerConnection.h", 1018 "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h", 1019 "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactoryOptions.h", 1020 "objc/Framework/Headers/WebRTC/RTCRtcpParameters.h", 1021 "objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h", 1022 "objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h", 1023 "objc/Framework/Headers/WebRTC/RTCRtpHeaderExtension.h", 1024 "objc/Framework/Headers/WebRTC/RTCRtpParameters.h", 1025 "objc/Framework/Headers/WebRTC/RTCRtpReceiver.h", 1026 "objc/Framework/Headers/WebRTC/RTCRtpSender.h", 1027 "objc/Framework/Headers/WebRTC/RTCRtpTransceiver.h", 1028 "objc/Framework/Headers/WebRTC/RTCSSLAdapter.h", 1029 "objc/Framework/Headers/WebRTC/RTCSessionDescription.h", 1030 "objc/Framework/Headers/WebRTC/RTCTracing.h", 1031 "objc/Framework/Headers/WebRTC/RTCVideoCapturer.h", 1032 "objc/Framework/Headers/WebRTC/RTCVideoCodec.h", 1033 "objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h", 1034 "objc/Framework/Headers/WebRTC/RTCVideoCodecH264.h", 1035 "objc/Framework/Headers/WebRTC/RTCVideoCodecInfo.h", 1036 "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h", 1037 "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h", 1038 "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP8.h", 1039 "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP9.h", 1040 "objc/Framework/Headers/WebRTC/RTCVideoFrame.h", 1041 "objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h", 1042 "objc/Framework/Headers/WebRTC/RTCVideoRenderer.h", 1043 "objc/Framework/Headers/WebRTC/RTCVideoSource.h", 1044 "objc/Framework/Headers/WebRTC/RTCVideoTrack.h", 1045 "objc/Framework/Headers/WebRTC/RTCVideoViewShading.h", 1046 "objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h", 1047 "objc/Framework/Native/api/audio_device_module.h", 1048 "objc/Framework/Native/api/video_decoder_factory.h", 1049 "objc/Framework/Native/api/video_encoder_factory.h", 1050 "objc/Framework/Native/api/video_frame_buffer.h", 1051 "objc/Framework/Native/src/objc_video_decoder_factory.h", 1052 "objc/Framework/Native/src/objc_video_encoder_factory.h", 1053 ] 1054 } 1055 1056 if (rtc_include_tests) { 1057 if (is_ios) { 1058 rtc_library("sdk_unittests_sources") { 1059 testonly = true 1060 include_dirs = [ "objc/" ] 1061 1062 sources = [ 1063 "objc/unittests/ObjCVideoTrackSource_xctest.mm", 1064 "objc/unittests/RTCCVPixelBuffer_xctest.mm", 1065 "objc/unittests/RTCCallbackLogger_xctest.m", 1066 "objc/unittests/RTCEncodedImage_xctest.mm", 1067 "objc/unittests/RTCFileVideoCapturer_xctest.mm", 1068 "objc/unittests/RTCH264ProfileLevelId_xctest.m", 1069 "objc/unittests/RTCNV12TextureCache_xctest.m", 1070 "objc/unittests/RTCPeerConnectionFactory_xctest.m", 1071 "objc/unittests/frame_buffer_helpers.h", 1072 "objc/unittests/frame_buffer_helpers.mm", 1073 "objc/unittests/nalu_rewriter_xctest.mm", 1074 ] 1075 1076 # TODO(peterhanspers): Reenable these tests on simulator. 1077 # See bugs.webrtc.org/7812 1078 if (!use_ios_simulator) { 1079 sources += [ 1080 "objc/unittests/RTCAudioDeviceModule_xctest.mm", 1081 "objc/unittests/RTCAudioDevice_xctest.mm", 1082 ] 1083 } 1084 1085 deps = [ 1086 ":audio_device", 1087 ":audio_session_objc", 1088 ":base_native_additions_objc", 1089 ":base_objc", 1090 ":callback_logger_objc", 1091 ":framework_objc", 1092 ":mediaconstraints_objc", 1093 ":native_api", 1094 ":native_api_audio_device_module", 1095 ":native_video", 1096 ":peerconnectionfactory_base_objc", 1097 ":video_objc", 1098 ":video_toolbox_cc", 1099 ":videocapture_objc", 1100 ":videocodec_objc", 1101 ":videoframebuffer_objc", 1102 ":videosource_objc", 1103 ":videotoolbox_objc", 1104 "../api:scoped_refptr", 1105 "../api/task_queue:default_task_queue_factory", 1106 "../api/video:video_frame_i420", 1107 "../common_video", 1108 "../media:rtc_media_base", 1109 "../media:rtc_media_tests_utils", 1110 "../modules:module_api", 1111 "../rtc_base", 1112 "../rtc_base:gunit_helpers", 1113 "../system_wrappers", 1114 "//third_party/libyuv", 1115 ] 1116 1117 if (rtc_use_metal_rendering) { 1118 sources += [ "objc/unittests/RTCMTLVideoView_xctest.m" ] 1119 deps += [ ":metal_objc" ] 1120 } 1121 1122 public_deps = [ 1123 "//build/config/ios:xctest", 1124 "//third_party/ocmock", 1125 ] 1126 } 1127 1128 bundle_data("sdk_unittests_bundle_data") { 1129 sources = [ 1130 "objc/unittests/audio_short16.pcm", 1131 "objc/unittests/audio_short44.pcm", 1132 "objc/unittests/audio_short48.pcm", 1133 1134 # Sample video taken from https://media.xiph.org/video/derf/ 1135 "objc/unittests/foreman.mp4", 1136 ] 1137 outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] 1138 } 1139 1140 # These tests use static linking. 1141 rtc_ios_xctest_test("sdk_unittests") { 1142 info_plist = "//test/ios/Info.plist" 1143 sources = [ "objc/unittests/main.mm" ] 1144 1145 extra_substitutions = [ "GTEST_BUNDLE_ID_SUFFIX=generic-unit-test" ] 1146 deps = [ 1147 ":peerconnectionfactory_base_objc", 1148 ":sdk_unittests_bundle_data", 1149 ":sdk_unittests_sources", 1150 "../rtc_base", 1151 "//test:test_support", 1152 ] 1153 ldflags = [ "-all_load" ] 1154 } 1155 1156 # These tests link to the framework. 1157 rtc_ios_xctest_test("sdk_framework_unittests") { 1158 info_plist = "//test/ios/Info.plist" 1159 sources = [ 1160 "objc/unittests/RTCDoNotPutCPlusPlusInFrameworkHeaders_xctest.m", 1161 "objc/unittests/main.mm", 1162 ] 1163 1164 extra_substitutions = [ "GTEST_BUNDLE_ID_SUFFIX=generic-unit-test" ] 1165 deps = [ 1166 ":framework_objc+link", 1167 ":ios_framework_bundle", 1168 "../rtc_base", 1169 "//test:test_support", 1170 ] 1171 } 1172 } 1173 1174 # TODO(denicija): once all tests are migrated to xctest remove this source set. 1175 rtc_library("rtc_unittests_objc") { 1176 testonly = true 1177 1178 sources = [ 1179 "objc/unittests/RTCCertificateTest.mm", 1180 "objc/unittests/RTCConfigurationTest.mm", 1181 "objc/unittests/RTCDataChannelConfigurationTest.mm", 1182 "objc/unittests/RTCIceCandidateTest.mm", 1183 "objc/unittests/RTCIceServerTest.mm", 1184 "objc/unittests/RTCMediaConstraintsTest.mm", 1185 "objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm", 1186 "objc/unittests/RTCPeerConnectionTest.mm", 1187 "objc/unittests/RTCSessionDescriptionTest.mm", 1188 "objc/unittests/RTCTracingTest.mm", 1189 "objc/unittests/objc_video_decoder_factory_tests.mm", 1190 "objc/unittests/objc_video_encoder_factory_tests.mm", 1191 "objc/unittests/scoped_cftyperef_tests.mm", 1192 ] 1193 if (is_ios) { 1194 sources += [ "objc/unittests/RTCCameraVideoCapturerTests.mm" ] 1195 } 1196 1197 # |-ObjC| flag needed to make sure category method implementations 1198 # are included: 1199 # https://developer.apple.com/library/mac/qa/qa1490/_index.html 1200 ldflags = [ "-ObjC" ] 1201 1202 deps = [ 1203 ":base_objc", 1204 ":helpers_objc", 1205 ":mediaconstraints_objc", 1206 ":native_api", 1207 ":native_video", 1208 ":peerconnectionfactory_base_objc", 1209 ":video_objc", 1210 ":videocapture_objc", 1211 ":videocodec_objc", 1212 ":videoframebuffer_objc", 1213 ":videosource_objc", 1214 ":videotoolbox_objc", 1215 "../api:libjingle_peerconnection_api", 1216 "../api/audio_codecs:audio_codecs_api", 1217 "../api/audio_codecs:builtin_audio_decoder_factory", 1218 "../api/audio_codecs:builtin_audio_encoder_factory", 1219 "../api/video_codecs:video_codecs_api", 1220 "../media:rtc_media_base", 1221 "../modules:module_api", 1222 "../modules/audio_device:audio_device_api", 1223 "../modules/audio_processing", 1224 "../modules/audio_processing:api", 1225 "../modules/video_coding:video_codec_interface", 1226 "../rtc_base:gunit_helpers", 1227 "../rtc_base/system:unused", 1228 "../test:test_support", 1229 "//third_party/ocmock", 1230 ] 1231 1232 if (is_ios) { 1233 sources += [ "objc/unittests/RTCAudioSessionTest.mm" ] 1234 deps += [ ":audio_session_objc" ] 1235 } 1236 } 1237 } 1238 1239 if (is_ios) { 1240 ios_framework_bundle_with_umbrella_header("framework_objc") { 1241 info_plist = "objc/Info.plist" 1242 output_name = "WebRTC" 1243 1244 common_objc_headers = [ 1245 "objc/base/RTCCodecSpecificInfo.h", 1246 "objc/base/RTCEncodedImage.h", 1247 "objc/base/RTCI420Buffer.h", 1248 "objc/base/RTCLogging.h", 1249 "objc/base/RTCMacros.h", 1250 "objc/base/RTCMutableI420Buffer.h", 1251 "objc/base/RTCMutableYUVPlanarBuffer.h", 1252 "objc/base/RTCRtpFragmentationHeader.h", 1253 "objc/base/RTCVideoCapturer.h", 1254 "objc/base/RTCVideoCodecInfo.h", 1255 "objc/base/RTCVideoDecoder.h", 1256 "objc/base/RTCVideoDecoderFactory.h", 1257 "objc/base/RTCVideoEncoder.h", 1258 "objc/base/RTCVideoEncoderFactory.h", 1259 "objc/base/RTCVideoEncoderQpThresholds.h", 1260 "objc/base/RTCVideoEncoderSettings.h", 1261 "objc/base/RTCVideoFrame.h", 1262 "objc/base/RTCVideoFrameBuffer.h", 1263 "objc/base/RTCVideoRenderer.h", 1264 "objc/base/RTCYUVPlanarBuffer.h", 1265 "objc/components/audio/RTCAudioSession.h", 1266 "objc/components/audio/RTCAudioSessionConfiguration.h", 1267 "objc/components/capturer/RTCCameraVideoCapturer.h", 1268 "objc/components/capturer/RTCFileVideoCapturer.h", 1269 "objc/components/renderer/metal/RTCMTLVideoView.h", 1270 "objc/components/renderer/opengl/RTCEAGLVideoView.h", 1271 "objc/components/renderer/opengl/RTCVideoViewShading.h", 1272 "objc/components/video_codec/RTCCodecSpecificInfoH264.h", 1273 "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h", 1274 "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h", 1275 "objc/components/video_codec/RTCH264ProfileLevelId.h", 1276 "objc/components/video_codec/RTCVideoDecoderFactoryH264.h", 1277 "objc/components/video_codec/RTCVideoDecoderH264.h", 1278 "objc/components/video_codec/RTCVideoEncoderFactoryH264.h", 1279 "objc/components/video_codec/RTCVideoEncoderH264.h", 1280 "objc/components/video_frame_buffer/RTCCVPixelBuffer.h", 1281 "objc/helpers/RTCCameraPreviewView.h", 1282 "objc/helpers/RTCDispatcher.h", 1283 "objc/helpers/UIDevice+RTCDevice.h", 1284 "objc/api/peerconnection/RTCAudioSource.h", 1285 "objc/api/peerconnection/RTCAudioTrack.h", 1286 "objc/api/peerconnection/RTCConfiguration.h", 1287 "objc/api/peerconnection/RTCDataChannel.h", 1288 "objc/api/peerconnection/RTCDataChannelConfiguration.h", 1289 "objc/api/peerconnection/RTCFieldTrials.h", 1290 "objc/api/peerconnection/RTCIceCandidate.h", 1291 "objc/api/peerconnection/RTCIceServer.h", 1292 "objc/api/peerconnection/RTCLegacyStatsReport.h", 1293 "objc/api/peerconnection/RTCMediaConstraints.h", 1294 "objc/api/peerconnection/RTCMediaSource.h", 1295 "objc/api/peerconnection/RTCMediaStream.h", 1296 "objc/api/peerconnection/RTCMediaStreamTrack.h", 1297 "objc/api/peerconnection/RTCMetrics.h", 1298 "objc/api/peerconnection/RTCMetricsSampleInfo.h", 1299 "objc/api/peerconnection/RTCPeerConnection.h", 1300 "objc/api/peerconnection/RTCPeerConnectionFactory.h", 1301 "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h", 1302 "objc/api/peerconnection/RTCRtcpParameters.h", 1303 "objc/api/peerconnection/RTCRtpCodecParameters.h", 1304 "objc/api/peerconnection/RTCRtpEncodingParameters.h", 1305 "objc/api/peerconnection/RTCRtpHeaderExtension.h", 1306 "objc/api/peerconnection/RTCRtpParameters.h", 1307 "objc/api/peerconnection/RTCRtpReceiver.h", 1308 "objc/api/peerconnection/RTCRtpSender.h", 1309 "objc/api/peerconnection/RTCRtpTransceiver.h", 1310 "objc/api/peerconnection/RTCDtmfSender.h", 1311 "objc/api/peerconnection/RTCSSLAdapter.h", 1312 "objc/api/peerconnection/RTCSessionDescription.h", 1313 "objc/api/peerconnection/RTCStatisticsReport.h", 1314 "objc/api/peerconnection/RTCTracing.h", 1315 "objc/api/peerconnection/RTCCertificate.h", 1316 "objc/api/peerconnection/RTCCryptoOptions.h", 1317 "objc/api/peerconnection/RTCVideoSource.h", 1318 "objc/api/peerconnection/RTCVideoTrack.h", 1319 "objc/api/video_codec/RTCVideoCodecConstants.h", 1320 "objc/api/video_codec/RTCVideoDecoderVP8.h", 1321 "objc/api/video_codec/RTCVideoDecoderVP9.h", 1322 "objc/api/video_codec/RTCVideoEncoderVP8.h", 1323 "objc/api/video_codec/RTCVideoEncoderVP9.h", 1324 "objc/api/video_frame_buffer/RTCNativeI420Buffer.h", 1325 "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h", 1326 ] 1327 1328 if (!build_with_chromium) { 1329 common_objc_headers += [ 1330 "objc/api/logging/RTCCallbackLogger.h", 1331 "objc/api/peerconnection/RTCFileLogger.h", 1332 ] 1333 } 1334 1335 sources = common_objc_headers 1336 public_headers = common_objc_headers 1337 1338 ldflags = [ 1339 "-all_load", 1340 "-install_name", 1341 "@rpath/$output_name.framework/$output_name", 1342 ] 1343 1344 deps = [ 1345 ":audio_objc", 1346 ":base_objc", 1347 ":default_codec_factory_objc", 1348 ":native_api", 1349 ":native_video", 1350 ":peerconnectionfactory_base_objc", 1351 ":ui_objc", 1352 ":videocapture_objc", 1353 ":videocodec_objc", 1354 ":videotoolbox_objc", 1355 "../rtc_base:rtc_base_approved", 1356 ] 1357 if (rtc_use_metal_rendering) { 1358 deps += [ ":metal_objc" ] 1359 } 1360 if (!build_with_chromium) { 1361 deps += [ 1362 ":callback_logger_objc", 1363 ":file_logger_objc", 1364 ] 1365 } 1366 1367 frameworks = [ 1368 "AVFoundation.framework", 1369 "CoreGraphics.framework", 1370 "CoreMedia.framework", 1371 "GLKit.framework", 1372 ] 1373 1374 configs += [ 1375 "..:common_objc", 1376 ":used_from_extension", 1377 ] 1378 1379 public_configs = [ ":common_config_objc" ] 1380 } 1381 1382 bundle_data("ios_framework_bundle") { 1383 deps = [ "../sdk:framework_objc" ] 1384 sources = [ "$root_build_dir/WebRTC.framework" ] 1385 outputs = [ "{{bundle_resources_dir}}/Frameworks/{{source_file_part}}" ] 1386 } 1387 } 1388 1389 if (is_mac) { 1390 mac_framework_bundle_with_umbrella_header("mac_framework_objc") { 1391 info_plist = "objc/Info.plist" 1392 output_name = "WebRTC" 1393 1394 sources = [ 1395 "objc/api/peerconnection/RTCAudioSource.h", 1396 "objc/api/peerconnection/RTCAudioTrack.h", 1397 "objc/api/peerconnection/RTCCertificate.h", 1398 "objc/api/peerconnection/RTCConfiguration.h", 1399 "objc/api/peerconnection/RTCCryptoOptions.h", 1400 "objc/api/peerconnection/RTCDataChannel.h", 1401 "objc/api/peerconnection/RTCDataChannelConfiguration.h", 1402 "objc/api/peerconnection/RTCDtmfSender.h", 1403 "objc/api/peerconnection/RTCFieldTrials.h", 1404 "objc/api/peerconnection/RTCIceCandidate.h", 1405 "objc/api/peerconnection/RTCIceServer.h", 1406 "objc/api/peerconnection/RTCLegacyStatsReport.h", 1407 "objc/api/peerconnection/RTCMediaConstraints.h", 1408 "objc/api/peerconnection/RTCMediaSource.h", 1409 "objc/api/peerconnection/RTCMediaStream.h", 1410 "objc/api/peerconnection/RTCMediaStreamTrack.h", 1411 "objc/api/peerconnection/RTCMetrics.h", 1412 "objc/api/peerconnection/RTCMetricsSampleInfo.h", 1413 "objc/api/peerconnection/RTCPeerConnection.h", 1414 "objc/api/peerconnection/RTCPeerConnectionFactory.h", 1415 "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h", 1416 "objc/api/peerconnection/RTCRtcpParameters.h", 1417 "objc/api/peerconnection/RTCRtpCodecParameters.h", 1418 "objc/api/peerconnection/RTCRtpEncodingParameters.h", 1419 "objc/api/peerconnection/RTCRtpHeaderExtension.h", 1420 "objc/api/peerconnection/RTCRtpParameters.h", 1421 "objc/api/peerconnection/RTCRtpReceiver.h", 1422 "objc/api/peerconnection/RTCRtpSender.h", 1423 "objc/api/peerconnection/RTCRtpTransceiver.h", 1424 "objc/api/peerconnection/RTCSSLAdapter.h", 1425 "objc/api/peerconnection/RTCSessionDescription.h", 1426 "objc/api/peerconnection/RTCTracing.h", 1427 "objc/api/peerconnection/RTCVideoSource.h", 1428 "objc/api/peerconnection/RTCVideoTrack.h", 1429 "objc/api/video_codec/RTCVideoDecoderVP8.h", 1430 "objc/api/video_codec/RTCVideoDecoderVP9.h", 1431 "objc/api/video_codec/RTCVideoEncoderVP8.h", 1432 "objc/api/video_codec/RTCVideoEncoderVP9.h", 1433 "objc/api/video_frame_buffer/RTCNativeI420Buffer.h", 1434 "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h", 1435 "objc/base/RTCCodecSpecificInfo.h", 1436 "objc/base/RTCEncodedImage.h", 1437 "objc/base/RTCI420Buffer.h", 1438 "objc/base/RTCLogging.h", 1439 "objc/base/RTCMacros.h", 1440 "objc/base/RTCMutableI420Buffer.h", 1441 "objc/base/RTCMutableYUVPlanarBuffer.h", 1442 "objc/base/RTCRtpFragmentationHeader.h", 1443 "objc/base/RTCVideoCapturer.h", 1444 "objc/base/RTCVideoCodecInfo.h", 1445 "objc/base/RTCVideoDecoder.h", 1446 "objc/base/RTCVideoDecoderFactory.h", 1447 "objc/base/RTCVideoEncoder.h", 1448 "objc/base/RTCVideoEncoderFactory.h", 1449 "objc/base/RTCVideoEncoderQpThresholds.h", 1450 "objc/base/RTCVideoEncoderSettings.h", 1451 "objc/base/RTCVideoFrame.h", 1452 "objc/base/RTCVideoFrameBuffer.h", 1453 "objc/base/RTCVideoRenderer.h", 1454 "objc/base/RTCYUVPlanarBuffer.h", 1455 "objc/components/capturer/RTCCameraVideoCapturer.h", 1456 "objc/components/capturer/RTCFileVideoCapturer.h", 1457 "objc/components/renderer/metal/RTCMTLNSVideoView.h", 1458 "objc/components/renderer/opengl/RTCNSGLVideoView.h", 1459 "objc/components/renderer/opengl/RTCVideoViewShading.h", 1460 "objc/components/video_codec/RTCCodecSpecificInfoH264.h", 1461 "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h", 1462 "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h", 1463 "objc/components/video_codec/RTCH264ProfileLevelId.h", 1464 "objc/components/video_codec/RTCVideoDecoderFactoryH264.h", 1465 "objc/components/video_codec/RTCVideoDecoderH264.h", 1466 "objc/components/video_codec/RTCVideoEncoderFactoryH264.h", 1467 "objc/components/video_codec/RTCVideoEncoderH264.h", 1468 "objc/components/video_frame_buffer/RTCCVPixelBuffer.h", 1469 "objc/helpers/RTCDispatcher.h", 1470 ] 1471 if (!build_with_chromium) { 1472 sources += [ 1473 "objc/api/logging/RTCCallbackLogger.h", 1474 "objc/api/peerconnection/RTCFileLogger.h", 1475 ] 1476 } 1477 1478 deps = [ 1479 ":base_objc", 1480 ":default_codec_factory_objc", 1481 ":native_api", 1482 ":native_video", 1483 ":peerconnectionfactory_base_objc", 1484 ":ui_objc", 1485 ":videocapture_objc", 1486 ":videocodec_objc", 1487 ":videotoolbox_objc", 1488 "../rtc_base:rtc_base_approved", 1489 ] 1490 if (rtc_use_metal_rendering) { 1491 deps += [ ":metal_objc" ] 1492 } 1493 if (!build_with_chromium) { 1494 deps += [ 1495 ":callback_logger_objc", 1496 ":file_logger_objc", 1497 ] 1498 } 1499 1500 frameworks = [ 1501 "AVFoundation.framework", 1502 "CoreGraphics.framework", 1503 "CoreMedia.framework", 1504 "OpenGL.framework", 1505 ] 1506 1507 configs = [ "..:common_objc" ] 1508 1509 public_configs = [ ":common_config_objc" ] 1510 } 1511 1512 bundle_data("mac_framework_bundle") { 1513 deps = [ "../sdk:mac_framework_objc" ] 1514 sources = [ "$root_build_dir/WebRTC.framework" ] 1515 outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}" ] 1516 } 1517 } 1518 1519 rtc_library("wrapped_native_codec_objc") { 1520 sources = [ 1521 "objc/api/video_codec/RTCWrappedNativeVideoDecoder.h", 1522 "objc/api/video_codec/RTCWrappedNativeVideoDecoder.mm", 1523 "objc/api/video_codec/RTCWrappedNativeVideoEncoder.h", 1524 "objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm", 1525 ] 1526 1527 configs += [ "..:common_objc" ] 1528 public_configs = [ ":common_config_objc" ] 1529 1530 deps = [ 1531 ":base_objc", 1532 ":helpers_objc", 1533 "../api/video_codecs:video_codecs_api", 1534 "../media:rtc_media_base", 1535 ] 1536 } 1537 1538 # The native API is currently experimental and may change without notice. 1539 rtc_library("native_api") { 1540 visibility = [ "*" ] 1541 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 1542 sources = [ 1543 "objc/native/api/video_capturer.h", 1544 "objc/native/api/video_capturer.mm", 1545 "objc/native/api/video_decoder_factory.h", 1546 "objc/native/api/video_decoder_factory.mm", 1547 "objc/native/api/video_encoder_factory.h", 1548 "objc/native/api/video_encoder_factory.mm", 1549 "objc/native/api/video_frame.h", 1550 "objc/native/api/video_frame.mm", 1551 "objc/native/api/video_frame_buffer.h", 1552 "objc/native/api/video_frame_buffer.mm", 1553 "objc/native/api/video_renderer.h", 1554 "objc/native/api/video_renderer.mm", 1555 ] 1556 1557 configs += [ "..:common_objc" ] 1558 1559 public_configs = [ ":common_config_objc" ] 1560 1561 deps = [ 1562 ":base_objc", 1563 ":native_video", 1564 ":videoframebuffer_objc", 1565 "../api:libjingle_peerconnection_api", 1566 "../api:media_stream_interface", 1567 "../api:scoped_refptr", 1568 "../api/video:video_frame", 1569 "../api/video:video_rtp_headers", 1570 "../api/video_codecs:video_codecs_api", 1571 "../common_video", 1572 "../rtc_base", 1573 ] 1574 absl_deps = [ "//third_party/abseil-cpp/absl/memory" ] 1575 } 1576 1577 rtc_library("native_video") { 1578 sources = [ 1579 "objc/native/src/objc_frame_buffer.h", 1580 "objc/native/src/objc_frame_buffer.mm", 1581 "objc/native/src/objc_video_decoder_factory.h", 1582 "objc/native/src/objc_video_decoder_factory.mm", 1583 "objc/native/src/objc_video_encoder_factory.h", 1584 "objc/native/src/objc_video_encoder_factory.mm", 1585 "objc/native/src/objc_video_frame.h", 1586 "objc/native/src/objc_video_frame.mm", 1587 "objc/native/src/objc_video_renderer.h", 1588 "objc/native/src/objc_video_renderer.mm", 1589 "objc/native/src/objc_video_track_source.h", 1590 "objc/native/src/objc_video_track_source.mm", 1591 ] 1592 1593 configs += [ "..:common_objc" ] 1594 1595 public_configs = [ ":common_config_objc" ] 1596 1597 deps = [ 1598 ":base_native_additions_objc", 1599 ":base_objc", 1600 ":helpers_objc", 1601 ":videocodec_objc", 1602 ":videoframebuffer_objc", 1603 ":vpx_codec_constants", 1604 ":wrapped_native_codec_objc", 1605 "../api/video:video_frame", 1606 "../api/video:video_frame_i420", 1607 "../api/video:video_rtp_headers", 1608 "../api/video_codecs:video_codecs_api", 1609 "../common_video", 1610 "../media:rtc_audio_video", 1611 "../media:rtc_media_base", 1612 "../modules:module_api", 1613 "../modules/video_coding:video_codec_interface", 1614 "../rtc_base", 1615 "../rtc_base:checks", 1616 ] 1617 } 1618 1619 rtc_library("video_toolbox_cc") { 1620 visibility = [ 1621 ":videotoolbox_objc", 1622 ":sdk_unittests_sources", 1623 ] 1624 sources = [ 1625 "objc/components/video_codec/helpers.cc", 1626 "objc/components/video_codec/helpers.h", 1627 "objc/components/video_codec/nalu_rewriter.cc", 1628 "objc/components/video_codec/nalu_rewriter.h", 1629 ] 1630 deps = [ 1631 "../common_video", 1632 "../modules:module_api", 1633 "../modules/video_coding:webrtc_h264", 1634 "../rtc_base:checks", 1635 "../rtc_base:rtc_base_approved", 1636 ] 1637 } 1638 1639 rtc_library("videotoolbox_objc") { 1640 visibility = [ "*" ] 1641 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 1642 sources = [ 1643 "objc/components/video_codec/RTCVideoDecoderFactoryH264.h", 1644 "objc/components/video_codec/RTCVideoDecoderFactoryH264.m", 1645 "objc/components/video_codec/RTCVideoDecoderH264.h", 1646 "objc/components/video_codec/RTCVideoDecoderH264.mm", 1647 "objc/components/video_codec/RTCVideoEncoderFactoryH264.h", 1648 "objc/components/video_codec/RTCVideoEncoderFactoryH264.m", 1649 "objc/components/video_codec/RTCVideoEncoderH264.h", 1650 "objc/components/video_codec/RTCVideoEncoderH264.mm", 1651 ] 1652 1653 configs += [ 1654 "..:common_objc", 1655 ":used_from_extension", 1656 ] 1657 1658 if (is_ios && rtc_apprtcmobile_broadcast_extension) { 1659 defines = [ "RTC_APPRTCMOBILE_BROADCAST_EXTENSION" ] 1660 } 1661 1662 deps = [ 1663 ":base_native_additions_objc", 1664 ":base_objc", 1665 ":helpers_objc", 1666 ":video_toolbox_cc", 1667 ":videocodec_objc", 1668 ":videoframebuffer_objc", 1669 "../common_video", 1670 "../modules:module_api", 1671 "../modules/video_coding:video_codec_interface", 1672 "../rtc_base:checks", 1673 "../rtc_base:rtc_base_approved", 1674 "//third_party/libyuv", 1675 ] 1676 1677 frameworks = [ 1678 "CoreFoundation.framework", 1679 "CoreMedia.framework", 1680 "CoreVideo.framework", 1681 "VideoToolbox.framework", 1682 ] 1683 } 1684 } 1685} 1686