xref: /aosp_15_r20/external/webrtc/examples/objc/AppRTCMobile/ARDSettingsModel.h (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #import <Foundation/Foundation.h>
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #import "sdk/objc/base/RTCVideoCodecInfo.h"
14*d9f75844SAndroid Build Coastguard Worker 
15*d9f75844SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_BEGIN
16*d9f75844SAndroid Build Coastguard Worker 
17*d9f75844SAndroid Build Coastguard Worker /**
18*d9f75844SAndroid Build Coastguard Worker  * Model class for user defined settings.
19*d9f75844SAndroid Build Coastguard Worker  *
20*d9f75844SAndroid Build Coastguard Worker  * Handles storing the settings and provides default values if setting is not
21*d9f75844SAndroid Build Coastguard Worker  * set. Also provides list of available options for different settings. Stores
22*d9f75844SAndroid Build Coastguard Worker  * for example video codec, video resolution and maximum bitrate.
23*d9f75844SAndroid Build Coastguard Worker  */
24*d9f75844SAndroid Build Coastguard Worker @interface ARDSettingsModel : NSObject
25*d9f75844SAndroid Build Coastguard Worker 
26*d9f75844SAndroid Build Coastguard Worker /**
27*d9f75844SAndroid Build Coastguard Worker  * Returns array of available capture resoultions.
28*d9f75844SAndroid Build Coastguard Worker  *
29*d9f75844SAndroid Build Coastguard Worker  * The capture resolutions are represented as strings in the following format
30*d9f75844SAndroid Build Coastguard Worker  * [width]x[height]
31*d9f75844SAndroid Build Coastguard Worker  */
32*d9f75844SAndroid Build Coastguard Worker - (NSArray<NSString *> *)availableVideoResolutions;
33*d9f75844SAndroid Build Coastguard Worker 
34*d9f75844SAndroid Build Coastguard Worker /**
35*d9f75844SAndroid Build Coastguard Worker  * Returns current video resolution string.
36*d9f75844SAndroid Build Coastguard Worker  * If no resolution is in store, default value of 640x480 is returned.
37*d9f75844SAndroid Build Coastguard Worker  * When defaulting to value, the default is saved in store for consistency reasons.
38*d9f75844SAndroid Build Coastguard Worker  */
39*d9f75844SAndroid Build Coastguard Worker - (NSString *)currentVideoResolutionSettingFromStore;
40*d9f75844SAndroid Build Coastguard Worker - (int)currentVideoResolutionWidthFromStore;
41*d9f75844SAndroid Build Coastguard Worker - (int)currentVideoResolutionHeightFromStore;
42*d9f75844SAndroid Build Coastguard Worker 
43*d9f75844SAndroid Build Coastguard Worker /**
44*d9f75844SAndroid Build Coastguard Worker  * Stores the provided video resolution string into the store.
45*d9f75844SAndroid Build Coastguard Worker  *
46*d9f75844SAndroid Build Coastguard Worker  * If the provided resolution is no part of the available video resolutions
47*d9f75844SAndroid Build Coastguard Worker  * the store operation will not be executed and NO will be returned.
48*d9f75844SAndroid Build Coastguard Worker  * @param resolution the string to be stored.
49*d9f75844SAndroid Build Coastguard Worker  * @return YES/NO depending on success.
50*d9f75844SAndroid Build Coastguard Worker  */
51*d9f75844SAndroid Build Coastguard Worker - (BOOL)storeVideoResolutionSetting:(NSString *)resolution;
52*d9f75844SAndroid Build Coastguard Worker 
53*d9f75844SAndroid Build Coastguard Worker /**
54*d9f75844SAndroid Build Coastguard Worker  * Returns array of available video codecs.
55*d9f75844SAndroid Build Coastguard Worker  */
56*d9f75844SAndroid Build Coastguard Worker - (NSArray<RTC_OBJC_TYPE(RTCVideoCodecInfo) *> *)availableVideoCodecs;
57*d9f75844SAndroid Build Coastguard Worker 
58*d9f75844SAndroid Build Coastguard Worker /**
59*d9f75844SAndroid Build Coastguard Worker  * Returns current video codec setting from store if present or default (H264) otherwise.
60*d9f75844SAndroid Build Coastguard Worker  */
61*d9f75844SAndroid Build Coastguard Worker - (RTC_OBJC_TYPE(RTCVideoCodecInfo) *)currentVideoCodecSettingFromStore;
62*d9f75844SAndroid Build Coastguard Worker 
63*d9f75844SAndroid Build Coastguard Worker /**
64*d9f75844SAndroid Build Coastguard Worker  * Stores the provided video codec setting into the store.
65*d9f75844SAndroid Build Coastguard Worker  *
66*d9f75844SAndroid Build Coastguard Worker  * If the provided video codec is not part of the available video codecs
67*d9f75844SAndroid Build Coastguard Worker  * the store operation will not be executed and NO will be returned.
68*d9f75844SAndroid Build Coastguard Worker  * @param video codec settings the string to be stored.
69*d9f75844SAndroid Build Coastguard Worker  * @return YES/NO depending on success.
70*d9f75844SAndroid Build Coastguard Worker  */
71*d9f75844SAndroid Build Coastguard Worker - (BOOL)storeVideoCodecSetting:(RTC_OBJC_TYPE(RTCVideoCodecInfo) *)videoCodec;
72*d9f75844SAndroid Build Coastguard Worker 
73*d9f75844SAndroid Build Coastguard Worker /**
74*d9f75844SAndroid Build Coastguard Worker  * Returns current max bitrate setting from store if present.
75*d9f75844SAndroid Build Coastguard Worker  */
76*d9f75844SAndroid Build Coastguard Worker - (nullable NSNumber *)currentMaxBitrateSettingFromStore;
77*d9f75844SAndroid Build Coastguard Worker 
78*d9f75844SAndroid Build Coastguard Worker /**
79*d9f75844SAndroid Build Coastguard Worker  * Stores the provided bitrate value into the store.
80*d9f75844SAndroid Build Coastguard Worker  *
81*d9f75844SAndroid Build Coastguard Worker  * @param bitrate NSNumber representation of the max bitrate value.
82*d9f75844SAndroid Build Coastguard Worker  */
83*d9f75844SAndroid Build Coastguard Worker - (void)storeMaxBitrateSetting:(nullable NSNumber *)bitrate;
84*d9f75844SAndroid Build Coastguard Worker 
85*d9f75844SAndroid Build Coastguard Worker /**
86*d9f75844SAndroid Build Coastguard Worker  * Returns current audio only setting from store if present or default (NO) otherwise.
87*d9f75844SAndroid Build Coastguard Worker  */
88*d9f75844SAndroid Build Coastguard Worker - (BOOL)currentAudioOnlySettingFromStore;
89*d9f75844SAndroid Build Coastguard Worker 
90*d9f75844SAndroid Build Coastguard Worker /**
91*d9f75844SAndroid Build Coastguard Worker  * Stores the provided audio only setting into the store.
92*d9f75844SAndroid Build Coastguard Worker  *
93*d9f75844SAndroid Build Coastguard Worker  * @param setting the boolean value to be stored.
94*d9f75844SAndroid Build Coastguard Worker  */
95*d9f75844SAndroid Build Coastguard Worker - (void)storeAudioOnlySetting:(BOOL)audioOnly;
96*d9f75844SAndroid Build Coastguard Worker 
97*d9f75844SAndroid Build Coastguard Worker /**
98*d9f75844SAndroid Build Coastguard Worker  * Returns current create AecDump setting from store if present or default (NO) otherwise.
99*d9f75844SAndroid Build Coastguard Worker  */
100*d9f75844SAndroid Build Coastguard Worker - (BOOL)currentCreateAecDumpSettingFromStore;
101*d9f75844SAndroid Build Coastguard Worker 
102*d9f75844SAndroid Build Coastguard Worker /**
103*d9f75844SAndroid Build Coastguard Worker  * Stores the provided create AecDump setting into the store.
104*d9f75844SAndroid Build Coastguard Worker  *
105*d9f75844SAndroid Build Coastguard Worker  * @param setting the boolean value to be stored.
106*d9f75844SAndroid Build Coastguard Worker  */
107*d9f75844SAndroid Build Coastguard Worker - (void)storeCreateAecDumpSetting:(BOOL)createAecDump;
108*d9f75844SAndroid Build Coastguard Worker 
109*d9f75844SAndroid Build Coastguard Worker /**
110*d9f75844SAndroid Build Coastguard Worker  * Returns current setting whether to use manual audio config from store if present or default (YES)
111*d9f75844SAndroid Build Coastguard Worker  * otherwise.
112*d9f75844SAndroid Build Coastguard Worker  */
113*d9f75844SAndroid Build Coastguard Worker - (BOOL)currentUseManualAudioConfigSettingFromStore;
114*d9f75844SAndroid Build Coastguard Worker 
115*d9f75844SAndroid Build Coastguard Worker /**
116*d9f75844SAndroid Build Coastguard Worker  * Stores the provided use manual audio config setting into the store.
117*d9f75844SAndroid Build Coastguard Worker  *
118*d9f75844SAndroid Build Coastguard Worker  * @param setting the boolean value to be stored.
119*d9f75844SAndroid Build Coastguard Worker  */
120*d9f75844SAndroid Build Coastguard Worker - (void)storeUseManualAudioConfigSetting:(BOOL)useManualAudioConfig;
121*d9f75844SAndroid Build Coastguard Worker 
122*d9f75844SAndroid Build Coastguard Worker @end
123*d9f75844SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_END
124