AppRTCMobile iOS: Use video encoder factory to manage codec preference.
List codecs from factory in settings, select by changing order in factory.
Bug: webrtc:7925
Change-Id: If3c45e56713104c88705c67560325d002e6d6700
Reviewed-on: https://webrtc-review.googlesource.com/3720
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20312}
diff --git a/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.m b/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.m
index a895011..e4aafcc 100644
--- a/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.m
+++ b/examples/objc/AppRTCMobile/ARDVideoEncoderFactory.m
@@ -10,6 +10,7 @@
#import "ARDVideoEncoderFactory.h"
+#import "ARDSettingsModel.h"
#import "WebRTC/RTCVideoCodecH264.h"
#import "WebRTC/RTCVideoEncoderVP8.h"
#import "WebRTC/RTCVideoEncoderVP9.h"
@@ -19,6 +20,8 @@
@implementation ARDVideoEncoderFactory
+@synthesize preferredCodec;
+
- (id<RTCVideoEncoder>)createEncoder:(RTCVideoCodecInfo *)info {
if ([info.name isEqualToString:@"H264"]) {
return [[RTCVideoEncoderH264 alloc] initWithCodecInfo:info];
@@ -58,7 +61,15 @@
RTCVideoCodecInfo *vp9Info = [[RTCVideoCodecInfo alloc] initWithName:@"VP9" parameters:nil];
[codecs addObject:vp9Info];
- return [codecs copy];
+ NSMutableArray<RTCVideoCodecInfo *> *orderedCodecs = [NSMutableArray array];
+ NSUInteger index = [codecs indexOfObject:self.preferredCodec];
+ if (index != NSNotFound) {
+ [orderedCodecs addObject:[codecs objectAtIndex:index]];
+ [codecs removeObjectAtIndex:index];
+ }
+ [orderedCodecs addObjectsFromArray:codecs];
+
+ return [orderedCodecs copy];
}
@end