# Copyright 2016 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("//third_party/libaom/options.gni")
import("../webrtc.gni")
if (is_ios) {
  import("//build/config/ios/ios_sdk.gni")
  import("//build/config/ios/rules.gni")
}
if (is_mac) {
  import("//build/config/mac/rules.gni")
}

group("sdk") {
  public_deps = []
  if (!build_with_chromium) {
    if (is_android) {
      public_deps += [ "android" ]
    }
    if (is_ios) {
      public_deps += [ ":framework_objc" ]
    }
  }
}

rtc_library("media_constraints") {
  sources = [
    "media_constraints.cc",
    "media_constraints.h",
  ]
  deps = [
    "../api:audio_options_api",
    "../api:libjingle_peerconnection_api",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

rtc_library("sdk_tests") {
  testonly = true
  sources = [ "media_constraints_unittest.cc" ]
  deps = [
    ":media_constraints",
    "../test:test_support",
  ]
}

if (is_ios || is_mac) {
  config("common_config_objc") {
    include_dirs = [
      "objc",

      # This is needed so that framework headers can include base headers
      # without pathname (so it works from within the framework module).
      "objc/base",
    ]
    cflags = [
      "-Wimplicit-retain-self",
      "-Wstrict-overflow",
      "-Wmissing-field-initializers",
    ]

    if (use_clang_coverage) {
      configs = [ "//build/config/coverage:default_coverage" ]
    }
  }

  config("used_from_extension") {
    if (is_ios && rtc_apprtcmobile_broadcast_extension) {
      cflags = [ "-fapplication-extension" ]
    }
  }

  # TODO(bugs.webrtc.org/9627): Remove this when unused. Targets should depend on base_objc
  # or helpers_objc directly instead.
  rtc_library("common_objc") {
    visibility = [ "*" ]

    sources = [ "objc/helpers/noop.mm" ]

    public_configs = [ ":common_config_objc" ]

    deps = [
      ":base_objc",
      ":helpers_objc",
    ]
  }

  rtc_library("base_objc") {
    visibility = [ "*" ]
    sources = [
      "objc/base/RTCCodecSpecificInfo.h",
      "objc/base/RTCEncodedImage.h",
      "objc/base/RTCEncodedImage.m",
      "objc/base/RTCI420Buffer.h",
      "objc/base/RTCLogging.h",
      "objc/base/RTCLogging.mm",
      "objc/base/RTCMacros.h",
      "objc/base/RTCMutableI420Buffer.h",
      "objc/base/RTCMutableYUVPlanarBuffer.h",
      "objc/base/RTCSSLCertificateVerifier.h",
      "objc/base/RTCVideoCapturer.h",
      "objc/base/RTCVideoCapturer.m",
      "objc/base/RTCVideoCodecInfo.h",
      "objc/base/RTCVideoCodecInfo.m",
      "objc/base/RTCVideoDecoder.h",
      "objc/base/RTCVideoDecoderFactory.h",
      "objc/base/RTCVideoEncoder.h",
      "objc/base/RTCVideoEncoderFactory.h",
      "objc/base/RTCVideoEncoderQpThresholds.h",
      "objc/base/RTCVideoEncoderQpThresholds.m",
      "objc/base/RTCVideoEncoderSettings.h",
      "objc/base/RTCVideoEncoderSettings.m",
      "objc/base/RTCVideoFrame.h",
      "objc/base/RTCVideoFrame.mm",
      "objc/base/RTCVideoFrameBuffer.h",
      "objc/base/RTCVideoRenderer.h",
      "objc/base/RTCYUVPlanarBuffer.h",
    ]

    deps = [
      "../rtc_base:checks",
      "../rtc_base:logging",
    ]
    configs += [
      "..:common_objc",
      ":used_from_extension",
    ]

    public_configs = [ ":common_config_objc" ]
  }

  rtc_library("helpers_objc") {
    sources = [
      "objc/helpers/AVCaptureSession+DevicePosition.h",
      "objc/helpers/AVCaptureSession+DevicePosition.mm",
      "objc/helpers/NSString+StdString.h",
      "objc/helpers/NSString+StdString.mm",
      "objc/helpers/RTCDispatcher+Private.h",
      "objc/helpers/RTCDispatcher.h",
      "objc/helpers/RTCDispatcher.m",
      "objc/helpers/scoped_cftyperef.h",
    ]

    deps = [
      ":base_objc",
      "../rtc_base:checks",
      "//third_party/abseil-cpp/absl/strings:string_view",
    ]

    frameworks = [
      "AVFoundation.framework",
      "CoreMedia.framework",
      "Foundation.framework",
    ]

    configs += [
      "..:common_objc",
      ":used_from_extension",
    ]

    public_configs = [ ":common_config_objc" ]

    if (is_ios) {
      sources += [
        "objc/helpers/RTCCameraPreviewView.h",
        "objc/helpers/RTCCameraPreviewView.m",
        "objc/helpers/UIDevice+RTCDevice.h",
        "objc/helpers/UIDevice+RTCDevice.mm",
      ]
      frameworks += [ "UIKit.framework" ]
    }
  }

  if (!build_with_chromium) {
    rtc_library("callback_logger_objc") {
      sources = [
        "objc/api/logging/RTCCallbackLogger.h",
        "objc/api/logging/RTCCallbackLogger.mm",
      ]

      deps = [
        ":base_objc",
        ":helpers_objc",
        "../rtc_base:checks",
        "../rtc_base:log_sinks",
        "../rtc_base:logging",
        "//third_party/abseil-cpp/absl/strings:string_view",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }

    rtc_library("file_logger_objc") {
      sources = [
        "objc/api/peerconnection/RTCFileLogger.h",
        "objc/api/peerconnection/RTCFileLogger.mm",
      ]

      deps = [
        ":base_objc",
        "../rtc_base:checks",
        "../rtc_base:file_rotating_stream",
        "../rtc_base:log_sinks",
        "../rtc_base:logging",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }
  }

  if (!build_with_chromium) {
    if (is_ios) {
      rtc_library("native_api_audio_device_module") {
        visibility = [ "*" ]

        sources = [
          "objc/native/api/audio_device_module.h",
          "objc/native/api/audio_device_module.mm",
        ]

        deps = [
          ":audio_device",
          "../api:make_ref_counted",
          "../api/audio:audio_device",
          "../modules/audio_device:audio_device_generic",
          "../rtc_base:checks",
          "../rtc_base:logging",
          "../system_wrappers",
        ]
      }

      rtc_source_set("audio_session_observer") {
        visibility = [ ":*" ]

        sources = [ "objc/native/src/audio/audio_session_observer.h" ]

        deps = [ "../rtc_base:threading" ]
      }

      rtc_library("opengl_ui_objc") {
        visibility = [ "*" ]
        allow_poison = [
          "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
          "environment_construction",
        ]
        sources = [
          "objc/components/renderer/opengl/RTCDisplayLinkTimer.h",
          "objc/components/renderer/opengl/RTCDisplayLinkTimer.m",
          "objc/components/renderer/opengl/RTCEAGLVideoView.h",
          "objc/components/renderer/opengl/RTCEAGLVideoView.m",
        ]

        # TODO(bugs.webrtc.org/12937): Remove OpenGL deprecation warning
        # workaround.
        defines = [ "GLES_SILENCE_DEPRECATION" ]
        configs += [ "..:common_objc" ]
        deps = [
          ":base_objc",
          ":helpers_objc",
          ":metal_objc",
          ":opengl_objc",
          ":videocapture_objc",
          ":videoframebuffer_objc",
        ]
      }

      rtc_library("audio_device") {
        visibility = [ "*" ]

        sources = [
          "objc/native/src/audio/audio_device_ios.h",
          "objc/native/src/audio/audio_device_ios.mm",
          "objc/native/src/audio/audio_device_module_ios.h",
          "objc/native/src/audio/audio_device_module_ios.mm",
          "objc/native/src/audio/helpers.h",
          "objc/native/src/audio/helpers.mm",
          "objc/native/src/audio/voice_processing_audio_unit.h",
          "objc/native/src/audio/voice_processing_audio_unit.mm",
        ]

        deps = [
          ":audio_objc",
          ":audio_session_observer",
          ":base_objc",
          "../api:array_view",
          "../api:scoped_refptr",
          "../api:sequence_checker",
          "../api/audio:audio_device",
          "../api/task_queue",
          "../api/task_queue:default_task_queue_factory",
          "../api/task_queue:pending_task_safety_flag",
          "../modules/audio_device:audio_device_buffer",
          "../modules/audio_device:audio_device_config",
          "../modules/audio_device:audio_device_generic",
          "../rtc_base:buffer",
          "../rtc_base:checks",
          "../rtc_base:logging",
          "../rtc_base:macromagic",
          "../rtc_base:refcount",
          "../rtc_base:threading",
          "../rtc_base:timeutils",
          "../system_wrappers:field_trial",
          "../system_wrappers:metrics",
        ]

        frameworks = [ "AudioToolbox.framework" ]
        if (is_mac) {
          frameworks += [ "AudioUnit.framework" ]
        }
      }

      # This target exists to expose :audio_session_objc and
      # :audio_session_delegate_adapter_objc for backward compatibility,
      # and should be deprecated.
      group("audio_objc") {
        public_deps = [  # no-presubmit-check TODO(webrtc:11238)
          ":audio_session_delegate_adapter_objc",
          ":audio_session_objc",
        ]
      }

      rtc_library("audio_session_delegate_adapter_objc") {
        sources = [
          "objc/components/audio/RTCNativeAudioSessionDelegateAdapter.h",
          "objc/components/audio/RTCNativeAudioSessionDelegateAdapter.mm",
        ]

        configs += [
          "..:common_objc",
          ":used_from_extension",
        ]

        public_configs = [ ":common_config_objc" ]

        deps = [
          ":audio_session_objc",
          ":audio_session_observer",
          ":base_objc",
        ]
      }

      rtc_library("audio_session_objc") {
        visibility = [ "*" ]

        sources = [
          "objc/components/audio/RTCAudioSession+Configuration.mm",
          "objc/components/audio/RTCAudioSession+Private.h",
          "objc/components/audio/RTCAudioSession.h",
          "objc/components/audio/RTCAudioSession.mm",
          "objc/components/audio/RTCAudioSessionConfiguration.h",
          "objc/components/audio/RTCAudioSessionConfiguration.m",
        ]

        configs += [
          "..:common_objc",
          ":used_from_extension",
        ]

        public_configs = [ ":common_config_objc" ]

        frameworks = [ "AVFoundation.framework" ]

        deps = [
          ":base_objc",
          ":helpers_objc",
          "../rtc_base:checks",
          "../rtc_base/synchronization:mutex",
          "//third_party/abseil-cpp/absl/base:core_headers",
        ]
      }

      rtc_source_set("network_monitor_observer") {
        visibility = [ ":*" ]

        sources = [ "objc/native/src/network_monitor_observer.h" ]

        deps = [
          "../rtc_base:network_constants",
          "../rtc_base:stringutils",
          "../rtc_base:threading",
          "//third_party/abseil-cpp/absl/strings:string_view",
        ]
      }

      rtc_library("network_monitor_objc") {
        visibility = [ "*" ]

        sources = [
          "objc/components/network/RTCNetworkMonitor+Private.h",
          "objc/components/network/RTCNetworkMonitor.h",
          "objc/components/network/RTCNetworkMonitor.mm",
        ]

        configs += [ ":used_from_extension" ]

        frameworks = [ "Network.framework" ]

        deps = [
          ":base_objc",
          ":helpers_objc",
          ":network_monitor_observer",
          "../rtc_base:stringutils",
          "../rtc_base/system:gcd_helpers",
        ]
      }

      rtc_library("opengl_objc") {
        sources = [
          "objc/components/renderer/opengl/RTCDefaultShader.h",
          "objc/components/renderer/opengl/RTCDefaultShader.mm",
          "objc/components/renderer/opengl/RTCI420TextureCache.h",
          "objc/components/renderer/opengl/RTCI420TextureCache.mm",
          "objc/components/renderer/opengl/RTCNV12TextureCache.h",
          "objc/components/renderer/opengl/RTCNV12TextureCache.m",
          "objc/components/renderer/opengl/RTCOpenGLDefines.h",
          "objc/components/renderer/opengl/RTCShader.h",
          "objc/components/renderer/opengl/RTCShader.mm",
          "objc/components/renderer/opengl/RTCVideoViewShading.h",
        ]
        frameworks = [
          "CoreVideo.framework",
          "GLKit.framework",
          "OpenGLES.framework",
          "QuartzCore.framework",
        ]

        # TODO(bugs.webrtc.org/12937): Remove OpenGL deprecation warning
        # workaround.
        defines = [ "GLES_SILENCE_DEPRECATION" ]

        deps = [
          ":base_objc",
          ":helpers_objc",
          ":mediaconstraints_objc",
          ":native_video",
          ":videoframebuffer_objc",
          ":videosource_objc",
          "../api:libjingle_peerconnection_api",
          "../api/video:video_frame",
          "../api/video:video_rtp_headers",
          "../common_video",
          "../media:rtc_media_base",
          "../rtc_base:checks",
          "../rtc_base:logging",
          "//third_party/abseil-cpp/absl/types:optional",
        ]

        configs += [
          "..:common_objc",
          ":used_from_extension",
        ]
      }
    }

    rtc_source_set("audio_device_api_objc") {
      visibility = [ "*" ]

      sources = [ "objc/components/audio/RTCAudioDevice.h" ]

      public_configs = [ ":common_config_objc" ]

      frameworks = [ "AudioToolbox.framework" ]

      deps = [ ":base_objc" ]
    }

    rtc_library("audio_device_objc") {
      visibility = [ "*" ]
      allow_poison = [ "environment_construction" ]
      sources = [
        "objc/native/src/objc_audio_device.h",
        "objc/native/src/objc_audio_device.mm",
        "objc/native/src/objc_audio_device_delegate.h",
        "objc/native/src/objc_audio_device_delegate.mm",
      ]

      deps = [
        ":audio_device_api_objc",
        "../api:array_view",
        "../api:make_ref_counted",
        "../api:refcountedbase",
        "../api:scoped_refptr",
        "../api:sequence_checker",
        "../api/audio:audio_device",
        "../api/task_queue",
        "../api/task_queue:default_task_queue_factory",
        "../modules/audio_device:audio_device_buffer",
        "../rtc_base:buffer",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:safe_minmax",
        "../rtc_base:threading",
        "../rtc_base:timeutils",
      ]
      if (is_mac) {
        frameworks = [ "AudioUnit.framework" ]
      }
    }

    rtc_library("objc_audio_device_module") {
      visibility = [ "*" ]
      allow_poison = [ "environment_construction" ]
      sources = [
        "objc/native/api/objc_audio_device_module.h",
        "objc/native/api/objc_audio_device_module.mm",
      ]

      deps = [
        ":audio_device_api_objc",
        ":audio_device_objc",
        "../api:make_ref_counted",
        "../api/audio:audio_device",
        "../rtc_base:logging",
      ]
      if (is_mac) {
        frameworks = [ "AudioUnit.framework" ]
      }
    }

    rtc_library("videosource_objc") {
      sources = [
        "objc/api/peerconnection/RTCVideoSource+Private.h",
        "objc/api/peerconnection/RTCVideoSource.h",
        "objc/api/peerconnection/RTCVideoSource.mm",
      ]

      deps = [
        ":base_objc",
        ":mediasource_objc",
        ":native_video",
        ":videoframebuffer_objc",
        "../api:libjingle_peerconnection_api",
        "../api:media_stream_interface",
        "../api/video:video_frame",
        "../api/video:video_rtp_headers",
        "../common_video",
        "../media:rtc_media_base",
        "../pc:video_track_source_proxy",
        "../rtc_base:checks",
        "../rtc_base:threading",
        "//third_party/libyuv",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }

    rtc_library("videoframebuffer_objc") {
      visibility = [ "*" ]
      sources = [
        "objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h",
        "objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
        "objc/api/video_frame_buffer/RTCNativeI420Buffer.mm",
        "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
        "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.mm",
        "objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
        "objc/components/video_frame_buffer/RTCCVPixelBuffer.mm",
      ]
      deps = [
        ":base_objc",
        "../rtc_base:logging",
        "//api/video:video_frame",
        "//api/video:video_rtp_headers",
        "//common_video",
        "//rtc_base:checks",
        "//third_party/libyuv",
      ]
      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
      frameworks = [
        "VideoToolbox.framework",
        "CoreGraphics.framework",
        "CoreVideo.framework",
      ]
    }

    rtc_library("metal_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "environment_construction",
      ]
      sources = [
        "objc/components/renderer/metal/RTCMTLI420Renderer.h",
        "objc/components/renderer/metal/RTCMTLI420Renderer.mm",
        "objc/components/renderer/metal/RTCMTLNV12Renderer.h",
        "objc/components/renderer/metal/RTCMTLNV12Renderer.mm",
        "objc/components/renderer/metal/RTCMTLRGBRenderer.h",
        "objc/components/renderer/metal/RTCMTLRGBRenderer.mm",
        "objc/components/renderer/metal/RTCMTLRenderer+Private.h",
        "objc/components/renderer/metal/RTCMTLRenderer.h",
        "objc/components/renderer/metal/RTCMTLRenderer.mm",
      ]
      frameworks = [
        "CoreVideo.framework",
        "Metal.framework",
        "MetalKit.framework",
      ]
      if (is_ios) {
        sources += [
          "objc/components/renderer/metal/RTCMTLVideoView.h",
          "objc/components/renderer/metal/RTCMTLVideoView.m",
        ]
      }
      if (is_mac) {
        sources += [
          "objc/components/renderer/metal/RTCMTLNSVideoView.h",
          "objc/components/renderer/metal/RTCMTLNSVideoView.m",
        ]
        frameworks += [ "AppKit.framework" ]
      }
      deps = [
        ":base_objc",
        ":peerconnectionfactory_base_objc",
        ":videoframebuffer_objc",
        "../api/video:video_frame",
        "../api/video:video_rtp_headers",
        "../rtc_base:checks",
      ]
      configs += [ "..:common_objc" ]
      public_configs = [ ":common_config_objc" ]
    }

    # TODO(bugs.webrtc.org/9627): Remove this target.
    rtc_library("videocapturebase_objc") {
      visibility = [ "*" ]
      sources = [ "objc/helpers/noop.mm" ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":videoframebuffer_objc",
      ]
    }

    rtc_library("videocapture_objc") {
      visibility = [ "*" ]
      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
      sources = [
        "objc/components/capturer/RTCCameraVideoCapturer.h",
        "objc/components/capturer/RTCCameraVideoCapturer.m",
        "objc/components/capturer/RTCFileVideoCapturer.h",
        "objc/components/capturer/RTCFileVideoCapturer.m",
      ]
      frameworks = [
        "AVFoundation.framework",
        "CoreVideo.framework",
        "QuartzCore.framework",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":helpers_objc",
        ":videoframebuffer_objc",
        "../rtc_base/system:gcd_helpers",
      ]
    }

    rtc_library("videocodec_objc") {
      visibility = [ "*" ]
      configs += [ "..:no_global_constructors" ]
      sources = [
        "objc/components/video_codec/RTCCodecSpecificInfoH264+Private.h",
        "objc/components/video_codec/RTCCodecSpecificInfoH264.h",
        "objc/components/video_codec/RTCCodecSpecificInfoH264.mm",
        "objc/components/video_codec/RTCH264ProfileLevelId.h",
        "objc/components/video_codec/RTCH264ProfileLevelId.mm",
      ]
      if (is_ios) {
        sources += [
          "objc/components/video_codec/UIDevice+H264Profile.h",
          "objc/components/video_codec/UIDevice+H264Profile.mm",
        ]
      }

      public_configs = [ ":common_config_objc" ]
      deps = [
        ":base_objc",
        ":helpers_objc",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../media:media_constants",
        "../media:rtc_media_base",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:checks",
      ]
    }

    rtc_library("default_codec_factory_objc") {
      sources = [
        "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h",
        "objc/components/video_codec/RTCDefaultVideoDecoderFactory.m",
        "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h",
        "objc/components/video_codec/RTCDefaultVideoEncoderFactory.m",
      ]

      deps = [
        ":base_objc",
        ":native_video",
        ":videocodec_objc",
        ":videotoolbox_objc",
        ":vp8",
        ":vp9",
        ":vpx_codec_constants",
      ]

      defines = []
      if (enable_libaom) {
        defines += [ "RTC_USE_LIBAOM_AV1_ENCODER" ]
        deps += [ ":libaom_av1_encoder" ]
      }

      if (rtc_include_dav1d_in_internal_decoder_factory) {
        deps += [ ":dav1d_decoder" ]
      }
    }

    rtc_library("vpx_codec_constants") {
      configs += [ "..:no_global_constructors" ]
      sources = [
        "objc/api/video_codec/RTCVideoCodecConstants.h",
        "objc/api/video_codec/RTCVideoCodecConstants.mm",
      ]

      deps = [
        ":base_objc",
        "../media:media_constants",
        "../media:rtc_media_base",
      ]
    }

    rtc_library("vp8") {
      visibility = [ "*" ]
      allow_poison = [ "software_video_codecs" ]
      sources = [
        "objc/api/video_codec/RTCVideoDecoderVP8.h",
        "objc/api/video_codec/RTCVideoDecoderVP8.mm",
        "objc/api/video_codec/RTCVideoEncoderVP8.h",
        "objc/api/video_codec/RTCVideoEncoderVP8.mm",
      ]

      deps = [
        ":base_objc",
        ":wrapped_native_codec_objc",
        "../modules/video_coding:webrtc_vp8",
      ]
    }

    rtc_library("vp9") {
      visibility = [ "*" ]
      allow_poison = [ "software_video_codecs" ]
      sources = [
        "objc/api/video_codec/RTCVideoDecoderVP9.h",
        "objc/api/video_codec/RTCVideoDecoderVP9.mm",
        "objc/api/video_codec/RTCVideoEncoderVP9.h",
        "objc/api/video_codec/RTCVideoEncoderVP9.mm",
      ]

      deps = [
        ":base_objc",
        ":wrapped_native_codec_objc",
        "../modules/video_coding:webrtc_vp9",
      ]
    }

    rtc_library("dav1d_decoder") {
      visibility = [ "*" ]
      allow_poison = [ "software_video_codecs" ]
      sources = [
        "objc/api/video_codec/RTCVideoDecoderAV1.h",
        "objc/api/video_codec/RTCVideoDecoderAV1.mm",
      ]

      deps = [
        ":base_objc",
        ":wrapped_native_codec_objc",
        "../media:rtc_media_base",
        "../modules/video_coding/codecs/av1:dav1d_decoder",
      ]
    }

    rtc_library("libaom_av1_encoder") {
      visibility = [ "*" ]
      allow_poison = [ "software_video_codecs" ]
      sources = [
        "objc/api/video_codec/RTCVideoEncoderAV1.h",
        "objc/api/video_codec/RTCVideoEncoderAV1.mm",
      ]

      deps = [
        ":base_objc",
        ":wrapped_native_codec_objc",
        "../modules/video_coding/codecs/av1:libaom_av1_encoder",
      ]
    }

    rtc_library("mediaconstraints_objc") {
      configs += [ "..:no_global_constructors" ]
      sources = [
        "objc/api/peerconnection/RTCMediaConstraints+Private.h",
        "objc/api/peerconnection/RTCMediaConstraints.h",
        "objc/api/peerconnection/RTCMediaConstraints.mm",
      ]

      public_configs = [ ":common_config_objc" ]
      deps = [
        ":base_objc",
        ":helpers_objc",
        ":media_constraints",
      ]
    }

    # TODO(bugs.webrtc.org/9627): Remove, targets should depend on base_objc.
    rtc_library("videorenderer_objc") {
      visibility = [ "*" ]
      sources = [ "objc/helpers/noop.mm" ]

      configs += [ "..:common_objc" ]
      public_configs = [ ":common_config_objc" ]

      deps = [ ":base_objc" ]
    }

    rtc_library("videorendereradapter_objc") {
      visibility = [ "*" ]
      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
      sources = [
        "objc/api/RTCVideoRendererAdapter+Private.h",
        "objc/api/RTCVideoRendererAdapter.h",
        "objc/api/RTCVideoRendererAdapter.mm",
      ]

      configs += [ "..:common_objc" ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":native_api",
        ":videoframebuffer_objc",
        "../api:libjingle_peerconnection_api",
        "../api:media_stream_interface",
      ]
    }

    rtc_library("mediasource_objc") {
      sources = [
        "objc/api/peerconnection/RTCMediaSource+Private.h",
        "objc/api/peerconnection/RTCMediaSource.h",
        "objc/api/peerconnection/RTCMediaSource.mm",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        "../api:media_stream_interface",
        "../rtc_base:checks",
      ]
    }

    rtc_library("base_native_additions_objc") {
      sources = [
        "objc/api/peerconnection/RTCEncodedImage+Private.h",
        "objc/api/peerconnection/RTCEncodedImage+Private.mm",
        "objc/api/peerconnection/RTCVideoCodecInfo+Private.h",
        "objc/api/peerconnection/RTCVideoCodecInfo+Private.mm",
        "objc/api/peerconnection/RTCVideoEncoderSettings+Private.h",
        "objc/api/peerconnection/RTCVideoEncoderSettings+Private.mm",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":helpers_objc",
        "../api/video:encoded_image",
        "../api/video_codecs:video_codecs_api",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:refcount",
        "../rtc_base:safe_conversions",
      ]
    }

    rtc_library("peerconnectionfactory_base_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "environment_construction",
      ]
      configs += [ "..:no_global_constructors" ]
      sources = [
        "objc/api/peerconnection/RTCAudioSource+Private.h",
        "objc/api/peerconnection/RTCAudioSource.h",
        "objc/api/peerconnection/RTCAudioSource.mm",
        "objc/api/peerconnection/RTCAudioTrack+Private.h",
        "objc/api/peerconnection/RTCAudioTrack.h",
        "objc/api/peerconnection/RTCAudioTrack.mm",
        "objc/api/peerconnection/RTCCertificate.h",
        "objc/api/peerconnection/RTCCertificate.mm",
        "objc/api/peerconnection/RTCConfiguration+Native.h",
        "objc/api/peerconnection/RTCConfiguration+Private.h",
        "objc/api/peerconnection/RTCConfiguration.h",
        "objc/api/peerconnection/RTCConfiguration.mm",
        "objc/api/peerconnection/RTCCryptoOptions.h",
        "objc/api/peerconnection/RTCCryptoOptions.mm",
        "objc/api/peerconnection/RTCDataChannel+Private.h",
        "objc/api/peerconnection/RTCDataChannel.h",
        "objc/api/peerconnection/RTCDataChannel.mm",
        "objc/api/peerconnection/RTCDataChannelConfiguration+Private.h",
        "objc/api/peerconnection/RTCDataChannelConfiguration.h",
        "objc/api/peerconnection/RTCDataChannelConfiguration.mm",
        "objc/api/peerconnection/RTCDtmfSender+Private.h",
        "objc/api/peerconnection/RTCDtmfSender.h",
        "objc/api/peerconnection/RTCDtmfSender.mm",
        "objc/api/peerconnection/RTCFieldTrials.h",
        "objc/api/peerconnection/RTCFieldTrials.mm",
        "objc/api/peerconnection/RTCIceCandidate+Private.h",
        "objc/api/peerconnection/RTCIceCandidate.h",
        "objc/api/peerconnection/RTCIceCandidate.mm",
        "objc/api/peerconnection/RTCIceCandidateErrorEvent+Private.h",
        "objc/api/peerconnection/RTCIceCandidateErrorEvent.h",
        "objc/api/peerconnection/RTCIceCandidateErrorEvent.mm",
        "objc/api/peerconnection/RTCIceServer+Private.h",
        "objc/api/peerconnection/RTCIceServer.h",
        "objc/api/peerconnection/RTCIceServer.mm",
        "objc/api/peerconnection/RTCLegacyStatsReport+Private.h",
        "objc/api/peerconnection/RTCLegacyStatsReport.h",
        "objc/api/peerconnection/RTCLegacyStatsReport.mm",
        "objc/api/peerconnection/RTCMediaStream+Private.h",
        "objc/api/peerconnection/RTCMediaStream.h",
        "objc/api/peerconnection/RTCMediaStream.mm",
        "objc/api/peerconnection/RTCMediaStreamTrack+Private.h",
        "objc/api/peerconnection/RTCMediaStreamTrack.h",
        "objc/api/peerconnection/RTCMediaStreamTrack.mm",
        "objc/api/peerconnection/RTCMetrics.h",
        "objc/api/peerconnection/RTCMetrics.mm",
        "objc/api/peerconnection/RTCMetricsSampleInfo+Private.h",
        "objc/api/peerconnection/RTCMetricsSampleInfo.h",
        "objc/api/peerconnection/RTCMetricsSampleInfo.mm",
        "objc/api/peerconnection/RTCPeerConnection+DataChannel.mm",
        "objc/api/peerconnection/RTCPeerConnection+Private.h",
        "objc/api/peerconnection/RTCPeerConnection+Stats.mm",
        "objc/api/peerconnection/RTCPeerConnection.h",
        "objc/api/peerconnection/RTCPeerConnection.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactory+Native.h",
        "objc/api/peerconnection/RTCPeerConnectionFactory+Private.h",
        "objc/api/peerconnection/RTCPeerConnectionFactory.h",
        "objc/api/peerconnection/RTCPeerConnectionFactory.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactoryOptions+Private.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.mm",
        "objc/api/peerconnection/RTCRtcpParameters+Private.h",
        "objc/api/peerconnection/RTCRtcpParameters.h",
        "objc/api/peerconnection/RTCRtcpParameters.mm",
        "objc/api/peerconnection/RTCRtpCapabilities+Private.h",
        "objc/api/peerconnection/RTCRtpCapabilities.h",
        "objc/api/peerconnection/RTCRtpCapabilities.mm",
        "objc/api/peerconnection/RTCRtpCodecCapability+Private.h",
        "objc/api/peerconnection/RTCRtpCodecCapability.h",
        "objc/api/peerconnection/RTCRtpCodecCapability.mm",
        "objc/api/peerconnection/RTCRtpCodecParameters+Private.h",
        "objc/api/peerconnection/RTCRtpCodecParameters.h",
        "objc/api/peerconnection/RTCRtpCodecParameters.mm",
        "objc/api/peerconnection/RTCRtpEncodingParameters+Private.h",
        "objc/api/peerconnection/RTCRtpEncodingParameters.h",
        "objc/api/peerconnection/RTCRtpEncodingParameters.mm",
        "objc/api/peerconnection/RTCRtpHeaderExtension+Private.h",
        "objc/api/peerconnection/RTCRtpHeaderExtension.h",
        "objc/api/peerconnection/RTCRtpHeaderExtension.mm",
        "objc/api/peerconnection/RTCRtpHeaderExtensionCapability+Private.h",
        "objc/api/peerconnection/RTCRtpHeaderExtensionCapability.h",
        "objc/api/peerconnection/RTCRtpHeaderExtensionCapability.mm",
        "objc/api/peerconnection/RTCRtpParameters+Private.h",
        "objc/api/peerconnection/RTCRtpParameters.h",
        "objc/api/peerconnection/RTCRtpParameters.mm",
        "objc/api/peerconnection/RTCRtpReceiver+Native.h",
        "objc/api/peerconnection/RTCRtpReceiver+Private.h",
        "objc/api/peerconnection/RTCRtpReceiver.h",
        "objc/api/peerconnection/RTCRtpReceiver.mm",
        "objc/api/peerconnection/RTCRtpSender+Native.h",
        "objc/api/peerconnection/RTCRtpSender+Private.h",
        "objc/api/peerconnection/RTCRtpSender.h",
        "objc/api/peerconnection/RTCRtpSender.mm",
        "objc/api/peerconnection/RTCRtpTransceiver+Private.h",
        "objc/api/peerconnection/RTCRtpTransceiver.h",
        "objc/api/peerconnection/RTCRtpTransceiver.mm",
        "objc/api/peerconnection/RTCSSLAdapter.h",
        "objc/api/peerconnection/RTCSSLAdapter.mm",
        "objc/api/peerconnection/RTCSessionDescription+Private.h",
        "objc/api/peerconnection/RTCSessionDescription.h",
        "objc/api/peerconnection/RTCSessionDescription.mm",
        "objc/api/peerconnection/RTCStatisticsReport+Private.h",
        "objc/api/peerconnection/RTCStatisticsReport.h",
        "objc/api/peerconnection/RTCStatisticsReport.mm",
        "objc/api/peerconnection/RTCTracing.h",
        "objc/api/peerconnection/RTCTracing.mm",
        "objc/api/peerconnection/RTCVideoTrack+Private.h",
        "objc/api/peerconnection/RTCVideoTrack.h",
        "objc/api/peerconnection/RTCVideoTrack.mm",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":audio_device_api_objc",
        ":base_native_additions_objc",
        ":base_objc",
        ":file_logger_objc",
        ":helpers_objc",
        ":mediaconstraints_objc",
        ":mediasource_objc",
        ":native_api",
        ":native_video",
        ":objc_audio_device_module",
        ":videoframebuffer_objc",
        ":videorendereradapter_objc",
        ":videosource_objc",
        ":videotoolbox_objc",
        "../api:dtmf_sender_interface",
        "../api:enable_media",
        "../api:libjingle_peerconnection_api",
        "../api:media_stream_interface",
        "../api:rtc_event_log_output_file",
        "../api:rtc_stats_api",
        "../api:rtp_parameters",
        "../api:rtp_sender_interface",
        "../api:scoped_refptr",
        "../api/audio:audio_device",
        "../api/audio:audio_processing",
        "../api/audio_codecs:audio_codecs_api",
        "../api/audio_codecs:builtin_audio_decoder_factory",
        "../api/audio_codecs:builtin_audio_encoder_factory",
        "../api/crypto:frame_decryptor_interface",
        "../api/crypto:frame_encryptor_interface",
        "../api/rtc_event_log:rtc_event_log_factory",
        "../api/task_queue:default_task_queue_factory",
        "../api/transport:field_trial_based_config",
        "../api/video:video_frame",
        "../api/video:video_rtp_headers",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../media:media_constants",
        "../media:rtc_media_base",
        "../modules/audio_processing",
        "../modules/video_coding:video_codec_interface",
        "../pc:peer_connection_factory",
        "../pc:webrtc_sdp",
        "../rtc_base:checks",
        "../rtc_base:event_tracer",
        "../rtc_base:logging",
        "../rtc_base:network_constants",
        "../rtc_base:rtc_certificate_generator",
        "../rtc_base:safe_conversions",
        "../rtc_base:ssl",
        "../rtc_base:ssl_adapter",
        "../rtc_base:stringutils",
        "../rtc_base:threading",
        "../rtc_base:timeutils",
        "../stats:rtc_stats",
        "../system_wrappers:field_trial",
        "../system_wrappers:metrics",
      ]

      if (is_ios) {
        deps += [ ":native_api_audio_device_module" ]
      }
    }

    if (rtc_include_tests) {
      if (is_ios) {
        rtc_library("sdk_unittests_sources") {
          testonly = true
          include_dirs = [ "objc/" ]

          sources = [
            "objc/unittests/ObjCVideoTrackSource_xctest.mm",
            "objc/unittests/RTCAudioDeviceModule_xctest.mm",
            "objc/unittests/RTCAudioDevice_xctest.mm",
            "objc/unittests/RTCAudioSessionTest.mm",
            "objc/unittests/RTCCVPixelBuffer_xctest.mm",
            "objc/unittests/RTCCallbackLogger_xctest.m",
            "objc/unittests/RTCCameraVideoCapturerTests.mm",
            "objc/unittests/RTCCertificateTest.mm",
            "objc/unittests/RTCConfigurationTest.mm",
            "objc/unittests/RTCDataChannelConfigurationTest.mm",
            "objc/unittests/RTCEncodedImage_xctest.mm",
            "objc/unittests/RTCFileVideoCapturer_xctest.mm",
            "objc/unittests/RTCH264ProfileLevelId_xctest.m",
            "objc/unittests/RTCIceCandidateTest.mm",
            "objc/unittests/RTCIceServerTest.mm",
            "objc/unittests/RTCMTLVideoView_xctest.m",
            "objc/unittests/RTCMediaConstraintsTest.mm",
            "objc/unittests/RTCNV12TextureCache_xctest.m",
            "objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm",
            "objc/unittests/RTCPeerConnectionFactory_xctest.m",
            "objc/unittests/RTCPeerConnectionTest.mm",
            "objc/unittests/RTCSessionDescriptionTest.mm",
            "objc/unittests/RTCTracingTest.mm",
            "objc/unittests/frame_buffer_helpers.h",
            "objc/unittests/frame_buffer_helpers.mm",
            "objc/unittests/nalu_rewriter_xctest.mm",
            "objc/unittests/objc_video_decoder_factory_tests.mm",
            "objc/unittests/objc_video_encoder_factory_tests.mm",
            "objc/unittests/scoped_cftyperef_tests.mm",
          ]

          # TODO(bugs.webrtc.org/12937): Remove OpenGL deprecation warning
          # workaround.
          defines = [ "GLES_SILENCE_DEPRECATION" ]

          deps = [
            ":audio_device",
            ":audio_session_objc",
            ":base_native_additions_objc",
            ":base_objc",
            ":callback_logger_objc",
            ":framework_objc",
            ":helpers_objc",
            ":mediaconstraints_objc",
            ":metal_objc",
            ":native_api",
            ":native_api_audio_device_module",
            ":native_video",
            ":peerconnectionfactory_base_objc",
            ":video_toolbox_cc",
            ":videocapture_objc",
            ":videocodec_objc",
            ":videoframebuffer_objc",
            ":videosource_objc",
            ":videotoolbox_objc",
            "../api:scoped_refptr",
            "../api/audio:audio_device",
            "../api/audio:audio_processing",
            "../api/audio_codecs:builtin_audio_decoder_factory",
            "../api/audio_codecs:builtin_audio_encoder_factory",
            "../api/environment:environment_factory",
            "../api/task_queue:default_task_queue_factory",
            "../api/video:video_frame",
            "../api/video_codecs:video_codecs_api",
            "../common_video",
            "../media:codec",
            "../media:rtc_media_base",
            "../media:rtc_media_tests_utils",
            "../modules/video_coding:video_codec_interface",
            "../rtc_base:gunit_helpers",
            "../rtc_base:macromagic",
            "../rtc_base:refcount",
            "../rtc_base:rtc_event",
            "../rtc_base/system:unused",
            "../system_wrappers",
            "//third_party/libyuv",
          ]

          if (rtc_ios_use_opengl_rendering) {
            deps += [ ":opengl_objc" ]
          }

          public_deps = [
            "//build/config/ios:xctest",
            "//third_party/ocmock",
          ]
        }

        bundle_data("sdk_unittests_bundle_data") {
          sources = [
            "objc/unittests/audio_short16.pcm",
            "objc/unittests/audio_short44.pcm",
            "objc/unittests/audio_short48.pcm",

            # Sample video taken from https://media.xiph.org/video/derf/
            "objc/unittests/foreman.mp4",
          ]
          outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
        }

        # These tests use static linking.
        rtc_test("sdk_unittests") {
          is_xctest = true
          info_plist = "//test/ios/Info.plist"
          sources = [ "objc/unittests/main.mm" ]

          extra_substitutions = [ "GTEST_BUNDLE_ID_SUFFIX=generic-unit-test" ]
          deps = [
            ":peerconnectionfactory_base_objc",
            ":sdk_unittests_bundle_data",
            ":sdk_unittests_sources",
            "../rtc_base:threading",
            "//test:test_support",
          ]
          ldflags = [ "-all_load" ]
        }

        # These tests link to the framework.
        rtc_test("sdk_framework_unittests") {
          is_xctest = true
          info_plist = "//test/ios/Info.plist"
          sources = [
            "objc/unittests/RTCDoNotPutCPlusPlusInFrameworkHeaders_xctest.m",
            "objc/unittests/main.mm",
          ]

          extra_substitutions = [ "GTEST_BUNDLE_ID_SUFFIX=generic-unit-test" ]
          deps = [
            ":framework_objc+link",
            ":ios_framework_bundle",
            "../rtc_base:threading",
            "//test:test_support",
          ]
        }
      }
    }

    if (is_ios) {
      apple_framework_bundle_with_umbrella_header("framework_objc") {
        info_plist = "objc/Info.plist"
        output_name = "WebRTC"

        common_objc_headers = [
          "objc/base/RTCCodecSpecificInfo.h",
          "objc/base/RTCEncodedImage.h",
          "objc/base/RTCI420Buffer.h",
          "objc/base/RTCLogging.h",
          "objc/base/RTCMacros.h",
          "objc/base/RTCMutableI420Buffer.h",
          "objc/base/RTCMutableYUVPlanarBuffer.h",
          "objc/base/RTCSSLCertificateVerifier.h",
          "objc/base/RTCVideoCapturer.h",
          "objc/base/RTCVideoCodecInfo.h",
          "objc/base/RTCVideoDecoder.h",
          "objc/base/RTCVideoDecoderFactory.h",
          "objc/base/RTCVideoEncoder.h",
          "objc/base/RTCVideoEncoderFactory.h",
          "objc/base/RTCVideoEncoderQpThresholds.h",
          "objc/base/RTCVideoEncoderSettings.h",
          "objc/base/RTCVideoFrame.h",
          "objc/base/RTCVideoFrameBuffer.h",
          "objc/base/RTCVideoRenderer.h",
          "objc/base/RTCYUVPlanarBuffer.h",
          "objc/components/audio/RTCAudioDevice.h",
          "objc/components/audio/RTCAudioSession.h",
          "objc/components/audio/RTCAudioSessionConfiguration.h",
          "objc/components/capturer/RTCCameraVideoCapturer.h",
          "objc/components/capturer/RTCFileVideoCapturer.h",
          "objc/components/network/RTCNetworkMonitor.h",
          "objc/components/renderer/metal/RTCMTLVideoView.h",
          "objc/components/renderer/opengl/RTCEAGLVideoView.h",
          "objc/components/renderer/opengl/RTCVideoViewShading.h",
          "objc/components/video_codec/RTCCodecSpecificInfoH264.h",
          "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h",
          "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h",
          "objc/components/video_codec/RTCH264ProfileLevelId.h",
          "objc/components/video_codec/RTCVideoDecoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoDecoderH264.h",
          "objc/components/video_codec/RTCVideoEncoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoEncoderH264.h",
          "objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
          "objc/helpers/RTCCameraPreviewView.h",
          "objc/helpers/RTCDispatcher.h",
          "objc/helpers/UIDevice+RTCDevice.h",
          "objc/api/peerconnection/RTCAudioSource.h",
          "objc/api/peerconnection/RTCAudioTrack.h",
          "objc/api/peerconnection/RTCConfiguration.h",
          "objc/api/peerconnection/RTCDataChannel.h",
          "objc/api/peerconnection/RTCDataChannelConfiguration.h",
          "objc/api/peerconnection/RTCFieldTrials.h",
          "objc/api/peerconnection/RTCIceCandidate.h",
          "objc/api/peerconnection/RTCIceCandidateErrorEvent.h",
          "objc/api/peerconnection/RTCIceServer.h",
          "objc/api/peerconnection/RTCLegacyStatsReport.h",
          "objc/api/peerconnection/RTCMediaConstraints.h",
          "objc/api/peerconnection/RTCMediaSource.h",
          "objc/api/peerconnection/RTCMediaStream.h",
          "objc/api/peerconnection/RTCMediaStreamTrack.h",
          "objc/api/peerconnection/RTCMetrics.h",
          "objc/api/peerconnection/RTCMetricsSampleInfo.h",
          "objc/api/peerconnection/RTCPeerConnection.h",
          "objc/api/peerconnection/RTCPeerConnectionFactory.h",
          "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h",
          "objc/api/peerconnection/RTCRtcpParameters.h",
          "objc/api/peerconnection/RTCRtpCapabilities.h",
          "objc/api/peerconnection/RTCRtpCodecCapability.h",
          "objc/api/peerconnection/RTCRtpCodecParameters.h",
          "objc/api/peerconnection/RTCRtpEncodingParameters.h",
          "objc/api/peerconnection/RTCRtpHeaderExtension.h",
          "objc/api/peerconnection/RTCRtpHeaderExtensionCapability.h",
          "objc/api/peerconnection/RTCRtpParameters.h",
          "objc/api/peerconnection/RTCRtpReceiver.h",
          "objc/api/peerconnection/RTCRtpSender.h",
          "objc/api/peerconnection/RTCRtpTransceiver.h",
          "objc/api/peerconnection/RTCDtmfSender.h",
          "objc/api/peerconnection/RTCSSLAdapter.h",
          "objc/api/peerconnection/RTCSessionDescription.h",
          "objc/api/peerconnection/RTCStatisticsReport.h",
          "objc/api/peerconnection/RTCTracing.h",
          "objc/api/peerconnection/RTCCertificate.h",
          "objc/api/peerconnection/RTCCryptoOptions.h",
          "objc/api/peerconnection/RTCVideoSource.h",
          "objc/api/peerconnection/RTCVideoTrack.h",
          "objc/api/video_codec/RTCVideoCodecConstants.h",
          "objc/api/video_codec/RTCVideoDecoderVP8.h",
          "objc/api/video_codec/RTCVideoDecoderVP9.h",
          "objc/api/video_codec/RTCVideoDecoderAV1.h",
          "objc/api/video_codec/RTCVideoEncoderVP8.h",
          "objc/api/video_codec/RTCVideoEncoderVP9.h",
          "objc/api/video_codec/RTCVideoEncoderAV1.h",
          "objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
          "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
        ]

        if (!build_with_chromium) {
          common_objc_headers += [
            "objc/api/logging/RTCCallbackLogger.h",
            "objc/api/peerconnection/RTCFileLogger.h",
          ]
        }

        sources = common_objc_headers
        public_headers = common_objc_headers

        ldflags = [
          "-all_load",
          "-install_name",
          "@rpath/$output_name.framework/$output_name",
        ]

        deps = [
          ":audio_objc",
          ":base_objc",
          ":default_codec_factory_objc",
          ":metal_objc",
          ":native_api",
          ":native_video",
          ":peerconnectionfactory_base_objc",
          ":videocapture_objc",
          ":videocodec_objc",
          ":videotoolbox_objc",
        ]
        if (!build_with_chromium) {
          deps += [
            ":callback_logger_objc",
            ":file_logger_objc",
          ]
        }

        frameworks = [
          "AVFoundation.framework",
          "CoreGraphics.framework",
          "CoreMedia.framework",
          "Foundation.framework",
          "UIKit.framework",
        ]

        configs = [
          "..:common_objc",
          ":used_from_extension",
        ]

        public_configs = [ ":common_config_objc" ]
      }

      bundle_data("ios_framework_bundle") {
        deps = [ "../sdk:framework_objc" ]
        sources = [ "$root_build_dir/WebRTC.framework" ]
        outputs = [ "{{bundle_resources_dir}}/Frameworks/{{source_file_part}}" ]
      }
    }

    if (is_mac) {
      apple_framework_bundle_with_umbrella_header("mac_framework_objc") {
        info_plist = "objc/Info.plist"
        output_name = "WebRTC"

        sources = [
          "objc/api/peerconnection/RTCAudioSource.h",
          "objc/api/peerconnection/RTCAudioTrack.h",
          "objc/api/peerconnection/RTCCertificate.h",
          "objc/api/peerconnection/RTCConfiguration.h",
          "objc/api/peerconnection/RTCCryptoOptions.h",
          "objc/api/peerconnection/RTCDataChannel.h",
          "objc/api/peerconnection/RTCDataChannelConfiguration.h",
          "objc/api/peerconnection/RTCDtmfSender.h",
          "objc/api/peerconnection/RTCFieldTrials.h",
          "objc/api/peerconnection/RTCIceCandidate.h",
          "objc/api/peerconnection/RTCIceCandidateErrorEvent.h",
          "objc/api/peerconnection/RTCIceServer.h",
          "objc/api/peerconnection/RTCLegacyStatsReport.h",
          "objc/api/peerconnection/RTCMediaConstraints.h",
          "objc/api/peerconnection/RTCMediaSource.h",
          "objc/api/peerconnection/RTCMediaStream.h",
          "objc/api/peerconnection/RTCMediaStreamTrack.h",
          "objc/api/peerconnection/RTCMetrics.h",
          "objc/api/peerconnection/RTCMetricsSampleInfo.h",
          "objc/api/peerconnection/RTCPeerConnection.h",
          "objc/api/peerconnection/RTCPeerConnectionFactory.h",
          "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h",
          "objc/api/peerconnection/RTCRtcpParameters.h",
          "objc/api/peerconnection/RTCRtpCapabilities.h",
          "objc/api/peerconnection/RTCRtpCodecCapability.h",
          "objc/api/peerconnection/RTCRtpCodecParameters.h",
          "objc/api/peerconnection/RTCRtpEncodingParameters.h",
          "objc/api/peerconnection/RTCRtpHeaderExtension.h",
          "objc/api/peerconnection/RTCRtpHeaderExtensionCapability.h",
          "objc/api/peerconnection/RTCRtpParameters.h",
          "objc/api/peerconnection/RTCRtpReceiver.h",
          "objc/api/peerconnection/RTCRtpSender.h",
          "objc/api/peerconnection/RTCRtpTransceiver.h",
          "objc/api/peerconnection/RTCSSLAdapter.h",
          "objc/api/peerconnection/RTCSessionDescription.h",
          "objc/api/peerconnection/RTCStatisticsReport.h",
          "objc/api/peerconnection/RTCTracing.h",
          "objc/api/peerconnection/RTCVideoSource.h",
          "objc/api/peerconnection/RTCVideoTrack.h",
          "objc/api/video_codec/RTCVideoDecoderAV1.h",
          "objc/api/video_codec/RTCVideoDecoderVP8.h",
          "objc/api/video_codec/RTCVideoDecoderVP9.h",
          "objc/api/video_codec/RTCVideoEncoderAV1.h",
          "objc/api/video_codec/RTCVideoEncoderVP8.h",
          "objc/api/video_codec/RTCVideoEncoderVP9.h",
          "objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
          "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
          "objc/base/RTCCodecSpecificInfo.h",
          "objc/base/RTCEncodedImage.h",
          "objc/base/RTCI420Buffer.h",
          "objc/base/RTCLogging.h",
          "objc/base/RTCMacros.h",
          "objc/base/RTCMutableI420Buffer.h",
          "objc/base/RTCMutableYUVPlanarBuffer.h",
          "objc/base/RTCSSLCertificateVerifier.h",
          "objc/base/RTCVideoCapturer.h",
          "objc/base/RTCVideoCodecInfo.h",
          "objc/base/RTCVideoDecoder.h",
          "objc/base/RTCVideoDecoderFactory.h",
          "objc/base/RTCVideoEncoder.h",
          "objc/base/RTCVideoEncoderFactory.h",
          "objc/base/RTCVideoEncoderQpThresholds.h",
          "objc/base/RTCVideoEncoderSettings.h",
          "objc/base/RTCVideoFrame.h",
          "objc/base/RTCVideoFrameBuffer.h",
          "objc/base/RTCVideoRenderer.h",
          "objc/base/RTCYUVPlanarBuffer.h",
          "objc/components/capturer/RTCCameraVideoCapturer.h",
          "objc/components/capturer/RTCFileVideoCapturer.h",
          "objc/components/renderer/metal/RTCMTLNSVideoView.h",
          "objc/components/renderer/opengl/RTCVideoViewShading.h",
          "objc/components/video_codec/RTCCodecSpecificInfoH264.h",
          "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h",
          "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h",
          "objc/components/video_codec/RTCH264ProfileLevelId.h",
          "objc/components/video_codec/RTCVideoDecoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoDecoderH264.h",
          "objc/components/video_codec/RTCVideoEncoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoEncoderH264.h",
          "objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
          "objc/helpers/RTCDispatcher.h",
        ]
        if (!build_with_chromium) {
          sources += [
            "objc/api/logging/RTCCallbackLogger.h",
            "objc/api/peerconnection/RTCFileLogger.h",
          ]
        }

        deps = [
          ":base_objc",
          ":default_codec_factory_objc",
          ":native_api",
          ":native_video",
          ":peerconnectionfactory_base_objc",
          ":videocapture_objc",
          ":videocodec_objc",
          ":videotoolbox_objc",
        ]
        if (!build_with_chromium) {
          deps += [
            ":callback_logger_objc",
            ":file_logger_objc",
          ]
        }

        frameworks = [
          "AVFoundation.framework",
          "CoreGraphics.framework",
          "CoreMedia.framework",
          "OpenGL.framework",
        ]

        configs = [ "..:common_objc" ]

        public_configs = [ ":common_config_objc" ]
      }

      bundle_data("mac_framework_bundle") {
        deps = [ "../sdk:mac_framework_objc" ]
        sources = [ "$root_build_dir/WebRTC.framework" ]
        outputs = [ "{{bundle_contents_dir}}/Frameworks/{{source_file_part}}" ]
      }
    }

    rtc_library("wrapped_native_codec_objc") {
      sources = [
        "objc/api/video_codec/RTCNativeVideoDecoder.h",
        "objc/api/video_codec/RTCNativeVideoDecoder.mm",
        "objc/api/video_codec/RTCNativeVideoDecoderBuilder+Native.h",
        "objc/api/video_codec/RTCNativeVideoEncoder.h",
        "objc/api/video_codec/RTCNativeVideoEncoder.mm",
        "objc/api/video_codec/RTCNativeVideoEncoderBuilder+Native.h",
      ]

      configs += [ "..:common_objc" ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":helpers_objc",
        "../api/environment",
        "../api/video_codecs:video_codecs_api",
        "../media:codec",
        "../rtc_base:checks",
      ]
    }

    # The native API is currently experimental and may change without notice.
    rtc_library("native_api") {
      visibility = [ "*" ]
      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
      sources = [
        "objc/native/api/network_monitor_factory.h",
        "objc/native/api/network_monitor_factory.mm",
        "objc/native/api/ssl_certificate_verifier.h",
        "objc/native/api/ssl_certificate_verifier.mm",
        "objc/native/api/video_capturer.h",
        "objc/native/api/video_capturer.mm",
        "objc/native/api/video_decoder_factory.h",
        "objc/native/api/video_decoder_factory.mm",
        "objc/native/api/video_encoder_factory.h",
        "objc/native/api/video_encoder_factory.mm",
        "objc/native/api/video_frame.h",
        "objc/native/api/video_frame.mm",
        "objc/native/api/video_frame_buffer.h",
        "objc/native/api/video_frame_buffer.mm",
        "objc/native/api/video_renderer.h",
        "objc/native/api/video_renderer.mm",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":native_video",
        ":videoframebuffer_objc",
        "../api:libjingle_peerconnection_api",
        "../api:make_ref_counted",
        "../api:media_stream_interface",
        "../api:scoped_refptr",
        "../api/video:video_frame",
        "../api/video:video_rtp_headers",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../pc:video_track_source_proxy",
        "../rtc_base:buffer",
        "../rtc_base:logging",
        "../rtc_base:ssl",
        "../rtc_base:ssl_adapter",
        "../rtc_base:threading",
        "//third_party/abseil-cpp/absl/memory",
      ]
      if (is_ios) {
        deps += [ ":native_network_monitor" ]
      }
    }

    if (is_ios) {
      rtc_library("native_network_monitor") {
        visibility = [ "*" ]

        sources = [
          "objc/native/src/objc_network_monitor.h",
          "objc/native/src/objc_network_monitor.mm",
        ]

        deps = [
          ":network_monitor_objc",
          ":network_monitor_observer",
          "../api:field_trials_view",
          "../api:sequence_checker",
          "../api/task_queue:pending_task_safety_flag",
          "../rtc_base:logging",
          "../rtc_base:macromagic",
          "../rtc_base:stringutils",
          "../rtc_base:threading",
          "//third_party/abseil-cpp/absl/strings:string_view",
        ]
      }
    }

    rtc_library("native_video") {
      sources = [
        "objc/native/src/objc_frame_buffer.h",
        "objc/native/src/objc_frame_buffer.mm",
        "objc/native/src/objc_video_decoder_factory.h",
        "objc/native/src/objc_video_decoder_factory.mm",
        "objc/native/src/objc_video_encoder_factory.h",
        "objc/native/src/objc_video_encoder_factory.mm",
        "objc/native/src/objc_video_frame.h",
        "objc/native/src/objc_video_frame.mm",
        "objc/native/src/objc_video_renderer.h",
        "objc/native/src/objc_video_renderer.mm",
        "objc/native/src/objc_video_track_source.h",
        "objc/native/src/objc_video_track_source.mm",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_native_additions_objc",
        ":base_objc",
        ":helpers_objc",
        ":videocodec_objc",
        ":videoframebuffer_objc",
        ":vpx_codec_constants",
        ":wrapped_native_codec_objc",
        "../api:make_ref_counted",
        "../api/environment",
        "../api/video:video_frame",
        "../api/video:video_rtp_headers",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../media:adapted_video_track_source",
        "../media:codec",
        "../media:rtc_audio_video",
        "../media:rtc_media_base",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:timestamp_aligner",
        "../rtc_base:timeutils",
      ]
    }

    rtc_library("video_toolbox_cc") {
      visibility = [
        ":sdk_unittests_sources",
        ":videotoolbox_objc",
      ]
      sources = [
        "objc/components/video_codec/helpers.cc",
        "objc/components/video_codec/helpers.h",
        "objc/components/video_codec/nalu_rewriter.cc",
        "objc/components/video_codec/nalu_rewriter.h",
      ]
      deps = [
        "../common_video",
        "../modules/video_coding:webrtc_h264",
        "../rtc_base:buffer",
        "../rtc_base:checks",
        "../rtc_base:logging",
      ]
    }

    rtc_library("videotoolbox_objc") {
      visibility = [ "*" ]
      allow_poison = [ "audio_codecs" ]  # TODO(bugs.webrtc.org/8396): Remove.
      sources = [
        "objc/components/video_codec/RTCVideoDecoderFactoryH264.h",
        "objc/components/video_codec/RTCVideoDecoderFactoryH264.m",
        "objc/components/video_codec/RTCVideoDecoderH264.h",
        "objc/components/video_codec/RTCVideoDecoderH264.mm",
        "objc/components/video_codec/RTCVideoEncoderFactoryH264.h",
        "objc/components/video_codec/RTCVideoEncoderFactoryH264.m",
        "objc/components/video_codec/RTCVideoEncoderH264.h",
        "objc/components/video_codec/RTCVideoEncoderH264.mm",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]

      if (is_ios && rtc_apprtcmobile_broadcast_extension) {
        defines = [ "RTC_APPRTCMOBILE_BROADCAST_EXTENSION" ]
      }

      deps = [
        ":base_native_additions_objc",
        ":base_objc",
        ":helpers_objc",
        ":video_toolbox_cc",
        ":videocodec_objc",
        ":videoframebuffer_objc",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:buffer",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:timeutils",
        "//third_party/libyuv",
      ]

      frameworks = [
        "CoreFoundation.framework",
        "CoreMedia.framework",
        "CoreVideo.framework",
        "VideoToolbox.framework",
      ]
    }
  }
}
