Add video codec setting to AppRTCMobile on iOS.
List items in settings menu no longer stay selected. Checkmarks are now
added to the selected options before the view appears.
BUG=webrtc:7316
TBR=denicija
Review-Url: https://codereview.webrtc.org/2735303004
Cr-Commit-Position: refs/heads/master@{#17296}
diff --git a/webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsModel.m b/webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsModel.m
index eda0275..7514689 100644
--- a/webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsModel.m
+++ b/webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsModel.m
@@ -17,6 +17,10 @@
return @[ @"640x480", @"960x540", @"1280x720" ];
}
+static NSArray<NSString *> *videoCodecsStaticValues() {
+ return @[ @"H264", @"VP8", @"VP9" ];
+}
+
@interface ARDSettingsModel () {
ARDSettingsStore *_settingsStore;
}
@@ -46,6 +50,27 @@
return YES;
}
+- (NSArray<NSString *> *)availableVideoCodecs {
+ return videoCodecsStaticValues();
+}
+
+- (NSString *)currentVideoCodecSettingFromStore {
+ NSString *videoCodec = [[self settingsStore] videoCodec];
+ if (!videoCodec) {
+ videoCodec = [self defaultVideoCodecSetting];
+ [[self settingsStore] setVideoCodec:videoCodec];
+ }
+ return videoCodec;
+}
+
+- (BOOL)storeVideoCodecSetting:(NSString *)videoCodec {
+ if (![[self availableVideoCodecs] containsObject:videoCodec]) {
+ return NO;
+ }
+ [[self settingsStore] setVideoCodec:videoCodec];
+ return YES;
+}
+
- (nullable NSNumber *)currentMaxBitrateSettingFromStore {
return [[self settingsStore] maxBitrate];
}
@@ -92,6 +117,10 @@
return components[index];
}
+- (NSString *)defaultVideoCodecSetting {
+ return videoCodecsStaticValues()[0];
+}
+
#pragma mark - Conversion to RTCMediaConstraints
- (nullable NSDictionary *)currentMediaConstraintFromStoreAsRTCDictionary {