Merge branch 'master' into HEAD to incorporate changes for version 2.1 (see tag 2.1)

Conflicts:
	Resources/en.lproj/Localizable.strings
	Resources/fr.lproj/Localizable.strings
	Resources/linphonerc-factory
	linphone-Info.plist
This commit is contained in:
Guillaume BIENKOWSKI 2013-10-11 16:32:53 +02:00
commit 8216215669
117 changed files with 3768 additions and 971 deletions

25
.gitmodules vendored
View file

@ -1,12 +1,6 @@
[submodule "submodules/linphone"]
path = submodules/linphone
url = git://git.linphone.org/linphone.git
[submodule "submodules/externals/osip"]
path = submodules/externals/osip
url = git://git.linphone.org/osip.git
[submodule "submodules/externals/exosip"]
path = submodules/externals/exosip
url = git://git.linphone.org/exosip.git
url = git://git.linphone.org/linphone
[submodule "submodules/externals/gsm"]
path = submodules/externals/gsm
url = git://git.linphone.org/gsm.git
@ -21,7 +15,7 @@
url = git://git.linphone.org/libilbc-rfc3951.git
[submodule "submodules/externals/opencore-amr"]
path = submodules/externals/opencore-amr
url = git://opencore-amr.git.sourceforge.net/gitroot/opencore-amr/opencore-amr
url = git://git.code.sf.net/p/opencore-amr/code
[submodule "submodules/msamr"]
path = submodules/msamr
url = git://git.linphone.org/msamr.git
@ -49,3 +43,18 @@
[submodule "submodules/bcg729"]
path = submodules/bcg729
url = git://git.linphone.org/bcg729.git
[submodule "submodules/belle-sip"]
path = submodules/belle-sip
url = git://git.linphone.org/belle-sip
[submodule "submodules/externals/antlr3"]
path = submodules/externals/antlr3
url = git://git.linphone.org/antlr3.git
[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
[submodule "submodules/externals/libxml2"]
path = submodules/externals/libxml2
url = git://git.gnome.org/libxml2

View file

@ -320,8 +320,10 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
[chat setState:[NSNumber numberWithInt:state]];
[chat update];
[thiz.tableController updateChatEntry:chat];
linphone_chat_message_set_user_data(msg, NULL);
[chat release]; // no longuer need to keep reference
if (state != LinphoneChatMessageStateInProgress) {
linphone_chat_message_set_user_data(msg, NULL);
[chat release]; // no longuer need to keep reference
}
}
@ -732,6 +734,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
CGRect headerFrame = [headerView frame];
headerFrame.origin.y = 0;
[headerView setFrame:headerFrame];
[headerView setAlpha:1.0];
}
// Resize & Move table view
@ -788,6 +791,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
CGRect headerFrame = [headerView frame];
headerFrame.origin.y = -headerFrame.size.height;
[headerView setFrame:headerFrame];
[headerView setAlpha:0.0];
}
// Resize & Move table view

View file

@ -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 {

View file

@ -55,15 +55,15 @@
@implementation ContactDetailsTableViewController
enum _ContactSections {
typedef enum _ContactSections {
ContactSections_None = 0,
ContactSections_Number,
ContactSections_Sip,
ContactSections_Email,
ContactSections_MAX
};
} ContactSections_e;
static const int contactSections[ContactSections_MAX] = {ContactSections_None, ContactSections_Number, ContactSections_Sip, ContactSections_Email};
static const ContactSections_e contactSections[ContactSections_MAX] = {ContactSections_None, ContactSections_Number, ContactSections_Sip, ContactSections_Email};
@synthesize footerController;
@synthesize headerController;
@ -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);
@ -459,6 +515,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
[cell.detailTextField setDelegate:self];
[cell.detailTextField setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[cell.detailTextField setAutocorrectionType:UITextAutocorrectionTypeNo];
[cell setBackgroundColor:[UIColor whiteColor]];
// Background View
UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease];
@ -497,7 +554,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 +604,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]);
@ -642,7 +709,6 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
#pragma mark - UITableViewDelegate Functions
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
bool_t showEmails = [[LinphoneManager instance] lpConfigBoolForKey:@"show_contacts_emails_preference"];
// Resign keyboard
@ -657,18 +723,25 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
[self.tableView beginUpdates];
}
if(editing) {
// add phony entries so that the user can add new data
for (int section = 0; section < [self numberOfSectionsInTableView:[self tableView]]; ++section) {
if(contactSections[section] == ContactSections_Number ||
contactSections[section] == ContactSections_Sip ||
(showEmails && contactSections[section] == ContactSections_Email))
[self addEntry:self.tableView section:section animated:animated];
(showEmails && contactSections[section] == ContactSections_Email)) {
[self addEntry:self.tableView section:section animated:animated];
}
}
} else {
for (int section = 0; section < [self numberOfSectionsInTableView:[self tableView]]; ++section) {
// remove phony entries that were not filled by the user
if(contactSections[section] == ContactSections_Number ||
contactSections[section] == ContactSections_Sip ||
(showEmails && contactSections[section] == ContactSections_Email))
[self removeEmptyEntry:self.tableView section:section animated:animated];
contactSections[section] == ContactSections_Sip ||
(showEmails && contactSections[section] == ContactSections_Email)) {
[self removeEmptyEntry:self.tableView section:section animated:animated];
if( [[self getSectionData:section] count] == 0 ) // the section is empty -> remove titles
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:section]
withRowAnimation:animated?UITableViewRowAnimationFade:UITableViewRowAnimationNone];
}
}
}
if(animated) {
@ -707,6 +780,8 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
}
- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if( [[self getSectionData:section] count] == 0) return nil;
if(contactSections[section] == ContactSections_Number) {
return NSLocalizedString(@"Phone numbers", nil);
} else if(contactSections[section] == ContactSections_Sip) {
@ -718,7 +793,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
}
- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
return @"";
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
@ -753,7 +828,8 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
if(value != nil) {
NSMutableArray *sectionDict = [self getSectionData:[editingIndexPath section]];
Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]];
if(contactSections[[editingIndexPath section]] == ContactSections_Number) {
ContactSections_e thesection = contactSections[[editingIndexPath section]];
if(thesection == ContactSections_Number) {
ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty);
ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap);
CFRelease(lcMap);
@ -761,7 +837,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)(value), index);
ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil);
CFRelease(lMap);
} else if(contactSections[[editingIndexPath section]] == ContactSections_Sip) {
} else if(thesection == ContactSections_Sip) {
ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty);
ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap);
CFRelease(lcMap);
@ -769,7 +845,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)(value), index);
ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil);
CFRelease(lMap);
} else if(contactSections[[editingIndexPath section]] == ContactSections_Email) {
} else if(thesection == ContactSections_Email) {
ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonEmailProperty);
ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap);
CFRelease(lcMap);
@ -780,6 +856,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
}
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject: editingIndexPath] withRowAnimation:FALSE];
[self.tableView reloadSectionIndexTitles];
[self.tableView endUpdates];
}
[editingIndexPath release];
@ -804,14 +881,16 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
UIView *view = [textField superview];
// Find TableViewCell
if(view != nil && ![view isKindOfClass:[UIEditableTableViewCell class]]) view = [view superview];
while(view != nil && ![view isKindOfClass:[UIEditableTableViewCell class]]) view = [view superview];
if(view != nil) {
UIEditableTableViewCell *cell = (UIEditableTableViewCell*)view;
NSIndexPath *path = [self.tableView indexPathForCell:cell];
NSMutableArray *sectionDict = [self getSectionData:[path section]];
Entry *entry = [sectionDict objectAtIndex:[path row]];
ContactSections_e sect = contactSections[[path section]];
NSString *value = [textField text];
if(contactSections[[path section]] == ContactSections_Number) {
if(sect == ContactSections_Number) {
ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty);
ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap);
CFRelease(lcMap);
@ -819,19 +898,9 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
ABMultiValueReplaceValueAtIndex(lMap, (CFStringRef)value, index);
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);
} else if(contactSections[[path section]] == ContactSections_Email) {
} else if(sect == ContactSections_Sip) {
[self setSipContactEntry:entry withValue:value];
} else if(sect == ContactSections_Email) {
ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonEmailProperty);
ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap);
CFRelease(lcMap);

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -153,6 +153,17 @@ static UICompositeViewDescription *compositeDescription = nil;
[videoCameraSwitch setHidden:TRUE];
}
}
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0 // attributed string only available since iOS6
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
// fix placeholder bar color in iOS7
UIColor *color = [UIColor grayColor];
addressField.attributedPlaceholder = [[NSAttributedString alloc]
initWithString:addressField.placeholder
attributes:@{NSForegroundColorAttributeName: color}];
}
#endif
}
}
@ -317,7 +328,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) {

View file

@ -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) {

View file

@ -185,11 +185,8 @@
}
if(useLinphoneAddress) {
const char* lDisplayName = linphone_address_get_display_name(addr);
const char* lUserName = linphone_address_get_username(addr);
if (lDisplayName)
if (lDisplayName)
displayName = [NSString stringWithUTF8String:lDisplayName];
else if(lUserName)
displayName = [NSString stringWithUTF8String:lUserName];
}
}

View file

@ -144,6 +144,9 @@
[LinphoneLogger log:LinphoneLoggerLog format:@"PushNotification from launch received."];
[self processRemoteNotification:remoteNotif];
}
[[PhoneMainView instance] updateStatusBar:nil];
return YES;
}
@ -204,6 +207,14 @@
[[LinphoneManager instance] enableAutoAnswerForCallId:callid];
else
[LinphoneLogger log:LinphoneLoggerError format:@"PushNotification: does not have call-id yet, fix it !"];
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
// iOS7 fix for notification sound not stopping.
// see http://stackoverflow.com/questions/19124882/stopping-ios-7-remote-notification-sound
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
}
}
}
}

View file

@ -82,17 +82,17 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
if (addr){
const char *proxy=linphone_proxy_config_get_addr(cfg);
LinphoneAddress *proxy_addr=linphone_address_new(proxy);
const char *port=linphone_address_get_port(proxy_addr);
int port=linphone_address_get_port(proxy_addr);
[self setString: linphone_address_get_username(addr) forKey:@"username_preference"];
[self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"];
[self setInteger: linphone_proxy_config_get_expires(cfg) forKey:@"expire_preference"];
[self setString: linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0
|| port!=NULL){
|| port>0){
char tmp[256]={0};
if (port!=NULL) {
snprintf(tmp,sizeof(tmp)-1,"%s:%s",linphone_address_get_domain(proxy_addr),port);
if (port>0) {
snprintf(tmp,sizeof(tmp)-1,"%s:%i",linphone_address_get_domain(proxy_addr),port);
}else snprintf(tmp,sizeof(tmp)-1,"%s",linphone_address_get_domain(proxy_addr));
[self setString: tmp forKey:@"proxy_preference"];
}
@ -182,7 +182,19 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
{
[self transformCodecsToKeys: linphone_core_get_audio_codecs(lc)];
[self transformCodecsToKeys: linphone_core_get_video_codecs(lc)];
[self transformCodecsToKeys: linphone_core_get_video_codecs(lc)];
[self setBool:linphone_core_adaptive_rate_control_enabled(lc) forKey:@"adaptive_rate_control_preference"];
LpConfig *config = linphone_core_get_config(lc);
[self setInteger:lp_config_get_int(config, "audio", "codec_bitrate_limit", 32) forKey:@"audio_codec_bitrate_limit_preference"];
PayloadType *pt;
const MSList *elem;
for (elem=linphone_core_get_audio_codecs(lc);elem!=NULL;elem=elem->next){
pt=(PayloadType*)elem->data;
if ((strcmp(pt->mime_type, "opus") == 0) || (strcmp(pt->mime_type, "mpeg4-generic") == 0)) {
pt->normal_bitrate = [self integerForKey:@"audio_codec_bitrate_limit_preference"] * 1000;
}
}
}
{
@ -233,6 +245,16 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
[self setBool:(pol->automatically_accept) forKey:@"accept_video_preference"];
[self setBool:linphone_core_self_view_enabled(lc) forKey:@"self_video_preference"];
[self setBool:linphone_core_video_preview_enabled(lc) forKey:@"preview_preference"];
MSVideoSize vsize = linphone_core_get_preferred_video_size(lc);
int index;
if ((vsize.width == MS_VIDEO_SIZE_720P_W) && (vsize.height == MS_VIDEO_SIZE_720P_H)) {
index = 0;
} else if ((vsize.width == MS_VIDEO_SIZE_VGA_W) && (vsize.height == MS_VIDEO_SIZE_VGA_H)) {
index = 1;
} else {
index = 2;
}
[self setInteger:index forKey:@"video_preferred_size_preference"];
}
{
[self setBool:linphone_core_get_use_info_for_dtmf(lc) forKey:@"sipinfo_dtmf_preference"];
@ -486,12 +508,19 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
pt=(PayloadType*)elem->data;
NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate];
linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]);
if ((strcmp(pt->mime_type, "opus") == 0) || (strcmp(pt->mime_type, "mpeg4-generic") == 0)) {
pt->normal_bitrate = [self integerForKey:@"audio_codec_bitrate_limit_preference"] * 1000;
}
}
for (elem=linphone_core_get_video_codecs(lc);elem!=NULL;elem=elem->next){
pt=(PayloadType*)elem->data;
NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate];
linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]);
}
LpConfig *config = linphone_core_get_config(lc);
lp_config_set_int(config, "audio", "codec_bitrate_limit", [self integerForKey:@"audio_codec_bitrate_limit_preference"]);
linphone_core_enable_adaptive_rate_control(lc, [self boolForKey:@"adaptive_rate_control_preference"]);
linphone_core_set_use_info_for_dtmf(lc, [self boolForKey:@"sipinfo_dtmf_preference"]);
linphone_core_set_use_rfc2833_for_dtmf(lc, [self boolForKey:@"rfc_dtmf_preference"]);
@ -529,6 +558,26 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
linphone_core_set_video_policy(lc, &policy);
linphone_core_enable_self_view(lc, [self boolForKey:@"self_video_preference"]);
linphone_core_enable_video_preview(lc, [self boolForKey:@"preview_preference"]);
MSVideoSize vsize;
int bw;
switch ([self integerForKey:@"video_preferred_size_preference"]) {
case 0:
MS_VIDEO_SIZE_ASSIGN(vsize, 720P);
bw = 1024 * 1024;
break;
case 1:
MS_VIDEO_SIZE_ASSIGN(vsize, VGA);
bw = 512 * 1024;
break;
case 2:
default:
MS_VIDEO_SIZE_ASSIGN(vsize, QVGA);
bw = 380 * 1024;
break;
}
linphone_core_set_preferred_video_size(lc, vsize);
[self setInteger: bw forKey:@"upload_bandwidth_preference"];
[self setInteger: bw forKey:@"download_bandwidth_preference"];
// Primary contact
NSString* displayname = [self stringForKey:@"primary_displayname_preference"];

View file

@ -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

View file

