Split iOS sdk in to separate targets

This CL splits the iOS sdk into separate static libraries for video,
audio, ui, common, and peerconnection-related code. This will in the
future make it easier to compile WebRTC without unneeded components.

BUG=webrtc:4867

Review-Url: https://codereview.webrtc.org/2862543002
Cr-Commit-Position: refs/heads/master@{#18166}
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index 863f062..3811221 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -410,7 +410,7 @@
     }
 
     if (is_ios || is_mac) {
-      deps += [ "sdk:rtc_sdk_peerconnection_objc_unittests" ]
+      deps += [ "sdk:objc_sdk_unittests" ]
     }
   }
 
diff --git a/webrtc/examples/BUILD.gn b/webrtc/examples/BUILD.gn
index f812f08..d2ffe18 100644
--- a/webrtc/examples/BUILD.gn
+++ b/webrtc/examples/BUILD.gn
@@ -163,7 +163,7 @@
     public_configs = [ ":apprtc_common_config" ]
 
     deps = [
-      "//webrtc/sdk:rtc_sdk_common_objc",
+      "//webrtc/sdk:objc_common",
       "//webrtc/system_wrappers:field_trial_default",
       "//webrtc/system_wrappers:metrics_default",
     ]
@@ -232,7 +232,7 @@
       ":socketrocket",
     ]
     public_deps = [
-      "//webrtc/sdk:rtc_sdk_peerconnection_objc",
+      "//webrtc/sdk:objc_peerconnection",
     ]
     libs = [ "QuartzCore.framework" ]
   }
