blob: 86bdaaf54c7f51adf3ec7315d82561973381afc9 [file] [log] [blame]
denicijad17d5362016-11-02 02:56:09 -07001/*
2 * Copyright 2016 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
denicija2256e042016-11-09 06:26:18 -080011#import "ARDSettingsStore.h"
denicijad17d5362016-11-02 02:56:09 -070012
sakalc522e752017-04-05 12:17:48 -070013static NSString *const kVideoResolutionKey = @"rtc_video_resolution_key";
Anders Carlsson6bf43d22017-10-16 13:51:43 +020014static NSString *const kVideoCodecKey = @"rtc_video_codec_info_key";
denicija9af2b602016-11-17 00:43:43 -080015static NSString *const kBitrateKey = @"rtc_max_bitrate_key";
Anders Carlssone1500582017-06-15 16:05:13 +020016static NSString *const kAudioOnlyKey = @"rtc_audio_only_key";
17static NSString *const kCreateAecDumpKey = @"rtc_create_aec_dump_key";
18static NSString *const kUseLevelControllerKey = @"rtc_use_level_controller_key";
19static NSString *const kUseManualAudioConfigKey = @"rtc_use_manual_audio_config_key";
denicijad17d5362016-11-02 02:56:09 -070020
21NS_ASSUME_NONNULL_BEGIN
denicija9af2b602016-11-17 00:43:43 -080022@interface ARDSettingsStore () {
23 NSUserDefaults *_storage;
24}
sakalc4adacf2017-03-28 01:22:48 -070025@property(nonatomic, strong, readonly) NSUserDefaults *storage;
denicija9af2b602016-11-17 00:43:43 -080026@end
27
denicija2256e042016-11-09 06:26:18 -080028@implementation ARDSettingsStore
denicijad17d5362016-11-02 02:56:09 -070029
Anders Carlssone1500582017-06-15 16:05:13 +020030+ (void)setDefaultsForVideoResolution:(NSString *)videoResolution
Anders Carlsson6bf43d22017-10-16 13:51:43 +020031 videoCodec:(NSData *)videoCodec
Anders Carlssone1500582017-06-15 16:05:13 +020032 bitrate:(nullable NSNumber *)bitrate
33 audioOnly:(BOOL)audioOnly
34 createAecDump:(BOOL)createAecDump
35 useLevelController:(BOOL)useLevelController
36 useManualAudioConfig:(BOOL)useManualAudioConfig {
37 NSMutableDictionary<NSString *, id> *defaultsDictionary = [@{
Anders Carlssone1500582017-06-15 16:05:13 +020038 kAudioOnlyKey : @(audioOnly),
39 kCreateAecDumpKey : @(createAecDump),
40 kUseLevelControllerKey : @(useLevelController),
41 kUseManualAudioConfigKey : @(useManualAudioConfig)
42 } mutableCopy];
Peter Hanspersd92e0b52017-10-23 14:30:25 +020043
44 if (videoResolution) {
45 defaultsDictionary[kVideoResolutionKey] = videoResolution;
46 }
47 if (videoCodec) {
48 defaultsDictionary[kVideoCodecKey] = videoCodec;
49 }
Anders Carlssone1500582017-06-15 16:05:13 +020050 if (bitrate) {
Peter Hanspersd92e0b52017-10-23 14:30:25 +020051 defaultsDictionary[kBitrateKey] = bitrate;
Anders Carlssone1500582017-06-15 16:05:13 +020052 }
53 [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDictionary];
54}
55
denicija9af2b602016-11-17 00:43:43 -080056- (NSUserDefaults *)storage {
57 if (!_storage) {
58 _storage = [NSUserDefaults standardUserDefaults];
59 }
60 return _storage;
denicijad17d5362016-11-02 02:56:09 -070061}
62
sakalc522e752017-04-05 12:17:48 -070063- (NSString *)videoResolution {
64 return [self.storage objectForKey:kVideoResolutionKey];
denicija9af2b602016-11-17 00:43:43 -080065}
66
sakalc522e752017-04-05 12:17:48 -070067- (void)setVideoResolution:(NSString *)resolution {
68 [self.storage setObject:resolution forKey:kVideoResolutionKey];
denicija9af2b602016-11-17 00:43:43 -080069 [self.storage synchronize];
70}
71
Anders Carlsson6bf43d22017-10-16 13:51:43 +020072- (NSData *)videoCodec {
sakal68b5df92017-03-17 09:01:59 -070073 return [self.storage objectForKey:kVideoCodecKey];
74}
75
Anders Carlsson6bf43d22017-10-16 13:51:43 +020076- (void)setVideoCodec:(NSData *)videoCodec {
sakal68b5df92017-03-17 09:01:59 -070077 [self.storage setObject:videoCodec forKey:kVideoCodecKey];
78 [self.storage synchronize];
79}
80
denicija9af2b602016-11-17 00:43:43 -080081- (nullable NSNumber *)maxBitrate {
82 return [self.storage objectForKey:kBitrateKey];
83}
84
85- (void)setMaxBitrate:(nullable NSNumber *)value {
86 [self.storage setObject:value forKey:kBitrateKey];
87 [self.storage synchronize];
denicijad17d5362016-11-02 02:56:09 -070088}
89
Anders Carlssone1500582017-06-15 16:05:13 +020090- (BOOL)audioOnly {
91 return [self.storage boolForKey:kAudioOnlyKey];
92}
93
94- (void)setAudioOnly:(BOOL)audioOnly {
95 [self.storage setBool:audioOnly forKey:kAudioOnlyKey];
96 [self.storage synchronize];
97}
98
99- (BOOL)createAecDump {
100 return [self.storage boolForKey:kCreateAecDumpKey];
101}
102
103- (void)setCreateAecDump:(BOOL)createAecDump {
104 [self.storage setBool:createAecDump forKey:kCreateAecDumpKey];
105 [self.storage synchronize];
106}
107
108- (BOOL)useLevelController {
109 return [self.storage boolForKey:kUseLevelControllerKey];
110}
111
112- (void)setUseLevelController:(BOOL)useLevelController {
113 [self.storage setBool:useLevelController forKey:kUseLevelControllerKey];
114 [self.storage synchronize];
115}
116
117- (BOOL)useManualAudioConfig {
118 return [self.storage boolForKey:kUseManualAudioConfigKey];
119}
120
121- (void)setUseManualAudioConfig:(BOOL)useManualAudioConfig {
122 [self.storage setBool:useManualAudioConfig forKey:kUseManualAudioConfigKey];
123 [self.storage synchronize];
124}
125
denicijad17d5362016-11-02 02:56:09 -0700126@end
127NS_ASSUME_NONNULL_END