@ -31,7 +31,7 @@
#import "LinphoneCoreSettingsStore.h"
#import "ChatModel.h"
#include "linphonecore_utils.h"
#include "linphone/linphonecore_utils.h"
#include "lpconfig.h"
#define LINPHONE_LOGS_MAX_ENTRY 5000
@ -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();
@ -131,6 +131,9 @@ struct codec_name_pref_table codec_pref_table[]={
{ "mp4v-es", 90000, @"mp4v-es_preference"},
{ "h264", 90000, @"h264_preference"},
{ "vp8", 90000, @"vp8_preference"},
{ "mpeg4-generic", 44100, @"aaceld_44k_preference"},
{ "mpeg4-generic", 22050, @"aaceld_22k_preference"},
{ "opus", 48000, @"opus_preference"},
{ NULL,0,Nil }
};
@ -243,6 +246,7 @@ struct codec_name_pref_table codec_pref_table[]={
[self copyDefaultSettings];
pendindCallIdFromRemoteNotif = [[NSMutableArray alloc] init ];
photoLibrary = [[ALAssetsLibrary alloc] init];
}
return self;
}
@ -490,7 +494,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char
if(log == NULL || linphone_call_log_get_status(log) == LinphoneCallMissed) {
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.repeatInterval = 0;
notification.alertBody = [NSString stringWithFormat:NSLocalizedString(@"You miss %@ call", nil), address];
notification.alertBody = [NSString stringWithFormat:NSLocalizedString(@"You missed a call from %@", nil), address];
notification.alertAction = NSLocalizedString(@"Show", nil);
notification.userInfo = [NSDictionary dictionaryWithObject:[NSString stringWithUTF8String:linphone_call_log_get_call_id(log)] forKey:@"callLog"];
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
@ -578,7 +582,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
[chat setMessage:[NSString stringWithUTF8String:linphone_chat_message_get_text(msg)]];
}
[chat setDirection:[NSNumber numberWithInt:1]];
[chat setTime:[NSDate date]];
[chat setTime:[NSDate dateWithTimeIntervalSince1970:linphone_chat_message_get_time(msg)]];
[chat setRead:[NSNumber numberWithInt:0]];
[chat create];
@ -774,9 +778,9 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
static LinphoneCoreVTable linphonec_vtable = {
.show =NULL,
.call_state_changed =(LinphoneCallStateCb)linphone_iphone_call_state,
.call_state_changed =(LinphoneCoreCallStateChangedCb)linphone_iphone_call_state,
.registration_state_changed = linphone_iphone_registration_state,
.notify_recv = NULL,
.notify_presence_recv=NULL,
.new_subscription_request = NULL,
.auth_info_requested = NULL,
.display_status = linphone_iphone_display_status,
@ -838,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);
@ -937,6 +945,7 @@ static LinphoneCoreVTable linphonec_vtable = {
//go directly to bg mode
[self resignActive];
}
// Post event
NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:theLinphoneCore] forKey:@"core"];
@ -969,6 +978,10 @@ static LinphoneCoreVTable linphonec_vtable = {
}
static int comp_call_id(const LinphoneCall* call , const char *callid) {
if (linphone_call_log_get_call_id(linphone_call_get_call_log(call)) == nil) {
ms_error ("no callid for call [%p]", call);
return 1;
}
return strcmp(linphone_call_log_get_call_id(linphone_call_get_call_log(call)), callid);
}
@ -1288,6 +1301,8 @@ static void audioRouteChangeListenerCallback (
if(displayName!=nil) {
linphone_address_set_display_name(linphoneAddress,[displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]);
}
if ([[LinphoneManager instance] lpConfigBoolForKey:@"override_domain_with_default_one"])
linphone_address_set_domain(linphoneAddress, [[[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"] cStringUsingEncoding:[NSString defaultCStringEncoding]]);
if(transfer) {
linphone_core_transfer_call(theLinphoneCore, linphone_core_get_current_call(theLinphoneCore), [address cStringUsingEncoding:[NSString defaultCStringEncoding]]);
} else {
@ -1310,6 +1325,8 @@ static void audioRouteChangeListenerCallback (
if(displayName!=nil) {
linphone_address_set_display_name(linphoneAddress, [displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]);
}
if ([[LinphoneManager instance] lpConfigBoolForKey:@"override_domain_with_default_one"])
linphone_address_set_domain(linphoneAddress, [[[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"] cStringUsingEncoding:[NSString defaultCStringEncoding]]);
if(transfer) {
linphone_core_transfer_call(theLinphoneCore, linphone_core_get_current_call(theLinphoneCore), linphone_address_as_string_uri_only(linphoneAddress));
} else {
@ -1426,6 +1443,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;
@ -1510,4 +1531,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

View file

@ -21,6 +21,7 @@
#include "linphonecore.h"
#include "UIPauseButton.h"
#import "UITransparentTVCell.h"
typedef enum _UICallCellOtherView {
UICallCellOtherView_Avatar = 0,
@ -43,7 +44,7 @@ typedef enum _UICallCellOtherView {
@end
@interface UICallCell : UITableViewCell {
@interface UICallCell : UITransparentTVCell {
}
@property (nonatomic, retain) UICallCellData *data;

View file

@ -495,7 +495,10 @@
- (void)selfUpdate {
UITableView *parentTable = (UITableView *)self.superview;
if(parentTable) {
while( parentTable != nil && ![parentTable isKindOfClass:[UITableView class]] ) parentTable = (UITableView *)[parentTable superview];
if(parentTable != nil) {
NSIndexPath *index= [parentTable indexPathForCell:self];
if(index != nil) {
[parentTable reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:index, nil] withRowAnimation:false];

View file

@ -19,9 +19,11 @@
#import <UIKit/UIKit.h>
#import "UITransparentTVCell.h"
#import "ChatModel.h"
@interface UIChatCell : UITableViewCell {
@interface UIChatCell : UITransparentTVCell {
}
@property (nonatomic, retain) ChatModel *chat;

View file

@ -116,7 +116,12 @@
if([chat isExternalImage] || [chat isInternalImage]) {
[chatContentLabel setText:@""];
} else {
[chatContentLabel setText:[chat message]];
NSString *message = [chat message];
// shorten long messages
if([message length] > 50)
message = [[message substringToIndex:50] stringByAppendingString:@"[...]"];
[chatContentLabel setText:message];
}
int count = [ChatModel unreadMessages:[chat remoteContact]];
@ -156,7 +161,7 @@
if(chat != NULL) {
UIView *view = [self superview];
// Find TableViewCell
if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
while( view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
if(view != nil) {
UITableView *tableView = (UITableView*) view;
NSIndexPath *indexPath = [tableView indexPathForCell:self];

View file

@ -55,7 +55,7 @@
<object class="IBUILabel" id="394118737">
<reference key="NSNextResponder" ref="316763236"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{62, 2}, {218, 25}}</string>
<string key="NSFrame">{{62, 2}, {218, 38}}</string>
<reference key="NSSuperview" ref="316763236"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="641729677"/>
@ -92,7 +92,7 @@
<object class="IBUILabel" id="641729677">
<reference key="NSNextResponder" ref="316763236"/>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{62, 27}, {218, 33}}</string>
<string key="NSFrame">{{62, 39}, {218, 21}}</string>
<reference key="NSSuperview" ref="316763236"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="186935856"/>

View file

@ -22,9 +22,10 @@
#import "ChatModel.h"
#import "ChatRoomTableViewController.h"
#import "UILoadingImageView.h"
#import "UITransparentTVCell.h"
@interface UIChatRoomCell : UITableViewCell {
@interface UIChatRoomCell : UITransparentTVCell {
}
@property (nonatomic, retain) ChatModel *chat;

View file

@ -64,6 +64,13 @@ static UIFont *CELL_FONT = nil;
[messageImageView addGestureRecognizer:imageTapGestureRecognizer];
[self addSubview:innerView];
[deleteButton setAlpha:0.0f];
// shift message box, otherwise it will collide with the bubble
CGRect messageCoords = [messageText frame];
messageCoords.origin.x += 5;
messageCoords.origin.y += 2;
messageCoords.size.width -= 5;
[messageText setFrame:messageCoords];
}
return self;
}
@ -93,19 +100,18 @@ static UIFont *CELL_FONT = nil;
#pragma mark -
- (void)setChat:(ChatModel *)achat {
if(chat == achat) {
return;
}
if(chat != nil) {
[chat release];
chat = nil;
}
if(achat != nil) {
chat = [achat retain];
[self update];
}
if(chat != achat) {
if(chat != nil) {
[chat release];
chat = nil;
}
if(achat != nil) {
chat = [achat retain];
}
}
[self update];
}
- (void)update {
@ -205,7 +211,7 @@ static UIFont *CELL_FONT = nil;
}
messageSize = [[chat message] sizeWithFont: CELL_FONT
constrainedToSize: CGSizeMake(width - CELL_MESSAGE_X_MARGIN, 10000.0f)
lineBreakMode: UILineBreakModeTailTruncation];
lineBreakMode: NSLineBreakByTruncatingTail];
} else {
messageSize = CGSizeMake(CELL_IMAGE_WIDTH, CELL_IMAGE_HEIGHT);
}
@ -262,7 +268,7 @@ static UIFont *CELL_FONT = nil;
if(chat != NULL) {
UIView *view = [self superview];
// Find TableViewCell
if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
while(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
if(view != nil) {
UITableView *tableView = (UITableView*) view;
NSIndexPath *indexPath = [tableView indexPathForCell:self];

View file

@ -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;

View file

@ -19,8 +19,9 @@
#import <UIKit/UIKit.h>
#import <AddressBook/AddressBook.h>
#import "UITransparentTVCell.h"
@interface UIContactCell : UITableViewCell {
@interface UIContactCell : UITransparentTVCell {
}
@property (nonatomic, retain) IBOutlet UILabel* firstNameLabel;

View file

@ -140,7 +140,7 @@
+ (CGFloat)height:(BOOL)editing {
if(editing) {
return 160.0f;
return 170.0f;
} else {
return 80.0f;
}
@ -206,15 +206,22 @@
[cell.detailTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords];
[cell.detailTextField setAutocorrectionType:UITextAutocorrectionTypeNo];
[cell.detailTextField setKeyboardType:UIKeyboardTypeDefault];
[cell setBackgroundColor:[UIColor whiteColor]];
}
// setup placeholder
ABPropertyID property = [[propertyList objectAtIndex:[indexPath row]] intValue];
if(property == kABPersonFirstNameProperty) {
[cell.detailTextField setPlaceholder:NSLocalizedString(@"First name", nil)];
} else if (property == kABPersonLastNameProperty) {
[cell.detailTextField setPlaceholder:NSLocalizedString(@"Last name", nil)];
} else if (property == kABPersonOrganizationProperty) {
[cell.detailTextField setPlaceholder:NSLocalizedString(@"Company name", nil)];
}
[cell.detailTextField setKeyboardType:UIKeyboardTypeDefault];
// setup values, if they exist
if(contact) {
CFStringRef lValue = ABRecordCopyValue(contact, property);
if(lValue != NULL) {
@ -340,7 +347,8 @@
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
UIView *view = [textField superview];
// Find TableViewCell
if(view != nil && ![view isKindOfClass:[UIEditableTableViewCell class]]) view = [view superview];
while(view != nil && ![view isKindOfClass:[UIEditableTableViewCell class]]) view = [view superview];
if(view != nil) {
UIEditableTableViewCell *cell = (UIEditableTableViewCell*)view;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

View file

@ -18,10 +18,12 @@
*/
#import <UIKit/UIKit.h>
#import "UITransparentTVCell.h"
@interface UIEditableTableViewCell : UITableViewCell {
@interface UIEditableTableViewCell : UITransparentTVCell {
}
@property (nonatomic, retain) IBOutlet UIView *verticalSep;
@property (nonatomic, retain) IBOutlet UITextField *detailTextField;
@end

View file

@ -22,6 +22,7 @@
@implementation UIEditableTableViewCell
@synthesize detailTextField;
@synthesize verticalSep;
#pragma mark - Lifecycle Functions
@ -30,7 +31,6 @@
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
UIView *parent = [self.detailTextLabel superview];
self.detailTextField = [[UITextField alloc] init];
[self.detailTextField setHidden:TRUE];
[self.detailTextField setClearButtonMode: UITextFieldViewModeWhileEditing];
@ -39,7 +39,13 @@
UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:[UIFont systemFontSize]];
[self.detailTextLabel setFont:font];
[self.detailTextField setFont:font];
[parent addSubview:detailTextField];
[self.contentView addSubview:detailTextField];
// a vertical separator that will come between the text and detailed text
self.verticalSep = [[UIView alloc] initWithFrame:CGRectMake(80, 5, 1, 34)];
verticalSep.backgroundColor = [UIColor lightGrayColor];
[self.verticalSep setHidden:TRUE];
[self.contentView addSubview:verticalSep];
}
return self;
}
@ -53,21 +59,32 @@
#pragma mark - View Functions
- (void)layoutSubviews {
[super layoutSubviews];
CGRect fieldframe;
fieldframe.origin.x = 15;
fieldframe.origin.y = 0;
fieldframe.size.height = 44;
if([[self.textLabel text] length] != 0)
fieldframe.origin.x += [self.textLabel frame].size.width;
CGRect superframe = [[self.detailTextField superview]frame];
fieldframe.size.width = superframe.size.width - fieldframe.origin.x;
[self.detailTextField setFrame:fieldframe];
CGRect labelFrame = [self.detailTextLabel frame];
labelFrame.origin.x = fieldframe.origin.x;
[self.detailTextLabel setFrame:labelFrame];
[super layoutSubviews];
CGRect detailEditFrame;
detailEditFrame.origin.x = 15;
detailEditFrame.origin.y = 0;
detailEditFrame.size.height = 44;
if([[self.textLabel text] length] != 0) {
detailEditFrame.origin.x += [self.textLabel frame].size.width + 8;
// shrink left text width by 10px
CGRect leftLabelFrame = [self.textLabel frame];
leftLabelFrame.size.width -= 10;
[self.textLabel setFrame:leftLabelFrame];
// place separator between left text and detailed text
CGRect separatorFrame = [self.verticalSep frame];
separatorFrame.origin.x = leftLabelFrame.size.width + leftLabelFrame.origin.x + 5;
[self.verticalSep setFrame:separatorFrame];
[self.verticalSep setHidden:FALSE];
}
// put the detailed text edit view at the correct position
CGRect superframe = [[self.detailTextField superview] frame];
detailEditFrame.size.width = superframe.size.width - detailEditFrame.origin.x;
[self.detailTextField setFrame:detailEditFrame];
}

View file

@ -19,9 +19,10 @@
#import <UIKit/UIKit.h>
#import "UITransparentTVCell.h"
#include "linphonecore.h"
@interface UIHistoryCell : UITableViewCell {
@interface UIHistoryCell : UITransparentTVCell {
}
@property (nonatomic, assign) LinphoneCallLog *callLog;

View file

@ -81,7 +81,7 @@
if(callLog != NULL) {
UIView *view = [self superview];
// Find TableViewCell
if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
while(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
if(view != nil) {
UITableView *tableView = (UITableView*) view;
NSIndexPath *indexPath = [tableView indexPathForCell:self];

View file

@ -19,7 +19,8 @@
#import <UIKit/UIColor.h>
#define LINPHONE_MAIN_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f]
#define LINPHONE_MAIN_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f]
#define LINPHONE_SETTINGS_BG_IOS7 [UIColor colorWithRed:164/255. green:175/255. blue:183/255. alpha:1.0]//[UIColor colorWithWhite:0.88 alpha:1.0]
#define LINPHONE_TABLE_CELL_BACKGROUND_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f]
@interface UIColor (LightAndDark)

View file

@ -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]];
}

View file

@ -0,0 +1,24 @@
/* UITransparentTVCell.h
*
* Copyright (C) 2012 Belledonne Comunications, 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 Library 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.
*/
#import <UIKit/UIKit.h>
@interface UITransparentTVCell : UITableViewCell
@end

View file

@ -0,0 +1,39 @@
/* UITransparentTVCell.m
*
* Copyright (C) 2012 Belledonne Comunications, 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 Library 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.
*/
#import "UITransparentTVCell.h"
@implementation UITransparentTVCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Set transparent background
[self setBackgroundColor:[UIColor clearColor]];
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
}
@end

View file

@ -194,7 +194,7 @@
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</array>
<string key="NSFrameSize">{320, 160}</string>
<string key="NSFrameSize">{320, 170}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="452773126"/>

View file

@ -60,6 +60,7 @@
- (void)showStateBar:(BOOL)show;
- (void)showTabBar:(BOOL)show;
- (void)fullScreen:(BOOL)enabled;
- (void)updateStatusBar:(UICompositeViewDescription*)to_view;
- (void)startUp;
- (void)addInhibitedEvent:(id)event;

View file

@ -211,42 +211,24 @@ static PhoneMainView* phoneMainViewInstance=nil;
[self updateApplicationBadgeNumber];
}
- (void)registrationUpdate:(NSNotification*)notif {
- (void)registrationUpdate:(NSNotification*)notif {
LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue];
LinphoneProxyConfig *cfg = [[notif.userInfo objectForKey: @"cfg"] pointerValue];
// Show error
if (state == LinphoneRegistrationFailed) {
NSString* lErrorMessage = nil;
LinphoneReason reason = linphone_proxy_config_get_error(cfg);
if (reason == LinphoneReasonBadCredentials) {
lErrorMessage = NSLocalizedString(@"Bad credentials, check your account settings", nil);
} else if (reason == LinphoneReasonNoResponse) {
lErrorMessage = NSLocalizedString(@"SIP server unreachable", nil);
} else {
lErrorMessage = NSLocalizedString(@"Unknown error", nil);
}
if (lErrorMessage != nil && linphone_proxy_config_get_error(cfg) != LinphoneReasonNoResponse) {
//do not report network connection issue on registration
//default behavior if no registration delegates
UIApplicationState s = [UIApplication sharedApplication].applicationState;
// do not stack error message when going to backgroud
if (s != UIApplicationStateBackground) {
UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Registration failure",nil)
message:lErrorMessage
delegate:nil
cancelButtonTitle:NSLocalizedString(@"Continue",nil)
otherButtonTitles:nil,nil];
[error show];
[error release];
}
}
//Only report bad credential issue
if (state == LinphoneRegistrationFailed
&&[UIApplication sharedApplication].applicationState != UIApplicationStateBackground
&& linphone_proxy_config_get_error(cfg) == LinphoneReasonBadCredentials ) {
UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Registration failure",nil)
message:NSLocalizedString(@"Bad credentials, check your account settings", nil)
delegate:nil
cancelButtonTitle:NSLocalizedString(@"Continue",nil)
otherButtonTitles:nil,nil];
[error show];
[error release];
}
}
- (void)callUpdate:(NSNotification*)notif {
- (void)callUpdate:(NSNotification*)notif {
LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue];
LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue];
NSString *message = [notif.userInfo objectForKey: @"message"];
@ -390,20 +372,20 @@ static PhoneMainView* phoneMainViewInstance=nil;
if([old equal:[ChatViewController compositeViewDescription]]) {
if([new equal:[ContactsViewController compositeViewDescription]] ||
[new equal:[DialerViewController compositeViewDescription]] ||
[new equal:[SettingsViewController compositeViewDescription]] ||
[new equal:[HistoryViewController compositeViewDescription]]) {
[new equal:[DialerViewController compositeViewDescription]] ||
[new equal:[HistoryViewController compositeViewDescription]]) {
left = true;
}
} else if([old equal:[SettingsViewController compositeViewDescription]]) {
if([new equal:[DialerViewController compositeViewDescription]] ||
if([new equal:[DialerViewController compositeViewDescription]] ||
[new equal:[ContactsViewController compositeViewDescription]] ||
[new equal:[HistoryViewController compositeViewDescription]]) {
[new equal:[HistoryViewController compositeViewDescription]] ||
[new equal:[ChatViewController compositeViewDescription]]) {
left = true;
}
} else if([old equal:[DialerViewController compositeViewDescription]]) {
if([new equal:[ContactsViewController compositeViewDescription]] ||
[new equal:[HistoryViewController compositeViewDescription]]) {
if([new equal:[ContactsViewController compositeViewDescription]] ||
[new equal:[HistoryViewController compositeViewDescription]]) {
left = true;
}
} else if([old equal:[ContactsViewController compositeViewDescription]]) {
@ -431,6 +413,23 @@ static PhoneMainView* phoneMainViewInstance=nil;
[mainViewController setStateBarHidden:!show];
}
- (void)updateStatusBar:(UICompositeViewDescription*)to_view {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
if ([LinphoneManager runningOnIpad]) {
// In iOS7, the ipad has a black background on dialer, so we have to adjust the
// status bar style for each transition to/from this view
BOOL toLightStatus = [to_view equal:[DialerViewController compositeViewDescription]];
BOOL fromLightStatus = [currentView equal:[DialerViewController compositeViewDescription]];
if( (!to_view && fromLightStatus) || // this case happens at app launch
toLightStatus )
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
else if(fromLightStatus)
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
#endif
}
- (void)fullScreen:(BOOL)enabled {
[mainViewController setFullScreen:enabled];
}
@ -460,9 +459,10 @@ static PhoneMainView* phoneMainViewInstance=nil;
} else {
[mainViewController setViewTransition:nil];
}
[self updateStatusBar:view];
[mainViewController changeView:view];
currentView = view;
}
}
NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject:currentView forKey:@"view"];
[[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneMainViewChange object:self userInfo:mdict];

View file

@ -340,7 +340,12 @@
}
+ (void)removeBackground:(UIView*)view {
[view setBackgroundColor:[UIColor clearColor]];
// iOS7 transparent background is *really* transparent: with an alpha != 0
// it messes up the transitions. Use non-transparent BG for iOS7
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
[view setBackgroundColor:LINPHONE_SETTINGS_BG_IOS7];
else
[view setBackgroundColor:[UIColor clearColor]];
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
@ -614,7 +619,6 @@ static UICompositeViewDescription *compositeDescription = nil;
[hiddenKeys addObject:@"battery_alert_button"];
#endif
[hiddenKeys addObject:@"audio_advanced_group"];
[hiddenKeys addObject:@"playback_gain_preference"];
[hiddenKeys addObject:@"microphone_gain_preference"];

View file

@ -62,6 +62,10 @@
<bool key="IBUIHorizontal">NO</bool>
</object>
<object class="IBUINavigationController" id="983459891">
<object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics">
<bool key="IBUITranslucent">NO</bool>
<bool key="IBUIPrompted">NO</bool>
</object>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
<object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
<int key="IBUIInterfaceOrientation">1</int>
@ -79,6 +83,7 @@
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIMultipleTouchEnabled">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUITranslucent">NO</bool>
</object>
<array class="NSMutableArray" key="IBUIViewControllers"/>
</object>

View file

@ -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 {

View file

@ -27,6 +27,12 @@
#import <UIKit/UIKit.h>
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 60000
// UITextAlignment is deprecated in iOS 6.0+, use NSTextAlignment instead.
// Reference: https://developer.apple.com/library/ios/documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html
#define NSTextAlignment UITextAlignment
#endif
@class HPGrowingTextView;
@class HPTextViewInternal;
@ -60,10 +66,11 @@
int minNumberOfLines;
BOOL animateHeightChange;
NSTimeInterval animationDuration;
//uitextview properties
NSObject <HPGrowingTextViewDelegate> *__unsafe_unretained delegate;
UITextAlignment textAlignment;
NSTextAlignment textAlignment;
NSRange selectedRange;
BOOL editable;
UIDataDetectorTypes dataDetectorTypes;
@ -75,7 +82,12 @@
//real class properties
@property int maxNumberOfLines;
@property int minNumberOfLines;
@property (nonatomic) int maxHeight;
@property (nonatomic) int minHeight;
@property BOOL animateHeightChange;
@property NSTimeInterval animationDuration;
@property (nonatomic, strong) NSString *placeholder;
@property (nonatomic, strong) UIColor *placeholderColor;
@property (nonatomic, strong) UITextView *internalTextView;
@ -84,12 +96,13 @@
@property(nonatomic,strong) NSString *text;
@property(nonatomic,strong) UIFont *font;
@property(nonatomic,strong) UIColor *textColor;
@property(nonatomic) UITextAlignment textAlignment; // default is UITextAlignmentLeft
@property(nonatomic) NSTextAlignment textAlignment; // default is NSTextAlignmentLeft
@property(nonatomic) NSRange selectedRange; // only ranges of length 0 are supported
@property(nonatomic,getter=isEditable) BOOL editable;
@property(nonatomic) UIDataDetectorTypes dataDetectorTypes __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
@property (nonatomic) UIReturnKeyType returnKeyType;
@property (assign) UIEdgeInsets contentInset;
@property (nonatomic) BOOL isScrollable;
@property(nonatomic) BOOL enablesReturnKeyAutomatically;
//uitextview methods
@ -101,4 +114,7 @@
- (BOOL)hasText;
- (void)scrollRangeToVisible:(NSRange)range;
// call to force a height change (e.g. after you change max/min lines)
- (void)refreshHeight;
@end

View file

@ -37,15 +37,19 @@
@implementation HPGrowingTextView
@synthesize internalTextView;
@synthesize delegate;
@synthesize maxHeight;
@synthesize minHeight;
@synthesize font;
@synthesize textColor;
@synthesize textAlignment;
@synthesize selectedRange;
@synthesize editable;
@synthesize dataDetectorTypes;
@synthesize dataDetectorTypes;
@synthesize animateHeightChange;
@synthesize animationDuration;
@synthesize returnKeyType;
@dynamic placeholder;
@dynamic placeholderColor;
// having initwithcoder allows us to use HPGrowingTextView in a Nib. -- aob, 9/2011
- (id)initWithCoder:(NSCoder *)aDecoder
@ -82,10 +86,14 @@
minNumberOfLines = 1;
animateHeightChange = YES;
animationDuration = 0.1f;
internalTextView.text = @"";
[self setMaxNumberOfLines:3];
[self setPlaceholderColor:[UIColor lightGrayColor]];
internalTextView.displayPlaceHolder = YES;
}
-(CGSize)sizeThatFits:(CGSize)size
@ -101,10 +109,9 @@
[super layoutSubviews];
CGRect r = self.bounds;
r.origin.y = contentInset.top;
r.origin.x = contentInset.left;
r.origin.y = 0;
r.origin.x = contentInset.left;
r.size.width -= contentInset.left + contentInset.right;
r.size.height -= contentInset.top + contentInset.bottom;
internalTextView.frame = r;
}
@ -114,10 +121,9 @@
contentInset = inset;
CGRect r = self.frame;
r.origin.y = contentInset.top;
r.origin.x = contentInset.left;
r.size.width -= contentInset.left + contentInset.right;
r.size.height -= contentInset.top + contentInset.bottom;
r.origin.y = inset.top - inset.bottom;
r.origin.x = inset.left;
r.size.width -= inset.left + inset.right;
internalTextView.frame = r;
@ -132,6 +138,8 @@
-(void)setMaxNumberOfLines:(int)n
{
if(n == 0 && maxHeight > 0) return; // the user specified a maxHeight themselves.
// Use internalTextView for height calculations, thanks to Gwynne <http://blog.darkrainfall.org/>
NSString *saveText = internalTextView.text, *newText = @"-";
@ -143,13 +151,13 @@
internalTextView.text = newText;
maxHeight = internalTextView.contentSize.height;
maxHeight = [self measureHeight];
internalTextView.text = saveText;
internalTextView.hidden = NO;
internalTextView.delegate = self;
//[self sizeToFit];
[self sizeToFit];
maxNumberOfLines = n;
}
@ -159,8 +167,16 @@
return maxNumberOfLines;
}
- (void)setMaxHeight:(int)height
{
maxHeight = height;
maxNumberOfLines = 0;
}
-(void)setMinNumberOfLines:(int)m
{
if(m == 0 && minHeight > 0) return; // the user specified a minHeight themselves.
// Use internalTextView for height calculations, thanks to Gwynne <http://blog.darkrainfall.org/>
NSString *saveText = internalTextView.text, *newText = @"-";
@ -172,13 +188,13 @@
internalTextView.text = newText;
minHeight = internalTextView.contentSize.height;
minHeight = [self measureHeight];
internalTextView.text = saveText;
internalTextView.hidden = NO;
internalTextView.delegate = self;
//[self sizeToFit];
[self sizeToFit];
minNumberOfLines = m;
}
@ -188,13 +204,43 @@
return minNumberOfLines;
}
- (void)setMinHeight:(int)height
{
minHeight = height;
minNumberOfLines = 0;
}
- (NSString *)placeholder
{
return internalTextView.placeholder;
}
- (void)setPlaceholder:(NSString *)placeholder
{
[internalTextView setPlaceholder:placeholder];
}
- (UIColor *)placeholderColor
{
return internalTextView.placeholderColor;
}
- (void)setPlaceholderColor:(UIColor *)placeholderColor
{
[internalTextView setPlaceholderColor:placeholderColor];
}
- (void)textViewDidChange:(UITextView *)textView
{
{
[self refreshHeight];
}
- (void)refreshHeight
{
//size of content, so we can set the frame of self
NSInteger newSizeH = internalTextView.contentSize.height;
NSInteger newSizeH = [self measureHeight];
if(newSizeH < minHeight || !internalTextView.hasText) newSizeH = minHeight; //not smalles than minHeight
if(newSizeH > maxHeight) newSizeH = maxHeight; // not taller than maxHeight
if (internalTextView.frame.size.height > maxHeight) newSizeH = maxHeight; // not taller than maxHeight
if (internalTextView.frame.size.height != newSizeH)
{
@ -212,7 +258,7 @@
if ([UIView resolveClassMethod:@selector(animateWithDuration:animations:)]) {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
[UIView animateWithDuration:0.1f
[UIView animateWithDuration:animationDuration
delay:0
options:(UIViewAnimationOptionAllowUserInteraction|
UIViewAnimationOptionBeginFromCurrentState)
@ -227,7 +273,7 @@
#endif
} else {
[UIView beginAnimations:@"" context:nil];
[UIView setAnimationDuration:0.1f];
[UIView setAnimationDuration:animationDuration];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(growDidStop)];
[UIView setAnimationBeginsFromCurrentState:YES];
@ -244,7 +290,6 @@
}
}
}
// if our new height is greater than the maxHeight
// sets not set the height or move things
@ -260,15 +305,77 @@
internalTextView.scrollEnabled = NO;
}
// scroll to caret (needed on iOS7)
if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)])
{
CGRect r = [internalTextView caretRectForPosition:internalTextView.selectedTextRange.end];
CGFloat caretY = MAX(r.origin.y - internalTextView.frame.size.height + r.size.height + 8, 0);
if(internalTextView.contentOffset.y < caretY && r.origin.y != INFINITY)
internalTextView.contentOffset = CGPointMake(0, MIN(caretY, internalTextView.contentSize.height));
}
}
// Display (or not) the placeholder string
BOOL wasDisplayingPlaceholder = internalTextView.displayPlaceHolder;
internalTextView.displayPlaceHolder = self.internalTextView.text.length == 0;
if (wasDisplayingPlaceholder != internalTextView.displayPlaceHolder) {
[internalTextView setNeedsDisplay];
}
// Tell the delegate that the text view changed
if ([delegate respondsToSelector:@selector(growingTextViewDidChange:)]) {
if ([delegate respondsToSelector:@selector(growingTextViewDidChange:)]) {
[delegate growingTextViewDidChange:self];
}
}
// Code from apple developer forum - @Steve Krulewitz, @Mark Marszal, @Eric Silverberg
- (CGFloat)measureHeight
{
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
if ([self respondsToSelector:@selector(snapshotViewAfterScreenUpdates:)])
{
CGRect frame = internalTextView.bounds;
CGSize fudgeFactor;
// The padding added around the text on iOS6 and iOS7 is different.
fudgeFactor = CGSizeMake(10.0, 16.0);
frame.size.height -= fudgeFactor.height;
frame.size.width -= fudgeFactor.width;
NSMutableAttributedString* textToMeasure;
if(internalTextView.attributedText && internalTextView.attributedText.length > 0){
textToMeasure = [[NSMutableAttributedString alloc] initWithAttributedString:internalTextView.attributedText];
}
else{
textToMeasure = [[NSMutableAttributedString alloc] initWithString:internalTextView.text];
[textToMeasure addAttribute:NSFontAttributeName value:internalTextView.font range:NSMakeRange(0, textToMeasure.length)];
}
if ([textToMeasure.string hasSuffix:@"\n"])
{
[textToMeasure appendAttributedString:[[NSAttributedString alloc] initWithString:@"-" attributes:@{NSFontAttributeName: internalTextView.font}]];
}
// NSAttributedString class method: boundingRectWithSize:options:context is
// available only on ios7.0 sdk.
CGRect size = [textToMeasure boundingRectWithSize:CGSizeMake(CGRectGetWidth(frame), MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
return CGRectGetHeight(size) + fudgeFactor.height;
}
else
{
return self.internalTextView.contentSize.height;
}
#else
return self.internalTextView.contentSize.height;
#endif
}
-(void)resizeTextView:(NSInteger)newSizeH
{
if ([delegate respondsToSelector:@selector(growingTextView:willChangeHeight:)]) {
@ -283,15 +390,14 @@
internalTextViewFrame.origin.x = contentInset.left;
internalTextViewFrame.size.width = internalTextView.contentSize.width;
internalTextView.frame = internalTextViewFrame;
if(!CGRectEqualToRect(internalTextView.frame, internalTextViewFrame)) internalTextView.frame = internalTextViewFrame;
}
-(void)growDidStop
- (void)growDidStop
{
if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) {
[delegate growingTextView:self didChangeHeight:self.frame.size.height];
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
@ -377,12 +483,12 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
-(void)setTextAlignment:(UITextAlignment)aligment
-(void)setTextAlignment:(NSTextAlignment)aligment
{
internalTextView.textAlignment = aligment;
}
-(UITextAlignment)textAlignment
-(NSTextAlignment)textAlignment
{
return internalTextView.textAlignment;
}
@ -401,6 +507,18 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)setIsScrollable:(BOOL)isScrollable
{
internalTextView.scrollEnabled = isScrollable;
}
- (BOOL)isScrollable
{
return internalTextView.scrollEnabled;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
-(void)setEditable:(BOOL)beditable
{
internalTextView.editable = beditable;

View file

@ -28,7 +28,10 @@
#import <UIKit/UIKit.h>
@interface HPTextViewInternal : UITextView {
}
@interface HPTextViewInternal : UITextView
@property (nonatomic, strong) NSString *placeholder;
@property (nonatomic, strong) UIColor *placeholderColor;
@property (nonatomic) BOOL displayPlaceHolder;
@end

View file

@ -30,6 +30,10 @@
@implementation HPTextViewInternal
@synthesize placeholder;
@synthesize placeholderColor;
@synthesize displayPlaceHolder;
-(void)setText:(NSString *)text
{
BOOL originalValue = self.scrollEnabled;
@ -41,6 +45,11 @@
[self setScrollEnabled:originalValue];
}
- (void)setScrollable:(BOOL)isScrollable
{
[super setScrollEnabled:isScrollable];
}
-(void)setContentOffset:(CGPoint)s
{
if(self.tracking || self.decelerating){
@ -89,7 +98,13 @@
[super setContentSize:contentSize];
}
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
if (displayPlaceHolder && placeholder && placeholderColor) {
[placeholderColor set];
[placeholder drawInRect:CGRectMake(8.0f, 8.0f, self.frame.size.width - 16.0f, self.frame.size.height - 16.0f) withFont:self.font];
}
}
@end

View file

@ -155,7 +155,11 @@ CGRect IASKCGRectSwap(CGRect rect);
- (void) viewDidLoad {
[super viewDidLoad];
if ([self isPad]) {
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched;
// patch for iOS7 from https://github.com/futuretap/InAppSettingsKit/commit/66d95030cfac84f17f800056140523742b49957e
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) // don't use etched style on iOS 7
#endif
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched;
}
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapToEndEdit:)];
tapGesture.cancelsTouchesInView = NO;
@ -446,7 +450,7 @@ CGRect IASKCGRectSwap(CGRect rect);
if ((title = [self tableView:tableView titleForHeaderInSection:section])) {
CGSize size = [title sizeWithFont:[UIFont boldSystemFontOfSize:[UIFont labelFontSize]]
constrainedToSize:CGSizeMake(tableView.frame.size.width - 2*kIASKHorizontalPaddingGroupTitles, INFINITY)
lineBreakMode:UILineBreakModeWordWrap];
lineBreakMode:NSLineBreakByWordWrapping];
return size.height+kIASKVerticalPaddingGroupTitles;
}
return 0;

View file

@ -97,7 +97,13 @@
#define kIASKMinLabelWidth 97
#define kIASKMaxLabelWidth 240
#define kIASKMinValueWidth 35
#define kIASKPaddingLeft 9
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
#define kIASKPaddingLeft (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1 ? 14 : 9)
#else
#define kIASKPaddingLeft 9
#endif
#define kIASKPaddingRight 10
#define kIASKHorizontalPaddingGroupTitles 19
#define kIASKVerticalPaddingGroupTitles 15

View file

@ -32,16 +32,16 @@
CGFloat labelWidth = [self.textLabel sizeThatFits:CGSizeZero].width;
CGFloat minValueWidth = (self.detailTextLabel.text.length) ? kIASKMinValueWidth + kIASKSpacing : 0;
labelWidth = MIN(labelWidth, viewSize.width - minValueWidth - kIASKPaddingLeft -kIASKPaddingRight - imageOffset);
CGRect labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, labelWidth, viewSize.height -2);
CGRect labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, labelWidth, viewSize.height);
if (!self.detailTextLabel.text.length) {
labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, viewSize.width - kIASKPaddingLeft - kIASKPaddingRight - imageOffset, viewSize.height -2);
labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, viewSize.width - kIASKPaddingLeft - kIASKPaddingRight - imageOffset, viewSize.height);
}
self.textLabel.frame = labelFrame;
// set the right value label frame
if (!self.textLabel.text.length) {
viewSize = [self.detailTextLabel superview].frame.size;
self.detailTextLabel.frame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, viewSize.width - kIASKPaddingLeft - kIASKPaddingRight - imageOffset, viewSize.height -2);
self.detailTextLabel.frame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, viewSize.width - kIASKPaddingLeft - kIASKPaddingRight - imageOffset, viewSize.height);
} else if (self.detailTextLabel.textAlignment == UITextAlignmentLeft) {
CGRect valueFrame = self.detailTextLabel.frame;
valueFrame.origin.x = labelFrame.origin.x + MAX(kIASKMinLabelWidth - imageOffset, labelWidth) + kIASKSpacing;

View file

@ -83,16 +83,16 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi
// Auto found position
//
UIView *view = [self superview];
// Find TableViewCell
if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview];
UIView *view = [self superview];
while( view != nil && ![view isKindOfClass:[UITableView class]] ) view = [view superview];
UIView *cellView = [self superview];
// Find TableViewCell
if(cellView != nil && ![cellView isKindOfClass:[UITableViewCell class]]) cellView = [cellView superview];
UIView *cellView = [self superview];
while( cellView != nil && ![cellView isKindOfClass:[UITableViewCell class]] ) cellView = [cellView superview];
if(view != nil && cellView != nil) {
UITableViewCell *cell = (UITableViewCell*)cellView;
UITableViewCell *cell = (UITableViewCell*)cellView;
UITableView *tableView = (UITableView*)view;
if([tableView style] == UITableViewStyleGrouped) {
@ -122,7 +122,9 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi
- (void)drawRect:(CGRect)aRect {
// Drawing code
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextRef c = UIGraphicsGetCurrentContext();
// don't use arcs on iOS >= 7
BOOL use_arcs = [[[UIDevice currentDevice] systemVersion] floatValue] < 7;
int lineWidth = 1;
@ -140,8 +142,8 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi
CGContextSetLineWidth(c, lineWidth);
CGContextSetAllowsAntialiasing(c, YES);
CGContextSetShouldAntialias(c, YES);
if (position == UACellBackgroundViewPositionTop) {
if (position == UACellBackgroundViewPositionTop && use_arcs) {
miny += 1;
@ -166,7 +168,7 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi
CGContextStrokePath(c);
CGContextRestoreGState(c);
} else if (position == UACellBackgroundViewPositionBottom) {
} else if (position == UACellBackgroundViewPositionBottom && use_arcs) {
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, minx, miny);
@ -190,8 +192,8 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi
CGContextRestoreGState(c);
} else if (position == UACellBackgroundViewPositionMiddle) {
} else if (position == UACellBackgroundViewPositionMiddle || !use_arcs) {
// in iOS7, this will be the default handling
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, minx, miny);
CGPathAddLineToPoint(path, NULL, maxx, miny);

View file

@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">784</int>
<string key="IBDocument.SystemVersion">11E53</string>
<string key="IBDocument.InterfaceBuilderVersion">2840</string>
<string key="IBDocument.AppKitVersion">1138.47</string>
<string key="IBDocument.HIToolboxVersion">569.00</string>
<string key="IBDocument.SystemVersion">12D78</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.37</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1926</string>
<string key="NS.object.0">2083</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -52,6 +52,7 @@
<int key="NSvFlags">301</int>
<string key="NSFrame">{{-1000, -1000}, {2000, 2000}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1017044170"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
@ -65,6 +66,7 @@
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="69034748"/>
<string key="NSReuseIdentifierKey">_NS:196</string>
<object class="NSColor" key="IBUIBackgroundColor" id="95762599">
@ -76,11 +78,12 @@
<object class="IBUIView" id="673568144">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">283</int>
<string key="NSFrame">{{220, 360}, {100, 100}}</string>
<string key="NSFrame">{{216, 324}, {96, 128}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="972197710"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<int key="IBUIContentMode">1</int>
<int key="IBUIContentMode">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIActivityIndicatorView" id="69034748">
@ -88,6 +91,7 @@
<int key="NSvFlags">301</int>
<string key="NSFrame">{{141, 212}, {37, 37}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="673568144"/>
<string key="NSReuseIdentifierKey">_NS:1030</string>
<bool key="IBUIOpaque">NO</bool>
@ -99,6 +103,7 @@
</object>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="327164432"/>
<string key="NSReuseIdentifierKey">_NS:196</string>
<reference key="IBUIBackgroundColor" ref="95762599"/>
@ -109,6 +114,7 @@
<int key="NSvFlags">274</int>
<string key="NSFrame">{{0, -10}, {320, 480}}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1009068048"/>
<string key="NSReuseIdentifierKey">_NS:418</string>
<reference key="IBUIBackgroundColor" ref="95762599"/>
@ -139,6 +145,7 @@
<int key="NSvFlags">-2147483356</int>
<string key="NSFrame">{{20, 40}, {85, 33}}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -174,6 +181,7 @@
</object>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="662692377"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
@ -440,7 +448,120 @@
<nil key="sourceID"/>
<int key="maxID">173</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">InCallTableViewController</string>
<string key="superclassName">UITableViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallTableViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">InCallViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>InCallTableViewController</string>
<string>UITableView</string>
<string>UIView</string>
<string>UICamSwitch</string>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>UIActivityIndicatorView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">callTableController</string>
<string key="candidateClassName">InCallTableViewController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">callTableView</string>
<string key="candidateClassName">UITableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">testVideoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoCameraSwitch</string>
<string key="candidateClassName">UICamSwitch</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoGroup</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoPreview</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoWaitingForFirstImage</string>
<string key="candidateClassName">UIActivityIndicatorView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICamSwitch</string>
<string key="superclassName">UIButton</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">preview</string>
<string key="NS.object.0">UIView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">preview</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">preview</string>
<string key="candidateClassName">UIView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UICamSwitch.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
@ -466,6 +587,6 @@
<string>{151, 51}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">1926</string>
<string key="IBCocoaTouchPluginVersion">2083</string>
</data>
</archive>

View file

@ -2,22 +2,22 @@
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">784</int>
<string key="IBDocument.SystemVersion">11E53</string>
<string key="IBDocument.InterfaceBuilderVersion">1938</string>
<string key="IBDocument.AppKitVersion">1138.47</string>
<string key="IBDocument.HIToolboxVersion">569.00</string>
<string key="IBDocument.SystemVersion">12D78</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.37</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">933</string>
<string key="NS.object.0">2083</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>IBUITableView</string>
<string>IBUIButton</string>
<string>IBUIActivityIndicatorView</string>
<string>IBUIView</string>
<string>IBUITableViewController</string>
<string>IBProxyObject</string>
<string>IBUIActivityIndicatorView</string>
<string>IBUIButton</string>
<string>IBUITableView</string>
<string>IBUITableViewController</string>
<string>IBUIView</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -76,11 +76,11 @@
<object class="IBUIView" id="673568144">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">283</int>
<string key="NSFrame">{{220, 360}, {100, 100}}</string>
<string key="NSFrame">{{216, 324}, {96, 128}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSNextKeyView" ref="972197710"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<int key="IBUIContentMode">1</int>
<int key="IBUIContentMode">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIActivityIndicatorView" id="69034748">
@ -405,7 +405,7 @@
<string>173.IBPluginDependency</string>
<string>9.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>InCallViewController</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
@ -439,7 +439,120 @@
<nil key="sourceID"/>
<int key="maxID">173</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">InCallTableViewController</string>
<string key="superclassName">UITableViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallTableViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">InCallViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>InCallTableViewController</string>
<string>UITableView</string>
<string>UIView</string>
<string>UICamSwitch</string>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>UIActivityIndicatorView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">callTableController</string>
<string key="candidateClassName">InCallTableViewController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">callTableView</string>
<string key="candidateClassName">UITableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">testVideoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoCameraSwitch</string>
<string key="candidateClassName">UICamSwitch</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoGroup</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoPreview</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoWaitingForFirstImage</string>
<string key="candidateClassName">UIActivityIndicatorView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICamSwitch</string>
<string key="superclassName">UIButton</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">preview</string>
<string key="NS.object.0">UIView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">preview</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">preview</string>
<string key="candidateClassName">UIView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UICamSwitch.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
@ -459,12 +572,12 @@
<string>switch_camera_default.png</string>
<string>switch_camera_over.png</string>
</object>
<object class="NSMutableArray" key="dict.values">
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{151, 51}</string>
<string>{151, 51}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">933</string>
<string key="IBCocoaTouchPluginVersion">2083</string>
</data>
</archive>

View file

@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">784</int>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">2844</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
<string key="IBDocument.SystemVersion">12D78</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.37</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1930</string>
<string key="NS.object.0">2083</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -76,11 +76,11 @@
<object class="IBUIView" id="673568144">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">283</int>
<string key="NSFrame">{{220, 360}, {100, 100}}</string>
<string key="NSFrame">{{216, 324}, {96, 128}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSNextKeyView" ref="972197710"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<int key="IBUIContentMode">1</int>
<int key="IBUIContentMode">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIActivityIndicatorView" id="69034748">
@ -439,7 +439,120 @@
<nil key="sourceID"/>
<int key="maxID">173</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">InCallTableViewController</string>
<string key="superclassName">UITableViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallTableViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">InCallViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>InCallTableViewController</string>
<string>UITableView</string>
<string>UIView</string>
<string>UICamSwitch</string>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>UIActivityIndicatorView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">callTableController</string>
<string key="candidateClassName">InCallTableViewController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">callTableView</string>
<string key="candidateClassName">UITableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">testVideoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoCameraSwitch</string>
<string key="candidateClassName">UICamSwitch</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoGroup</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoPreview</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoWaitingForFirstImage</string>
<string key="candidateClassName">UIActivityIndicatorView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICamSwitch</string>
<string key="superclassName">UIButton</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">preview</string>
<string key="NS.object.0">UIView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">preview</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">preview</string>
<string key="candidateClassName">UIView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UICamSwitch.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
@ -465,6 +578,6 @@
<string>{151, 51}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">1930</string>
<string key="IBCocoaTouchPluginVersion">2083</string>
</data>
</archive>

22
README
View file

@ -12,10 +12,10 @@ Make sure that /opt/local/bin (macport tools) arrives first in your PATH env var
Once xcode and macports are installed, open a terminal and install the required build-time tools with:
$ sudo port install coreutils automake autoconf libtool intltool wget pkgconfig cmake gmake yasm grep doxygen ImageMagick optipng
$ sudo port install coreutils automake autoconf libtool intltool wget pkgconfig cmake gmake yasm grep doxygen ImageMagick optipng antlr3
Install gas-preprosessor.pl (http://github.com/yuvi/gas-preprocessor/ ) to be copied into /opt/local/bin :
Install gas-preprosessor.pl version above Jully 2013 (http://github.com/yuvi/gas-preprocessor/ ) to be copied into /opt/local/bin :
$ wget --no-check-certificate https://raw.github.com/yuvi/gas-preprocessor/master/gas-preprocessor.pl
$ sudo mv gas-preprocessor.pl /opt/local/bin/.
@ -45,8 +45,8 @@ BUILDING THE SDK
$ cd submodules/build
$ make all
ALTERNATIVELY, you can force liblinphone to use only non GPL code except for liblinphone, mediastremer2, ortp, exosip, osip.
If you choose this flavor, your final application is still subject to GPL except if you have a commercial license for liblinphone, mediastremer2, ortp, exosip, osip.
ALTERNATIVELY, you can force liblinphone to use only non GPL code except for liblinphone, mediastremer2, ortp, belle-sip.
If you choose this flavor, your final application is still subject to GPL except if you have a commercial license for liblinphone, mediastremer2, ortp, belle-sip.
To generate the liblinphone multi arch sdkin non GPL mode, do:
$ cd submodules/build
@ -89,7 +89,19 @@ LIMITATIONS, KNOWN BUGS
***********************
* Video capture does not work in simulator (not implemented by simulator ?).
* Sound does not work well (or at all) in simulator
DEBUGING THE SDK
****************
Sometime it can be usefull to step into liblinphone SDK funtions. To allow xcode to enable breakpoint whithin liblinphone, SDK must be built with debug symbols.
To add debug symbol to liblinphone SDK, add make option "enable_debug=yes".
$ make make all enable_gpl_third_parties=no enable_debug=yes
DEBUGING MEDIASTREMMER2
***********************
For IOS specicific media development like audio video capture/playback it may be interresting to use mediastream test tool.
The project submodule/liblinphone.xcodeproj can be used for this purpose.
****************

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -19,6 +19,8 @@ automatically_accept=0
[net]
firewall_policy=0
download_bw=380
upload_bw=380
[app]
rotation_preference=auto

View file

@ -1,6 +1,4 @@
[net]
download_bw=380
upload_bw=380
mtu=1300
activate_edge_workarounds=0
edge_ping_time=10
@ -35,15 +33,19 @@ max_calls=3
[wizard]
service_url=https://www.linphone.org/wizard.php
domain=sip.linphone.org
proxy=sip.linphone.org:5228
proxy=sip.linphone.org:5223
password_length=6
username_length=4
expires=604800
push_notification=1
transport=tcp
transport=tls
sharing_server=https://www.linphone.org:444/upload.php
ice=1
stun=stun.linphone.org
[video]
display_filter_auto_rotate=0
[app]
#contact_display_username_only=1
#contact_filter_on_default_domain=1

View file

@ -1,6 +1,4 @@
[net]
download_bw=512
upload_bw=512
mtu=1300
activate_edge_workarounds=0
edge_ping_time=200

View file

@ -19,6 +19,8 @@ automatically_accept=0
[net]
firewall_policy=0
download_bw=512
upload_bw=512
[app]
rotation_preference=auto

View file

@ -30,6 +30,16 @@
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<true/>
<key>Key</key>
<string>opus_preference</string>
<key>Title</key>
<string>Opus 48kHz</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<false/>
@ -50,6 +60,28 @@
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<true/>
<key>Key</key>
<string>aaceld_22k_preference</string>
<key>Title</key>
<string>AAC-ELD 22kHz</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>New item</key>
<string></string>
<key>DefaultValue</key>
<false/>
<key>Key</key>
<string>aaceld_44k_preference</string>
<key>Title</key>
<string>AAC-ELD 44kHz</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<true/>
@ -156,6 +188,44 @@
<key>IASKTextAlignment</key>
<string>IASKUITextAlignmentRight</string>
</dict>
<dict>
<key>DefaultValue</key>
<true/>
<key>Key</key>
<string>adaptive_rate_control_preference</string>
<key>Title</key>
<string>Adaptive rate control</string>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<integer>32</integer>
<key>Key</key>
<string>audio_codec_bitrate_limit_preference</string>
<key>Title</key>
<string>Codec bitrate limit</string>
<key>Titles</key>
<array>
<string>10 kbits/s</string>
<string>15 kbits/s</string>
<string>20 kbits/s</string>
<string>32 kbits/s</string>
<string>64 kbits/s</string>
<string>128 kbits/s</string>
</array>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Values</key>
<array>
<integer>10</integer>
<integer>15</integer>
<integer>20</integer>
<integer>32</integer>
<integer>64</integer>
<integer>128</integer>
</array>
</dict>
</array>
</dict>
</plist>

View file

@ -40,6 +40,28 @@
<key>Key</key>
<string>preview_preference</string>
</dict>
<dict>
<key>DefaultValue</key>
<integer>1</integer>
<key>Key</key>
<string>video_preferred_size_preference</string>
<key>Title</key>
<string>Preferred video size</string>
<key>Titles</key>
<array>
<string>HD (960x720)</string>
<string>VGA (640x480)</string>
<string>QVGA (320x240)</string>
</array>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Values</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
</array>
</dict>
<dict>
<key>Title</key>
<string>Codecs</string>

View file

@ -41,4 +41,10 @@
"Playback gain" = "Playback gain";
/* Microphone gain */
"Microphone gain" = "Microphone gain";
"Microphone gain" = "Microphone gain";
/* Adaptive rate control */
"Adaptive rate control" = "Adaptive rate control";
/* Codec bitrate limit */
"Codec bitrate limit" = "Codec bitrate limit";

View file

@ -10,6 +10,9 @@
/* Show preview */
"Show preview" = "Show preview";
/* Preferred video size */
"Preferred video size" = "Preferred video size";
/* Codecs */
"Codecs" = "Codecs";

View file

@ -41,4 +41,10 @@
"Playback gain" = "Gain sortie";
/* Microphone gain */
"Microphone gain" = "Gain microphone";
"Microphone gain" = "Gain microphone";
/* Adaptive rate control */
"Adaptive rate control" = "Contrôle de débit";
/* Codec bitrate limit */
"Codec bitrate limit" = "Limite de débit du codec";

View file

@ -10,6 +10,9 @@
/* Show preview */
"Show preview" = "Activer la prévisualisation";
/* Preferred video size */
"Preferred video size" = "Taille de vidéo préférée";
/* Codecs */
"Codecs" = "Codecs";

View file

@ -41,4 +41,10 @@
"Playback gain" = "Усиление воспроизведения";
/* Microphone gain */
"Microphone gain" = "Усиление микрофона";
"Microphone gain" = "Усиление микрофона";
/* Adaptive rate control */
"Adaptive rate control" = "Adaptive rate control";
/* Codec bitrate limit */
"Codec bitrate limit" = "Codec bitrate limit";

View file

@ -10,6 +10,9 @@
/* Show preview */
"Show preview" = "Предварительный просмотр";
/* Preferred video size */
"Preferred video size" = "Preferred video size";
/* Codecs */
"Codecs" = "Кодеки";

View file

@ -7,6 +7,39 @@
objects = {
/* Begin PBXBuildFile section */
154E1A941715638900A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; };
154E1A961715639A00A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; };
154E1A981715642E00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; };
154E1A9A1715644400A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; };
154E1A9C1715645F00A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; };
154E1A9D171564B500A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; };
154E1A9E171564B500A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; };
154E1A9F171564B600A0D168 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A991715644400A0D168 /* libavcodec.a */; };
154E1AA0171564BA00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; };
154E1AA1171564BA00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; };
154E1AA2171564BA00A0D168 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A971715642E00A0D168 /* libavutil.a */; };
154E1AA3171564C100A0D168 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; };
154E1AA4171564C100A0D168 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; };
154E1AA5171564C200A0D168 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; };
154E1AA6171564C600A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; };
154E1AA7171564C600A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; };
154E1AA8171564C700A0D168 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A931715638900A0D168 /* libmediastreamer_base.a */; };
154E1AA9171564C900A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; };
154E1AAA171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; };
154E1AAB171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A951715639A00A0D168 /* libmediastreamer_voip.a */; };
154E1AAC171564EA00A0D168 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; };
154E1AAD171564EA00A0D168 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; };
154E1AAE171564EB00A0D168 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; };
154E1AAF171564ED00A0D168 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; };
154E1AB0171564EE00A0D168 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; };
154E1AB1171564EE00A0D168 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; };
154E1AB21715661100A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; };
154E1AB31715661100A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; };
154E1AB41715661200A0D168 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154E1A9B1715645F00A0D168 /* libswscale.a */; };
15FC168517157478003FDB31 /* buddy_status.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC167E17157478003FDB31 /* buddy_status.c */; };
15FC168817157478003FDB31 /* chatroom.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC167F17157478003FDB31 /* chatroom.c */; };
15FC168A17157478003FDB31 /* helloworld.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC168017157478003FDB31 /* helloworld.c */; };
15FC168F17157478003FDB31 /* registration.c in Sources */ = {isa = PBXBuildFile; fileRef = 15FC168117157478003FDB31 /* registration.c */; };
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
2220D5D81278461C008F2C2E /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5D71278461C008F2C2E /* CFNetwork.framework */; };
@ -34,29 +67,18 @@
229499FA12A5433F00D6CF48 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220D5E912784672008F2C2E /* AudioToolbox.framework */; };
229499FB12A5433F00D6CF48 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B6A012A3E159001AE361 /* libresolv.dylib */; };
22D1B6A112A3E159001AE361 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B6A012A3E159001AE361 /* libresolv.dylib */; };
22E5AFC5133A2E260044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC3133A2E260044EA25 /* libssl.a */; };
22E5AFC6133A2E260044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC4133A2E260044EA25 /* libcrypto.a */; };
22E5AFC9133A2E3F0044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC7133A2E3F0044EA25 /* libssl.a */; };
22E5AFCA133A2E3F0044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFC8133A2E3F0044EA25 /* libcrypto.a */; };
22E5AFCD133A2E5C0044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCB133A2E5C0044EA25 /* libssl.a */; };
22E5AFCE133A2E5C0044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCC133A2E5C0044EA25 /* libcrypto.a */; };
22E5AFD1133A2E760044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFCF133A2E760044EA25 /* libssl.a */; };
22E5AFD2133A2E760044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5AFD0133A2E760044EA25 /* libcrypto.a */; };
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
34F9DFE914C418B600E1BC69 /* helloworld.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE514C418B600E1BC69 /* helloworld.c */; };
34F9DFF514C41EBA00E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; };
34F9DFF614C41EBA00E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; };
34F9DFF714C41EBA00E1BC69 /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFED14C41EBA00E1BC69 /* libilbc.a */; };
34F9DFF814C41EBA00E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; };
34F9DFF914C41EBA00E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; };
34F9DFFA14C41EBA00E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; };
34F9DFFB14C41EBA00E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; };
34F9DFFC14C41EBA00E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; };
34F9DFFD14C41EBA00E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; };
34F9DFFE14C41EBA00E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; };
34F9DFFF14C41F4900E1BC69 /* buddy_status.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE314C418B600E1BC69 /* buddy_status.c */; };
34F9E00014C41F4E00E1BC69 /* chatroom.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE414C418B600E1BC69 /* chatroom.c */; };
34F9E00114C41F5300E1BC69 /* registration.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F9DFE614C418B600E1BC69 /* registration.c */; };
34F9E00314C41FB400E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; };
34F9E00614C41FCF00E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; };
34F9E00714C41FCF00E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; };
@ -67,7 +89,6 @@
34F9E00F14C4204600E1BC69 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00514C41FCF00E1BC69 /* libvpx.a */; };
34F9E01014C4207700E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; };
34F9E01114C4208C00E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; };
34F9E01214C4208C00E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; };
34F9E01314C4208C00E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; };
34F9E01414C420A200E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; };
34F9E01514C420A200E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; };
@ -82,7 +103,6 @@
34F9E01E14C420DD00E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; };
34F9E01F14C420DD00E1BC69 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF314C41EBA00E1BC69 /* libspeex.a */; };
34F9E02014C420DD00E1BC69 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */; };
34F9E02114C420F000E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; };
34F9E02214C420FA00E1BC69 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00A14C4202100E1BC69 /* QuartzCore.framework */; };
34F9E02314C4210100E1BC69 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00214C41FB400E1BC69 /* OpenGLES.framework */; };
34F9E02414C4211000E1BC69 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9E00414C41FCF00E1BC69 /* libsrtp.a */; };
@ -92,7 +112,6 @@
34F9E02814C4214500E1BC69 /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */; };
34F9E02914C4214500E1BC69 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEC14C41EBA00E1BC69 /* libgsm.a */; };
34F9E02A14C4214500E1BC69 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */; };
34F9E02B14C4214500E1BC69 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */; };
34F9E02C14C4214500E1BC69 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF014C41EBA00E1BC69 /* libortp.a */; };
34F9E02D14C4214500E1BC69 /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF114C41EBA00E1BC69 /* libosip2.a */; };
34F9E02E14C4214500E1BC69 /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */; };
@ -115,6 +134,15 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
154E1A931715638900A0D168 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "../../liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = "<group>"; };
154E1A951715639A00A0D168 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "../../liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = "<group>"; };
154E1A971715642E00A0D168 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "../../liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = "<group>"; };
154E1A991715644400A0D168 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "../../liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = "<group>"; };
154E1A9B1715645F00A0D168 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "../../liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = "<group>"; };
15FC167E17157478003FDB31 /* buddy_status.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = buddy_status.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/buddy_status.c"; sourceTree = "<group>"; };
15FC167F17157478003FDB31 /* chatroom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chatroom.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/chatroom.c"; sourceTree = "<group>"; };
15FC168017157478003FDB31 /* helloworld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = helloworld.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/helloworld.c"; sourceTree = "<group>"; };
15FC168117157478003FDB31 /* registration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = registration.c; path = "../../liblinphone-sdk/apple-darwin/share/linphone/tutorials/registration.c"; sourceTree = "<group>"; };
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
1D6058910D05DD3D006BFB54 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; };
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
@ -126,25 +154,14 @@
229499BA12A5417D00D6CF48 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; };
229499FF12A5433F00D6CF48 /* hello-world.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "hello-world.app"; sourceTree = BUILT_PRODUCTS_DIR; };
22D1B6A012A3E159001AE361 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; };
22E5AFC3133A2E260044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = "<group>"; };
22E5AFC4133A2E260044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = "<group>"; };
22E5AFC7133A2E3F0044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = "<group>"; };
22E5AFC8133A2E3F0044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = "<group>"; };
22E5AFCB133A2E5C0044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = "<group>"; };
22E5AFCC133A2E5C0044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = "<group>"; };
22E5AFCF133A2E760044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = "<group>"; };
22E5AFD0133A2E760044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = "<group>"; };
288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
32CA4F630368D1EE00C91783 /* hello_world_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hello_world_Prefix.pch; sourceTree = "<group>"; };
34F9DFE314C418B600E1BC69 /* buddy_status.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = buddy_status.c; path = ../../submodules/linphone/coreapi/help/buddy_status.c; sourceTree = "<group>"; };
34F9DFE414C418B600E1BC69 /* chatroom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = chatroom.c; path = ../../submodules/linphone/coreapi/help/chatroom.c; sourceTree = "<group>"; };
34F9DFE514C418B600E1BC69 /* helloworld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = helloworld.c; path = ../../submodules/linphone/coreapi/help/helloworld.c; sourceTree = "<group>"; };
34F9DFE614C418B600E1BC69 /* registration.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = registration.c; path = ../../submodules/linphone/coreapi/help/registration.c; sourceTree = "<group>"; };
34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libeXosip2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libeXosip2.a"; sourceTree = "<group>"; };
34F9DFEC14C41EBA00E1BC69 /* libgsm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgsm.a; path = "../../liblinphone-sdk/apple-darwin/lib/libgsm.a"; sourceTree = "<group>"; };
34F9DFED14C41EBA00E1BC69 /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "../../liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = "<group>"; };
34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "../../liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = "<group>"; };
34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "../../liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = "<group>"; };
34F9DFF014C41EBA00E1BC69 /* libortp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libortp.a; path = "../../liblinphone-sdk/apple-darwin/lib/libortp.a"; sourceTree = "<group>"; };
34F9DFF114C41EBA00E1BC69 /* libosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosip2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libosip2.a"; sourceTree = "<group>"; };
34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "../../liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = "<group>"; };
@ -165,6 +182,9 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
154E1A9C1715645F00A0D168 /* libswscale.a in Frameworks */,
154E1A9A1715644400A0D168 /* libavcodec.a in Frameworks */,
154E1A981715642E00A0D168 /* libavutil.a in Frameworks */,
34F9E03714C424AF00E1BC69 /* CoreMedia.framework in Frameworks */,
34F9E03514C4249600E1BC69 /* CoreVideo.framework in Frameworks */,
34F9E03414C4247A00E1BC69 /* AVFoundation.framework in Frameworks */,
@ -176,14 +196,13 @@
34F9DFF614C41EBA00E1BC69 /* libgsm.a in Frameworks */,
34F9DFF714C41EBA00E1BC69 /* libilbc.a in Frameworks */,
34F9DFF814C41EBA00E1BC69 /* liblinphone.a in Frameworks */,
34F9DFF914C41EBA00E1BC69 /* libmediastreamer.a in Frameworks */,
154E1A941715638900A0D168 /* libmediastreamer_base.a in Frameworks */,
154E1A961715639A00A0D168 /* libmediastreamer_voip.a in Frameworks */,
34F9DFFA14C41EBA00E1BC69 /* libortp.a in Frameworks */,
34F9DFFB14C41EBA00E1BC69 /* libosip2.a in Frameworks */,
34F9DFFC14C41EBA00E1BC69 /* libosipparser2.a in Frameworks */,
34F9DFFD14C41EBA00E1BC69 /* libspeex.a in Frameworks */,
34F9DFFE14C41EBA00E1BC69 /* libspeexdsp.a in Frameworks */,
22E5AFC5133A2E260044EA25 /* libssl.a in Frameworks */,
22E5AFC6133A2E260044EA25 /* libcrypto.a in Frameworks */,
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
@ -191,6 +210,8 @@
2220D5DA1278461C008F2C2E /* CoreAudio.framework in Frameworks */,
2220D5EA12784672008F2C2E /* AudioToolbox.framework in Frameworks */,
22D1B6A112A3E159001AE361 /* libresolv.dylib in Frameworks */,
154E1AAE171564EB00A0D168 /* libssl.a in Frameworks */,
154E1AAF171564ED00A0D168 /* libcrypto.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -207,15 +228,12 @@
34F9E01414C420A200E1BC69 /* libosip2.a in Frameworks */,
34F9E01514C420A200E1BC69 /* libosipparser2.a in Frameworks */,
34F9E01114C4208C00E1BC69 /* libeXosip2.a in Frameworks */,
34F9E01214C4208C00E1BC69 /* libmediastreamer.a in Frameworks */,
34F9E01314C4208C00E1BC69 /* libortp.a in Frameworks */,
34F9E01014C4207700E1BC69 /* liblinphone.a in Frameworks */,
34F9E00E14C4204600E1BC69 /* libsrtp.a in Frameworks */,
34F9E00F14C4204600E1BC69 /* libvpx.a in Frameworks */,
34F9E00C14C4203900E1BC69 /* OpenGLES.framework in Frameworks */,
34F9E00D14C4203900E1BC69 /* QuartzCore.framework in Frameworks */,
22E5AFC9133A2E3F0044EA25 /* libssl.a in Frameworks */,
22E5AFCA133A2E3F0044EA25 /* libcrypto.a in Frameworks */,
2294996912A53FEE00D6CF48 /* Foundation.framework in Frameworks */,
2294996A12A53FEE00D6CF48 /* UIKit.framework in Frameworks */,
2294996B12A53FEE00D6CF48 /* CoreGraphics.framework in Frameworks */,
@ -223,6 +241,14 @@
2294997712A53FEE00D6CF48 /* CoreAudio.framework in Frameworks */,
2294997812A53FEE00D6CF48 /* AudioToolbox.framework in Frameworks */,
2294997912A53FEE00D6CF48 /* libresolv.dylib in Frameworks */,
154E1A9D171564B500A0D168 /* libavcodec.a in Frameworks */,
154E1AA0171564BA00A0D168 /* libavutil.a in Frameworks */,
154E1AA3171564C100A0D168 /* libilbc.a in Frameworks */,
154E1AA6171564C600A0D168 /* libmediastreamer_base.a in Frameworks */,
154E1AA9171564C900A0D168 /* libmediastreamer_voip.a in Frameworks */,
154E1AAD171564EA00A0D168 /* libssl.a in Frameworks */,
154E1AB0171564EE00A0D168 /* libcrypto.a in Frameworks */,
154E1AB21715661100A0D168 /* libswscale.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -237,7 +263,6 @@
34F9E02514C4211000E1BC69 /* libvpx.a in Frameworks */,
34F9E02314C4210100E1BC69 /* OpenGLES.framework in Frameworks */,
34F9E02214C420FA00E1BC69 /* QuartzCore.framework in Frameworks */,
34F9E02114C420F000E1BC69 /* libmediastreamer.a in Frameworks */,
34F9E01914C420DD00E1BC69 /* libeXosip2.a in Frameworks */,
34F9E01A14C420DD00E1BC69 /* libgsm.a in Frameworks */,
34F9E01B14C420DD00E1BC69 /* liblinphone.a in Frameworks */,
@ -246,8 +271,6 @@
34F9E01E14C420DD00E1BC69 /* libosipparser2.a in Frameworks */,
34F9E01F14C420DD00E1BC69 /* libspeex.a in Frameworks */,
34F9E02014C420DD00E1BC69 /* libspeexdsp.a in Frameworks */,
22E5AFCD133A2E5C0044EA25 /* libssl.a in Frameworks */,
22E5AFCE133A2E5C0044EA25 /* libcrypto.a in Frameworks */,
229499A612A5417D00D6CF48 /* Foundation.framework in Frameworks */,
229499A712A5417D00D6CF48 /* UIKit.framework in Frameworks */,
229499A812A5417D00D6CF48 /* CoreGraphics.framework in Frameworks */,
@ -255,6 +278,14 @@
229499B412A5417D00D6CF48 /* CoreAudio.framework in Frameworks */,
229499B512A5417D00D6CF48 /* AudioToolbox.framework in Frameworks */,
229499B612A5417D00D6CF48 /* libresolv.dylib in Frameworks */,
154E1A9E171564B500A0D168 /* libavcodec.a in Frameworks */,
154E1AA1171564BA00A0D168 /* libavutil.a in Frameworks */,
154E1AA4171564C100A0D168 /* libilbc.a in Frameworks */,
154E1AA7171564C600A0D168 /* libmediastreamer_base.a in Frameworks */,
154E1AAA171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */,
154E1AAC171564EA00A0D168 /* libssl.a in Frameworks */,
154E1AB1171564EE00A0D168 /* libcrypto.a in Frameworks */,
154E1AB31715661100A0D168 /* libswscale.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -268,7 +299,6 @@
34F9E02814C4214500E1BC69 /* libeXosip2.a in Frameworks */,
34F9E02914C4214500E1BC69 /* libgsm.a in Frameworks */,
34F9E02A14C4214500E1BC69 /* liblinphone.a in Frameworks */,
34F9E02B14C4214500E1BC69 /* libmediastreamer.a in Frameworks */,
34F9E02C14C4214500E1BC69 /* libortp.a in Frameworks */,
34F9E02D14C4214500E1BC69 /* libosip2.a in Frameworks */,
34F9E02E14C4214500E1BC69 /* libosipparser2.a in Frameworks */,
@ -287,6 +317,12 @@
229499F912A5433F00D6CF48 /* CoreAudio.framework in Frameworks */,
229499FA12A5433F00D6CF48 /* AudioToolbox.framework in Frameworks */,
229499FB12A5433F00D6CF48 /* libresolv.dylib in Frameworks */,
154E1A9F171564B600A0D168 /* libavcodec.a in Frameworks */,
154E1AA2171564BA00A0D168 /* libavutil.a in Frameworks */,
154E1AA5171564C200A0D168 /* libilbc.a in Frameworks */,
154E1AA8171564C700A0D168 /* libmediastreamer_base.a in Frameworks */,
154E1AAB171564CA00A0D168 /* libmediastreamer_voip.a in Frameworks */,
154E1AB41715661200A0D168 /* libswscale.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -318,27 +354,25 @@
34F9E03314C4247A00E1BC69 /* AVFoundation.framework */,
34F9E00A14C4202100E1BC69 /* QuartzCore.framework */,
34F9E00814C41FE900E1BC69 /* CoreVideo.framework */,
34F9E00414C41FCF00E1BC69 /* libsrtp.a */,
34F9E00514C41FCF00E1BC69 /* libvpx.a */,
34F9E00214C41FB400E1BC69 /* OpenGLES.framework */,
154E1A991715644400A0D168 /* libavcodec.a */,
154E1A971715642E00A0D168 /* libavutil.a */,
22E5AFD0133A2E760044EA25 /* libcrypto.a */,
34F9DFEB14C41EBA00E1BC69 /* libeXosip2.a */,
34F9DFEC14C41EBA00E1BC69 /* libgsm.a */,
34F9DFED14C41EBA00E1BC69 /* libilbc.a */,
34F9DFEE14C41EBA00E1BC69 /* liblinphone.a */,
34F9DFEF14C41EBA00E1BC69 /* libmediastreamer.a */,
154E1A931715638900A0D168 /* libmediastreamer_base.a */,
154E1A951715639A00A0D168 /* libmediastreamer_voip.a */,
34F9DFF014C41EBA00E1BC69 /* libortp.a */,
34F9DFF114C41EBA00E1BC69 /* libosip2.a */,
34F9DFF214C41EBA00E1BC69 /* libosipparser2.a */,
34F9DFF314C41EBA00E1BC69 /* libspeex.a */,
34F9DFF414C41EBA00E1BC69 /* libspeexdsp.a */,
34F9E00414C41FCF00E1BC69 /* libsrtp.a */,
22E5AFCF133A2E760044EA25 /* libssl.a */,
22E5AFD0133A2E760044EA25 /* libcrypto.a */,
22E5AFCB133A2E5C0044EA25 /* libssl.a */,
22E5AFCC133A2E5C0044EA25 /* libcrypto.a */,
22E5AFC7133A2E3F0044EA25 /* libssl.a */,
22E5AFC8133A2E3F0044EA25 /* libcrypto.a */,
22E5AFC3133A2E260044EA25 /* libssl.a */,
22E5AFC4133A2E260044EA25 /* libcrypto.a */,
154E1A9B1715645F00A0D168 /* libswscale.a */,
34F9E00514C41FCF00E1BC69 /* libvpx.a */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
@ -356,10 +390,10 @@
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
34F9DFE314C418B600E1BC69 /* buddy_status.c */,
34F9DFE414C418B600E1BC69 /* chatroom.c */,
34F9DFE514C418B600E1BC69 /* helloworld.c */,
34F9DFE614C418B600E1BC69 /* registration.c */,
15FC167E17157478003FDB31 /* buddy_status.c */,
15FC167F17157478003FDB31 /* chatroom.c */,
15FC168017157478003FDB31 /* helloworld.c */,
15FC168117157478003FDB31 /* registration.c */,
32CA4F630368D1EE00C91783 /* hello_world_Prefix.pch */,
);
name = "Other Sources";
@ -517,7 +551,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
34F9DFE914C418B600E1BC69 /* helloworld.c in Sources */,
15FC168A17157478003FDB31 /* helloworld.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -525,7 +559,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
34F9E00114C41F5300E1BC69 /* registration.c in Sources */,
15FC168F17157478003FDB31 /* registration.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -533,7 +567,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
34F9E00014C41F4E00E1BC69 /* chatroom.c in Sources */,
15FC168817157478003FDB31 /* chatroom.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -541,7 +575,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
34F9DFFF14C41F4900E1BC69 /* buddy_status.c in Sources */,
15FC168517157478003FDB31 /* buddy_status.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View file

@ -21,6 +21,23 @@
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>linphone_icon_120</string>
<string>linphone_icon_57.png</string>
<string>linphone_icon_72.png</string>
<string>linphone_icon_57@2x.png</string>
<string>linphone_icon_72@2x.png</string>
</array>
</dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>linphone_icon_152</string>
<string>linphone_icon_76</string>
<string>linphone_icon_120</string>
<string>linphone_icon_57.png</string>
<string>linphone_icon_72.png</string>
<string>linphone_icon_57@2x.png</string>
@ -59,7 +76,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>2.0.4</string>
<string>2.1</string>
<key>NSMainNibFile</key>
<string>LinphoneApp</string>
<key>NSMainNibFile~ipad</key>
@ -68,8 +85,9 @@
<false/>
<key>UIBackgroundModes</key>
<array>
<string>voip</string>
<string>audio</string>
<string>remote-notification</string>
<string>voip</string>
</array>
<key>UILaunchImageFile~ipad</key>
<string>linphone_splashscreen</string>
@ -98,5 +116,7 @@
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

View file

@ -3741,17 +3741,17 @@
<dict>
<key>backup</key>
<dict>
<key>5</key>
<key>6</key>
<dict>
<key>class</key>
<string>BLWrapperHandle</string>
<key>name</key>
<string>Classes/InCallViewController/5/InCallViewController.xib</string>
<string>Classes/InCallViewController/6/InCallViewController.xib</string>
</dict>
</dict>
</dict>
<key>change date</key>
<date>2012-09-25T09:16:20Z</date>
<date>2013-07-22T11:10:50Z</date>
<key>changed values</key>
<array/>
<key>class</key>
@ -3761,7 +3761,7 @@
<key>flags</key>
<integer>0</integer>
<key>hash</key>
<string>7f214a2ef7edff45568215c89af0ece4
<string>8c081a9b0433d4932659d8da7064bcbe
</string>
<key>name</key>
<string>InCallViewController.xib</string>
@ -3802,11 +3802,11 @@
<key>versions</key>
<dict>
<key>en</key>
<string>5</string>
<string>6</string>
<key>fr</key>
<string>5</string>
<string>6</string>
<key>ru</key>
<string>5</string>
<string>6</string>
</dict>
</dict>
<dict>
@ -17902,7 +17902,7 @@ Raison: %2$s</string>
</dict>
</dict>
<key>change date</key>
<date>2012-11-06T09:45:46Z</date>
<date>2013-06-28T12:59:59Z</date>
<key>changed values</key>
<array/>
<key>class</key>
@ -17912,7 +17912,7 @@ Raison: %2$s</string>
<key>flags</key>
<integer>0</integer>
<key>hash</key>
<string>d8b4f45bf8fca397a7f791bd55a61e1c
<string>a03adeb7710ae8986354684bdcd69764
</string>
<key>name</key>
<string>Audio.strings</string>
@ -18279,6 +18279,56 @@ Raison: %2$s</string>
<key>snapshots</key>
<dict/>
</dict>
<dict>
<key>change date</key>
<date>2001-01-01T00:00:00Z</date>
<key>changed values</key>
<array/>
<key>class</key>
<string>BLStringKeyObject</string>
<key>comment</key>
<string>Adaptive rate control</string>
<key>errors</key>
<array/>
<key>flags</key>
<integer>0</integer>
<key>key</key>
<string>Adaptive rate control</string>
<key>localizations</key>
<dict>
<key>en</key>
<string>Adaptive rate control</string>
<key>fr</key>
<string>Contrôle de débit</string>
</dict>
<key>snapshots</key>
<dict/>
</dict>
<dict>
<key>change date</key>
<date>2001-01-01T00:00:00Z</date>
<key>changed values</key>
<array/>
<key>class</key>
<string>BLStringKeyObject</string>
<key>comment</key>
<string>Codec bitrate limit</string>
<key>errors</key>
<array/>
<key>flags</key>
<integer>0</integer>
<key>key</key>
<string>Codec bitrate limit</string>
<key>localizations</key>
<dict>
<key>en</key>
<string>Codec bitrate limit</string>
<key>fr</key>
<string>Limite de débit du codec</string>
</dict>
<key>snapshots</key>
<dict/>
</dict>
</array>
<key>old objects</key>
<array/>
@ -18561,7 +18611,7 @@ Raison: %2$s</string>
</dict>
</dict>
<key>change date</key>
<date>2012-09-17T13:29:57Z</date>
<date>2013-07-22T11:22:00Z</date>
<key>changed values</key>
<array/>
<key>class</key>
@ -18571,7 +18621,7 @@ Raison: %2$s</string>
<key>flags</key>
<integer>0</integer>
<key>hash</key>
<string>b7297749603f255583f59fcea3174690
<string>9da839864b9c883ec66e9863c5d94ced
</string>
<key>name</key>
<string>Video.strings</string>
@ -18685,6 +18735,31 @@ Raison: %2$s</string>
<key>snapshots</key>
<dict/>
</dict>
<dict>
<key>change date</key>
<date>2001-01-01T00:00:00Z</date>
<key>changed values</key>
<array/>
<key>class</key>
<string>BLStringKeyObject</string>
<key>comment</key>
<string>Preferred video size</string>
<key>errors</key>
<array/>
<key>flags</key>
<integer>0</integer>
<key>key</key>
<string>Preferred video size</string>
<key>localizations</key>
<dict>
<key>en</key>
<string>Preferred video size</string>
<key>fr</key>
<string>Taille de vidéo préférée</string>
</dict>
<key>snapshots</key>
<dict/>
</dict>
<dict>
<key>change date</key>
<date>2001-01-01T00:00:00Z</date>

View file

@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">784</int>
<string key="IBDocument.SystemVersion">11E53</string>
<string key="IBDocument.InterfaceBuilderVersion">2840</string>
<string key="IBDocument.AppKitVersion">1138.47</string>
<string key="IBDocument.HIToolboxVersion">569.00</string>
<string key="IBDocument.SystemVersion">12D78</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.37</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">1926</string>
<string key="NS.object.0">2083</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -52,6 +52,7 @@
<int key="NSvFlags">301</int>
<string key="NSFrame">{{-1000, -1000}, {2000, 2000}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1017044170"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<object class="NSColor" key="IBUIBackgroundColor">
@ -65,6 +66,7 @@
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="69034748"/>
<string key="NSReuseIdentifierKey">_NS:196</string>
<object class="NSColor" key="IBUIBackgroundColor" id="95762599">
@ -76,11 +78,12 @@
<object class="IBUIView" id="673568144">
<reference key="NSNextResponder" ref="1009068048"/>
<int key="NSvFlags">283</int>
<string key="NSFrame">{{220, 360}, {100, 100}}</string>
<string key="NSFrame">{{216, 324}, {96, 128}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="972197710"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<int key="IBUIContentMode">1</int>
<int key="IBUIContentMode">2</int>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIActivityIndicatorView" id="69034748">
@ -88,6 +91,7 @@
<int key="NSvFlags">301</int>
<string key="NSFrame">{{141, 212}, {37, 37}}</string>
<reference key="NSSuperview" ref="1009068048"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="673568144"/>
<string key="NSReuseIdentifierKey">_NS:1030</string>
<bool key="IBUIOpaque">NO</bool>
@ -99,6 +103,7 @@
</object>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="327164432"/>
<string key="NSReuseIdentifierKey">_NS:196</string>
<reference key="IBUIBackgroundColor" ref="95762599"/>
@ -109,6 +114,7 @@
<int key="NSvFlags">274</int>
<string key="NSFrame">{{0, -10}, {320, 480}}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1009068048"/>
<string key="NSReuseIdentifierKey">_NS:418</string>
<reference key="IBUIBackgroundColor" ref="95762599"/>
@ -139,6 +145,7 @@
<int key="NSvFlags">-2147483356</int>
<string key="NSFrame">{{20, 40}, {85, 33}}</string>
<reference key="NSSuperview" ref="858247959"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="IBUIOpaque">NO</bool>
<object class="IBUIAccessibilityConfiguration" key="IBUIAccessibilityConfiguration">
@ -174,6 +181,7 @@
</object>
<string key="NSFrameSize">{320, 460}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="662692377"/>
<reference key="IBUIBackgroundColor" ref="95762599"/>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
@ -440,7 +448,120 @@
<nil key="sourceID"/>
<int key="maxID">173</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">InCallTableViewController</string>
<string key="superclassName">UITableViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallTableViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">InCallViewController</string>
<string key="superclassName">UIViewController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>InCallTableViewController</string>
<string>UITableView</string>
<string>UIView</string>
<string>UICamSwitch</string>
<string>UIView</string>
<string>UIView</string>
<string>UIView</string>
<string>UIActivityIndicatorView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>callTableController</string>
<string>callTableView</string>
<string>testVideoView</string>
<string>videoCameraSwitch</string>
<string>videoGroup</string>
<string>videoPreview</string>
<string>videoView</string>
<string>videoWaitingForFirstImage</string>
</object>
<object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">callTableController</string>
<string key="candidateClassName">InCallTableViewController</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">callTableView</string>
<string key="candidateClassName">UITableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">testVideoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoCameraSwitch</string>
<string key="candidateClassName">UICamSwitch</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoGroup</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoPreview</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoView</string>
<string key="candidateClassName">UIView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">videoWaitingForFirstImage</string>
<string key="candidateClassName">UIActivityIndicatorView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InCallViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UICamSwitch</string>
<string key="superclassName">UIButton</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">preview</string>
<string key="NS.object.0">UIView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">preview</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">preview</string>
<string key="candidateClassName">UIView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/UICamSwitch.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
@ -466,6 +587,6 @@
<string>{151, 51}</string>
</object>
</object>
<string key="IBCocoaTouchPluginVersion">1926</string>
<string key="IBCocoaTouchPluginVersion">2083</string>
</data>
</archive>

View file

@ -41,4 +41,10 @@
"Playback gain" = "Playback gain";
/* Microphone gain */
"Microphone gain" = "Microphone gain";
"Microphone gain" = "Microphone gain";
/* Adaptive rate control */
"Adaptive rate control" = "Adaptive rate control";
/* Codec bitrate limit */
"Codec bitrate limit" = "Codec bitrate limit";

