Chromium Code Reviews| Index: webrtc/examples/objc/AppRTCMobile/ios/ARDMediaConstraintsModel.m |
| diff --git a/webrtc/examples/objc/AppRTCMobile/ios/ARDMediaConstraintsModel.m b/webrtc/examples/objc/AppRTCMobile/ios/ARDMediaConstraintsModel.m |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..559abb586c47a17e71118a7dde5eda0b0283a5bd |
| --- /dev/null |
| +++ b/webrtc/examples/objc/AppRTCMobile/ios/ARDMediaConstraintsModel.m |
| @@ -0,0 +1,100 @@ |
| +/* |
| + * Copyright 2016 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 "ARDMediaConstraintsModel+Private.h" |
| +#import "ARDMediaConstraintsSettingsStore.h" |
| +#import "WebRTC/RTCMediaConstraints.h" |
| + |
| +NS_ASSUME_NONNULL_BEGIN |
| +static NSArray<NSString *> *videoResolutionsStaticValues() { |
| + return @[ @"640x480", @"960x540", @"1280x720" ]; |
| +} |
| + |
| +@interface ARDMediaConstraintsModel () { |
| + ARDMediaConstraintsSettingsStore *_settingsStore; |
| +} |
| +@end |
| + |
| +@implementation ARDMediaConstraintsModel |
| + |
| +- (NSArray<NSString *> *)availableVideoResoultionsMediaConstraints { |
| + return videoResolutionsStaticValues(); |
| +} |
| + |
| +- (NSString *)currentVideoResoultionConstraintFromStore { |
| + NSString *constraint = [[self settingsStore] videoResolutionConstraintsSetting]; |
| + if (!constraint) { |
| + constraint = [self defaultVideoResolutionMediaConstraint]; |
| + // To ensure consistency add the default to the store. |
| + [[self settingsStore] setVideoResolutionConstraintsSetting:constraint]; |
| + } |
| + return constraint; |
| +} |
| + |
| +- (void)storeVideoResoultionConstraint:(NSString *)constraint { |
| + [[self settingsStore] setVideoResolutionConstraintsSetting:constraint]; |
|
magjed_webrtc
2016/10/31 19:26:39
Should we verify that |constraint| is one of the a
daniela-webrtc
2016/11/01 09:51:12
Yes! I missed that. Thanks
|
| +} |
| + |
| +#pragma mark - Testable |
| + |
| +- (ARDMediaConstraintsSettingsStore *)settingsStore { |
| + if (!_settingsStore) { |
| + _settingsStore = [[ARDMediaConstraintsSettingsStore alloc] init]; |
| + } |
| + return _settingsStore; |
| +} |
| + |
| +- (nullable NSString *)currentVideoResolutionWidthFromStore { |
| + NSString *mediaConstraintFromStore = [self currentVideoResoultionConstraintFromStore]; |
| + |
| + return [self videoResolutionComponentAtIndex:0 inConstraintsString:mediaConstraintFromStore]; |
| +} |
| + |
| +- (nullable NSString *)currentVideoResolutionHeightFromStore { |
| + NSString *mediaConstraintFromStore = [self currentVideoResoultionConstraintFromStore]; |
| + return [self videoResolutionComponentAtIndex:1 inConstraintsString:mediaConstraintFromStore]; |
| +} |
| + |
| +#pragma mark - |
| + |
| +- (NSString *)defaultVideoResolutionMediaConstraint { |
| + return videoResolutionsStaticValues()[0]; |
| +} |
| + |
| +- (nullable NSString *)videoResolutionComponentAtIndex:(int)index |
| + inConstraintsString:(NSString *)constraint { |
| + if (index != 0 && index != 1) { |
| + return nil; |
| + } |
| + NSArray *components = [constraint componentsSeparatedByString:@"x"]; |
| + if (components.count != 2) { |
| + return nil; |
| + } |
| + return components[index]; |
| +} |
| + |
| +#pragma mark - Conversion to RTCMediaConstraints |
| + |
| +- (nullable NSDictionary *)currentMediaConstraintFromStoreAsRTCDictionary { |
| + NSDictionary *mediaConstraintsDictionary = nil; |
| + |
| + NSString *widthConstraint = [self currentVideoResolutionWidthFromStore]; |
| + NSString *heightConstraint = [self currentVideoResolutionHeightFromStore]; |
| + if (widthConstraint && heightConstraint) { |
| + mediaConstraintsDictionary = @{ |
| + kRTCMediaConstraintsMinWidth : widthConstraint, |
| + kRTCMediaConstraintsMinHeight : heightConstraint |
| + }; |
| + } |
| + return mediaConstraintsDictionary; |
| +} |
| + |
| +@end |
| +NS_ASSUME_NONNULL_END |