@@ -290,7 +290,7 @@
 
     bundle_data("AppRTCMobile_ios_frameworks") {
       public_deps = [
-        "//webrtc/sdk:rtc_sdk_framework_objc+link",
+        "//webrtc/sdk:objc_framework+link",
       ]
       sources = [
         "$root_out_dir/WebRTC.framework",
diff --git a/webrtc/modules/audio_device/BUILD.gn b/webrtc/modules/audio_device/BUILD.gn
index de9096e..2568ef3 100644
--- a/webrtc/modules/audio_device/BUILD.gn
+++ b/webrtc/modules/audio_device/BUILD.gn
@@ -176,7 +176,7 @@
         public_deps = [
           "../../base:gtest_prod",
           "../../base:rtc_base",
-          "../../sdk:rtc_sdk_common_objc",
+          "../../sdk:objc_common",
         ]
         sources += [
           "ios/audio_device_ios.h",
diff --git a/webrtc/modules/audio_device/ios/audio_device_ios.mm b/webrtc/modules/audio_device/ios/audio_device_ios.mm
index 8cb1cd2..3add4b9 100644
--- a/webrtc/modules/audio_device/ios/audio_device_ios.mm
+++ b/webrtc/modules/audio_device/ios/audio_device_ios.mm
@@ -23,7 +23,7 @@
 #include "webrtc/base/thread.h"
 #include "webrtc/base/thread_annotations.h"
 #include "webrtc/modules/audio_device/fine_audio_buffer.h"
-#include "webrtc/sdk/objc/Framework/Classes/helpers.h"
+#include "webrtc/sdk/objc/Framework/Classes/Common/helpers.h"
 
 #import "WebRTC/RTCLogging.h"
 #import "webrtc/modules/audio_device/ios/objc/RTCAudioSession.h"
diff --git a/webrtc/modules/video_coding/BUILD.gn b/webrtc/modules/video_coding/BUILD.gn
index 477e064..6c81136 100644
--- a/webrtc/modules/video_coding/BUILD.gn
+++ b/webrtc/modules/video_coding/BUILD.gn
@@ -376,7 +376,7 @@
     if (is_ios || is_mac) {
       deps += [
         "../../media:rtc_media_base",
-        "../../sdk:webrtc_h264_video_toolbox",
+        "../../sdk:objc_videotoolbox",
       ]
     }
   }
diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h
index 937f512..d525140 100644
--- a/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h
+++ b/webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h
@@ -23,8 +23,8 @@
 #include "webrtc/sdk/android/src/jni/androidmediadecoder_jni.h"
 #include "webrtc/sdk/android/src/jni/androidmediaencoder_jni.h"
 #elif defined(WEBRTC_IOS)
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.h"
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.h"
 #endif
 
 #include "webrtc/base/checks.h"
diff --git a/webrtc/sdk/BUILD.gn b/webrtc/sdk/BUILD.gn
index fa44c48..b1dc8a0 100644
--- a/webrtc/sdk/BUILD.gn
+++ b/webrtc/sdk/BUILD.gn
@@ -11,44 +11,50 @@
   import("//build/config/ios/rules.gni")
 }
 
+declare_args() {
+  # Determine whether or not to include metal rendering
+  rtc_use_metal_rendering = is_mac || (is_ios && current_cpu == "arm64")
+}
+
 group("sdk") {
   if (is_ios) {
     public_deps = [
-      ":rtc_sdk_framework_objc",
+      ":objc_framework",
     ]
   }
 }
 
 if (is_ios || is_mac) {
-  config("rtc_sdk_common_objc_config") {
+  config("objc_common_config") {
     include_dirs = [
       "objc/Framework/Classes",
+      "objc/Framework/Classes/Audio",
+      "objc/Framework/Classes/Common",
+      "objc/Framework/Classes/Metal",
+      "objc/Framework/Classes/PeerConnection",
+      "objc/Framework/Classes/UI",
+      "objc/Framework/Classes/Video",
+      "objc/Framework/Classes/VideoToolbox",
       "objc/Framework/Headers",
     ]
   }
 
-  rtc_static_library("rtc_sdk_common_objc") {
+  rtc_static_library("objc_common") {
     sources = [
-      "objc/Framework/Classes/NSString+StdString.h",
-      "objc/Framework/Classes/NSString+StdString.mm",
-      "objc/Framework/Classes/RTCDispatcher.m",
-      "objc/Framework/Classes/RTCFieldTrials.mm",
-      "objc/Framework/Classes/RTCLogging.mm",
-      "objc/Framework/Classes/RTCMetrics.mm",
-      "objc/Framework/Classes/RTCMetricsSampleInfo+Private.h",
-      "objc/Framework/Classes/RTCMetricsSampleInfo.mm",
-      "objc/Framework/Classes/RTCSSLAdapter.mm",
-      "objc/Framework/Classes/RTCTracing.mm",
-      "objc/Framework/Classes/helpers.h",
-      "objc/Framework/Classes/helpers.mm",
+      "objc/Framework/Classes/Common/NSString+StdString.h",
+      "objc/Framework/Classes/Common/NSString+StdString.mm",
+      "objc/Framework/Classes/Common/RTCDispatcher+Private.h",
+      "objc/Framework/Classes/Common/RTCDispatcher.m",
+      "objc/Framework/Classes/Common/RTCFieldTrials.mm",
+      "objc/Framework/Classes/Common/RTCLogging.mm",
+      "objc/Framework/Classes/Common/RTCUIApplication.h",
+      "objc/Framework/Classes/Common/RTCUIApplication.mm",
+      "objc/Framework/Classes/Common/helpers.h",
+      "objc/Framework/Classes/Common/helpers.mm",
       "objc/Framework/Headers/WebRTC/RTCDispatcher.h",
       "objc/Framework/Headers/WebRTC/RTCFieldTrials.h",
       "objc/Framework/Headers/WebRTC/RTCLogging.h",
       "objc/Framework/Headers/WebRTC/RTCMacros.h",
-      "objc/Framework/Headers/WebRTC/RTCMetrics.h",
-      "objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h",
-      "objc/Framework/Headers/WebRTC/RTCSSLAdapter.h",
-      "objc/Framework/Headers/WebRTC/RTCTracing.h",
     ]
 
     deps = [
@@ -56,132 +62,201 @@
     ]
     configs += [ "..:common_objc" ]
 
-    public_configs = [ ":rtc_sdk_common_objc_config" ]
+    public_configs = [ ":objc_common_config" ]
 
     if (is_ios) {
       sources += [
-        "objc/Framework/Classes/RTCCameraPreviewView.m",
-        "objc/Framework/Classes/RTCUIApplication.h",
-        "objc/Framework/Classes/RTCUIApplication.mm",
-        "objc/Framework/Classes/UIDevice+RTCDevice.mm",
-        "objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h",
+        "objc/Framework/Classes/Common/UIDevice+RTCDevice.mm",
         "objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h",
       ]
     }
 
-    if (is_mac || (is_ios && current_cpu == "arm64")) {
+    if (!build_with_chromium) {
       sources += [
+        "objc/Framework/Classes/Common/RTCFileLogger.mm",
+        "objc/Framework/Headers/WebRTC/RTCFileLogger.h",
+      ]
+    }
+  }
+
+  rtc_static_library("objc_video") {
+    sources = [
+      "objc/Framework/Classes/Video/RTCAVFoundationVideoCapturerInternal.h",
+      "objc/Framework/Classes/Video/RTCAVFoundationVideoCapturerInternal.mm",
+      "objc/Framework/Classes/Video/RTCI420Shader.mm",
+      "objc/Framework/Classes/Video/RTCI420TextureCache.h",
+      "objc/Framework/Classes/Video/RTCI420TextureCache.mm",
+      "objc/Framework/Classes/Video/RTCOpenGLDefines.h",
+      "objc/Framework/Classes/Video/RTCShader+Private.h",
+      "objc/Framework/Classes/Video/RTCShader.h",
+      "objc/Framework/Classes/Video/RTCShader.mm",
+      "objc/Framework/Classes/Video/avfoundationformatmapper.h",
+      "objc/Framework/Classes/Video/avfoundationformatmapper.mm",
+      "objc/Framework/Classes/Video/avfoundationvideocapturer.h",
+      "objc/Framework/Classes/Video/avfoundationvideocapturer.mm",
+      "objc/Framework/Classes/Video/objcvideotracksource.h",
+      "objc/Framework/Classes/Video/objcvideotracksource.mm",
+    ]
+    libs = []
+    if (is_ios) {
+      sources += [
+        "objc/Framework/Classes/Video/RTCNV12TextureCache.h",
+        "objc/Framework/Classes/Video/RTCNV12TextureCache.m",
+        "objc/Framework/Classes/Video/RTCNativeNV12Shader.mm",
+      ]
+      libs += [
+        "GLKit.framework",
+        "OpenGLES.framework",
+        "QuartzCore.framework",
+      ]
+    } else if (is_mac) {
+      sources += []
+
+      libs += [
+        "CoreMedia.framework",
+        "CoreVideo.framework",
+        "OpenGL.framework",
+      ]
+    }
+
+    deps = [
+      ":objc_common",
+      ":objc_corevideoframebuffer",
+      ":objc_videotoolbox",
+      "//webrtc/api:libjingle_peerconnection_api",
+      "//webrtc/base:rtc_base",
+      "//webrtc/common_video",
+      "//webrtc/media:rtc_media_base",
+    ]
+
+    configs += [ "..:common_objc" ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+
+  rtc_static_library("objc_ui") {
+    if (is_ios) {
+      sources = [
+        "objc/Framework/Classes/UI/RTCCameraPreviewView.m",
+        "objc/Framework/Classes/UI/RTCEAGLVideoView.m",
+        "objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h",
+        "objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h",
+      ]
+    }
+    if (is_mac) {
+      sources = [
+        "objc/Framework/Classes/UI/RTCNSGLVideoView.m",
+        "objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h",
+      ]
+    }
+    configs += [ "..:common_objc" ]
+    deps = [
+      ":objc_common",
+    ]
+  }
+
+  if (rtc_use_metal_rendering) {
+    rtc_static_library("objc_metal") {
+      sources = [
         "objc/Framework/Classes/Metal/RTCMTLI420Renderer.h",
         "objc/Framework/Classes/Metal/RTCMTLI420Renderer.mm",
         "objc/Framework/Classes/Metal/RTCMTLRenderer+Private.h",
         "objc/Framework/Classes/Metal/RTCMTLRenderer.h",
         "objc/Framework/Classes/Metal/RTCMTLRenderer.mm",
       ]
-      deps += [ "../api:video_frame_api" ]
-
       if (is_ios) {
         sources += [
           "objc/Framework/Classes/Metal/RTCMTLNV12Renderer.h",
           "objc/Framework/Classes/Metal/RTCMTLNV12Renderer.mm",
           "objc/Framework/Classes/Metal/RTCMTLVideoView.m",
+          "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h",
         ]
       }
       if (is_mac) {
-        sources += [ "objc/Framework/Classes/Metal/RTCMTLNSVideoView.m" ]
+        sources += [
+          "objc/Framework/Classes/Metal/RTCMTLNSVideoView.m",
+          "objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h",
+        ]
       }
-    }
-
-    libs = [ "AVFoundation.framework" ]
-    if (is_mac || (is_ios && current_cpu == "arm64")) {
-      libs += [
+      libs = [
         "CoreVideo.framework",
         "Metal.framework",
         "MetalKit.framework",
       ]
-    }
-    if (!build_with_chromium) {
-      sources += [
-        "objc/Framework/Classes/RTCFileLogger.mm",
-        "objc/Framework/Headers/WebRTC/RTCFileLogger.h",
+      deps = [
+        ":objc_video",
+        "//webrtc/api:video_frame_api",
+        "//webrtc/base:rtc_base_approved",
       ]
+      configs += [ "..:common_objc" ]
+      public_configs = [ ":objc_common_config" ]
     }
   }
 
-  rtc_static_library("rtc_sdk_peerconnection_objc") {
+  rtc_static_library("objc_peerconnection") {
     sources = [
-      "objc/Framework/Classes/Metal/RTCMTLNV12Renderer.h",
-      "objc/Framework/Classes/RTCAVFoundationVideoCapturerInternal.h",
-      "objc/Framework/Classes/RTCAVFoundationVideoCapturerInternal.mm",
-      "objc/Framework/Classes/RTCAVFoundationVideoSource+Private.h",
-      "objc/Framework/Classes/RTCAVFoundationVideoSource.mm",
-      "objc/Framework/Classes/RTCAudioSource+Private.h",
-      "objc/Framework/Classes/RTCAudioSource.mm",
-      "objc/Framework/Classes/RTCAudioTrack+Private.h",
-      "objc/Framework/Classes/RTCAudioTrack.mm",
-      "objc/Framework/Classes/RTCCameraVideoCapturer.m",
-      "objc/Framework/Classes/RTCConfiguration+Private.h",
-      "objc/Framework/Classes/RTCConfiguration.mm",
-      "objc/Framework/Classes/RTCDataChannel+Private.h",
-      "objc/Framework/Classes/RTCDataChannel.mm",
-      "objc/Framework/Classes/RTCDataChannelConfiguration+Private.h",
-      "objc/Framework/Classes/RTCDataChannelConfiguration.mm",
-      "objc/Framework/Classes/RTCI420Shader.mm",
-      "objc/Framework/Classes/RTCI420TextureCache.h",
-      "objc/Framework/Classes/RTCI420TextureCache.mm",
-      "objc/Framework/Classes/RTCIceCandidate+Private.h",
-      "objc/Framework/Classes/RTCIceCandidate.mm",
-      "objc/Framework/Classes/RTCIceServer+Private.h",
-      "objc/Framework/Classes/RTCIceServer.mm",
-      "objc/Framework/Classes/RTCLegacyStatsReport+Private.h",
-      "objc/Framework/Classes/RTCLegacyStatsReport.mm",
-      "objc/Framework/Classes/RTCMediaConstraints+Private.h",
-      "objc/Framework/Classes/RTCMediaConstraints.mm",
-      "objc/Framework/Classes/RTCMediaSource+Private.h",
-      "objc/Framework/Classes/RTCMediaSource.mm",
-      "objc/Framework/Classes/RTCMediaStream+Private.h",
-      "objc/Framework/Classes/RTCMediaStream.mm",
-      "objc/Framework/Classes/RTCMediaStreamTrack+Private.h",
-      "objc/Framework/Classes/RTCMediaStreamTrack.mm",
-      "objc/Framework/Classes/RTCOpenGLDefines.h",
-      "objc/Framework/Classes/RTCPeerConnection+DataChannel.mm",
-      "objc/Framework/Classes/RTCPeerConnection+Private.h",
-      "objc/Framework/Classes/RTCPeerConnection+Stats.mm",
-      "objc/Framework/Classes/RTCPeerConnection.mm",
-      "objc/Framework/Classes/RTCPeerConnectionFactory+Private.h",
-      "objc/Framework/Classes/RTCPeerConnectionFactory.mm",
-      "objc/Framework/Classes/RTCRtpCodecParameters+Private.h",
-      "objc/Framework/Classes/RTCRtpCodecParameters.mm",
-      "objc/Framework/Classes/RTCRtpEncodingParameters+Private.h",
-      "objc/Framework/Classes/RTCRtpEncodingParameters.mm",
-      "objc/Framework/Classes/RTCRtpParameters+Private.h",
-      "objc/Framework/Classes/RTCRtpParameters.mm",
-      "objc/Framework/Classes/RTCRtpReceiver+Private.h",
-      "objc/Framework/Classes/RTCRtpReceiver.mm",
-      "objc/Framework/Classes/RTCRtpSender+Private.h",
-      "objc/Framework/Classes/RTCRtpSender.mm",
-      "objc/Framework/Classes/RTCSessionDescription+Private.h",
-      "objc/Framework/Classes/RTCSessionDescription.mm",
-      "objc/Framework/Classes/RTCShader+Private.h",
-      "objc/Framework/Classes/RTCShader.h",
-      "objc/Framework/Classes/RTCShader.mm",
-      "objc/Framework/Classes/RTCVideoCapturer.m",
-      "objc/Framework/Classes/RTCVideoFrame+Private.h",
-      "objc/Framework/Classes/RTCVideoFrame.mm",
-      "objc/Framework/Classes/RTCVideoRendererAdapter+Private.h",
-      "objc/Framework/Classes/RTCVideoRendererAdapter.h",
-      "objc/Framework/Classes/RTCVideoRendererAdapter.mm",
-      "objc/Framework/Classes/RTCVideoSource+Private.h",
-      "objc/Framework/Classes/RTCVideoSource.mm",
-      "objc/Framework/Classes/RTCVideoTrack+Private.h",
-      "objc/Framework/Classes/RTCVideoTrack.mm",
-      "objc/Framework/Classes/avfoundationformatmapper.h",
-      "objc/Framework/Classes/avfoundationformatmapper.mm",
-      "objc/Framework/Classes/avfoundationvideocapturer.h",
-      "objc/Framework/Classes/avfoundationvideocapturer.mm",
-      "objc/Framework/Classes/objcvideotracksource.h",
-      "objc/Framework/Classes/objcvideotracksource.mm",
-      "objc/Framework/Classes/videotoolboxvideocodecfactory.cc",
-      "objc/Framework/Classes/videotoolboxvideocodecfactory.h",
+      "objc/Framework/Classes/PeerConnection/RTCAVFoundationVideoSource+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCAVFoundationVideoSource.mm",
+      "objc/Framework/Classes/PeerConnection/RTCAudioSource+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCAudioSource.mm",
+      "objc/Framework/Classes/PeerConnection/RTCAudioTrack+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCAudioTrack.mm",
+      "objc/Framework/Classes/PeerConnection/RTCCameraVideoCapturer.m",
+      "objc/Framework/Classes/PeerConnection/RTCConfiguration+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCConfiguration.mm",
+      "objc/Framework/Classes/PeerConnection/RTCDataChannel+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCDataChannel.mm",
+      "objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration.mm",
+      "objc/Framework/Classes/PeerConnection/RTCIceCandidate+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCIceCandidate.mm",
+      "objc/Framework/Classes/PeerConnection/RTCIceServer+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCIceServer.mm",
+      "objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport.mm",
+      "objc/Framework/Classes/PeerConnection/RTCMediaConstraints+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCMediaConstraints.mm",
+      "objc/Framework/Classes/PeerConnection/RTCMediaSource+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCMediaSource.mm",
+      "objc/Framework/Classes/PeerConnection/RTCMediaStream+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCMediaStream.mm",
+      "objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm",
+      "objc/Framework/Classes/PeerConnection/RTCMetrics.mm",
+      "objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo.mm",
+      "objc/Framework/Classes/PeerConnection/RTCPeerConnection+DataChannel.mm",
+      "objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCPeerConnection+Stats.mm",
+      "objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm",
+      "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm",
+      "objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm",
+      "objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters.mm",
+      "objc/Framework/Classes/PeerConnection/RTCRtpParameters+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCRtpParameters.mm",
+      "objc/Framework/Classes/PeerConnection/RTCRtpReceiver+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm",
+      "objc/Framework/Classes/PeerConnection/RTCRtpSender+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCRtpSender.mm",
+      "objc/Framework/Classes/PeerConnection/RTCSSLAdapter.mm",
+      "objc/Framework/Classes/PeerConnection/RTCSessionDescription+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCSessionDescription.mm",
+      "objc/Framework/Classes/PeerConnection/RTCTracing.mm",
+      "objc/Framework/Classes/PeerConnection/RTCVideoCapturer.m",
+      "objc/Framework/Classes/PeerConnection/RTCVideoFrame+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCVideoFrame.mm",
+      "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h",
+      "objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.mm",
+      "objc/Framework/Classes/PeerConnection/RTCVideoSource+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCVideoSource.mm",
+      "objc/Framework/Classes/PeerConnection/RTCVideoTrack+Private.h",
+      "objc/Framework/Classes/PeerConnection/RTCVideoTrack.mm",
       "objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h",
       "objc/Framework/Headers/WebRTC/RTCAudioSource.h",
       "objc/Framework/Headers/WebRTC/RTCAudioTrack.h",
@@ -196,6 +271,8 @@
       "objc/Framework/Headers/WebRTC/RTCMediaSource.h",
       "objc/Framework/Headers/WebRTC/RTCMediaStream.h",
       "objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h",
+      "objc/Framework/Headers/WebRTC/RTCMetrics.h",
+      "objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h",
       "objc/Framework/Headers/WebRTC/RTCPeerConnection.h",
       "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h",
       "objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h",
@@ -203,7 +280,9 @@
       "objc/Framework/Headers/WebRTC/RTCRtpParameters.h",
       "objc/Framework/Headers/WebRTC/RTCRtpReceiver.h",
       "objc/Framework/Headers/WebRTC/RTCRtpSender.h",
+      "objc/Framework/Headers/WebRTC/RTCSSLAdapter.h",
       "objc/Framework/Headers/WebRTC/RTCSessionDescription.h",
+      "objc/Framework/Headers/WebRTC/RTCTracing.h",
       "objc/Framework/Headers/WebRTC/RTCVideoCapturer.h",
       "objc/Framework/Headers/WebRTC/RTCVideoFrame.h",
       "objc/Framework/Headers/WebRTC/RTCVideoRenderer.h",
@@ -211,65 +290,36 @@
       "objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
     ]
 
-    deps = [
-      ":rtc_sdk_corevideoframebuffer",
-      ":webrtc_h264_video_toolbox",
-      "../api:video_frame_api",
-      "../base:rtc_base",
-      "../base:rtc_base_approved",
-      "../common_video",
-      "../media:rtc_media",
-      "../media:rtc_media_base",
-      "../system_wrappers",
-    ]
+    libs = [ "AVFoundation.framework" ]
 
     if (is_ios) {
-      sources += [
-        "objc/Framework/Classes/RTCEAGLVideoView.m",
-        "objc/Framework/Classes/RTCNV12TextureCache.h",
-        "objc/Framework/Classes/RTCNV12TextureCache.m",
-        "objc/Framework/Classes/RTCNativeNV12Shader.mm",
-        "objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h",
-      ]
-      libs = [
-        "CoreGraphics.framework",
-        "GLKit.framework",
-        "OpenGLES.framework",
-        "QuartzCore.framework",
-      ]
-    }
-
-    if (is_mac) {
-      sources += [
-        "objc/Framework/Classes/RTCNSGLVideoView.m",
-        "objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h",
-        "objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h",
-      ]
-      libs = [
-        "CoreVideo.framework",
-        "CoreMedia.framework",
-        "OpenGL.framework",
-        "Metal.framework",
-        "MetalKit.framework",
-      ]
+      libs += [ "CoreGraphics.framework" ]
     }
 
     configs += [ "..:common_objc" ]
 
-    public_configs = [ ":rtc_sdk_common_objc_config" ]
+    public_configs = [ ":objc_common_config" ]
 
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
     }
 
-    libs += [ "AVFoundation.framework" ]
-
-    deps += [
-      ":rtc_sdk_common_objc",
+    deps = [
+      ":objc_common",
+      ":objc_corevideoframebuffer",
+      ":objc_ui",
+      ":objc_video",
       "../pc:libjingle_peerconnection",
+      "//webrtc/api:video_frame_api",
+      "//webrtc/base:rtc_base",
+      "//webrtc/media:rtc_media_base",
     ]
 
+    if (rtc_use_metal_rendering) {
+      deps += [ ":objc_metal" ]
+    }
+
     if (rtc_build_libyuv) {
       deps += [ "$rtc_libyuv_dir" ]
       public_deps = [
@@ -279,7 +329,7 @@
   }
 
   if (rtc_include_tests) {
-    rtc_source_set("rtc_sdk_peerconnection_objc_unittests") {
+    rtc_source_set("objc_sdk_unittests") {
       testonly = true
 
       # Skip restricting visibility on mobile platforms since the tests on those
@@ -299,15 +349,6 @@
         "objc/Framework/UnitTests/RTCSessionDescriptionTest.mm",
         "objc/Framework/UnitTests/avformatmappertests.mm",
       ]
-      if (is_ios) {
-        sources += [ "objc/Framework/UnitTests/RTCMTLVideoViewTests.mm" ]
-        if (current_cpu != "arm64") {
-          sources += [ "objc/Framework/Classes/Metal/RTCMTLVideoView.m" ]
-        }
-      }
-
-      # TODO(tkchin): Cleanup this warning.
-      cflags = [ "-Wno-objc-property-no-attribute" ]
 
       # |-ObjC| flag needed to make sure category method implementations
       # are included:
@@ -316,12 +357,24 @@
 
       defines = [ "GTEST_RELATIVE_PATH" ]
       deps = [
-        ":rtc_sdk_peerconnection_objc",
+        ":objc_peerconnection",
+        "..//system_wrappers:system_wrappers_default",
         "../base:rtc_base_tests_utils",
         "//third_party/ocmock",
         "//webrtc/system_wrappers:system_wrappers_default",
       ]
 
+      # RTCMTLVideoView not supported on 32-bit arm
+      if (is_ios && current_cpu != "arm") {
+        sources += [ "objc/Framework/UnitTests/RTCMTLVideoViewTests.mm" ]
+        if (current_cpu != "arm64") {
+          # Only include this file on simulator, as it's already
+          # included in device builds.
+          sources += [ "objc/Framework/Classes/Metal/RTCMTLVideoView.m" ]
+          libs = [ "CoreVideo.framework" ]
+        }
+      }
+
       if (!build_with_chromium && is_clang) {
         # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
         suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
@@ -330,16 +383,12 @@
   }
 
   if (is_ios) {
-    ios_framework_bundle("rtc_sdk_framework_objc") {
+    ios_framework_bundle("objc_framework") {
       info_plist = "objc/Framework/Info.plist"
       output_name = "WebRTC"
 
       common_objc_headers = [
         "objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h",
-        "objc/Framework/Headers/WebRTC/RTCAudioSource.h",
-        "objc/Framework/Headers/WebRTC/RTCAudioTrack.h",
-        "objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h",
-        "objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h",
         "objc/Framework/Headers/WebRTC/RTCConfiguration.h",
         "objc/Framework/Headers/WebRTC/RTCDataChannel.h",
         "objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h",
@@ -357,7 +406,6 @@
         "objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h",
         "objc/Framework/Headers/WebRTC/RTCMetrics.h",
         "objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h",
-        "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h",
         "objc/Framework/Headers/WebRTC/RTCPeerConnection.h",
         "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h",
         "objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h",
@@ -392,23 +440,22 @@
       ]
 
       deps = [
-        ":rtc_sdk_peerconnection_objc",
+        ":objc_peerconnection",
+        "../base:rtc_base_approved",
         "../system_wrappers:field_trial_default",
         "../system_wrappers:metrics_default",
       ]
 
       libs = [
         "AVFoundation.framework",
-        "AudioToolbox.framework",
         "CoreGraphics.framework",
         "CoreMedia.framework",
         "GLKit.framework",
-        "VideoToolbox.framework",
       ]
 
       configs += [ "..:common_objc" ]
 
-      public_configs = [ ":rtc_sdk_common_objc_config" ]
+      public_configs = [ ":objc_common_config" ]
 
       if (!build_with_chromium && is_clang) {
         # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163)
@@ -420,16 +467,16 @@
   rtc_static_library("rtc_sdk_objc") {
     complete_static_lib = true
     deps = [
-      ":rtc_sdk_peerconnection_objc",
+      ":objc_peerconnection",
       "//webrtc/system_wrappers:field_trial_default",
       "//webrtc/system_wrappers:metrics_default",
     ]
   }
 
-  rtc_static_library("rtc_sdk_corevideoframebuffer") {
+  rtc_static_library("objc_corevideoframebuffer") {
     sources = [
-      "objc/Framework/Classes/corevideo_frame_buffer.cc",
-      "objc/Framework/Classes/corevideo_frame_buffer.h",
+      "objc/Framework/Classes/Video/corevideo_frame_buffer.cc",
+      "objc/Framework/Classes/Video/corevideo_frame_buffer.h",
     ]
 
     deps = [
@@ -437,32 +484,39 @@
       "../common_video",
     ]
 
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+
     libs = [ "CoreVideo.framework" ]
   }
 
-  rtc_static_library("webrtc_h264_video_toolbox") {
+  rtc_static_library("objc_videotoolbox") {
     sources = [
-      "objc/Framework/Classes/h264_video_toolbox_decoder.cc",
-      "objc/Framework/Classes/h264_video_toolbox_decoder.h",
-      "objc/Framework/Classes/h264_video_toolbox_encoder.h",
-      "objc/Framework/Classes/h264_video_toolbox_encoder.mm",
-      "objc/Framework/Classes/h264_video_toolbox_nalu.cc",
-      "objc/Framework/Classes/h264_video_toolbox_nalu.h",
+      "objc/Framework/Classes/VideoToolbox/decoder.cc",
+      "objc/Framework/Classes/VideoToolbox/decoder.h",
+      "objc/Framework/Classes/VideoToolbox/encoder.h",
+      "objc/Framework/Classes/VideoToolbox/encoder.mm",
+      "objc/Framework/Classes/VideoToolbox/nalu_rewriter.cc",
+      "objc/Framework/Classes/VideoToolbox/nalu_rewriter.h",
+      "objc/Framework/Classes/VideoToolbox/videocodecfactory.cc",
+      "objc/Framework/Classes/VideoToolbox/videocodecfactory.h",
     ]
 
     configs += [ "//webrtc:common_objc" ]
 
     deps = [
-      ":rtc_sdk_common_objc",
-      ":rtc_sdk_corevideoframebuffer",
-      "../api:video_frame_api",
+      ":objc_common",
+      ":objc_corevideoframebuffer",
       "../base:rtc_base_approved",
-      "../common_video",
-      "../media:rtc_media_base",
-      "../modules:module_api",
-      "../modules/video_coding:video_coding_utility",
-      "../modules/video_coding:webrtc_h264",
-      "../system_wrappers",
+      "//webrtc/common_video",
+      "//webrtc/media:rtc_media",
+      "//webrtc/media:rtc_media_base",
+      "//webrtc/modules:module_api",
+      "//webrtc/modules/video_coding:video_coding_utility",
+      "//webrtc/modules/video_coding:webrtc_h264",
+      "//webrtc/system_wrappers",
     ]
 
     libs = [
diff --git a/webrtc/sdk/objc/DEPS b/webrtc/sdk/objc/DEPS
index dcb040e..ac54cc0 100644
--- a/webrtc/sdk/objc/DEPS
+++ b/webrtc/sdk/objc/DEPS
@@ -1,5 +1,12 @@
 include_rules = [
   "+WebRTC",
+  "+Common",
+  "+Video",
+  "+Audio",
+  "+UI",
+  "+PeerConnection",
+  "+VideoToolbox",
+  "+Metal",
   "+webrtc/api",
   "+webrtc/common_video/h264",
   "+webrtc/common_video/include",
diff --git a/webrtc/sdk/objc/Framework/Classes/NSString+StdString.h b/webrtc/sdk/objc/Framework/Classes/Common/NSString+StdString.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/NSString+StdString.h
rename to webrtc/sdk/objc/Framework/Classes/Common/NSString+StdString.h
diff --git a/webrtc/sdk/objc/Framework/Classes/NSString+StdString.mm b/webrtc/sdk/objc/Framework/Classes/Common/NSString+StdString.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/NSString+StdString.mm
rename to webrtc/sdk/objc/Framework/Classes/Common/NSString+StdString.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCDispatcher+Private.h b/webrtc/sdk/objc/Framework/Classes/Common/RTCDispatcher+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCDispatcher+Private.h
rename to webrtc/sdk/objc/Framework/Classes/Common/RTCDispatcher+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCDispatcher.m b/webrtc/sdk/objc/Framework/Classes/Common/RTCDispatcher.m
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCDispatcher.m
rename to webrtc/sdk/objc/Framework/Classes/Common/RTCDispatcher.m
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm b/webrtc/sdk/objc/Framework/Classes/Common/RTCFieldTrials.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm
rename to webrtc/sdk/objc/Framework/Classes/Common/RTCFieldTrials.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCFileLogger.mm b/webrtc/sdk/objc/Framework/Classes/Common/RTCFileLogger.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCFileLogger.mm
rename to webrtc/sdk/objc/Framework/Classes/Common/RTCFileLogger.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCLogging.mm b/webrtc/sdk/objc/Framework/Classes/Common/RTCLogging.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCLogging.mm
rename to webrtc/sdk/objc/Framework/Classes/Common/RTCLogging.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCUIApplication.h b/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplication.h
similarity index 75%
rename from webrtc/sdk/objc/Framework/Classes/RTCUIApplication.h
rename to webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplication.h
index fb11ede..3df6d53 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCUIApplication.h
+++ b/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplication.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_BASE_OBJC_RTC_UI_APPLICATION_H_
-#define WEBRTC_BASE_OBJC_RTC_UI_APPLICATION_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_UI_RTCUIAPPLICATION_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_UI_RTCUIAPPLICATION_H_
 
 #include "WebRTC/RTCMacros.h"
 
@@ -18,4 +18,4 @@
 RTC_EXTERN bool RTCIsUIApplicationActive();
 #endif  // WEBRTC_IOS
 
-#endif  // WEBRTC_BASE_OBJC_RTC_UI_APPLICATION_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_UI_RTCUIAPPLICATION_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCUIApplication.mm b/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplication.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCUIApplication.mm
rename to webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplication.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/UIDevice+RTCDevice.mm b/webrtc/sdk/objc/Framework/Classes/Common/UIDevice+RTCDevice.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/UIDevice+RTCDevice.mm
rename to webrtc/sdk/objc/Framework/Classes/Common/UIDevice+RTCDevice.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/helpers.h b/webrtc/sdk/objc/Framework/Classes/Common/helpers.h
similarity index 91%
rename from webrtc/sdk/objc/Framework/Classes/helpers.h
rename to webrtc/sdk/objc/Framework/Classes/Common/helpers.h
index 35a228f..d9e1d7f 100644
--- a/webrtc/sdk/objc/Framework/Classes/helpers.h
+++ b/webrtc/sdk/objc/Framework/Classes/Common/helpers.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_HELPERS_H_
-#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_HELPERS_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_COMMON_HELPERS_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_COMMON_HELPERS_H_
 
 #if defined(WEBRTC_IOS)
 
@@ -33,8 +33,6 @@
 // Example: <NSThread: 0x170066d80>{number = 1, name = main}
 std::string GetCurrentThreadDescription();
 
-std::string GetAudioSessionCategory();
-
 // Returns the current name of the operating system.
 std::string GetSystemName();
 
@@ -75,4 +73,4 @@
 
 #endif  // defined(WEBRTC_IOS)
 
-#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_HELPERS_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_COMMON_HELPERS_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/helpers.mm b/webrtc/sdk/objc/Framework/Classes/Common/helpers.mm
similarity index 93%
rename from webrtc/sdk/objc/Framework/Classes/helpers.mm
rename to webrtc/sdk/objc/Framework/Classes/Common/helpers.mm
index c0e5f1e..fef75a5 100644
--- a/webrtc/sdk/objc/Framework/Classes/helpers.mm
+++ b/webrtc/sdk/objc/Framework/Classes/Common/helpers.mm
@@ -9,7 +9,6 @@
  */
 
 
-#import <AVFoundation/AVFoundation.h>
 #import <Foundation/Foundation.h>
 #import <sys/sysctl.h>
 #if defined(WEBRTC_IOS)
@@ -20,7 +19,7 @@
 
 #include "webrtc/base/checks.h"
 #include "webrtc/base/logging.h"
-#include "webrtc/sdk/objc/Framework/Classes/helpers.h"
+#include "webrtc/sdk/objc/Framework/Classes/Common/helpers.h"
 
 namespace webrtc {
 namespace ios {
@@ -65,11 +64,6 @@
 }
 
 #if defined(WEBRTC_IOS)
-std::string GetAudioSessionCategory() {
-  NSString* category = [[AVAudioSession sharedInstance] category];
-  return StdStringFromNSString(category);
-}
-
 std::string GetSystemName() {
   NSString* osName = [[UIDevice currentDevice] systemName];
   return StdStringFromNSString(osName);
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoSource+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAVFoundationVideoSource+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoSource+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAVFoundationVideoSource+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoSource.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAVFoundationVideoSource.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoSource.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAVFoundationVideoSource.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAudioSource+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioSource+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAudioSource+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioSource+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAudioSource.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioSource.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAudioSource.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioSource.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAudioTrack+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioTrack+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAudioTrack+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioTrack+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAudioTrack.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioTrack.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAudioTrack.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCAudioTrack.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCCameraVideoCapturer.m b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCCameraVideoCapturer.m
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCCameraVideoCapturer.m
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCCameraVideoCapturer.m
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCConfiguration+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCConfiguration+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCConfiguration+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCConfiguration+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCConfiguration.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCConfiguration.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCConfiguration.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCConfiguration.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCDataChannel+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannel+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCDataChannel+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannel+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCDataChannel.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannel.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCDataChannel.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannel.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCDataChannelConfiguration+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCDataChannelConfiguration+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCDataChannelConfiguration.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCDataChannelConfiguration.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCDataChannelConfiguration.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCIceCandidate+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceCandidate+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCIceCandidate+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceCandidate+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCIceCandidate.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceCandidate.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCIceCandidate.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceCandidate.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCIceServer+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceServer+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCIceServer+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceServer+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCIceServer.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceServer.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCIceServer.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCIceServer.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCLegacyStatsReport+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCLegacyStatsReport+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCLegacyStatsReport.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCLegacyStatsReport.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCLegacyStatsReport.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaConstraints+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaConstraints+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaConstraints+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaConstraints+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaConstraints.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaConstraints.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaConstraints.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaConstraints.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaSource+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaSource+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaSource+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaSource+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaSource.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaSource.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaSource.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaSource.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaStream+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStream+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaStream+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStream+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaStream.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStream.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaStream.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStream.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaStreamTrack+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaStreamTrack+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMediaStreamTrack.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMediaStreamTrack.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMediaStreamTrack.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMetrics.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMetrics.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMetrics.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMetrics.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCMetricsSampleInfo.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+DataChannel.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+DataChannel.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+DataChannel.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+DataChannel.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Stats.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Stats.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCPeerConnection+Stats.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection+Stats.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCPeerConnection.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnection.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
similarity index 98%
rename from webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
index 18a707c..72a97ea 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCPeerConnectionFactory.mm
+++ b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm
@@ -11,7 +11,6 @@
 #import "RTCPeerConnectionFactory+Private.h"
 
 #import "NSString+StdString.h"
-#import "RTCAVFoundationVideoSource+Private.h"
 #import "RTCAudioSource+Private.h"
 #import "RTCAudioTrack+Private.h"
 #import "RTCMediaConstraints+Private.h"
@@ -19,10 +18,11 @@
 #import "RTCPeerConnection+Private.h"
 #import "RTCVideoSource+Private.h"
 #import "RTCVideoTrack+Private.h"
+#import "RTCAVFoundationVideoSource+Private.h"
 #import "WebRTC/RTCLogging.h"
 
-#include "objcvideotracksource.h"
-#include "videotoolboxvideocodecfactory.h"
+#include "Video/objcvideotracksource.h"
+#include "VideoToolbox/videocodecfactory.h"
 
 @implementation RTCPeerConnectionFactory {
   std::unique_ptr<rtc::Thread> _networkThread;
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpCodecParameters+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpCodecParameters+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpCodecParameters.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpCodecParameters.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpCodecParameters.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpEncodingParameters+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpEncodingParameters+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpEncodingParameters.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpEncodingParameters.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpEncodingParameters.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpParameters+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpParameters+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpParameters+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpParameters+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpParameters.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpParameters.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpParameters.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpParameters.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpReceiver+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpReceiver+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpReceiver.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpReceiver.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpReceiver.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpSender+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpSender+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCRtpSender.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCRtpSender.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCRtpSender.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCSSLAdapter.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCSSLAdapter.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCSSLAdapter.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCSSLAdapter.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCSessionDescription+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCSessionDescription+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCSessionDescription+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCSessionDescription+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCSessionDescription.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCSessionDescription.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCSessionDescription.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCSessionDescription.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCTracing.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCTracing.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCTracing.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCTracing.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoCapturer.m b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCapturer.m
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoCapturer.m
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCapturer.m
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoFrame+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoFrame+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoFrame+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoFrame.mm
similarity index 97%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoFrame.mm
index ed6c288..bad3dc8 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCVideoFrame.mm
+++ b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoFrame.mm
@@ -10,7 +10,7 @@
 
 #import "RTCVideoFrame+Private.h"
 
-#include "webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h"
 
 @implementation RTCVideoFrame {
   rtc::scoped_refptr<webrtc::VideoFrameBuffer> _videoBuffer;
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoRendererAdapter.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoRendererAdapter.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoSource+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoSource+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoSource+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoSource+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoSource.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoSource.mm
similarity index 96%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoSource.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoSource.mm
index 6748580..ef95e65 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCVideoSource.mm
+++ b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoSource.mm
@@ -11,7 +11,7 @@
 #import "RTCVideoSource+Private.h"
 
 #include "webrtc/base/checks.h"
-#include "webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.h"
 
 // TODO(magjed): Refactor this class and target ObjcVideoTrackSource only once
 // RTCAVFoundationVideoSource is gone. See http://crbug/webrtc/7177 for more
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoTrack+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoTrack+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoTrack+Private.h
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoTrack+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCVideoTrack.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoTrack.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCVideoTrack.mm
rename to webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoTrack.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m b/webrtc/sdk/objc/Framework/Classes/UI/RTCCameraPreviewView.m
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m
rename to webrtc/sdk/objc/Framework/Classes/UI/RTCCameraPreviewView.m
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCEAGLVideoView.m b/webrtc/sdk/objc/Framework/Classes/UI/RTCEAGLVideoView.m
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCEAGLVideoView.m
rename to webrtc/sdk/objc/Framework/Classes/UI/RTCEAGLVideoView.m
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCNSGLVideoView.m b/webrtc/sdk/objc/Framework/Classes/UI/RTCNSGLVideoView.m
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCNSGLVideoView.m
rename to webrtc/sdk/objc/Framework/Classes/UI/RTCNSGLVideoView.m
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoCapturerInternal.h b/webrtc/sdk/objc/Framework/Classes/Video/RTCAVFoundationVideoCapturerInternal.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoCapturerInternal.h
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCAVFoundationVideoCapturerInternal.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoCapturerInternal.mm b/webrtc/sdk/objc/Framework/Classes/Video/RTCAVFoundationVideoCapturerInternal.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCAVFoundationVideoCapturerInternal.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCAVFoundationVideoCapturerInternal.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCI420Shader.mm b/webrtc/sdk/objc/Framework/Classes/Video/RTCI420Shader.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCI420Shader.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCI420Shader.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCI420TextureCache.h b/webrtc/sdk/objc/Framework/Classes/Video/RTCI420TextureCache.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCI420TextureCache.h
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCI420TextureCache.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCI420TextureCache.mm b/webrtc/sdk/objc/Framework/Classes/Video/RTCI420TextureCache.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCI420TextureCache.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCI420TextureCache.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCNV12TextureCache.h b/webrtc/sdk/objc/Framework/Classes/Video/RTCNV12TextureCache.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCNV12TextureCache.h
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCNV12TextureCache.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCNV12TextureCache.m b/webrtc/sdk/objc/Framework/Classes/Video/RTCNV12TextureCache.m
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCNV12TextureCache.m
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCNV12TextureCache.m
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCNativeNV12Shader.mm b/webrtc/sdk/objc/Framework/Classes/Video/RTCNativeNV12Shader.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCNativeNV12Shader.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCNativeNV12Shader.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCOpenGLDefines.h b/webrtc/sdk/objc/Framework/Classes/Video/RTCOpenGLDefines.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCOpenGLDefines.h
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCOpenGLDefines.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCShader+Private.h b/webrtc/sdk/objc/Framework/Classes/Video/RTCShader+Private.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCShader+Private.h
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCShader+Private.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCShader.h b/webrtc/sdk/objc/Framework/Classes/Video/RTCShader.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCShader.h
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCShader.h
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCShader.mm b/webrtc/sdk/objc/Framework/Classes/Video/RTCShader.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/RTCShader.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/RTCShader.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/avfoundationformatmapper.h b/webrtc/sdk/objc/Framework/Classes/Video/avfoundationformatmapper.h
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/avfoundationformatmapper.h
rename to webrtc/sdk/objc/Framework/Classes/Video/avfoundationformatmapper.h
diff --git a/webrtc/sdk/objc/Framework/Classes/avfoundationformatmapper.mm b/webrtc/sdk/objc/Framework/Classes/Video/avfoundationformatmapper.mm
similarity index 100%
rename from webrtc/sdk/objc/Framework/Classes/avfoundationformatmapper.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/avfoundationformatmapper.mm
diff --git a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.h b/webrtc/sdk/objc/Framework/Classes/Video/avfoundationvideocapturer.h
similarity index 90%
rename from webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.h
rename to webrtc/sdk/objc/Framework/Classes/Video/avfoundationvideocapturer.h
index 6253405..45161b6 100644
--- a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.h
+++ b/webrtc/sdk/objc/Framework/Classes/Video/avfoundationvideocapturer.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_API_OBJC_AVFOUNDATION_VIDEO_CAPTURER_H_
-#define WEBRTC_API_OBJC_AVFOUNDATION_VIDEO_CAPTURER_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_AVFOUNDATIONVIDEOCAPTURER_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_AVFOUNDATIONVIDEOCAPTURER_H_
 
 #import <AVFoundation/AVFoundation.h>
 
@@ -69,4 +69,4 @@
 
 }  // namespace webrtc
 
-#endif  // WEBRTC_API_OBJC_AVFOUNDATION_VIDEO_CAPTURER_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_AVFOUNDATIONVIDEOCAPTURER_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm b/webrtc/sdk/objc/Framework/Classes/Video/avfoundationvideocapturer.mm
similarity index 98%
rename from webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/avfoundationvideocapturer.mm
index 72117f5..2b2ea2a 100644
--- a/webrtc/sdk/objc/Framework/Classes/avfoundationvideocapturer.mm
+++ b/webrtc/sdk/objc/Framework/Classes/Video/avfoundationvideocapturer.mm
@@ -23,7 +23,7 @@
 #include "webrtc/base/checks.h"
 #include "webrtc/base/logging.h"
 #include "webrtc/base/thread.h"
-#include "webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h"
 
 namespace webrtc {
 
diff --git a/webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.cc b/webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.cc
similarity index 98%
rename from webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.cc
rename to webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.cc
index 3e98cb4..9593d13 100644
--- a/webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.cc
+++ b/webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.cc
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h"
 
 #include "libyuv/convert.h"
 #include "webrtc/api/video/i420_buffer.h"
diff --git a/webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h b/webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h
similarity index 89%
rename from webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h
rename to webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h
index 3bf6498..fc8c171 100644
--- a/webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h
+++ b/webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_COREVIDEO_FRAME_BUFFER_H_
-#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_COREVIDEO_FRAME_BUFFER_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_COREVIDEO_FRAME_BUFFER_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_COREVIDEO_FRAME_BUFFER_H_
 
 #include <CoreVideo/CoreVideo.h>
 
@@ -56,4 +56,4 @@
 
 }  // namespace webrtc
 
-#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_COREVIDEO_FRAME_BUFFER_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_COREVIDEO_FRAME_BUFFER_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h b/webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.h
similarity index 87%
rename from webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h
rename to webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.h
index 9bde63f..133c8c6 100644
--- a/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h
+++ b/webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_
-#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_OBJCVIDEOTRACKSOURCE_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_OBJCVIDEOTRACKSOURCE_H_
 
 #include "WebRTC/RTCMacros.h"
 #include "webrtc/base/timestampaligner.h"
@@ -49,4 +49,4 @@
 
 }  // namespace webrtc
 
-#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEO_OBJCVIDEOTRACKSOURCE_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.mm b/webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.mm
similarity index 94%
rename from webrtc/sdk/objc/Framework/Classes/objcvideotracksource.mm
rename to webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.mm
index fc71085..1cc772f 100644
--- a/webrtc/sdk/objc/Framework/Classes/objcvideotracksource.mm
+++ b/webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.mm
@@ -8,12 +8,12 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "webrtc/sdk/objc/Framework/Classes/objcvideotracksource.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/objcvideotracksource.h"
 
 #import "RTCVideoFrame+Private.h"
 
 #include "webrtc/api/video/i420_buffer.h"
-#include "webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h"
 
 namespace webrtc {
 
diff --git a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.cc b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.cc
similarity index 96%
rename from webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.cc
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.cc
index efaaeeb..9c2509f 100644
--- a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.cc
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.cc
@@ -9,20 +9,20 @@
  *
  */
 
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.h"
 
 #include <memory>
 
 #if defined(WEBRTC_IOS)
-#include "RTCUIApplication.h"
+#include "Common/RTCUIApplication.h"
 #endif
 #include "libyuv/convert.h"
 #include "webrtc/api/video/video_frame.h"
 #include "webrtc/base/checks.h"
 #include "webrtc/base/logging.h"
 #include "webrtc/common_video/include/video_frame.h"
-#include "webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h"
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.h"
 
 namespace webrtc {
 namespace {
diff --git a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.h b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.h
similarity index 88%
rename from webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.h
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.h
index d81c112..f2252da 100644
--- a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.h
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_DECODER_H_
-#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_DECODER_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_DECODER_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_DECODER_H_
 
 #include "webrtc/modules/video_coding/codecs/h264/include/h264.h"
 
@@ -56,4 +56,4 @@
 
 }  // namespace webrtc
 
-#endif // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_DECODER_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_DECODER_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.h
similarity index 93%
rename from webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.h
index 09aa7db..92cd6b7 100644
--- a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_ENCODER_H_
-#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_ENCODER_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_ENCODER_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_ENCODER_H_
 
 #include "webrtc/api/video/video_rotation.h"
 #include "webrtc/base/criticalsection.h"
@@ -94,4 +94,4 @@
 
 }  // namespace webrtc
 
-#endif // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_ENCODER_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_ENCODER_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.mm b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.mm
similarity index 98%
rename from webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.mm
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.mm
index 596a727..8ff27f8 100644
--- a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.mm
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.mm
@@ -9,7 +9,7 @@
  *
  */
 
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.h"
 
 #include <memory>
 #include <string>
@@ -17,14 +17,14 @@
 
 #if defined(WEBRTC_IOS)
 #import "WebRTC/UIDevice+RTCDevice.h"
-#include "RTCUIApplication.h"
+#include "Common/RTCUIApplication.h"
 #endif
 #include "libyuv/convert_from.h"
 #include "webrtc/base/checks.h"
 #include "webrtc/base/logging.h"
 #include "webrtc/common_video/h264/profile_level_id.h"
-#include "webrtc/sdk/objc/Framework/Classes/corevideo_frame_buffer.h"
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.h"
+#include "webrtc/sdk/objc/Framework/Classes/Video/corevideo_frame_buffer.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.h"
 #include "webrtc/system_wrappers/include/clock.h"
 
 namespace internal {
diff --git a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.cc b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.cc
similarity index 98%
rename from webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.cc
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.cc
index d48e990..81f51d8 100644
--- a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.cc
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.cc
@@ -9,7 +9,7 @@
  *
  */
 
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.h"
 
 #include <CoreFoundation/CoreFoundation.h>
 #include <memory>
diff --git a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.h b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.h
similarity index 94%
rename from webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.h
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.h
index 23e9f7f..530fbe2 100644
--- a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.h
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_NALU_H_
-#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_NALU_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_NALU_REWRITER_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_NALU_REWRITER_H_
 
 #include "webrtc/modules/video_coding/codecs/h264/include/h264.h"
 
@@ -109,4 +109,4 @@
 
 }  // namespace webrtc
 
-#endif // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_H264_VIDEO_TOOLBOX_NALU_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_NALU_REWRITER_H_
diff --git a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu_unittest.cc b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter_unittest.cc
similarity index 98%
rename from webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu_unittest.cc
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter_unittest.cc
index bc4efa0..ba3a3d1 100644
--- a/webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu_unittest.cc
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter_unittest.cc
@@ -12,7 +12,7 @@
 #include <memory>
 
 #include "webrtc/base/arraysize.h"
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_nalu.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/nalu_rewriter.h"
 #include "webrtc/test/gtest.h"
 
 namespace webrtc {
diff --git a/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.cc
similarity index 93%
rename from webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.cc
index 6fcb182..05806cd 100644
--- a/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.cc
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.cc
@@ -7,13 +7,13 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
-#include "webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.h"
 
 #include "webrtc/base/logging.h"
 #include "webrtc/common_video/h264/profile_level_id.h"
 #include "webrtc/media/base/codec.h"
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_decoder.h"
-#include "webrtc/sdk/objc/Framework/Classes/h264_video_toolbox_encoder.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/decoder.h"
+#include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/encoder.h"
 #include "webrtc/system_wrappers/include/field_trial.h"
 
 namespace webrtc {
diff --git a/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.h b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.h
similarity index 87%
rename from webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.h
rename to webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.h
index 8acd9dd..2332bbc 100644
--- a/webrtc/sdk/objc/Framework/Classes/videotoolboxvideocodecfactory.h
+++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/videocodecfactory.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  *
  */
-#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOXVIDEOCODECFACTORY_H_
-#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOXVIDEOCODECFACTORY_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_VIDEOCODECFACTORY_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_VIDEOCODECFACTORY_H_
 
 #include "webrtc/media/engine/webrtcvideoencoderfactory.h"
 #include "webrtc/media/engine/webrtcvideodecoderfactory.h"
@@ -49,4 +49,4 @@
 
 }  // namespace webrtc
 
-#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOXVIDEOCODECFACTORY_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_VIDEOCODECFACTORY_H_
diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMacros.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMacros.h
index f9f15c3..a989074 100644
--- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMacros.h
+++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCMacros.h
@@ -8,8 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#ifndef WEBRTC_BASE_OBJC_RTC_MACROS_H_
-#define WEBRTC_BASE_OBJC_RTC_MACROS_H_
+#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_HEADERS_WEBRTC_RTCMACROS_H_
+#define WEBRTC_SDK_OBJC_FRAMEWORK_HEADERS_WEBRTC_RTCMACROS_H_
 
 #define RTC_EXPORT __attribute__((visibility("default")))
 
@@ -25,4 +25,4 @@
 #define RTC_FWD_DECL_OBJC_CLASS(classname) typedef struct objc_object classname
 #endif
 
-#endif  // WEBRTC_BASE_OBJC_RTC_MACROS_H_
+#endif  // WEBRTC_SDK_OBJC_FRAMEWORK_HEADERS_WEBRTC_RTCMACROS_H_
diff --git a/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm b/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm
index cbc2e50..4221a7c 100644
--- a/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm
+++ b/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm
@@ -13,7 +13,7 @@
 
 #include "webrtc/base/gunit.h"
 
-#include "avfoundationformatmapper.h"
+#include "Video/avfoundationformatmapper.h"
 
 
 // Width and height don't play any role so lets use predefined values throughout
diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn
index aa6f322..9d5feba 100644
--- a/webrtc/test/BUILD.gn
+++ b/webrtc/test/BUILD.gn
@@ -140,7 +140,7 @@
   }
 
   if (is_ios && !build_with_chromium) {
-    deps += [ "//webrtc/sdk:rtc_sdk_common_objc" ]
+    deps += [ "//webrtc/sdk:objc_common" ]
   }
 
   if (rtc_use_memcheck) {
@@ -210,7 +210,7 @@
     }
 
     if (is_ios) {
-      deps += [ "//webrtc/sdk:rtc_sdk_common_objc" ]
+      deps += [ "//webrtc/sdk:objc_common" ]
     }
 
     if (rtc_use_memcheck) {
@@ -316,6 +316,9 @@
   ]
   if (is_ios) {
     sources += [ "testsupport/iosfileutils.mm" ]
+    deps = [
+      "//webrtc/sdk:objc_common",
+    ]
   }
   visibility = [ ":*" ]
 }
diff --git a/webrtc/test/testsupport/iosfileutils.mm b/webrtc/test/testsupport/iosfileutils.mm
index adf17a6..7d530ec 100644
--- a/webrtc/test/testsupport/iosfileutils.mm
+++ b/webrtc/test/testsupport/iosfileutils.mm
@@ -15,7 +15,7 @@
 
 #include "webrtc/base/checks.h"
 #include "webrtc/typedefs.h"
-#include "webrtc/sdk/objc/Framework/Classes/helpers.h"
+#include "webrtc/sdk/objc/Framework/Classes/Common/helpers.h"
 
 namespace webrtc {
 namespace test {