View file

@ -10,6 +10,9 @@
/* Show preview */
"Show preview" = "Show preview";
/* Preferred video size */
"Preferred video size" = "Preferred video size";
/* Codecs */
"Codecs" = "Codecs";

View file

@ -7,6 +7,9 @@
objects = {
/* Begin PBXBuildFile section */
15017E701773578400784ACB /* libxml2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15017E6F1773578400784ACB /* libxml2.a */; };
15017E71177357C500784ACB /* libxml2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15017E6F1773578400784ACB /* libxml2.a */; };
154227D117BA81CE005E686A /* libzrtpcppcore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 154227D017BA81CE005E686A /* libzrtpcppcore.a */; };
1599105316F746B2007BF52B /* route_bluetooth_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104316F746B2007BF52B /* route_bluetooth_off_default_landscape.png */; };
1599105416F746B2007BF52B /* route_bluetooth_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104316F746B2007BF52B /* route_bluetooth_off_default_landscape.png */; };
1599105516F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 1599104416F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png */; };
@ -75,11 +78,10 @@
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 */; };
220FAD3110765B400068D98F /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2810765B400068D98F /* libeXosip2.a */; };
220FAD3210765B400068D98F /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2910765B400068D98F /* libgsm.a */; };
220FAD3610765B400068D98F /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2D10765B400068D98F /* libosip2.a */; };
220FAD3710765B400068D98F /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2E10765B400068D98F /* libosipparser2.a */; };
220FAD3810765B400068D98F /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; };
220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD3010765B400068D98F /* libspeexdsp.a */; };
2214783D1386A2030020F8B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; };
@ -101,6 +103,10 @@
2234C8EE15EE744200E18E83 /* chat_message_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */; };
2234C8EF15EE744200E18E83 /* chat_message_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */; };
2237D4091084D7A9001383EE /* ring.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* ring.wav */; };
223CA7E616D9255800EF1BEC /* libantlr3c.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223CA7E416D9255800EF1BEC /* libantlr3c.a */; };
223CA7E716D9255800EF1BEC /* libbellesip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223CA7E516D9255800EF1BEC /* libbellesip.a */; };
223CA7E816D9256E00EF1BEC /* libantlr3c.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223CA7E416D9255800EF1BEC /* libantlr3c.a */; };
223CA7E916D9257200EF1BEC /* libbellesip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223CA7E516D9255800EF1BEC /* libbellesip.a */; };
22405EEE1600B4E400B92522 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EED1600B4E400B92522 /* AssetsLibrary.framework */; };
22405F001601C19200B92522 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewController.m */; };
22405F011601C19200B92522 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewController.m */; };
@ -127,6 +133,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 */; };
@ -151,17 +159,12 @@
22D8F15D147548E2008C97DB /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; };
22D8F15E147548E2008C97DB /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8813C73DC000210156 /* CoreMedia.framework */; };
22D8F15F147548E2008C97DB /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8613C73D8A00210156 /* CoreVideo.framework */; };
22D8F163147548E2008C97DB /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AD133B5EA20044EA25 /* libssl.a */; };
22D8F164147548E2008C97DB /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AE133B5EA20044EA25 /* libcrypto.a */; };
22D8F165147548E2008C97DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
22D8F166147548E2008C97DB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
22D8F167147548E2008C97DB /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
22D8F168147548E2008C97DB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744019106F31BD006EC466 /* CoreAudio.framework */; };
22D8F169147548E2008C97DB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2274402E106F335E006EC466 /* AudioToolbox.framework */; };
22D8F16A147548E2008C97DB /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2810765B400068D98F /* libeXosip2.a */; };
22D8F16B147548E2008C97DB /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2910765B400068D98F /* libgsm.a */; };
22D8F16C147548E2008C97DB /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2D10765B400068D98F /* libosip2.a */; };
22D8F16D147548E2008C97DB /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2E10765B400068D98F /* libosipparser2.a */; };
22D8F16E147548E2008C97DB /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; };
22D8F16F147548E2008C97DB /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD3010765B400068D98F /* libspeexdsp.a */; };
22D8F170147548E2008C97DB /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; };
@ -181,8 +184,6 @@
22E0A822111C44E100B04932 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* AboutViewController.m */; };
22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; };
22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; };
22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AD133B5EA20044EA25 /* libssl.a */; };
22E5B0B0133B5EA20044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AE133B5EA20044EA25 /* libcrypto.a */; };
22F2508E107141E100AC9B3F /* DialerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* DialerViewController.m */; };
22F254811073D99800AC9B3F /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; };
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
@ -192,10 +193,10 @@
340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; };
34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; };
34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; };
344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; };
344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; };
57B0E360173C010400A476B8 /* libpolarssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 57B0E35F173C010400A476B8 /* libpolarssl.a */; };
57F005C415EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
57F005C515EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
57F005C815EE2D9200914747 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C615EE2D9200914747 /* linphonerc-factory */; };
@ -1339,6 +1340,13 @@
D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; };
D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; };
D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; };
F04F1E9D1806A41800D080F2 /* libpolarssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 57B0E35F173C010400A476B8 /* libpolarssl.a */; };
F066515517F9A02E0064280C /* UITransparentTVCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F066515417F9A02E0064280C /* UITransparentTVCell.m */; };
F066515617F9A02E0064280C /* UITransparentTVCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F066515417F9A02E0064280C /* UITransparentTVCell.m */; };
F0818E7E17FC51D8005A3330 /* linphone_icon_76.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7C17FC51D8005A3330 /* linphone_icon_76.png */; };
F0818E7F17FC51D8005A3330 /* linphone_icon_76.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7C17FC51D8005A3330 /* linphone_icon_76.png */; };
F0818E8017FC51D8005A3330 /* linphone_icon_152.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7D17FC51D8005A3330 /* linphone_icon_152.png */; };
F0818E8117FC51D8005A3330 /* linphone_icon_152.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7D17FC51D8005A3330 /* linphone_icon_152.png */; };
F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; };
/* End PBXBuildFile section */
@ -1409,6 +1417,8 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
15017E6F1773578400784ACB /* libxml2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libxml2.a; path = "liblinphone-sdk/apple-darwin/lib/libxml2.a"; sourceTree = "<group>"; };
154227D017BA81CE005E686A /* libzrtpcppcore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcppcore.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcppcore.a"; sourceTree = "<group>"; };
1599104316F746B2007BF52B /* route_bluetooth_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_default_landscape.png; path = Resources/route_bluetooth_off_default_landscape.png; sourceTree = "<group>"; };
1599104416F746B2007BF52B /* route_bluetooth_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_disabled_landscape.png; path = Resources/route_bluetooth_off_disabled_landscape.png; sourceTree = "<group>"; };
1599104516F746B2007BF52B /* route_bluetooth_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = route_bluetooth_off_over_landscape.png; path = Resources/route_bluetooth_off_over_landscape.png; sourceTree = "<group>"; };
@ -1554,11 +1564,8 @@
220FACE9107654FC0068D98F /* speex_resampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_resampler.h; sourceTree = "<group>"; };
220FACEA107654FC0068D98F /* speex_stereo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_stereo.h; sourceTree = "<group>"; };
220FACEB107654FC0068D98F /* speex_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_types.h; sourceTree = "<group>"; };
220FAD2810765B400068D98F /* libeXosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libeXosip2.a; path = "liblinphone-sdk/apple-darwin/lib/libeXosip2.a"; sourceTree = "<group>"; };
220FAD2910765B400068D98F /* libgsm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgsm.a; path = "liblinphone-sdk/apple-darwin/lib/libgsm.a"; sourceTree = "<group>"; };
220FAD2C10765B400068D98F /* libortp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libortp.a; path = "liblinphone-sdk/apple-darwin/lib/libortp.a"; sourceTree = "<group>"; };
220FAD2D10765B400068D98F /* libosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosip2.a; path = "liblinphone-sdk/apple-darwin/lib/libosip2.a"; sourceTree = "<group>"; };
220FAD2E10765B400068D98F /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = "<group>"; };
220FAD2F10765B400068D98F /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = "<group>"; };
220FAD3010765B400068D98F /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = "<group>"; };
2211DB911475562600DEE054 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = "<group>"; };
@ -1582,6 +1589,8 @@
2234C8E815EE2F7F00E18E83 /* chat_message_not_delivered.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_message_not_delivered.png; path = Resources/chat_message_not_delivered.png; sourceTree = "<group>"; };
2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_message_inprogress.png; path = Resources/chat_message_inprogress.png; sourceTree = "<group>"; };
2237D4081084D7A9001383EE /* ring.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ring.wav; path = Resources/ring.wav; sourceTree = "<group>"; };
223CA7E416D9255800EF1BEC /* libantlr3c.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libantlr3c.a; path = "liblinphone-sdk/apple-darwin/lib/libantlr3c.a"; sourceTree = "<group>"; };
223CA7E516D9255800EF1BEC /* libbellesip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libbellesip.a; path = "liblinphone-sdk/apple-darwin/lib/libbellesip.a"; sourceTree = "<group>"; };
22405EE916006F0700B92522 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = "<group>"; };
22405EEA16006F0700B92522 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = "<group>"; };
22405EED1600B4E400B92522 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
@ -1614,6 +1623,7 @@
22AA8AFC13D7125500B30535 /* libmsx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsx264.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsx264.a"; sourceTree = "<group>"; };
22AA8AFF13D83F6300B30535 /* UICamSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICamSwitch.h; sourceTree = "<group>"; };
22AA8B0013D83F6300B30535 /* UICamSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICamSwitch.m; sourceTree = "<group>"; };
22AF73C11754C0D000BE8398 /* libopus.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopus.a; path = "liblinphone-sdk/apple-darwin/lib/libopus.a"; sourceTree = "<group>"; };
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 = "<group>"; };
@ -1699,11 +1709,104 @@
22E0A81E111C44E100B04932 /* ConsoleViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ConsoleViewController.xib; sourceTree = "<group>"; };
22E0A81F111C44E100B04932 /* ConsoleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConsoleViewController.m; sourceTree = "<group>"; };
22E0A820111C44E100B04932 /* ConsoleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleViewController.h; sourceTree = "<group>"; };
22E5B0AD133B5EA20044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = "<group>"; };
22E5B0AE133B5EA20044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = "<group>"; };
22F2508B107141E100AC9B3F /* DialerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DialerViewController.h; sourceTree = "<group>"; };
22F2508C107141E100AC9B3F /* DialerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = DialerViewController.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
22F254801073D99800AC9B3F /* ringback.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringback.wav; path = Resources/ringback.wav; sourceTree = "<group>"; };
22F9B0891784711500E0212F /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = "<group>"; };
22F9B08A1784711500E0212F /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
22F9B08B1784711500E0212F /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
22F9B08C1784711500E0212F /* TunnelManager.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TunnelManager.cc; sourceTree = "<group>"; };
22F9B08D1784711500E0212F /* TunnelManager.hh */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TunnelManager.hh; sourceTree = "<group>"; };
22F9B08E1784711500E0212F /* address.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = address.c; sourceTree = "<group>"; };
22F9B08F1784711500E0212F /* authentication.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = authentication.c; sourceTree = "<group>"; };
22F9B0911784711500E0212F /* sal_address_impl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_address_impl.c; sourceTree = "<group>"; };
22F9B0921784711500E0212F /* sal_impl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_impl.c; sourceTree = "<group>"; };
22F9B0931784711500E0212F /* sal_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sal_impl.h; sourceTree = "<group>"; };
22F9B0941784711500E0212F /* sal_op_call.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_call.c; sourceTree = "<group>"; };
22F9B0951784711500E0212F /* sal_op_call_transfer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_call_transfer.c; sourceTree = "<group>"; };
22F9B0961784711500E0212F /* sal_op_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_events.c; sourceTree = "<group>"; };
22F9B0971784711500E0212F /* sal_op_impl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_impl.c; sourceTree = "<group>"; };
22F9B0981784711500E0212F /* sal_op_info.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_info.c; sourceTree = "<group>"; };
22F9B0991784711500E0212F /* sal_op_message.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_message.c; sourceTree = "<group>"; };
22F9B09A1784711500E0212F /* sal_op_presence.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_presence.c; sourceTree = "<group>"; };
22F9B09B1784711500E0212F /* sal_op_publish.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_publish.c; sourceTree = "<group>"; };
22F9B09C1784711500E0212F /* sal_op_registration.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_op_registration.c; sourceTree = "<group>"; };
22F9B09D1784711500E0212F /* sal_sdp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_sdp.c; sourceTree = "<group>"; };
22F9B09E1784711500E0212F /* callbacks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = callbacks.c; sourceTree = "<group>"; };
22F9B09F1784711500E0212F /* callbacks.c.orig */ = {isa = PBXFileReference; lastKnownFileType = text; path = callbacks.c.orig; sourceTree = "<group>"; };
22F9B0A01784711500E0212F /* chat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chat.c; sourceTree = "<group>"; };
22F9B0A11784711500E0212F /* conference.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = conference.c; sourceTree = "<group>"; };
22F9B0A21784711500E0212F /* eXosip_transport_hook.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = eXosip_transport_hook.h; sourceTree = "<group>"; };
22F9B0A31784711500E0212F /* ec-calibrator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "ec-calibrator.c"; sourceTree = "<group>"; };
22F9B0A41784711500E0212F /* enum.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = enum.c; sourceTree = "<group>"; };
22F9B0A51784711500E0212F /* enum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = enum.h; sourceTree = "<group>"; };
22F9B0A61784711500E0212F /* event.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = event.c; sourceTree = "<group>"; };
22F9B0A71784711500E0212F /* event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = "<group>"; };
22F9B0A81784711500E0212F /* fonis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = fonis.c; sourceTree = "<group>"; };
22F9B0A91784711500E0212F /* friend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = friend.c; sourceTree = "<group>"; };
22F9B0AB1784711500E0212F /* Doxyfile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Doxyfile.in; sourceTree = "<group>"; };
22F9B0AC1784711500E0212F /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
22F9B0AD1784711500E0212F /* Makefile.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
22F9B0AE1784711500E0212F /* buddy_status.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = buddy_status.c; sourceTree = "<group>"; };
22F9B0AF1784711500E0212F /* chatroom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = chatroom.c; sourceTree = "<group>"; };
22F9B0B01784711500E0212F /* doxygen.dox */ = {isa = PBXFileReference; lastKnownFileType = text; path = doxygen.dox; sourceTree = "<group>"; };
22F9B0B11784711500E0212F /* helloworld.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = helloworld.c; sourceTree = "<group>"; };
22F9B0B71784711500E0212F /* TutorialBuddyStatus.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = TutorialBuddyStatus.java; sourceTree = "<group>"; };
22F9B0B81784711500E0212F /* TutorialChatRoom.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = TutorialChatRoom.java; sourceTree = "<group>"; };
22F9B0B91784711500E0212F /* TutorialHelloWorld.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = TutorialHelloWorld.java; sourceTree = "<group>"; };
22F9B0BA1784711500E0212F /* TutorialNotifier.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = TutorialNotifier.java; sourceTree = "<group>"; };
22F9B0BB1784711500E0212F /* TutorialRegistration.java */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.java; path = TutorialRegistration.java; sourceTree = "<group>"; };
22F9B0BC1784711500E0212F /* notify.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = notify.c; sourceTree = "<group>"; };
22F9B0BD1784711500E0212F /* registration.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = registration.c; sourceTree = "<group>"; };
22F9B0BE1784711500E0212F /* info.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = info.c; sourceTree = "<group>"; };
22F9B0BF1784711500E0212F /* liblinphone_gitversion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = liblinphone_gitversion.h; sourceTree = "<group>"; };
22F9B0C01784711500E0212F /* linphone_tunnel.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linphone_tunnel.cc; sourceTree = "<group>"; };
22F9B0C11784711500E0212F /* linphone_tunnel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linphone_tunnel.h; sourceTree = "<group>"; };
22F9B0C21784711500E0212F /* linphone_tunnel_config.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linphone_tunnel_config.c; sourceTree = "<group>"; };
22F9B0C31784711500E0212F /* linphone_tunnel_stubs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linphone_tunnel_stubs.c; sourceTree = "<group>"; };
22F9B0C41784711500E0212F /* linphonecall.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linphonecall.c; sourceTree = "<group>"; };
22F9B0C51784711500E0212F /* linphonecore.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linphonecore.c; sourceTree = "<group>"; };
22F9B0C61784711500E0212F /* linphonecore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linphonecore.h; sourceTree = "<group>"; };
22F9B0C71784711500E0212F /* linphonecore_jni.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = linphonecore_jni.cc; sourceTree = "<group>"; };
22F9B0C81784711500E0212F /* linphonecore_utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linphonecore_utils.h; sourceTree = "<group>"; };
22F9B0C91784711500E0212F /* linphonefriend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linphonefriend.h; sourceTree = "<group>"; };
22F9B0CA1784711500E0212F /* linphonepresence.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = linphonepresence.h; sourceTree = "<group>"; };
22F9B0CB1784711500E0212F /* lpconfig.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpconfig.c; sourceTree = "<group>"; };
22F9B0CC1784711500E0212F /* lpconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lpconfig.h; sourceTree = "<group>"; };
22F9B0CD1784711500E0212F /* lsd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lsd.c; sourceTree = "<group>"; };
22F9B0CE1784711500E0212F /* message_storage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = message_storage.c; sourceTree = "<group>"; };
22F9B0CF1784711500E0212F /* misc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = misc.c; sourceTree = "<group>"; };
22F9B0D01784711500E0212F /* offeranswer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = offeranswer.c; sourceTree = "<group>"; };
22F9B0D11784711500E0212F /* offeranswer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = offeranswer.h; sourceTree = "<group>"; };
22F9B0D41784711500E0212F /* AUTHORS */ = {isa = PBXFileReference; lastKnownFileType = text; path = AUTHORS; sourceTree = "<group>"; };
22F9B0D51784711500E0212F /* COPYING */ = {isa = PBXFileReference; lastKnownFileType = text; path = COPYING; sourceTree = "<group>"; };
22F9B0D61784711500E0212F /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; path = ChangeLog; sourceTree = "<group>"; };
22F9B0D71784711500E0212F /* INSTALL */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL; sourceTree = "<group>"; };
22F9B0D81784711500E0212F /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
22F9B0D91784711500E0212F /* NEWS */ = {isa = PBXFileReference; lastKnownFileType = text; path = NEWS; sourceTree = "<group>"; };
22F9B0DA1784711500E0212F /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
22F9B0DB1784711500E0212F /* autogen.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = autogen.sh; sourceTree = "<group>"; };
22F9B0DC1784711500E0212F /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; path = configure.ac; sourceTree = "<group>"; };
22F9B0DE1784711500E0212F /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
22F9B0DF1784711500E0212F /* lookup.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lookup.c; sourceTree = "<group>"; };
22F9B0E01784711500E0212F /* presence.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = presence.c; sourceTree = "<group>"; };
22F9B0E11784711500E0212F /* private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = private.h; sourceTree = "<group>"; };
22F9B0E21784711500E0212F /* proxy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = proxy.c; sourceTree = "<group>"; };
22F9B0E31784711500E0212F /* sal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal.c; sourceTree = "<group>"; };
22F9B0E41784711500E0212F /* sal.h.orig */ = {isa = PBXFileReference; lastKnownFileType = text; path = sal.h.orig; sourceTree = "<group>"; };
22F9B0E51784711500E0212F /* sal_eXosip2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_eXosip2.c; sourceTree = "<group>"; };
22F9B0E61784711500E0212F /* sal_eXosip2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sal_eXosip2.h; sourceTree = "<group>"; };
22F9B0E71784711500E0212F /* sal_eXosip2_presence.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_eXosip2_presence.c; sourceTree = "<group>"; };
22F9B0E81784711500E0212F /* sal_eXosip2_sdp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sal_eXosip2_sdp.c; sourceTree = "<group>"; };
22F9B0E91784711500E0212F /* siplogin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = siplogin.c; sourceTree = "<group>"; };
22F9B0EA1784711500E0212F /* sipsetup.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sipsetup.c; sourceTree = "<group>"; };
22F9B0EB1784711500E0212F /* sipsetup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sipsetup.h; sourceTree = "<group>"; };
22F9B0EC1784711500E0212F /* sipwizard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sipwizard.c; sourceTree = "<group>"; };
22F9B0ED1784711500E0212F /* test_ecc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_ecc.c; sourceTree = "<group>"; };
22F9B0EE1784711500E0212F /* test_lsd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_lsd.c; sourceTree = "<group>"; };
22F9B0EF1784711500E0212F /* test_numbers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = test_numbers.c; sourceTree = "<group>"; };
22F9B0F01784711500E0212F /* upnp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = upnp.c; sourceTree = "<group>"; };
22F9B0F11784711500E0212F /* upnp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = upnp.h; sourceTree = "<group>"; };
288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = "<group>"; };
@ -1712,10 +1815,10 @@
340751E6150F38FD00B89C47 /* UIVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIVideoButton.m; sourceTree = "<group>"; };
34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = "<group>"; };
34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = "<group>"; };
344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = "<group>"; };
344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; };
344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; };
34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_72.png; path = Resources/linphone_icon_72.png; sourceTree = "<group>"; };
57B0E35F173C010400A476B8 /* libpolarssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpolarssl.a; path = "liblinphone-sdk/apple-darwin/lib/libpolarssl.a"; sourceTree = "<group>"; };
57F005C315EE2CCF00914747 /* linphonerc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonerc; path = Resources/linphonerc; sourceTree = "<group>"; };
57F005C615EE2D9200914747 /* linphonerc-factory */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory"; path = "Resources/linphonerc-factory"; sourceTree = "<group>"; };
57F005C715EE2D9200914747 /* linphonerc-factory~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory~ipad"; path = "Resources/linphonerc-factory~ipad"; sourceTree = "<group>"; };
@ -2388,6 +2491,11 @@
D3F9A9DA15AEEB940045320F /* history_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_notification.png; path = Resources/history_notification.png; sourceTree = "<group>"; };
D3F9A9EC15AF277D0045320F /* UACellBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UACellBackgroundView.h; path = Utils/UACellBackgroundView/UACellBackgroundView.h; sourceTree = "<group>"; };
D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UACellBackgroundView.m; path = Utils/UACellBackgroundView/UACellBackgroundView.m; sourceTree = "<group>"; };
F066515317F9A02E0064280C /* UITransparentTVCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITransparentTVCell.h; sourceTree = "<group>"; };
F066515417F9A02E0064280C /* UITransparentTVCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UITransparentTVCell.m; sourceTree = "<group>"; };
F0818E7B17FC5160005A3330 /* linphone_icon_120.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_120.png; path = Resources/linphone_icon_120.png; sourceTree = "<group>"; };
F0818E7C17FC51D8005A3330 /* linphone_icon_76.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_76.png; path = Resources/linphone_icon_76.png; sourceTree = "<group>"; };
F0818E7D17FC51D8005A3330 /* linphone_icon_152.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_152.png; path = Resources/linphone_icon_152.png; sourceTree = "<group>"; };
FD61C851169EAC63001AA2D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/ChatRoomViewController.xib; sourceTree = "<group>"; };
FD61C853169FBBB6001AA2D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/ChatViewController.xib; sourceTree = "<group>"; };
FD61C855169FBD1C001AA2D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/ContactDetailsLabelViewController.xib; sourceTree = "<group>"; };
@ -2421,6 +2529,12 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
154227D117BA81CE005E686A /* libzrtpcppcore.a in Frameworks */,
15017E701773578400784ACB /* libxml2.a in Frameworks */,
22AF73C21754C0D100BE8398 /* libopus.a in Frameworks */,
57B0E360173C010400A476B8 /* libpolarssl.a in Frameworks */,
223CA7E616D9255800EF1BEC /* libantlr3c.a in Frameworks */,
223CA7E716D9255800EF1BEC /* libbellesip.a in Frameworks */,
D30562151671DC4900C97967 /* libNinePatch.a in Frameworks */,
D30562161671DC4900C97967 /* libXMLRPC.a in Frameworks */,
22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */,
@ -2447,9 +2561,7 @@
22D1B68112A3E0BE001AE361 /* libresolv.dylib in Frameworks */,
22276E8313C73D3100210156 /* libavcodec.a in Frameworks */,
22276E8413C73D3100210156 /* libavutil.a in Frameworks */,
22E5B0B0133B5EA20044EA25 /* libcrypto.a in Frameworks */,
226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */,
220FAD3110765B400068D98F /* libeXosip2.a in Frameworks */,
220FAD3210765B400068D98F /* libgsm.a in Frameworks */,
223148E41178A08200637D6A /* libilbc.a in Frameworks */,
F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */,
@ -2460,20 +2572,16 @@
226183B0147259670037138E /* libmssilk.a in Frameworks */,
22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */,
22A10F3B11F8960300373793 /* libortp.a in Frameworks */,
220FAD3610765B400068D98F /* libosip2.a in Frameworks */,
220FAD3710765B400068D98F /* libosipparser2.a in Frameworks */,
226F2ED71344B0EF00F6EF27 /* libopencore-amrnb.a in Frameworks */,
226F2ED61344B0EF00F6EF27 /* libopencore-amrwb.a in Frameworks */,
226CDAE014E2D0B800513B67 /* libmsbcg729.a in Frameworks */,
220FAD3810765B400068D98F /* libspeex.a in Frameworks */,
220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */,
226183AE1472527D0037138E /* libsrtp.a in Frameworks */,
22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */,
226183AD1472527D0037138E /* libSKP_SILK_SDK.a in Frameworks */,
22276E8513C73D3100210156 /* libswscale.a in Frameworks */,
7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */,
22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */,
344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2481,6 +2589,10 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F04F1E9D1806A41800D080F2 /* libpolarssl.a in Frameworks */,
15017E71177357C500784ACB /* libxml2.a in Frameworks */,
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 */,
@ -2501,8 +2613,6 @@
22D8F166147548E2008C97DB /* UIKit.framework in Frameworks */,
22D8F178147548E2008C97DB /* libresolv.dylib in Frameworks */,
D34BD61515C13B7B0070C209 /* libsqlite3.dylib in Frameworks */,
22D8F164147548E2008C97DB /* libcrypto.a in Frameworks */,
22D8F16A147548E2008C97DB /* libeXosip2.a in Frameworks */,
22D8F174147548E2008C97DB /* libilbc.a in Frameworks */,
22D8F16B147548E2008C97DB /* libgsm.a in Frameworks */,
D34BD61815C13D0B0070C209 /* liblinphone.a in Frameworks */,
@ -2513,14 +2623,14 @@
22D8F179147548E2008C97DB /* libopencore-amrwb.a in Frameworks */,
22D8F17A147548E2008C97DB /* libopencore-amrnb.a in Frameworks */,
22D8F177147548E2008C97DB /* libortp.a in Frameworks */,
22D8F16C147548E2008C97DB /* libosip2.a in Frameworks */,
22D8F16D147548E2008C97DB /* libosipparser2.a in Frameworks */,
22D8F17E147548E2008C97DB /* libSKP_SILK_SDK.a in Frameworks */,
22D8F17F147548E2008C97DB /* libsrtp.a in Frameworks */,
22D8F16E147548E2008C97DB /* libspeex.a in Frameworks */,
22D8F16F147548E2008C97DB /* libspeexdsp.a in Frameworks */,
22D8F163147548E2008C97DB /* libssl.a in Frameworks */,
22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */,
223CA7E816D9256E00EF1BEC /* libantlr3c.a in Frameworks */,
223CA7E916D9257200EF1BEC /* libbellesip.a in Frameworks */,
22AF73C31754C0D800BE8398 /* libopus.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2896,6 +3006,8 @@
D32460E5159D9AAD00BA7F3A /* UITransparentView.m */,
340751E5150F38FC00B89C47 /* UIVideoButton.h */,
340751E6150F38FD00B89C47 /* UIVideoButton.m */,
F066515317F9A02E0064280C /* UITransparentTVCell.h */,
F066515417F9A02E0064280C /* UITransparentTVCell.m */,
);
path = LinphoneUI;
sourceTree = "<group>";
@ -2978,15 +3090,210 @@
path = openssl;
sourceTree = "<group>";
};
22F9B087178470F400E0212F /* liblinphone */ = {
isa = PBXGroup;
children = (
22F9B0881784711500E0212F /* coreapi */,
);
name = liblinphone;
sourceTree = "<group>";
};
22F9B0881784711500E0212F /* coreapi */ = {
isa = PBXGroup;
children = (
22F9B0891784711500E0212F /* .gitignore */,
22F9B08A1784711500E0212F /* Makefile.am */,
22F9B08B1784711500E0212F /* Makefile.in */,
22F9B08C1784711500E0212F /* TunnelManager.cc */,
22F9B08D1784711500E0212F /* TunnelManager.hh */,
22F9B08E1784711500E0212F /* address.c */,
22F9B08F1784711500E0212F /* authentication.c */,
22F9B0901784711500E0212F /* bellesip_sal */,
22F9B09E1784711500E0212F /* callbacks.c */,
22F9B09F1784711500E0212F /* callbacks.c.orig */,
22F9B0A01784711500E0212F /* chat.c */,
22F9B0A11784711500E0212F /* conference.c */,
22F9B0A21784711500E0212F /* eXosip_transport_hook.h */,
22F9B0A31784711500E0212F /* ec-calibrator.c */,
22F9B0A41784711500E0212F /* enum.c */,
22F9B0A51784711500E0212F /* enum.h */,
22F9B0A61784711500E0212F /* event.c */,
22F9B0A71784711500E0212F /* event.h */,
22F9B0A81784711500E0212F /* fonis.c */,
22F9B0A91784711500E0212F /* friend.c */,
22F9B0AA1784711500E0212F /* help */,
22F9B0BE1784711500E0212F /* info.c */,
22F9B0BF1784711500E0212F /* liblinphone_gitversion.h */,
22F9B0C01784711500E0212F /* linphone_tunnel.cc */,
22F9B0C11784711500E0212F /* linphone_tunnel.h */,
22F9B0C21784711500E0212F /* linphone_tunnel_config.c */,
22F9B0C31784711500E0212F /* linphone_tunnel_stubs.c */,
22F9B0C41784711500E0212F /* linphonecall.c */,
22F9B0C51784711500E0212F /* linphonecore.c */,
22F9B0C61784711500E0212F /* linphonecore.h */,
22F9B0C71784711500E0212F /* linphonecore_jni.cc */,
22F9B0C81784711500E0212F /* linphonecore_utils.h */,
22F9B0C91784711500E0212F /* linphonefriend.h */,
22F9B0CA1784711500E0212F /* linphonepresence.h */,
22F9B0CB1784711500E0212F /* lpconfig.c */,
22F9B0CC1784711500E0212F /* lpconfig.h */,
22F9B0CD1784711500E0212F /* lsd.c */,
22F9B0CE1784711500E0212F /* message_storage.c */,
22F9B0CF1784711500E0212F /* misc.c */,
22F9B0D01784711500E0212F /* offeranswer.c */,
22F9B0D11784711500E0212F /* offeranswer.h */,
22F9B0D21784711500E0212F /* plugins */,
22F9B0E01784711500E0212F /* presence.c */,
22F9B0E11784711500E0212F /* private.h */,
22F9B0E21784711500E0212F /* proxy.c */,
22F9B0E31784711500E0212F /* sal.c */,
22F9B0E41784711500E0212F /* sal.h.orig */,
22F9B0E51784711500E0212F /* sal_eXosip2.c */,
22F9B0E61784711500E0212F /* sal_eXosip2.h */,
22F9B0E71784711500E0212F /* sal_eXosip2_presence.c */,
22F9B0E81784711500E0212F /* sal_eXosip2_sdp.c */,
22F9B0E91784711500E0212F /* siplogin.c */,
22F9B0EA1784711500E0212F /* sipsetup.c */,
22F9B0EB1784711500E0212F /* sipsetup.h */,
22F9B0EC1784711500E0212F /* sipwizard.c */,
22F9B0ED1784711500E0212F /* test_ecc.c */,
22F9B0EE1784711500E0212F /* test_lsd.c */,
22F9B0EF1784711500E0212F /* test_numbers.c */,
22F9B0F01784711500E0212F /* upnp.c */,
22F9B0F11784711500E0212F /* upnp.h */,
);
name = coreapi;
path = submodules/linphone/coreapi;
sourceTree = "<group>";
};
22F9B0901784711500E0212F /* bellesip_sal */ = {
isa = PBXGroup;
children = (
22F9B0911784711500E0212F /* sal_address_impl.c */,
22F9B0921784711500E0212F /* sal_impl.c */,
22F9B0931784711500E0212F /* sal_impl.h */,
22F9B0941784711500E0212F /* sal_op_call.c */,
22F9B0951784711500E0212F /* sal_op_call_transfer.c */,
22F9B0961784711500E0212F /* sal_op_events.c */,
22F9B0971784711500E0212F /* sal_op_impl.c */,
22F9B0981784711500E0212F /* sal_op_info.c */,
22F9B0991784711500E0212F /* sal_op_message.c */,
22F9B09A1784711500E0212F /* sal_op_presence.c */,
22F9B09B1784711500E0212F /* sal_op_publish.c */,
22F9B09C1784711500E0212F /* sal_op_registration.c */,
22F9B09D1784711500E0212F /* sal_sdp.c */,
);
path = bellesip_sal;
sourceTree = "<group>";
};
22F9B0AA1784711500E0212F /* help */ = {
isa = PBXGroup;
children = (
22F9B0AB1784711500E0212F /* Doxyfile.in */,
22F9B0AC1784711500E0212F /* Makefile.am */,
22F9B0AD1784711500E0212F /* Makefile.in */,
22F9B0AE1784711500E0212F /* buddy_status.c */,
22F9B0AF1784711500E0212F /* chatroom.c */,
22F9B0B01784711500E0212F /* doxygen.dox */,
22F9B0B11784711500E0212F /* helloworld.c */,
22F9B0B21784711500E0212F /* java */,
22F9B0BC1784711500E0212F /* notify.c */,
22F9B0BD1784711500E0212F /* registration.c */,
);
path = help;
sourceTree = "<group>";
};
22F9B0B21784711500E0212F /* java */ = {
isa = PBXGroup;
children = (
22F9B0B31784711500E0212F /* org */,
);
path = java;
sourceTree = "<group>";
};
22F9B0B31784711500E0212F /* org */ = {
isa = PBXGroup;
children = (
22F9B0B41784711500E0212F /* linphone */,
);
path = org;
sourceTree = "<group>";
};
22F9B0B41784711500E0212F /* linphone */ = {
isa = PBXGroup;
children = (
22F9B0B51784711500E0212F /* core */,
);
path = linphone;
sourceTree = "<group>";
};
22F9B0B51784711500E0212F /* core */ = {
isa = PBXGroup;
children = (
22F9B0B61784711500E0212F /* tutorials */,
);
path = core;
sourceTree = "<group>";
};
22F9B0B61784711500E0212F /* tutorials */ = {
isa = PBXGroup;
children = (
22F9B0B71784711500E0212F /* TutorialBuddyStatus.java */,
22F9B0B81784711500E0212F /* TutorialChatRoom.java */,
22F9B0B91784711500E0212F /* TutorialHelloWorld.java */,
22F9B0BA1784711500E0212F /* TutorialNotifier.java */,
22F9B0BB1784711500E0212F /* TutorialRegistration.java */,
);
path = tutorials;
sourceTree = "<group>";
};
22F9B0D21784711500E0212F /* plugins */ = {
isa = PBXGroup;
children = (
22F9B0D31784711500E0212F /* buddylookup */,
);
path = plugins;
sourceTree = "<group>";
};
22F9B0D31784711500E0212F /* buddylookup */ = {
isa = PBXGroup;
children = (
22F9B0D41784711500E0212F /* AUTHORS */,
22F9B0D51784711500E0212F /* COPYING */,
22F9B0D61784711500E0212F /* ChangeLog */,
22F9B0D71784711500E0212F /* INSTALL */,
22F9B0D81784711500E0212F /* Makefile.am */,
22F9B0D91784711500E0212F /* NEWS */,
22F9B0DA1784711500E0212F /* README */,
22F9B0DB1784711500E0212F /* autogen.sh */,
22F9B0DC1784711500E0212F /* configure.ac */,
22F9B0DD1784711500E0212F /* src */,
);
path = buddylookup;
sourceTree = "<group>";
};
22F9B0DD1784711500E0212F /* src */ = {
isa = PBXGroup;
children = (
22F9B0DE1784711500E0212F /* Makefile.am */,
22F9B0DF1784711500E0212F /* lookup.c */,
);
path = src;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
154227D017BA81CE005E686A /* libzrtpcppcore.a */,
15017E6F1773578400784ACB /* libxml2.a */,
57B0E35F173C010400A476B8 /* libpolarssl.a */,
223CA7E416D9255800EF1BEC /* libantlr3c.a */,
223CA7E516D9255800EF1BEC /* libbellesip.a */,
22AF73C11754C0D000BE8398 /* libopus.a */,
2258633C11410BAC00C5A737 /* README */,
22276E8013C73D3100210156 /* libavcodec.a */,
22276E8113C73D3100210156 /* libavutil.a */,
226CDADD14E2D0B800513B67 /* libbcg729.a */,
22E5B0AE133B5EA20044EA25 /* libcrypto.a */,
220FAD2810765B400068D98F /* libeXosip2.a */,
220FAD2910765B400068D98F /* libgsm.a */,
223148E31178A08200637D6A /* libilbc.a */,
2211DB911475562600DEE054 /* liblinphone.a */,
@ -3000,21 +3307,18 @@
226F2ED41344B0EF00F6EF27 /* libopencore-amrnb.a */,
226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */,
220FAD2C10765B400068D98F /* libortp.a */,
220FAD2D10765B400068D98F /* libosip2.a */,
220FAD2E10765B400068D98F /* libosipparser2.a */,
226183AA1472527D0037138E /* libSKP_SILK_SDK.a */,
220FAD2F10765B400068D98F /* libspeex.a */,
220FAD3010765B400068D98F /* libspeexdsp.a */,
226183AB1472527D0037138E /* libsrtp.a */,
22E5B0AD133B5EA20044EA25 /* libssl.a */,
22276E8213C73D3100210156 /* libswscale.a */,
7066FC0B13E830E400EFC6DC /* libvpx.a */,
22AA8AFB13D7125500B30535 /* libx264.a */,
344ABDE71484E723007420B6 /* libzrtpcpp.a */,
344ABDEF14850AE9007420B6 /* libc++.1.dylib */,
22D1B68012A3E0BE001AE361 /* libresolv.dylib */,
D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */,
344ABDF014850AE9007420B6 /* libstdc++.6.dylib */,
22F9B087178470F400E0212F /* liblinphone */,
22B5F03410CE6B2F00777D97 /* AddressBook.framework */,
22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */,
22405EED1600B4E400B92522 /* AssetsLibrary.framework */,
@ -3285,10 +3589,13 @@
D37E3ECF1619DCC50087659A /* licenses.html */,
225CB2F911ABB76400628906 /* linphone-banner.png */,
8D1107310486CEB800E47090 /* linphone-Info.plist */,
F0818E7B17FC5160005A3330 /* linphone_icon_120.png */,
F0818E7D17FC51D8005A3330 /* linphone_icon_152.png */,
22058C70116E305000B08DDD /* linphone_icon_57.png */,
D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */,
34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */,
D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */,
F0818E7C17FC51D8005A3330 /* linphone_icon_76.png */,
D3012CC31610467D007CD926 /* linphone_logo.png */,
D38F46F1160C5CC8002D4C4A /* linphone_splashscreen-568h@2x.png */,
D3103920162C3C5100C00C18 /* linphone_splashscreen-Landscape.png */,
@ -3800,7 +4107,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0450;
LastUpgradeCheck = 0460;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "linphone" */;
compatibilityVersion = "Xcode 3.2";
@ -4025,6 +4332,7 @@
D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */,
D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */,
D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */,
F0818E8017FC51D8005A3330 /* linphone_icon_152.png in Resources */,
D3C2814B15A2D38D0098AA42 /* dialer_selected.png in Resources */,
D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */,
D365AA7B15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */,
@ -4167,6 +4475,7 @@
D3A74EDC15C69392001500B9 /* chat_selected~ipad.png in Resources */,
D3A74EDE15C69392001500B9 /* conference_default~ipad.png in Resources */,
D3A74EE015C69392001500B9 /* conference_over~ipad.png in Resources */,
F0818E7E17FC51D8005A3330 /* linphone_icon_76.png in Resources */,
D3A74EE215C69392001500B9 /* contacts_default_landscape~ipad.png in Resources */,
D3A74EE415C69392001500B9 /* contacts_default~ipad.png in Resources */,
D3A74EE615C69392001500B9 /* contacts_over_landscape~ipad.png in Resources */,
@ -4561,6 +4870,7 @@
D34BD6AB15C13DB70070C209 /* list_details_over.png in Resources */,
D34BD6AC15C13DB70070C209 /* micro_off_default.png in Resources */,
D34BD6AD15C13DB70070C209 /* micro_off_default_landscape.png in Resources */,
F0818E8117FC51D8005A3330 /* linphone_icon_152.png in Resources */,
D34BD6AE15C13DB70070C209 /* micro_off_disabled.png in Resources */,
D34BD6AF15C13DB70070C209 /* micro_off_disabled_landscape.png in Resources */,
D34BD6B015C13DB70070C209 /* micro_off_over.png in Resources */,
@ -4703,6 +5013,7 @@
D3A74EDD15C69392001500B9 /* chat_selected~ipad.png in Resources */,
D3A74EDF15C69392001500B9 /* conference_default~ipad.png in Resources */,
D3A74EE115C69392001500B9 /* conference_over~ipad.png in Resources */,
F0818E7F17FC51D8005A3330 /* linphone_icon_76.png in Resources */,
D3A74EE315C69392001500B9 /* contacts_default_landscape~ipad.png in Resources */,
D3A74EE515C69392001500B9 /* contacts_default~ipad.png in Resources */,
D3A74EE715C69392001500B9 /* contacts_over_landscape~ipad.png in Resources */,
@ -5019,6 +5330,7 @@
D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */,
D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */,
C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */,
F066515517F9A02E0064280C /* UITransparentTVCell.m in Sources */,
D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */,
D35860D615B549B500513429 /* Utils.m in Sources */,
D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */,
@ -5117,6 +5429,7 @@
D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */,
D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */,
C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */,
F066515617F9A02E0064280C /* UITransparentTVCell.m in Sources */,
D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */,
D35860D715B549B500513429 /* Utils.m in Sources */,
D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */,
@ -5446,6 +5759,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = armv7;
COMPRESS_PNG_FILES = NO;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = "";
@ -5455,7 +5769,6 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = linphone_Prefix.pch;
GCC_PREPROCESSOR_DEFINITIONS = (
IN_LINPHONE,
VIDEO_ENABLED,
HAVE_X264,
HAVE_SILK,
@ -5463,14 +5776,7 @@
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
"liblinphone-sdk/apple-darwin/include",
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5493,15 +5799,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 = "0636A6EA-90EB-4D92-B707-19FC32F9A7CF";
SDKROOT = iphoneos;
STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic;
TARGETED_DEVICE_FAMILY = "1,2";
@ -5529,14 +5840,7 @@
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
"liblinphone-sdk/apple-darwin/include",
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5573,14 +5877,7 @@
DEBUG,
);
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
liblinphone-sdk/apple-darwin/include,
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5615,14 +5912,7 @@
VIDEO_ENABLED,
);
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
liblinphone-sdk/apple-darwin/include,
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5658,14 +5948,7 @@
VIDEO_ENABLED,
);
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
liblinphone-sdk/apple-darwin/include,
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5701,14 +5984,7 @@
VIDEO_ENABLED,
);
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
liblinphone-sdk/apple-darwin/include,
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5730,10 +6006,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;
@ -5760,19 +6041,11 @@
GCC_PREPROCESSOR_DEFINITIONS = (
IN_LINPHONE,
VIDEO_ENABLED,
HAVE_X264,
HAVE_SILK,
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
"liblinphone-sdk/apple-darwin/include",
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5795,10 +6068,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;
@ -5826,19 +6104,11 @@
GCC_PREPROCESSOR_DEFINITIONS = (
IN_LINPHONE,
VIDEO_ENABLED,
HAVE_X264,
HAVE_SILK,
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
HEADER_SEARCH_PATHS = (
submodules/linphone/coreapi,
submodules/linphone/mediastreamer2/include,
submodules/linphone/mediastreamer2/include,
submodules/linphone/oRTP/include,
submodules/externals/gsm/,
submodules/externals/osip/include,
submodules/externals/exosip/include,
submodules/externals/speex/include,
"liblinphone-sdk/apple-darwin/include",
Classes/Utils/NinePatch/,
Classes/Utils/XMLRPC/,
);
@ -5861,15 +6131,20 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_IDENTITY = "iPhone Developer";
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;
LIBRARY_SEARCH_PATHS = "";
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE = "2AC0DC11-4546-47B6-8B8A-453CCA80903C";
SDKROOT = iphoneos;
STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic;
TARGETED_DEVICE_FAMILY = "1,2";

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@ -1 +1 @@
Subproject commit 715309618f3c5e20311d4c113d401f1c43f87511
Subproject commit 136c165a611a2552a3f52b0669b47a1bce0ab989

1
submodules/belle-sip Submodule

@ -0,0 +1 @@
Subproject commit 461029db78ecec56e81363d0b3d3786e349257f8

View file

@ -21,37 +21,61 @@
############################################################################
enable_gpl_third_parties=yes
enable_zrtp=no
enable_ffmpeg=yes
enable_opus=yes
enable_debug=no
.NOTPARALLEL all: check_options build warning
# check that the selected options are correct
CHECKOPT_MSG := ""
ifeq ($(enable_gpl_third_parties)$(enable_zrtp),noyes)
CHECKOPT_MSG += "ZRTP is not available in non-gpl build.\n"
endif
ifeq ($(enable_gpl_third_parties)$(enable_ffmpeg),noyes)
CHECKOPT_MSG += "FFMPEG is not available in non-gpl build.\n"
endif
ifneq ($(CHECKOPT_MSG),"")
check_options:
@echo "ZRTP is not available in non-gpl build."
@echo $(CHECKOPT_MSG)
@exit -1
else
check_options:
endif
# setup footer
ifeq ($(enable_gpl_third_parties),yes)
warning:
@echo
@echo "*****************************************************************"
@echo "*****************************************************************"
@echo "*****CAUTION, this liblinphone SDK is built using GPL code ******"
@echo "*****To disable gpl code, use make enable_gpl_third_parties=no***"
@echo "*****************************************************************"
@echo "*****************************************************************"
@echo "***************************************************************************"
@echo "***************************************************************************"
@echo "*****CAUTION, this liblinphone SDK is built using 3rd party GPL code ******"
@echo "*****Even if you acquired a proprietary license from Belledonne ******"
@echo "*****Communications, this SDK is GPL and GPL only. ******"
@echo "*****To disable 3rd party gpl code, please use: ******"
@echo "*****$ make enable_gpl_third_parties=no ******"
@echo "***************************************************************************"
@echo "***************************************************************************"
else
warning:
@echo
@echo "*****************************************************************"
@echo "*****************************************************************"
@echo "*****linphone SDK without GPL code ******"
@echo "*****Linphone SDK without 3rd party GPL software ******"
@echo "*****If you acquired a proprietary license from Belledonne ******"
@echo "*****Communications, this SDK can be used to create ******"
@echo "*****a proprietary linphone-based application. ******"
@echo "*****************************************************************"
@echo "*****************************************************************"
endif
LINPHONE_OPTIONS=enable_gpl_third_parties=$(enable_gpl_third_parties) enable_zrtp=$(enable_zrtp)
LINPHONE_OPTIONS=enable_gpl_third_parties=$(enable_gpl_third_parties) \
enable_zrtp=$(enable_zrtp) enable_opus=$(enable_opus) \
enable_debug=$(enable_debug) enable_ffmpeg=$(enable_ffmpeg)
build:
make -f builder-iphone-simulator.mk $(LINPHONE_OPTIONS) all \

View file

@ -30,13 +30,18 @@ linphone_configure_controls= \
--enable-gtk_ui=no \
--enable-console_ui=no \
--enable-ssl-hmac=no \
--enable-ssl=yes \
--enable-ssl=no \
--disable-theora \
--disable-sdl \
--disable-x11 \
--enable-bellesip \
--with-gsm=$(prefix) \
--disable-tests \
--with-srtp=$(prefix)
--disable-tutorials \
--with-srtp=$(prefix) \
--with-antlr=$(prefix) \
--disable-msg-storage
ifeq ($(enable_zrtp),yes)
linphone_configure_controls+= --enable-zrtp
@ -46,35 +51,62 @@ endif
#path
BUILDER_SRC_DIR?=$(shell pwd)/../
ifeq ($(enable_debug),yes)
BUILDER_BUILD_DIR?=$(shell pwd)/../build-$(host)-debug
linphone_configure_controls += CFLAGS="-g"
prefix?=$(BUILDER_SRC_DIR)/../liblinphone-sdk/$(host)-debug
else
BUILDER_BUILD_DIR?=$(shell pwd)/../build-$(host)
prefix?=$(BUILDER_SRC_DIR)/../liblinphone-sdk/$(host)
endif
LINPHONE_SRC_DIR=$(BUILDER_SRC_DIR)/linphone
LINPHONE_BUILD_DIR=$(BUILDER_BUILD_DIR)/linphone
all: build-linphone build-msilbc build-msamr build-msx264 build-mssilk build-msbcg729
$(LINPHONE_BUILD_DIR)/enable_gpl_third_parties:
mkdir -p $(LINPHONE_BUILD_DIR)
touch $(LINPHONE_BUILD_DIR)/enable_gpl_third_parties
rm -f $(LINPHONE_BUILD_DIR)/disable_gpl_third_parties
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
# setup the switches that might trigger a linphone reconfiguration
$(LINPHONE_BUILD_DIR)/disable_gpl_third_parties:
mkdir -p $(LINPHONE_BUILD_DIR)
touch $(LINPHONE_BUILD_DIR)/disable_gpl_third_parties
rm -f $(LINPHONE_BUILD_DIR)/enable_gpl_third_parties
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
enable_gpl_third_parties?=yes
enable_ffmpeg?=yes
SWITCHES:=
ifeq ($(enable_gpl_third_parties),yes)
linphone_configure_controls+= --enable-ffmpeg
detect_gpl_mode_switch: $(LINPHONE_BUILD_DIR)/enable_gpl_third_parties
else
linphone_configure_controls+= --disable-ffmpeg
detect_gpl_mode_switch: $(LINPHONE_BUILD_DIR)/disable_gpl_third_parties
SWITCHES+= enable_gpl_third_parties
ifeq ($(enable_ffmpeg), yes)
linphone_configure_controls+= --enable-ffmpeg
SWITCHES += enable_ffmpeg
else
linphone_configure_controls+= --disable-ffmpeg
SWITCHES += disable_ffmpeg
endif
else # !enable gpl
linphone_configure_controls+= --disable-ffmpeg
SWITCHES += disable_gpl_third_parties disable_ffmpeg
endif
SWITCHES := $(addprefix $(LINPHONE_BUILD_DIR)/,$(SWITCHES))
mode_switch_check: $(SWITCHES)
$(LINPHONE_BUILD_DIR)/disable_%:
mkdir -p $(LINPHONE_BUILD_DIR)
touch $(LINPHONE_BUILD_DIR)/disable_$*
rm -f $(LINPHONE_BUILD_DIR)/enable_$*
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
$(LINPHONE_BUILD_DIR)/enable_%:
mkdir -p $(LINPHONE_BUILD_DIR)
touch $(LINPHONE_BUILD_DIR)/enable_$*
rm -f $(LINPHONE_BUILD_DIR)/disable_$*
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
# end of switches parsing
osip_dir=externals/osip
eXosip_dir=externals/exosip
speex_dir=externals/speex
@ -96,9 +128,6 @@ ifneq (,$(findstring armv7,$(host)))
SPEEX_CONFIGURE_OPTION += --enable-armv7neon-asm
endif
prefix?=$(BUILDER_SRC_DIR)/../liblinphone-sdk/$(host)
clean-makefile: clean-makefile-linphone clean-makefile-msbcg729
clean: clean-linphone clean-msbcg729
init:
@ -108,18 +137,22 @@ init:
veryclean: veryclean-linphone veryclean-msbcg729
rm -rf $(BUILDER_BUILD_DIR)
# list of the submodules to build
MS_MODULES := msilbc libilbc msamr mssilk msx264
SUBMODULES_LIST := polarssl libantlr belle-sip srtp zrtpcpp speex libgsm libvpx libxml2 ffmpeg opus
.NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm build-ffmpeg build-libvpx detect_gpl_mode_switch $(LINPHONE_BUILD_DIR)/Makefile
.NOTPARALLEL build-linphone: init $(addprefix build-,$(SUBMODULES_LIST)) mode_switch_check $(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-osip2 clean-eXosip2 clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-openssl clean-msamr clean-mssilk clean-ffmpeg clean-libvpx clean-msx264
clean-linphone: $(addprefix clean-,$(SUBMODULES_LIST)) $(addprefix clean-,$(MS_MODULES))
cd $(LINPHONE_BUILD_DIR) && make clean
veryclean-linphone: veryclean-osip2 veryclean-eXosip2 veryclean-speex veryclean-srtp veryclean-zrtpcpp veryclean-libgsm veryclean-msilbc veryclean-libilbc veryclean-openssl veryclean-msamr veryclean-mssilk veryclean-msx264 veryclean-libvpx
veryclean-linphone: $(addprefix veryclean-,$(SUBMODULES_LIST)) $(addprefix veryclean-,$(MS_MODULES))
#-cd $(LINPHONE_BUILD_DIR) && make distclean
-cd $(LINPHONE_SRC_DIR) && rm -f configure
clean-makefile-linphone: clean-makefile-osip2 clean-makefile-eXosip2 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: $(addprefix clean-makefile-,$(SUBMODULES_LIST)) $(addprefix clean-makefile-,$(MS_MODULES))
cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile
@ -128,12 +161,12 @@ $(LINPHONE_SRC_DIR)/configure:
$(LINPHONE_BUILD_DIR)/Makefile: $(LINPHONE_SRC_DIR)/configure
mkdir -p $(LINPHONE_BUILD_DIR)
echo -e "\033[1mPKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
@echo -e "\033[1mPKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
${linphone_configure_controls}\033[0m"
cd $(LINPHONE_BUILD_DIR) && \
PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
CFLAGS="$(CFLAGS) -DMS2_MINIMAL_SIZE" $(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
$(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
${linphone_configure_controls}
@ -146,54 +179,6 @@ clean-makefile-liblinphone:
clean-liblinphone:
cd $(LINPHONE_BUILD_DIR) && make clean
#osip2
$(BUILDER_SRC_DIR)/$(osip_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(osip_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(osip_dir)/Makefile: $(BUILDER_SRC_DIR)/$(osip_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(osip_dir)
cd $(BUILDER_BUILD_DIR)/$(osip_dir)/ \
&& CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(osip_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode}
build-osip2: $(BUILDER_BUILD_DIR)/$(osip_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(osip_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
clean-osip2:
cd $(BUILDER_BUILD_DIR)/$(osip_dir) && make clean
veryclean-osip2:
# -cd $(BUILDER_BUILD_DIR)/$(osip_dir) && make distclean
-cd $(BUILDER_SRC_DIR)/$(osip_dir) && rm -f configure
clean-makefile-osip2:
cd $(BUILDER_BUILD_DIR)/$(osip_dir) && rm -f Makefile
#eXosip
$(BUILDER_SRC_DIR)/$(eXosip_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(eXosip_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(eXosip_dir)/Makefile: $(BUILDER_SRC_DIR)/$(eXosip_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(eXosip_dir)
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir)/\
&& PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(eXosip_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} CFLAGS="-I$(prefix)/include -L$(prefix)/lib -lcrypto" --enable-openssl --disable-tools
build-eXosip2: $(BUILDER_BUILD_DIR)/$(eXosip_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) \
&& PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
make DEFS="-DHAVE_CONFIG_H -include $(BUILDER_SRC_DIR)/$(eXosip_dir)/include/eXosip2/eXosip_transport_hook.h" && make install
clean-eXosip2:
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) && make clean
veryclean-eXosip2:
# -cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) && make distclean
-rm -f $(BUILDER_SRC_DIR)/$(eXosip_dir)/configure
clean-makefile-eXosip2:
cd $(BUILDER_BUILD_DIR)/$(eXosip_dir) && rm -f Makefile
#speex
@ -310,7 +295,8 @@ multi-arch:
if test ! -f "$$armv7s_path"; then \
armv7s_path= ; \
fi; \
destpath=`echo $$archive | sed -e "s/armv7-//"` ;\
destpath=`echo $$archive | sed -e "s/-debug//"` ;\
destpath=`echo $$destpath | sed -e "s/armv7-//"` ;\
if test -f "$$i386_path"; then \
echo "Mixing $$archive into $$destpath"; \
mkdir -p `dirname $$destpath` ; \

View file

@ -0,0 +1,43 @@
############################################################################
# belle-sip.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.
#
############################################################################
belle-sip_dir?=belle-sip
$(BUILDER_SRC_DIR)/$(belle-sip_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(belle-sip_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(belle-sip_dir)/Makefile: $(BUILDER_SRC_DIR)/$(belle-sip_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(belle-sip_dir)
cd $(BUILDER_BUILD_DIR)/$(belle-sip_dir)/ \
&& PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(belle-sip_dir)/configure --prefix=$(prefix) --host=$(host) ${library_mode} --enable-tls --with-polarssl=$(prefix)
build-belle-sip: $(BUILDER_BUILD_DIR)/$(belle-sip_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(belle-sip_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
clean-belle-sip:
cd $(BUILDER_BUILD_DIR)/$(belle-sip_dir) && make clean
veryclean-belle-sip:
-cd $(BUILDER_BUILD_DIR)/$(belle-sip_dir) && make distclean
rm -f $(BUILDER_SRC_DIR)/$(belle-sip_dir)/configure
clean-makefile-belle-sip:
cd $(BUILDER_BUILD_DIR)/$(belle-sip_dir) && rm -f Makefile

View file

@ -4,37 +4,43 @@ ffmpeg_configure_options=\
--disable-ffprobe --disable-ffserver --disable-avdevice \
--disable-avfilter --disable-network \
--disable-everything --enable-decoder=mjpeg --enable-encoder=mjpeg --enable-decoder=mpeg4 --enable-encoder=mpeg4 \
--enable-decoder=h264 --disable-avformat --enable-armv5te --enable-armv6 --enable-armv6t2 \
--enable-armvfp \
--enable-decoder=h264 --disable-avformat --enable-pic\
--cross-prefix=$$SDK_BIN_PATH/ \
--sysroot=$$SYSROOT_PATH --arch=$$ARCH \
--enable-static --disable-shared --target-os=darwin \
--extra-cflags="-arch $$ARCH " --extra-ldflags="-arch $$ARCH -Wl,-syslibroot,$$SYSROOT_PATH " \
--source-path=$(BUILDER_SRC_DIR)/$(ffmpeg_dir)
--enable-static --disable-shared --target-os=darwin \
--extra-cflags="$$COMMON_FLAGS" --extra-ldflags="$$COMMON_FLAGS" \
--disable-iconv \
--ar="$$AR" \
--nm="$$NM" \
--cc="$$CC"
# --as=$(BUILDER_SRC_DIR)/externals/x264/extras/gas-preprocessor.pl
#--sysinclude=PATH location of cross-build system headers
ifneq (,$(findstring armv6,$(host)))
ffmpeg_configure_options+= --cpu=arm1176jzf-s
ffmpeg_configure_options+= --cpu=arm1176jzf-s --disable-armv5te --enable-armv6 --enable-armv6t2
endif
ifneq (,$(findstring armv7,$(host)))
ffmpeg_configure_options+= --enable-neon --cpu=cortex-a8
ffmpeg_configure_options+= --enable-neon --cpu=cortex-a8 --disable-armv5te --enable-armv6 --enable-armv6t2
endif
ffmpeg_dir?=externals/ffmpeg
$(BUILDER_SRC_DIR)/$(ffmpeg_dir)/patched :
cd $(BUILDER_SRC_DIR)/$(ffmpeg_dir) \
&& git apply $(BUILDER_SRC_DIR)/build/builders.d/ffmpeg.patch \
&& touch $(BUILDER_SRC_DIR)/$(ffmpeg_dir)/patched
$(BUILDER_BUILD_DIR)/$(ffmpeg_dir)/config.mak: $(BUILDER_SRC_DIR)/$(ffmpeg_dir)/patched
$(BUILDER_BUILD_DIR)/$(ffmpeg_dir)/config.mak:
mkdir -p $(BUILDER_BUILD_DIR)/$(ffmpeg_dir)
cd $(BUILDER_BUILD_DIR)/$(ffmpeg_dir)/ \
&& host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& $(BUILDER_SRC_DIR)/$(ffmpeg_dir)/configure --prefix=$(prefix) $(ffmpeg_configure_options)
&& $(BUILDER_SRC_DIR)/$(ffmpeg_dir)/configure --prefix=$(prefix) $(ffmpeg_configure_options)
build-ffmpeg: $(BUILDER_BUILD_DIR)/$(ffmpeg_dir)/config.mak
cd $(BUILDER_BUILD_DIR)/$(ffmpeg_dir) && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
cd $(BUILDER_BUILD_DIR)/$(ffmpeg_dir) \
&& host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig make RANLIB="$$RANLIB" && make RANLIB="$$RANLIB" install
clean-ffmpeg:
cd $(BUILDER_BUILD_DIR)/$(ffmpeg_dir) && make clean

View file

@ -1,20 +0,0 @@
diff --git a/libavutil/arm/intmath.h b/libavutil/arm/intmath.h
index 8f03d4b..0504b95 100644
--- a/libavutil/arm/intmath.h
+++ b/libavutil/arm/intmath.h
@@ -91,10 +91,12 @@ static av_always_inline av_const int FASTDIV(int a, int b)
static av_always_inline av_const int32_t av_clipl_int32_arm(int64_t a)
{
int x, y;
- __asm__ volatile ("adds %1, %R2, %Q2, lsr #31 \n\t"
+ union { uint64_t a; uint32_t hl[2]; } tmp_a;
+ tmp_a.a=a;
+ __asm__ volatile ("adds %1, %2, %3, lsr #31 \n\t"
"mvnne %1, #1<<31 \n\t"
- "eorne %0, %1, %R2, asr #31 \n\t"
- : "=r"(x), "=&r"(y) : "r"(a));
+ "eorne %0, %1, %2, asr #31 \n\t"
+ : "=r"(x), "=&r"(y) : "r"(tmp_a.hl[0]),"r"(tmp_a.hl[1]));
return x;
}

View file

@ -0,0 +1,43 @@
############################################################################
# libantlr.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.
#
############################################################################
libantlr_dir?=externals/antlr3/runtime/C
$(BUILDER_SRC_DIR)/$(libantlr_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(libantlr_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(libantlr_dir)/Makefile: $(BUILDER_SRC_DIR)/$(libantlr_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(libantlr_dir)
cd $(BUILDER_BUILD_DIR)/$(libantlr_dir)/ \
&& PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(libantlr_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode}
build-libantlr: $(BUILDER_BUILD_DIR)/$(libantlr_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(libantlr_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
clean-libantlr:
cd $(BUILDER_BUILD_DIR)/$(libantlr_dir) && make clean
veryclean-libantlr:
-cd $(BUILDER_BUILD_DIR)/$(libantlr_dir) && make distclean
rm -f $(BUILDER_SRC_DIR)/$(libantlr_dir)/configure
clean-makefile-libantlr:
cd $(BUILDER_BUILD_DIR)/$(libantlr_dir) && rm -f Makefile

View file

@ -7,13 +7,17 @@ libvpx_configure_options=\
ifneq (,$(findstring armv6,$(host)))
libvpx_configure_options+= --target=armv6-darwin-gcc --cpu=arm1176jzf-s
else ifneq (,$(findstring armv7s,$(host)))
libvpx_configure_options+= --target=armv7s-darwin-gcc --cpu=cortex-a8
libvpx_configure_options+= --target=armv7s-darwin-gcc
else ifneq (,$(findstring armv7,$(host)))
libvpx_configure_options+= --target=armv7-darwin-gcc --cpu=cortex-a8
libvpx_configure_options+= --target=armv7-darwin-gcc
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,10 +28,12 @@ $(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_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) \
&& host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
clean-libvpx:
cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && make clean
@ -35,7 +41,7 @@ clean-libvpx:
veryclean-libvpx:
-cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && make distclean
cd $(BUILDER_SRC_DIR)/$(libvpx_dir) \
&& git checkout build/make/configure.sh configure\
&& git clean -f && git reset --hard \
&& rm -f patched.stamp
rm -rf $(BUILDER_BUILD_DIR)/$(libvpx_dir)

View file

@ -1,69 +1,47 @@
diff --git a/build/make/configure.sh b/build/make/configure.sh
index 0426f92..38fdcb2 100755
index c99a01c..f7f54c6 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
@@ -889,13 +889,13 @@ process_common_toolchain() {
SDK_PATH=${sdk_path}
fi
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
CC=${TOOLCHAIN_PATH}/gcc
AR=${TOOLCHAIN_PATH}/ar
- CXX=${TOOLCHAIN_PATH}/g++
- CC=${TOOLCHAIN_PATH}/gcc
- AR=${TOOLCHAIN_PATH}/ar
- LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2
+ LD=${TOOLCHAIN_PATH}/gcc
AS=${TOOLCHAIN_PATH}/as
STRIP=${TOOLCHAIN_PATH}/strip
NM=${TOOLCHAIN_PATH}/nm
@@ -757,12 +768,12 @@ process_common_toolchain() {
- AS=${TOOLCHAIN_PATH}/as
- STRIP=${TOOLCHAIN_PATH}/strip
- NM=${TOOLCHAIN_PATH}/nm
+ CXX=`xcrun --find clang++`
+ CC=`xcrun --find clang`
+ AR=`xcrun --find ar`
+ LD=`xcrun --find clang`
+ AS=`xcrun --find as`
+ STRIP=`xcrun --find strip`
+ NM=`xcrun --find nm`
AS_SFX=.s
# ASFLAGS is written here instead of using check_add_asflags
@@ -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/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c
index a4a00f6..72d0b6d 100644
--- a/vp8/decoder/decodframe.c
+++ b/vp8/decoder/decodframe.c
@@ -92,7 +92,7 @@ void vp8_mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
}
}
-static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
+void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
unsigned int mb_idx)
{
MB_PREDICTION_MODE mode;

View file

@ -0,0 +1,63 @@
############################################################################
# libxml2.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.
#
############################################################################
libxml2_dir?=externals/libxml2
libxml2_configure_options= \
--enable-static --disable-shared \
--disable-rebuild-docs --with-iconv=no --with-python=no --with-zlib=no
$(BUILDER_SRC_DIR)/$(libxml2_dir)/patched.stamp:
cd $(BUILDER_SRC_DIR)/$(libxml2_dir) \
&& git apply $(BUILDER_SRC_DIR)/build/builders.d/libxml2.patch \
&& touch $@
$(BUILDER_SRC_DIR)/$(libxml2_dir)/configure: $(BUILDER_SRC_DIR)/$(libxml2_dir)/patched.stamp
@echo -e "\033[01;32m Running autogen for libxml2 in $(BUILDER_SRC_DIR)/$(libxml2_dir) \033[0m"
cd $(BUILDER_SRC_DIR)/$(libxml2_dir) \
&& PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) NOCONFIGURE=1 \
$(BUILDER_SRC_DIR)/$(libxml2_dir)/autogen.sh -prefix=$(prefix) --host=$(host) ${library_mode}
$(BUILDER_BUILD_DIR)/$(libxml2_dir)/Makefile: $(BUILDER_SRC_DIR)/$(libxml2_dir)/configure
@echo -e "\033[01;32m Running configure in $(BUILDER_BUILD_DIR)/$(libxml2_dir) \033[0m"
mkdir -p $(BUILDER_BUILD_DIR)/$(libxml2_dir)
cd $(BUILDER_BUILD_DIR)/$(libxml2_dir) \
&& PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
$(BUILDER_SRC_DIR)/$(libxml2_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} $(libxml2_configure_options)
build-libxml2: $(BUILDER_BUILD_DIR)/$(libxml2_dir)/Makefile
@echo -e "\033[01;32m building libxml2 \033[0m"
cd $(BUILDER_BUILD_DIR)/$(libxml2_dir) \
&& PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
make && make install
clean-libxml2:
-cd $(BUILDER_BUILD_DIR)/$(libxml2_dir) && make clean
veryclean-libxml2:
-cd $(BUILDER_BUILD_DIR)/$(libxml2_dir) && make distclean
rm -f $(BUILDER_SRC_DIR)/$(libxml2_dir)/configure
cd $(BUILDER_SRC_DIR)/$(libxml2_dir) \
&& git checkout configure.in \
&& rm -f patched.stamp
clean-makefile-libxml2:
-cd $(BUILDER_BUILD_DIR)/$(libxml2_dir) && rm -f Makefile

View file

@ -0,0 +1,13 @@
diff --git a/configure.in b/configure.in
index 0fb4983..a5f86ca 100644
--- a/configure.in
+++ b/configure.in
@@ -1,7 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(entities.c)
-AM_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS(config.h)
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST

View file

@ -26,11 +26,11 @@ $(BUILDER_SRC_DIR)/$(msamr_dir)/configure:
$(BUILDER_BUILD_DIR)/$(msamr_dir)/Makefile: $(BUILDER_SRC_DIR)/$(msamr_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(msamr_dir)
cd $(BUILDER_BUILD_DIR)/$(msamr_dir)/ \
&& PKG_CONFIG_PATH=$(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) \
$(BUILDER_SRC_DIR)/$(msamr_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode}
build-msamr: build-opencore-amr $(BUILDER_BUILD_DIR)/$(msamr_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(msamr_dir) && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
cd $(BUILDER_BUILD_DIR)/$(msamr_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
clean-msamr: clean-opencore-amr
cd $(BUILDER_BUILD_DIR)/$(msamr_dir) && make clean

View file

@ -30,7 +30,7 @@ $(BUILDER_BUILD_DIR)/$(msbcg729_dir)/Makefile: $(BUILDER_SRC_DIR)/$(msbcg729_dir
@echo -e "\033[01;32m Running configure in $(BUILDER_BUILD_DIR)/$(msbcg729_dir) \033[0m"
mkdir -p $(BUILDER_BUILD_DIR)/$(msbcg729_dir)
cd $(BUILDER_BUILD_DIR)/$(msbcg729_dir)/ \
&& PKG_CONFIG_PATH=$(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) \
$(BUILDER_SRC_DIR)/$(msbcg729_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
--enable-static
@ -39,7 +39,7 @@ ifeq ($(enable_bcg729),yes)
build-msbcg729: $(BUILDER_BUILD_DIR)/$(msbcg729_dir)/Makefile
@echo -e "\033[01;32m building bcg729 \033[0m"
cd $(BUILDER_BUILD_DIR)/$(msbcg729_dir) \
&& PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig \
&& PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig \
CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \
make -j1 && make install

View file

@ -27,10 +27,10 @@ $(BUILDER_SRC_DIR)/$(mssilk_dir)/configure:
cd $(BUILDER_SRC_DIR)/$(mssilk_dir) && ./autogen.sh
$(BUILDER_BUILD_DIR)/$(mssilk_dir)/Makefile: $(BUILDER_SRC_DIR)/$(mssilk_dir)/configure
echo -e "\033[01;32m Running configure in $(BUILDER_BUILD_DIR)/$(mssilk_dir) \033[0m"
@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_PATH=$(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) \
$(BUILDER_SRC_DIR)/$(mssilk_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \
--enable-static

View file

@ -26,11 +26,11 @@ $(BUILDER_SRC_DIR)/$(msx264_dir)/configure:
$(BUILDER_BUILD_DIR)/$(msx264_dir)/Makefile: $(BUILDER_SRC_DIR)/$(msx264_dir)/configure
mkdir -p $(BUILDER_BUILD_DIR)/$(msx264_dir)
cd $(BUILDER_BUILD_DIR)/$(msx264_dir)/ \
&& PKG_CONFIG_PATH=$(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) \
$(BUILDER_SRC_DIR)/$(msx264_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode}
build-msx264: build-x264 $(BUILDER_BUILD_DIR)/$(msx264_dir)/Makefile
cd $(BUILDER_BUILD_DIR)/$(msx264_dir) && PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
cd $(BUILDER_BUILD_DIR)/$(msx264_dir) && PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make && make install
clean-msx264: clean-x264
cd $(BUILDER_BUILD_DIR)/$(msx264_dir) && make clean

View file

@ -19,9 +19,6 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
############################################################################
ifneq (,$(findstring arm,$(host)))
opencore-amr-configure-option=--enable-gcc-armv5
endif
opencore-amr_dir?=externals/opencore-amr
@ -35,7 +32,7 @@ $(BUILDER_BUILD_DIR)/$(opencore-amr_dir)/Makefile: $(BUILDER_SRC_DIR)/$(opencore
$(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_PATH=$(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) make && make install
clean-opencore-amr:
cd $(BUILDER_BUILD_DIR)/$(opencore-amr_dir) && make clean

View file

@ -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

View file

@ -0,0 +1,19 @@
polarssl_dir?=externals/polarssl
update-tree: $(BUILDER_SRC_DIR)/$(polarssl_dir)/Makefile
mkdir -p $(BUILDER_BUILD_DIR)/$(polarssl_dir)
cd $(BUILDER_BUILD_DIR)/$(polarssl_dir)/ && \
rsync -rvLpgoc --exclude ".git" $(BUILDER_SRC_DIR)/$(polarssl_dir)/ .
build-polarssl: update-tree
host_alias=$(host) && . /$(BUILDER_SRC_DIR)/build/$(config_site) && \
cd $(BUILDER_BUILD_DIR)/$(polarssl_dir) && make CC="$$CC" AR="$$AR" CPPFLAGS="$$CPPFLAGS" lib && make install DESTDIR=$(prefix)
clean-polarssl:
-cd $(BUILDER_BUILD_DIR)/$(polarssl_dir) && make clean
veryclean-polarssl:
-rm -rf $(BUILDER_BUILD_DIR)/$(polarssl_dir)
clean-makefile-polarssl: veryclean-polarssl

View file

@ -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

View file

@ -24,42 +24,40 @@
x264-configure-option= \
--host=$(host)\
--enable-static \
--enable-static --enable-pic \
--cross-prefix=$$SDK_BIN_PATH/ \
--extra-ldflags="-arch $$ARCH -isysroot $$SYSROOT_PATH"
--extra-ldflags="$$COMMON_FLAGS"
XCFLAGS:=$$COMMON_FLAGS
ifneq (,$(findstring i386,$(host)))
x264-configure-option+= --extra-cflags="-arch $$ARCH -isysroot $$SYSROOT_PATH"
endif
ifneq (,$(findstring armv6,$(host)))
x264-configure-option+= --extra-cflags="-arch $$ARCH -mcpu=arm1176jzf-s -marm -isysroot $$SYSROOT_PATH"
x264-configure-option+= --disable-asm
endif
ifneq (,$(findstring armv7,$(host)))
x264-configure-option+= --extra-cflags="-arch $$ARCH -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -isysroot $$SYSROOT_PATH"
XCFLAGS+= -mfpu=neon -mfloat-abi=softfp
endif
x264_dir?=externals/x264
#$(BUILDER_SRC_DIR)/$(x264_dir)/patched :
# cd $(BUILDER_SRC_DIR)/$(x264_dir) \
# && git apply $(BUILDER_SRC_DIR)/build/builders.d/x264.patch \
# && touch $(BUILDER_SRC_DIR)/$(x264_dir)/patched
x264-configure-option+= --extra-cflags="${XCFLAGS}"
$(BUILDER_BUILD_DIR)/$(x264_dir)/configure:
x264_dir?=externals/x264
$(BUILDER_SRC_DIR)/$(x264_dir)/patched:
cd $(BUILDER_SRC_DIR)/$(x264_dir) \
&& git apply $(BUILDER_SRC_DIR)/build/builders.d/x264.patch \
&& touch $(BUILDER_SRC_DIR)/$(x264_dir)/patched
$(BUILDER_BUILD_DIR)/$(x264_dir)/configure: $(BUILDER_SRC_DIR)/$(x264_dir)/patched
mkdir -p $(BUILDER_BUILD_DIR)/$(x264_dir)
cd $(BUILDER_BUILD_DIR)/$(x264_dir)/ \
&& rsync -av --exclude ".git" $(BUILDER_SRC_DIR)/$(x264_dir)/* .
&& rsync -rvLpgoc --exclude ".git" $(BUILDER_SRC_DIR)/$(x264_dir)/* .
$(BUILDER_BUILD_DIR)/$(x264_dir)/config.mak: $(BUILDER_BUILD_DIR)/$(x264_dir)/configure
cd $(BUILDER_BUILD_DIR)/$(x264_dir)/ \
&& host_alias=$(host) . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& ./configure --prefix=$(prefix) ${x264-configure-option}
&& CC="$$CC" STRINGS="$$STRINGS" ./configure --prefix=$(prefix) $(x264-configure-option)
build-x264: $(BUILDER_BUILD_DIR)/$(x264_dir)/config.mak
cd $(BUILDER_BUILD_DIR)/$(x264_dir) make && make install
cd $(BUILDER_BUILD_DIR)/$(x264_dir) \
&& host_alias=$(host) . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& make STRIP="$$STRIP" AR="$$AR -r " RANLIB="$$RANLIB" CC="$$CC" STRINGS="$$STRINGS" && make STRIP="$$STRIP" AR="$$AR" RANLIB="$$RANLIB" STRINGS="$$STRINGS" install
clean-x264:
cd $(BUILDER_BUILD_DIR)/$(x264_dir) && make clean
@ -67,7 +65,7 @@ clean-x264:
veryclean-x264:
-cd $(BUILDER_BUILD_DIR)/$(x264_dir) && make distclean
cd $(BUILDER_SRC_DIR)/$(x264_dir)/ \
&& git checkout common/arm/asm.S \
&& git clean -f && git reset --hard \
&& rm -f patched
rm -rf $(BUILDER_BUILD_DIR)/$(x264_dir)

View file

@ -1,12 +1,136 @@
diff --git a/common/arm/asm.S b/common/arm/asm.S
index 8e70403..259bb92 100644
--- a/common/arm/asm.S
+++ b/common/arm/asm.S
@@ -47,6 +47,7 @@ ELF .eabi_attribute 25, \val
.endm
diff --git a/common/arm/cpu-a.S b/common/arm/cpu-a.S
index a459553..bc91505 100644
--- a/common/arm/cpu-a.S
+++ b/common/arm/cpu-a.S
@@ -26,7 +26,7 @@
#include "asm.S"
.macro function name
+ .align 2
.global EXTERN_ASM\name
EXTERN_ASM\name:
ELF .hidden \name
.fpu neon
-.align
+// .align
// done in gas because .fpu neon overrides the refusal to assemble
// instructions the selected -march/-mcpu doesn't support
@@ -95,7 +95,7 @@ average_loop:
sub r2, r2, r1
cmpgt r2, #30 << 3 // assume context switch if it took over 30 cycles
addle r3, r3, r2
- subles ip, ip, #1
+ suble ip, ip, #1
bgt average_loop
// disable counters if we enabled them
diff --git a/common/arm/mc-a.S b/common/arm/mc-a.S
index 507bbba..d5554be 100644
--- a/common/arm/mc-a.S
+++ b/common/arm/mc-a.S
@@ -166,7 +166,7 @@ function x264_pixel_avg_\w\()x\h\()_neon
ldr ip, [sp, #8]
push {r4-r6,lr}
cmp ip, #32
- ldrd r4, [sp, #16]
+ ldrd r4, r5, [sp, #16]
mov lr, #\h
beq x264_pixel_avg_w\w\()_neon
rsbs r6, ip, #64
@@ -446,7 +446,7 @@ avg2_w20_loop:
.ifc \type, full
ldr lr, [r4, #32] // denom
.endif
- ldrd r4, [r4, #32+4] // scale, offset
+ ldrd r4, r5, [r4, #32+4] // scale, offset
vdup.16 q0, r4
vdup.16 q1, r5
.ifc \type, full
@@ -815,7 +815,7 @@ copy_w16_aligned_loop:
// int dx, int dy, int i_width, int i_height );
function x264_mc_chroma_neon
push {r4-r6, lr}
- ldrd r4, [sp, #16]
+ ldrd r4, r5, [sp, #16]
ldr r6, [sp, #24]
asr lr, r5, #3
@@ -1271,8 +1271,8 @@ filter_h_loop:
function x264_frame_init_lowres_core_neon
push {r4-r10,lr}
vpush {d8-d15}
- ldrd r4, [sp, #96]
- ldrd r6, [sp, #104]
+ ldrd r4, r5, [sp, #96]
+ ldrd r6, r7, [sp, #104]
ldr lr, [sp, #112]
sub r10, r6, r7 // dst_stride - width
and r10, r10, #~15
diff --git a/common/arm/pixel-a.S b/common/arm/pixel-a.S
index 8bce3b6..0784ae6 100644
--- a/common/arm/pixel-a.S
+++ b/common/arm/pixel-a.S
@@ -328,9 +328,9 @@ SAD_FUNC_DUAL 16, 16
function x264_pixel_sad_x\x\()_\w\()x\h\()_neon
push {r6-r7,lr}
.if \x == 3
- ldrd r6, [sp, #12]
+ ldrd r6, r7, [sp, #12]
.else
- ldrd r6, [sp, #16]
+ ldrd r6, r7, [sp, #16]
ldr r12, [sp, #12]
.endif
mov lr, #FENC_STRIDE
@@ -596,7 +596,7 @@ function x264_pixel_var2_8x8_neon
vadd.s32 d1, d2, d3
vpadd.s32 d0, d0, d1
- vmov.32 r0, r1, d0
+ vmov r0, r1, d0
vst1.32 {d0[1]}, [ip,:32]
mul r0, r0, r0
sub r0, r1, r0, lsr #6
diff --git a/common/arm/predict-a.S b/common/arm/predict-a.S
index af65bd7..8cdaf50 100644
--- a/common/arm/predict-a.S
+++ b/common/arm/predict-a.S
@@ -181,9 +181,9 @@ function x264_predict_4x4_ddl_neon
function x264_predict_8x8_dc_neon
mov ip, #0
- ldrd r2, [r1, #8]
+ ldrd r2, r3, [r1, #8]
push {r4-r5,lr}
- ldrd r4, [r1, #16]
+ ldrd r4, r5, [r1, #16]
lsl r3, r3, #8
ldrb lr, [r1, #7]
usad8 r2, r2, ip
diff --git a/common/arm/quant-a.S b/common/arm/quant-a.S
index e851562..c159f9e 100644
--- a/common/arm/quant-a.S
+++ b/common/arm/quant-a.S
@@ -271,7 +271,7 @@ dequant_4x4_dc_rshift:
// int coeff_last( int16_t *l )
function x264_coeff_last4_arm
- ldrd r2, [r0]
+ ldrd r2, r3, [r0]
subs r0, r3, #0
movne r0, #2
movne r2, r3
@@ -300,7 +300,7 @@ function x264_coeff_last\size\()_neon
subs r1, ip, r1, lsr #2
addge r0, r1, #\size - 8
- sublts r0, r3, r0, lsr #2
+ sublt r0, r3, r0, lsr #2
movlt r0, #0
bx lr
.endfunc
@@ -349,7 +349,7 @@ function x264_coeff_last64_neon
subs r1, ip, r1
addge r0, r1, #32
- sublts r0, ip, r0
+ sublt r0, ip, r0
movlt r0, #0
bx lr
.endfunc

View file

@ -4,7 +4,7 @@ $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/Makefile:
cd $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/\
&& host_alias=$(host) . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& cmake $(BUILDER_SRC_DIR)/$(zrtpcpp_dir) -Denable-ccrtp=false -DCMAKE_TOOLCHAIN_FILE=$(BUILDER_SRC_DIR)build/iphone-toolchain.cmake \
-LH -Wdev -DCMAKE_C_COMPILER=$$SDK_BIN_PATH/gcc -DCMAKE_CXX_COMPILER=$$SDK_BIN_PATH/g++ \
-LH -Wdev -DCMAKE_C_COMPILER=`xcrun --find clang` -DCMAKE_CXX_COMPILER=`xcrun --find clang` \
-DCMAKE_SYSTEM_PROCESSOR=$$ARCH -DCMAKE_C_FLAGS="$$COMMON_FLAGS" -DCMAKE_CXX_FLAGS="$$COMMON_FLAGS" \
-DCMAKE_INSTALL_PREFIX=$(prefix) -DCMAKE_FIND_ROOT_PATH="$(prefix) -DBUILD_STATIC=ON "
# Used toolchain: $(TC)
@ -12,7 +12,9 @@ $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/Makefile:
build-zrtpcpp: $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/Makefile
@echo "Build ZRTP - prefix $(prefix)"
cd $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir) && make VERBOSE=1 && make install
cd $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir) \
&& host_alias=$(host) . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& make VERBOSE=1 && make install
clean-zrtpcpp:
-cd $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir) && make clean

View file

@ -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
@ -39,13 +39,20 @@ 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
COMMON_FLAGS=" -arch ${ARCH} ${MCPU} -isysroot ${SYSROOT_PATH} -miphoneos-version-min=${SDK_VERSION} -DTARGET_OS_IPHONE=1 -D__IOS -fms-extensions"
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"
STRIP="xcrun strip"
NM="xcrun nm"
CPPFLAGS="-Dasm=__asm"
OBJCFLAGS="-x objective-c -fexceptions -gdwarf-2 -fobjc-abi-version=2 -fobjc-legacy-dispatch"
#Force install script to use -C so that header files don't get re-written if not changed.
INSTALL_DATA="ginstall -C"

Some files were not shown because too many files have changed in this diff Show more