Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(706)

Unified Diff: webrtc/examples/objc/AppRTCMobile/ios/ARDMediaConstraintsModel.m

Issue 2462623002: Add setting to AppRTCMobile for iOS, that can change capture resolution. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698