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 {