initial commit

This commit is contained in:
Caleb
2026-03-01 15:59:27 +08:00
commit a9e97d56cb
1426 changed files with 172367 additions and 0 deletions

View File

@@ -0,0 +1,137 @@
//
// AVConfigManager.m
// AVDemo
//
#import "AVConfigManager.h"
static NSString * const kAVConfigStreamId = @"kAVConfigStreamId";
static NSString * const kAVConfigNickname = @"AVConfigNickname";
static NSString * const kAVConfigCodec = @"AVConfigCodec";
static NSString * const kAVConfigResolution = @"AVConfigResolution";
static NSString * const kAVConfigFPS = @"AVConfigFPS";
static NSString * const kAVConfigMaxBitrate = @"AVConfigMaxBitrate";
static NSString * const kAVConfigMinBitrate = @"AVConfigMinBitrate";
static NSString * const kAVConfigCallChannelId = @"AVConfigCallChannelId";
static NSString * const kAVConfigConferenceChannelId = @"AVConfigConferenceChannelId";
NSString * const AVConfigDidChangeNotification = @"AVConfigDidChangeNotification";
@implementation AVConfigManager
+ (instancetype)sharedManager {
static AVConfigManager *manager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [[AVConfigManager alloc] init];
[manager loadConfig];
});
return manager;
}
- (instancetype)init {
if (self = [super init]) {
_globalConfig = [AVVideoConfiguration defaultConfiguration];
}
return self;
}
- (void)loadConfig {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *nickname = [defaults objectForKey:kAVConfigNickname];
if (nickname) {
self.globalConfig.nickname = nickname;
}
if ([defaults objectForKey:kAVConfigCodec]) {
self.globalConfig.codec = [defaults integerForKey:kAVConfigCodec];
}
if ([defaults objectForKey:kAVConfigResolution]) {
AVVideoResolution resolution = [defaults integerForKey:kAVConfigResolution];
[self.globalConfig setResolution:resolution];
}
if ([defaults objectForKey:kAVConfigFPS]) {
self.globalConfig.videoFrameRate = [defaults integerForKey:kAVConfigFPS];
self.globalConfig.videoMaxKeyframeInterval = self.globalConfig.videoFrameRate * 2;
}
if ([defaults objectForKey:kAVConfigMaxBitrate]) {
NSInteger maxBitrate = [defaults integerForKey:kAVConfigMaxBitrate];
self.globalConfig.videoBitRate = maxBitrate * 1000; // Convert kbps to bps
}
if ([defaults objectForKey:kAVConfigMinBitrate]) {
NSInteger minBitrate = [defaults integerForKey:kAVConfigMinBitrate];
self.globalConfig.videoMinBitRate = minBitrate * 1000; // Convert kbps to bps
}
NSString *streamId = [defaults objectForKey:kAVConfigStreamId];
if (streamId) {
self.globalConfig.streamId = streamId;
}
}
- (void)saveConfig {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.globalConfig.streamId forKey:kAVConfigStreamId];
[defaults setObject:self.globalConfig.nickname forKey:kAVConfigNickname];
[defaults setInteger:self.globalConfig.codec forKey:kAVConfigCodec];
[defaults setInteger:[self.globalConfig currentResolution] forKey:kAVConfigResolution];
[defaults setInteger:self.globalConfig.videoFrameRate forKey:kAVConfigFPS];
[defaults setInteger:(self.globalConfig.videoBitRate / 1000) forKey:kAVConfigMaxBitrate]; // Convert bps to kbps
[defaults setInteger:(self.globalConfig.videoMinBitRate / 1000) forKey:kAVConfigMinBitrate]; // Convert bps to kbps
[defaults synchronize];
[[NSNotificationCenter defaultCenter] postNotificationName:AVConfigDidChangeNotification object:nil];
}
+ (NSString *)generateRandomNickname {
NSInteger randomNum = arc4random_uniform(1000);
return [NSString stringWithFormat:@"test%03ld", (long)randomNum];
}
#pragma mark - Channel ID Management
- (void)saveCallChannelId:(NSString *)channelId {
if (channelId && channelId.length > 0) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:channelId forKey:kAVConfigCallChannelId];
[defaults synchronize];
}
}
- (NSString *)loadCallChannelId {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *channelId = [defaults objectForKey:kAVConfigCallChannelId];
// 3
if (!channelId) {
NSInteger randomNum = arc4random_uniform(900) + 100; // 100-999
channelId = [NSString stringWithFormat:@"%ld", (long)randomNum];
}
return channelId;
}
- (void)saveConferenceChannelId:(NSString *)channelId {
if (channelId && channelId.length > 0) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:channelId forKey:kAVConfigConferenceChannelId];
[defaults synchronize];
}
}
- (NSString *)loadConferenceChannelId {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *channelId = [defaults objectForKey:kAVConfigConferenceChannelId];
// 3
if (!channelId) {
NSInteger randomNum = arc4random_uniform(900) + 100; // 100-999
channelId = [NSString stringWithFormat:@"%ld", (long)randomNum];
}
return channelId;
}
@end