diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index 0041d04..c5bc83f 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -230,10 +230,6 @@
       "objc/AppRTCMobile/ARDTURNClient+Internal.h",
       "objc/AppRTCMobile/ARDTURNClient.h",
       "objc/AppRTCMobile/ARDTURNClient.m",
-      "objc/AppRTCMobile/ARDVideoDecoderFactory.h",
-      "objc/AppRTCMobile/ARDVideoDecoderFactory.m",
-      "objc/AppRTCMobile/ARDVideoEncoderFactory.h",
-      "objc/AppRTCMobile/ARDVideoEncoderFactory.m",
       "objc/AppRTCMobile/ARDWebSocketChannel.h",
       "objc/AppRTCMobile/ARDWebSocketChannel.m",
       "objc/AppRTCMobile/RTCIceCandidate+JSON.h",
diff --git a/examples/objc/AppRTCMobile/ARDAppClient.m b/examples/objc/AppRTCMobile/ARDAppClient.m
index 8e933b9..f753828 100644
--- a/examples/objc/AppRTCMobile/ARDAppClient.m
+++ b/examples/objc/AppRTCMobile/ARDAppClient.m
@@ -22,6 +22,7 @@
 #import "WebRTC/RTCPeerConnectionFactory.h"
 #import "WebRTC/RTCRtpSender.h"
 #import "WebRTC/RTCTracing.h"
+#import "WebRTC/RTCVideoCodecFactory.h"
 #import "WebRTC/RTCVideoTrack.h"
 
 #import "ARDAppEngineClient.h"
@@ -31,8 +32,6 @@
 #import "ARDSignalingMessage.h"
 #import "ARDTURNClient+Internal.h"
 #import "ARDUtilities.h"
-#import "ARDVideoDecoderFactory.h"
-#import "ARDVideoEncoderFactory.h"
 #import "ARDWebSocketChannel.h"
 #import "RTCIceCandidate+JSON.h"
 #import "RTCSessionDescription+JSON.h"
@@ -218,8 +217,8 @@
   _isLoopback = isLoopback;
   self.state = kARDAppClientStateConnecting;
 
-  ARDVideoDecoderFactory *decoderFactory = [[ARDVideoDecoderFactory alloc] init];
-  ARDVideoEncoderFactory *encoderFactory = [[ARDVideoEncoderFactory alloc] init];
+  RTCDefaultVideoDecoderFactory *decoderFactory = [[RTCDefaultVideoDecoderFactory alloc] init];
+  RTCDefaultVideoEncoderFactory *encoderFactory = [[RTCDefaultVideoEncoderFactory alloc] init];
   encoderFactory.preferredCodec = [settings currentVideoCodecSettingFromStore];
   _factory = [[RTCPeerConnectionFactory alloc] initWithEncoderFactory:encoderFactory
                                                        decoderFactory:decoderFactory];
diff --git a/examples/objc/AppRTCMobile/ARDSettingsModel.m b/examples/objc/AppRTCMobile/ARDSettingsModel.m
index ac265c8..0a2bee6 100644
--- a/examples/objc/AppRTCMobile/ARDSettingsModel.m
+++ b/examples/objc/AppRTCMobile/ARDSettingsModel.m
@@ -10,9 +10,9 @@
 
 #import "ARDSettingsModel+Private.h"
 #import "ARDSettingsStore.h"
-#import "ARDVideoEncoderFactory.h"
 #import "WebRTC/RTCCameraVideoCapturer.h"
 #import "WebRTC/RTCMediaConstraints.h"
