diff --git a/.gitmodules b/.gitmodules
index b95960230..8fda1e943 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -58,3 +58,6 @@
[submodule "submodules/externals/polarssl"]
path = submodules/externals/polarssl
url = git://git.linphone.org/polarssl.git
+[submodule "submodules/externals/opus"]
+ path = submodules/externals/opus
+ url = git://git.opus-codec.org/opus.git
diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m
index 4f52378a2..1bc923dbc 100644
--- a/Classes/ChatViewController.m
+++ b/Classes/ChatViewController.m
@@ -122,7 +122,7 @@ static UICompositeViewDescription *compositeDescription = nil;
if ([[addressField text ]length] == 0) { // if no address is manually set, lauch address book
[ContactSelection setSelectionMode:ContactSelectionModeMessage];
[ContactSelection setAddAddress:nil];
- [ContactSelection setSipFilter:TRUE];
+ [ContactSelection setSipFilter: [LinphoneManager instance].contactFilter];
[ContactSelection setEmailFilter:FALSE];
[[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE];
} else {
diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m
index 8f49fd838..42332e723 100644
--- a/Classes/ContactDetailsTableViewController.m
+++ b/Classes/ContactDetailsTableViewController.m
@@ -198,20 +198,32 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i);
BOOL add = false;
if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) {
- if(CFStringCompare((CFStringRef)kContactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) {
+ if(CFStringCompare((CFStringRef)[LinphoneManager instance].contactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) {
add = true;
}
- } else {
- add = true;
- }
- if(add) {
- Entry *entry = [[Entry alloc] initWithData:identifier];
- [subArray addObject: entry];
- [entry release];
- }
- CFRelease(lDict);
- }
- CFRelease(lMap);
+ } else { //check domain
+ LinphoneAddress* address = linphone_address_new([(NSString*)CFDictionaryGetValue(lDict,kABPersonInstantMessageUsernameKey) UTF8String]);
+ if (address) {
+ if ([[ContactSelection getSipFilter] compare:@"*" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
+ add = true;
+ } else {
+ NSString* domain = [NSString stringWithCString:linphone_address_get_domain(address)
+ encoding:[NSString defaultCStringEncoding]];
+ add = [domain compare:[ContactSelection getSipFilter] options:NSCaseInsensitiveSearch] == NSOrderedSame;
+ }
+ linphone_address_destroy(address);
+ } else {
+ add = false;
+ }
+ }
+ if(add) {
+ Entry *entry = [[Entry alloc] initWithData:identifier];
+ [subArray addObject: entry];
+ [entry release];
+ }
+ CFRelease(lDict);
+ }
+ CFRelease(lMap);
}
[dataCache addObject:subArray];
}
@@ -241,6 +253,68 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
[self.tableView reloadData];
}
+-(Entry *) setOrCreateSipContactEntry:(Entry *)entry withValue:(NSString*)value {
+ ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty);
+ ABMutableMultiValueRef lMap;
+ if(lcMap != NULL) {
+ lMap = ABMultiValueCreateMutableCopy(lcMap);
+ CFRelease(lcMap);
+ } else {
+ lMap = ABMultiValueCreateMutable(kABStringPropertyType);
+ }
+ ABMultiValueIdentifier index;
+ NSError* error = NULL;
+
+ CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey};
+ CFTypeRef values[] = { [value copy], [LinphoneManager instance].contactSipField };
+ CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL);
+ if (entry) {
+ index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]);
+ ABMultiValueReplaceValueAtIndex(lMap, lDict, index);
+ } else {
+
+ CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0];
+ ABMultiValueAddValueAndLabel(lMap, lDict, label, &index);
+ }
+ if (!ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, (CFErrorRef*)&error)) {
+ [LinphoneLogger log:LinphoneLoggerLog format:@"Can't set contact with value [%@] cause [%@]", value,[error localizedDescription]];
+ } else {
+ if (entry == nil) {
+ entry = [[Entry alloc] initWithData:index];
+ }
+ CFRelease(lDict);
+ /*check if message type is kept or not*/
+ lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty);
+ lMap = ABMultiValueCreateMutableCopy(lcMap);
+ CFRelease(lcMap);
+ index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]);
+ lDict = ABMultiValueCopyValueAtIndex(lMap,index);
+ if(!CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) {
+ /*too bad probably a gtalk number, storing uri*/
+ NSString* username = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey);
+ LinphoneAddress* address = linphone_core_interpret_url([LinphoneManager getLc]
+ ,[username UTF8String]);
+ char* uri = linphone_address_as_string_uri_only(address);
+ CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey};
+ CFTypeRef values[] = { [NSString stringWithCString:uri encoding:[NSString defaultCStringEncoding]], [LinphoneManager instance].contactSipField };
+ CFDictionaryRef lDict2 = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL);
+ ABMultiValueReplaceValueAtIndex(lMap, lDict2, index);
+ if (!ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, (CFErrorRef*)&error)) {
+ [LinphoneLogger log:LinphoneLoggerLog format:@"Can't set contact with value [%@] cause [%@]", value,[error localizedDescription]];
+ }
+ CFRelease(lDict2);
+ linphone_address_destroy(address);
+ ms_free(uri);
+ }
+ CFRelease(lMap);
+ }
+ CFRelease(lDict);
+
+ return entry;
+}
+-(void) setSipContactEntry:(Entry *)entry withValue:(NSString*)value {
+ [self setOrCreateSipContactEntry:entry withValue:value];
+}
- (void)addEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated {
[self addEntry:tableview section:section animated:animated value:@""];
}
@@ -275,33 +349,15 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
}
CFRelease(lMap);
} else if(contactSections[section] == ContactSections_Sip) {
- ABMultiValueIdentifier identifier;
- ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty);
- ABMutableMultiValueRef lMap;
- if(lcMap != NULL) {
- lMap = ABMultiValueCreateMutableCopy(lcMap);
- CFRelease(lcMap);
- } else {
- lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType);
- }
- CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey };
- CFTypeRef values[] = { [value copy], kContactSipField };
- CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 1, NULL, NULL);
- CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0];
- if(!ABMultiValueAddValueAndLabel(lMap, lDict, label, &identifier)) {
- added = false;
- }
- CFRelease(lDict);
-
- if(added && ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, (CFErrorRef*)&error)) {
- Entry *entry = [[Entry alloc] initWithData:identifier];
- [sectionArray addObject:entry];
- [entry release];
- } else {
- added = false;
- [LinphoneLogger log:LinphoneLoggerError format:@"Can't add entry: %@", [error localizedDescription]];
- }
- CFRelease(lMap);
+ Entry *entry = [self setOrCreateSipContactEntry:nil withValue:value];
+ if (entry) {
+ [sectionArray addObject:entry];
+ [entry release];
+ added=true;
+ } else {
+ added=false;
+ [LinphoneLogger log:LinphoneLoggerError format:@"Can't add entry for value: %@", value];
+ }
} else if(contactSections[section] == ContactSections_Email) {
ABMultiValueIdentifier identifier;
ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonEmailProperty);
@@ -497,7 +553,17 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index);
CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey);
if(valueRef != NULL) {
- value = [NSString stringWithString:(NSString*) valueRef];
+ LinphoneAddress* addr=NULL;
+ if ([[LinphoneManager instance] lpConfigBoolForKey:@"contact_display_username_only"]
+ && (addr=linphone_address_new([(NSString *)valueRef UTF8String]))) {
+ if (linphone_address_get_username(addr)) {
+ value = [NSString stringWithCString:linphone_address_get_username(addr)
+ encoding:[NSString defaultCStringEncoding]];
+ } /*else value=@""*/
+ } else {
+ value = [NSString stringWithString:(NSString*) valueRef];
+ }
+ if (addr) linphone_address_destroy(addr);
}
CFRelease(lDict);
CFRelease(lMap);
@@ -537,7 +603,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
NSMutableArray *sectionDict = [self getSectionData:[indexPath section]];
Entry *entry = [sectionDict objectAtIndex:[indexPath row]];
if (![self isEditing]) {
- NSString *dest;
+ NSString *dest=NULL;;
if(contactSections[[indexPath section]] == ContactSections_Number) {
ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty);
int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]);
@@ -820,17 +886,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil);
CFRelease(lMap);
} else if(contactSections[[path section]] == ContactSections_Sip) {
- ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty);
- ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap);
- CFRelease(lcMap);
- int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]);
- CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey};
- CFTypeRef values[] = { [value copy], kContactSipField };
- CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL);
- ABMultiValueReplaceValueAtIndex(lMap, lDict, index);
- CFRelease(lDict);
- ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil);
- CFRelease(lMap);
+ [self setSipContactEntry:entry withValue:value];
} else if(contactSections[[path section]] == ContactSections_Email) {
ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonEmailProperty);
ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap);
diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m
index 866b247ce..c424b1ea5 100644
--- a/Classes/ContactsTableViewController.m
+++ b/Classes/ContactsTableViewController.m
@@ -87,13 +87,26 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf
CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i);
if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) {
CFStringRef serviceKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey);
- if(CFStringCompare((CFStringRef)@"SIP", serviceKey, kCFCompareCaseInsensitive) == 0) {
- add = true;
- }
- } else {
- NSString* usernameKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey);
- if([usernameKey hasPrefix:@"sip:"]) {
+ CFStringRef username = username=CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey);
+ if(CFStringCompare((CFStringRef)[LinphoneManager instance].contactSipField, serviceKey, kCFCompareCaseInsensitive) == 0) {
add = true;
+ } else {
+ add=false;
+ }
+ } else {
+ //check domain
+ LinphoneAddress* address = linphone_address_new([(NSString*)CFDictionaryGetValue(lDict,kABPersonInstantMessageUsernameKey) UTF8String]);
+ if (address) {
+ if ([[ContactSelection getSipFilter] compare:@"*" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
+ add = true;
+ } else {
+ NSString* domain = [NSString stringWithCString:linphone_address_get_domain(address)
+ encoding:[NSString defaultCStringEncoding]];
+ add = [domain compare:[ContactSelection getSipFilter] options:NSCaseInsensitiveSearch] == NSOrderedSame;
+ }
+ linphone_address_destroy(address);
+ } else {
+ add = false;
}
}
CFRelease(lDict);
diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h
index 00da1d3ad..c21948896 100644
--- a/Classes/ContactsViewController.h
+++ b/Classes/ContactsViewController.h
@@ -36,8 +36,9 @@ typedef enum _ContactSelectionMode {
+ (ContactSelectionMode)getSelectionMode;
+ (void)setAddAddress:(NSString*)address;
+ (NSString*)getAddAddress;
-+ (void)setSipFilter:(BOOL)enable;
-+ (BOOL)getSipFilter;
+/* define sip filter, can be * or sip domain*/
++ (void)setSipFilter:(NSString*) domain;
++ (NSString*)getSipFilter;
+ (void)setEmailFilter:(BOOL)enable;
+ (BOOL)getEmailFilter;
diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m
index cf23d9d01..d3b54c122 100644
--- a/Classes/ContactsViewController.m
+++ b/Classes/ContactsViewController.m
@@ -27,7 +27,7 @@
static ContactSelectionMode sSelectionMode = ContactSelectionModeNone;
static NSString* sAddAddress = nil;
-static BOOL sSipFilter = FALSE;
+static NSString* sSipFilter = nil;
static BOOL sEmailFilter = FALSE;
+ (void)setSelectionMode:(ContactSelectionMode)selectionMode {
@@ -52,11 +52,12 @@ static BOOL sEmailFilter = FALSE;
return sAddAddress;
}
-+ (void)setSipFilter:(BOOL)enable {
- sSipFilter = enable;
++ (void)setSipFilter:(NSString*)domain {
+ [sSipFilter release];
+ sSipFilter = [domain retain];
}
-+ (BOOL)getSipFilter {
++ (NSString*)getSipFilter {
return sSipFilter;
}
@@ -197,7 +198,7 @@ static UICompositeViewDescription *compositeDescription = nil;
- (void)changeView:(HistoryView)view {
if(view == History_All) {
- [ContactSelection setSipFilter:FALSE];
+ [ContactSelection setSipFilter:nil];
[ContactSelection setEmailFilter:FALSE];
[tableController loadData];
allButton.selected = TRUE;
@@ -206,7 +207,7 @@ static UICompositeViewDescription *compositeDescription = nil;
}
if(view == History_Linphone) {
- [ContactSelection setSipFilter:TRUE];
+ [ContactSelection setSipFilter:[LinphoneManager instance].contactFilter];
[ContactSelection setEmailFilter:FALSE];
[tableController loadData];
linphoneButton.selected = TRUE;
diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m
index 0263d8138..cb28fefaa 100644
--- a/Classes/DialerViewController.m
+++ b/Classes/DialerViewController.m
@@ -317,7 +317,7 @@ static UICompositeViewDescription *compositeDescription = nil;
- (IBAction)onAddContactClick: (id) event {
[ContactSelection setSelectionMode:ContactSelectionModeEdit];
[ContactSelection setAddAddress:[addressField text]];
- [ContactSelection setSipFilter:FALSE];
+ [ContactSelection setSipFilter:nil];
[ContactSelection setEmailFilter:FALSE];
ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController);
if(controller != nil) {
diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m
index 16454d126..ec172566a 100644
--- a/Classes/HistoryDetailsViewController.m
+++ b/Classes/HistoryDetailsViewController.m
@@ -281,13 +281,15 @@ static UICompositeViewDescription *compositeDescription = nil;
// contact name
[plainAddressLabel setText:@""];
if (addr != NULL) {
- char* lAddress = linphone_address_as_string_uri_only(addr);
- if(lAddress != NULL) {
- [plainAddressLabel setText:[NSString stringWithUTF8String:lAddress]];
- ms_free(lAddress);
- } else {
-
- }
+ if ([[LinphoneManager instance] lpConfigBoolForKey:@"contact_display_username_only"]) {
+ [plainAddressLabel setText:[NSString stringWithUTF8String:linphone_address_get_username(addr)?linphone_address_get_username(addr):""]];
+ } else {
+ char* lAddress = linphone_address_as_string_uri_only(addr);
+ if(lAddress != NULL) {
+ [plainAddressLabel setText:[NSString stringWithUTF8String:lAddress]];
+ ms_free(lAddress);
+ }
+ }
}
if (addr != NULL) {
@@ -327,7 +329,7 @@ static UICompositeViewDescription *compositeDescription = nil;
[ContactSelection setAddAddress:[NSString stringWithUTF8String:lAddress]];
[ContactSelection setSelectionMode:ContactSelectionModeEdit];
- [ContactSelection setSipFilter:FALSE];
+ [ContactSelection setSipFilter:nil];
[ContactSelection setEmailFilter:FALSE];
ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController);
if(controller != nil) {
diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
index b90e36f74..da64fca6c 100644
--- a/Classes/LinphoneManager.h
+++ b/Classes/LinphoneManager.h
@@ -47,8 +47,6 @@ extern NSString *const kLinphoneLogsUpdate;
extern NSString *const kLinphoneSettingsUpdate;
extern NSString *const kLinphoneBluetoothAvailabilityUpdate;
-extern NSString *const kContactSipField;
-
typedef enum _NetworkType {
network_none = 0,
network_2g,
@@ -117,6 +115,7 @@ typedef struct _LinphoneManagerSounds {
+ (NSSet *)unsupportedCodecs;
+ (NSString *)getUserAgent;
+
- (void)startLibLinphone;
- (void)destroyLibLinphone;
- (BOOL)resignActive;
@@ -144,6 +143,7 @@ typedef struct _LinphoneManagerSounds {
- (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key;
- (NSString*)lpConfigStringForKey:(NSString*)key;
+- (NSString*)lpConfigStringForKey:(NSString*)key withDefault:(NSString*)value;
- (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key forSection:(NSString*)section;
- (NSString*)lpConfigStringForKey:(NSString*)key forSection:(NSString*)section;
- (void)lpConfigSetInt:(NSInteger)value forKey:(NSString*)key;
@@ -155,6 +155,7 @@ typedef struct _LinphoneManagerSounds {
- (void)lpConfigSetBool:(BOOL)value forKey:(NSString*)key forSection:(NSString*)section;
- (BOOL)lpConfigBoolForKey:(NSString*)key forSection:(NSString*)section;
+
@property (readonly) FastAddressBook* fastAddressBook;
@property Connectivity connectivity;
@property (readonly) NetworkType network;
@@ -168,6 +169,8 @@ typedef struct _LinphoneManagerSounds {
@property (nonatomic, assign) BOOL bluetoothAvailable;
@property (nonatomic, assign) BOOL bluetoothEnabled;
@property (readonly) ALAssetsLibrary *photoLibrary;
+@property (readonly) NSString* contactSipField;
+@property (readonly,copy) NSString* contactFilter;
@end
diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
index 92976227d..bd1cdf406 100644
--- a/Classes/LinphoneManager.m
+++ b/Classes/LinphoneManager.m
@@ -57,7 +57,7 @@ NSString *const kLinphoneMainViewChange = @"LinphoneMainViewChange";
NSString *const kLinphoneLogsUpdate = @"LinphoneLogsUpdate";
NSString *const kLinphoneSettingsUpdate = @"LinphoneSettingsUpdate";
NSString *const kLinphoneBluetoothAvailabilityUpdate = @"LinphoneBluetoothAvailabilityUpdate";
-NSString *const kContactSipField = @"SIP";
+
extern void libmsilbc_init();
@@ -133,6 +133,7 @@ struct codec_name_pref_table codec_pref_table[]={
{ "vp8", 90000, @"vp8_preference"},
{ "mpeg4-generic", 44100, @"aaceld_44k_preference"},
{ "mpeg4-generic", 22050, @"aaceld_22k_preference"},
+ { "opus", 48000, @"opus_preference"},
{ NULL,0,Nil }
};
@@ -245,6 +246,7 @@ struct codec_name_pref_table codec_pref_table[]={
[self copyDefaultSettings];
pendindCallIdFromRemoteNotif = [[NSMutableArray alloc] init ];
photoLibrary = [[ALAssetsLibrary alloc] init];
+
}
return self;
}
@@ -840,6 +842,10 @@ static LinphoneCoreVTable linphonec_vtable = {
,self);
linphone_core_set_user_agent(theLinphoneCore,"LinphoneIPhone",
[[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey] UTF8String]);
+ [_contactSipField release];
+ _contactSipField = [[self lpConfigStringForKey:@"contact_im_type_value" withDefault:@"SIP"] retain];
+
+
fastAddressBook = [[FastAddressBook alloc] init];
linphone_core_set_root_ca(theLinphoneCore, lRootCa);
@@ -924,6 +930,7 @@ static LinphoneCoreVTable linphonec_vtable = {
//go directly to bg mode
[self resignActive];
}
+
// Post event
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:theLinphoneCore] forKey:@"core"];
@@ -1413,6 +1420,10 @@ static void audioRouteChangeListenerCallback (
- (NSString*)lpConfigStringForKey:(NSString*)key {
return [self lpConfigStringForKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]];
}
+- (NSString*)lpConfigStringForKey:(NSString*)key withDefault:(NSString*)defaultValue {
+ NSString* value = [self lpConfigStringForKey:key];
+ return value?value:defaultValue;
+}
- (NSString*)lpConfigStringForKey:(NSString*)key forSection:(NSString *)section {
if (!key) return nil;
@@ -1497,4 +1508,16 @@ static void audioRouteChangeListenerCallback (
}
} //else nop, keep call in paused state
}
+-(NSString*) contactFilter {
+ NSString* filter=@"*";
+ if ( [self lpConfigBoolForKey:@"contact_filter_on_default_domain"]) {
+ LinphoneProxyConfig* proxy_cfg;
+ linphone_core_get_default_proxy(theLinphoneCore, &proxy_cfg);
+ if (proxy_cfg && linphone_proxy_config_get_addr(proxy_cfg)) {
+ return [NSString stringWithCString:linphone_proxy_config_get_domain(proxy_cfg)
+ encoding:[NSString defaultCStringEncoding]];
+ }
+ }
+ return filter;
+}
@end
diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m
index aa7237646..7a1913db0 100644
--- a/Classes/LinphoneUI/UICompositeViewController.m
+++ b/Classes/LinphoneUI/UICompositeViewController.m
@@ -103,7 +103,7 @@
- (void)initUICompositeViewController {
viewControllerCache = [[NSMutableDictionary alloc] init];
- currentOrientation = UIDeviceOrientationUnknown;
+ currentOrientation = (UIInterfaceOrientation)UIDeviceOrientationUnknown;
}
- (id)init{
@@ -416,18 +416,18 @@
if(currentOrientation == UIDeviceOrientationUnknown) {
return [UIApplication sharedApplication].statusBarOrientation;
}
- deviceOrientation = currentOrientation;
+ deviceOrientation = (UIDeviceOrientation)currentOrientation;
}
if (UIDeviceOrientationIsPortrait(deviceOrientation)) {
if ([currentViewDescription portraitMode]) {
- return deviceOrientation;
+ return (UIInterfaceOrientation)deviceOrientation;
} else {
return UIInterfaceOrientationLandscapeLeft;
}
}
if (UIDeviceOrientationIsLandscape(deviceOrientation)) {
if ([currentViewDescription landscapeMode]) {
- return deviceOrientation;
+ return (UIInterfaceOrientation)deviceOrientation;
} else {
return UIInterfaceOrientationPortrait;
}
@@ -435,7 +435,7 @@
} else if([rotationPreference isEqualToString:@"portrait"]) {
if ([currentViewDescription portraitMode]) {
if (UIDeviceOrientationIsPortrait(deviceOrientation)) {
- return deviceOrientation;
+ return (UIInterfaceOrientation)deviceOrientation;
} else {
if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) {
return [UIApplication sharedApplication].statusBarOrientation;
@@ -449,7 +449,7 @@
} else if([rotationPreference isEqualToString:@"landscape"]) {
if ([currentViewDescription landscapeMode]) {
if (UIDeviceOrientationIsLandscape(deviceOrientation)) {
- return deviceOrientation;
+ return (UIInterfaceOrientation)deviceOrientation;
} else {
if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
return [UIApplication sharedApplication].statusBarOrientation;
diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m
index 5e7cbe771..18d750620 100644
--- a/Classes/LinphoneUI/UIMainBar.m
+++ b/Classes/LinphoneUI/UIMainBar.m
@@ -400,7 +400,7 @@ static NSString * const kDisappearAnimation = @"disappear";
- (IBAction)onContactsClick:(id)event {
[ContactSelection setSelectionMode:ContactSelectionModeNone];
[ContactSelection setAddAddress:nil];
- [ContactSelection setSipFilter:FALSE];
+ [ContactSelection setSipFilter:nil];
[ContactSelection setEmailFilter:FALSE];
[[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription]];
}
diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m
index ab5f0b1a3..9831c2812 100644
--- a/Classes/Utils/FastAddressBook.m
+++ b/Classes/Utils/FastAddressBook.m
@@ -179,7 +179,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf
CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i);
BOOL add = false;
if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) {
- if(CFStringCompare((CFStringRef)kContactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) {
+ if(CFStringCompare((CFStringRef)[LinphoneManager instance].contactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) {
add = true;
}
} else {
diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory
index fb48ebbdf..cc6384010 100644
--- a/Resources/linphonerc-factory
+++ b/Resources/linphonerc-factory
@@ -47,3 +47,7 @@ stun=stun.linphone.org
[video]
display_filter_auto_rotate=0
+
+[app]
+#contact_display_username_only=1
+#contact_filter_on_default_domain=1
diff --git a/Settings/InAppSettings.bundle/Audio.plist b/Settings/InAppSettings.bundle/Audio.plist
index 4331a88d4..5fa9900a1 100644
--- a/Settings/InAppSettings.bundle/Audio.plist
+++ b/Settings/InAppSettings.bundle/Audio.plist
@@ -30,6 +30,16 @@
Type
PSToggleSwitchSpecifier
+
+ DefaultValue
+
+ Key
+ opus_preference
+ Title
+ Opus 48kHz
+ Type
+ PSToggleSwitchSpecifier
+
DefaultValue
@@ -50,6 +60,28 @@
Type
PSToggleSwitchSpecifier
+
+ DefaultValue
+
+ Key
+ aaceld_22k_preference
+ Title
+ AAC-ELD 22kHz
+ Type
+ PSToggleSwitchSpecifier
+
+
+ New item
+
+ DefaultValue
+
+ Key
+ aaceld_44k_preference
+ Title
+ AAC-ELD 44kHz
+ Type
+ PSToggleSwitchSpecifier
+
DefaultValue
@@ -120,26 +152,6 @@
Type
PSToggleSwitchSpecifier
-
- DefaultValue
-
- Key
- aaceld_44k_preference
- Title
- AAC-ELD 44kHz
- Type
- PSToggleSwitchSpecifier
-
-
- DefaultValue
-
- Key
- aaceld_22k_preference
- Title
- AAC-ELD 22kHz
- Type
- PSToggleSwitchSpecifier
-
Key
audio_advanced_group
diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
index ad22b25d3..8ec10367f 100755
--- a/linphone.xcodeproj/project.pbxproj
+++ b/linphone.xcodeproj/project.pbxproj
@@ -75,6 +75,8 @@
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
+ 2200C2DB174BB87A002E9A70 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EED1600B4E400B92522 /* AssetsLibrary.framework */; };
+ 2200C2DC174BBB24002E9A70 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 226EF06B15FA256B005865C7 /* MobileCoreServices.framework */; };
22058C71116E305000B08DDD /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; };
220FAD3210765B400068D98F /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2910765B400068D98F /* libgsm.a */; };
220FAD3810765B400068D98F /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; };
@@ -128,6 +130,8 @@
22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFB13D7125500B30535 /* libx264.a */; };
22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFC13D7125500B30535 /* libmsx264.a */; };
22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AA8B0013D83F6300B30535 /* UICamSwitch.m */; };
+ 22AF73C21754C0D100BE8398 /* libopus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AF73C11754C0D000BE8398 /* libopus.a */; };
+ 22AF73C31754C0D800BE8398 /* libopus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AF73C11754C0D000BE8398 /* libopus.a */; };
22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */; };
22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5F03410CE6B2F00777D97 /* AddressBook.framework */; };
22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; };
@@ -1608,6 +1612,7 @@
22AA8AFC13D7125500B30535 /* libmsx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsx264.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsx264.a"; sourceTree = ""; };
22AA8AFF13D83F6300B30535 /* UICamSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICamSwitch.h; sourceTree = ""; };
22AA8B0013D83F6300B30535 /* UICamSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICamSwitch.m; sourceTree = ""; };
+ 22AF73C11754C0D000BE8398 /* libopus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopus.a; path = "liblinphone-sdk/apple-darwin/lib/libopus.a"; sourceTree = ""; };
22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; };
22B5F03410CE6B2F00777D97 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
22BB1A67132FF16A005CD7AA /* UIEraseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEraseButton.h; sourceTree = ""; };
@@ -2414,6 +2419,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 22AF73C21754C0D100BE8398 /* libopus.a in Frameworks */,
57B0E360173C010400A476B8 /* libpolarssl.a in Frameworks */,
223CA7E616D9255800EF1BEC /* libantlr3c.a in Frameworks */,
223CA7E716D9255800EF1BEC /* libbellesip.a in Frameworks */,
@@ -2472,6 +2478,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 2200C2DC174BBB24002E9A70 /* MobileCoreServices.framework in Frameworks */,
+ 2200C2DB174BB87A002E9A70 /* AssetsLibrary.framework in Frameworks */,
D30562131671DC3E00C97967 /* libNinePatch.a in Frameworks */,
D30562141671DC3E00C97967 /* libXMLRPC.a in Frameworks */,
22D8F170147548E2008C97DB /* AVFoundation.framework in Frameworks */,
@@ -2509,6 +2517,7 @@
22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */,
223CA7E816D9256E00EF1BEC /* libantlr3c.a in Frameworks */,
223CA7E916D9257200EF1BEC /* libbellesip.a in Frameworks */,
+ 22AF73C31754C0D800BE8398 /* libopus.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2972,6 +2981,7 @@
57B0E35F173C010400A476B8 /* libpolarssl.a */,
223CA7E416D9255800EF1BEC /* libantlr3c.a */,
223CA7E516D9255800EF1BEC /* libbellesip.a */,
+ 22AF73C11754C0D000BE8398 /* libopus.a */,
2258633C11410BAC00C5A737 /* README */,
22276E8013C73D3100210156 /* libavcodec.a */,
22276E8113C73D3100210156 /* libavutil.a */,
@@ -3786,7 +3796,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0450;
+ LastUpgradeCheck = 0460;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "linphone" */;
compatibilityVersion = "Xcode 3.2";
@@ -5480,15 +5490,20 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier";
GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "";
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
LIBRARY_SEARCH_PATHS = "";
- PROVISIONING_PROFILE = "7763350E-083E-4ADA-8535-05883F19F947";
+ PROVISIONING_PROFILE = "BB7E624F-8CD6-448B-A235-CE8DBB401F92";
SDKROOT = iphoneos;
STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -5500,6 +5515,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_ENTITLEMENTS = "";
+ CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier";
COMPRESS_PNG_FILES = NO;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = "";
@@ -5538,6 +5554,7 @@
ORDER_FILE = "";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = linphone;
+ PROVISIONING_PROFILE = "B0005B58-1160-4269-B1FC-C5BA54ACBA65";
SKIP_INSTALL = NO;
TARGETED_DEVICE_FAMILY = "1,2";
};
@@ -5718,10 +5735,15 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "";
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
@@ -5784,10 +5806,15 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier";
GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "";
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
@@ -5851,10 +5878,15 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer: jehan monnier (E8MYPN2NXL)";
GCC_THUMB_SUPPORT = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = "";
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
diff --git a/submodules/belle-sip b/submodules/belle-sip
index ef33d5b71..89aa5d6a1 160000
--- a/submodules/belle-sip
+++ b/submodules/belle-sip
@@ -1 +1 @@
-Subproject commit ef33d5b7158c1b8391a67f9fd01759ae00cc612b
+Subproject commit 89aa5d6a1b9957b73696f250043b799b462a5c0f
diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk
index 86d69cb12..5798a0bb9 100644
--- a/submodules/build/builder-iphone-os.mk
+++ b/submodules/build/builder-iphone-os.mk
@@ -22,6 +22,7 @@
host?=armv7-apple-darwin
config_site:=iphone-config.site
+config_site_gcc:=iphone-config-gcc.site
library_mode:= --disable-shared --enable-static
linphone_configure_controls= \
--disable-strict \
@@ -112,18 +113,18 @@ veryclean: veryclean-linphone veryclean-msbcg729
rm -rf $(BUILDER_BUILD_DIR)
-.NOTPARALLEL build-linphone: init build-polarssl build-libantlr build-belle-sip build-srtp build-zrtpcpp build-speex build-libgsm build-ffmpeg build-libvpx detect_gpl_mode_switch $(LINPHONE_BUILD_DIR)/Makefile
+.NOTPARALLEL build-linphone: init build-polarssl build-libantlr build-belle-sip build-srtp build-zrtpcpp build-speex build-libgsm build-ffmpeg build-libvpx build-opus detect_gpl_mode_switch $(LINPHONE_BUILD_DIR)/Makefile
cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install
mkdir -p $(prefix)/share/linphone/tutorials && cp -f $(LINPHONE_SRC_DIR)/coreapi/help/*.c $(prefix)/share/linphone/tutorials/
-clean-linphone: clean-libantlr clean-polarssl clean-belle-sip clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-msamr clean-mssilk clean-ffmpeg clean-libvpx clean-msx264
+clean-linphone: clean-libantlr clean-polarssl clean-belle-sip clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-msamr clean-mssilk clean-ffmpeg clean-libvpx clean-msx264 clean-opus
cd $(LINPHONE_BUILD_DIR) && make clean
-veryclean-linphone: veryclean-libantlr veryclean-polarssl veryclean-belle-sip veryclean-speex veryclean-srtp veryclean-zrtpcpp veryclean-libgsm veryclean-msilbc veryclean-libilbc veryclean-openssl veryclean-msamr veryclean-mssilk veryclean-msx264 veryclean-libvpx
+veryclean-linphone: veryclean-libantlr veryclean-polarssl veryclean-belle-sip veryclean-speex veryclean-srtp veryclean-zrtpcpp veryclean-libgsm veryclean-msilbc veryclean-libilbc veryclean-openssl veryclean-msamr veryclean-mssilk veryclean-msx264 veryclean-libvpx veryclean-opus
#-cd $(LINPHONE_BUILD_DIR) && make distclean
-cd $(LINPHONE_SRC_DIR) && rm -f configure
-clean-makefile-linphone: clean-makefile-libantlr clean-makefile-polarssl clean-makefile-belle-sip clean-makefile-speex clean-makefile-srtp clean-makefile-zrtpcpp clean-makefile-libilbc clean-makefile-msilbc clean-makefile-openssl clean-makefile-msamr clean-makefile-ffmpeg clean-makefile-libvpx clean-makefile-mssilk
+clean-makefile-linphone: clean-makefile-libantlr clean-makefile-polarssl clean-makefile-belle-sip clean-makefile-speex clean-makefile-srtp clean-makefile-zrtpcpp clean-makefile-libilbc clean-makefile-msilbc clean-makefile-openssl clean-makefile-msamr clean-makefile-ffmpeg clean-makefile-libvpx clean-makefile-mssilk clean-makefile-opus
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
diff --git a/submodules/build/builders.d/libvpx.mk b/submodules/build/builders.d/libvpx.mk
index a0a164e78..7623bbe11 100644
--- a/submodules/build/builders.d/libvpx.mk
+++ b/submodules/build/builders.d/libvpx.mk
@@ -14,6 +14,9 @@ else
libvpx_configure_options+= --target=x86-darwin10-gcc
endif
libvpx_dir?=externals/libvpx
+all_p=armv6-darwin-gcc #neon Cortex-A8
+all_p+=armv7-darwin-gcc #neon Cortex-A8
+all_p+=armv7s-darwin-gcc #neon Cortex-A8
$(BUILDER_SRC_DIR)/$(libvpx_dir)/patched.stamp:
cd $(BUILDER_SRC_DIR)/$(libvpx_dir) \
@@ -24,7 +27,7 @@ $(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk: $(BUILDER_SRC_DIR)/$(libvpx_dir)/p
mkdir -p $(BUILDER_BUILD_DIR)/$(libvpx_dir)
cd $(BUILDER_BUILD_DIR)/$(libvpx_dir)/ \
&& host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \
- && SYSROOT_PATH=$$SYSROOT_PATH SDK_BIN_PATH=$$SDK_BIN_PATH $(BUILDER_SRC_DIR)/$(libvpx_dir)/configure --prefix=$(prefix) $(libvpx_configure_options)
+ && export all_platforms="${all_p}" && $(BUILDER_SRC_DIR)/$(libvpx_dir)/configure --prefix=$(prefix) --sdk-path=$$SDK_BIN_PATH/../../ --libc=$$SYSROOT_PATH $(libvpx_configure_options)
build-libvpx: $(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk
cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch
index d651ccfc8..0cd793f5f 100644
--- a/submodules/build/builders.d/libvpx.patch
+++ b/submodules/build/builders.d/libvpx.patch
@@ -1,29 +1,9 @@
diff --git a/build/make/configure.sh b/build/make/configure.sh
-index 0426f92..38fdcb2 100755
+index c99a01c..48f8876 100755
--- a/build/make/configure.sh
+++ b/build/make/configure.sh
-@@ -624,6 +624,9 @@ process_common_toolchain() {
- if [ -d "/Developer/SDKs/MacOSX10.7.sdk" ]; then
- osx_sdk_dir="/Developer/SDKs/MacOSX10.7.sdk"
- fi
-+ if test -n "$SYSROOT_PATH" ; then
-+ osx_sdk_dir=$SYSROOT_PATH
-+ fi
-
- case ${toolchain} in
- *-darwin8-*)
-@@ -743,9 +746,17 @@ process_common_toolchain() {
- darwin*)
- SDK_PATH=/Developer/Platforms/iPhoneOS.platform/Developer
- TOOLCHAIN_PATH=${SDK_PATH}/usr/bin
-+ if test -n "$SYSROOT_PATH" ; then
-+ SDK_FULL_PATH=$SYSROOT_PATH
-+ else
-+ SDK_FULL_PATH="${SDK_PATH}/SDKs/iPhoneOS5.0.sdk"
-+ fi
-+ if test -n "$SDK_BIN_PATH" ; then
-+ TOOLCHAIN_PATH=$SDK_BIN_PATH
-+ fi
+@@ -892,7 +892,7 @@ process_common_toolchain() {
+ CXX=${TOOLCHAIN_PATH}/g++
CC=${TOOLCHAIN_PATH}/gcc
AR=${TOOLCHAIN_PATH}/ar
- LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2
@@ -31,39 +11,12 @@ index 0426f92..38fdcb2 100755
AS=${TOOLCHAIN_PATH}/as
STRIP=${TOOLCHAIN_PATH}/strip
NM=${TOOLCHAIN_PATH}/nm
-@@ -757,12 +768,12 @@ process_common_toolchain() {
+@@ -904,7 +904,7 @@ process_common_toolchain() {
ASFLAGS="-version -arch ${tgt_isa} -g"
add_cflags -arch ${tgt_isa}
- add_ldflags -arch_only ${tgt_isa}
+ add_ldflags -arch ${tgt_isa}
-- add_cflags "-isysroot ${SDK_PATH}/SDKs/iPhoneOS5.0.sdk"
-+ add_cflags "-isysroot $SDK_FULL_PATH"
-
- # This should be overridable
-- alt_libc=${SDK_PATH}/SDKs/iPhoneOS5.0.sdk
-+ alt_libc=$SDK_FULL_PATH
-
- # Add the paths for the alternate libc
- for d in usr/include; do
-diff --git a/configure b/configure
-index 6f20c6b..4638ea2 100755
---- a/configure
-+++ b/configure
-@@ -94,6 +94,7 @@ all_platforms="${all_platforms} iwmmxt-linux-gcc"
- all_platforms="${all_platforms} iwmmxt2-linux-rvct"
- all_platforms="${all_platforms} iwmmxt2-linux-gcc"
- all_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8
-+all_platforms="${all_platforms} armv7s-darwin-gcc" #neon Cortex-A8
- all_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8
- all_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8
- all_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8
-@@ -198,6 +199,7 @@ ARCH_EXT_LIST="
- armv5te
- armv6
- armv7
-+ armv7s
- iwmmxt
- iwmmxt2
-
+ if [ -z "${alt_libc}" ]; then
+ alt_libc=${SDK_PATH}/SDKs/iPhoneOS5.1.sdk
diff --git a/submodules/build/builders.d/mssilk.mk b/submodules/build/builders.d/mssilk.mk
index dcf8978c7..d6dcda448 100644
--- a/submodules/build/builders.d/mssilk.mk
+++ b/submodules/build/builders.d/mssilk.mk
@@ -30,7 +30,7 @@ $(BUILDER_BUILD_DIR)/$(mssilk_dir)/Makefile: $(BUILDER_SRC_DIR)/$(mssilk_dir)/co
echo -e "\033[01;32m Running configure in $(BUILDER_BUILD_DIR)/$(mssilk_dir) \033[0m"
mkdir -p $(BUILDER_BUILD_DIR)/$(mssilk_dir)
cd $(BUILDER_BUILD_DIR)/$(mssilk_dir)/ \
- && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
+ && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) \
$(BUILDER_SRC_DIR)/$(mssilk_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
--enable-static
@@ -39,8 +39,8 @@ ifeq ($(enable_silk),yes)
build-mssilk: $(BUILDER_BUILD_DIR)/$(mssilk_dir)/Makefile
echo -e "\033[01;32m building silk \033[0m"
cd $(BUILDER_BUILD_DIR)/$(mssilk_dir) \
- && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig \
- CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
+ && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig \
+ CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) \
make -j1 && make install
diff --git a/submodules/build/builders.d/opencore-amr.mk b/submodules/build/builders.d/opencore-amr.mk
index 362cbeafa..d701283a7 100644
--- a/submodules/build/builders.d/opencore-amr.mk
+++ b/submodules/build/builders.d/opencore-amr.mk
@@ -31,11 +31,11 @@ $(BUILDER_SRC_DIR)/$(opencore-amr_dir)/configure: $(BUILDER_SRC_DIR)/$(opencore-
$(BUILDER_BUILD_DIR)/$(opencore-amr_dir)/Makefile: $(BUILDER_SRC_DIR)/$(opencore-amr_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(opencore-amr_dir)
cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir)/ \
- && CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
+ && CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) \
$(BUILDER_SRC_DIR)/$(opencore-amr_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} ${opencore-amr-configure-option}
build-opencore-amr: $(BUILDER_BUILD_DIR)/$(opencore-amr_dir)/Makefile
- cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
+ cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site_gcc) make && make install
clean-opencore-amr:
cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) && make clean
diff --git a/submodules/build/builders.d/opus.mk b/submodules/build/builders.d/opus.mk
new file mode 100644
index 000000000..f0e6dcf32
--- /dev/null
+++ b/submodules/build/builders.d/opus.mk
@@ -0,0 +1,69 @@
+############################################################################
+# opus.mk
+# Copyright (C) 2013 Belledonne Communications,Grenoble France
+#
+############################################################################
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+############################################################################
+opus_dir?=externals/opus
+enable_opus?=yes
+
+libopus_configure_options=--disable-extra-programs --disable-doc
+ifneq (,$(findstring armv7,$(host)))
+ libopus_configure_options+= --enable-fixed-point --disable-asm
+endif
+ifneq (,$(findstring armv7s,$(host)))
+ libopus_configure_options+= --enable-fixed-point --disable-asm
+endif
+
+$(BUILDER_SRC_DIR)/$(opus_dir)/configure:
+ @echo -e "\033[01;32m Running autogen for msopus in $(BUILDER_SRC_DIR)/$(opus_dir) \033[0m"
+ cd $(BUILDER_SRC_DIR)/$(opus_dir) && ./autogen.sh
+
+$(BUILDER_BUILD_DIR)/$(opus_dir)/Makefile: $(BUILDER_SRC_DIR)/$(opus_dir)/configure
+ @echo -e "\033[01;32m Running configure in $(BUILDER_BUILD_DIR)/$(opus_dir) \033[0m"
+ mkdir -p $(BUILDER_BUILD_DIR)/$(opus_dir)
+ cd $(BUILDER_BUILD_DIR)/$(opus_dir)/ \
+ && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
+ $(BUILDER_SRC_DIR)/$(opus_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
+ ${libopus_configure_options}
+
+ifeq ($(enable_opus),yes)
+
+build-opus: $(BUILDER_BUILD_DIR)/$(opus_dir)/Makefile
+ @echo -e "\033[01;32m building opus \033[0m"
+ cd $(BUILDER_BUILD_DIR)/$(opus_dir) \
+ && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig \
+ CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
+ make && make install
+
+
+else
+build-opus:
+ @echo "opus is disabled"
+
+endif
+
+clean-opus:
+ -cd $(BUILDER_BUILD_DIR)/$(opus_dir) && make clean
+
+veryclean-opus:
+ -cd $(BUILDER_BUILD_DIR)/$(opus_dir) && make distclean
+ rm -f $(BUILDER_SRC_DIR)/$(opus_dir)/configure
+
+clean-makefile-opus:
+ -cd $(BUILDER_BUILD_DIR)/$(opus_dir) && rm -f Makefile
diff --git a/submodules/build/builders.d/srtp.mk b/submodules/build/builders.d/srtp.mk
index dd5ebfc22..ee2d6c92a 100644
--- a/submodules/build/builders.d/srtp.mk
+++ b/submodules/build/builders.d/srtp.mk
@@ -11,7 +11,7 @@ $(BUILDER_BUILD_DIR)/$(srtp_dir)/Makefile: $(BUILDER_SRC_DIR)/$(srtp_dir)/config
build-srtp: $(BUILDER_BUILD_DIR)/$(srtp_dir)/Makefile
host_alias=$(host) && . /$(BUILDER_SRC_DIR)/build/$(config_site) && \
- cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make libsrtp.a AR=$$AR && make install
+ cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make libsrtp.a AR="$$AR" && make install
clean-srtp:
-cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make clean
diff --git a/submodules/build/iphone-config-gcc.site b/submodules/build/iphone-config-gcc.site
new file mode 100644
index 000000000..125bdebcd
--- /dev/null
+++ b/submodules/build/iphone-config-gcc.site
@@ -0,0 +1,51 @@
+# -*- shell-script -*-
+
+SDK_VERSION_MAJOR=4
+SDK_VERSION=4.0
+MCPU=""
+if test "${host_alias}" = "i386-apple-darwin" ; then
+ PLATFORM=Simulator
+ ARCH=i386
+ CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=i386"
+ MCPU=""
+elif test "${host_alias}" = "armv6-apple-darwin" ; then
+ ARCH=armv6
+ PLATFORM=OS
+ CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm"
+ MCPU="-mcpu=arm1176jzf-s"
+elif test "${host_alias}" = "armv7-apple-darwin" ; then
+ ARCH=armv7
+ PLATFORM=OS
+ CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm"
+ MCPU="-mcpu=cortex-a8"
+elif test "${host_alias}" = "armv7s-apple-darwin" ; then
+ ARCH=armv7s
+ PLATFORM=OS
+ CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm"
+else
+ echo "bad host ${host_alias} must be either i386-apple-darwin or armv6-apple-darwin"
+ exit
+fi
+echo "Loading config.site for iPhone platform=${PLATFORM} version=${SDK_VERSION}"
+XCODE_DEV_PATH=`xcode-select -print-path`
+#new path with Xcode 4.3:
+if test -d ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then
+ SDK_PATH_LIST=`ls -drt ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
+ SDK_BIN_PATH=${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin
+else
+ SDK_PATH_LIST=`ls -drt /Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
+ SDK_BIN_PATH=/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin
+fi
+
+for SYSROOT_PATH in $SDK_PATH_LIST ; do echo $SYSROOT_PATH ; done ;
+echo "Selecting SDK path = ${SYSROOT_PATH}"
+COMMON_FLAGS=" -arch ${ARCH} ${MCPU} -isysroot ${SYSROOT_PATH} -miphoneos-version-min=${SDK_VERSION} -DTARGET_OS_IPHONE=1 -D__IOS"
+CC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS"
+OBJC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS"
+CXX="${SDK_BIN_PATH}/g++ $COMMON_FLAGS"
+LD="${SDK_BIN_PATH}/ld -arch ${ARCH}"
+AR=${SDK_BIN_PATH}/ar
+RANLIB=${SDK_BIN_PATH}/ranlib
+
+CPPFLAGS="-Dasm=__asm"
+OBJCFLAGS="-x objective-c -fexceptions -gdwarf-2 -fobjc-abi-version=2 -fobjc-legacy-dispatch"
diff --git a/submodules/build/iphone-config.site b/submodules/build/iphone-config.site
index 61b1105b5..b7f89f6a7 100644
--- a/submodules/build/iphone-config.site
+++ b/submodules/build/iphone-config.site
@@ -27,11 +27,11 @@ else
exit
fi
echo "Loading config.site for iPhone platform=${PLATFORM} version=${SDK_VERSION}"
-XCODE_ROOT=/Applications/Xcode.app
+XCODE_DEV_PATH=`xcode-select -print-path`
#new path with Xcode 4.3:
-if test -d ${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then
- SDK_PATH_LIST=`ls -drt ${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
- SDK_BIN_PATH=${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin
+if test -d ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then
+ SDK_PATH_LIST=`ls -drt ${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
+ SDK_BIN_PATH=${XCODE_DEV_PATH}/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin
else
SDK_PATH_LIST=`ls -drt /Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
SDK_BIN_PATH=/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin
@@ -40,12 +40,12 @@ fi
for SYSROOT_PATH in $SDK_PATH_LIST ; do echo $SYSROOT_PATH ; done ;
echo "Selecting SDK path = ${SYSROOT_PATH}"
COMMON_FLAGS=" -arch ${ARCH} ${MCPU} -isysroot ${SYSROOT_PATH} -miphoneos-version-min=${SDK_VERSION} -DTARGET_OS_IPHONE=1 -D__IOS -fms-extensions"
-CC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS"
-OBJC="${SDK_BIN_PATH}/gcc -std=c99 $COMMON_FLAGS"
-CXX="${SDK_BIN_PATH}/g++ $COMMON_FLAGS"
-LD="${SDK_BIN_PATH}/ld -arch ${ARCH}"
-AR=${SDK_BIN_PATH}/ar
-RANLIB=${SDK_BIN_PATH}/ranlib
+CC="xcrun clang -std=c99 $COMMON_FLAGS"
+OBJC="xcrun clang -std=c99 $COMMON_FLAGS"
+CXX="xcrun clang++ $COMMON_FLAGS"
+LD="xcrun ld -arch ${ARCH}"
+AR="xcrun ar"
+RANLIB="xcrun ranlib"
CPPFLAGS="-Dasm=__asm"
OBJCFLAGS="-x objective-c -fexceptions -gdwarf-2 -fobjc-abi-version=2 -fobjc-legacy-dispatch"
diff --git a/submodules/externals/libvpx b/submodules/externals/libvpx
index c8df1656b..b9ce43029 160000
--- a/submodules/externals/libvpx
+++ b/submodules/externals/libvpx
@@ -1 +1 @@
-Subproject commit c8df1656bd94928059204242e778bd5b8b9dc7aa
+Subproject commit b9ce43029298182668d4dcb0e0814189e4a63c2a
diff --git a/submodules/externals/opus b/submodules/externals/opus
new file mode 160000
index 000000000..fcecd29ab
--- /dev/null
+++ b/submodules/externals/opus
@@ -0,0 +1 @@
+Subproject commit fcecd29abf32164326e568acdcdf7d8e877b33b1
diff --git a/submodules/externals/speex b/submodules/externals/speex
index 89e99a481..3c3178184 160000
--- a/submodules/externals/speex
+++ b/submodules/externals/speex
@@ -1 +1 @@
-Subproject commit 89e99a4814fd62945ff559d3d37d9aa92caf3169
+Subproject commit 3c317818481b67e0dd732e5dc045d6b981a8775b
diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj
index 9e9444f17..826660b82 100644
--- a/submodules/liblinphone.xcodeproj/project.pbxproj
+++ b/submodules/liblinphone.xcodeproj/project.pbxproj
@@ -467,6 +467,16 @@
22A10B5911F84E2D00373793 /* proto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5311F84E2D00373793 /* proto.h */; };
22A10B5A11F84E2D00373793 /* toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5411F84E2D00373793 /* toast.h */; };
22A10B5B11F84E2D00373793 /* unproto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5511F84E2D00373793 /* unproto.h */; };
+ 22AF73BE1753E83700BE8398 /* msopus.c in Sources */ = {isa = PBXBuildFile; fileRef = 22AF73BD1753E83700BE8398 /* msopus.c */; };
+ 22AF73C01753F3E100BE8398 /* libopus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AF73BF1753F3E100BE8398 /* libopus.a */; };
+ 22D07CD016F3BC5F009F2C9E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB416F3BC5F009F2C9E /* InfoPlist.strings */; };
+ 22D07CD116F3BC5F009F2C9E /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB616F3BC5F009F2C9E /* MainWindow.xib */; };
+ 22D07CD216F3BC5F009F2C9E /* mediastreamViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CB816F3BC5F009F2C9E /* mediastreamViewController.xib */; };
+ 22D07CD316F3BC5F009F2C9E /* mediastream-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22D07CBA16F3BC5F009F2C9E /* mediastream-Info.plist */; };
+ 22D07CD416F3BC5F009F2C9E /* mediastreamAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CBD16F3BC5F009F2C9E /* mediastreamAppDelegate.m */; };
+ 22D07CD516F3BC5F009F2C9E /* mediastreamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CBF16F3BC5F009F2C9E /* mediastreamViewController.m */; };
+ 22D07CD616F3BC5F009F2C9E /* mediastream.c in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CC016F3BC5F009F2C9E /* mediastream.c */; };
+ 22D07CE516F3BFCB009F2C9E /* speexec.c in Sources */ = {isa = PBXBuildFile; fileRef = 22D07CE416F3BFCB009F2C9E /* speexec.c */; };
22DD19C113A8D7FA0018ECD4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22DD19C013A8D7FA0018ECD4 /* UIKit.framework */; };
22DD19C213A8D7FA0018ECD4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; };
22DD19C413A8D7FA0018ECD4 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22DD19C313A8D7FA0018ECD4 /* CoreGraphics.framework */; };
@@ -777,6 +787,19 @@
22A10B5311F84E2D00373793 /* proto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proto.h; sourceTree = ""; };
22A10B5411F84E2D00373793 /* toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = toast.h; sourceTree = ""; };
22A10B5511F84E2D00373793 /* unproto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unproto.h; sourceTree = ""; };
+ 22AF73BD1753E83700BE8398 /* msopus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msopus.c; sourceTree = ""; };
+ 22AF73BF1753F3E100BE8398 /* libopus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopus.a; path = "../liblinphone-sdk/apple-darwin/lib/libopus.a"; sourceTree = ""; };
+ 22D07CB516F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
+ 22D07CB716F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; };
+ 22D07CB916F3BC5F009F2C9E /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/mediastreamViewController.xib; sourceTree = ""; };
+ 22D07CBA16F3BC5F009F2C9E /* mediastream-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "mediastream-Info.plist"; sourceTree = ""; };
+ 22D07CBB16F3BC5F009F2C9E /* mediastream-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mediastream-Prefix.pch"; sourceTree = ""; };
+ 22D07CBC16F3BC5F009F2C9E /* mediastreamAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mediastreamAppDelegate.h; sourceTree = ""; };
+ 22D07CBD16F3BC5F009F2C9E /* mediastreamAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mediastreamAppDelegate.m; sourceTree = ""; };
+ 22D07CBE16F3BC5F009F2C9E /* mediastreamViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mediastreamViewController.h; sourceTree = ""; };
+ 22D07CBF16F3BC5F009F2C9E /* mediastreamViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mediastreamViewController.m; sourceTree = ""; };
+ 22D07CC016F3BC5F009F2C9E /* mediastream.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; fileEncoding = 4; path = mediastream.c; sourceTree = ""; };
+ 22D07CE416F3BFCB009F2C9E /* speexec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = speexec.c; sourceTree = ""; };
22DD19BE13A8D7FA0018ECD4 /* mediastream.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mediastream.app; sourceTree = BUILT_PRODUCTS_DIR; };
22DD19C013A8D7FA0018ECD4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
22DD19C313A8D7FA0018ECD4 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
@@ -834,6 +857,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 22AF73C01753F3E100BE8398 /* libopus.a in Frameworks */,
225D65CD1521C19A008B2E81 /* libortp.a in Frameworks */,
225D65CC1521C195008B2E81 /* libmediastreamer.a in Frameworks */,
2211DB9F14765CED00DEE054 /* libmssilk.a in Frameworks */,
@@ -887,6 +911,7 @@
0867D691FE84028FC02AAC07 /* liblinphone */ = {
isa = PBXGroup;
children = (
+ 22AF73BF1753F3E100BE8398 /* libopus.a */,
2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */,
2211DB9E14765CEC00DEE054 /* libmssilk.a */,
7066FC0913E830B800EFC6DC /* libvpx.a */,
@@ -1171,6 +1196,9 @@
223CA7EF16D9268D00EF1BEC /* audiofilters */ = {
isa = PBXGroup;
children = (
+ 22AF73BD1753E83700BE8398 /* msopus.c */,
+ 0406A7651721FF79009FD24F /* aac-eld.c */,
+ 22D07CE416F3BFCB009F2C9E /* speexec.c */,
223CA7F016D9268D00EF1BEC /* alaw.c */,
223CA7F216D9268D00EF1BEC /* aqsnd.c */,
223CA7F416D9268D00EF1BEC /* audiomixer.c */,
@@ -1938,6 +1966,8 @@
223CA8D316D9268D00EF1BEC /* ringstream.c in Sources */,
223CA8D416D9268D00EF1BEC /* scaler.c in Sources */,
223CA8D716D9268D00EF1BEC /* videostream.c in Sources */,
+ 22D07CE516F3BFCB009F2C9E /* speexec.c in Sources */,
+ 22AF73BE1753E83700BE8398 /* msopus.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/submodules/linphone b/submodules/linphone
index aae5ae888..6e3c6551a 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit aae5ae888c24542bda99ecdef882f0fa0f607670
+Subproject commit 6e3c6551a9cac6d231910420386e9666a0a30c0b