From 6a99d9bf65aa5878cb409945ed2bdbdcb916d047 Mon Sep 17 00:00:00 2001
From: chenqiyang <1406175257@qq.com>
Date: 星期五, 02 九月 2022 14:56:40 +0800
Subject: [PATCH] 更新linphone sdk
---
HDLLinPhoneSDK(OC)/HDLLinPhoneSDK/HDLLinphoneManager.m | 149 ++++++++++++++++++++++++++++++++-----------------
1 files changed, 97 insertions(+), 52 deletions(-)
diff --git "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m" "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m"
index cd5681e..f914edc 100644
--- "a/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m"
+++ "b/HDLLinPhoneSDK\357\274\210OC\357\274\211/HDLLinPhoneSDK/HDLLinphoneManager.m"
@@ -139,7 +139,7 @@
const char *prefname;
};
-struct codec_name_pref_table codec_pref_table[] = {{"speex", 8000, "speex_8k_preference"},
+struct codec_name_pref_table hdl_codec_pref_table[] = {{"speex", 8000, "speex_8k_preference"},
{"speex", 16000, "speex_16k_preference"},
{"silk", 24000, "silk_24k_preference"},
{"silk", 16000, "silk_16k_preference"},
@@ -167,23 +167,23 @@
+ (NSString *)getPreferenceForCodec:(const char *)name withRate:(int)rate {
int i;
- for (i = 0; codec_pref_table[i].name != NULL; ++i) {
- if (strcasecmp(codec_pref_table[i].name, name) == 0 && codec_pref_table[i].rate == rate)
- return [NSString stringWithUTF8String:codec_pref_table[i].prefname];
+ for (i = 0; hdl_codec_pref_table[i].name != NULL; ++i) {
+ if (strcasecmp(hdl_codec_pref_table[i].name, name) == 0 && hdl_codec_pref_table[i].rate == rate)
+ return [NSString stringWithUTF8String:hdl_codec_pref_table[i].prefname];
}
return Nil;
}
+ (NSSet *)unsupportedCodecs {
NSMutableSet *set = [NSMutableSet set];
- for (int i = 0; codec_pref_table[i].name != NULL; ++i) {
+ for (int i = 0; hdl_codec_pref_table[i].name != NULL; ++i) {
PayloadType *available = linphone_core_find_payload_type(
- theLinphoneCore, codec_pref_table[i].name, codec_pref_table[i].rate, LINPHONE_FIND_PAYLOAD_IGNORE_CHANNELS);
+ theLinphoneCore, hdl_codec_pref_table[i].name, hdl_codec_pref_table[i].rate, LINPHONE_FIND_PAYLOAD_IGNORE_CHANNELS);
if ((available == NULL)
// these two codecs should not be hidden, even if not supported
- && strcmp(codec_pref_table[i].prefname, "h264_preference") != 0 &&
- strcmp(codec_pref_table[i].prefname, "mp4v-es_preference") != 0) {
- [set addObject:[NSString stringWithUTF8String:codec_pref_table[i].prefname]];
+ && strcmp(hdl_codec_pref_table[i].prefname, "h264_preference") != 0 &&
+ strcmp(hdl_codec_pref_table[i].prefname, "mp4v-es_preference") != 0) {
+ [set addObject:[NSString stringWithUTF8String:hdl_codec_pref_table[i].prefname]];
}
}
return set;
@@ -268,7 +268,7 @@
name:AVAudioSessionRouteChangeNotification
object:nil];
- NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"wav"];
+ NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"caf"];
self.messagePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:path] error:nil];
_sounds.vibrate = kSystemSoundID_Vibrate;
@@ -423,7 +423,8 @@
withDefault:@"sip.linphone.org"]
.UTF8String) != 0) {
// LOGI(@"Migrating proxy config to use AVPF");
- linphone_proxy_config_enable_avpf(proxy, TRUE);
+// linphone_proxy_config_enable_avpf(proxy, TRUE);
+ linphone_proxy_config_set_avpf_mode(proxy,LinphoneAVPFEnabled);
}
proxies = proxies->next;
}
@@ -521,11 +522,12 @@
NSError *err = nil;
if (![audioSession setActive:NO error:&err] && err) {
-
+ NSLog(@"audio鍚姩澶辫触");
err = nil;
}
if (!bAudioInputAvailable) {
-
+ NSLog(@"璁惧涓嶆敮鎸乤udio");
+
}
}
@@ -705,6 +707,7 @@
// set transport
NSString *type = @"UDP";
+// NSString *type = @"TCP";
linphone_proxy_config_set_route(
config,
[NSString stringWithFormat:@"%s;transport=%s", domain.UTF8String, type.lowercaseString.UTF8String]
@@ -767,12 +770,12 @@
#pragma mark Debug functions
+ (void)dumpLcConfig {
- if (theLinphoneCore) {
- LpConfig *conf = HDLLinphoneManager.instance.configDb;
- char *config = lp_config_dump(conf);
-// LOGI(@"\n%s", config);
- ms_free(config);
- }
+// if (theLinphoneCore) {
+// LpConfig *conf = HDLLinphoneManager.instance.configDb;
+// char *config = lp_config_dump(conf);
+//// LOGI(@"\n%s", config);
+// ms_free(config);
+// }
}
#pragma mark - Logs Functions handlers
@@ -853,8 +856,10 @@
// NSString *address = [FastAddressBook displayNameForAddress:addr];
NSString *address=@"";
if (state == LinphoneCallIncomingReceived) {
+
HDLLinPhoneSDK.instance.IsIncomingReceivedCallState=true;
[HDLLinphoneManager.instance enableMicro:true];
+
// LinphoneCallLog *callLog = linphone_call_get_call_log(call);
// NSString *callId = [NSString stringWithUTF8String:linphone_call_log_get_call_id(callLog)];
// int index = [(NSNumber *)[_pushDict objectForKey:callId] intValue] - 1;
@@ -1011,7 +1016,7 @@
if (state==LinphoneCallStateOutgoingProgress) {
NSLog(@"绂佹楹﹀厠椋�");
- [HDLLinphoneManager.instance enableMicro:false];
+// [HDLLinphoneManager.instance enableMicro:false];
}
// Disable speaker when no more call
if ((state == LinphoneCallEnd || state == LinphoneCallError)) {
@@ -1991,12 +1996,10 @@
signal(SIGPIPE, SIG_IGN);
- NSLog(@"willCreateLinphoneCore");
// create linphone core
[self createLinphoneCore];
[self.providerDelegate config];
// _iapManager = [[InAppProductsManager alloc] init];
- NSLog(@"CreatedLinphoneCore");
// - Security fix - remove multi transport migration, because it enables tcp or udp, if by factoring settings only
// tls is enabled. This is a problem for new installations.
@@ -2098,7 +2101,6 @@
return;
}
- NSLog(@"Creating linphonecore");
// Set audio assets
NSString *ring =
@@ -2137,18 +2139,26 @@
linphone_core_cbs_set_user_data(cbs, (__bridge void *)(self));
// NSLog(@"Creating linphonecore1:%@",_configDb);
- lp_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1);
-
+// lp_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1);
+ linphone_config_set_int(_configDb, [@"app" UTF8String], [@"random_port_preference" UTF8String], 1);
theLinphoneCore = linphone_factory_create_core_with_config_3(factory, _configDb, NULL);
linphone_core_add_callbacks(theLinphoneCore, cbs);
- linphone_core_start(theLinphoneCore);
+// linphone_core_start(theLinphoneCore);
//璁剧疆涓洪殢鏈虹鍙�
LinphoneSipTransports transportValue = {-1, -1, -1, -1};
// will also update the sip_*_port section of the config
if (linphone_core_set_sip_transports(theLinphoneCore, &transportValue)) {
- LOGE(@"cannot set transport");
+ NSLog(@"cannot set transport");
}
+ //
+ linphone_core_set_network_reachable(theLinphoneCore,TRUE);
+//
+// AudioStream*stream=audio_stream_new(ms_factory_new(), -1, -1, TRUE);
+// audio_stream_enable_gain_control(stream, TRUE);
+
+ linphone_core_start(theLinphoneCore);
+
[self removeAllAccounts];
// Let the core handle cbs
@@ -2199,6 +2209,16 @@
// start scheduler
mIterateTimer =
[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(iterate) userInfo:nil repeats:YES];
+
+
+// //鑷姩鍚姩鍜屾帴鏀秜ideo
+// NSLog(@"璁剧疆鑷姩璁剧疆");
+// LinphoneVideoPolicy policy;
+// policy.automatically_initiate = true;
+// policy.automatically_accept =true;
+// linphone_core_set_video_policy(theLinphoneCore, &policy);
+// LinphoneVideoActivationPolicy policy;
+// linphone_video_activation_policy_set_automatically_accept(&policy,true);
}
//-(void)appWillTerminate{
@@ -2589,10 +2609,15 @@
}
- (void)migrateImportantFiles {
- if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphonerc"] destination:[HDLLinphoneManager preferenceFile:@"linphonerc"] override:TRUE ignore:TRUE])
- [NSFileManager.defaultManager
- removeItemAtPath:[HDLLinphoneManager documentFile:@"linphonerc"]
- error:nil];
+// if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphonerc"] destination:[HDLLinphoneManager preferenceFile:@"linphonerc"] override:TRUE ignore:TRUE])
+// [NSFileManager.defaultManager
+// removeItemAtPath:[HDLLinphoneManager documentFile:@"linphonerc"]
+// error:nil];
+ //涓嶄娇鐢ㄩ厤缃枃浠剁殑閰嶇疆
+ NSFileManager *fileManager = NSFileManager.defaultManager;
+ NSError *error = nil;
+ [fileManager removeItemAtPath:[HDLLinphoneManager preferenceFile:@"linphonerc"] error:&error];
+
if ([HDLLinphoneManager copyFile:[HDLLinphoneManager documentFile:@"linphone_chats.db"] destination:[HDLLinphoneManager dataFile:@"linphone_chats.db"] override:TRUE ignore:TRUE])
[NSFileManager.defaultManager
@@ -2624,7 +2649,7 @@
LOGW(@"%@ already exists, simply removing %@ %@", dst, src,
fileError ? fileError.localizedDescription : @"successfully");
} else {
- [fileManager moveItemAtPath:src toPath:dst error:&fileError];
+// [fileManager moveItemAtPath:src toPath:dst error:&fileError];
LOGI(@"%@ moving to %@ %@", dst, src, fileError ? fileError.localizedDescription : @"successfully");
}
}
@@ -2637,7 +2662,7 @@
src = srcIpad;
}
NSString *dst = [HDLLinphoneManager preferenceFile:@"linphonerc"];
- [HDLLinphoneManager copyFile:src destination:dst override:FALSE ignore:FALSE];
+// [HDLLinphoneManager copyFile:src destination:dst override:FALSE ignore:FALSE];
}
- (void)overrideDefaultSettings {
@@ -2647,7 +2672,9 @@
// factory = factoryIpad;
// }
NSString *confiFileName = [HDLLinphoneManager preferenceFile:@"linphonerc"];
- _configDb = lp_config_new_with_factory([confiFileName UTF8String], [factory UTF8String]);
+
+ _configDb = linphone_config_new_with_factory([confiFileName UTF8String], [factory UTF8String]);
+
}
#pragma mark - Audio route Functions
@@ -2900,7 +2927,8 @@
}
}
linphone_address_destroy(addr);
- linphone_call_params_destroy(lcallParams);
+// linphone_call_params_destroy(lcallParams);
+ linphone_call_params_unref(lcallParams);
return TRUE;
}
@@ -3092,19 +3120,33 @@
}
- (void)configureVbrCodecs {
- PayloadType *pt;
- int bitrate = lp_config_get_int(
- _configDb, "audio", "codec_bitrate_limit",
- kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/
- const MSList *audio_codecs = linphone_core_get_audio_codecs(theLinphoneCore);
- const MSList *codec = audio_codecs;
- while (codec) {
- pt = codec->data;
- if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) {
- linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate);
- }
- codec = codec->next;
- }
+// PayloadType *pt;
+// int bitrate = linphone_config_get_int(
+// _configDb, "audio", "codec_bitrate_limit",
+// kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/
+// const MSList *audio_codecs = linphone_core_get_audio_codecs(theLinphoneCore);
+// const MSList *codec = audio_codecs;
+// while (codec) {
+// pt = codec->data;
+// if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) {
+// linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate);
+// }
+// codec = codec->next;
+// }
+
+ PayloadType *pt;
+ int bitrate = linphone_config_get_int(
+ _configDb, "audio", "codec_bitrate_limit",
+ kLinphoneAudioVbrCodecDefaultBitrate); /*default value is in linphonerc or linphonerc-factory*/
+ const MSList *audio_codecs = linphone_core_get_audio_payload_types(theLinphoneCore);
+ const MSList *codec = audio_codecs;
+ while (codec) {
+ pt = codec->data;
+ if (linphone_core_payload_type_is_vbr(theLinphoneCore, pt)) {
+ linphone_core_set_payload_type_bitrate(theLinphoneCore, pt, bitrate);
+ }
+ codec = codec->next;
+ }
}
+ (id)getMessageAppDataForKey:(NSString *)key inMessage:(LinphoneChatMessage *)msg {
@@ -3148,7 +3190,9 @@
- (void)lpConfigSetString:(NSString *)value forKey:(NSString *)key inSection:(NSString *)section {
if (!key)
return;
- lp_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL);
+// lp_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL);
+ linphone_config_set_string(_configDb, [section UTF8String], [key UTF8String], value ? [value UTF8String] : NULL);
+
}
- (NSString *)lpConfigStringForKey:(NSString *)key {
return [self lpConfigStringForKey:key withDefault:nil];
@@ -3162,7 +3206,8 @@
- (NSString *)lpConfigStringForKey:(NSString *)key inSection:(NSString *)section withDefault:(NSString *)defaultValue {
if (!key)
return defaultValue;
- const char *value = lp_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL);
+// const char *value = lp_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL);
+ const char *value = linphone_config_get_string(_configDb, [section UTF8String], [key UTF8String], NULL);
return value ? [NSString stringWithUTF8String:value] : defaultValue;
}
@@ -3172,7 +3217,7 @@
- (void)lpConfigSetInt:(int)value forKey:(NSString *)key inSection:(NSString *)section {
if (!key)
return;
- lp_config_set_int(_configDb, [section UTF8String], [key UTF8String], (int)value);
+ linphone_config_set_int(_configDb, [section UTF8String], [key UTF8String], (int)value);
}
- (int)lpConfigIntForKey:(NSString *)key {
return [self lpConfigIntForKey:key withDefault:-1];
@@ -3186,7 +3231,7 @@
- (int)lpConfigIntForKey:(NSString *)key inSection:(NSString *)section withDefault:(int)defaultValue {
if (!key)
return defaultValue;
- return lp_config_get_int(_configDb, [section UTF8String], [key UTF8String], (int)defaultValue);
+ return linphone_config_get_int(_configDb, [section UTF8String], [key UTF8String], (int)defaultValue);
}
- (void)lpConfigSetBool:(BOOL)value forKey:(NSString *)key {
--
Gitblit v1.8.0