+#import "WebRTC/RTCVideoCodecFactory.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -66,9 +66,7 @@
 }
 
 - (NSArray<RTCVideoCodecInfo *> *)availableVideoCodecs {
-  NSArray<RTCVideoCodecInfo *> *supportedCodecs =
-      [[[ARDVideoEncoderFactory alloc] init] supportedCodecs];
-  return supportedCodecs;
+  return [RTCDefaultVideoEncoderFactory supportedCodecs];
 }
 
 - (RTCVideoCodecInfo *)currentVideoCodecSettingFromStore {
diff --git a/examples/objc/AppRTCMobile/ARDVideoDecoderFactory.h b/examples/objc/AppRTCMobile/ARDVideoDecoderFactory.h
deleted file mode 100644
index bc8be99..0000000
--- a/examples/objc/AppRTCMobile/ARDVideoDecoderFactory.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- *  Copyright 2017 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 <Foundation/Foundation.h>
-#import "WebRTC/RTCVideoCodecFactory.h"
-
-@interface ARDVideoDecoderFactory : NSObject<RTCVideoDecoderFactory>
-
-@end
diff --git a/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.h b/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.h
deleted file mode 100644
index fb3e616..0000000
--- a/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- *  Copyright 2017 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 <Foundation/Foundation.h>
-#import "WebRTC/RTCVideoCodecFactory.h"
-
-@interface ARDVideoEncoderFactory : NSObject<RTCVideoEncoderFactory>
-
-@property(nonatomic, retain) RTCVideoCodecInfo* preferredCodec;
-
-@end
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index e79ebc7..4be5671 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -318,6 +318,8 @@
 
     rtc_static_library("peerconnectionfactory_objc") {
       sources = [
+        "objc/Framework/Classes/PeerConnection/RTCDefaultVideoDecoderFactory.m",
+        "objc/Framework/Classes/PeerConnection/RTCDefaultVideoEncoderFactory.m",
         "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Native.h",
         "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Private.h",
         "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory.mm",
diff --git a/examples/objc/AppRTCMobile/ARDVideoDecoderFactory.m b/sdk/objc/Framework/Classes/PeerConnection/RTCDefaultVideoDecoderFactory.m
similarity index 62%
rename from examples/objc/AppRTCMobile/ARDVideoDecoderFactory.m
rename to sdk/objc/Framework/Classes/PeerConnection/RTCDefaultVideoDecoderFactory.m
index 172635e..0ce0502 100644
--- a/examples/objc/AppRTCMobile/ARDVideoDecoderFactory.m
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCDefaultVideoDecoderFactory.m
@@ -8,20 +8,20 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#import "ARDVideoDecoderFactory.h"
+#import "WebRTC/RTCVideoCodecFactory.h"
 
 #import "WebRTC/RTCVideoCodecH264.h"
 #import "WebRTC/RTCVideoDecoderVP8.h"
 #import "WebRTC/RTCVideoDecoderVP9.h"
 
-@implementation ARDVideoDecoderFactory
+@implementation RTCDefaultVideoDecoderFactory
 
 - (id<RTCVideoDecoder>)createDecoder:(RTCVideoCodecInfo *)info {
-  if ([info.name isEqualToString:@"H264"]) {
+  if ([info.name isEqualToString:kRTCVideoCodecH264Name]) {
     return [[RTCVideoDecoderH264 alloc] init];
-  } else if ([info.name isEqualToString:@"VP8"]) {
+  } else if ([info.name isEqualToString:kRTCVideoCodecVp8Name]) {
     return [RTCVideoDecoderVP8 vp8Decoder];
-  } else if ([info.name isEqualToString:@"VP9"]) {
+  } else if ([info.name isEqualToString:kRTCVideoCodecVp9Name]) {
     return [RTCVideoDecoderVP9 vp9Decoder];
   }
 
@@ -30,9 +30,9 @@
 
 - (NSArray<RTCVideoCodecInfo *> *)supportedCodecs {
   return @[
-    [[RTCVideoCodecInfo alloc] initWithName:@"H264" parameters:nil],
-    [[RTCVideoCodecInfo alloc] initWithName:@"VP8" parameters:nil],
-    [[RTCVideoCodecInfo alloc] initWithName:@"VP9" parameters:nil]
+    [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name],
+    [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp8Name],
+    [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name]
   ];
 }
 
diff --git a/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.m b/sdk/objc/Framework/Classes/PeerConnection/RTCDefaultVideoEncoderFactory.m
similarity index 79%
rename from examples/objc/AppRTCMobile/ARDVideoEncoderFactory.m
rename to sdk/objc/Framework/Classes/PeerConnection/RTCDefaultVideoEncoderFactory.m
index d6ca592..71ffe29 100644
--- a/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.m
+++ b/sdk/objc/Framework/Classes/PeerConnection/RTCDefaultVideoEncoderFactory.m
@@ -8,18 +8,43 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#import "ARDVideoEncoderFactory.h"
+#import "WebRTC/RTCVideoCodecFactory.h"
 
-#import "ARDSettingsModel.h"
 #import "WebRTC/RTCVideoCodec.h"
 #import "WebRTC/RTCVideoCodecH264.h"
 #import "WebRTC/RTCVideoEncoderVP8.h"
 #import "WebRTC/RTCVideoEncoderVP9.h"
 
-@implementation ARDVideoEncoderFactory
+@implementation RTCDefaultVideoEncoderFactory
 
 @synthesize preferredCodec;
 
++ (NSArray<RTCVideoCodecInfo *> *)supportedCodecs {
+  NSDictionary<NSString *, NSString *> *constrainedHighParams = @{
+    @"profile-level-id" : kRTCLevel31ConstrainedHigh,
+    @"level-asymmetry-allowed" : @"1",
+    @"packetization-mode" : @"1",
+  };
+  RTCVideoCodecInfo *constrainedHighInfo =
+      [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name
+                                   parameters:constrainedHighParams];
+
+  NSDictionary<NSString *, NSString *> *constrainedBaselineParams = @{
+    @"profile-level-id" : kRTCLevel31ConstrainedBaseline,
+    @"level-asymmetry-allowed" : @"1",
+    @"packetization-mode" : @"1",
+  };
+  RTCVideoCodecInfo *constrainedBaselineInfo =
+      [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name
+                                   parameters:constrainedBaselineParams];
+
+  RTCVideoCodecInfo *vp8Info = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp8Name];
+
+  RTCVideoCodecInfo *vp9Info = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name];
+
+  return @[ constrainedHighInfo, constrainedBaselineInfo, vp8Info, vp9Info ];
+}
+
 - (id<RTCVideoEncoder>)createEncoder:(RTCVideoCodecInfo *)info {
   if ([info.name isEqualToString:kRTCVideoCodecH264Name]) {
     return [[RTCVideoEncoderH264 alloc] initWithCodecInfo:info];
@@ -33,35 +58,7 @@
 }
 
 - (NSArray<RTCVideoCodecInfo *> *)supportedCodecs {
-  NSMutableArray<RTCVideoCodecInfo *> *codecs = [NSMutableArray array];
-
-  NSDictionary<NSString *, NSString *> *constrainedHighParams = @{
-    @"profile-level-id" : kRTCLevel31ConstrainedHigh,
-    @"level-asymmetry-allowed" : @"1",
-    @"packetization-mode" : @"1",
-  };
-  RTCVideoCodecInfo *constrainedHighInfo =
-      [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name
-                                   parameters:constrainedHighParams];
-  [codecs addObject:constrainedHighInfo];
-
-  NSDictionary<NSString *, NSString *> *constrainedBaselineParams = @{
-    @"profile-level-id" : kRTCLevel31ConstrainedBaseline,
-    @"level-asymmetry-allowed" : @"1",
-    @"packetization-mode" : @"1",
-  };
-  RTCVideoCodecInfo *constrainedBaselineInfo =
-      [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecH264Name
-                                   parameters:constrainedBaselineParams];
-  [codecs addObject:constrainedBaselineInfo];
-
-  RTCVideoCodecInfo *vp8Info =
-      [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp8Name parameters:nil];
-  [codecs addObject:vp8Info];
-
-  RTCVideoCodecInfo *vp9Info =
-      [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name parameters:nil];
-  [codecs addObject:vp9Info];
+  NSMutableArray<RTCVideoCodecInfo *> *codecs = [[[self class] supportedCodecs] mutableCopy];
 
   NSMutableArray<RTCVideoCodecInfo *> *orderedCodecs = [NSMutableArray array];
   NSUInteger index = [codecs indexOfObject:self.preferredCodec];
diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h b/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h
index aa5f746..c77593f 100644
--- a/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h
+++ b/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h
@@ -33,4 +33,22 @@
 
 @end
 
+#pragma mark - Default factories
+
+/** These codec factories include support for all codecs bundled with WebRTC. If using custom
+ *  codecs, create custom implementations of RTCVideoEncoderFactory and RTCVideoDecoderFactory.
+ */
+RTC_EXPORT
+@interface RTCDefaultVideoEncoderFactory : NSObject <RTCVideoEncoderFactory>
+
+@property(nonatomic, retain) RTCVideoCodecInfo *preferredCodec;
+
++ (NSArray<RTCVideoCodecInfo *> *)supportedCodecs;
+
+@end
+
+RTC_EXPORT
+@interface RTCDefaultVideoDecoderFactory : NSObject <RTCVideoDecoderFactory>
+@end
+
 NS_ASSUME_NONNULL_END
