| /* | |
| * 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 "ARDSettingsStore.h" | |
| static NSString *const kVideoResolutionKey = @"rtc_video_resolution_key"; | |
| static NSString *const kVideoCodecKey = @"rtc_video_codec_info_key"; | |
| static NSString *const kBitrateKey = @"rtc_max_bitrate_key"; | |
| static NSString *const kAudioOnlyKey = @"rtc_audio_only_key"; | |
| static NSString *const kCreateAecDumpKey = @"rtc_create_aec_dump_key"; | |
| static NSString *const kUseManualAudioConfigKey = | |
| @"rtc_use_manual_audio_config_key"; | |
| NS_ASSUME_NONNULL_BEGIN | |
| @interface ARDSettingsStore () { | |
| NSUserDefaults *_storage; | |
| } | |
| @property(nonatomic, strong, readonly) NSUserDefaults *storage; | |
| @end | |
| @implementation ARDSettingsStore | |
| + (void)setDefaultsForVideoResolution:(NSString *)videoResolution | |
| videoCodec:(NSData *)videoCodec | |
| bitrate:(nullable NSNumber *)bitrate | |
| audioOnly:(BOOL)audioOnly | |
| createAecDump:(BOOL)createAecDump | |
| useManualAudioConfig:(BOOL)useManualAudioConfig { | |
| NSMutableDictionary<NSString *, id> *defaultsDictionary = [@{ | |
| kAudioOnlyKey : @(audioOnly), | |
| kCreateAecDumpKey : @(createAecDump), | |
| kUseManualAudioConfigKey : @(useManualAudioConfig) | |
| } mutableCopy]; | |
| if (videoResolution) { | |
| defaultsDictionary[kVideoResolutionKey] = videoResolution; | |
| } | |
| if (videoCodec) { | |
| defaultsDictionary[kVideoCodecKey] = videoCodec; | |
| } | |
| if (bitrate) { | |
| defaultsDictionary[kBitrateKey] = bitrate; | |
| } | |
| [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDictionary]; | |
| } | |
| - (NSUserDefaults *)storage { | |
| if (!_storage) { | |
| _storage = [NSUserDefaults standardUserDefaults]; | |
| } | |
| return _storage; | |
| } | |
| - (NSString *)videoResolution { | |
| return [self.storage objectForKey:kVideoResolutionKey]; | |
| } | |
| - (void)setVideoResolution:(NSString *)resolution { | |
| [self.storage setObject:resolution forKey:kVideoResolutionKey]; | |
| [self.storage synchronize]; | |
| } | |
| - (NSData *)videoCodec { | |
| return [self.storage objectForKey:kVideoCodecKey]; | |
| } | |
| - (void)setVideoCodec:(NSData *)videoCodec { | |
| [self.storage setObject:videoCodec forKey:kVideoCodecKey]; | |
| [self.storage synchronize]; | |
| } | |
| - (nullable NSNumber *)maxBitrate { | |
| return [self.storage objectForKey:kBitrateKey]; | |
| } | |
| - (void)setMaxBitrate:(nullable NSNumber *)value { | |
| [self.storage setObject:value forKey:kBitrateKey]; | |
| [self.storage synchronize]; | |
| } | |
| - (BOOL)audioOnly { | |
| return [self.storage boolForKey:kAudioOnlyKey]; | |
| } | |
| - (void)setAudioOnly:(BOOL)audioOnly { | |
| [self.storage setBool:audioOnly forKey:kAudioOnlyKey]; | |
| [self.storage synchronize]; | |
| } | |
| - (BOOL)createAecDump { | |
| return [self.storage boolForKey:kCreateAecDumpKey]; | |
| } | |
| - (void)setCreateAecDump:(BOOL)createAecDump { | |
| [self.storage setBool:createAecDump forKey:kCreateAecDumpKey]; | |
| [self.storage synchronize]; | |
| } | |
| - (BOOL)useManualAudioConfig { | |
| return [self.storage boolForKey:kUseManualAudioConfigKey]; | |
| } | |
| - (void)setUseManualAudioConfig:(BOOL)useManualAudioConfig { | |
| [self.storage setBool:useManualAudioConfig forKey:kUseManualAudioConfigKey]; | |
| [self.storage synchronize]; | |
| } | |
| @end | |
| NS_ASSUME_NONNULL_END |