blob: a3713e2f0e6ab9e677023bf7077f710fd744345b [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";
Anders Carlssone1500582017-06-15 16:05:13 +020018static NSString *const kUseManualAudioConfigKey = @"rtc_use_manual_audio_config_key";
denicijad17d5362016-11-02 02:56:09 -070019
20NS_ASSUME_NONNULL_BEGIN
denicija9af2b602016-11-17 00:43:43 -080021@interface ARDSettingsStore () {
22 NSUserDefaults *_storage;
23}
sakalc4adacf2017-03-28 01:22:48 -070024@property(nonatomic, strong, readonly) NSUserDefaults *storage;
denicija9af2b602016-11-17 00:43:43 -080025@end
26
denicija2256e042016-11-09 06:26:18 -080027@implementation ARDSettingsStore
denicijad17d5362016-11-02 02:56:09 -070028
Anders Carlssone1500582017-06-15 16:05:13 +020029+ (void)setDefaultsForVideoResolution:(NSString *)videoResolution
Anders Carlsson6bf43d22017-10-16 13:51:43 +020030 videoCodec:(NSData *)videoCodec
Anders Carlssone1500582017-06-15 16:05:13 +020031 bitrate:(nullable NSNumber *)bitrate
32 audioOnly:(BOOL)audioOnly
33 createAecDump:(BOOL)createAecDump
Anders Carlssone1500582017-06-15 16:05:13 +020034 useManualAudioConfig:(BOOL)useManualAudioConfig {
35 NSMutableDictionary<NSString *, id> *defaultsDictionary = [@{
Anders Carlssone1500582017-06-15 16:05:13 +020036 kAudioOnlyKey : @(audioOnly),
37 kCreateAecDumpKey : @(createAecDump),
Anders Carlssone1500582017-06-15 16:05:13 +020038 kUseManualAudioConfigKey : @(useManualAudioConfig)
39 } mutableCopy];
Peter Hanspersd92e0b52017-10-23 14:30:25 +020040
41 if (videoResolution) {
42 defaultsDictionary[kVideoResolutionKey] = videoResolution;
43 }
44 if (videoCodec) {
45 defaultsDictionary[kVideoCodecKey] = videoCodec;
46 }
Anders Carlssone1500582017-06-15 16:05:13 +020047 if (bitrate) {
Peter Hanspersd92e0b52017-10-23 14:30:25 +020048 defaultsDictionary[kBitrateKey] = bitrate;
Anders Carlssone1500582017-06-15 16:05:13 +020049 }
50 [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDictionary];
51}
52
denicija9af2b602016-11-17 00:43:43 -080053- (NSUserDefaults *)storage {
54 if (!_storage) {
55 _storage = [NSUserDefaults standardUserDefaults];
56 }
57 return _storage;
denicijad17d5362016-11-02 02:56:09 -070058}
59
sakalc522e752017-04-05 12:17:48 -070060- (NSString *)videoResolution {
61 return [self.storage objectForKey:kVideoResolutionKey];
denicija9af2b602016-11-17 00:43:43 -080062}
63
sakalc522e752017-04-05 12:17:48 -070064- (void)setVideoResolution:(NSString *)resolution {
65 [self.storage setObject:resolution forKey:kVideoResolutionKey];
denicija9af2b602016-11-17 00:43:43 -080066 [self.storage synchronize];
67}
68
Anders Carlsson6bf43d22017-10-16 13:51:43 +020069- (NSData *)videoCodec {
sakal68b5df92017-03-17 09:01:59 -070070 return [self.storage objectForKey:kVideoCodecKey];
71}
72
Anders Carlsson6bf43d22017-10-16 13:51:43 +020073- (void)setVideoCodec:(NSData *)videoCodec {
sakal68b5df92017-03-17 09:01:59 -070074 [self.storage setObject:videoCodec forKey:kVideoCodecKey];
75 [self.storage synchronize];
76}
77
denicija9af2b602016-11-17 00:43:43 -080078- (nullable NSNumber *)maxBitrate {
79 return [self.storage objectForKey:kBitrateKey];
80}
81
82- (void)setMaxBitrate:(nullable NSNumber *)value {
83 [self.storage setObject:value forKey:kBitrateKey];
84 [self.storage synchronize];
denicijad17d5362016-11-02 02:56:09 -070085}
86
Anders Carlssone1500582017-06-15 16:05:13 +020087- (BOOL)audioOnly {
88 return [self.storage boolForKey:kAudioOnlyKey];
89}
90
91- (void)setAudioOnly:(BOOL)audioOnly {
92 [self.storage setBool:audioOnly forKey:kAudioOnlyKey];
93 [self.storage synchronize];
94}
95
96- (BOOL)createAecDump {
97 return [self.storage boolForKey:kCreateAecDumpKey];
98}
99
100- (void)setCreateAecDump:(BOOL)createAecDump {
101 [self.storage setBool:createAecDump forKey:kCreateAecDumpKey];
102 [self.storage synchronize];
103}
104
Anders Carlssone1500582017-06-15 16:05:13 +0200105- (BOOL)useManualAudioConfig {
106 return [self.storage boolForKey:kUseManualAudioConfigKey];
107}
108
109- (void)setUseManualAudioConfig:(BOOL)useManualAudioConfig {
110 [self.storage setBool:useManualAudioConfig forKey:kUseManualAudioConfigKey];
111 [self.storage synchronize];
112}
113
denicijad17d5362016-11-02 02:56:09 -0700114@end
115NS_ASSUME_NONNULL_END