diff --git a/.gitmodules b/.gitmodules index f7d6e198e..43856086f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,7 +12,7 @@ url = git://git.linphone.org/gsm.git [submodule "submodules/externals/speex"] path = submodules/externals/speex - url = http://git.xiph.org/speex.git + url = git://git.linphone.org/speex.git [submodule "submodules/msilbc"] path = submodules/msilbc url = git://git.linphone.org/msilbc.git @@ -28,9 +28,24 @@ [submodule "submodules/msamr"] path = submodules/msamr url = git://git.linphone.org/msamr.git +[submodule "submodules/externals/ffmpeg"] + path = submodules/externals/ffmpeg + url = git://git.videolan.org/ffmpeg +[submodule "submodules/externals/x264"] + path = submodules/externals/x264 + url = git://git.videolan.org/x264.git +[submodule "submodules/msx264"] + path = submodules/msx264 + url = git://git.linphone.org/msx264.git +[submodule "submodules/externals/libvpx"] + path = submodules/externals/libvpx + url = http://git.chromium.org/webm/libvpx.git [submodule "submodules/externals/zrtpcpp"] path = submodules/externals/zrtpcpp - url = git://github.com/wernerd/ZRTPCPP.git + url = git://git.linphone.org/zrtpcpp.git [submodule "submodules/mssilk"] path = submodules/mssilk url = git://git.linphone.org/mssilk.git +[submodule "submodules/externals/srtp"] + path = submodules/externals/srtp + url = git://git.linphone.org/srtp.git diff --git a/Classes/AdvancedPhoneViewController.m b/Classes/AdvancedPhoneViewController.m deleted file mode 100644 index d4b3a0392..000000000 --- a/Classes/AdvancedPhoneViewController.m +++ /dev/null @@ -1,86 +0,0 @@ -/* AdvancedPhoneViewController.m - * - * Copyright (C) 2009 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 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 "AdvancedPhoneViewController.h" - - -@implementation AdvancedPhoneViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - mIncallViewController = [[IncallViewController alloc] initWithNibName:@"IncallViewController" - bundle:[NSBundle mainBundle]]; -} - --(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [super displayDialerFromUI:viewCtrl - forUser:username - withDisplayName:displayName]; - - [mIncallViewController displayDialerFromUI:viewCtrl - forUser:username - withDisplayName:displayName]; - -} --(void) displayCallInProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - /*[super displayCallInProgressFromUI:viewCtrl - forUser:username - withDisplayName:displayName];*/ - - [self presentModalViewController:mIncallViewController animated:true]; - - [mIncallViewController displayCallInProgressFromUI:viewCtrl - forUser:username - withDisplayName:displayName]; - -} --(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - - if (linphone_call_get_dir(currentCall)==LinphoneCallIncoming){ - [self presentModalViewController:mIncallViewController animated:true]; - } - - [super displayIncallFromUI:viewCtrl - forUser:username - withDisplayName:displayName]; - - [mIncallViewController displayIncallFromUI:viewCtrl - forUser:username - withDisplayName:displayName]; - -} --(void) displayStatus:(NSString*) message { - [super displayStatus:message]; - [mIncallViewController displayStatus:message]; -} - --(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl { - [super updateUIFromLinphoneState:viewCtrl]; - - [mIncallViewController updateUIFromLinphoneState:viewCtrl]; -} - -- (void)dealloc { - [mIncallViewController release]; - [super dealloc]; - -} - - -@end diff --git a/Classes/CallDelegate.h b/Classes/CallDelegate.h new file mode 100644 index 000000000..02b69b026 --- /dev/null +++ b/Classes/CallDelegate.h @@ -0,0 +1,27 @@ +// +// CallDelegate.h +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 03/11/11. +// Copyright (c) 2011 __MyCompanyName__. All rights reserved. +// + +#import +#include "linphonecore.h" + + +@protocol UIActionSheetCustomDelegate +- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void*) datas; +@end + + +@interface CallDelegate : NSObject { + + LinphoneCall* call; + id delegate; +} + +@property (nonatomic) LinphoneCall* call; +@property (nonatomic, retain) id delegate; + +@end diff --git a/Classes/CallDelegate.m b/Classes/CallDelegate.m new file mode 100644 index 000000000..6ae87a25c --- /dev/null +++ b/Classes/CallDelegate.m @@ -0,0 +1,20 @@ +// +// CallDelegate.m +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 03/11/11. +// Copyright (c) 2011 __MyCompanyName__. All rights reserved. +// + +#import "CallDelegate.h" + +@implementation CallDelegate + +@synthesize call; +@synthesize delegate; + +-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { + [delegate actionSheet:actionSheet clickedButtonAtIndex:buttonIndex withUserDatas:call]; +} + +@end diff --git a/Classes/ConferenceCallDetailCell.xib b/Classes/ConferenceCallDetailCell.xib new file mode 100644 index 000000000..9feae9f9c --- /dev/null +++ b/Classes/ConferenceCallDetailCell.xib @@ -0,0 +1,238 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBUITableViewCell + IBUIImageView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 256 + + + + 292 + {{0, -0.5}, {80, 80}} + + + + _NS:567 + 1 + NO + IBCocoaTouchFramework + + + + 292 + {{79, -0.5}, {241, 80}} + + + + _NS:328 + NO + YES + 7 + 2 + NO + IBCocoaTouchFramework + Texte de test + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 40 + + + Helvetica + 40 + 16 + + + + {320, 79} + + + + _NS:395 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 80} + + + + _NS:384 + IBCocoaTouchFramework + + ConferenceDetailCellIdentifier + + + + + + + + conferenceDetailCell + + + + 7 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + + 5 + + + + + 6 + + + + + + + ConferenceCallDetailView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 7 + + + + + ConferenceCallDetailView + UIViewController + + UIButton + UIButton + UITableViewCell + UIButton + UIButton + UIButton + UITableView + + + + addCall + UIButton + + + back + UIButton + + + conferenceDetailCell + UITableViewCell + + + hangup + UIButton + + + mute + UIButton + + + speaker + UIButton + + + table + UITableView + + + + IBProjectSource + ./Classes/ConferenceCallDetailView.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + 933 + + diff --git a/Classes/ConferenceCallDetailView.h b/Classes/ConferenceCallDetailView.h new file mode 100644 index 000000000..ccc5d10c8 --- /dev/null +++ b/Classes/ConferenceCallDetailView.h @@ -0,0 +1,32 @@ +// +// ConferenceCallDetailView.h +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 25/11/11. +// Copyright (c) 2011 Belledonne Communications. All rights reserved. +// + +#import +#import "LinphoneUI/UIMuteButton.h" +#import "LinphoneUI/UISpeakerButton.h" + +@interface ConferenceCallDetailView : UIViewController { + + UIMuteButton* mute; + UISpeakerButton* speaker; + UIButton* back; + UIButton* hangup; + UITableView* table; + + UITableViewCell* conferenceDetailCell; +} + +@property (nonatomic, retain) IBOutlet UIButton* mute; +@property (nonatomic, retain) IBOutlet UIButton* speaker; +@property (nonatomic, retain) IBOutlet UIButton* addCall; +@property (nonatomic, retain) IBOutlet UIButton* back; +@property (nonatomic, retain) IBOutlet UIButton* hangup; +@property (nonatomic, retain) IBOutlet UITableView* table; + +@property (nonatomic, assign) IBOutlet UITableViewCell* conferenceDetailCell; +@end diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m new file mode 100644 index 000000000..0ca6890c5 --- /dev/null +++ b/Classes/ConferenceCallDetailView.m @@ -0,0 +1,114 @@ +// +// ConferenceCallDetailView.m +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 25/11/11. +// Copyright (c) 2011 Belledonne Communications. All rights reserved. +// + +#import "ConferenceCallDetailView.h" +#import "linphonecore.h" +#import "LinphoneManager.h" +#import "IncallViewController.h" + +@implementation ConferenceCallDetailView + +@synthesize mute; +@synthesize speaker; +@synthesize back; +@synthesize hangup; +@synthesize table; + +@synthesize conferenceDetailCell; + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)didReceiveMemoryWarning +{ + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +#pragma mark - View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + [back addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside]; + + table.rowHeight = 80; + + [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; + [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] ]; +} + +-(void) backButtonPressed { + [self dismissModalViewControllerAnimated:YES]; +} + +- (void)viewDidUnload +{ + [super viewDidUnload]; + // Release any retained subviews of the main view. + // e.g. self.myOutlet = nil; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + // Return YES for supported orientations + return (interfaceOrientation == UIInterfaceOrientationPortrait); +} + +-(void) viewWillAppear:(BOOL)animated { + [table reloadData]; + [mute reset]; + [speaker reset]; +} + +#pragma mark - UITableView delegates +-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.row % 2) + cell.backgroundColor = [UIColor lightGrayColor]; + else + cell.backgroundColor = [UIColor darkGrayColor]; +} + +-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString* identifier = @"ConferenceDetailCellIdentifier"; + UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier]; + if (cell == nil) { + [[NSBundle mainBundle] loadNibNamed:@"ConferenceCallDetailCell" owner:self options:nil]; + cell = conferenceDetailCell; + self.conferenceDetailCell = nil; + } + + /* retrieve cell's fields using tags */ + UIImageView* image = (UIImageView*) [cell viewWithTag:1]; + UILabel* label = (UILabel*) [cell viewWithTag:2]; + + /* update cell content */ + LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; + [IncallViewController updateCellImageView:image Label:label DetailLabel:nil AndAccessoryView:nil withCall:call]; + + tableView.rowHeight = 80;//cell.bounds.size.height; + + return cell; +} + +-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + LinphoneCore* lc = [LinphoneManager getLc]; + int result = linphone_core_get_conference_size(lc) - (int)linphone_core_is_in_conference(lc); + return result; +} + +@end diff --git a/Classes/ConferenceCallDetailView.xib b/Classes/ConferenceCallDetailView.xib new file mode 100644 index 000000000..3b80aa096 --- /dev/null +++ b/Classes/ConferenceCallDetailView.xib @@ -0,0 +1,478 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + IBUITableView + IBUIButton + IBUIView + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 274 + {320, 328} + + + + _NS:418 + + 3 + MCAwAA + + YES + IBCocoaTouchFramework + YES + 0 + NO + YES + 44 + 22 + 22 + + + + 292 + {{107, 328}, {106, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 3 + MC41AA + + + NSImage + mic_active.png + + + NSImage + micro_inverse.png + + + NSImage + micro.png + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + 292 + {{213, 328}, {107, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + HP_inverse.png + + + NSImage + HP.png + + + + + + + 292 + {{0, 394}, {320, 66}} + + + + + 1 + MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + stopcall-red.png + + + NSImage + clavier-01-106px.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{0, 328}, {107, 66}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + effacer.png + + + + + + {{0, 20}, {320, 460}} + + + + + 3 + MC42NjY2NjY2NjY3AA + + + IBCocoaTouchFramework + + + + + + + back + + + + 16 + + + + hangup + + + + 17 + + + + mute + + + + 18 + + + + speaker + + + + 19 + + + + view + + + + 20 + + + + table + + + + 23 + + + + dataSource + + + + 21 + + + + delegate + + + + 22 + + + + + + 0 + + + + + + 1 + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 7 + + + + + + 10 + + + mute + + + 11 + + + end + + + 12 + + + speaker + + + 14 + + + Erase + + + + + ConferenceCallDetailView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIEraseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 23 + + + + + ConferenceCallDetailView + UIViewController + + UIButton + UIButton + UITableViewCell + UIButton + UIButton + UIButton + UITableView + + + + addCall + UIButton + + + back + UIButton + + + conferenceDetailCell + UITableViewCell + + + hangup + UIButton + + + mute + UIButton + + + speaker + UIButton + + + table + UITableView + + + + IBProjectSource + ./Classes/ConferenceCallDetailView.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMuteButton + UIToggleButton + + IBProjectSource + ./Classes/UIMuteButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + + {107, 67} + {107, 67} + {106, 60} + {66, 65} + {20, 20} + {107, 67} + {107, 67} + {62, 54} + + 933 + + diff --git a/Classes/ConsoleViewController.m b/Classes/ConsoleViewController.m index bf2cbb1e1..36a01a466 100644 --- a/Classes/ConsoleViewController.m +++ b/Classes/ConsoleViewController.m @@ -1,14 +1,21 @@ -/* - * ConsoleViewController.h +/*ConsoleViewController.h * - * Description: + * Copyright (C) 2010 Belledonne Comunications, Grenoble, France * - * - * Belledonne Communications (C) 2010 - * - * Copyright: See COPYING file that comes with this distribution - * - */ + * 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 "ConsoleViewController.h" diff --git a/Classes/IncallViewController.h b/Classes/IncallViewController.h index fd783733e..e6ea4e234 100644 --- a/Classes/IncallViewController.h +++ b/Classes/IncallViewController.h @@ -19,25 +19,25 @@ #import #import "linphonecore.h" #import "PhoneViewController.h" +#import "ConferenceCallDetailView.h" #import #include "UILinphone.h" +@class VideoViewController; - -@interface IncallViewController : UIViewController { +@interface IncallViewController : UIViewController { - UIView* controlSubView; + UIView* controlSubView, *callControlSubView, *hangUpView; - UILabel* peerName; - UILabel* peerNumber; - UIDuration* callDuration; - UILabel* status; - UIHangUpButton* endCtrl; + UIButton* endCtrl; UIButton* dialer; UIMuteButton* mute; - UIPauseResumeButton* pause; + UIButton* pause; UISpeakerButton* speaker; UIButton* contacts; + UIButton* addVideo; + UITableView* callTableView; + UIButton* addCall, *mergeCalls, *addToConf; //key pad @@ -55,30 +55,55 @@ UIDigitButton* star; UIDigitButton* zero; UIDigitButton* hash; - UIHangUpButton* endPad; UIButton* close; + + bool dismissed; + + NSTimer *durationRefreasher; + NSTimer * glowingTimer; + + float glow; + NSIndexPath* activePath; ABPeoplePickerNavigationController* myPeoplePickerController; + + UITableViewCell* activeCallCell; + + VideoViewController* mVideoViewController; + ConferenceCallDetailView* conferenceDetail; + BOOL mVideoShown; + BOOL mVideoIsPending; + BOOL mIncallViewIsReady; + + UIImage* verified, *unverified; + UIActionSheet* zrtpVerificationSheet; } -(void)displayStatus:(NSString*) message; - (IBAction)doAction:(id)sender; -@property (nonatomic, retain) IBOutlet UIView* controlSubView; -@property (nonatomic, retain) IBOutlet UIView* padSubView; ++(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; ++ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIButton*)accessoryView withCall:(LinphoneCall*) call; + +@property (nonatomic, retain) IBOutlet UIView* controlSubView; +@property (nonatomic, retain) IBOutlet UIView* callControlSubView; +@property (nonatomic, retain) IBOutlet UIView* padSubView; +@property (nonatomic, retain) IBOutlet UIView* hangUpView; +@property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail; + -@property (nonatomic, retain) IBOutlet UILabel* peerName; -@property (nonatomic, retain) IBOutlet UILabel* peerNumber; -@property (nonatomic, retain) IBOutlet UILabel* callDuration; -@property (nonatomic, retain) IBOutlet UILabel* status; @property (nonatomic, retain) IBOutlet UIButton* endCtrl; @property (nonatomic, retain) IBOutlet UIButton* dialer; @property (nonatomic, retain) IBOutlet UIButton* mute; @property (nonatomic, retain) IBOutlet UIButton* pause; @property (nonatomic, retain) IBOutlet UIButton* speaker; @property (nonatomic, retain) IBOutlet UIButton* contacts; - +@property (nonatomic, retain) IBOutlet UIButton* addVideo; +@property (nonatomic, retain) IBOutlet UITableView* callTableView; +@property (nonatomic, retain) IBOutlet UIButton* addCall; +@property (nonatomic, retain) IBOutlet UIButton* mergeCalls; +@property (nonatomic, retain) IBOutlet UIButton* addToConf; @property (nonatomic, retain) IBOutlet UIButton* one; @property (nonatomic, retain) IBOutlet UIButton* two; @@ -93,5 +118,5 @@ @property (nonatomic, retain) IBOutlet UIButton* zero; @property (nonatomic, retain) IBOutlet UIButton* hash; @property (nonatomic, retain) IBOutlet UIButton* close; -@property (nonatomic, retain) IBOutlet UIButton* endPad; +@property (nonatomic, retain) IBOutlet VideoViewController* videoViewController; @end diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index c3a7464e9..d3b984f60 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -18,20 +18,22 @@ */ #import "IncallViewController.h" #import +#import #import "linphonecore.h" - - +#include "LinphoneManager.h" +#include "private.h" +#import "ContactPickerDelegate.h" @implementation IncallViewController @synthesize controlSubView; +@synthesize callControlSubView; @synthesize padSubView; +@synthesize hangUpView; +@synthesize conferenceDetail; -@synthesize peerName; -@synthesize peerNumber; -@synthesize callDuration; -@synthesize status; +@synthesize addToConf; @synthesize endCtrl; @synthesize close; @synthesize mute; @@ -39,6 +41,9 @@ @synthesize dialer; @synthesize speaker; @synthesize contacts; +@synthesize callTableView; +@synthesize addCall; +@synthesize mergeCalls; @synthesize one; @synthesize two; @@ -52,7 +57,7 @@ @synthesize star; @synthesize zero; @synthesize hash; -@synthesize endPad; +@synthesize videoViewController; /* // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. @@ -66,14 +71,34 @@ */ +bool isInConference(LinphoneCall* call) { + if (!call) + return false; + return linphone_call_get_current_params(call)->in_conference; +} + +int callCount(LinphoneCore* lc) { + int count = 0; + const MSList* calls = linphone_core_get_calls(lc); + + while (calls != 0) { + if (!isInConference((LinphoneCall*)calls->data)) { + count++; + } + calls = calls->next; + } + return count; +} + // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; //Controls - [mute initWithOnImage:[UIImage imageNamed:@"mic_muted.png"] offImage:[UIImage imageNamed:@"mic_active.png"] ]; - [pause initWithOnImage:[UIImage imageNamed:@"resumecall.png"] offImage:[UIImage imageNamed:@"pausecall.png"] ]; - [speaker initWithOnImage:[UIImage imageNamed:@"Speaker-32-on.png"] offImage:[UIImage imageNamed:@"Speaker-32-off.png"] ]; - + [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; + [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] ]; + + verified = [[UIImage imageNamed:@"secured.png"] retain]; + unverified = [[UIImage imageNamed:@"unverified.png"] retain]; //Dialer init [zero initWithNumber:'0']; @@ -88,50 +113,274 @@ [nine initWithNumber:'9']; [star initWithNumber:'*']; [hash initWithNumber:'#']; + + [addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside]; + [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; + //[endCtrl addTarget:self action:@selector(endCallPressed) forControlEvents:UIControlEventTouchUpInside]; + [addToConf addTarget:self action:@selector(addToConfCallPressed) forControlEvents:UIControlEventTouchUpInside]; + [pause addTarget:self action:@selector(pauseCallPressed) forControlEvents:UIControlEventTouchUpInside]; + [mergeCalls setHidden:YES]; + mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController" + bundle:[NSBundle mainBundle]]; - + conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" + bundle:[NSBundle mainBundle]]; + + mVideoShown=FALSE; + mIncallViewIsReady=FALSE; + mVideoIsPending=FALSE; + //selectedCall = nil; + + callTableView.rowHeight = 80; + +} + +-(void) addCallPressed { + [self dismissModalViewControllerAnimated:true]; } +-(void) mergeCallsPressed { + LinphoneCore* lc = [LinphoneManager getLc]; + linphone_core_add_all_to_conference(lc); +} +-(void) addToConfCallPressed { + LinphoneCall* selectedCall = linphone_core_get_current_call([LinphoneManager getLc]); + if (!selectedCall) + return; + linphone_core_add_to_conference([LinphoneManager getLc], selectedCall); +} + +-(void) pauseCallPressed { + LinphoneCore* lc = [LinphoneManager getLc]; + + LinphoneCall* currentCall = linphone_core_get_current_call(lc); + if (currentCall) { + if (linphone_call_get_state(currentCall) == LinphoneCallStreamsRunning) { + [pause setSelected:NO]; + linphone_core_pause_call(lc, currentCall); + } + } else { + if (linphone_core_get_calls_nb(lc) == 1) { + LinphoneCall* c = (LinphoneCall*) linphone_core_get_calls(lc)->data; + if (linphone_call_get_state(c) == LinphoneCallPaused) { + linphone_core_resume_call(lc, c); + [pause setSelected:YES]; + } + } + } +} + + +-(void)updateCallsDurations { + [self updateUIFromLinphoneState: nil]; +} + +-(void) viewWillAppear:(BOOL)animated {} + +-(void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if (dismissed) { + [self dismissModalViewControllerAnimated:true]; + } else { + [self updateCallsDurations]; + durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(updateCallsDurations) + userInfo:nil + repeats:YES]; + glowingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 + target:self + selector:@selector(updateGlow) + userInfo:nil + repeats:YES]; + glow = 0; + mIncallViewIsReady=TRUE; + if (mVideoIsPending) { + mVideoIsPending=FALSE; + [self displayVideoCall:nil FromUI:self + forUser:nil + withDisplayName:nil]; + + } + + + UIDevice* device = [UIDevice currentDevice]; + if ([device respondsToSelector:@selector(isMultitaskingSupported)] + && [device isMultitaskingSupported]) { + bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + bool startVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"start_video_preference"]; + if (enableVideo && !startVideo) { + [addVideo setHidden:FALSE]; + [contacts setHidden:TRUE]; + } else { + [addVideo setHidden:TRUE]; + [contacts setHidden:FALSE]; + } + } } +} + +-(void) viewWillDisappear:(BOOL)animated { + if (zrtpVerificationSheet != nil) { + [zrtpVerificationSheet dismissWithClickedButtonIndex:2 animated:NO]; + } +} + +- (void) viewDidDisappear:(BOOL)animated { + if (durationRefreasher != nil) { + [durationRefreasher invalidate]; + durationRefreasher=nil; + [glowingTimer invalidate]; + glowingTimer = nil; + } + if (!mVideoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; + mIncallViewIsReady=FALSE; +} - (void)viewDidUnload { - - + [verified release]; + [unverified release]; } + + -(void) displayStatus:(NSString*) message; { - [status setText:message]; + } -(void) displayPad:(bool) enable { + [callTableView setHidden:enable]; + [hangUpView setHidden:enable]; [controlSubView setHidden:enable]; [padSubView setHidden:!enable]; } --(void) displayCallInProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +-(void) displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { //restaure view [self displayPad:false]; - - if (displayName && [displayName length]>0) { - [peerName setText:displayName]; - [peerNumber setText:username]; - } else { - [peerName setText:username]; - [peerNumber setText:@""]; - } - [callDuration setText:@"Calling"]; + dismissed = false; + UIDevice *device = [UIDevice currentDevice]; + device.proximityMonitoringEnabled = YES; + if ([speaker isOn]) + [speaker toggle]; + [self updateUIFromLinphoneState: nil]; } --(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [callDuration start]; +-(void) displayIncomingCall:(LinphoneCall *)call NotificationFromUI:(UIViewController *)viewCtrl forUser:(NSString *)username withDisplayName:(NSString *)displayName { + +} + +-(void) dismissVideoView { + [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; + [self dismissModalViewControllerAnimated:FALSE];//just in case + mVideoShown=FALSE; +} +-(void) displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + dismissed = false; + UIDevice *device = [UIDevice currentDevice]; + device.proximityMonitoringEnabled = YES; + if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) { + if ([speaker isOn]) [speaker toggle]; + } + [self updateUIFromLinphoneState: nil]; + if (self.presentedViewController == (UIViewController*)mVideoViewController) { + [self dismissVideoView]; + } } -(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [callDuration stop]; - [self dismissModalViewControllerAnimated:true]; + UIViewController* modalVC = self.modalViewController; + UIDevice *device = [UIDevice currentDevice]; + device.proximityMonitoringEnabled = NO; + if (modalVC != nil) { + // clear previous native window ids + if (modalVC == mVideoViewController) { + mVideoShown=FALSE; + linphone_core_set_native_video_window_id([LinphoneManager getLc],0); + linphone_core_set_native_preview_window_id([LinphoneManager getLc],0); + } + [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO]; + [self dismissModalViewControllerAnimated:FALSE];//just in case + } + + [self dismissModalViewControllerAnimated:FALSE]; //disable animation to avoid blanc bar just below status bar*/ + dismissed = true; + [self updateUIFromLinphoneState: nil]; +} +-(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + if (mIncallViewIsReady) { + [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; + mVideoShown=TRUE; + [self presentModalViewController:mVideoViewController animated:true]; + } else { + //postepone presentation + mVideoIsPending=TRUE; + } } -(void) updateUIFromLinphoneState:(UIViewController *)viewCtrl { + activeCallCell = nil; [mute reset]; - [pause reset]; + // if ( + // [pause reset]; + + + LinphoneCore* lc; + + @try { + lc = [LinphoneManager getLc]; + + if (callCount([LinphoneManager getLc]) > 1) { + [pause setHidden:YES]; + [mergeCalls setHidden:NO]; + } else { + [pause setHidden:NO]; + [mergeCalls setHidden:YES]; + } + + [callTableView reloadData]; + } @catch (NSException* exc) { + return; + } + LinphoneCall* selectedCall = linphone_core_get_current_call([LinphoneManager getLc]); + // hide call control subview if no call selected + [callControlSubView setHidden:(selectedCall == NULL)]; + // hide add to conf if no conf exist + if (!callControlSubView.hidden) { + [addToConf setHidden:(linphone_core_get_conference_size(lc) == 0 || + isInConference(selectedCall))]; + } + int callsCount = linphone_core_get_calls_nb(lc); + // hide pause/resume if in conference + if (selectedCall) { + if (linphone_core_is_in_conference(lc)) + [pause setHidden:YES]; + else if (callCount(lc) == callsCount && callsCount == 1) { + [pause setHidden:NO]; + pause.selected = NO; + } else { + [pause setHidden:YES]; + } + } else { + if (callsCount == 1) { + LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data; + if (linphone_call_get_state(c) == LinphoneCallPaused || + linphone_call_get_state(c) == LinphoneCallPausing) { + [pause setHidden:NO]; + pause.selected = YES; + } + [pause setHidden:NO]; + } else { + [pause setHidden:YES]; + } + } + [mergeCalls setHidden:!pause.hidden]; + + // update conference details view if diaplsyed + if (self.presentedViewController == conferenceDetail) { + if (!linphone_core_is_in_conference(lc)) + [self dismissModalViewControllerAnimated:YES]; + else + [conferenceDetail.table reloadData]; + } } - (IBAction)doAction:(id)sender { @@ -142,7 +391,7 @@ } else if (sender == contacts) { // start people picker myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - [myPeoplePickerController setPeoplePickerDelegate:self]; + [myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] /*self*/]; [self presentModalViewController: myPeoplePickerController animated:true]; } else if (sender == close) { @@ -174,7 +423,342 @@ - (void)dealloc { - [super dealloc]; + [super dealloc]; +} + ++(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ + const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); + + if (!conf && linphone_core_get_conference_size([LinphoneManager getLc])) + index--; + + while (calls != 0) { + if (isInConference((LinphoneCall*)calls->data) == conf) { + if (index == 0) + break; + index--; + } + calls = calls->next; + } + + if (calls == 0) { + ms_error("Cannot find call with index %d (in conf: %d)", index, conf); + return nil; + } else { + return (LinphoneCall*)calls->data; + } +} + +-(void) updateActive:(bool_t)active cell:(UITableViewCell*) cell { + if (!active) { + + cell.backgroundColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.2]; + + UIColor* c = [[UIColor blackColor] colorWithAlphaComponent:0.5]; + [cell.textLabel setTextColor:c]; + [cell.detailTextLabel setTextColor:c]; + } else { + cell.backgroundColor = [UIColor colorWithRed:0.4 green:0.4 blue:0.4 alpha:(0.7+sin(2*glow)*0.3)]; + [cell.textLabel setTextColor:[UIColor whiteColor]]; + [cell.detailTextLabel setTextColor:[UIColor whiteColor]]; + } + [cell.textLabel setBackgroundColor:[UIColor clearColor]]; + [cell.detailTextLabel setBackgroundColor:[UIColor clearColor]]; +} + +-(void) updateGlow { + if (!activeCallCell) + return; + + glow += 0.1; + + [self updateActive:YES cell:activeCallCell]; + [activeCallCell.backgroundView setNeedsDisplay]; + [activeCallCell setNeedsDisplay]; + [callTableView setNeedsDisplay]; +} + +-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { + [self updateActive:(cell == activeCallCell) cell:cell]; +} + ++ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIButton*)accessoryView withCall:(LinphoneCall*) call { + if (call == NULL) { + ms_warning("UpdateCell called with null call"); + [label setText:@""]; + return; + } + const LinphoneAddress* addr = linphone_call_get_remote_address(call); + + if (addr) { + const char* lUserNameChars=linphone_address_get_username(addr); + NSString* lUserName = lUserNameChars?[[NSString alloc] initWithUTF8String:lUserNameChars]:NSLocalizedString(@"Unknown",nil); + NSMutableString* mss = [[NSMutableString alloc] init]; + /* contact name */ + const char* n = linphone_address_get_display_name(addr); + if (n) + [mss appendFormat:@"%s", n, nil]; + else + [mss appendFormat:@"%@",lUserName , nil]; + + if ([mss compare:label.text] != 0 || imageView.image == nil) { + [label setText:mss]; + + imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName]; + } + [mss release]; + [lUserName release]; + } else { + [label setText:@"plop"]; + imageView.image = nil; + } + + if (detailLabel != nil) { + NSMutableString* ms = [[NSMutableString alloc] init ]; + if (linphone_call_get_state(call) == LinphoneCallStreamsRunning) { + int duration = linphone_call_get_duration(call); + if (duration >= 60) + [ms appendFormat:@"%02i:%02i", (duration/60), duration - 60*(duration/60), nil]; + else + [ms appendFormat:@"%02i sec", duration, nil]; + } else { + switch (linphone_call_get_state(call)) { + case LinphoneCallPaused: + [ms appendFormat:@"%@", NSLocalizedString(@"Paused (tap to resume)", nil), nil]; + break; + case LinphoneCallOutgoingProgress: + [ms appendFormat:@"%@...", NSLocalizedString(@"In progress", nil), nil]; + break; + default: + break; + } + } + [detailLabel setText:ms]; + [ms release]; + } + + if (accessoryView != nil) { + /* + LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); + if (enc != LinphoneMediaEncryptionNone) { + if (accessoryView.imageView.image == nil) { + if (enc == LinphoneMediaEncryptionSRTP || linphone_call_get_authentication_token_verified(call)) { + [accessoryView setImage: verified forState:UIControlStateNormal]; + } else { + [accessoryView setImage: unverified forState:UIControlStateNormal]; + } + } + } else { + [accessoryView setImage: (UIImage*)nil forState:UIControlStateNormal]; + }*/ + } +} + + +-(void) updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { + LinphoneCore* lc = [LinphoneManager getLc]; + + NSString* t= [NSString stringWithFormat: + NSLocalizedString(@"Conference", nil), + linphone_core_get_conference_size(lc) - linphone_core_is_in_conference(lc)]; + [cell.textLabel setText:t]; + + [self updateActive:NO cell:cell]; + cell.selected = NO; + + [callTableView deselectRowAtIndexPath:indexPath animated:NO]; + + if (!linphone_core_is_in_conference(lc)) { + [cell.detailTextLabel setText:NSLocalizedString(@"(tap to enter conference)", nil)]; + } else { + [cell.detailTextLabel setText: + [NSString stringWithFormat:NSLocalizedString(@"(me + %d participants)", nil), linphone_core_get_conference_size(lc) - linphone_core_is_in_conference(lc)]]; + } + cell.imageView.image = nil; +} + +-(void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath +{ + // show conference detail view + [self presentModalViewController:conferenceDetail animated:true]; + +} + +// UITableViewDataSource (required) +- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [callTableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + + cell.textLabel.font = [UIFont systemFontOfSize:40]; + cell.textLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight; + } + + LinphoneCore* lc = [LinphoneManager getLc]; + if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) { + [self updateConferenceCell:cell at:indexPath]; + if (linphone_core_is_in_conference(lc)) + activeCallCell = cell; + cell.accessoryView = nil; + if (linphone_core_is_in_conference(lc)) + cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; + else + cell.accessoryType = UITableViewCellAccessoryNone; + } else { + if (cell.accessoryView == nil) { + UIButton* b = [UIButton buttonWithType:UIButtonTypeCustom]; + [b setFrame:CGRectMake(0, 0, 28, 28)]; + [b setImage:nil forState:UIControlStateNormal]; + b.backgroundColor = [UIColor clearColor]; + b.userInteractionEnabled = YES; + cell.accessoryView = b; + } + LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + if (call == nil) + return nil; + [IncallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIButton*)cell.accessoryView withCall:call]; + if (linphone_core_get_current_call(lc) == call) + activeCallCell = cell; + cell.accessoryType = UITableViewCellAccessoryNone; + + LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); + + UIButton* accessoryBtn = (UIButton*) cell.accessoryView; + if (enc != LinphoneMediaEncryptionNone) { + if (enc == LinphoneMediaEncryptionSRTP || linphone_call_get_authentication_token_verified(call)) { + [accessoryBtn setImage: verified forState:UIControlStateNormal]; + } else { + [accessoryBtn setImage: unverified forState:UIControlStateNormal]; + } + } else { + [accessoryBtn setImage: (UIImage*)nil forState:UIControlStateNormal]; + } + + if (((UIButton*)cell.accessoryView).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) { + [((UIButton*)cell.accessoryView) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; + } + } + + cell.userInteractionEnabled = YES; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + return cell; +} + +-(void) secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt { + NSSet* touches = [evt allTouches]; + UITouch* touch = [touches anyObject]; + CGPoint currentTouchPos = [touch locationInView:self.callTableView]; + NSIndexPath *path = [self.callTableView indexPathForRowAtPoint:currentTouchPos]; + if (path) { + LinphoneCall* call = [IncallViewController retrieveCallAtIndex:path.row inConference:NO]; + // start action sheet to validate/unvalidate zrtp code + CallDelegate* cd = [[CallDelegate alloc] init]; + cd.delegate = self; + cd.call = call; + + [(UIButton*)[callTableView cellForRowAtIndexPath:path].accessoryView setImage:nil forState:UIControlStateNormal]; + + zrtpVerificationSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" Mark auth token '%s' as:",nil),linphone_call_get_authentication_token(call)] + delegate:cd + cancelButtonTitle:NSLocalizedString(@"Unverified",nil) + destructiveButtonTitle:NSLocalizedString(@"Verified",nil) + otherButtonTitles:nil]; + + zrtpVerificationSheet.actionSheetStyle = UIActionSheetStyleDefault; + [zrtpVerificationSheet showInView:self.view]; + [zrtpVerificationSheet release]; + } +} + +-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { + LinphoneCall* call = (LinphoneCall*)datas; + // maybe we could verify call validity + + if (buttonIndex == 0) + linphone_call_set_authentication_token_verified(call, YES); + else if (buttonIndex == 1) + linphone_call_set_authentication_token_verified(call, NO); + zrtpVerificationSheet = nil; +} + +// UITableViewDataSource (required) +- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + LinphoneCore* lc = [LinphoneManager getLc]; + + return callCount(lc) + (int)(linphone_core_get_conference_size(lc) > 0); + + if (section == 0 && linphone_core_get_conference_size(lc) > 0) + return linphone_core_get_conference_size(lc) - linphone_core_is_in_conference(lc); + + return callCount(lc); +} + +// UITableViewDataSource +- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { + return 1; + LinphoneCore* lc = [LinphoneManager getLc]; + int count = 0; + + if (callCount(lc) > 0) + count++; + + if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0) + count ++; + + return count; +} + +// UITableViewDataSource +//- (NSArray*) sectionIndexTitlesForTableView:(UITableView *)tableView { +// return [NSArray arrayWithObjects:@"Conf", @"Calls", nil ]; +//} + +// UITableViewDataSource +- (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section +{ + return nil; + return @"Calls"; + if (section == 0 && linphone_core_get_conference_size([LinphoneManager getLc]) > 0) + return @"Conference"; + else + return @"Calls"; +} + +// UITableViewDataSource +- (NSString*) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section +{ + return nil; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + [tableView deselectRowAtIndexPath:indexPath animated:NO]; + + LinphoneCore* lc = [LinphoneManager getLc]; + + //[[callTableView cellForRowAtIndexPath:indexPath] setSelected:YES animated:NO]; + + bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0); + + LinphoneCall* selectedCall = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; + + if (inConf) { + if (linphone_core_is_in_conference(lc)) + return; + LinphoneCall* current = linphone_core_get_current_call(lc); + if (current) + linphone_core_pause_call(lc, current); + linphone_core_enter_conference([LinphoneManager getLc]); + } else if (selectedCall) { + if (linphone_core_is_in_conference(lc)) { + linphone_core_leave_conference(lc); + } + linphone_core_resume_call([LinphoneManager getLc], selectedCall); + } + + [self updateUIFromLinphoneState: nil]; } diff --git a/Classes/IncallViewController.xib b/Classes/IncallViewController.xib index a2b4e804e..3e1b63885 100644 --- a/Classes/IncallViewController.xib +++ b/Classes/IncallViewController.xib @@ -15,7 +15,7 @@ IBUIViewController IBUIButton IBUIView - IBUILabel + IBUITableView IBProxyObject @@ -42,105 +42,44 @@ 274 YES - + - 292 - {320, 55} + 274 + {320, 251} - - NO - YES - NO - IBCocoaTouchFramework - Caller - - 1 - MCAwIDAAA - - - 1 - 17 - 1 - - 1 - 17 - - - Helvetica - 17 - 16 + + _NS:418 + + 3 + MCAwAA + YES + IBCocoaTouchFramework + YES + NO + 0 + YES + 44 + 22 + 22 - + 292 - {{31, 63}, {61, 21}} - - - - NO - YES - NO - IBCocoaTouchFramework - Number - - - 1 - 10 - - - - - - 292 - {{239, 63}, {65, 21}} - - - - NO - YES - NO - IBCocoaTouchFramework - Duration - - - 1 - 10 - - - - - - 292 - {{31, 347}, {258, 21}} - - - - NO - YES - NO - IBCocoaTouchFramework - status - - - 1 - 10 - - - - - - -2147483356 YES - - + + 292 - {{30, 258}, {80, 65}} - + {{0, 1}, {320, 66}} + - + + + 1 + MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA + NO NO IBCocoaTouchFramework @@ -158,35 +97,317 @@ 3 MC41AA - + NSImage stopcall-red.png + + NSImage + clavier-01-106px.png + Helvetica-Bold Helvetica 2 15 - + Helvetica-Bold 15 16 - - + + {{0, 393.5}, {320, 77}} + + + + _NS:196 + + IBCocoaTouchFramework + + + + 292 + + YES + + 292 - {{170, 266}, {72, 37}} - + {{107, 70}, {106, 66}} + - + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + conf_merge.png + + + NSImage + grouper.png + + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + + + + 292 + {{0, 4}, {107, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + mic_active.png + + + NSImage + micro_inverse.png + + + NSImage + micro.png + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + 292 + {{0, 70}, {107, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + ajouter.png + + + + + + + 292 + {{213, 70}, {107, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 1 + MCAwIDAAA + + + NSImage + contact.png + + + + + + + -2147483356 + {{213, 70}, {107, 66}} + + + + NO NO IBCocoaTouchFramework 0 0 1 + video + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + clavier-01-160px.png + + + + + + + 292 + {{107, 4}, {106, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + clavier.png + + + + + + + 292 + {{213, 4}, {107, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + HP_inverse.png + + + NSImage + HP.png + + + + + + + 292 + {{107, 70}, {106, 66}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + NSImage + pause_inactif.png + + + NSImage + pause.png + + + + + + {{0, 258.5}, {320, 135}} + + + + + NO + NO + IBCocoaTouchFramework + + + + -2147483356 + + YES + + + 292 + {{119, 251}, {82, 52}} + + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 close @@ -195,21 +416,24 @@ - + 292 - {{90, 184}, {82, 52}} + {{119, 193}, {82, 52}} + + 3 + MC42NjY2NjY2NjY3AA + NO NO IBCocoaTouchFramework 0 0 - 1 0 @@ -218,21 +442,21 @@ - + 292 - {{0, 9}, {82, 52}} + {{31, 19}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 1 @@ -241,44 +465,41 @@ - + 292 - {{90, 9}, {82, 52}} + {{119, 19}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 2 - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + - + 292 - {{180, 9}, {82, 52}} + {{207, 19}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 3 @@ -287,21 +508,21 @@ - + 292 - {{0, 69}, {82, 52}} + {{31, 77}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 4 @@ -310,21 +531,21 @@ - + 292 - {{90, 69}, {82, 52}} + {{119, 77}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 5 @@ -333,21 +554,21 @@ - + 292 - {{180, 69}, {82, 52}} + {{207, 77}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 6 @@ -356,21 +577,21 @@ - + 292 - {{0, 124}, {82, 52}} + {{31, 135}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 7 @@ -379,21 +600,21 @@ - + 292 - {{90, 124}, {82, 52}} + {{119, 135}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 8 @@ -402,21 +623,21 @@ - + 292 - {{180, 124}, {82, 52}} + {{207, 135}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 9 @@ -425,21 +646,21 @@ - + 292 - {{0, 184}, {82, 52}} + {{31, 193}, {82, 52}} + NO NO IBCocoaTouchFramework 0 0 - 1 * @@ -448,21 +669,21 @@ - + 292 - {{180, 184}, {82, 52}} + {{207, 193}, {82, 52}} - + + NO NO IBCocoaTouchFramework 0 0 - 1 # @@ -471,195 +692,16 @@ - + - {{25, 110}, {270, 317}} + {{0, 71}, {320, 310}} 3 - MSAwAA - - 2 - - - NO - NO - IBCocoaTouchFramework - - - - 292 - - YES - - - 292 - {{0, 61}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - mic_active.png - - - - NSImage - mic_muted.png - - - - - - - - 292 - {{0, 121}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - NSImage - pausecall.png - - - - - - - - - 292 - {{6, 261}, {258, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{90, 115}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - contact-orange.png - - - - - - - 292 - {{93, 61}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - dialer-orange.png - - - - - - - 292 - {{181, 61}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - Speaker-32-off.png - - - - - - {{25, 110}, {270, 317}} - - - - - 3 - MSAwAA - + MC4yNAA NO NO @@ -669,11 +711,8 @@ {{0, 20}, {320, 460}} - - - 1 - MC44MDAwMDAwMTE5IDAuODAwMDAwMDExOSAwLjgwMDAwMDAxMTkAA - + + NO IBCocoaTouchFramework @@ -699,35 +738,27 @@ - controlSubView + endCtrl - + - 44 + 99 - padSubView + star - + - 45 + 56 - dialer + two - + - 49 - - - - close - - - - 51 + 59 @@ -739,19 +770,11 @@ - zero + four - + - 55 - - - - star - - - - 56 + 67 @@ -771,43 +794,19 @@ - two + padSubView - + - 59 + 45 - three + zero - + - 60 - - - - four - - - - 67 - - - - five - - - - 69 - - - - six - - - - 71 + 55 @@ -817,6 +816,22 @@ 73 + + + three + + + + 60 + + + + close + + + + 51 + eight @@ -825,6 +840,46 @@ 75 + + + six + + + + 71 + + + + five + + + + 69 + + + + hangUpView + + + + 122 + + + + callTableView + + + + 109 + + + + controlSubView + + + + 44 + mute @@ -833,6 +888,30 @@ 80 + + + addCall + + + + 112 + + + + dialer + + + + 49 + + + + pause + + + + 115 + speaker @@ -851,59 +930,19 @@ - peerName - - - - 89 - - - - peerNumber - - - - 90 - - - - callDuration - - - - 91 - - - - status - - - - 94 - - - - endPad - - - - 98 - - - - endCtrl - - - - 99 - - - - pause + mergeCalls - 105 + 114 + + + + addVideo + + + + 125 @@ -932,6 +971,22 @@ 101 + + + dataSource + + + + 107 + + + + delegate + + + + 108 + @@ -969,48 +1024,156 @@ YES - - - - + - + + - 10 - + 120 + + + YES + + - peerName - 11 - - - peerNumber + 18 + + + end - 12 - + 27 + + + YES + + + + + + + + + + + + + + + + pad + + + 31 + + + star + + + 30 + + + 1 + + + 33 + + + 8 + + + 40 + + + hash + + + 36 + + + 5 + + + 29 + + + close + + + 39 + + + 2 + + + 41 + + + 0 + + + 38 + + + 3 + + + 35 + + + 4 + + + 37 + + + 6 + + + 34 + + + 7 + + + 32 + + + 9 + + + 106 + - duration 26 YES - - + + + + - + controls + + 113 + + + pauseresume + 13 @@ -1024,10 +1187,16 @@ dialer - 18 - + 15 + - end + contacts + + + 111 + + + addcall 16 @@ -1035,130 +1204,17 @@ mute - - 15 - - - contacts - - - 27 - - - YES - - - - - - - - - - - - - - - - - pad - - - 28 - - - end - - - 29 - - - close - - - 30 - - - 1 - - - 31 - - - star - - - 32 - - - 9 - - - 33 - - - 8 - - - 34 - - - 7 - - - 35 - - - 4 - - - 36 - - - 5 - - - 37 - - - 6 - - - 38 - - - 3 - - - 39 - - - 2 - - - 40 - - - hash - - - 41 - - - 0 - - - 93 - - - status - 104 - pauseresume + merge + + + 123 + + + video @@ -1170,25 +1226,29 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 10.IBPluginDependency - 104.CustomClassName 104.IBPluginDependency - 11.IBPluginDependency - 12.CustomClassName - 12.IBPluginDependency + 104.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 106.IBPluginDependency + 111.IBPluginDependency + 111.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 113.IBPluginDependency + 113.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 120.IBPluginDependency + 123.CustomClassName + 123.IBPluginDependency 13.CustomClassName 13.IBPluginDependency + 13.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 15.IBPluginDependency 16.CustomClassName 16.IBPluginDependency + 16.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 17.IBPluginDependency 18.CustomClassName 18.IBPluginDependency 2.IBPluginDependency 26.IBPluginDependency 27.IBPluginDependency - 28.CustomClassName - 28.IBPluginDependency 29.IBPluginDependency 30.CustomClassName 30.IBPluginDependency @@ -1212,10 +1272,10 @@ 39.IBPluginDependency 40.CustomClassName 40.IBPluginDependency + 40.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 41.CustomClassName 41.IBPluginDependency 9.IBPluginDependency - 93.IBPluginDependency YES @@ -1224,24 +1284,28 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIPauseResumeButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDuration + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIAddVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMuteButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIHangUpButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1265,10 +1329,10 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1283,7 +1347,7 @@ - 105 + 125 @@ -1306,36 +1370,55 @@ YES YES - callDuration + addCall + addToConf + addVideo + callControlSubView + callTableView close contacts controlSubView dialer eight endCtrl - endPad five four + hangUpView hash + mergeCalls mute nine one padSubView pause - peerName - peerNumber seven six speaker star - status three two + videoViewController zero YES - UILabel + UIButton + UIButton + UIButton + UIView + UITableView + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton UIButton UIButton UIView @@ -1346,20 +1429,7 @@ UIButton UIButton UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UILabel - UILabel - UIButton - UIButton - UIButton - UIButton - UILabel - UIButton - UIButton + VideoViewController UIButton @@ -1367,38 +1437,57 @@ YES YES - callDuration + addCall + addToConf + addVideo + callControlSubView + callTableView close contacts controlSubView dialer eight endCtrl - endPad five four + hangUpView hash + mergeCalls mute nine one padSubView pause - peerName - peerNumber seven six speaker star - status three two + videoViewController zero YES - callDuration - UILabel + addCall + UIButton + + + addToConf + UIButton + + + addVideo + UIButton + + + callControlSubView + UIView + + + callTableView + UITableView close @@ -1424,10 +1513,6 @@ endCtrl UIButton - - endPad - UIButton - five UIButton @@ -1436,10 +1521,18 @@ four UIButton + + hangUpView + UIView + hash UIButton + + mergeCalls + UIButton + mute UIButton @@ -1460,14 +1553,6 @@ pause UIButton - - peerName - UILabel - - - peerNumber - UILabel - seven UIButton @@ -1484,10 +1569,6 @@ star UIButton - - status - UILabel - three UIButton @@ -1496,6 +1577,10 @@ two UIButton + + videoViewController + VideoViewController + zero UIButton @@ -1507,6 +1592,33 @@ ./Classes/IncallViewController.h + + UIAddVideoButton + UIButton + + IBProjectSource + ./Classes/UIAddVideoButton.h + + + + UICamSwitch + UIButton + + preview + UIView + + + preview + + preview + UIView + + + + IBProjectSource + ./Classes/UICamSwitch.h + + UIDigitButton UIButton @@ -1515,14 +1627,6 @@ ./Classes/UIDigitButton.h - - UIDuration - UILabel - - IBProjectSource - ./Classes/UIDuration.h - - UIHangUpButton UIButton @@ -1539,14 +1643,6 @@ ./Classes/UIMuteButton.h - - UIPauseResumeButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseResumeButton.h - - UISpeakerButton UIToggleButton @@ -1563,6 +1659,116 @@ ./Classes/UIToggleButton.h + + VideoViewController + UIViewController + + YES + + YES + mCamSwitch + mCamSwitchLand + mDisplay + mDisplayLand + mHangUp + mHangUpLand + mLandscape + mMute + mMuteLand + mPortrait + mPreview + mPreviewLand + + + YES + UICamSwitch + UICamSwitch + UIView + UIView + UIHangUpButton + UIHangUpButton + UIView + UIMuteButton + UIMuteButton + UIView + UIView + UIView + + + + YES + + YES + mCamSwitch + mCamSwitchLand + mDisplay + mDisplayLand + mHangUp + mHangUpLand + mLandscape + mMute + mMuteLand + mPortrait + mPreview + mPreviewLand + + + YES + + mCamSwitch + UICamSwitch + + + mCamSwitchLand + UICamSwitch + + + mDisplay + UIView + + + mDisplayLand + UIView + + + mHangUp + UIHangUpButton + + + mHangUpLand + UIHangUpButton + + + mLandscape + UIView + + + mMute + UIMuteButton + + + mMuteLand + UIMuteButton + + + mPortrait + UIView + + + mPreview + UIView + + + mPreviewLand + UIView + + + + + IBProjectSource + ./Classes/VideoViewController.h + + 0 @@ -1571,10 +1777,6 @@ com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 @@ -1585,22 +1787,38 @@ YES YES - Speaker-32-off.png - contact-orange.png - dialer-orange.png + HP.png + HP_inverse.png + ajouter.png + clavier-01-106px.png + clavier-01-160px.png + clavier.png + conf_merge.png + contact.png + grouper.png mic_active.png - mic_muted.png - pausecall.png + micro.png + micro_inverse.png + pause.png + pause_inactif.png stopcall-red.png YES - {32, 32} - {25, 23} - {25, 24} + {164, 104} + {164, 104} + {164, 104} + {106, 60} + {160, 60} + {164, 104} + {82, 75} + {164, 104} + {164, 104} {20, 20} - {20, 20} - {25, 23} + {164, 104} + {164, 104} + {164, 104} + {164, 104} {62, 54} diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 5344f5f50..dcb97b6b7 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -24,6 +24,7 @@ #import "ConsoleViewController.h" #import "MoreViewController.h" +#include "CallHistoryTableViewController.h" #include "LinphoneManager.h" @@ -51,10 +52,16 @@ return; } - NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]]; - NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"]; - + NSMutableDictionary *rootSettings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]]; + NSMutableDictionary *audioSettings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"audio.plist"]]; + NSMutableDictionary *videoSettings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"video.plist"]]; + + NSMutableArray *preferences = [rootSettings objectForKey:@"PreferenceSpecifiers"]; + [preferences addObjectsFromArray:[audioSettings objectForKey:@"PreferenceSpecifiers"]]; + [preferences addObjectsFromArray:[videoSettings objectForKey:@"PreferenceSpecifiers"]]; + NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]]; + for(NSDictionary *prefSpecification in preferences) { NSString *key = [prefSpecification objectForKey:@"Key"]; if(key && [prefSpecification objectForKey:@"DefaultValue"]) { @@ -67,11 +74,8 @@ #ifdef HAVE_AMR @"YES",@"amr_8k_preference", // enable amr by default if compiled with #endif -#ifdef HAVE_SILK - @"YES",@"silk_16k_preference", // enable amr by default if compiled with - @"YES",@"silk_24k_preference", // enable amr by default if compiled with -#endif - //@"+33",@"countrycode_preference", + @"NO",@"debugenable_preference", + //@"+33",@"countrycode_preference", nil]; [defaultsToRegister addEntriesFromDictionary:appDefaults]; @@ -142,9 +146,14 @@ [super dealloc]; } - - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { - linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); + LinphoneCall* call; + [(NSData*)([notification.userInfo objectForKey:@"call"]) getBytes:&call]; + if (!call) { + ms_warning("Local notification received with nil call"); + return; + } + linphone_core_accept_call([LinphoneManager getLc], call); } diff --git a/Classes/LinphoneUI/FastAddressBook.h b/Classes/LinphoneUI/FastAddressBook.h index 5d11bb65c..65713ad35 100644 --- a/Classes/LinphoneUI/FastAddressBook.h +++ b/Classes/LinphoneUI/FastAddressBook.h @@ -30,7 +30,9 @@ @end @interface FastAddressBook : NSObject { - NSMutableDictionary* mAddressBookMap; + NSMutableDictionary* mAddressBookMap; + + ABAddressBookRef addressBook; } -(Contact*) getMatchingRecord:(NSString*) number ; @@ -38,4 +40,6 @@ +(NSString*) normalizePhoneNumber:(NSString*) number ; -(id) init ; +@property (nonatomic, readonly) ABAddressBookRef addressBook; + @end diff --git a/Classes/LinphoneUI/FastAddressBook.m b/Classes/LinphoneUI/FastAddressBook.m index 527381597..c08762045 100644 --- a/Classes/LinphoneUI/FastAddressBook.m +++ b/Classes/LinphoneUI/FastAddressBook.m @@ -20,6 +20,8 @@ #import "FastAddressBook.h" @implementation FastAddressBook +@synthesize addressBook; + -(Contact*) getMatchingRecord:(NSString*) number { @synchronized (mAddressBookMap){ return (Contact*) [mAddressBookMap objectForKey:number]; @@ -71,9 +73,9 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void -(FastAddressBook*) init { if ((self = [super init])) { mAddressBookMap = [[NSMutableDictionary alloc] init]; - ABAddressBookRef lAddressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback (lAddressBook,sync_address_book,mAddressBookMap); - sync_address_book(lAddressBook,nil,mAddressBookMap); + addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback (addressBook,sync_address_book,mAddressBookMap); + sync_address_book(addressBook,nil,mAddressBookMap); } return self; } diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 2b9774492..604875d08 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -40,7 +40,6 @@ typedef enum _TunnelMode { @private SCNetworkReachabilityContext proxyReachabilityContext; SCNetworkReachabilityRef proxyReachability; - CFReadStreamRef mReadStream; NSTimer* mIterateTimer; id mLogView; bool isbackgroundModeEnabled; @@ -51,7 +50,8 @@ typedef enum _TunnelMode { Connectivity connectivity; FastAddressBook* mFastAddressBook; TunnelMode tunnelMode; - + const char* frontCamId; + const char* backCamId; } +(LinphoneManager*) instance; +(LinphoneCore*) getLc; @@ -66,11 +66,17 @@ typedef enum _TunnelMode { -(void) becomeActive; -(void) kickOffNetworkConnection; -(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; +-(UIImage*) getImageFromAddressBook:(NSString*) number; + + @property (nonatomic, retain) id callDelegate; @property (nonatomic, retain) id registrationDelegate; @property Connectivity connectivity; @property TunnelMode tunnelMode; +@property (readonly) const char* frontCamId; +@property (readonly) const char* backCamId; + @end diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index adcafa3a0..9e0b9cd75 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -42,14 +42,24 @@ extern "C" void libmsilbc_init(); #ifdef HAVE_AMR extern void libmsamr_init(); #endif + +#ifdef HAVE_X264 +extern void libmsx264_init(); +#endif +#define FRONT_CAM_NAME "AV Capture: Front Camera" +#define BACK_CAM_NAME "AV Capture: Back Camera" + #if defined (HAVE_SILK) extern void libmssilk_init(); #endif + @implementation LinphoneManager @synthesize callDelegate; @synthesize registrationDelegate; @synthesize connectivity; @synthesize tunnelMode; +@synthesize frontCamId; +@synthesize backCamId; -(id) init { if ((self= [super init])) { @@ -97,6 +107,28 @@ extern void libmssilk_init(); return nil; } + +-(UIImage*) getImageFromAddressBook:(NSString *)number { + NSString* lNormalizedNumber = [FastAddressBook normalizePhoneNumber:number]; + Contact* lContact = [mFastAddressBook getMatchingRecord:lNormalizedNumber]; + if (lContact) { + ABRecordRef person = ABAddressBookGetPersonWithRecordID(mFastAddressBook.addressBook, ABRecordGetRecordID(lContact.record)); + if (ABPersonHasImageData(person)) { + NSData* d; + // ios 4.1+ + if ( &ABPersonCopyImageDataWithFormat != nil) { + d = (NSData*)ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail); + } else { + d = (NSData*)ABPersonCopyImageData(person); + } + return [UIImage imageWithData:d]; + } + } + /* return default image */ + return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"contact_vide" ofType:@"png"]]; + //return nil; +} + -(void) updateCallWithAddressBookData:(LinphoneCall*) call { //1 copy adress book LinphoneCallLog* lLog = linphone_call_get_call_log(call); @@ -122,31 +154,45 @@ extern void libmssilk_init(); } return; } --(void) onCall:(LinphoneCall*) currentCall StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message { - const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(currentCall)); - NSString* lUserName = lUserNameChars?[[NSString alloc] initWithCString:lUserNameChars]:NSLocalizedString(@"Unknown",nil); +-(void) onCall:(LinphoneCall*) call StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message { + const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* lUserName = lUserNameChars?[[NSString alloc] initWithUTF8String:lUserNameChars]:NSLocalizedString(@"Unknown",nil); if (new_state == LinphoneCallIncomingReceived) { - [self updateCallWithAddressBookData:currentCall]; // display name is updated + [self updateCallWithAddressBookData:call]; // display name is updated } - const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(currentCall)); - NSString* lDisplayName = lDisplayNameChars?[[NSString alloc] initWithCString:lDisplayNameChars]:@""; + const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); + NSString* lDisplayName = lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@""; + + bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); switch (new_state) { + case LinphoneCallStreamsRunning: + //check video + if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + [callDelegate displayVideoCall:call FromUI:mCurrentViewController + forUser:lUserName + withDisplayName:lDisplayName]; + } + break; + case LinphoneCallIncomingReceived: - [callDelegate displayIncomingCallNotigicationFromUI:mCurrentViewController + [callDelegate displayIncomingCall:call + NotificationFromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName]; break; case LinphoneCallOutgoingInit: - [callDelegate displayCallInProgressFromUI:mCurrentViewController + [callDelegate displayCall:call + InProgressFromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName]; break; case LinphoneCallConnected: - [callDelegate displayIncallFromUI:mCurrentViewController + [callDelegate displayInCall: call + FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName]; break; @@ -179,15 +225,29 @@ extern void libmssilk_init(); cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) otherButtonTitles:nil]; [error show]; - [callDelegate displayDialerFromUI:mCurrentViewController + if (canHideInCallView) { + [callDelegate displayDialerFromUI:mCurrentViewController forUser:@"" withDisplayName:@""]; + } else { + [callDelegate displayInCall:call + FromUI:mCurrentViewController + forUser:lUserName + withDisplayName:lDisplayName]; + } break; } - case LinphoneCallEnd: - [callDelegate displayDialerFromUI:mCurrentViewController + case LinphoneCallEnd: + if (canHideInCallView) { + [callDelegate displayDialerFromUI:mCurrentViewController forUser:@"" withDisplayName:@""]; + } else { + [callDelegate displayInCall:call + FromUI:mCurrentViewController + forUser:lUserName + withDisplayName:lDisplayName]; + } break; default: break; @@ -254,9 +314,9 @@ static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, Lin -(void) onRegister:(LinphoneCore *)lc cfg:(LinphoneProxyConfig*) cfg state:(LinphoneRegistrationState) state message:(const char*) message { LinphoneAddress* lAddress = linphone_address_new(linphone_proxy_config_get_identity(cfg)); - NSString* lUserName = linphone_address_get_username(lAddress)? [[NSString alloc] initWithCString:linphone_address_get_username(lAddress) ]:@""; - NSString* lDisplayName = linphone_address_get_display_name(lAddress)? [[NSString alloc] initWithCString:linphone_address_get_display_name(lAddress) ]:@""; - NSString* lDomain = [[NSString alloc] initWithCString:linphone_address_get_domain(lAddress)]; + NSString* lUserName = linphone_address_get_username(lAddress)? [[NSString alloc] initWithUTF8String:linphone_address_get_username(lAddress) ]:@""; + NSString* lDisplayName = linphone_address_get_display_name(lAddress)? [[NSString alloc] initWithUTF8String:linphone_address_get_display_name(lAddress) ]:@""; + NSString* lDomain = [[NSString alloc] initWithUTF8String:linphone_address_get_domain(lAddress)]; linphone_address_destroy(lAddress); if (state == LinphoneRegistrationOk) { @@ -448,7 +508,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach const char* password = [accountPassword cStringUsingEncoding:[NSString defaultCStringEncoding]]; NSString* proxyAddress = [[NSUserDefaults standardUserDefaults] stringForKey:@"proxy_preference"]; - if ((!proxyAddress | [proxyAddress length] <1 ) && domain) { + if ((!proxyAddress || [proxyAddress length] <1 ) && domain) { proxyAddress = [NSString stringWithFormat:@"sip:%@",domain] ; } else { proxyAddress = [NSString stringWithFormat:@"sip:%@",proxyAddress] ; @@ -555,20 +615,41 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //read codecs from setting bundle and enable them one by one if ([self isNotIphone3G]) { - [self configurePayloadType:"speex" fromPrefKey:@"speex_16k_preference" withRate:16000]; - [self configurePayloadType:"speex" fromPrefKey:@"speex_8k_preference" withRate:8000]; + [self configurePayloadType:"SILK" fromPrefKey:@"silk_24k_preference" withRate:24000]; } - else - { - ms_message("SPEEX codecs deactivated"); + else { + ms_message("SILK 24khz codec deactivated"); } - [self configurePayloadType:"SILK" fromPrefKey:@"silk_24k_preference" withRate:24000]; + [self configurePayloadType:"speex" fromPrefKey:@"speex_16k_preference" withRate:16000]; + [self configurePayloadType:"speex" fromPrefKey:@"speex_8k_preference" withRate:8000]; [self configurePayloadType:"SILK" fromPrefKey:@"silk_16k_preference" withRate:16000]; [self configurePayloadType:"AMR" fromPrefKey:@"amr_8k_preference" withRate:8000]; [self configurePayloadType:"GSM" fromPrefKey:@"gsm_8k_preference" withRate:8000]; [self configurePayloadType:"iLBC" fromPrefKey:@"ilbc_preference" withRate:8000]; [self configurePayloadType:"PCMU" fromPrefKey:@"pcmu_preference" withRate:8000]; [self configurePayloadType:"PCMA" fromPrefKey:@"pcma_preference" withRate:8000]; + [self configurePayloadType:"G722" fromPrefKey:@"g722_preference" withRate:8000]; + + //get video codecs from linphonerc + const MSList *videoCodecs=linphone_core_get_video_codecs(theLinphoneCore); + //disable video all codecs + for (elem=videoCodecs;elem!=NULL;elem=elem->next){ + pt=(PayloadType*)elem->data; + linphone_core_enable_payload_type(theLinphoneCore,pt,FALSE); + } + [self configurePayloadType:"MP4V-ES" fromPrefKey:@"mp4v-es_preference" withRate:90000]; + [self configurePayloadType:"H264" fromPrefKey:@"h264_preference" withRate:90000]; + [self configurePayloadType:"VP8" fromPrefKey:@"vp8_preference" withRate:90000]; + + if ([self isNotIphone3G]) { + bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + linphone_core_enable_video(theLinphoneCore, enableVideo, enableVideo); + } else { + linphone_core_enable_video(theLinphoneCore, FALSE, FALSE); + ms_warning("Disable video for phones prior to iPhone 3GS"); + } + bool enableSrtp = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_srtp_preference"]; + linphone_core_set_media_encryption(theLinphoneCore, enableSrtp?LinphoneMediaEncryptionSRTP:LinphoneMediaEncryptionNone); UIDevice* device = [UIDevice currentDevice]; bool backgroundSupported = false; @@ -580,7 +661,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } else { isbackgroundModeEnabled=false; } - + } - (BOOL)isNotIphone3G { @@ -588,7 +669,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = (char*)malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); - NSString *platform = [NSString stringWithCString:machine]; + NSString *platform = [[NSString alloc ] initWithUTF8String:machine]; free(machine); return ![platform isEqualToString:@"iPhone1,2"]; @@ -601,7 +682,9 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } -(void) destroyLibLinphone { - [mIterateTimer invalidate]; + [mIterateTimer invalidate]; + AVAudioSession *audioSession = [AVAudioSession sharedInstance]; + [audioSession setDelegate:nil]; if (theLinphoneCore != nil) { //just in case application terminate before linphone core initialization linphone_core_destroy(theLinphoneCore); theLinphoneCore = nil; @@ -617,13 +700,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //**********************BG mode management*************************/////////// -(void) enterBackgroundMode { - - struct addrinfo hints; - struct addrinfo *res=NULL; - int err; - LinphoneProxyConfig* proxyCfg; - LinphoneAddress *addr; linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); linphone_core_stop_dtmf_stream(theLinphoneCore); @@ -663,39 +740,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_error("cannot get current transport"); } - if (mReadStream == nil && transportValue.udp_port>0) { //only for udp - int sipsock = linphone_core_get_sip_socket(theLinphoneCore); - //disable keepalive handler - linphone_core_enable_keep_alive(theLinphoneCore, false); - const char *port; - addr=linphone_address_new(linphone_proxy_config_get_addr(proxyCfg)); - memset(&hints,0,sizeof(hints)); - hints.ai_family=linphone_core_ipv6_enabled(theLinphoneCore) ? AF_INET6 : AF_INET; - port=linphone_address_get_port(addr); - if (port==NULL) port="5060"; - err=getaddrinfo(linphone_address_get_domain(addr),port,&hints,&res); - if (err!=0){ - ms_error("getaddrinfo() failed for %s: %s",linphone_address_get_domain(addr),gai_strerror(err)); - linphone_address_destroy(addr); - return; - } - err=connect(sipsock,res->ai_addr,res->ai_addrlen); - if (err==-1){ - ms_error("Connect failed: %s",strerror(errno)); - } - freeaddrinfo(res); - - CFStreamCreatePairWithSocket(NULL, (CFSocketNativeHandle)sipsock, &mReadStream,nil); - - if (!CFReadStreamSetProperty(mReadStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP)) { - ms_error("cannot set service type to voip for read stream"); - } - - - if (!CFReadStreamOpen(mReadStream)) { - ms_error("cannot open read stream"); - } - } } else { ms_warning("Entering lite bg mode"); @@ -741,9 +785,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach #endif #ifdef HAVE_AMR libmsamr_init(); //load amr plugin if present from the liblinphone sdk -#endif /* - * Initialize linphone core - */ +#endif +#ifdef HAVE_X264 + libmsx264_init(); //load x264 plugin if present from the liblinphone sdk +#endif + /* Initialize linphone core*/ linphonec_vtable.show =NULL; linphonec_vtable.call_state_changed =(LinphoneCallStateCb)linphone_iphone_call_state; @@ -773,11 +819,17 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach proxyReachabilityContext.info=self; //initial state is network off should be done as soon as possible SCNetworkReachabilityFlags flags; - SCNetworkReachabilityGetFlags(proxyReachability, &flags); + if (!SCNetworkReachabilityGetFlags(proxyReachability, &flags)) { + ms_error("Cannot get reachability flags"); + }; networkReachabilityCallBack(proxyReachability,flags,self); - SCNetworkReachabilitySetCallback(proxyReachability, (SCNetworkReachabilityCallBack)networkReachabilityCallBack,&proxyReachabilityContext); - SCNetworkReachabilityScheduleWithRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); + if (!SCNetworkReachabilitySetCallback(proxyReachability, (SCNetworkReachabilityCallBack)networkReachabilityCallBack,&proxyReachabilityContext)){ + ms_error("Cannot register reachability cb"); + }; + if(!SCNetworkReachabilityScheduleWithRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)){ + ms_error("Cannot register schedule reachability cb"); + }; [self doLinphoneConfiguration:nil]; [[NSNotificationCenter defaultCenter] addObserver:self @@ -795,6 +847,8 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach BOOL bAudioInputAvailable= [audioSession inputIsAvailable]; [audioSession setDelegate:self]; + NSError* err; + [audioSession setActive:NO error: &err]; if(!bAudioInputAvailable){ UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"No microphone",nil) message:NSLocalizedString(@"You need to plug a microphone to your device to use this application.",nil) @@ -803,12 +857,30 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach otherButtonTitles:nil ,nil]; [error show]; } + /*DETECT cameras*/ + frontCamId= backCamId=nil; + char** camlist = (char**)linphone_core_get_video_devices(theLinphoneCore); + for (char* cam = *camlist;*camlist!=NULL;cam=*++camlist) { + if (strcmp(FRONT_CAM_NAME, cam)==0) { + frontCamId = cam; + //great set default cam to front + linphone_core_set_video_device(theLinphoneCore, cam); + } + if (strcmp(BACK_CAM_NAME, cam)==0) { + backCamId = cam; + } + + } + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { //go directly to bg mode [self enterBackgroundMode]; } + ms_warning("Linphone [%s] started on [%s]" + ,linphone_core_get_version() + ,[[UIDevice currentDevice].model cStringUsingEncoding:[NSString defaultCStringEncoding]] ); } -(void) becomeActive { @@ -824,25 +896,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach /*IOS specific*/ linphone_core_start_dtmf_stream(theLinphoneCore); - LCSipTransports transportValue; - if (linphone_core_get_sip_transports(theLinphoneCore, &transportValue)) { - ms_error("cannot get current transport"); - } - if (transportValue.udp_port != 0) { - //enable sip keepalive - linphone_core_enable_keep_alive(theLinphoneCore, true); - } - if (mReadStream !=nil) { - //unconnect - int socket = linphone_core_get_sip_socket(theLinphoneCore); - struct sockaddr hints; - memset(&hints,0,sizeof(hints)); - hints.sa_family=AF_UNSPEC; - connect(socket,&hints,sizeof(hints)); - CFReadStreamClose(mReadStream); - CFRelease(mReadStream); - mReadStream=nil; - } } -(void) registerLogView:(id) view { mLogView = view; @@ -865,7 +918,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_resume_call(theLinphoneCore, (LinphoneCall*) c->data); } - [callDelegate updateUIFromLinphoneState:mCurrentViewController]; } + @end diff --git a/Classes/LinphoneUI/LinphoneUIDelegates.h b/Classes/LinphoneUI/LinphoneUIDelegates.h index 081139167..1f2938cfe 100644 --- a/Classes/LinphoneUI/LinphoneUIDelegates.h +++ b/Classes/LinphoneUI/LinphoneUIDelegates.h @@ -17,15 +17,15 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import - +#include "linphonecore.h" @protocol LinphoneUICallDelegate // UI changes -(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) displayCallInProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl; +-(void) displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; +-(void) displayIncomingCall: (LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; +-(void) displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; +-(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; //status reporting -(void) displayStatus:(NSString*) message; @end diff --git a/Classes/AdvancedPhoneViewController.h b/Classes/LinphoneUI/UIAddVideoButton.h similarity index 74% rename from Classes/AdvancedPhoneViewController.h rename to Classes/LinphoneUI/UIAddVideoButton.h index 411c90615..275de0672 100644 --- a/Classes/AdvancedPhoneViewController.h +++ b/Classes/LinphoneUI/UIAddVideoButton.h @@ -1,6 +1,6 @@ -/* AdvancedPhoneViewController.h +/* UIAddVideoButton.h * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * Copyright (C) 2011 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 @@ -10,19 +10,15 @@ * 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. + * 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 -#import "PhoneViewController.h" - - -@interface AdvancedPhoneViewController : PhoneViewController { - IncallViewController* mIncallViewController; -} +@interface UIAddVideoButton : UIButton +- (id)initWithCoder:(NSCoder *)decoder; @end diff --git a/Classes/LinphoneUI/UIAddVideoButton.m b/Classes/LinphoneUI/UIAddVideoButton.m new file mode 100644 index 000000000..e34cdfb8f --- /dev/null +++ b/Classes/LinphoneUI/UIAddVideoButton.m @@ -0,0 +1,58 @@ +/* UIAddVideoButton.m + * + * Copyright (C) 2011 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 "UIAddVideoButton.h" +#include "LinphoneManager.h" + +@implementation UIAddVideoButton + +-(void) touchUp:(id) sender { + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + if (call) { + LinphoneCallParams* call_params = linphone_call_params_copy(linphone_call_get_current_params(call)); + linphone_call_params_enable_video(call_params, TRUE); + linphone_core_update_call(lc, call, call_params); + linphone_call_params_destroy(call_params); + } { + ms_warning("Cannot add video, because no current call"); + } +} + +- (id) init { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; + return self; +} +- (id)initWithFrame:(CGRect)frame { + + self = [super initWithFrame:frame]; + if (self) { + [self init]; + } + return self; +} +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self init]; + } + return self; +} + +@end diff --git a/Classes/LinphoneUI/UIBluetoothButton.m b/Classes/LinphoneUI/UIBluetoothButton.m index 539422c2c..4f3248a39 100644 --- a/Classes/LinphoneUI/UIBluetoothButton.m +++ b/Classes/LinphoneUI/UIBluetoothButton.m @@ -23,14 +23,14 @@ @implementation UIBluetoothButton #define check_auresult(au,method) \ -if (au!=0) ms_error("UIBluetoothButton error for %s: ret=%i",method,au) +if (au!=0) ms_error("UIBluetoothButton error for %s: ret=%ld",method,au) -(void) onOn { //redirect audio to bluetooth UInt32 size = sizeof(CFStringRef); CFStringRef route="HeadsetBT"; - OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioRoute, &size, &route); + OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioRoute, size, &route); check_auresult(result,"set kAudioSessionProperty_AudioRoute HeadsetBT"); int allowBluetoothInput = 1; diff --git a/Classes/LinphoneUI/UICallButton.h b/Classes/LinphoneUI/UICallButton.h index 9593c546e..08301ae5c 100644 --- a/Classes/LinphoneUI/UICallButton.h +++ b/Classes/LinphoneUI/UICallButton.h @@ -24,7 +24,6 @@ @private char mDigit; UITextField* mAddress; - UILabel* mDisplayName; } --(void) initWithAddress:(UITextField*) address withDisplayName:(UILabel*) displayName; +-(void) initWithAddress:(UITextField*) address; @end diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index 1a12e3e0e..7846548d8 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -32,14 +32,17 @@ [error show]; return; } - if (!linphone_core_in_call([LinphoneManager getLc])) { + if (TRUE /*!linphone_core_in_call([LinphoneManager getLc])*/) { LinphoneProxyConfig* proxyCfg; //get default proxy linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + bool startVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"start_video_preference"]; + LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); + linphone_call_params_enable_video(lcallParams,startVideo&linphone_core_video_enabled([LinphoneManager getLc])); if ([mAddress.text length] == 0) return; //just return if ([mAddress.text hasPrefix:@"sip:"]) { - linphone_core_invite([LinphoneManager getLc], [mAddress.text cStringUsingEncoding:[NSString defaultCStringEncoding]]); + linphone_core_invite_with_params([LinphoneManager getLc],[mAddress.text cStringUsingEncoding:[NSString defaultCStringEncoding]],lcallParams); } else if ( proxyCfg==nil){ UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) @@ -51,19 +54,20 @@ } else { char normalizedUserName[256]; NSString* toUserName = [NSString stringWithString:[mAddress text]]; - if ([mDisplayName.text length] <=0) { - NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; - if (lDisplayName) { - mDisplayName.text = lDisplayName; - } - } + NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; + linphone_proxy_config_normalize_number(proxyCfg,[toUserName cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); LinphoneAddress* tmpAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); linphone_address_set_username(tmpAddress,normalizedUserName); - linphone_address_set_display_name(tmpAddress,[mDisplayName.text length]>0?[mDisplayName.text cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); - linphone_core_invite([LinphoneManager getLc],linphone_address_as_string(tmpAddress)) ; + linphone_address_set_display_name(tmpAddress,(lDisplayName)?[lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); + + + + linphone_core_invite_address_with_params([LinphoneManager getLc],tmpAddress,lcallParams) ; + linphone_address_destroy(tmpAddress); } + linphone_call_params_destroy(lcallParams); } else if (linphone_core_inc_invite_pending([LinphoneManager getLc])) { linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); } @@ -78,9 +82,8 @@ // Drawing code. } */ --(void) initWithAddress:(UITextField*) address withDisplayName:(UILabel*) displayName { +-(void) initWithAddress:(UITextField*) address{ mAddress=[address retain]; - mDisplayName = [displayName retain]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; } diff --git a/Classes/LinphoneUI/UICamSwitch.h b/Classes/LinphoneUI/UICamSwitch.h new file mode 100644 index 000000000..beaab07e6 --- /dev/null +++ b/Classes/LinphoneUI/UICamSwitch.h @@ -0,0 +1,31 @@ +/* UICamSwitch.h + * + * Copyright (C) 2011 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 + + +@interface UICamSwitch : UIButton { + +@private + char* currentCamId; + char* nextCamId; + UIView* preview; +} +@property (nonatomic, retain) IBOutlet UIView* preview; +@end diff --git a/Classes/LinphoneUI/UICamSwitch.m b/Classes/LinphoneUI/UICamSwitch.m new file mode 100644 index 000000000..aaa3032e3 --- /dev/null +++ b/Classes/LinphoneUI/UICamSwitch.m @@ -0,0 +1,80 @@ +/* UICamSwitch.m + * + * Copyright (C) 2011 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 "UICamSwitch.h" +#include "LinphoneManager.h" + + +@implementation UICamSwitch +@synthesize preview; +-(void) touchUp:(id) sender { + if (nextCamId!=currentCamId) { + ms_message("Swithcing from [%s] to [%s]",currentCamId,nextCamId); + linphone_core_set_video_device([LinphoneManager getLc], nextCamId); + nextCamId=currentCamId; + currentCamId = linphone_core_get_video_device([LinphoneManager getLc]); + linphone_core_update_call([LinphoneManager getLc] + , linphone_core_get_current_call([LinphoneManager getLc]) + ,NULL); + linphone_core_set_native_preview_window_id([LinphoneManager getLc],preview); + } +} + +- (id) init { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; + currentCamId = (char*)linphone_core_get_video_device([LinphoneManager getLc]); + if ([LinphoneManager instance].frontCamId !=nil ) { + //ok, we have 2 cameras + if (strcmp(currentCamId,[LinphoneManager instance].frontCamId)==0) { + nextCamId = [LinphoneManager instance].backCamId; + } else { + nextCamId = [LinphoneManager instance].frontCamId; + } + } else { + nextCamId=currentCamId; + } + return self; +} +- (id)initWithFrame:(CGRect)frame { + + self = [super initWithFrame:frame]; + if (self) { + [self init]; + } + return self; +} +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self init]; + } + return self; +} + + +- (void)dealloc { + [super dealloc]; + [preview release]; +} + + + + + +@end diff --git a/Classes/LinphoneUI/UIDigitButton.h b/Classes/LinphoneUI/UIDigitButton.h index 08b3a813b..70f7aee18 100644 --- a/Classes/LinphoneUI/UIDigitButton.h +++ b/Classes/LinphoneUI/UIDigitButton.h @@ -23,9 +23,14 @@ @private char mDigit; UITextField* mAddress; + + bool_t sendDtmfDuringCall; } -(void) initWithNumber:(char)digit ; --(void) initWithNumber:(char)digit addressField:(UITextField*) address; +-(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool_t)send; + + +@property bool_t sendDtmfDuringCall; @end diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index a4660f11a..2a0cad86c 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -23,11 +23,12 @@ @implementation UIDigitButton +@synthesize sendDtmfDuringCall; -(void) touchDown:(id) sender { - if (mAddress && !linphone_core_in_call([LinphoneManager getLc])) { + if (mAddress && (!sendDtmfDuringCall || !linphone_core_in_call([LinphoneManager getLc]))) { NSString* newAddress = [NSString stringWithFormat:@"%@%c",mAddress.text,mDigit]; [mAddress setText:newAddress]; linphone_core_play_dtmf([LinphoneManager getLc], mDigit, -1); @@ -60,9 +61,10 @@ } -(void) initWithNumber:(char)digit { - [self initWithNumber:digit addressField:nil]; + [self initWithNumber:digit addressField:nil dtmf:true]; } --(void) initWithNumber:(char)digit addressField:(UITextField*) address{ +-(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool_t)sendDtmf{ + sendDtmfDuringCall = sendDtmf; mDigit=digit ; mAddress=address?[address retain]:nil; [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; diff --git a/Classes/LinphoneUI/UIHangUpButton.m b/Classes/LinphoneUI/UIHangUpButton.m index 879276338..a7a291e61 100644 --- a/Classes/LinphoneUI/UIHangUpButton.m +++ b/Classes/LinphoneUI/UIHangUpButton.m @@ -23,7 +23,25 @@ @implementation UIHangUpButton -(void) touchUp:(id) sender { - linphone_core_terminate_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); + LinphoneCore* lc = [LinphoneManager getLc]; + if (!lc) + return; + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + + if (call) + linphone_core_terminate_call(lc,call); + else if (linphone_core_is_in_conference(lc)) { + linphone_core_terminate_conference(lc); + } else { + const MSList* calls = linphone_core_get_calls(lc); + if (ms_list_size(calls) == 1 + && !linphone_call_params_local_conference_mode(linphone_call_get_current_params((LinphoneCall*)(calls->data)))) { + //Only one call in the list, hangin up! + linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); + } else { + ms_message("Cannot make a decision on which call to terminate"); + } + } } - (id)initWithFrame:(CGRect)frame { diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index 49938a8f7..a65b21951 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -1,4 +1,4 @@ -/* UIHangUpButton.h +/* UILinphone.h * * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * @@ -26,4 +26,5 @@ #import "UIDuration.h" #import "UIEraseButton.h" #import "LinphoneUIDelegates.h" +#import "UICamSwitch.h" #import "UIPauseResumeButton.h" diff --git a/Classes/LinphoneUI/UIPauseResumeButton.m b/Classes/LinphoneUI/UIPauseResumeButton.m index 9cd47f8ac..22f7db8b3 100644 --- a/Classes/LinphoneUI/UIPauseResumeButton.m +++ b/Classes/LinphoneUI/UIPauseResumeButton.m @@ -38,13 +38,13 @@ } -(bool) isInitialStateOn { @try { - const MSList* c = linphone_core_get_calls([LinphoneManager getLc]); + LinphoneCall* c = linphone_core_get_current_call([LinphoneManager getLc]); if (c) { - return linphone_call_get_state((LinphoneCall*)c->data) == LinphoneCallPaused; + return linphone_call_get_state(c) == LinphoneCallPaused; } else { - - return false; + /* if current call is paused -> c == null */ + return true; } } @catch(NSException* e) { //not ready yet diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m index a513d67ce..717025e00 100644 --- a/Classes/LinphoneUI/UISpeakerButton.m +++ b/Classes/LinphoneUI/UISpeakerButton.m @@ -40,7 +40,7 @@ static void audioRouteChangeListenerCallback ( AudioSessionInitialize(NULL, NULL, NULL, NULL); OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self); if (lStatus) { - ms_error ("cannot register route change handler [%i]",lStatus); + ms_error ("cannot register route change handler [%ld]",lStatus); } } diff --git a/Classes/LinphoneUI/UIToggleButton.h b/Classes/LinphoneUI/UIToggleButton.h index bd960cee2..61ba8aba7 100644 --- a/Classes/LinphoneUI/UIToggleButton.h +++ b/Classes/LinphoneUI/UIToggleButton.h @@ -24,6 +24,7 @@ -(void) onOff; -(bool) isInitialStateOn; @end + @interface UIToggleButton : UIButton { @private UIImage* mOnImage; diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 0f5a81e07..04c0b3721 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -47,9 +47,9 @@ } -(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage { - mOnImage = [onImage retain]; - mOffImage = [offImage retain]; - mIsOn=false; + mOnImage = [onImage retain]; + mOffImage = [offImage retain]; + mIsOn=false; [self reset]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; @@ -69,5 +69,19 @@ [mOffImage release]; } +-(void) onOn { + [NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; +} +-(void) onOff { + [NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; +} +-(bool) isInitialStateOn { + [NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; + return false; +} + @end diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index 886df2a97..b9f5f09e2 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -20,12 +20,14 @@ #import #import "linphonecore.h" #import "UILinphone.h" +#import "CallDelegate.h" @class IncallViewController; @class FirstLoginViewController; -@interface PhoneViewController : UIViewController { + +@interface PhoneViewController : UIViewController { @private //UI definition @@ -33,17 +35,9 @@ UITextField* address; UILabel* mDisplayName; UIEraseButton* erase; + UICallButton* callShort; + UICallButton* callLarge; - UIView* incallView; - UIDuration* callDuration; - UIMuteButton* mute; - UISpeakerButton* speaker; - UILabel* peerLabel; - - - UICallButton* call; - UIHangUpButton* hangup; - UILabel* status; //key pad @@ -61,27 +55,24 @@ UIDigitButton* hash; UIButton* back; + UIButton* backToCallView; UITabBarController* myTabBarController; UIActionSheet *mIncomingCallActionSheet; FirstLoginViewController* myFirstLoginViewController; - + IncallViewController* mIncallViewController; } + @property (nonatomic, retain) IBOutlet UIView* dialerView; + @property (nonatomic, retain) IBOutlet UITextField* address; -@property (nonatomic, retain) IBOutlet UIButton* call; +@property (nonatomic, retain) IBOutlet UIButton* callShort; +@property (nonatomic, retain) IBOutlet UIButton* callLarge; @property (nonatomic, retain) IBOutlet UIButton* hangup; @property (nonatomic, retain) IBOutlet UILabel* status; @property (nonatomic, retain) IBOutlet UIEraseButton* erase; -@property (nonatomic, retain) IBOutlet UIView* incallView; -@property (nonatomic, retain) IBOutlet UILabel* callDuration; -@property (nonatomic, retain) IBOutlet UIButton* mute; -@property (nonatomic, retain) IBOutlet UIButton* speaker; -@property (nonatomic, retain) IBOutlet UILabel* peerLabel; - - @property (nonatomic, retain) IBOutlet UIButton* one; @property (nonatomic, retain) IBOutlet UIButton* two; @property (nonatomic, retain) IBOutlet UIButton* three; @@ -96,7 +87,7 @@ @property (nonatomic, retain) IBOutlet UIButton* hash; @property (nonatomic, retain) IBOutlet UIButton* back; - +@property (nonatomic, retain) IBOutlet UIButton* backToCallView; // method to handle keypad event diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 6b49a18f0..6fd2f0fbc 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -22,24 +22,19 @@ #import #import #import "LinphoneManager.h" - - +#include "FirstLoginViewController.h" +#include "linphonecore.h" +#include "private.h" @implementation PhoneViewController @synthesize dialerView ; @synthesize address ; -@synthesize call; +@synthesize callShort; +@synthesize callLarge; @synthesize hangup; @synthesize status; @synthesize erase; - -@synthesize incallView; -@synthesize callDuration; -@synthesize mute; -@synthesize speaker; -@synthesize peerLabel; - @synthesize one; @synthesize two; @synthesize three; @@ -55,6 +50,7 @@ @synthesize back; @synthesize myTabBarController; +@synthesize backToCallView; //implements keypad behavior @@ -69,24 +65,8 @@ } - - - - -/* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { - } - - return self; - } - */ - - - (void)viewDidAppear:(BOOL)animated { [[UIApplication sharedApplication] setIdleTimerDisabled:true]; - [mute reset]; if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" bundle:[NSBundle mainBundle]]; @@ -95,36 +75,36 @@ }; } -- (void)viewDidDisappear:(BOOL)animated { - [[UIApplication sharedApplication] setIdleTimerDisabled:false]; -} - // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; mDisplayName = [UILabel alloc]; - [zero initWithNumber:'0' addressField:address ]; - [one initWithNumber:'1' addressField:address ]; - [two initWithNumber:'2' addressField:address ]; - [three initWithNumber:'3' addressField:address ]; - [four initWithNumber:'4' addressField:address ]; - [five initWithNumber:'5' addressField:address ]; - [six initWithNumber:'6' addressField:address ]; - [seven initWithNumber:'7' addressField:address ]; - [eight initWithNumber:'8' addressField:address ]; - [nine initWithNumber:'9' addressField:address ]; - [star initWithNumber:'*' addressField:address ]; - [hash initWithNumber:'#' addressField:address ]; - [call initWithAddress:address withDisplayName:mDisplayName]; - [mute initWithOnImage:[UIImage imageNamed:@"mic_muted.png"] offImage:[UIImage imageNamed:@"mic_active.png"] ]; - [speaker initWithOnImage:[UIImage imageNamed:@"Speaker-32-on.png"] offImage:[UIImage imageNamed:@"Speaker-32-off.png"] ]; + [zero initWithNumber:'0' addressField:address dtmf:false]; + [one initWithNumber:'1' addressField:address dtmf:false]; + [two initWithNumber:'2' addressField:address dtmf:false]; + [three initWithNumber:'3' addressField:address dtmf:false]; + [four initWithNumber:'4' addressField:address dtmf:false]; + [five initWithNumber:'5' addressField:address dtmf:false]; + [six initWithNumber:'6' addressField:address dtmf:false]; + [seven initWithNumber:'7' addressField:address dtmf:false]; + [eight initWithNumber:'8' addressField:address dtmf:false]; + [nine initWithNumber:'9' addressField:address dtmf:false]; + [star initWithNumber:'*' addressField:address dtmf:false]; + [hash initWithNumber:'#' addressField:address dtmf:false]; + [callShort initWithAddress:address]; + [callLarge initWithAddress:address]; [erase initWithAddressField:address]; - + [backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside]; + mIncallViewController = [[IncallViewController alloc] initWithNibName:@"IncallViewController" + bundle:[NSBundle mainBundle]]; + } + + /* // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -145,18 +125,41 @@ // e.g. self.myOutlet = nil; } - - (BOOL)textFieldShouldReturn:(UITextField *)theTextField { if (theTextField == address) { [address resignFirstResponder]; [mDisplayName setText:@""]; //display name only relefvant - } + } return YES; } +-(void) updateCallAndBackButtons { + @try { + if (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) { + [callLarge setHidden:FALSE]; + [callShort setHidden:TRUE]; + [backToCallView setHidden:TRUE]; + } else { + [callShort setEnabled:!linphone_core_sound_resources_locked([LinphoneManager getLc])]; + [callLarge setHidden:TRUE]; + [callShort setHidden:FALSE]; + [backToCallView setHidden:FALSE]; + } + } @catch (NSException* exc) { + // R.A.S: linphone core si simply not ready... + ms_warning("Exception %s: %s", + [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], + [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } +} + +-(void)viewWillAppear:(BOOL)animated { + [self updateCallAndBackButtons]; +} -(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + //cancel local notification, just in case if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground ) { @@ -169,80 +172,37 @@ } } - [address setHidden:false]; if (username) { [address setText:username]; } //else keep previous [mDisplayName setText:displayName]; - [incallView setHidden:true]; - [dialerView setHidden:false]; - - [call setEnabled:true]; - [hangup setEnabled:false]; - [callDuration stop]; - UIDevice *device = [UIDevice currentDevice]; - device.proximityMonitoringEnabled = NO; + [self updateCallAndBackButtons]; - - [peerLabel setText:@""]; if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstlogindone_preference" ] == true) { //first login case, dismmis first login view [self dismissModalViewControllerAnimated:true]; }; + [mIncallViewController displayDialerFromUI:viewCtrl + forUser:username + withDisplayName:displayName]; + [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; } --(void) displayIncalViewforUser:(NSString*) username withDisplayName:(NSString*) displayName { - UIDevice *device = [UIDevice currentDevice]; - device.proximityMonitoringEnabled = YES; - if (device.proximityMonitoringEnabled == YES) { - ms_message("Ok this device support proximity, and I just enabled it"); - } - [hangup setEnabled:true]; - if (displayName && [displayName length]>0) { - [peerLabel setText:displayName]; - } else { - [peerLabel setText:username?username:@""]; - } - [address setHidden:true]; - [incallView setHidden:false]; - [dialerView setHidden:true]; -} --(void) displayCallInProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [self displayIncalViewforUser:username - withDisplayName:displayName]; - [call setEnabled:false]; - [callDuration setText:NSLocalizedString(@"Calling...",nil)]; - if ([speaker isOn]) [speaker toggle] ; //preset to off -} - --(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [callDuration start]; - [callDuration setHidden:false]; - - if (linphone_call_get_dir(linphone_core_get_current_call([LinphoneManager getLc])) == LinphoneCallIncoming) { - [self displayIncalViewforUser:username - withDisplayName:displayName]; - if ([speaker isOn]) [speaker toggle] ; //preset to off; - } -} //status reporting -(void) displayStatus:(NSString*) message { [status setText:message]; -} - --(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl { - [mute reset]; + [mIncallViewController displayStatus:message]; } --(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +-(void) displayIncomingCall:(LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { + && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { // Create a new notification UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease]; if (notif) @@ -251,26 +211,79 @@ notif.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:username]; notif.alertAction = @"Answer"; notif.soundName = @"oldphone-mono-30s.caf"; + NSData *callData = [NSData dataWithBytes:&call length:sizeof(call)]; + notif.userInfo = [NSDictionary dictionaryWithObject:callData forKey:@"call"]; [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; } } else { + CallDelegate* cd = [[CallDelegate alloc] init]; + cd.delegate = self; + cd.call = call; + mIncomingCallActionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:username] - delegate:self + delegate:cd cancelButtonTitle:NSLocalizedString(@"Decline",nil) destructiveButtonTitle:NSLocalizedString(@"Answer",nil) otherButtonTitles:nil]; + mIncomingCallActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [mIncomingCallActionSheet showInView:self.view]; + [mIncomingCallActionSheet showInView:self.parentViewController.view]; [mIncomingCallActionSheet release]; } } -- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { - if (buttonIndex == 0 ) { - linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); + +-(void) backToCallViewPressed { + [self displayInCall: nil + FromUI:nil + forUser:nil + withDisplayName:nil]; +} + +-(void) displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + if (self.presentedViewController != (UIViewController*)mIncallViewController) { + [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; + } + [mIncallViewController displayCall:call InProgressFromUI:viewCtrl + forUser:username + withDisplayName:displayName]; + +} + +-(void) displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + if (self.presentedViewController != (UIViewController*)mIncallViewController && (call == 0x0 || + linphone_call_get_dir(call)==LinphoneCallIncoming)){ + [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; + + } + + + + [mIncallViewController displayInCall:call FromUI:viewCtrl + forUser:username + withDisplayName:displayName]; + [callLarge setHidden:TRUE]; + [callShort setHidden:FALSE]; + [backToCallView setHidden:FALSE]; + +} + + +-(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + [mIncallViewController displayVideoCall:call FromUI:viewCtrl + forUser:username + withDisplayName:displayName]; +} + + + +- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas{ + LinphoneCall* call = (LinphoneCall*)datas; + if (buttonIndex == actionSheet.destructiveButtonIndex ) { + linphone_core_accept_call([LinphoneManager getLc],call); } else { - linphone_core_terminate_call ([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); + linphone_core_terminate_call ([LinphoneManager getLc], call); } mIncomingCallActionSheet = nil; } @@ -278,13 +291,9 @@ - (void)dealloc { [address dealloc]; [ mDisplayName dealloc]; - [incallView dealloc]; [dialerView dealloc]; - [callDuration dealloc]; - [mute dealloc]; - [speaker dealloc]; - [peerLabel dealloc]; - [call dealloc]; + [callShort dealloc]; + [callLarge dealloc]; [hangup dealloc]; [status dealloc]; [one dealloc]; @@ -301,6 +310,7 @@ [hash dealloc]; [back dealloc]; [myTabBarController release]; + [mIncallViewController release]; [super dealloc]; } diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index 2150c0314..8e5e6ac92 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -2,30 +2,30 @@ 784 - 10J567 - 823 - 1038.35 - 462.00 + 11C74 + 1938 + 1138.23 + 567.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 132 + 933 - + YES - + IBUITextField + IBUIViewController + IBUIButton + IBUIView + IBUILabel + IBProxyObject YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -43,110 +43,6 @@ 292 YES - - - -2147483356 - - YES - - - 292 - {320, 40} - - NO - YES - NO - IBCocoaTouchFramework - who - - 1 - MCAwIDAAA - - - 1 - 10 - 1 - - - - 292 - {{98, 38}, {124, 21}} - - NO - YES - NO - IBCocoaTouchFramework - how long - - - 1 - 10 - 1 - - - - 292 - {{239, 14}, {72, 37}} - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - Helvetica-Bold - 15 - 16 - - - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - 3 - MC41AA - - - NSImage - Speaker-32-off.png - - - - - 292 - {{0, 14}, {72, 37}} - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - mic_active.png - - - - {320, 65} - - - 1 - MC45MDE5NjA3OSAwLjkwMTk2MDc5IDAuOTAxOTYwNzkAA - - NO - IBCocoaTouchFramework - 292 @@ -157,21 +53,38 @@ 292 {{254, 0}, {66, 65}} + + NO IBCocoaTouchFramework 0 0 - - <- - + + 3 + MQA + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + + 3 + MC41AA + + NSImage - clavier-01-106px.png + effacer.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 @@ -179,6 +92,8 @@ 292 {{5, 0}, {255, 66}} + + NO NO IBCocoaTouchFramework @@ -192,11 +107,6 @@ 2 - - Helvetica - 36 - 16 - YES 15 @@ -205,68 +115,70 @@ IBCocoaTouchFramework 1 + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + {320, 65} + + 1 MC45MDE5NjA3OSAwLjkwMTk2MDc5IDAuOTAxOTYwNzkAA IBCocoaTouchFramework - - - 292 - {{0, 328}, {160, 66}} - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - startcall-green.png - - - NSImage - clavier-01-160px.png - - 292 {{9, 390}, {304, 21}} + + NO YES NO IBCocoaTouchFramework status - + + 1 + MCAwIDAAA + 1 10 + + 1 + 17 + + + Helvetica + 17 + 16 + 292 {{213, 64}, {107, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 3 @@ -274,19 +186,25 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + NSImage + clavier-01-106px.png + + + 292 {{0, 130}, {107, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 4 @@ -294,19 +212,22 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + 292 {{107, 130}, {106, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 5 @@ -318,18 +239,21 @@ NSImage clavier-01-108px.png + + 292 {{213, 130}, {107, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 6 @@ -337,19 +261,22 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + 292 {{0, 196}, {107, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 7 @@ -357,19 +284,22 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + 292 {{213, 196}, {107, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 9 @@ -377,19 +307,22 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + 292 {{107, 64}, {106, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 2 @@ -398,12 +331,16 @@ + + 292 {{0, 64}, {107, 66}} + + 1 MC40MDAwMDAwMSAxIDEgMAA @@ -413,7 +350,6 @@ IBCocoaTouchFramework 0 0 - 1 @@ -421,19 +357,22 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + 292 {{0, 262}, {107, 66}} + + NO NO IBCocoaTouchFramework 0 0 - * @@ -441,19 +380,22 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + 292 {{107, 262}, {106, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 0+ @@ -462,18 +404,21 @@ + + 292 {{213, 262}, {107, 66}} + + NO NO IBCocoaTouchFramework 0 0 - # @@ -481,19 +426,22 @@ MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + + 292 {{107, 196}, {106, 66}} + + NO NO IBCocoaTouchFramework 0 0 - 8 @@ -502,34 +450,96 @@ + + - + 292 {{160, 328}, {160, 66}} + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Back + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + clavier-01-160px.png + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + 292 + {{0, 328}, {160, 66}} + + + NO NO IBCocoaTouchFramework - NO 0 0 - 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + NSImage - stopcall-red.png + startcall-green.png - + + + + + + + 292 + {{0, 328}, {320, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + - {320, 460} + {{0, 20}, {320, 460}} + + 1 MC45MDE5NjA3OSAwLjkwMTk2MDc5IDAuOTAxOTYwNzkAA @@ -539,6 +549,7 @@ + 1 1 IBCocoaTouchFramework @@ -556,14 +567,6 @@ 12 - - - call - - - - 13 - status @@ -572,14 +575,6 @@ 15 - - - delegate - - - - 19 - view @@ -684,63 +679,6 @@ 54 - - - doKeyPad: - - - 1 - - 92 - - - - hangup - - - - 109 - - - - incallView - - - - 119 - - - - peerLabel - - - - 120 - - - - callDuration - - - - 121 - - - - speaker - - - - 123 - - - - mute - - - - 125 - erase @@ -757,13 +695,56 @@ 158 + + + backToCallView + + + + 161 + + + + callShort + + + + 163 + + + + callLarge + + + + 164 + + + + delegate + + + + 19 + + + + doKeyPad: + + + 1 + + 92 + YES 0 - + + YES + @@ -795,12 +776,8 @@ - - - - @@ -809,6 +786,10 @@ + + + + @@ -827,59 +808,16 @@ - - 114 - - - YES - - - - - - - inCall - - - 117 - - - speaker - - - 116 - - - duration - - - 118 - - - mute - - - 115 - - - display - 39 - - 107 - - - hangup - 5 - Call + Call-short 7 @@ -949,6 +887,18 @@ Address + + 160 + + + back + + + 162 + + + Call-large + @@ -956,33 +906,19 @@ YES -1.CustomClassName + -1.IBPluginDependency -2.CustomClassName - 1.IBEditorWindowLastContentRect + -2.IBPluginDependency 1.IBPluginDependency 1.IBUserGuides - 107.CustomClassName - 107.IBPluginDependency - 114.IBEditorWindowLastContentRect - 114.IBPluginDependency - 114.IBUserGuides - 114.IBViewBoundsToFrameTransform - 115.IBPluginDependency - 116.CustomClassName - 116.IBPluginDependency - 116.IBViewBoundsToFrameTransform - 117.CustomClassName - 117.IBPluginDependency - 117.IBViewBoundsToFrameTransform - 118.CustomClassName - 118.IBPluginDependency - 118.IBViewBoundsToFrameTransform 150.CustomClassName 150.IBPluginDependency - 150.IBViewBoundsToFrameTransform 157.IBPluginDependency + 160.IBPluginDependency + 162.CustomClassName + 162.IBPluginDependency 29.CustomClassName 29.IBPluginDependency - 29.IBViewBoundsToFrameTransform 30.CustomClassName 30.IBPluginDependency 31.CustomClassName @@ -997,14 +933,11 @@ 36.IBPluginDependency 37.CustomClassName 37.IBPluginDependency - 37.IBViewBoundsToFrameTransform 38.CustomClassName 38.IBPluginDependency - 38.IBViewBoundsToFrameTransform 39.CustomClassName 39.IBPluginDependency 4.IBPluginDependency - 4.IBViewBoundsToFrameTransform 40.CustomClassName 40.IBPluginDependency 41.CustomClassName @@ -1012,14 +945,14 @@ 5.CustomClassName 5.IBPluginDependency 7.IBPluginDependency - 80.IBEditorWindowLastContentRect 80.IBPluginDependency YES PhoneViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder - {{581, 299}, {320, 460}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES @@ -1034,46 +967,16 @@ 1 - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{32, 282}, {320, 90}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - 90 - 1 - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDuration - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABCxAAAwoIAAA - - UISpeakerButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABDcQAAwpIAAA - - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAAAAAAAAwpIAAA - UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - AUNxAAAAAAAAA - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABDVQAAwxsAAA - UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton @@ -1088,18 +991,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABC1gAAwxsAAA - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAAAAAAAAwxsAAA - UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton @@ -1107,27 +1001,22 @@ UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{60, 553}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES - - YES - + YES - - YES - + - 158 + 164 @@ -1152,8 +1041,9 @@ YES address back - call - callDuration + backToCallView + callLarge + callShort dialerView eight erase @@ -1161,15 +1051,11 @@ four hangup hash - incallView - mute myTabBarController nine one - peerLabel seven six - speaker star status three @@ -1181,7 +1067,8 @@ UITextField UIButton UIButton - UILabel + UIButton + UIButton UIView UIButton UIEraseButton @@ -1189,13 +1076,9 @@ UIButton UIButton UIButton - UIView - UIButton UITabBarController UIButton UIButton - UILabel - UIButton UIButton UIButton UIButton @@ -1211,8 +1094,9 @@ YES address back - call - callDuration + backToCallView + callLarge + callShort dialerView eight erase @@ -1220,15 +1104,11 @@ four hangup hash - incallView - mute myTabBarController nine one - peerLabel seven six - speaker star status three @@ -1246,12 +1126,16 @@ UIButton - call + backToCallView UIButton - callDuration - UILabel + callLarge + UIButton + + + callShort + UIButton dialerView @@ -1281,14 +1165,6 @@ hash UIButton - - incallView - UIView - - - mute - UIButton - myTabBarController UITabBarController @@ -1301,10 +1177,6 @@ one UIButton - - peerLabel - UILabel - seven UIButton @@ -1313,10 +1185,6 @@ six UIButton - - speaker - UIButton - star UIButton @@ -1341,15 +1209,7 @@ IBProjectSource - Classes/PhoneViewController.h - - - - PhoneViewController - UIViewController - - IBUserSource - + ./Classes/PhoneViewController.h @@ -1357,7 +1217,7 @@ UIButton IBProjectSource - Classes/LinphoneUI/UICallButton.h + ./Classes/UICallButton.h @@ -1365,15 +1225,7 @@ UIButton IBProjectSource - Classes/LinphoneUI/UIDigitButton.h - - - - UIDuration - UILabel - - IBProjectSource - Classes/LinphoneUI/UIDuration.h + ./Classes/UIDigitButton.h @@ -1381,257 +1233,7 @@ UIButton IBProjectSource - Classes/LinphoneUI/UIEraseButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - Classes/LinphoneUI/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - Classes/LinphoneUI/UIMuteButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - Classes/LinphoneUI/UISpeakerButton.h - - - - UIToggleButton - UIButton - - mActionHandler - id - - - mActionHandler - - mActionHandler - id - - - - IBProjectSource - Classes/LinphoneUI/UIToggleButton.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIButton - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UIButton.h - - - - UIControl - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIControl.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITabBarController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UITextField - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIPrintFormatter.h - - - - UIView - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h + ./Classes/UIEraseButton.h @@ -1642,40 +1244,31 @@ com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES - ../linphone.xcodeproj 3 YES YES - Speaker-32-off.png clavier-01-106px.png clavier-01-108px.png clavier-01-160px.png - mic_active.png + effacer.png startcall-green.png - stopcall-red.png YES - {32, 32} {106, 60} {108, 60} {160, 60} - {32, 32} + {164, 104} {60, 52} - {62, 54} - 132 + 933 diff --git a/Classes/VideoViewController.h b/Classes/VideoViewController.h new file mode 100644 index 000000000..48a728d42 --- /dev/null +++ b/Classes/VideoViewController.h @@ -0,0 +1,68 @@ +/* VideoViewController.h + * + * Copyright (C) 2011 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 +#import "UILinphone.h" + +@interface VideoViewController : UIViewController { + UIView* mPortrait; + UIView* mDisplay; + UIView* mPreview; + UIMuteButton* mMute; + UIHangUpButton* mHangUp; + UICamSwitch* mCamSwitch; + + UIView* mLandscapeRight; + UIView* mDisplayLandRight; + UIView* mPreviewLandRight; + UIMuteButton* mMuteLandRight; + UIHangUpButton* mHangUpLandRight; + UICamSwitch* mCamSwitchLandRight; + + UIView* mLandscapeLeft; + UIView* mDisplayLandLeft; + UIView* mPreviewLandLeft; + UIMuteButton* mMuteLandLeft; + UIHangUpButton* mHangUpLandLeft; + UICamSwitch* mCamSwitchLandLeft; + BOOL isFirst; + int maxCall; + +} + +@property (nonatomic, retain) IBOutlet UIView* mPortrait; +@property (nonatomic, retain) IBOutlet UIView* mDisplay; +@property (nonatomic, retain) IBOutlet UIView* mPreview; +@property (nonatomic, retain) IBOutlet UIMuteButton* mMute; +@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUp; +@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitch; + +@property (nonatomic, retain) IBOutlet UIView* mLandscapeRight; +@property (nonatomic, retain) IBOutlet UIView* mDisplayLandRight; +@property (nonatomic, retain) IBOutlet UIView* mPreviewLandRight; +@property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandRight; +@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandRight; +@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandRight; + +@property (nonatomic, retain) IBOutlet UIView* mLandscapeLeft; +@property (nonatomic, retain) IBOutlet UIView* mDisplayLandLeft; +@property (nonatomic, retain) IBOutlet UIView* mPreviewLandLeft; +@property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandLeft; +@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandLeft; +@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandLeft; +@end \ No newline at end of file diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m new file mode 100644 index 000000000..56d2476c5 --- /dev/null +++ b/Classes/VideoViewController.m @@ -0,0 +1,172 @@ +/* VideoViewController.m + * + * Copyright (C) 2011 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 "VideoViewController.h" +#import "LinphoneManager.h" +#import + +@implementation VideoViewController +@synthesize mPortrait; +@synthesize mDisplay; +@synthesize mPreview; +@synthesize mMute; +@synthesize mHangUp; +@synthesize mCamSwitch; + +@synthesize mLandscapeRight; +@synthesize mDisplayLandRight; +@synthesize mPreviewLandRight; +@synthesize mMuteLandRight; +@synthesize mHangUpLandRight; +@synthesize mCamSwitchLandRight; + +@synthesize mLandscapeLeft; +@synthesize mDisplayLandLeft; +@synthesize mPreviewLandLeft; +@synthesize mMuteLandLeft; +@synthesize mHangUpLandLeft; +@synthesize mCamSwitchLandLeft; + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + // Custom initialization + } + return self; +} + +- (void)dealloc +{ + [super dealloc]; +} + +- (void)didReceiveMemoryWarning +{ + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +#pragma mark - View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; + [mMuteLandRight initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; + [mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] ]; + [mCamSwitch setPreview:mPreview]; + [mCamSwitchLandRight setPreview:mPreviewLandRight]; + [mCamSwitchLandLeft setPreview:mPreviewLandLeft]; + isFirst=TRUE; +} + + +-(void) configureOrientation:(UIInterfaceOrientation) oritentation { + int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); + if (oritentation == UIInterfaceOrientationPortrait ) { + [self.view addSubview:mPortrait]; + linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplay); + linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreview); + linphone_core_set_device_rotation([LinphoneManager getLc], 0); + + } else if (oritentation == UIInterfaceOrientationLandscapeRight ) { + [self.view addSubview:mLandscapeRight]; + linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplayLandRight); + linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreviewLandRight); + linphone_core_set_device_rotation([LinphoneManager getLc], 270); + + } else if (oritentation == UIInterfaceOrientationLandscapeLeft ) { + [self.view addSubview:mLandscapeLeft]; + linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplayLandLeft); + linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreviewLandLeft); + linphone_core_set_device_rotation([LinphoneManager getLc], 90); + } + if ((oldLinphoneOrientation != linphone_core_get_device_rotation([LinphoneManager getLc])) + && linphone_core_get_current_call([LinphoneManager getLc])) { + //Orientation has change, must call update call + linphone_core_update_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), NULL); + } +} + +-(void) configureOrientation { + [self configureOrientation:self.interfaceOrientation]; +} + +- (void)viewDidUnload +{ + [super viewDidUnload]; + + // Release any retained subviews of the main view. + // e.g. self.myOutlet = nil; +} + + +-(void) viewDidDisappear:(BOOL)animated{ + [super viewDidDisappear:animated]; + [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; + linphone_core_set_max_calls([LinphoneManager getLc], maxCall); +} + +-(void) viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + //redirect audio to speaker + UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; + AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute + , sizeof (audioRouteOverride) + , &audioRouteOverride); + + + [self performSelectorOnMainThread:@selector(configureOrientation) + withObject:nil + waitUntilDone:YES]; + [mMute reset]; + [mMuteLandRight reset]; + [mMuteLandLeft reset]; + maxCall = linphone_core_get_max_calls([LinphoneManager getLc]); + linphone_core_set_max_calls([LinphoneManager getLc], 1); +} + +- (void) viewDidAppear:(BOOL)animated{ + [super viewDidAppear:animated]; + [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + // Return YES for supported orientations + return interfaceOrientation == UIInterfaceOrientationPortrait + || interfaceOrientation == UIInterfaceOrientationLandscapeRight + || interfaceOrientation == UIInterfaceOrientationLandscapeLeft; +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [self configureOrientation:self.interfaceOrientation]; + [mMute reset]; + [mMuteLandRight reset]; + [mMuteLandLeft reset]; +} +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [mLandscapeLeft removeFromSuperview]; + [mLandscapeRight removeFromSuperview]; + [mPortrait removeFromSuperview]; +} +@end diff --git a/Classes/VideoViewController.xib b/Classes/VideoViewController.xib new file mode 100644 index 000000000..f754d3f1a --- /dev/null +++ b/Classes/VideoViewController.xib @@ -0,0 +1,1050 @@ + + + + 1280 + 11C74 + 1938 + 1138.23 + 567.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + YES + IBUIButton + IBUIImageView + IBUIView + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + {320, 460} + + + + 1 + MCAwIDAAA + + IBCocoaTouchFramework + + + + 274 + + YES + + + 274 + {320, 420} + + + + 1 + NO + IBCocoaTouchFramework + + + + 292 + {{1, 418}, {108, 62}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + clavier-01-108px.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{106, 418}, {106, 63}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + stopcall-red.png + + + + + + + + 292 + {{211, 418}, {108, 62}} + + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + switch + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + 292 + {{233, 309}, {80, 106}} + + + + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + {320, 480} + + + + + 3 + MC42NjY2NjY2NjY3AA + + IBCocoaTouchFramework + + + + 292 + + YES + + + 274 + {420, 320} + + + + + 3 + MQA + + + IBCocoaTouchFramework + + + + 292 + {{420, 0}, {60, 108}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + micro.png + + + NSImage + clavier-01-106px.png + + + + + + + 292 + {{420, 107}, {60, 106}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + + 292 + {{420, 212}, {60, 108}} + + + NO + IBCocoaTouchFramework + 0 + 0 + Switch + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + 274 + {{308, 233}, {106, 80}} + + + + + 3 + MQA + + + IBCocoaTouchFramework + + + {480, 320} + + + + + 3 + MQA + + + + 3 + 3 + + IBCocoaTouchFramework + + + + 292 + + YES + + + 274 + {{60, 0}, {420, 320}} + + + + + 3 + MQA + + + IBCocoaTouchFramework + + + + 292 + {60, 108} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + + 292 + {{0, 107}, {60, 106}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + + 292 + {{0, 212}, {60, 108}} + + + NO + IBCocoaTouchFramework + 0 + 0 + Switch + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + 274 + {{360, 233}, {106, 80}} + + + + + 3 + MQA + + + IBCocoaTouchFramework + + + {480, 320} + + + + + 3 + MQA + + + + 3 + 3 + + IBCocoaTouchFramework + + + + + YES + + + mDisplay + + + + 10 + + + + mPreview + + + + 11 + + + + mCamSwitch + + + + 12 + + + + mMute + + + + 13 + + + + mPortrait + + + + 21 + + + + mHangUp + + + + 26 + + + + view + + + + 32 + + + + mMuteLandRight + + + + 40 + + + + mHangUpLandRight + + + + 41 + + + + mCamSwitchLandRight + + + + 42 + + + + mLandscapeRight + + + + 43 + + + + mDisplayLandRight + + + + 44 + + + + mPreviewLandRight + + + + 45 + + + + mDisplayLandLeft + + + + 46 + + + + mMuteLandLeft + + + + 47 + + + + mHangUpLandLeft + + + + 48 + + + + mCamSwitchLandLeft + + + + 49 + + + + mPreviewLandLeft + + + + 50 + + + + mLandscapeLeft + + + + 51 + + + + + YES + + 0 + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 31 + + + YES + + + root + + + 1 + + + YES + + + + + + + + portrait + + + 5 + + + display + + + 9 + + + preview + + + 6 + + + + + 7 + + + Hang Up Button + + + 8 + + + + + 14 + + + YES + + + + + + + + landscape-right + + + 19 + + + Cam Switch + + + 18 + + + HangHup + + + 17 + + + Mute + + + 15 + + + YES + + + display + + + 16 + + + preview + + + 34 + + + YES + + + + + + + + landscape-left + + + 35 + + + preview + + + 36 + + + Cam Switch + + + 37 + + + HangHup + + + 38 + + + Mute + + + 39 + + + display + + + + + YES + + YES + -1.CustomClassName + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 1.IBPluginDependency + 14.IBPluginDependency + 15.IBPluginDependency + 16.IBPluginDependency + 17.CustomClassName + 17.IBPluginDependency + 18.CustomClassName + 18.IBPluginDependency + 19.CustomClassName + 19.IBPluginDependency + 31.IBPluginDependency + 34.IBPluginDependency + 35.IBPluginDependency + 36.CustomClassName + 36.IBPluginDependency + 37.CustomClassName + 37.IBPluginDependency + 38.CustomClassName + 38.IBPluginDependency + 39.IBPluginDependency + 5.IBPluginDependency + 6.CustomClassName + 6.IBPluginDependency + 7.CustomClassName + 7.IBPluginDependency + 8.CustomClassName + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + VideoViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICamSwitch + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICamSwitch + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMuteButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICamSwitch + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 51 + + + + YES + + UICamSwitch + UIButton + + preview + UIView + + + preview + + preview + UIView + + + + IBProjectSource + ./Classes/UICamSwitch.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMuteButton + UIToggleButton + + IBProjectSource + ./Classes/UIMuteButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + VideoViewController + UIViewController + + YES + + YES + mCamSwitch + mCamSwitchLandLeft + mCamSwitchLandRight + mDisplay + mDisplayLandLeft + mDisplayLandRight + mHangUp + mHangUpLandLeft + mHangUpLandRight + mLandscapeLeft + mLandscapeRight + mMute + mMuteLandLeft + mMuteLandRight + mPortrait + mPreview + mPreviewLandLeft + mPreviewLandRight + + + YES + UICamSwitch + UICamSwitch + UICamSwitch + UIView + UIView + UIView + UIHangUpButton + UIHangUpButton + UIHangUpButton + UIView + UIView + UIMuteButton + UIMuteButton + UIMuteButton + UIView + UIView + UIView + UIView + + + + YES + + YES + mCamSwitch + mCamSwitchLandLeft + mCamSwitchLandRight + mDisplay + mDisplayLandLeft + mDisplayLandRight + mHangUp + mHangUpLandLeft + mHangUpLandRight + mLandscapeLeft + mLandscapeRight + mMute + mMuteLandLeft + mMuteLandRight + mPortrait + mPreview + mPreviewLandLeft + mPreviewLandRight + + + YES + + mCamSwitch + UICamSwitch + + + mCamSwitchLandLeft + UICamSwitch + + + mCamSwitchLandRight + UICamSwitch + + + mDisplay + UIView + + + mDisplayLandLeft + UIView + + + mDisplayLandRight + UIView + + + mHangUp + UIHangUpButton + + + mHangUpLandLeft + UIHangUpButton + + + mHangUpLandRight + UIHangUpButton + + + mLandscapeLeft + UIView + + + mLandscapeRight + UIView + + + mMute + UIMuteButton + + + mMuteLandLeft + UIMuteButton + + + mMuteLandRight + UIMuteButton + + + mPortrait + UIView + + + mPreview + UIView + + + mPreviewLandLeft + UIView + + + mPreviewLandRight + UIView + + + + + IBProjectSource + ./Classes/VideoViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + clavier-01-106px.png + clavier-01-108px.png + micro.png + stopcall-red.png + + + YES + {106, 60} + {108, 60} + {107, 67} + {62, 54} + + + 933 + + diff --git a/PhoneMainView.xib b/PhoneMainView.xib index dadf43e09..f7b3253b1 100644 --- a/PhoneMainView.xib +++ b/PhoneMainView.xib @@ -2,30 +2,31 @@ 784 - 10D573 - 762 - 1038.29 - 460.00 + 11C74 + 1938 + 1138.23 + 567.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 87 + 933 - + YES - + IBProxyObject + IBUITabBarItem + IBUIViewController + IBUICustomObject + IBUITabBarController + IBUIWindow + IBUITabBar YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -41,10 +42,12 @@ IBCocoaTouchFramework - + 1316 {320, 480} + + 1 MSAxIDEAA @@ -58,24 +61,25 @@ + 1 1 IBCocoaTouchFramework NO - - History - - History + + + Dialer NSImage - history-orange.png + dialer-orange.png IBCocoaTouchFramework - + PhoneViewController + 1 1 IBCocoaTouchFramework @@ -83,34 +87,34 @@ YES - - - - Dialer + + History + + History NSImage - dialer-orange.png + history-orange.png IBCocoaTouchFramework - - PhoneViewController + 1 1 IBCocoaTouchFramework NO + IBCocoaTouchFramework - 5 + 1 1 IBCocoaTouchFramework @@ -120,12 +124,12 @@ IBCocoaTouchFramework - 0 + 1 1 IBCocoaTouchFramework @@ -133,9 +137,11 @@ - + 266 - {{129, 330}, {163, 49}} + {{0, 431}, {320, 49}} + + 3 MCAwAA @@ -178,7 +184,9 @@ YES 0 - + + YES + @@ -289,52 +297,52 @@ YES -1.CustomClassName + -1.IBPluginDependency -2.CustomClassName + -2.IBPluginDependency 11.IBPluginDependency 12.IBPluginDependency 2.IBAttributePlaceholdersKey - 2.IBEditorWindowLastContentRect 2.IBPluginDependency - 2.UIWindow.visibleAtLaunch 38.CustomClassName - 38.IBEditorWindowLastContentRect 38.IBPluginDependency + 39.IBPluginDependency 4.CustomClassName 4.IBPluginDependency 41.CustomClassName 41.IBPluginDependency + 42.IBPluginDependency 43.CustomClassName 43.IBPluginDependency - 8.IBEditorWindowLastContentRect + 44.IBPluginDependency 8.IBPluginDependency 9.IBPluginDependency YES UIApplication + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES - - YES - + - {{190, 156}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin - PhoneViewController - {{343, 544}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin linphoneAppDelegate com.apple.InterfaceBuilder.IBCocoaTouchPlugin CallHistoryTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin MoreViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{623, 298}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -342,490 +350,18 @@ YES - - YES - + YES - - YES - + - 47 - - - - YES - - CallHistoryTableViewController - GenericTabViewController - - doAction: - id - - - clear - UIButton - - - IBProjectSource - Classes/CallHistoryTableViewController.h - - - - GenericTabViewController - UITableViewController - - YES - - YES - header - linphoneDelegate - phoneControllerDelegate - - - YES - UIView - id - id - - - - IBProjectSource - Classes/GenericTabViewController.h - - - - MoreViewController - UITableViewController - - YES - - YES - console - credit - creditText - web - - - YES - UITableViewCell - UITableViewCell - UITextView - UITableViewCell - - - - IBProjectSource - Classes/MoreViewController.h - - - - PhoneViewController - UIViewController - - YES - - YES - doAction: - doKeyPad: - doKeyPadUp: - - - YES - id - id - id - - - - YES - - YES - address - back - call - callDuration - eight - five - four - hangup - hash - incallView - mute - nine - one - peerLabel - seven - six - speaker - star - status - three - two - zero - - - YES - UITextField - UIButton - UIButton - UILabel - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UILabel - UIButton - UIButton - UIButton - UIButton - UILabel - UIButton - UIButton - UIButton - - - - IBProjectSource - Classes/PhoneViewController.h - - - - linphoneAppDelegate - NSObject - - YES - - YES - myPeoplePickerController - myPhoneViewController - myTabBarController - window - - - YES - ABPeoplePickerNavigationController - PhoneViewController - UITabBarController - UIWindow - - - - IBProjectSource - Classes/linphoneAppDelegate.h - - - - - YES - - ABPeoplePickerNavigationController - UINavigationController - - IBFrameworkSource - AddressBookUI.framework/Headers/ABPeoplePickerNavigationController.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIApplication - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIApplication.h - - - - UIBarItem - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIBarItem.h - - - - UIButton - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UIButton.h - - - - UIControl - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIControl.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UINavigationController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIResponder - NSObject - - - - UIScrollView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIScrollView.h - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITabBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITabBar.h - - - - UITabBarController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UITabBarItem - UIBarItem - - IBFrameworkSource - UIKit.framework/Headers/UITabBarItem.h - - - - UITableViewCell - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITableViewCell.h - - - - UITableViewController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITableViewController.h - - - - UITextField - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UITextView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITextView.h - - - - UIView - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - - - UIViewController - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - UIWindow - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWindow.h - - - + 48 + 0 IBCocoaTouchFramework @@ -834,14 +370,13 @@ com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES - linphone.xcodeproj 3 YES @@ -856,6 +391,6 @@ {25, 23} - 87 + 933 diff --git a/README b/README index a1c5851a9..7d0f28019 100644 --- a/README +++ b/README @@ -2,6 +2,8 @@ ****************************************** Linphone for iPhone depends on liblinphone sdk. To build this sdk, you must install both xcode with iPhone OS SDK and MacPorts (www.macports.org) with the following ports: +-nawk +-coreutils -automake -autoconf -libtool @@ -9,26 +11,47 @@ Linphone for iPhone depends on liblinphone sdk. To build this sdk, you must inst -wget -pkgconfig -cmake (for ZRTP support) +-yasm +-doxygen + + +gas-preprosessor.pl (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/. Link macport libtoolize to glibtoolize (sudo ln -s /opt/local/bin/glibtoolize /opt/local/bin/libtoolize) +Link host's strings to simulator SDK (ln -s /usr/bin/strings /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings) -You may update variable SDK_VERSION from file submodules/build/iphone-config.site according to your iPhone SDK version. Current is 4.0 - -To generate the liblinphone dual arch sdk, once the above commands have been executed: +*********************************************************************** +*******GPL third parties versus non GPL third parties****************** +*********************************************************************** +This sdk can be generated in 2 flavors. Firt is with GPL third parties, it means liblinphone includes GPL third parties like FFMPEG or x264. +If you choose this flavor, your final application must comply with GPL in any case. This is the default mode. + +To generate the liblinphone multi arch sdk in GPL mode, once the above commands have been executed: cd submodules/build make all -In case you upgrade your IOS SDK, you may force configure by using make targets and +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 an alternative license for liblinphone, mediastremer2, ortp, exosip, osip. + +To generate the liblinphone multi arch sdkin non GPL mode, once the above commands have been executed: + cd submodules/build + make all enable_gpl_third_parties=no + +Note: simulator build does not work with this flavor. + +****************************************** +****Third party, subject to lincense***** +****************************************** +The liblinphone-sdk is compiled with third parties code that are subject to license, specially: AMR, SILK and X264. +Linphone activates/de-activates these codecs thanks to the preprocessor macros HAVE_SILK, HAVE_AMR, HAVE_X264 positioned in xcode. +Before embeding these 3 codecs in the final application, make sure to have the right to do so. +****************************************** + + +In case you upgrade your IOS SDK, you may force configure by using make targets Libraries are available from liblinphone-sdk/ -AMR plugin -liblinphone-sdk contains Linphone ARM plugin. As AMR may require to pay for patents, it is not enabled unless Linphone for iphone is compiled with gcc flag HAVE_AMR. - -SILK plugin -liblinphone-sdk contains Linphone SILK plugin. -As Skype requires that you accept its license, the plugin is not compiled and enabled unless: -- you compile the SDK with enable_silk=yes flag (make); -- you compile the UI with HAVE_SILK preprocessor macro (xcode). -- you compile add libmssilk.so to the list a library (xcode). diff --git a/Resources/HP.png b/Resources/HP.png new file mode 100755 index 000000000..b3527b782 Binary files /dev/null and b/Resources/HP.png differ diff --git a/Resources/HP_inverse.png b/Resources/HP_inverse.png new file mode 100755 index 000000000..983f799de Binary files /dev/null and b/Resources/HP_inverse.png differ diff --git a/Resources/Speaker-32-off.png b/Resources/Speaker-32-off.png index e93ae232f..3a5b3fd73 100644 Binary files a/Resources/Speaker-32-off.png and b/Resources/Speaker-32-off.png differ diff --git a/Resources/Speaker-32-on.png b/Resources/Speaker-32-on.png index de8d4460e..cd0fbd40d 100644 Binary files a/Resources/Speaker-32-on.png and b/Resources/Speaker-32-on.png differ diff --git a/Resources/addcall-green.png b/Resources/addcall-green.png new file mode 100644 index 000000000..8ccfe2ba1 Binary files /dev/null and b/Resources/addcall-green.png differ diff --git a/Resources/ajouter.png b/Resources/ajouter.png new file mode 100755 index 000000000..22127c463 Binary files /dev/null and b/Resources/ajouter.png differ diff --git a/Resources/clavier.png b/Resources/clavier.png new file mode 100755 index 000000000..df1026b65 Binary files /dev/null and b/Resources/clavier.png differ diff --git a/Resources/conf_merge.png b/Resources/conf_merge.png new file mode 100644 index 000000000..409609c06 Binary files /dev/null and b/Resources/conf_merge.png differ diff --git a/Resources/contact.png b/Resources/contact.png new file mode 100755 index 000000000..32a5aee96 Binary files /dev/null and b/Resources/contact.png differ diff --git a/Resources/contact_orange.png b/Resources/contact_orange.png new file mode 100644 index 000000000..cbdf86df8 Binary files /dev/null and b/Resources/contact_orange.png differ diff --git a/Resources/contact_vide.png b/Resources/contact_vide.png new file mode 100755 index 000000000..e929b54ba Binary files /dev/null and b/Resources/contact_vide.png differ diff --git a/Resources/effacer.png b/Resources/effacer.png new file mode 100755 index 000000000..eee5833b3 Binary files /dev/null and b/Resources/effacer.png differ diff --git a/Resources/grouper.png b/Resources/grouper.png new file mode 100755 index 000000000..6ca595e43 Binary files /dev/null and b/Resources/grouper.png differ diff --git a/Resources/mic_active.png b/Resources/mic_active.png new file mode 100644 index 000000000..e4b7c6a1b Binary files /dev/null and b/Resources/mic_active.png differ diff --git a/Resources/mic_muted.png b/Resources/mic_muted.png new file mode 100644 index 000000000..6110a04fc Binary files /dev/null and b/Resources/mic_muted.png differ diff --git a/Resources/micro.png b/Resources/micro.png new file mode 100755 index 000000000..1eee9ceef Binary files /dev/null and b/Resources/micro.png differ diff --git a/Resources/micro_inverse.png b/Resources/micro_inverse.png new file mode 100755 index 000000000..b4cd9f588 Binary files /dev/null and b/Resources/micro_inverse.png differ diff --git a/Resources/numpad.png b/Resources/numpad.png new file mode 100644 index 000000000..966b48348 Binary files /dev/null and b/Resources/numpad.png differ diff --git a/Resources/pause.png b/Resources/pause.png new file mode 100755 index 000000000..4875f41c2 Binary files /dev/null and b/Resources/pause.png differ diff --git a/Resources/pause_inactif.png b/Resources/pause_inactif.png new file mode 100755 index 000000000..c43d5fbce Binary files /dev/null and b/Resources/pause_inactif.png differ diff --git a/Resources/pausecall.png b/Resources/pausecall.png new file mode 100644 index 000000000..ffac25a47 Binary files /dev/null and b/Resources/pausecall.png differ diff --git a/Resources/resumecall.png b/Resources/resumecall.png new file mode 100644 index 000000000..8c9ba5d45 Binary files /dev/null and b/Resources/resumecall.png differ diff --git a/Resources/secured.png b/Resources/secured.png new file mode 100644 index 000000000..61042339f Binary files /dev/null and b/Resources/secured.png differ diff --git a/Resources/unverified.png b/Resources/unverified.png new file mode 100644 index 000000000..f824d40c4 Binary files /dev/null and b/Resources/unverified.png differ diff --git a/Settings.bundle/Root.plist b/Settings.bundle/Root.plist index e0d75e2dc..a6ef360c7 100644 --- a/Settings.bundle/Root.plist +++ b/Settings.bundle/Root.plist @@ -94,69 +94,25 @@ Title - Codecs + Media Type PSGroupSpecifier - DefaultValue - - Key - speex_16k_preference + File + audio Title - Speex 16Khz + Audio Type - PSToggleSwitchSpecifier + PSChildPaneSpecifier - DefaultValue - - Key - speex_8k_preference + File + video Title - Speex 8Khz + Video Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - gsm_8k_preference - Title - GSM - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - ilbc_preference - Title - ILBC - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - pcmu_preference - Title - PCMU - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - pcma_preference - Title - PCMA - Type - PSToggleSwitchSpecifier + PSChildPaneSpecifier Title @@ -274,6 +230,16 @@ DefaultValue Key + enable_srtp_preference + Title + Secure rtp + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key backgroundmode_preference Title Background mode diff --git a/Settings.bundle/audio.plist b/Settings.bundle/audio.plist new file mode 100644 index 000000000..d51abaff1 --- /dev/null +++ b/Settings.bundle/audio.plist @@ -0,0 +1,105 @@ + + + + + PreferenceSpecifiers + + + Title + Codecs + Type + PSGroupSpecifier + + + DefaultValue + + Key + speex_16k_preference + Title + Speex 16Khz + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + speex_8k_preference + Title + Speex 8Khz + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + silk_24k_preference + Title + Silk 24Khz + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + silk_16k_preference + Title + Silk 16Khz + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + g722_preference + Title + G722 + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + gsm_8k_preference + Title + GSM + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + ilbc_preference + Title + ILBC + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + pcmu_preference + Title + PCMU + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + pcma_preference + Title + PCMA + Type + PSToggleSwitchSpecifier + + + + diff --git a/Settings.bundle/video.plist b/Settings.bundle/video.plist new file mode 100644 index 000000000..440f5ad90 --- /dev/null +++ b/Settings.bundle/video.plist @@ -0,0 +1,65 @@ + + + + + PreferenceSpecifiers + + + Type + PSToggleSwitchSpecifier + Title + Enable video + Key + enable_video_preference + DefaultValue + + + + Type + PSToggleSwitchSpecifier + Title + Automatically start video + Key + start_video_preference + DefaultValue + + + + Title + Codecs + Type + PSGroupSpecifier + + + DefaultValue + + Key + mp4v-es_preference + Title + mpeg4 + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + h264_preference + Title + h264 + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + vp8_preference + Title + VP8 + Type + PSToggleSwitchSpecifier + + + + diff --git a/disable-security.patch b/disable-security.patch new file mode 100644 index 000000000..98f46d90a --- /dev/null +++ b/disable-security.patch @@ -0,0 +1,35 @@ +diff --git a/Settings.bundle/Root.plist b/Settings.bundle/Root.plist +index 5bc0378..9d011f1 100644 +--- a/Settings.bundle/Root.plist ++++ b/Settings.bundle/Root.plist +@@ -169,7 +169,7 @@ + + udp + tcp +- tls ++ + + Type + PSMultiValueSpecifier +@@ -177,10 +177,10 @@ + + udp + tcp +- tls ++ + + +- ++ + + DefaultValue + diff --git a/linphone copy-Info.plist b/linphone copy-Info.plist new file mode 100644 index 000000000..dccfa7f39 --- /dev/null +++ b/linphone copy-Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + Linphone + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + icone-linphone-57.png + CFBundleIdentifier + org.linphone.phone + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 3.4.9 + CFBundleSignature + ???? + CFBundleVersion + 1.0.7.3 + NSMainNibFile + PhoneMainView + UIApplicationExitsOnSuspend + + UIBackgroundModes + + voip + audio + + UIRequiredDeviceCapabilities + + wifi + microphone + + UIRequiresPersistentWiFi + + + diff --git a/linphone-Info.plist b/linphone-Info.plist index de193e695..a2bb16988 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -19,11 +19,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.4.5 + 3.4.11 CFBundleSignature ???? CFBundleVersion - 1.0.7 + 1.1.0.1 NSMainNibFile PhoneMainView UIApplicationExitsOnSuspend diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 0df02121c..455b9cd06 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -19,6 +19,34 @@ 220FAD3810765B400068D98F /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; }; 220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD3010765B400068D98F /* libspeexdsp.a */; }; 220FAE4B10767A6A0068D98F /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */; }; + 2211DB95147564B400DEE054 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2211DB94147564B400DEE054 /* Settings.bundle */; }; + 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; + 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; + 2211DBC014769CB200DEE054 /* IncallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 222A483212F7176F0075F07F /* IncallViewController.m */; }; + 2211DBC114769CB300DEE054 /* IncallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 222A483212F7176F0075F07F /* IncallViewController.m */; }; + 2211DBD51476BE7300DEE054 /* ajouter.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCA1476BE7300DEE054 /* ajouter.png */; }; + 2211DBD61476BE7300DEE054 /* ajouter.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCA1476BE7300DEE054 /* ajouter.png */; }; + 2211DBD71476BE7300DEE054 /* clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCB1476BE7300DEE054 /* clavier.png */; }; + 2211DBD81476BE7300DEE054 /* clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCB1476BE7300DEE054 /* clavier.png */; }; + 2211DBD91476BE7300DEE054 /* contact.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCC1476BE7300DEE054 /* contact.png */; }; + 2211DBDA1476BE7300DEE054 /* contact.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCC1476BE7300DEE054 /* contact.png */; }; + 2211DBDB1476BE7300DEE054 /* effacer.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCD1476BE7300DEE054 /* effacer.png */; }; + 2211DBDC1476BE7300DEE054 /* effacer.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCD1476BE7300DEE054 /* effacer.png */; }; + 2211DBDD1476BE7300DEE054 /* grouper.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCE1476BE7300DEE054 /* grouper.png */; }; + 2211DBDE1476BE7300DEE054 /* grouper.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCE1476BE7300DEE054 /* grouper.png */; }; + 2211DBDF1476BE7300DEE054 /* HP_inverse.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCF1476BE7300DEE054 /* HP_inverse.png */; }; + 2211DBE01476BE7300DEE054 /* HP_inverse.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCF1476BE7300DEE054 /* HP_inverse.png */; }; + 2211DBE11476BE7300DEE054 /* HP.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD01476BE7300DEE054 /* HP.png */; }; + 2211DBE21476BE7300DEE054 /* HP.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD01476BE7300DEE054 /* HP.png */; }; + 2211DBE31476BE7300DEE054 /* micro_inverse.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD11476BE7300DEE054 /* micro_inverse.png */; }; + 2211DBE41476BE7300DEE054 /* micro_inverse.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD11476BE7300DEE054 /* micro_inverse.png */; }; + 2211DBE51476BE7300DEE054 /* micro.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD21476BE7300DEE054 /* micro.png */; }; + 2211DBE61476BE7300DEE054 /* micro.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD21476BE7300DEE054 /* micro.png */; }; + 2211DBE71476BE7300DEE054 /* pause_inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD31476BE7300DEE054 /* pause_inactif.png */; }; + 2211DBE81476BE7300DEE054 /* pause_inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD31476BE7300DEE054 /* pause_inactif.png */; }; + 2211DBE91476BE7300DEE054 /* pause.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD41476BE7300DEE054 /* pause.png */; }; + 2211DBEA1476BE7300DEE054 /* pause.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBD41476BE7300DEE054 /* pause.png */; }; + 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; 2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; }; 2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; }; 2214EBDA12F8558F002A5394 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBD912F8558F002A5394 /* UIToggleButton.m */; }; @@ -30,11 +58,16 @@ 22226C181181986A000CA27B /* contact-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C161181986A000CA27B /* contact-orange.png */; }; 22226C191181986A000CA27B /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C171181986A000CA27B /* dialer-orange.png */; }; 22226C1D11819B34000CA27B /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C1C11819B34000CA27B /* history-orange.png */; }; + 22276E8313C73D3100210156 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8013C73D3100210156 /* libavcodec.a */; }; + 22276E8413C73D3100210156 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8113C73D3100210156 /* libavutil.a */; }; + 22276E8513C73D3100210156 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8213C73D3100210156 /* libswscale.a */; }; + 22276E8713C73D8A00210156 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8613C73D8A00210156 /* CoreVideo.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 22276E8913C73DC000210156 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8813C73DC000210156 /* CoreMedia.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 222A483412F7176F0075F07F /* IncallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 222A483112F7176F0075F07F /* IncallViewController.xib */; }; 223148E41178A08200637D6A /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E31178A08200637D6A /* libilbc.a */; }; 223148E61178A09900637D6A /* libmsilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E51178A09900637D6A /* libmsilbc.a */; }; - 22323037132A28AE00F10886 /* TunnelManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 22323036132A28AE00F10886 /* TunnelManager.cc */; }; 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; + 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 223963161393CFAF001DE689 /* FastAddressBook.m */; }; 2242D91610D66BF300E9963F /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; 2242D91710D66BF300E9963F /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; 2242D91A10D66C2100E9963F /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91810D66C2100E9963F /* mic_active.png */; }; @@ -42,69 +75,182 @@ 2242D9C910D691F900E9963F /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; 2245671D107699F700F10948 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2245671C107699F700F10948 /* Settings.bundle */; }; - 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; }; + 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; 2248E99F12F801C200220D9C /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E99E12F801C200220D9C /* LinphoneManager.m */; }; - 2252941412F6DAA400DD9BFB /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2B10765B400068D98F /* libmediastreamer.a */; }; 225CB2EA11ABB51000628906 /* clavier-01-106px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2E811ABB51000628906 /* clavier-01-106px.png */; }; 225CB2EB11ABB51000628906 /* clavier-01-108px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2E911ABB51000628906 /* clavier-01-108px.png */; }; 225CB2EE11ABB65D00628906 /* clavier-01-160px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */; }; 225CB2FA11ABB76400628906 /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; + 226183AD1472527D0037138E /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AA1472527D0037138E /* libSKP_SILK_SDK.a */; }; + 226183AE1472527D0037138E /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AB1472527D0037138E /* libsrtp.a */; }; + 226183B0147259670037138E /* libmssilk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AF147259670037138E /* libmssilk.a */; }; 2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2264B6D111200342002C2C53 /* SystemConfiguration.framework */; }; + 226B563F13CAF1CD00921595 /* audio.plist in Resources */ = {isa = PBXBuildFile; fileRef = 226B563E13CAF1CD00921595 /* audio.plist */; }; + 226F2ED61344B0EF00F6EF27 /* libopencore-amrwb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */; }; + 226F2ED71344B0EF00F6EF27 /* libopencore-amrnb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED41344B0EF00F6EF27 /* libopencore-amrnb.a */; }; + 226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED51344B0EF00F6EF27 /* libmsamr.a */; }; 2274401A106F31BD006EC466 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744019106F31BD006EC466 /* CoreAudio.framework */; }; 2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2274402E106F335E006EC466 /* AudioToolbox.framework */; }; 2274550810700509006EC466 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; 227BCDC210D4004600FBFD76 /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */; }; 227BCDC310D4004600FBFD76 /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; - 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; }; + 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; 22968A8812F87C2000588287 /* UIDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A8712F87C2000588287 /* UIDuration.m */; }; 22A10F3B11F8960300373793 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2C10765B400068D98F /* libortp.a */; }; + 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 */; }; 22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */; }; 22B5EFE510CE5E5800777D97 /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; }; 22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5F03410CE6B2F00777D97 /* AddressBook.framework */; }; - 22BB1B9313311915005CD7AA /* libtunnel.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22BB1B9213311915005CD7AA /* libtunnel.a */; }; - 22BB1D3613322A58005CD7AA /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1D3413322A58005CD7AA /* UIEraseButton.m */; }; + 22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; }; 22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; }; 22D1B68112A3E0BE001AE361 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B68012A3E0BE001AE361 /* libresolv.dylib */; }; + 22D817AD147A9F33001CFB9C /* UIAddVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D817AC147A9F33001CFB9C /* UIAddVideoButton.m */; }; + 22D817AE147A9F33001CFB9C /* UIAddVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D817AC147A9F33001CFB9C /* UIAddVideoButton.m */; }; + 22D8F11F147548E2008C97DB /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; + 22D8F120147548E2008C97DB /* PhoneViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* PhoneViewController.xib */; }; + 22D8F121147548E2008C97DB /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; + 22D8F122147548E2008C97DB /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */; }; + 22D8F124147548E2008C97DB /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; + 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; + 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; + 22D8F127147548E2008C97DB /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; + 22D8F128147548E2008C97DB /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; + 22D8F129147548E2008C97DB /* mic_active.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91810D66C2100E9963F /* mic_active.png */; }; + 22D8F12A147548E2008C97DB /* mic_muted.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91910D66C2100E9963F /* mic_muted.png */; }; + 22D8F12B147548E2008C97DB /* Speaker-32-on.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A783111C1BA800B04932 /* Speaker-32-on.png */; }; + 22D8F12C147548E2008C97DB /* Speaker-32-off.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A784111C1BA800B04932 /* Speaker-32-off.png */; }; + 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; + 22D8F12E147548E2008C97DB /* icone-linphone-57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* icone-linphone-57.png */; }; + 22D8F12F147548E2008C97DB /* startcall-green.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C11118197C0000CA27B /* startcall-green.png */; }; + 22D8F130147548E2008C97DB /* stopcall-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C13118197EC000CA27B /* stopcall-red.png */; }; + 22D8F131147548E2008C97DB /* contact-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C161181986A000CA27B /* contact-orange.png */; }; + 22D8F132147548E2008C97DB /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C171181986A000CA27B /* dialer-orange.png */; }; + 22D8F133147548E2008C97DB /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C1C11819B34000CA27B /* history-orange.png */; }; + 22D8F134147548E2008C97DB /* clavier-01-106px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2E811ABB51000628906 /* clavier-01-106px.png */; }; + 22D8F135147548E2008C97DB /* clavier-01-108px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2E911ABB51000628906 /* clavier-01-108px.png */; }; + 22D8F136147548E2008C97DB /* clavier-01-160px.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */; }; + 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; + 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; + 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; + 22D8F13A147548E2008C97DB /* IncallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 222A483112F7176F0075F07F /* IncallViewController.xib */; }; + 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; + 22D8F13C147548E2008C97DB /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; + 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; + 22D8F13E147548E2008C97DB /* missed_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E19E47138A67A000FBFE87 /* missed_call.png */; }; + 22D8F13F147548E2008C97DB /* VideoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E028B613B4CCBD0068A713 /* VideoViewController.xib */; }; + 22D8F140147548E2008C97DB /* audio.plist in Resources */ = {isa = PBXBuildFile; fileRef = 226B563E13CAF1CD00921595 /* audio.plist */; }; + 22D8F141147548E2008C97DB /* video.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22E1A9E713CAF4AA00219531 /* video.plist */; }; + 22D8F142147548E2008C97DB /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; + 22D8F144147548E2008C97DB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; + 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; + 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* PhoneViewController.m */; }; + 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; }; + 22D8F148147548E2008C97DB /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */; }; + 22D8F149147548E2008C97DB /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; + 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; + 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; + 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; + 22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E99E12F801C200220D9C /* LinphoneManager.m */; }; + 22D8F14E147548E2008C97DB /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; }; + 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; }; + 22D8F150147548E2008C97DB /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBD912F8558F002A5394 /* UIToggleButton.m */; }; + 22D8F151147548E2008C97DB /* UIMuteButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMuteButton.m */; }; + 22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; + 22D8F153147548E2008C97DB /* UIDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A8712F87C2000588287 /* UIDuration.m */; }; + 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; }; + 22D8F155147548E2008C97DB /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; }; + 22D8F156147548E2008C97DB /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; }; + 22D8F157147548E2008C97DB /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 223963161393CFAF001DE689 /* FastAddressBook.m */; }; + 22D8F158147548E2008C97DB /* VideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E028B513B4CCBD0068A713 /* VideoViewController.m */; }; + 22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AA8B0013D83F6300B30535 /* UICamSwitch.m */; }; + 22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; + 22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + 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 */; }; + 22D8F171147548E2008C97DB /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */; }; + 22D8F172147548E2008C97DB /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5F03410CE6B2F00777D97 /* AddressBook.framework */; }; + 22D8F173147548E2008C97DB /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2264B6D111200342002C2C53 /* SystemConfiguration.framework */; }; + 22D8F174147548E2008C97DB /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E31178A08200637D6A /* libilbc.a */; }; + 22D8F175147548E2008C97DB /* libmsilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E51178A09900637D6A /* libmsilbc.a */; }; + 22D8F176147548E2008C97DB /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; }; + 22D8F177147548E2008C97DB /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2C10765B400068D98F /* libortp.a */; }; + 22D8F178147548E2008C97DB /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B68012A3E0BE001AE361 /* libresolv.dylib */; }; + 22D8F179147548E2008C97DB /* libopencore-amrwb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */; }; + 22D8F17A147548E2008C97DB /* libopencore-amrnb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED41344B0EF00F6EF27 /* libopencore-amrnb.a */; }; + 22D8F17B147548E2008C97DB /* libmsamr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED51344B0EF00F6EF27 /* libmsamr.a */; }; + 22D8F17E147548E2008C97DB /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AA1472527D0037138E /* libSKP_SILK_SDK.a */; }; + 22D8F17F147548E2008C97DB /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AB1472527D0037138E /* libsrtp.a */; }; + 22D8F180147548E2008C97DB /* libmssilk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AF147259670037138E /* libmssilk.a */; }; + 22E028B713B4CCBD0068A713 /* VideoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E028B513B4CCBD0068A713 /* VideoViewController.m */; }; + 22E028B813B4CCBD0068A713 /* VideoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E028B613B4CCBD0068A713 /* VideoViewController.xib */; }; 22E0A785111C1BA800B04932 /* Speaker-32-on.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A783111C1BA800B04932 /* Speaker-32-on.png */; }; 22E0A786111C1BA800B04932 /* Speaker-32-off.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A784111C1BA800B04932 /* Speaker-32-off.png */; }; 22E0A822111C44E100B04932 /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; - 22E5AF6F1393F01800E4B43D /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E5AF6D1393F01800E4B43D /* FastAddressBook.m */; }; + 22E19E48138A67A000FBFE87 /* missed_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E19E47138A67A000FBFE87 /* missed_call.png */; }; + 22E1A9E813CAF4AA00219531 /* video.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22E1A9E713CAF4AA00219531 /* video.plist */; }; + 22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AD133B5EA20044EA25 /* libssl.a */; }; + 22E5B0B0133B5EA20044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AE133B5EA20044EA25 /* libcrypto.a */; }; 22F2508E107141E100AC9B3F /* PhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* PhoneViewController.m */; }; 22F2508F107141E100AC9B3F /* PhoneViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* PhoneViewController.xib */; }; 22F254811073D99800AC9B3F /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; 22F51EF6107FA66500F98953 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; + 344ABD72147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */; }; + 344ABD73147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */; }; + 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */; }; + 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */; }; + 344ABD7A147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */; }; + 344ABD7B147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */; }; + 344ABDE51483E596007420B6 /* unverified.png in Resources */ = {isa = PBXBuildFile; fileRef = 344ABDE41483E596007420B6 /* unverified.png */; }; + 344ABDE61483E596007420B6 /* unverified.png in Resources */ = {isa = PBXBuildFile; fileRef = 344ABDE41483E596007420B6 /* unverified.png */; }; + 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, ); }; }; + 34957F3F147D3FBF00DD7A09 /* secured.png in Resources */ = {isa = PBXBuildFile; fileRef = 34957F3E147D3FBF00DD7A09 /* secured.png */; }; + 34F2F678147D2E1C00A2D5E3 /* contact_vide.png in Resources */ = {isa = PBXBuildFile; fileRef = 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */; }; + 5728D0B9149668000050AD1B /* TunnelManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5728D0B8149668000050AD1B /* TunnelManager.cc */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; - F4D9F27B1458971C0035B0D0 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22BFFF79134F6AEA00997020 /* libssl.a */; }; - F4D9F27F145897BB0035B0D0 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22BFFF7A134F6AEA00997020 /* libcrypto.a */; }; - F4D9F2811458AC3B0035B0D0 /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F4D9F2801458AC3B0035B0D0 /* libsrtp.a */; }; + 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; + 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; + 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; + F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 2233FEBB144885DC001824BF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 22A10D9E11F88C1F00373793 /* liblinphone.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 22DD19BE13A8D7FA0018ECD4; - remoteInfo = mediastream; - }; - 22A10DA211F88C1F00373793 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 22A10D9E11F88C1F00373793 /* liblinphone.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D2AAC07E0554694100DB518D; - remoteInfo = liblinphone; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXCopyFilesBuildPhase section */ 2247673A129C3B9C002B94B4 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 11; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 22D8F181147548E2008C97DB /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; @@ -231,13 +377,28 @@ 220FACEB107654FC0068D98F /* speex_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speex_types.h; sourceTree = ""; }; 220FAD2810765B400068D98F /* libeXosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libeXosip2.a; path = "liblinphone-sdk/apple-darwin/lib/libeXosip2.a"; sourceTree = ""; }; 220FAD2910765B400068D98F /* libgsm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgsm.a; path = "liblinphone-sdk/apple-darwin/lib/libgsm.a"; sourceTree = ""; }; - 220FAD2B10765B400068D98F /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; 220FAD2C10765B400068D98F /* libortp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libortp.a; path = "liblinphone-sdk/apple-darwin/lib/libortp.a"; sourceTree = ""; }; 220FAD2D10765B400068D98F /* libosip2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosip2.a; path = "liblinphone-sdk/apple-darwin/lib/libosip2.a"; sourceTree = ""; }; 220FAD2E10765B400068D98F /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = ""; }; 220FAD2F10765B400068D98F /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; }; 220FAD3010765B400068D98F /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; + 2211DB8F147555C800DEE054 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; + 2211DB911475562600DEE054 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; }; + 2211DB94147564B400DEE054 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = "nogpl-thirdparties/Settings.bundle"; sourceTree = ""; }; + 2211DBBB14769C8200DEE054 /* CallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallDelegate.m; sourceTree = ""; }; + 2211DBCA1476BE7300DEE054 /* ajouter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ajouter.png; path = Resources/ajouter.png; sourceTree = ""; }; + 2211DBCB1476BE7300DEE054 /* clavier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = clavier.png; path = Resources/clavier.png; sourceTree = ""; }; + 2211DBCC1476BE7300DEE054 /* contact.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact.png; path = Resources/contact.png; sourceTree = ""; }; + 2211DBCD1476BE7300DEE054 /* effacer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = effacer.png; path = Resources/effacer.png; sourceTree = ""; }; + 2211DBCE1476BE7300DEE054 /* grouper.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = grouper.png; path = Resources/grouper.png; sourceTree = ""; }; + 2211DBCF1476BE7300DEE054 /* HP_inverse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = HP_inverse.png; path = Resources/HP_inverse.png; sourceTree = ""; }; + 2211DBD01476BE7300DEE054 /* HP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = HP.png; path = Resources/HP.png; sourceTree = ""; }; + 2211DBD11476BE7300DEE054 /* micro_inverse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_inverse.png; path = Resources/micro_inverse.png; sourceTree = ""; }; + 2211DBD21476BE7300DEE054 /* micro.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro.png; path = Resources/micro.png; sourceTree = ""; }; + 2211DBD31476BE7300DEE054 /* pause_inactif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_inactif.png; path = Resources/pause_inactif.png; sourceTree = ""; }; + 2211DBD41476BE7300DEE054 /* pause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause.png; path = Resources/pause.png; sourceTree = ""; }; + 2214783C1386A2030020F8B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Resources/en.lproj/Localizable.strings; sourceTree = ""; }; 2214EB7812F846B1002A5394 /* UICallButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallButton.h; sourceTree = ""; }; 2214EB7912F846B1002A5394 /* UICallButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallButton.m; sourceTree = ""; }; 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHangUpButton.h; sourceTree = ""; }; @@ -257,16 +418,19 @@ 22226C161181986A000CA27B /* contact-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-orange.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/contact-orange.png"; sourceTree = ""; }; 22226C171181986A000CA27B /* dialer-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-orange.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/dialer-orange.png"; sourceTree = ""; }; 22226C1C11819B34000CA27B /* history-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-orange.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/history-orange.png"; sourceTree = ""; }; + 22276E8013C73D3100210156 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; + 22276E8113C73D3100210156 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; + 22276E8213C73D3100210156 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; + 22276E8613C73D8A00210156 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; + 22276E8813C73DC000210156 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 222A483112F7176F0075F07F /* IncallViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = IncallViewController.xib; sourceTree = ""; }; 222A483212F7176F0075F07F /* IncallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncallViewController.m; sourceTree = ""; }; 222A483312F7176F0075F07F /* IncallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncallViewController.h; sourceTree = ""; }; 223148E31178A08200637D6A /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; 223148E51178A09900637D6A /* libmsilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsilbc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsilbc.a"; sourceTree = ""; }; - 22323035132A28AE00F10886 /* TunnelManager.hh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = TunnelManager.hh; path = ../include/tunnel/TunnelManager.hh; sourceTree = ""; }; - 22323036132A28AE00F10886 /* TunnelManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TunnelManager.cc; sourceTree = ""; }; - 22323039132A290F00F10886 /* eXosip_transport_hook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eXosip_transport_hook.h; sourceTree = ""; }; 2237D4081084D7A9001383EE /* oldphone-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "oldphone-mono.wav"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono.wav"; sourceTree = ""; }; - 2240EEE8135DE9A3006735F5 /* TunnelManager.hh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TunnelManager.hh; sourceTree = ""; }; + 223963151393CFAE001DE689 /* FastAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastAddressBook.h; sourceTree = ""; }; + 223963161393CFAF001DE689 /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastAddressBook.m; sourceTree = ""; }; 2242D91410D66BF300E9963F /* in_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = in_call.png; path = Resources/in_call.png; sourceTree = ""; }; 2242D91510D66BF300E9963F /* out_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = out_call.png; path = Resources/out_call.png; sourceTree = ""; }; 2242D91810D66C2100E9963F /* mic_active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = mic_active.png; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/mic_active.png"; sourceTree = ""; }; @@ -285,8 +449,14 @@ 225CB2E911ABB51000628906 /* clavier-01-108px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-01-108px.png"; path = "Resources/clavier-01-108px.png"; sourceTree = ""; }; 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-01-160px.png"; path = "Resources/clavier-01-160px.png"; sourceTree = ""; }; 225CB2F911ABB76400628906 /* linphone-banner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-banner.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/linphone-banner.png"; sourceTree = ""; }; + 226183AA1472527D0037138E /* libSKP_SILK_SDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSKP_SILK_SDK.a; path = "liblinphone-sdk/apple-darwin/lib/libSKP_SILK_SDK.a"; sourceTree = ""; }; + 226183AB1472527D0037138E /* libsrtp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsrtp.a; path = "liblinphone-sdk/apple-darwin/lib/libsrtp.a"; sourceTree = ""; }; + 226183AF147259670037138E /* libmssilk.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmssilk.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmssilk.a"; sourceTree = ""; }; 2264B6D111200342002C2C53 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 227187E2133355D200282C69 /* linphonecore_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphonecore_utils.h; sourceTree = ""; }; + 226B563E13CAF1CD00921595 /* audio.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = audio.plist; path = Settings.bundle/audio.plist; sourceTree = ""; }; + 226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libopencore-amrwb.a"; path = "liblinphone-sdk/apple-darwin/lib/libopencore-amrwb.a"; sourceTree = ""; }; + 226F2ED41344B0EF00F6EF27 /* libopencore-amrnb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libopencore-amrnb.a"; path = "liblinphone-sdk/apple-darwin/lib/libopencore-amrnb.a"; sourceTree = ""; }; + 226F2ED51344B0EF00F6EF27 /* libmsamr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsamr.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsamr.a"; sourceTree = ""; }; 22744019106F31BD006EC466 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; 2274402E106F335E006EC466 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 22744043106F33FC006EC466 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; @@ -301,16 +471,16 @@ 22968A5E12F875C600588287 /* UISpeakerButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UISpeakerButton.m; sourceTree = ""; }; 22968A8612F87C2000588287 /* UIDuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDuration.h; sourceTree = ""; }; 22968A8712F87C2000588287 /* UIDuration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDuration.m; sourceTree = ""; }; - 22A10D9E11F88C1F00373793 /* liblinphone.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = liblinphone.xcodeproj; path = submodules/liblinphone.xcodeproj; sourceTree = ""; }; + 22AA8AFB13D7125500B30535 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = "liblinphone-sdk/apple-darwin/lib/libx264.a"; sourceTree = ""; }; + 22AA8AFC13D7125500B30535 /* libmsx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsx264.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsx264.a"; sourceTree = ""; }; + 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICamSwitch.h; sourceTree = ""; }; + 22AA8B0013D83F6300B30535 /* UICamSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICamSwitch.m; sourceTree = ""; }; 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; }; 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactPickerDelegate.h; sourceTree = ""; }; 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactPickerDelegate.m; sourceTree = ""; }; 22B5F03410CE6B2F00777D97 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; - 22BB1B9213311915005CD7AA /* libtunnel.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libtunnel.a; path = "liblinphone-sdk/apple-darwin/lib/libtunnel.a"; sourceTree = SOURCE_ROOT; }; - 22BB1D3413322A58005CD7AA /* UIEraseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEraseButton.m; sourceTree = ""; }; - 22BB1D3513322A58005CD7AA /* UIEraseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEraseButton.h; sourceTree = ""; }; - 22BFFF79134F6AEA00997020 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; - 22BFFF7A134F6AEA00997020 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; + 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEraseButton.h; sourceTree = ""; }; + 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEraseButton.m; sourceTree = ""; }; 22C7555E1317E59C007BC101 /* UIBluetoothButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIBluetoothButton.h; sourceTree = ""; }; 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIBluetoothButton.m; sourceTree = ""; }; 22C7560513265C6A007BC101 /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; @@ -385,10 +555,13 @@ 22C7564A13265C6A007BC101 /* x509_vfy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509_vfy.h; sourceTree = ""; }; 22C7564B13265C6A007BC101 /* x509v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509v3.h; sourceTree = ""; }; 22D1B68012A3E0BE001AE361 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; }; - 22DA44391354B3B6002CB522 /* client.hh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = client.hh; sourceTree = ""; }; - 22DA443A1354B3B6002CB522 /* common.hh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = common.hh; sourceTree = ""; }; - 22DA443B1354B3B6002CB522 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; - 22DA443C1354B3B6002CB522 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 22D817AB147A9F33001CFB9C /* UIAddVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIAddVideoButton.h; sourceTree = ""; }; + 22D817AC147A9F33001CFB9C /* UIAddVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAddVideoButton.m; sourceTree = ""; }; + 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "linphone-no-gpl-thirdparties.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 22D8F189147548E3008C97DB /* linphone copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "linphone copy-Info.plist"; path = "/Users/jehanmonnier/workspaces/workspace-iphone-port/linphone-iphone/linphone copy-Info.plist"; sourceTree = ""; }; + 22E028B413B4CCBD0068A713 /* VideoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoViewController.h; sourceTree = ""; }; + 22E028B513B4CCBD0068A713 /* VideoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoViewController.m; sourceTree = ""; }; + 22E028B613B4CCBD0068A713 /* VideoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = VideoViewController.xib; sourceTree = ""; }; 22E0A783111C1BA800B04932 /* Speaker-32-on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Speaker-32-on.png"; path = "Resources/Speaker-32-on.png"; sourceTree = ""; }; 22E0A784111C1BA800B04932 /* Speaker-32-off.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Speaker-32-off.png"; path = "Resources/Speaker-32-off.png"; sourceTree = ""; }; 22E0A81B111C44E100B04932 /* MoreViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MoreViewController.xib; sourceTree = ""; }; @@ -397,9 +570,10 @@ 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ConsoleViewController.xib; sourceTree = ""; }; 22E0A81F111C44E100B04932 /* ConsoleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConsoleViewController.m; sourceTree = ""; }; 22E0A820111C44E100B04932 /* ConsoleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleViewController.h; sourceTree = ""; }; - 22E19E1D1386AFB900FBFE87 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Resources/en.lproj/Localizable.strings; sourceTree = ""; }; - 22E5AF6D1393F01800E4B43D /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastAddressBook.m; sourceTree = ""; }; - 22E5AF6E1393F01800E4B43D /* FastAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastAddressBook.h; sourceTree = ""; }; + 22E19E47138A67A000FBFE87 /* missed_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = missed_call.png; path = Resources/missed_call.png; sourceTree = ""; }; + 22E1A9E713CAF4AA00219531 /* video.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = video.plist; path = Settings.bundle/video.plist; sourceTree = ""; }; + 22E5B0AD133B5EA20044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; + 22E5B0AE133B5EA20044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; 22F2508B107141E100AC9B3F /* PhoneViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhoneViewController.h; sourceTree = ""; }; 22F2508C107141E100AC9B3F /* PhoneViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneViewController.m; sourceTree = ""; }; 22F2508D107141E100AC9B3F /* PhoneViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PhoneViewController.xib; sourceTree = ""; }; @@ -408,9 +582,22 @@ 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 = ""; }; 32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; }; + 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConferenceCallDetailView.xib; sourceTree = ""; }; + 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConferenceCallDetailView.h; sourceTree = ""; }; + 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConferenceCallDetailView.m; sourceTree = ""; }; + 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConferenceCallDetailCell.xib; sourceTree = ""; }; + 344ABDE41483E596007420B6 /* unverified.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = unverified.png; path = Resources/unverified.png; sourceTree = ""; }; + 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; + 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; }; + 34957F3E147D3FBF00DD7A09 /* secured.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = secured.png; path = Resources/secured.png; sourceTree = ""; }; + 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_vide.png; path = Resources/contact_vide.png; sourceTree = ""; }; + 5728D0B8149668000050AD1B /* TunnelManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TunnelManager.cc; path = submodules/tunnel/src/TunnelManager.cc; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; }; + 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; + 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; - F4D9F2801458AC3B0035B0D0 /* libsrtp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsrtp.a; path = "liblinphone-sdk/apple-darwin/lib/libsrtp.a"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -418,8 +605,21 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F4D9F2811458AC3B0035B0D0 /* libsrtp.a in Frameworks */, - F4D9F27F145897BB0035B0D0 /* libcrypto.a in Frameworks */, + 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */, + 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */, + 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */, + F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */, + F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */, + 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */, + 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */, + 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */, + 22276E8913C73DC000210156 /* CoreMedia.framework in Frameworks */, + 22276E8713C73D8A00210156 /* CoreVideo.framework in Frameworks */, + 22276E8313C73D3100210156 /* libavcodec.a in Frameworks */, + 22276E8413C73D3100210156 /* libavutil.a in Frameworks */, + 22276E8513C73D3100210156 /* libswscale.a in Frameworks */, + 22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */, + 22E5B0B0133B5EA20044EA25 /* libcrypto.a in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, @@ -440,9 +640,54 @@ 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */, 22A10F3B11F8960300373793 /* libortp.a in Frameworks */, 22D1B68112A3E0BE001AE361 /* libresolv.dylib in Frameworks */, - 2252941412F6DAA400DD9BFB /* libmediastreamer.a in Frameworks */, - 22BB1B9313311915005CD7AA /* libtunnel.a in Frameworks */, - F4D9F27B1458971C0035B0D0 /* libssl.a in Frameworks */, + 226F2ED61344B0EF00F6EF27 /* libopencore-amrwb.a in Frameworks */, + 226F2ED71344B0EF00F6EF27 /* libopencore-amrnb.a in Frameworks */, + 226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */, + 22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */, + 22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */, + 226183AD1472527D0037138E /* libSKP_SILK_SDK.a in Frameworks */, + 226183AE1472527D0037138E /* libsrtp.a in Frameworks */, + 226183B0147259670037138E /* libmssilk.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 22D8F15A147548E2008C97DB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */, + 22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */, + 22D8F15D147548E2008C97DB /* OpenGLES.framework in Frameworks */, + 22D8F15E147548E2008C97DB /* CoreMedia.framework in Frameworks */, + 22D8F15F147548E2008C97DB /* CoreVideo.framework in Frameworks */, + 22D8F163147548E2008C97DB /* libssl.a in Frameworks */, + 22D8F164147548E2008C97DB /* libcrypto.a in Frameworks */, + 22D8F165147548E2008C97DB /* Foundation.framework in Frameworks */, + 22D8F166147548E2008C97DB /* UIKit.framework in Frameworks */, + 22D8F167147548E2008C97DB /* CoreGraphics.framework in Frameworks */, + 22D8F168147548E2008C97DB /* CoreAudio.framework in Frameworks */, + 22D8F169147548E2008C97DB /* AudioToolbox.framework in Frameworks */, + 22D8F16A147548E2008C97DB /* libeXosip2.a in Frameworks */, + 22D8F16B147548E2008C97DB /* libgsm.a in Frameworks */, + 22D8F16C147548E2008C97DB /* libosip2.a in Frameworks */, + 22D8F16D147548E2008C97DB /* libosipparser2.a in Frameworks */, + 22D8F16E147548E2008C97DB /* libspeex.a in Frameworks */, + 22D8F16F147548E2008C97DB /* libspeexdsp.a in Frameworks */, + 22D8F170147548E2008C97DB /* AVFoundation.framework in Frameworks */, + 22D8F171147548E2008C97DB /* AddressBookUI.framework in Frameworks */, + 22D8F172147548E2008C97DB /* AddressBook.framework in Frameworks */, + 22D8F173147548E2008C97DB /* SystemConfiguration.framework in Frameworks */, + 22D8F174147548E2008C97DB /* libilbc.a in Frameworks */, + 22D8F175147548E2008C97DB /* libmsilbc.a in Frameworks */, + 22D8F176147548E2008C97DB /* CFNetwork.framework in Frameworks */, + 22D8F177147548E2008C97DB /* libortp.a in Frameworks */, + 22D8F178147548E2008C97DB /* libresolv.dylib in Frameworks */, + 22D8F179147548E2008C97DB /* libopencore-amrwb.a in Frameworks */, + 22D8F17A147548E2008C97DB /* libopencore-amrnb.a in Frameworks */, + 22D8F17B147548E2008C97DB /* libmsamr.a in Frameworks */, + 22D8F17E147548E2008C97DB /* libSKP_SILK_SDK.a in Frameworks */, + 22D8F17F147548E2008C97DB /* libsrtp.a in Frameworks */, + 22D8F180147548E2008C97DB /* libmssilk.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -452,6 +697,7 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + 2211DBBB14769C8200DEE054 /* CallDelegate.m */, 2214EB7012F84668002A5394 /* LinphoneUI */, 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, @@ -477,6 +723,13 @@ 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */, 2242D9C710D691F900E9963F /* GenericTabViewController.h */, 2242D9C810D691F900E9963F /* GenericTabViewController.m */, + 22E028B413B4CCBD0068A713 /* VideoViewController.h */, + 22E028B513B4CCBD0068A713 /* VideoViewController.m */, + 22E028B613B4CCBD0068A713 /* VideoViewController.xib */, + 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */, + 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, + 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */, + 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, ); path = Classes; sourceTree = ""; @@ -485,6 +738,7 @@ isa = PBXGroup; children = ( 1D6058910D05DD3D006BFB54 /* linphone.app */, + 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */, ); name = Products; sourceTree = ""; @@ -492,7 +746,6 @@ 220FAC77107654FC0068D98F /* include */ = { isa = PBXGroup; children = ( - 22DA44381354B3B6002CB522 /* tunnel */, 22C7560413265C6A007BC101 /* openssl */, 220FAC78107654FC0068D98F /* eXosip2 */, 220FAC82107654FC0068D98F /* gsm */, @@ -510,7 +763,6 @@ 220FAC78107654FC0068D98F /* eXosip2 */ = { isa = PBXGroup; children = ( - 22323039132A290F00F10886 /* eXosip_transport_hook.h */, 220FAC79107654FC0068D98F /* eX_call.h */, 220FAC7A107654FC0068D98F /* eX_message.h */, 220FAC7B107654FC0068D98F /* eX_options.h */, @@ -535,7 +787,6 @@ 220FAC84107654FC0068D98F /* linphone */ = { isa = PBXGroup; children = ( - 227187E2133355D200282C69 /* linphonecore_utils.h */, 220FAC85107654FC0068D98F /* config.h */, 220FAC86107654FC0068D98F /* linphonecore.h */, 220FAC87107654FC0068D98F /* lpconfig.h */, @@ -680,13 +931,17 @@ path = speex; sourceTree = ""; }; + 2211DB9614764F6B00DEE054 /* nogpl-thirdparties */ = { + isa = PBXGroup; + children = ( + 2211DB94147564B400DEE054 /* Settings.bundle */, + ); + name = "nogpl-thirdparties"; + sourceTree = ""; + }; 2214EB7012F84668002A5394 /* LinphoneUI */ = { isa = PBXGroup; children = ( - 22E5AF6D1393F01800E4B43D /* FastAddressBook.m */, - 22E5AF6E1393F01800E4B43D /* FastAddressBook.h */, - 22BB1D3413322A58005CD7AA /* UIEraseButton.m */, - 22BB1D3513322A58005CD7AA /* UIEraseButton.h */, 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */, 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */, 2248E99D12F801C200220D9C /* LinphoneManager.h */, @@ -708,29 +963,18 @@ 2218A5CE12F973450088A667 /* LogView.h */, 22C7555E1317E59C007BC101 /* UIBluetoothButton.h */, 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */, + 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */, + 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */, + 223963151393CFAE001DE689 /* FastAddressBook.h */, + 223963161393CFAF001DE689 /* FastAddressBook.m */, + 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */, + 22AA8B0013D83F6300B30535 /* UICamSwitch.m */, + 22D817AB147A9F33001CFB9C /* UIAddVideoButton.h */, + 22D817AC147A9F33001CFB9C /* UIAddVideoButton.m */, ); path = LinphoneUI; sourceTree = ""; }; - 22323023132A286700F10886 /* src */ = { - isa = PBXGroup; - children = ( - 22323035132A28AE00F10886 /* TunnelManager.hh */, - 22323036132A28AE00F10886 /* TunnelManager.cc */, - ); - name = src; - path = submodules/tunnel/src; - sourceTree = ""; - }; - 22A10D9F11F88C1F00373793 /* Products */ = { - isa = PBXGroup; - children = ( - 22A10DA311F88C1F00373793 /* liblinphone.a */, - 2233FEBC144885DC001824BF /* mediastream.app */, - ); - name = Products; - sourceTree = ""; - }; 22C7560413265C6A007BC101 /* openssl */ = { isa = PBXGroup; children = ( @@ -809,38 +1053,44 @@ path = openssl; sourceTree = ""; }; - 22DA44381354B3B6002CB522 /* tunnel */ = { - isa = PBXGroup; - children = ( - 2240EEE8135DE9A3006735F5 /* TunnelManager.hh */, - 22DA44391354B3B6002CB522 /* client.hh */, - 22DA443A1354B3B6002CB522 /* common.hh */, - 22DA443B1354B3B6002CB522 /* Makefile.am */, - 22DA443C1354B3B6002CB522 /* Makefile.in */, - ); - name = tunnel; - path = ../../../submodules/tunnel/include/tunnel; - sourceTree = ""; - }; 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( - F4D9F2801458AC3B0035B0D0 /* libsrtp.a */, - 22E19E1C1386AFB900FBFE87 /* Localizable.strings */, - 22BFFF79134F6AEA00997020 /* libssl.a */, - 22BFFF7A134F6AEA00997020 /* libcrypto.a */, - 22323023132A286700F10886 /* src */, - 22A10D9E11F88C1F00373793 /* liblinphone.xcodeproj */, + 5728D0B8149668000050AD1B /* TunnelManager.cc */, + 344ABDEF14850AE9007420B6 /* libc++.1.dylib */, + 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */, + 344ABDE71484E723007420B6 /* libzrtpcpp.a */, + 2211DB9614764F6B00DEE054 /* nogpl-thirdparties */, + 2211DB911475562600DEE054 /* liblinphone.a */, + 2211DB8F147555C800DEE054 /* libmediastreamer.a */, + 226183AF147259670037138E /* libmssilk.a */, + 226183AA1472527D0037138E /* libSKP_SILK_SDK.a */, + 226183AB1472527D0037138E /* libsrtp.a */, + 7066FC0B13E830E400EFC6DC /* libvpx.a */, + 70E542F413E147EB002BA2C0 /* QuartzCore.framework */, + 70E542F213E147E3002BA2C0 /* OpenGLES.framework */, + 22AA8AFB13D7125500B30535 /* libx264.a */, + 22AA8AFC13D7125500B30535 /* libmsx264.a */, + 22E1A9E713CAF4AA00219531 /* video.plist */, + 226B563E13CAF1CD00921595 /* audio.plist */, + 22276E8813C73DC000210156 /* CoreMedia.framework */, + 22276E8613C73D8A00210156 /* CoreVideo.framework */, + 22276E8013C73D3100210156 /* libavcodec.a */, + 22276E8113C73D3100210156 /* libavutil.a */, + 22276E8213C73D3100210156 /* libswscale.a */, + 2214783B1386A2030020F8B8 /* Localizable.strings */, 223148E51178A09900637D6A /* libmsilbc.a */, 223148E31178A08200637D6A /* libilbc.a */, 220FAD2810765B400068D98F /* libeXosip2.a */, 220FAD2910765B400068D98F /* libgsm.a */, - 220FAD2B10765B400068D98F /* libmediastreamer.a */, 220FAD2C10765B400068D98F /* libortp.a */, 220FAD2D10765B400068D98F /* libosip2.a */, 220FAD2E10765B400068D98F /* libosipparser2.a */, 220FAD2F10765B400068D98F /* libspeex.a */, 220FAD3010765B400068D98F /* libspeexdsp.a */, + 226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */, + 226F2ED41344B0EF00F6EF27 /* libopencore-amrnb.a */, + 226F2ED51344B0EF00F6EF27 /* libmsamr.a */, 220FAC77107654FC0068D98F /* include */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, @@ -860,7 +1110,9 @@ 2258633C11410BAC00C5A737 /* README */, 228697C311AC29B800E9E0CA /* CFNetwork.framework */, 22D1B68012A3E0BE001AE361 /* libresolv.dylib */, - 22BB1B9213311915005CD7AA /* libtunnel.a */, + 22E5B0AD133B5EA20044EA25 /* libssl.a */, + 22E5B0AE133B5EA20044EA25 /* libcrypto.a */, + 22D8F189147548E3008C97DB /* linphone copy-Info.plist */, ); name = CustomTemplate; sourceTree = ""; @@ -877,7 +1129,22 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 344ABDE41483E596007420B6 /* unverified.png */, + 34957F3E147D3FBF00DD7A09 /* secured.png */, + 34F2F677147D2E1C00A2D5E3 /* contact_vide.png */, + 2211DBCA1476BE7300DEE054 /* ajouter.png */, + 2211DBCB1476BE7300DEE054 /* clavier.png */, + 2211DBCC1476BE7300DEE054 /* contact.png */, + 2211DBCD1476BE7300DEE054 /* effacer.png */, + 2211DBCE1476BE7300DEE054 /* grouper.png */, + 2211DBCF1476BE7300DEE054 /* HP_inverse.png */, + 2211DBD01476BE7300DEE054 /* HP.png */, + 2211DBD11476BE7300DEE054 /* micro_inverse.png */, + 2211DBD21476BE7300DEE054 /* micro.png */, + 2211DBD31476BE7300DEE054 /* pause_inactif.png */, + 2211DBD41476BE7300DEE054 /* pause.png */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, + 22E19E47138A67A000FBFE87 /* missed_call.png */, 228B19AE130290C500F154D3 /* iTunesArtwork */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 225CB2F911ABB76400628906 /* linphone-banner.png */, @@ -936,6 +1203,24 @@ productReference = 1D6058910D05DD3D006BFB54 /* linphone.app */; productType = "com.apple.product-type.application"; }; + 22D8F11D147548E2008C97DB /* linphone-no-gpl-thirdparties */ = { + isa = PBXNativeTarget; + buildConfigurationList = 22D8F182147548E2008C97DB /* Build configuration list for PBXNativeTarget "linphone-no-gpl-thirdparties" */; + buildPhases = ( + 22D8F11E147548E2008C97DB /* Resources */, + 22D8F143147548E2008C97DB /* Sources */, + 22D8F15A147548E2008C97DB /* Frameworks */, + 22D8F181147548E2008C97DB /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "linphone-no-gpl-thirdparties"; + productName = linphone; + productReference = 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -954,36 +1239,14 @@ ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 22A10D9F11F88C1F00373793 /* Products */; - ProjectRef = 22A10D9E11F88C1F00373793 /* liblinphone.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 1D6058900D05DD3D006BFB54 /* linphone */, + 22D8F11D147548E2008C97DB /* linphone-no-gpl-thirdparties */, ); }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - 2233FEBC144885DC001824BF /* mediastream.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = mediastream.app; - remoteRef = 2233FEBB144885DC001824BF /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 22A10DA311F88C1F00373793 /* liblinphone.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = liblinphone.a; - remoteRef = 22A10DA211F88C1F00373793 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ 1D60588D0D05DD3D006BFB54 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -1019,7 +1282,85 @@ 222A483412F7176F0075F07F /* IncallViewController.xib in Resources */, 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */, 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */, + 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, + 22E19E48138A67A000FBFE87 /* missed_call.png in Resources */, + 22E028B813B4CCBD0068A713 /* VideoViewController.xib in Resources */, + 226B563F13CAF1CD00921595 /* audio.plist in Resources */, + 22E1A9E813CAF4AA00219531 /* video.plist in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, + 2211DBD51476BE7300DEE054 /* ajouter.png in Resources */, + 2211DBD71476BE7300DEE054 /* clavier.png in Resources */, + 2211DBD91476BE7300DEE054 /* contact.png in Resources */, + 2211DBDB1476BE7300DEE054 /* effacer.png in Resources */, + 2211DBDD1476BE7300DEE054 /* grouper.png in Resources */, + 2211DBDF1476BE7300DEE054 /* HP_inverse.png in Resources */, + 2211DBE11476BE7300DEE054 /* HP.png in Resources */, + 2211DBE31476BE7300DEE054 /* micro_inverse.png in Resources */, + 2211DBE51476BE7300DEE054 /* micro.png in Resources */, + 2211DBE71476BE7300DEE054 /* pause_inactif.png in Resources */, + 2211DBE91476BE7300DEE054 /* pause.png in Resources */, + 34F2F678147D2E1C00A2D5E3 /* contact_vide.png in Resources */, + 34957F3F147D3FBF00DD7A09 /* secured.png in Resources */, + 344ABD72147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */, + 344ABD7A147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */, + 344ABDE51483E596007420B6 /* unverified.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 22D8F11E147548E2008C97DB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 22D8F11F147548E2008C97DB /* linphonerc in Resources */, + 22D8F120147548E2008C97DB /* PhoneViewController.xib in Resources */, + 22D8F121147548E2008C97DB /* ringback.wav in Resources */, + 22D8F122147548E2008C97DB /* PhoneMainView.xib in Resources */, + 22D8F124147548E2008C97DB /* untitled.plist in Resources */, + 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */, + 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */, + 22D8F127147548E2008C97DB /* in_call.png in Resources */, + 22D8F128147548E2008C97DB /* out_call.png in Resources */, + 22D8F129147548E2008C97DB /* mic_active.png in Resources */, + 22D8F12A147548E2008C97DB /* mic_muted.png in Resources */, + 22D8F12B147548E2008C97DB /* Speaker-32-on.png in Resources */, + 22D8F12C147548E2008C97DB /* Speaker-32-off.png in Resources */, + 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */, + 22D8F12E147548E2008C97DB /* icone-linphone-57.png in Resources */, + 22D8F12F147548E2008C97DB /* startcall-green.png in Resources */, + 22D8F130147548E2008C97DB /* stopcall-red.png in Resources */, + 22D8F131147548E2008C97DB /* contact-orange.png in Resources */, + 22D8F132147548E2008C97DB /* dialer-orange.png in Resources */, + 22D8F133147548E2008C97DB /* history-orange.png in Resources */, + 22D8F134147548E2008C97DB /* clavier-01-106px.png in Resources */, + 22D8F135147548E2008C97DB /* clavier-01-108px.png in Resources */, + 22D8F136147548E2008C97DB /* clavier-01-160px.png in Resources */, + 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */, + 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */, + 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */, + 22D8F13A147548E2008C97DB /* IncallViewController.xib in Resources */, + 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */, + 22D8F13C147548E2008C97DB /* iTunesArtwork in Resources */, + 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */, + 22D8F13E147548E2008C97DB /* missed_call.png in Resources */, + 22D8F13F147548E2008C97DB /* VideoViewController.xib in Resources */, + 22D8F140147548E2008C97DB /* audio.plist in Resources */, + 22D8F141147548E2008C97DB /* video.plist in Resources */, + 22D8F142147548E2008C97DB /* rootca.pem in Resources */, + 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, + 2211DBD61476BE7300DEE054 /* ajouter.png in Resources */, + 2211DBD81476BE7300DEE054 /* clavier.png in Resources */, + 2211DBDA1476BE7300DEE054 /* contact.png in Resources */, + 2211DBDC1476BE7300DEE054 /* effacer.png in Resources */, + 2211DBDE1476BE7300DEE054 /* grouper.png in Resources */, + 2211DBE01476BE7300DEE054 /* HP_inverse.png in Resources */, + 2211DBE21476BE7300DEE054 /* HP.png in Resources */, + 2211DBE41476BE7300DEE054 /* micro_inverse.png in Resources */, + 2211DBE61476BE7300DEE054 /* micro.png in Resources */, + 2211DBE81476BE7300DEE054 /* pause_inactif.png in Resources */, + 2211DBEA1476BE7300DEE054 /* pause.png in Resources */, + 344ABD73147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */, + 344ABD7B147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */, + 344ABDE61483E596007420B6 /* unverified.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1048,19 +1389,58 @@ 22968A8812F87C2000588287 /* UIDuration.m in Sources */, 2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */, 22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */, - 22323037132A28AE00F10886 /* TunnelManager.cc in Sources */, - 22BB1D3613322A58005CD7AA /* UIEraseButton.m in Sources */, - 22E5AF6F1393F01800E4B43D /* FastAddressBook.m in Sources */, + 22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */, + 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */, + 22E028B713B4CCBD0068A713 /* VideoViewController.m in Sources */, + 22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */, + 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */, + 2211DBC014769CB200DEE054 /* IncallViewController.m in Sources */, + 22D817AD147A9F33001CFB9C /* UIAddVideoButton.m in Sources */, + 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 22D8F143147548E2008C97DB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 22D8F144147548E2008C97DB /* main.m in Sources */, + 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */, + 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */, + 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */, + 22D8F148147548E2008C97DB /* CallHistoryTableViewController.m in Sources */, + 22D8F149147548E2008C97DB /* GenericTabViewController.m in Sources */, + 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */, + 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */, + 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */, + 22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */, + 22D8F14E147548E2008C97DB /* UICallButton.m in Sources */, + 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */, + 22D8F150147548E2008C97DB /* UIToggleButton.m in Sources */, + 22D8F151147548E2008C97DB /* UIMuteButton.m in Sources */, + 22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */, + 22D8F153147548E2008C97DB /* UIDuration.m in Sources */, + 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */, + 22D8F155147548E2008C97DB /* UIBluetoothButton.m in Sources */, + 22D8F156147548E2008C97DB /* UIEraseButton.m in Sources */, + 22D8F157147548E2008C97DB /* FastAddressBook.m in Sources */, + 22D8F158147548E2008C97DB /* VideoViewController.m in Sources */, + 22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */, + 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */, + 2211DBC114769CB300DEE054 /* IncallViewController.m in Sources */, + 22D817AE147A9F33001CFB9C /* UIAddVideoButton.m in Sources */, + 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, + 5728D0B9149668000050AD1B /* TunnelManager.cc in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - 22E19E1C1386AFB900FBFE87 /* Localizable.strings */ = { + 2214783B1386A2030020F8B8 /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( - 22E19E1D1386AFB900FBFE87 /* en */, + 2214783C1386A2030020F8B8 /* en */, ); name = Localizable.strings; sourceTree = ""; @@ -1073,18 +1453,22 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( - armv7, + "$(ARCHS_STANDARD_32_BIT)", armv6, ); - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = linphone_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = IN_LINPHONE; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + HAVE_X264, + HAVE_SILK, + ); GCC_VERSION = com.apple.compilers.llvmgcc42; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, @@ -1095,29 +1479,21 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - submodules/tunnel/include, ); INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); - "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( - "\"$(SRCROOT)/submodules/build/$(CONFIGURATION)-iphoneos\"", - "$(inherited)", - ); - "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=*]" = ( - "\"$(SRCROOT)/submodules/build/$(CONFIGURATION)-iphonesimulator\"", - "$(inherited)", - ); - OTHER_LDFLAGS = ( - "-l", - linphone, - ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ""; PRODUCT_NAME = linphone; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; }; name = Debug; }; @@ -1125,7 +1501,7 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: jehan monnier"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: jehan monnier (E8MYPN2NXL)"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -1134,7 +1510,7 @@ LIBRARY_SEARCH_PATHS = ""; LINK_WITH_STANDARD_LIBRARIES = YES; PREBINDING = NO; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = "5B8A949D-21D7-4FB1-B7C0-6438B7297840"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "DD608A20-B0EC-49C6-BFD1-815C97DF3844"; SDKROOT = iphoneos; }; name = DistributionAdhoc; @@ -1144,7 +1520,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( - armv7, + "$(ARCHS_STANDARD_32_BIT)", armv6, ); CODE_SIGN_ENTITLEMENTS = untitled.plist; @@ -1152,11 +1528,15 @@ COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; + GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = linphone_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = IN_LINPHONE; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + HAVE_X264, + HAVE_SILK, + ); GCC_VERSION = com.apple.compilers.llvmgcc42; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, @@ -1167,32 +1547,314 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - submodules/tunnel/include, ); INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); - "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( - "\"$(SRCROOT)/submodules/build/$(CONFIGURATION)-iphoneos\"", - "$(inherited)", - ); - "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=*]" = ( - "\"$(SRCROOT)/submodules/build/$(CONFIGURATION)-iphonesimulator\"", - "$(inherited)", - ); - OTHER_LDFLAGS = ( - "-l", - linphone, - ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ""; PRODUCT_NAME = linphone; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; }; name = DistributionAdhoc; }; + 22D8F183147548E2008C97DB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + arm6, + ); + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = linphone_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + ); + GCC_VERSION = com.apple.compilers.llvmgcc42; + 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, + submodules/tunnel/include/, + ); + INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(BUILT_PRODUCTS_DIR)", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ( + "-l", + linphone, + "-l", + mediastreamer, + "-l", + tunnel, + ); + PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 22D8F184147548E2008C97DB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + arm6, + ); + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = linphone_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + ); + GCC_VERSION = com.apple.compilers.llvmgcc42; + 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, + submodules/tunnel/include/, + ); + INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(BUILT_PRODUCTS_DIR)", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ( + "-l", + linphone, + "-l", + mediastreamer, + "-l", + tunnel, + ); + PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; + 22D8F185147548E2008C97DB /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + arm6, + ); + CODE_SIGN_ENTITLEMENTS = untitled.plist; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = linphone_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + ); + GCC_VERSION = com.apple.compilers.llvmgcc42; + 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, + submodules/tunnel/include/, + ); + INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(BUILT_PRODUCTS_DIR)", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ( + "-l", + linphone, + "-l", + mediastreamer, + "-l", + tunnel, + ); + PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Distribution; + }; + 22D8F186147548E2008C97DB /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + arm6, + ); + CODE_SIGN_ENTITLEMENTS = untitled.plist; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = linphone_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + ); + GCC_VERSION = com.apple.compilers.llvmgcc42; + 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, + submodules/tunnel/include/, + ); + INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(BUILT_PRODUCTS_DIR)", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ( + "-l", + linphone, + "-l", + mediastreamer, + "-l", + tunnel, + ); + PRODUCT_NAME = "linphone-no-gpl-thirdparties"; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; + }; + name = DistributionAdhoc; + }; + 22F3D55513CC3C9100A0DA02 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ""; + LINK_WITH_STANDARD_LIBRARIES = YES; + PREBINDING = NO; + SDKROOT = iphoneos; + }; + name = Release; + }; + 22F3D55613CC3C9100A0DA02 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = linphone_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + HAVE_X264, + HAVE_SILK, + ); + GCC_VERSION = com.apple.compilers.llvmgcc42; + 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, + ); + INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(BUILT_PRODUCTS_DIR)", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = linphone; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; 22F51EE7107FA53D00F98953 /* Distribution */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1216,19 +1878,24 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( - armv7, + "$(ARCHS_STANDARD_32_BIT)", armv6, ); CODE_SIGN_ENTITLEMENTS = untitled.plist; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: jehan monnier"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; + GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = linphone_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = IN_LINPHONE; - GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + IN_LINPHONE, + VIDEO_ENABLED, + HAVE_X264, + HAVE_SILK, + ); + GCC_VERSION = com.apple.compilers.llvmgcc42; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -1238,29 +1905,21 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - submodules/tunnel/include, ); INFOPLIST_FILE = "linphone-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 3.1; LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", + "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", + "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); - "LIBRARY_SEARCH_PATHS[sdk=iphoneos*][arch=*]" = ( - "\"$(SRCROOT)/submodules/build/$(CONFIGURATION)-iphoneos\"", - "$(inherited)", - ); - "LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*][arch=*]" = ( - "\"$(SRCROOT)/submodules/build/$(CONFIGURATION)-iphonesimulator\"", - "$(inherited)", - ); - OTHER_LDFLAGS = ( - "-l", - linphone, - ); + ORDER_FILE = ""; + OTHER_LDFLAGS = ""; PRODUCT_NAME = linphone; - "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; SDKROOT = iphoneos; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = 1; }; name = Distribution; }; @@ -1288,16 +1947,29 @@ isa = XCConfigurationList; buildConfigurations = ( 1D6058940D05DD3E006BFB54 /* Debug */, + 22F3D55613CC3C9100A0DA02 /* Release */, 22F51EE8107FA53D00F98953 /* Distribution */, 228B19A71302902F00F154D3 /* DistributionAdhoc */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + 22D8F182147548E2008C97DB /* Build configuration list for PBXNativeTarget "linphone-no-gpl-thirdparties" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 22D8F183147548E2008C97DB /* Debug */, + 22D8F184147548E2008C97DB /* Release */, + 22D8F185147548E2008C97DB /* Distribution */, + 22D8F186147548E2008C97DB /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "linphone" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4F08A954540054247B /* Debug */, + 22F3D55513CC3C9100A0DA02 /* Release */, 22F51EE7107FA53D00F98953 /* Distribution */, 228B19A61302902F00F154D3 /* DistributionAdhoc */, ); diff --git a/linphonerc b/linphonerc index 6f894b055..eee6763a7 100644 --- a/linphonerc +++ b/linphonerc @@ -1,11 +1,16 @@ [net] -download_bw=128 -upload_bw=128 +download_bw=380 +upload_bw=380 firewall_policy=0 mtu=0 [sip] sip_random_port=1 +sip_port=5060 +sip_tcp_random_port=1 +sip_tcp_port=0 +sip_tls_random_port=1 +sip_tls_port=0 guess_hostname=1 contact=sip:toto@unknown-host inc_timeout=15 @@ -31,4 +36,12 @@ echocancellation=0 [misc] history_max_size=30 -max_calls=1 +max_calls=3 + +[video] +display=1 +capture=1 +show_local=0 +enabled=1 +size=ios-medium + diff --git a/nogpl-thirdparties/.DS_Store b/nogpl-thirdparties/.DS_Store new file mode 100644 index 000000000..9ec58e618 Binary files /dev/null and b/nogpl-thirdparties/.DS_Store differ diff --git a/nogpl-thirdparties/Settings.bundle/Root.plist b/nogpl-thirdparties/Settings.bundle/Root.plist new file mode 100644 index 000000000..5bc0378b6 --- /dev/null +++ b/nogpl-thirdparties/Settings.bundle/Root.plist @@ -0,0 +1,207 @@ + + + + + PreferenceSpecifiers + + + Title + SIP account + Type + PSGroupSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + username_preference + KeyboardType + Alphabet + Title + User name + Type + PSTextFieldSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + password_preference + KeyboardType + Alphabet + Title + Password + Type + PSTextFieldSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + domain_preference + KeyboardType + URL + Title + Domain + Type + PSTextFieldSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + proxy_preference + KeyboardType + URL + Title + Proxy + Type + PSTextFieldSpecifier + + + DefaultValue + + Key + outbound_proxy_preference + Title + Outbound proxy + Type + PSToggleSwitchSpecifier + + + Title + Media + Type + PSGroupSpecifier + + + File + audio + Title + Audio + Type + PSChildPaneSpecifier + + + File + video + Title + Video + Type + PSChildPaneSpecifier + + + Title + Advanced + Type + PSGroupSpecifier + + + DefaultValue + + Key + debugenable_preference + Title + Debug + Type + PSToggleSwitchSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + prefix_preference + KeyboardType + NumberPad + Title + Prefix + Type + PSTextFieldSpecifier + + + DefaultValue + + Key + substitute_+_by_00_preference + Title + Substitue + by 00 + Type + PSToggleSwitchSpecifier + + + DefaultValue + udp + Key + transport_preference + Title + Transport + Titles + + udp + tcp + tls + + Type + PSMultiValueSpecifier + Values + + udp + tcp + tls + + + + DefaultValue + + Key + enable_srtp_preference + Title + Secure rtp + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + backgroundmode_preference + Title + Background mode + Type + PSToggleSwitchSpecifier + + + StringsTable + Root + + diff --git a/nogpl-thirdparties/Settings.bundle/audio.plist b/nogpl-thirdparties/Settings.bundle/audio.plist new file mode 100644 index 000000000..670182e79 --- /dev/null +++ b/nogpl-thirdparties/Settings.bundle/audio.plist @@ -0,0 +1,85 @@ + + + + + PreferenceSpecifiers + + + Title + Codecs + Type + PSGroupSpecifier + + + DefaultValue + + Key + speex_16k_preference + Title + Speex 16Khz + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + speex_8k_preference + Title + Speex 8Khz + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + g722_preference + Title + G722 + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + gsm_8k_preference + Title + GSM + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + ilbc_preference + Title + ILBC + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + pcmu_preference + Title + PCMU + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + pcma_preference + Title + PCMA + Type + PSToggleSwitchSpecifier + + + + diff --git a/nogpl-thirdparties/Settings.bundle/en.lproj/Root.strings b/nogpl-thirdparties/Settings.bundle/en.lproj/Root.strings new file mode 100644 index 000000000..8cd87b9d6 Binary files /dev/null and b/nogpl-thirdparties/Settings.bundle/en.lproj/Root.strings differ diff --git a/nogpl-thirdparties/Settings.bundle/video.plist b/nogpl-thirdparties/Settings.bundle/video.plist new file mode 100644 index 000000000..5df2306c8 --- /dev/null +++ b/nogpl-thirdparties/Settings.bundle/video.plist @@ -0,0 +1,35 @@ + + + + + PreferenceSpecifiers + + + Type + PSToggleSwitchSpecifier + Title + Enable video + Key + enable_video_preference + DefaultValue + + + + Title + Codecs + Type + PSGroupSpecifier + + + DefaultValue + + Key + vp8_preference + Title + VP8 + Type + PSToggleSwitchSpecifier + + + + diff --git a/submodules/build/Makefile b/submodules/build/Makefile index dbf50b7e7..6dbb02ecf 100644 --- a/submodules/build/Makefile +++ b/submodules/build/Makefile @@ -19,11 +19,35 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################ -all: - make -f builder-iphone-simulator.mk all build-tunnel\ - && make -f builder-iphone-os.mk all build-tunnel\ - && make -f builder-iphone-os.mk host=armv7-apple-darwin all build-tunnel\ - && make -f builder-iphone-os.mk delivery-sdk + +enable_gpl_third_parties=yes + +.NOTPARALLEL all: build warning +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 "*****************************************************************" +else +warning: + @echo + @echo "*****************************************************************" + @echo "*****************************************************************" + @echo "*****linphone SDK without GPL code ******" + @echo "*****************************************************************" + @echo "*****************************************************************" +endif + +build: + make -f builder-iphone-os.mk all build-tunnel enable_gpl_third_parties=$(enable_gpl_third_parties) \ + && make -f builder-iphone-simulator.mk all build-tunnel enable_gpl_third_parties=$(enable_gpl_third_parties)\ + && make -f builder-iphone-os.mk host=armv7-apple-darwin all build-tunnel enable_gpl_third_parties=$(enable_gpl_third_parties)\ + && make -f builder-iphone-os.mk delivery-sdk + clean: make -f builder-iphone-simulator.mk clean clean-tunnel\ && make -f builder-iphone-os.mk clean clean-tunnel\ diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk index bf36f7195..c55d0cc8e 100644 --- a/submodules/build/builder-iphone-os.mk +++ b/submodules/build/builder-iphone-os.mk @@ -21,11 +21,9 @@ ############################################################################ host?=armv6-apple-darwin -enable_zrtp?=no -enable_silk?=no config_site:=iphone-config.site library_mode:= --disable-shared --enable-static -linphone_configure_controls= --disable-video \ +linphone_configure_controls= \ --disable-strict \ --disable-nls \ --with-readline=none \ @@ -33,23 +31,12 @@ linphone_configure_controls= --disable-video \ --enable-console_ui=no \ --enable-ssl-hmac=no \ --enable-ssl=yes \ + --disable-theora \ + --disable-sdl \ + --disable-x11 \ --with-gsm=$(prefix) \ --disable-tests \ - LIBZRTPCPP_CFLAGS="-I$(prefix)/include" \ - LIBZRTPCPP_LIBS="-L$(prefix)/lib -lzrtpcpp -lcrypto" \ - SRTP_CFLAGS="-I$(prefix)/include" \ - SRTP_LIBS="-L$(prefix)/lib -lsrtp -lcrypto" \ - SRTP_CFLAGS="-I$(prefix)/include" \ - SPEEX_CFLAGS="-I$(prefix)/include" \ - SPEEXDSP_CFLAGS="-I$(prefix)/include" \ - SPEEXDSP_LIBS="-L$(prefix)/lib -lspeexdsp" \ - SPEEX_LIBS="-L$(prefix)/lib -lspeexdsp -lspeex " \ - OPENSSL_CFLAGS="-I$(prefix)/include" \ - OPENSSL_LIBS="-L$(prefix)/lib -lssl -lcrypto" -ifeq ($(enable_zrtp),yes) - linphone_configure_controls+= --with-srtp=$(prefix) --enable-zrtp=yes --disable-tests -endif - + --with-srtp=$(prefix) #path BUILDER_SRC_DIR?=$(shell pwd)/../ @@ -58,17 +45,34 @@ BUILDER_BUILD_DIR?=$(shell pwd)/../build-$(host) LINPHONE_SRC_DIR=$(BUILDER_SRC_DIR)/linphone LINPHONE_BUILD_DIR=$(BUILDER_BUILD_DIR)/linphone -osip_dir?=externals/osip +all: build-linphone build-msilbc build-msamr build-msx264 build-mssilk -eXosip_dir?=externals/exosip +$(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 -speex_dir?=externals/speex +$(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 -gsm_dir?=externals/gsm +ifeq ($(enable_gpl_third_parties),yes) +linphone_configure_controls+= --enable-ffmpeg --enable-zrtp +detect_gpl_mode_switch: $(LINPHONE_BUILD_DIR)/enable_gpl_third_parties + +else +linphone_configure_controls+= --disable-ffmpeg --disable-zrtp +detect_gpl_mode_switch: $(LINPHONE_BUILD_DIR)/disable_gpl_third_parties + +endif -srtp_dir?=externals/srtp - -zrtpcpp_dir?=externals/zrtpcpp +osip_dir=externals/osip +eXosip_dir=externals/exosip +speex_dir=externals/speex +gsm_dir=externals/gsm MSILBC_SRC_DIR:=$(BUILDER_SRC_DIR)/msilbc MSILBC_BUILD_DIR:=$(BUILDER_BUILD_DIR)/msilbc @@ -77,35 +81,39 @@ LIBILBC_SRC_DIR:=$(BUILDER_SRC_DIR)/libilbc-rfc3951 LIBILBC_BUILD_DIR:=$(BUILDER_BUILD_DIR)/libilbc-rfc3951 ifneq (,$(findstring arm,$(host))) - SPEEX_CONFIGURE_OPTION := --enable-fixed-point --disable-float-api - #SPEEX_CONFIGURE_OPTION := --enable-arm5e-asm --enable-fixed-point + #SPEEX_CONFIGURE_OPTION := --enable-fixed-point --disable-float-api + CFLAGS := $(CFLAGS) -marm + SPEEX_CONFIGURE_OPTION := --disable-float-api --enable-arm5e-asm --enable-fixed-point endif +ifneq (,$(findstring armv7,$(host))) + SPEEX_CONFIGURE_OPTION += --enable-armv7neon-asm +endif prefix?=$(BUILDER_SRC_DIR)/../liblinphone-sdk/$(host) -.NOTPARALLEL all: build-linphone build-msilbc build-msamr build-mssilk clean-makefile: clean-makefile-linphone clean: clean-linphone init: mkdir -p $(prefix)/include - mkdir -p $(prefix)/lib + mkdir -p $(prefix)/lib/pkgconfig veryclean: veryclean-linphone rm -rf $(BUILDER_BUILD_DIR) -.NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm $(LINPHONE_BUILD_DIR)/Makefile + +.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 cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_PATH=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install -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-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 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-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 #-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-mssilk +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 cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile @@ -189,12 +197,11 @@ $(BUILDER_SRC_DIR)/$(speex_dir)/configure: $(BUILDER_BUILD_DIR)/$(speex_dir)/Makefile: $(BUILDER_SRC_DIR)/$(speex_dir)/configure mkdir -p $(BUILDER_BUILD_DIR)/$(speex_dir) cd $(BUILDER_BUILD_DIR)/$(speex_dir)/\ - && CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ - $(BUILDER_SRC_DIR)/$(speex_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} --disable-oggtest $(SPEEX_CONFIGURE_OPTION) + && CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) CFLAGS="$(CFLAGS) -O2" \ + $(BUILDER_SRC_DIR)/$(speex_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} --disable-ogg $(SPEEX_CONFIGURE_OPTION) build-speex: $(BUILDER_BUILD_DIR)/$(speex_dir)/Makefile - cd $(BUILDER_BUILD_DIR)/$(speex_dir)/libspeex && make && make install - cd $(BUILDER_BUILD_DIR)/$(speex_dir)/include && make && make install + cd $(BUILDER_BUILD_DIR)/$(speex_dir) && make && make install clean-speex: cd $(BUILDER_BUILD_DIR)/$(speex_dir) && make clean @@ -294,7 +301,7 @@ multi-arch: if test -f "$$i386_path"; then \ echo "Mixing $$archive and $$i386_path into $$destpath"; \ mkdir -p `dirname $$destpath` ; \ - lipo -create -arch armv6 $$archive -arch armv7 $$armv7_path -arch i386 $$i386_path -output $$destpath; \ + lipo -create $$archive $$armv7_path $$i386_path -output $$destpath; \ else \ echo "WARNING: archive `basename $$archive` exists in arm tree but does not exists in i386 tree."; \ fi \ diff --git a/submodules/build/builders.d/ffmpeg.mk b/submodules/build/builders.d/ffmpeg.mk new file mode 100644 index 000000000..04f363f4f --- /dev/null +++ b/submodules/build/builders.d/ffmpeg.mk @@ -0,0 +1,47 @@ +ffmpeg_configure_options=\ + --disable-mmx \ + --enable-cross-compile \ + --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 \ + --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) +# --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 +endif + +ifneq (,$(findstring armv7,$(host))) + ffmpeg_configure_options+= --enable-neon --cpu=cortex-a8 +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 + 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) + +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 + +clean-ffmpeg: + cd $(BUILDER_BUILD_DIR)/$(ffmpeg_dir) && make clean + +veryclean-ffmpeg: + cd $(BUILDER_BUILD_DIR)/$(ffmpeg_dir) && make distclean + +clean-makefile-ffmpeg: + cd $(BUILDER_BUILD_DIR)/$(ffmpeg_dir) && rm -f config.mak + diff --git a/submodules/build/builders.d/ffmpeg.patch b/submodules/build/builders.d/ffmpeg.patch new file mode 100644 index 000000000..05e080905 --- /dev/null +++ b/submodules/build/builders.d/ffmpeg.patch @@ -0,0 +1,20 @@ +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; + } + diff --git a/submodules/build/builders.d/libvpx.mk b/submodules/build/builders.d/libvpx.mk new file mode 100644 index 000000000..793c0c33d --- /dev/null +++ b/submodules/build/builders.d/libvpx.mk @@ -0,0 +1,39 @@ +libvpx_configure_options=\ + --enable-static --disable-shared \ + --disable-examples +# --extra-cflags="-isysroot $$SYSROOT_PATH " +# -Wl,-syslibroot,$$SYSROOT_PATH " \ + --enable-error-concealment --disable-examples + +ifneq (,$(findstring armv6,$(host))) + libvpx_configure_options+= --target=armv6-darwin-gcc --cpu=arm1176jzf-s +else ifneq (,$(findstring armv7,$(host))) + libvpx_configure_options+= --target=armv7-darwin-gcc --cpu=cortex-a8 +else + libvpx_configure_options+= --force-target=x86-darwin10-gcc +endif +libvpx_dir?=externals/libvpx +$(BUILDER_SRC_DIR)/$(libvpx_dir)/patched : + cd $(BUILDER_SRC_DIR)/$(libvpx_dir) \ + && git apply $(BUILDER_SRC_DIR)/build/builders.d/libvpx.patch \ + && touch $(BUILDER_SRC_DIR)/$(libvpx_dir)/patched + +$(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk: $(BUILDER_SRC_DIR)/$(libvpx_dir)/patched + mkdir -p $(BUILDER_BUILD_DIR)/$(libvpx_dir) + cd $(BUILDER_BUILD_DIR)/$(libvpx_dir)/ \ + && host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \ + && $(BUILDER_SRC_DIR)/$(libvpx_dir)/configure --prefix=$(prefix) $(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 + +clean-libvpx: + cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && make clean + +veryclean-libvpx: + -cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && make distclean + rm -rf $(BUILDER_BUILD_DIR)/$(libvpx_dir) + +clean-makefile-libvpx: + cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && rm -f config.mak + diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch new file mode 100644 index 000000000..effa15f01 --- /dev/null +++ b/submodules/build/builders.d/libvpx.patch @@ -0,0 +1,25 @@ +diff --git a/build/make/configure.sh b/build/make/configure.sh +index 009a6c4..1cd1ea8 100755 +--- a/build/make/configure.sh ++++ b/build/make/configure.sh +@@ -729,7 +729,7 @@ process_common_toolchain() { + TOOLCHAIN_PATH=${SDK_PATH}/usr/bin + CC=${TOOLCHAIN_PATH}/gcc + AR=${TOOLCHAIN_PATH}/ar +- LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-gcc-4.2.1 ++ LD=${TOOLCHAIN_PATH}/gcc + AS=${TOOLCHAIN_PATH}/as + STRIP=${TOOLCHAIN_PATH}/strip + NM=${TOOLCHAIN_PATH}/nm +@@ -741,9 +741,9 @@ 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} -Wl,-syslibroot,${SDK_PATH}/SDKs/iPhoneOS5.0.sdk" + +- add_cflags "-isysroot ${SDK_PATH}/SDKs/iPhoneOS4.3.sdk" ++ add_cflags "-isysroot ${SDK_PATH}/SDKs/iPhoneOS5.0.sdk" + + # This should be overridable + alt_libc=${SDK_PATH}/SDKs/iPhoneOS4.3.sdk diff --git a/submodules/build/builders.d/mssilk.mk b/submodules/build/builders.d/mssilk.mk index 706496c8c..bffd7de26 100644 --- a/submodules/build/builders.d/mssilk.mk +++ b/submodules/build/builders.d/mssilk.mk @@ -20,6 +20,7 @@ # ############################################################################ mssilk_dir?=mssilk +enable_silk?=yes $(BUILDER_SRC_DIR)/$(mssilk_dir)/configure: echo -e "\033[01;32m Running autogen for mssilk in $(BUILDER_SRC_DIR)/$(mssilk_dir) \033[0m" diff --git a/submodules/build/builders.d/msx264.mk b/submodules/build/builders.d/msx264.mk new file mode 100644 index 000000000..aaf1e5e00 --- /dev/null +++ b/submodules/build/builders.d/msx264.mk @@ -0,0 +1,43 @@ +############################################################################ +# msx264.mk +# Copyright (C) 2011 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. +# +############################################################################ +msx264_dir?=msx264 +$(BUILDER_SRC_DIR)/$(msx264_dir)/configure: + cd $(BUILDER_SRC_DIR)/$(msx264_dir) && ./autogen.sh + +$(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) \ + $(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 + +clean-msx264: clean-x264 + cd $(BUILDER_BUILD_DIR)/$(msx264_dir) && make clean + +veryclean-msx264: veryclean-x264 + -cd $(BUILDER_BUILD_DIR)/$(msx264_dir) && make distclean + -cd $(BUILDER_SRC_DIR)/$(msx264_dir) && rm -f configure + +clean-makefile-msx264: clean-makefile-x264 + cd $(BUILDER_BUILD_DIR)/$(msx264_dir) && rm -f Makefile diff --git a/submodules/build/builders.d/openssl.mk b/submodules/build/builders.d/openssl.mk index e594ba94f..076c81563 100644 --- a/submodules/build/builders.d/openssl.mk +++ b/submodules/build/builders.d/openssl.mk @@ -19,13 +19,15 @@ $(OPENSSL_BUILD_DIR)/Configure: $(OPENSSL_BUILD_DIR)/Makefile: $(OPENSSL_BUILD_DIR)/Configure cd $(OPENSSL_BUILD_DIR) \ && host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \ - && ./Configure -openssldir=$(prefix) --cross-compile-prefix=$$SDK_BIN_PATH/ BSD-generic32 no-asm no-dso + && ./Configure --prefix=$(prefix) --cross-compile-prefix=$$SDK_BIN_PATH/ BSD-generic32 no-asm build-openssl: $(OPENSSL_BUILD_DIR)/Makefile cd $(OPENSSL_BUILD_DIR) && host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \ - && make CC="$$CC" build_crypto build_ssl \ + && make CC="$$CC" build_crypto build_ssl libcrypto.pc libssl.pc\ && cp -r include $(prefix)/ \ - && cp lib*.a $(prefix)/lib + && cp lib*.a $(prefix)/lib \ + && cp libcrypto.pc $(prefix)/lib/pkgconfig/. \ + && cp libssl.pc $(prefix)/lib/pkgconfig/. \ clean-openssl: cd $(OPENSSL_BUILD_DIR) && make clean diff --git a/submodules/build/builders.d/srtp.mk b/submodules/build/builders.d/srtp.mk index 85e338231..97534a732 100644 --- a/submodules/build/builders.d/srtp.mk +++ b/submodules/build/builders.d/srtp.mk @@ -1,17 +1,8 @@ -srtp_version?=1.4.4 -#srtp_url?=http://srtp.sourceforge.net/srtp-$(srtp_version).tgz -srtp_url=http://sourceforge.net/projects/srtp/files/srtp/$(srtp_version)/srtp-$(srtp_version).tgz/download -srtp_tgz_file=srtp-$(srtp_version).tgz - -$(BUILDER_SRC_DIR)/externals/$(srtp_tgz_file): - cd $(BUILDER_SRC_DIR)/externals \ - && wget $(srtp_url) -O $(srtp_tgz_file) - -$(BUILDER_SRC_DIR)/$(srtp_dir)/configure: $(BUILDER_SRC_DIR)/externals/$(srtp_tgz_file) - cd $(BUILDER_SRC_DIR)/externals \ - && tar zxvf $(srtp_tgz_file) \ - && cd srtp && patch -p0 < $(BUILDER_SRC_DIR)/build/builders.d/srtp.patch +srtp_dir?=externals/srtp +$(BUILDER_SRC_DIR)/$(srtp_dir)/configure: + cd $(BUILDER_SRC_DIR)/$(srtp_dir) \ + && autoconf $(BUILDER_BUILD_DIR)/$(srtp_dir)/Makefile: $(BUILDER_SRC_DIR)/$(srtp_dir)/configure mkdir -p $(BUILDER_BUILD_DIR)/$(srtp_dir) cd $(BUILDER_BUILD_DIR)/$(srtp_dir)/\ @@ -19,17 +10,16 @@ $(BUILDER_BUILD_DIR)/$(srtp_dir)/Makefile: $(BUILDER_SRC_DIR)/$(srtp_dir)/config $(BUILDER_SRC_DIR)/$(srtp_dir)/configure -prefix=$(prefix) --host=$(host) ${library_mode} build-srtp: $(BUILDER_BUILD_DIR)/$(srtp_dir)/Makefile - cp -rf $(BUILDER_SRC_DIR)/$(srtp_dir)/include $(BUILDER_BUILD_DIR)/$(srtp_dir) - cp -rf $(BUILDER_SRC_DIR)/$(srtp_dir)/crypto/include $(BUILDER_BUILD_DIR)/$(srtp_dir) - -cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make uninstall && make clean - cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make libsrtp.a && make install + cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make libsrtp.a && make uninstall && make install clean-srtp: - cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make clean + -cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make clean veryclean-srtp: -cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && make distclean + -rm -rf $(BUILDER_BUILD_DIR)/$(srtp_dir) + -rm -f $(BUILDER_SRC_DIR)/$(srtp_dir)/configure clean-makefile-srtp: - cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && rm -f Makefile + -cd $(BUILDER_BUILD_DIR)/$(srtp_dir) && rm -f Makefile diff --git a/submodules/build/builders.d/x264.mk b/submodules/build/builders.d/x264.mk new file mode 100644 index 000000000..fbe943686 --- /dev/null +++ b/submodules/build/builders.d/x264.mk @@ -0,0 +1,72 @@ +############################################################################ +# x264.mk +# Copyright (C) 2011 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. +# +############################################################################ + +#--enable-static is mandatory otherwise the lib is not installed + +x264-configure-option= \ + --host=$(host)\ + --enable-static \ + --cross-prefix=$$SDK_BIN_PATH/ \ + --extra-ldflags="-arch $$ARCH -isysroot $$SYSROOT_PATH" + + + +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" +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 + +$(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)/* . + +$(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} + +build-x264: $(BUILDER_BUILD_DIR)/$(x264_dir)/config.mak + cd $(BUILDER_BUILD_DIR)/$(x264_dir) make && make install + +clean-x264: + cd $(BUILDER_BUILD_DIR)/$(x264_dir) && make clean + +veryclean-x264: + -cd $(BUILDER_BUILD_DIR)/$(x264_dir) && make distclean + rm -rf $(BUILDER_BUILD_DIR)/$(x264_dir) + +clean-makefile-x264: + cd $(BUILDER_BUILD_DIR)/$(x264_dir) && rm -f config.mak diff --git a/submodules/build/builders.d/x264.patch b/submodules/build/builders.d/x264.patch new file mode 100644 index 000000000..e6781e304 --- /dev/null +++ b/submodules/build/builders.d/x264.patch @@ -0,0 +1,12 @@ +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 + + .macro function name ++ .align 2 + .global EXTERN_ASM\name + EXTERN_ASM\name: + ELF .hidden \name diff --git a/submodules/build/builders.d/zrtp.mk b/submodules/build/builders.d/zrtp.mk index 6b988fd6e..6dff4c4d2 100644 --- a/submodules/build/builders.d/zrtp.mk +++ b/submodules/build/builders.d/zrtp.mk @@ -1,36 +1,24 @@ -$(BUILDER_SRC_DIR)/$(zrtpcpp_dir)/CMakeLists.txt.tracker: $(BUILDER_SRC_DIR)/build/builders.d/zrtpcpp.CMakeLists.txt - cp $(BUILDER_SRC_DIR)/build/builders.d/zrtpcpp.CMakeLists.txt $(BUILDER_SRC_DIR)/$(zrtpcpp_dir)/CMakeLists.txt - - -#I coudn't manage to crosscompile using only -D arguments to cmake -#Thus the use of a toolchain file. -$(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/Makefile: $(BUILDER_SRC_DIR)/$(zrtpcpp_dir)/CMakeLists.txt.tracker +zrtpcpp_dir=externals/zrtpcpp +$(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/Makefile: mkdir -p $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir) 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++ \ -DCMAKE_SYSTEM_PROCESSOR=$$ARCH -DCMAKE_C_FLAGS="$$COMMON_FLAGS" -DCMAKE_CXX_FLAGS="$$COMMON_FLAGS" \ - -DCMAKE_INSTALL_PREFIX=$(prefix) -DCMAKE_FIND_ROOT_PATH="$(prefix)" + -DCMAKE_INSTALL_PREFIX=$(prefix) -DCMAKE_FIND_ROOT_PATH="$(prefix) -DBUILD_STATIC=ON " # Used toolchain: $(TC) -ifeq ($(enable_zrtp),yes) build-zrtpcpp: $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/Makefile - echo "Build ZRTP - prefix $(prefix)" + @echo "Build ZRTP - prefix $(prefix)" cd $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir) && make VERBOSE=1 && make install -else -build-zrtpcpp: - echo "Build of zrtpcpp disabled" -endif - clean-zrtpcpp: -cd $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir) && make clean clean-makefile-zrtpcpp: clean-zrtpcpp -rm -f $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/Makefile - -rm -f $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir)/CMakeCache.txt veryclean-zrtpcpp: -rm -rf $(BUILDER_BUILD_DIR)/$(zrtpcpp_dir) diff --git a/submodules/build/builders.d/zrtpcpp.CMakeLists.txt b/submodules/build/builders.d/zrtpcpp.CMakeLists.txt deleted file mode 100755 index 4f20891f6..000000000 --- a/submodules/build/builders.d/zrtpcpp.CMakeLists.txt +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright (C) 2009 Werner Dittman -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -cmake_minimum_required(VERSION 2.6) - -PROJECT(libzrtpcpp) - -SET(CPACK_PACKAGE_VERSION_MAJOR 2) -SET(CPACK_PACKAGE_VERSION_MINOR 0) -SET(CPACK_PACKAGE_VERSION_PATCH 0) - -set (VERSION 2.0.0) -set (SOVERSION 2) -set (PACKAGE libzrtpcpp) - -if(MSVC60) - set(BUILD_STATIC ON CACHE BOOL "static linking only" FORCE) - MARK_AS_ADVANCED(BUILD_STATIC) -else() - option(BUILD_STATIC "Set to OFF to build shared libraries" ON) -endif() - -# set to true for debug and trace during CMakeLists development -set(CMAKE_VERBOSE_MAKEFILE FALSE) - -MESSAGE( STATUS "Configuring GNU ${PROJECT_NAME} ${VERSION}...") - -# include most of the fine stuff we need -include(cmake/Modules/FindGcryptConfig.cmake) -include(FindPkgConfig) -include(CheckLibraryExists) -include(CheckIncludeFiles) -include(cmake/Modules/AutoArgs.cmake) - -if(${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME}) - include(cmake/Modules/GeneratePackage.cmake) - - GENERATE_PACKAGING(${PACKAGE} ${VERSION}) -endif() - -# check the -Denable-ccrtp setting, defaults to true -enable_arg(ccrtp true "Enable GNU ccRTP support for GNU ZRTP") -args_help() - -# this caused problems in debian where it has to always be lib.... -set(LIBDIRNAME "lib") -if (NOT EXISTS /etc/debian_version) - if ( "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" ) - set(LIBDIRNAME "lib64") - endif() -endif() - -# setup the Thread include and lib -find_package(Threads) -if(CMAKE_HAVE_PTHREAD_H) - set(HAVE_PTHREAD_H TRUE) -endif() -set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT}) - -if(enable_ccrtp) - if (USES_CCRTP_INCLUDE_DIRS) - message(STATUS " Using local commoncpp dependency") - else() - find_package(PkgConfig) - pkg_check_modules(USES_CCRTP libccrtp>=2.0.0) - endif() - include_directories(${USES_CCRTP_INCLUDE_DIRS}) - link_directories(${USES_CRTP_LIBRARY_DIRS}) - add_definitions(${USES_CCRTP_CFLAGS}) - set (LIBS ${LIBS} ${USES_CCRTP_LDFLAGS} ${USES_CCRTP_LIBRARIES}) -endif() - -if (CMAKE_CROSSCOMPILING) - include_directories(${CMAKE_INSTALL_PREFIX}/include) - link_directories(${CMAKE_INSTALL_PREFIX}/lib) - set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES} ${CMAKE_INSTALL_PREFIX}/include") -## set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/*") -endif() - - -# now get info about crypto libraries -gcr_check(GCRYPT gcrypt) -#if(GCRYPT_FOUND) -# check_include_files(gcrypt.h HAVE_GCRYPT_H) -# set(LIBS ${LIBS} ${GCRYPT_LIBRARIES}) -# set(BUILD_REQ "libgcrypt-devel") -# set(CRYPTOBACKEND="") -# set(PACKAGE_REQ "libgcrypt") -#else() - pkg_check_modules(OPENSSL libcrypto>=0.9.8) - if (OPENSSL_FOUND) - check_include_files(openssl/bn.h HAVE_OPENSSL_BN_H) - check_include_files(openssl/aes.h HAVE_OPENSSL_AES_H) - check_include_files(openssl/sha.h HAVE_OPENSSL_SHA_H) - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -lcrypto") - check_library_exists(crypto EVP_CipherInit_ex "${CMAKE_INSTALL_PREFIX}/lib" HAVE_SSL_CRYPT) -# don't test HAVE_SSL_CRYPT_FOUND as it doesn't work - if (HAVE_OPENSSL_BN_H_FOUND) -# AND HAVE_OPENSSL_AES_H_FOUND AND HAVE_OPENSSL_SHA_H_FOUND)) - message(FATAL_ERROR "Openssl crypto library not found") - endif() - set(LIBS ${LIBS} -lcrypto) - set(CRYPTOBACKEND "libcrypto >= 0.9.8") - set(BUILD_REQ "libopenssl-devel >= 0.9.8") - set(PACKAGE_REQ "libopenssl >= 0.9.8") - else() - message(FATAL_ERROR "No crypto library found") - endif() -#endif() - -check_include_files(stdlib.h HAVE_STDLIB_H) -check_include_files(string.h HAVE_STRING_H) - -# necessary and required modules checked, ready to generate config.h -configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) - -# the following set(...) commands are only to have backward -# compatibility with autoconf stuff to generate the pc file -set(prefix ${CMAKE_INSTALL_PREFIX}) -set(exec_prefix ${prefix}/bin) -set(libdir ${prefix}/lib) -set(includedir ${prefix}/include) -set(PACKAGE pkgconfig) -configure_file(libzrtpcpp.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libzrtpcpp.pc @ONLY) - -configure_file(libzrtpcpp.spec.cmake ${CMAKE_CURRENT_BINARY_DIR}/libzrtpcpp.spec @ONLY) - -include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/src) - -add_definitions(-g -O2 -fno-strict-aliasing) -if(CMAKE_COMPILER_IS_GNUCXX) - add_definitions(-Wno-long-long -Wno-char-subscripts) - add_definitions(-Wall -ansi -pedantic) - add_definitions(-DNEW_STDCPP) -# add_definitions(-D__EXPORT=) -endif() - -add_subdirectory(src) - -if (enable_ccrtp) - add_subdirectory(demo) -endif() - -if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/package/) - MESSAGE(STATUS "package dir not found") - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/package/) -endif() - -########### install files ############### -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libzrtpcpp.pc DESTINATION ${LIBDIRNAME}/pkgconfig) - -if(${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME}) - - ########### Add uninstall target ############### - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) - add_custom_target(uninstall - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") - -endif() diff --git a/submodules/build/iphone-config.site b/submodules/build/iphone-config.site index d976c17a5..c4c7840a8 100644 --- a/submodules/build/iphone-config.site +++ b/submodules/build/iphone-config.site @@ -28,8 +28,9 @@ SDK_PATH_LIST=`ls -drt /Developer/Platforms/iPhone${PLATFORM}.platform/Developer SDK_BIN_PATH=/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin 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 -D__IOS" +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 @@ -37,3 +38,4 @@ RANLIB=${SDK_BIN_PATH}/ranlib CPPFLAGS="-Dasm=__asm" LDFLAGS="-Wl,-syslibroot,${SYSROOT_PATH} -framework CFNetwork" +OBJCFLAGS="-x objective-c -fexceptions -gdwarf-2 -fobjc-abi-version=2 -fobjc-legacy-dispatch" diff --git a/submodules/build/iphone-toolchain.cmake.i386 b/submodules/build/iphone-toolchain.cmake.i386 deleted file mode 100644 index 0c7c1a5e5..000000000 --- a/submodules/build/iphone-toolchain.cmake.i386 +++ /dev/null @@ -1,13 +0,0 @@ -SET (CMAKE_SYSTEM_NAME "Generic") -SET (CMAKE_SYSTEM_PROCESSOR "i386") - -SET (SDKVER "4.3") -SET (DEVROOT "/Developer/Platforms/iPhoneOS.platform/Developer") -SET (SDKROOT "${DEVROOT}/SDKs/iPhoneOS${SDKVER}.sdk") - -SET (CMAKE_FIND_ROOT_PATH "${CMAKE_INSTALL_PREFIX}" "${SDKROOT}" "${DEVROOT}") -SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -SET (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -SET (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - - diff --git a/submodules/externals/exosip b/submodules/externals/exosip index ce927e6b8..c3da03035 160000 --- a/submodules/externals/exosip +++ b/submodules/externals/exosip @@ -1 +1 @@ -Subproject commit ce927e6b891a9d9129ab50d0666f6f22f37228a1 +Subproject commit c3da0303519ad3120355cb85baee9cf6d0e4d1c2 diff --git a/submodules/externals/ffmpeg b/submodules/externals/ffmpeg new file mode 160000 index 000000000..907783f22 --- /dev/null +++ b/submodules/externals/ffmpeg @@ -0,0 +1 @@ +Subproject commit 907783f221ad9594a528681e30777705f11bf0b5 diff --git a/submodules/externals/libvpx b/submodules/externals/libvpx new file mode 160000 index 000000000..4341e5af6 --- /dev/null +++ b/submodules/externals/libvpx @@ -0,0 +1 @@ +Subproject commit 4341e5af66c92531fcd3f3e66ac18e70b3752ca9 diff --git a/submodules/externals/speex b/submodules/externals/speex index a6d05eb5f..a796bb048 160000 --- a/submodules/externals/speex +++ b/submodules/externals/speex @@ -1 +1 @@ -Subproject commit a6d05eb5ff9d5062852cdf7df574bec728921ef9 +Subproject commit a796bb048a6b8b9b38ed2668da87ddb96a2de8f9 diff --git a/submodules/externals/srtp b/submodules/externals/srtp new file mode 160000 index 000000000..daa25fdba --- /dev/null +++ b/submodules/externals/srtp @@ -0,0 +1 @@ +Subproject commit daa25fdbacb75e2aa99f5fce1bd5836dc616fb42 diff --git a/submodules/externals/x264 b/submodules/externals/x264 new file mode 160000 index 000000000..926a03a9c --- /dev/null +++ b/submodules/externals/x264 @@ -0,0 +1 @@ +Subproject commit 926a03a9c1f48d0fbd54b0e802d740774c100a78 diff --git a/submodules/externals/zrtpcpp b/submodules/externals/zrtpcpp index 3cbbcf29f..9cac07ec1 160000 --- a/submodules/externals/zrtpcpp +++ b/submodules/externals/zrtpcpp @@ -1 +1 @@ -Subproject commit 3cbbcf29f707adaaa00958c6e2c321e79a7b8e83 +Subproject commit 9cac07ec1a1f57bfd0198c0895fae42a79a62a9f diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj index 033406951..5a4637662 100644 --- a/submodules/liblinphone.xcodeproj/project.pbxproj +++ b/submodules/liblinphone.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 2203126F139F61990049A2ED /* ioscapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 22D15AB3139F505400C7713A /* ioscapture.m */; }; + 2203127213A247B50049A2ED /* iosdisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = 2203127013A247B40049A2ED /* iosdisplay.h */; }; + 2203127313A247B50049A2ED /* iosdisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = 2203127113A247B40049A2ED /* iosdisplay.m */; }; + 2203127613A249F70049A2ED /* filter-template.c in Sources */ = {isa = PBXBuildFile; fileRef = 2203127413A249F70049A2ED /* filter-template.c */; }; 220ED19A13A8F87700AC21E0 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19713A8F87700AC21E0 /* libspeexdsp.a */; }; 220ED19B13A8F87700AC21E0 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19813A8F87700AC21E0 /* libspeex.a */; }; 220ED19C13A8F87700AC21E0 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19913A8F87700AC21E0 /* libortp.a */; }; @@ -15,10 +19,22 @@ 220ED1A113A9039600AC21E0 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A013A9039600AC21E0 /* CoreAudio.framework */; }; 220ED1A313A903BF00AC21E0 /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A213A903BF00AC21E0 /* libgsm.a */; }; 220ED1A713A9040700AC21E0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A613A9040700AC21E0 /* AudioToolbox.framework */; }; - 220ED1A913A9041800AC21E0 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A813A9041800AC21E0 /* AVFoundation.framework */; }; + 220ED1A913A9041800AC21E0 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED1A813A9041800AC21E0 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Required, ); }; }; + 220ED1AC13A9062600AC21E0 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; }; + 220ED1AD13A9062600AC21E0 /* nowebcam.c in Sources */ = {isa = PBXBuildFile; fileRef = 220ED1AB13A9062500AC21E0 /* nowebcam.c */; }; + 2211DB9C1476539600DEE054 /* l16.c in Sources */ = {isa = PBXBuildFile; fileRef = 2211DB9B1476539600DEE054 /* l16.c */; }; + 2211DB9F14765CED00DEE054 /* libmssilk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB9E14765CEC00DEE054 /* libmssilk.a */; }; + 2211DBA1147660BB00DEE054 /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */; }; + 221F589C13AB4FC500D603C9 /* msvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F589B13AB4FC500D603C9 /* msvideo.c */; }; 221F58A013AB50F800D603C9 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 221F589F13AB50F800D603C9 /* CoreMedia.framework */; }; + 221F58A213AB6F8100D603C9 /* pixconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A113AB6F8000D603C9 /* pixconv.c */; }; 221F58A413AB708C00D603C9 /* alldescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58A313AB708C00D603C9 /* alldescs.h */; }; 221F58A813AB716400D603C9 /* tonedetector.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A513AB716300D603C9 /* tonedetector.c */; }; + 221F58A913AB716400D603C9 /* jpegwriter.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A613AB716300D603C9 /* jpegwriter.c */; }; + 221F58AA13AB716400D603C9 /* h264dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58A713AB716300D603C9 /* h264dec.c */; }; + 221F58AC13AB71A400D603C9 /* sizeconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58AB13AB71A400D603C9 /* sizeconv.c */; }; + 221F58AE13ABA42800D603C9 /* scaler.c in Sources */ = {isa = PBXBuildFile; fileRef = 221F58AD13ABA42800D603C9 /* scaler.c */; }; + 221F58E413AF44B300D603C9 /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58E313AF44B300D603C9 /* scaler.h */; }; 222CA63211F6CF7600621220 /* allfilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5BE11F6CF7600621220 /* allfilters.h */; }; 222CA63311F6CF7600621220 /* dsptools.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5BF11F6CF7600621220 /* dsptools.h */; }; 222CA63411F6CF7600621220 /* dtmfgen.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5C011F6CF7600621220 /* dtmfgen.h */; }; @@ -56,6 +72,8 @@ 222CA65811F6CF7600621220 /* dtmfgen.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5E811F6CF7600621220 /* dtmfgen.c */; }; 222CA65B11F6CF7600621220 /* equalizer.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5EB11F6CF7600621220 /* equalizer.c */; }; 222CA65C11F6CF7600621220 /* eventqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5EC11F6CF7600621220 /* eventqueue.c */; }; + 222CA65D11F6CF7600621220 /* extdisplay.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5ED11F6CF7600621220 /* extdisplay.c */; }; + 222CA65E11F6CF7600621220 /* ffmpeg-priv.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */; }; 222CA65F11F6CF7600621220 /* g711common.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5EF11F6CF7600621220 /* g711common.h */; }; 222CA66011F6CF7600621220 /* gsm.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5F011F6CF7600621220 /* gsm.c */; }; 222CA66211F6CF7600621220 /* ice.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA5F211F6CF7600621220 /* ice.c */; }; @@ -97,6 +115,7 @@ 222CA6FB11F6CF9F00621220 /* rtpsession.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6AE11F6CF9F00621220 /* rtpsession.h */; }; 222CA6FC11F6CF9F00621220 /* rtpsignaltable.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6AF11F6CF9F00621220 /* rtpsignaltable.h */; }; 222CA6FD11F6CF9F00621220 /* sessionset.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6B011F6CF9F00621220 /* sessionset.h */; }; + 222CA6FE11F6CF9F00621220 /* srtp.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6B111F6CF9F00621220 /* srtp.h */; }; 222CA6FF11F6CF9F00621220 /* str_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6B211F6CF9F00621220 /* str_utils.h */; }; 222CA70011F6CF9F00621220 /* stun.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6B311F6CF9F00621220 /* stun.h */; }; 222CA70111F6CF9F00621220 /* stun_udp.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA6B411F6CF9F00621220 /* stun_udp.h */; }; @@ -155,19 +174,26 @@ 222CA78411F6CFB100621220 /* siplogin.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA76211F6CFB100621220 /* siplogin.c */; }; 222CA78511F6CFB100621220 /* sipsetup.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA76311F6CFB100621220 /* sipsetup.c */; }; 222CA78611F6CFB100621220 /* sipsetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA76411F6CFB100621220 /* sipsetup.h */; }; + 22512699145F13CE0041FBF2 /* aqsnd.c in Sources */ = {isa = PBXBuildFile; fileRef = 22512698145F13CE0041FBF2 /* aqsnd.c */; }; 2252935B12F6CA4700DD9BFB /* ec-calibrator.c in Sources */ = {isa = PBXBuildFile; fileRef = 2252935A12F6CA4700DD9BFB /* ec-calibrator.c */; }; - 225AA2DC144F077700BA809B /* silk_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 225AA2DA144F077600BA809B /* silk_dec.c */; }; - 225AA2DD144F077700BA809B /* silk_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 225AA2DB144F077700BA809B /* silk_enc.c */; }; - 225AA2E1144F1C6600BA809B /* bitratedriver.c in Sources */ = {isa = PBXBuildFile; fileRef = 225AA2E0144F1C6600BA809B /* bitratedriver.c */; }; - 225AA2E3144F1E3400BA809B /* qosanalyzer.c in Sources */ = {isa = PBXBuildFile; fileRef = 225AA2E2144F1E3400BA809B /* qosanalyzer.c */; }; - 225AA2E5144F2E0200BA809B /* msprivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 225AA2E4144F2E0200BA809B /* msprivate.h */; }; - 225AA2FD1451A95400BA809B /* conference.c in Sources */ = {isa = PBXBuildFile; fileRef = 225AA2FC1451A95400BA809B /* conference.c */; }; + 2258C44113A9377B0087A596 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; }; + 2258C44513A945520087A596 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44213A945520087A596 /* libswscale.a */; }; + 2258C44613A945520087A596 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44313A945520087A596 /* libavutil.a */; }; + 2258C44713A945520087A596 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44413A945520087A596 /* libavcodec.a */; }; + 2258C44B13A946890087A596 /* videostream.c in Sources */ = {isa = PBXBuildFile; fileRef = 2258C44813A946890087A596 /* videostream.c */; }; + 2258C44C13A946890087A596 /* videoenc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2258C44913A946890087A596 /* videoenc.c */; }; + 2258C44D13A946890087A596 /* videodec.c in Sources */ = {isa = PBXBuildFile; fileRef = 2258C44A13A946890087A596 /* videodec.c */; }; 225D355A124B1FF60008581C /* linphonecall.c in Sources */ = {isa = PBXBuildFile; fileRef = 225D3559124B1FF60008581C /* linphonecall.c */; }; 229A614D13DDFE3500090183 /* g722_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 229A614913DDFE3500090183 /* g722_decode.c */; }; 229A614E13DDFE3500090183 /* g722_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 229A614A13DDFE3500090183 /* g722_encode.c */; }; 229A614F13DDFE3500090183 /* g722.h in Headers */ = {isa = PBXBuildFile; fileRef = 229A614B13DDFE3500090183 /* g722.h */; }; 229A615013DDFE3500090183 /* msg722.c in Sources */ = {isa = PBXBuildFile; fileRef = 229A614C13DDFE3500090183 /* msg722.c */; }; + 229A615313DEE8A500090183 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 229A615113DEE8A400090183 /* libx264.a */; }; + 229A615413DEE8A500090183 /* libmsx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 229A615213DEE8A400090183 /* libmsx264.a */; }; 229B9D5913043EAB00EFCD1C /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; }; + 229ECDEB143AEA6300D611B8 /* msvideo_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 229ECDEA143AEA6300D611B8 /* msvideo_neon.c */; }; + 229ECDED143AEBDA00D611B8 /* conference.c in Sources */ = {isa = PBXBuildFile; fileRef = 229ECDEC143AEBDA00D611B8 /* conference.c */; }; + 229ECDEF143AEC2400D611B8 /* audioconference.c in Sources */ = {isa = PBXBuildFile; fileRef = 229ECDEE143AEC2400D611B8 /* audioconference.c */; }; 22A10B5611F84E2D00373793 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B4F11F84E2D00373793 /* config.h */; }; 22A10B5711F84E2D00373793 /* gsm.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5011F84E2D00373793 /* gsm.h */; }; 22A10B5811F84E2D00373793 /* private.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5211F84E2D00373793 /* private.h */; }; @@ -188,12 +214,24 @@ 22DD21B413A8E3310018ECD4 /* mediastreamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22DD21AD13A8E3310018ECD4 /* mediastreamViewController.m */; }; 22FC56A813CB69FB002FD0F1 /* qualityindicator.c in Sources */ = {isa = PBXBuildFile; fileRef = 22FC56A713CB69FA002FD0F1 /* qualityindicator.c */; }; 22FC56AA13CB6A4F002FD0F1 /* bitratecontrol.c in Sources */ = {isa = PBXBuildFile; fileRef = 22FC56A913CB6A4F002FD0F1 /* bitratecontrol.c */; }; + 7014533813FA7AEA00A01D86 /* opengles_display.c in Sources */ = {isa = PBXBuildFile; fileRef = 7014533513FA7AEA00A01D86 /* opengles_display.c */; }; + 7014533913FA7AEA00A01D86 /* opengles_display.h in Headers */ = {isa = PBXBuildFile; fileRef = 7014533613FA7AEA00A01D86 /* opengles_display.h */; }; + 7014533A13FA7AEA00A01D86 /* shaders.c in Sources */ = {isa = PBXBuildFile; fileRef = 7014533713FA7AEA00A01D86 /* shaders.c */; }; 7014533C13FA7ECA00A01D86 /* zrtp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7014533B13FA7ECA00A01D86 /* zrtp.h */; }; 7014533E13FA841E00A01D86 /* zrtp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7014533D13FA841E00A01D86 /* zrtp.c */; }; + 7066FC0713E82A3600EFC6DC /* vp8.c in Sources */ = {isa = PBXBuildFile; fileRef = 7066FC0613E82A3600EFC6DC /* vp8.c */; }; + 7066FC0A13E830B800EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0913E830B800EFC6DC /* libvpx.a */; }; 70E542EE13E147C7002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542ED13E147C7002BA2C0 /* OpenGLES.framework */; }; 70E542F113E147CE002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F013E147CE002BA2C0 /* QuartzCore.framework */; }; + 70E542FA13E14816002BA2C0 /* shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F613E14816002BA2C0 /* shaders.h */; }; + 70E542FC13E14816002BA2C0 /* yuv2rgb.fs.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F813E14816002BA2C0 /* yuv2rgb.fs.h */; }; + 70E542FD13E14816002BA2C0 /* yuv2rgb.vs.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F913E14816002BA2C0 /* yuv2rgb.vs.h */; }; AA747D9F0F9514B9006C5449 /* liblinphone_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* liblinphone_Prefix.pch */; }; AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; + F4D9F23F145710540035B0D0 /* netsim.c in Sources */ = {isa = PBXBuildFile; fileRef = F4D9F23D145710540035B0D0 /* netsim.c */; }; + F4D9F240145710540035B0D0 /* ortp_srtp.c in Sources */ = {isa = PBXBuildFile; fileRef = F4D9F23E145710540035B0D0 /* ortp_srtp.c */; }; + F4D9F26014583B580035B0D0 /* bitratedriver.c in Sources */ = {isa = PBXBuildFile; fileRef = F4D9F25E14583B580035B0D0 /* bitratedriver.c */; }; + F4D9F26114583B580035B0D0 /* qosanalyzer.c in Sources */ = {isa = PBXBuildFile; fileRef = F4D9F25F14583B580035B0D0 /* qosanalyzer.c */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -207,6 +245,9 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 2203127013A247B40049A2ED /* iosdisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iosdisplay.h; sourceTree = ""; }; + 2203127113A247B40049A2ED /* iosdisplay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iosdisplay.m; sourceTree = ""; }; + 2203127413A249F70049A2ED /* filter-template.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "filter-template.c"; sourceTree = ""; }; 220ED19713A8F87700AC21E0 /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "../liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; 220ED19813A8F87700AC21E0 /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "../liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; }; 220ED19913A8F87700AC21E0 /* libortp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libortp.a; path = "../liblinphone-sdk/apple-darwin/lib/libortp.a"; sourceTree = ""; }; @@ -216,11 +257,23 @@ 220ED1A413A903E100AC21E0 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; 220ED1A613A9040700AC21E0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 220ED1A813A9041800AC21E0 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 220ED1AA13A9062500AC21E0 /* nowebcam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nowebcam.h; sourceTree = ""; }; + 220ED1AB13A9062500AC21E0 /* nowebcam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nowebcam.c; sourceTree = ""; }; + 2211DB9B1476539600DEE054 /* l16.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = l16.c; sourceTree = ""; }; + 2211DB9E14765CEC00DEE054 /* libmssilk.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmssilk.a; path = "../liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmssilk.a"; sourceTree = ""; }; + 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSKP_SILK_SDK.a; path = "../liblinphone-sdk/apple-darwin/lib/libSKP_SILK_SDK.a"; sourceTree = ""; }; 221F589913AB4EEE00D603C9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + 221F589B13AB4FC500D603C9 /* msvideo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvideo.c; sourceTree = ""; }; 221F589D13AB503F00D603C9 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; 221F589F13AB50F800D603C9 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; + 221F58A113AB6F8000D603C9 /* pixconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; }; 221F58A313AB708C00D603C9 /* alldescs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = alldescs.h; path = build/iphone/alldescs.h; sourceTree = ""; }; 221F58A513AB716300D603C9 /* tonedetector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tonedetector.c; sourceTree = ""; }; + 221F58A613AB716300D603C9 /* jpegwriter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jpegwriter.c; sourceTree = ""; }; + 221F58A713AB716300D603C9 /* h264dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264dec.c; sourceTree = ""; }; + 221F58AB13AB71A400D603C9 /* sizeconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sizeconv.c; sourceTree = ""; }; + 221F58AD13ABA42800D603C9 /* scaler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = scaler.c; sourceTree = ""; }; + 221F58E313AF44B300D603C9 /* scaler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scaler.h; sourceTree = ""; }; 222CA5B911F6CF7600621220 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; 222CA5BA11F6CF7600621220 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = ""; }; 222CA5BB11F6CF7600621220 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; @@ -265,6 +318,8 @@ 222CA5E811F6CF7600621220 /* dtmfgen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dtmfgen.c; sourceTree = ""; }; 222CA5EB11F6CF7600621220 /* equalizer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = equalizer.c; sourceTree = ""; }; 222CA5EC11F6CF7600621220 /* eventqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = eventqueue.c; sourceTree = ""; }; + 222CA5ED11F6CF7600621220 /* extdisplay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = extdisplay.c; sourceTree = ""; }; + 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ffmpeg-priv.h"; sourceTree = ""; }; 222CA5EF11F6CF7600621220 /* g711common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g711common.h; sourceTree = ""; }; 222CA5F011F6CF7600621220 /* gsm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gsm.c; sourceTree = ""; }; 222CA5F211F6CF7600621220 /* ice.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ice.c; sourceTree = ""; }; @@ -314,6 +369,7 @@ 222CA6AE11F6CF9F00621220 /* rtpsession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtpsession.h; sourceTree = ""; }; 222CA6AF11F6CF9F00621220 /* rtpsignaltable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtpsignaltable.h; sourceTree = ""; }; 222CA6B011F6CF9F00621220 /* sessionset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sessionset.h; sourceTree = ""; }; + 222CA6B111F6CF9F00621220 /* srtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = srtp.h; sourceTree = ""; }; 222CA6B211F6CF9F00621220 /* str_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = str_utils.h; sourceTree = ""; }; 222CA6B311F6CF9F00621220 /* stun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stun.h; sourceTree = ""; }; 222CA6B411F6CF9F00621220 /* stun_udp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stun_udp.h; sourceTree = ""; }; @@ -383,19 +439,29 @@ 222CA76211F6CFB100621220 /* siplogin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = siplogin.c; sourceTree = ""; }; 222CA76311F6CFB100621220 /* sipsetup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sipsetup.c; sourceTree = ""; }; 222CA76411F6CFB100621220 /* sipsetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sipsetup.h; sourceTree = ""; }; + 22313679143DED490035C1F4 /* msandroidvideo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = msandroidvideo.cpp; sourceTree = ""; }; + 224AD571143208BB00510FF3 /* android-display.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "android-display.c"; path = "../../../../../../workspace-android/linphone-android/submodules/linphone/mediastreamer2/src/android-display.c"; sourceTree = ""; }; + 224AD57314320EB400510FF3 /* scaler_arm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = scaler_arm.S; path = "../../../../../../workspace-android/linphone-android/submodules/linphone/mediastreamer2/src/scaler_arm.S"; sourceTree = ""; }; + 22512698145F13CE0041FBF2 /* aqsnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aqsnd.c; sourceTree = ""; }; 2252935A12F6CA4700DD9BFB /* ec-calibrator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ec-calibrator.c"; path = "linphone/coreapi/ec-calibrator.c"; sourceTree = SOURCE_ROOT; }; - 225AA2DA144F077600BA809B /* silk_dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = silk_dec.c; sourceTree = ""; }; - 225AA2DB144F077700BA809B /* silk_enc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = silk_enc.c; sourceTree = ""; }; - 225AA2E0144F1C6600BA809B /* bitratedriver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitratedriver.c; sourceTree = ""; }; - 225AA2E2144F1E3400BA809B /* qosanalyzer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qosanalyzer.c; sourceTree = ""; }; - 225AA2E4144F2E0200BA809B /* msprivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msprivate.h; sourceTree = ""; }; - 225AA2FC1451A95400BA809B /* conference.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = conference.c; sourceTree = ""; }; + 2258C44013A9377B0087A596 /* swscale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = swscale.h; sourceTree = ""; }; + 2258C44213A945520087A596 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "../liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; + 2258C44313A945520087A596 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "../liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; + 2258C44413A945520087A596 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "../liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; + 2258C44813A946890087A596 /* videostream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videostream.c; sourceTree = ""; }; + 2258C44913A946890087A596 /* videoenc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videoenc.c; sourceTree = ""; }; + 2258C44A13A946890087A596 /* videodec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = videodec.c; sourceTree = ""; }; 225D3559124B1FF60008581C /* linphonecall.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = linphonecall.c; sourceTree = ""; }; 229A614913DDFE3500090183 /* g722_decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = g722_decode.c; sourceTree = ""; }; 229A614A13DDFE3500090183 /* g722_encode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = g722_encode.c; sourceTree = ""; }; 229A614B13DDFE3500090183 /* g722.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = g722.h; sourceTree = ""; }; 229A614C13DDFE3500090183 /* msg722.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msg722.c; sourceTree = ""; }; + 229A615113DEE8A400090183 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = "../liblinphone-sdk/apple-darwin/lib/libx264.a"; sourceTree = ""; }; + 229A615213DEE8A400090183 /* libmsx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsx264.a; path = "../liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsx264.a"; sourceTree = ""; }; 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphonecore_utils.h; sourceTree = ""; }; + 229ECDEA143AEA6300D611B8 /* msvideo_neon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvideo_neon.c; sourceTree = ""; }; + 229ECDEC143AEBDA00D611B8 /* conference.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = conference.c; sourceTree = ""; }; + 229ECDEE143AEC2400D611B8 /* audioconference.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = audioconference.c; sourceTree = ""; }; 22A10B4F11F84E2D00373793 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; 22A10B5011F84E2D00373793 /* gsm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gsm.h; sourceTree = ""; }; 22A10B5111F84E2D00373793 /* gsm.h.orig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gsm.h.orig; sourceTree = ""; }; @@ -405,6 +471,8 @@ 22A10B5511F84E2D00373793 /* unproto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unproto.h; sourceTree = ""; }; 22A10EE711F8920F00373793 /* mswebcam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mswebcam.c; path = linphone/mediastreamer2/src/mswebcam.c; sourceTree = SOURCE_ROOT; }; 22B5106813AFD37B00CD87DA /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = src/nowebcamCIF.jpg; sourceTree = ""; }; + 22D15AB3139F505400C7713A /* ioscapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ioscapture.m; sourceTree = ""; }; + 22D15AB5139F579D00C7713A /* qtcapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = qtcapture.m; sourceTree = ""; }; 22DD19BE13A8D7FA0018ECD4 /* mediastream.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mediastream.app; sourceTree = BUILT_PRODUCTS_DIR; }; 22DD19C013A8D7FA0018ECD4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 22DD19C313A8D7FA0018ECD4 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; @@ -420,13 +488,25 @@ 22DD21AD13A8E3310018ECD4 /* mediastreamViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = mediastreamViewController.m; sourceTree = ""; }; 22FC56A713CB69FA002FD0F1 /* qualityindicator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qualityindicator.c; sourceTree = ""; }; 22FC56A913CB6A4F002FD0F1 /* bitratecontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitratecontrol.c; sourceTree = ""; }; + 7014533513FA7AEA00A01D86 /* opengles_display.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = opengles_display.c; sourceTree = ""; }; + 7014533613FA7AEA00A01D86 /* opengles_display.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opengles_display.h; sourceTree = ""; }; + 7014533713FA7AEA00A01D86 /* shaders.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shaders.c; sourceTree = ""; }; 7014533B13FA7ECA00A01D86 /* zrtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zrtp.h; sourceTree = ""; }; 7014533D13FA841E00A01D86 /* zrtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zrtp.c; sourceTree = ""; }; + 7066FC0613E82A3600EFC6DC /* vp8.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vp8.c; sourceTree = ""; }; + 7066FC0913E830B800EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "../liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542ED13E147C7002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F013E147CE002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 70E542F613E14816002BA2C0 /* shaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shaders.h; sourceTree = ""; }; + 70E542F813E14816002BA2C0 /* yuv2rgb.fs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv2rgb.fs.h; sourceTree = ""; }; + 70E542F913E14816002BA2C0 /* yuv2rgb.vs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv2rgb.vs.h; sourceTree = ""; }; AA747D9E0F9514B9006C5449 /* liblinphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = liblinphone_Prefix.pch; sourceTree = SOURCE_ROOT; }; AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; D2AAC07E0554694100DB518D /* liblinphone.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = liblinphone.a; sourceTree = BUILT_PRODUCTS_DIR; }; + F4D9F23D145710540035B0D0 /* netsim.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = netsim.c; sourceTree = ""; }; + F4D9F23E145710540035B0D0 /* ortp_srtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ortp_srtp.c; sourceTree = ""; }; + F4D9F25E14583B580035B0D0 /* bitratedriver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitratedriver.c; sourceTree = ""; }; + F4D9F25F14583B580035B0D0 /* qosanalyzer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qosanalyzer.c; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -434,9 +514,16 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2211DB9F14765CED00DEE054 /* libmssilk.a in Frameworks */, + 7066FC0A13E830B800EFC6DC /* libvpx.a in Frameworks */, 70E542F113E147CE002BA2C0 /* QuartzCore.framework in Frameworks */, 70E542EE13E147C7002BA2C0 /* OpenGLES.framework in Frameworks */, + 229A615313DEE8A500090183 /* libx264.a in Frameworks */, + 229A615413DEE8A500090183 /* libmsx264.a in Frameworks */, 221F58A013AB50F800D603C9 /* CoreMedia.framework in Frameworks */, + 2258C44513A945520087A596 /* libswscale.a in Frameworks */, + 2258C44613A945520087A596 /* libavutil.a in Frameworks */, + 2258C44713A945520087A596 /* libavcodec.a in Frameworks */, 220ED1A913A9041800AC21E0 /* AVFoundation.framework in Frameworks */, 220ED1A713A9040700AC21E0 /* AudioToolbox.framework in Frameworks */, 220ED1A313A903BF00AC21E0 /* libgsm.a in Frameworks */, @@ -457,6 +544,7 @@ buildActionMask = 2147483647; files = ( AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */, + 2211DBA1147660BB00DEE054 /* libSKP_SILK_SDK.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -474,11 +562,19 @@ 0867D691FE84028FC02AAC07 /* liblinphone */ = { isa = PBXGroup; children = ( + 2211DBA0147660BB00DEE054 /* libSKP_SILK_SDK.a */, + 2211DB9E14765CEC00DEE054 /* libmssilk.a */, + 7066FC0913E830B800EFC6DC /* libvpx.a */, 70E542F013E147CE002BA2C0 /* QuartzCore.framework */, 70E542ED13E147C7002BA2C0 /* OpenGLES.framework */, + 229A615113DEE8A400090183 /* libx264.a */, + 229A615213DEE8A400090183 /* libmsx264.a */, 221F589F13AB50F800D603C9 /* CoreMedia.framework */, 221F589D13AB503F00D603C9 /* CoreVideo.framework */, 221F589913AB4EEE00D603C9 /* CoreFoundation.framework */, + 2258C44213A945520087A596 /* libswscale.a */, + 2258C44313A945520087A596 /* libavutil.a */, + 2258C44413A945520087A596 /* libavcodec.a */, 220ED1A813A9041800AC21E0 /* AVFoundation.framework */, 220ED1A613A9040700AC21E0 /* AudioToolbox.framework */, 220ED1A413A903E100AC21E0 /* AudioUnit.framework */, @@ -601,18 +697,43 @@ 222CA5DC11F6CF7600621220 /* src */ = { isa = PBXGroup; children = ( - 225AA2E4144F2E0200BA809B /* msprivate.h */, - 225AA2E2144F1E3400BA809B /* qosanalyzer.c */, - 225AA2E0144F1C6600BA809B /* bitratedriver.c */, - 225AA2DA144F077600BA809B /* silk_dec.c */, - 225AA2DB144F077700BA809B /* silk_enc.c */, + 2211DB9B1476539600DEE054 /* l16.c */, + 22512698145F13CE0041FBF2 /* aqsnd.c */, + F4D9F25E14583B580035B0D0 /* bitratedriver.c */, + F4D9F25F14583B580035B0D0 /* qosanalyzer.c */, + 22313679143DED490035C1F4 /* msandroidvideo.cpp */, + 229ECDEE143AEC2400D611B8 /* audioconference.c */, + 229ECDEA143AEA6300D611B8 /* msvideo_neon.c */, + 224AD57314320EB400510FF3 /* scaler_arm.S */, + 224AD571143208BB00510FF3 /* android-display.c */, + 7014533513FA7AEA00A01D86 /* opengles_display.c */, + 7014533613FA7AEA00A01D86 /* opengles_display.h */, + 7014533713FA7AEA00A01D86 /* shaders.c */, + 7066FC0613E82A3600EFC6DC /* vp8.c */, + 70E542F613E14816002BA2C0 /* shaders.h */, + 70E542F813E14816002BA2C0 /* yuv2rgb.fs.h */, + 70E542F913E14816002BA2C0 /* yuv2rgb.vs.h */, 229A614913DDFE3500090183 /* g722_decode.c */, 229A614A13DDFE3500090183 /* g722_encode.c */, 229A614B13DDFE3500090183 /* g722.h */, 229A614C13DDFE3500090183 /* msg722.c */, 22FC56A913CB6A4F002FD0F1 /* bitratecontrol.c */, 22FC56A713CB69FA002FD0F1 /* qualityindicator.c */, + 221F58AD13ABA42800D603C9 /* scaler.c */, + 221F58AB13AB71A400D603C9 /* sizeconv.c */, 221F58A513AB716300D603C9 /* tonedetector.c */, + 221F58A613AB716300D603C9 /* jpegwriter.c */, + 221F58A713AB716300D603C9 /* h264dec.c */, + 221F58A113AB6F8000D603C9 /* pixconv.c */, + 221F589B13AB4FC500D603C9 /* msvideo.c */, + 2258C44813A946890087A596 /* videostream.c */, + 2258C44913A946890087A596 /* videoenc.c */, + 2258C44A13A946890087A596 /* videodec.c */, + 2258C44013A9377B0087A596 /* swscale.h */, + 220ED1AA13A9062500AC21E0 /* nowebcam.h */, + 220ED1AB13A9062500AC21E0 /* nowebcam.c */, + 22D15AB5139F579D00C7713A /* qtcapture.m */, + 22D15AB3139F505400C7713A /* ioscapture.m */, 2252935A12F6CA4700DD9BFB /* ec-calibrator.c */, 222CA5DD11F6CF7600621220 /* .gitignore */, 222CA5DE11F6CF7600621220 /* _kiss_fft_guts.h */, @@ -624,6 +745,8 @@ 222CA5E811F6CF7600621220 /* dtmfgen.c */, 222CA5EB11F6CF7600621220 /* equalizer.c */, 222CA5EC11F6CF7600621220 /* eventqueue.c */, + 222CA5ED11F6CF7600621220 /* extdisplay.c */, + 222CA5EE11F6CF7600621220 /* ffmpeg-priv.h */, 222CA5EF11F6CF7600621220 /* g711common.h */, 222CA5F011F6CF7600621220 /* gsm.c */, 222CA5F211F6CF7600621220 /* ice.c */, @@ -657,6 +780,10 @@ 222CA62311F6CF7600621220 /* ulaw.c */, 222CA62411F6CF7600621220 /* vfw-missing.h */, 222CA62911F6CF7600621220 /* void.c */, + 2203127013A247B40049A2ED /* iosdisplay.h */, + 2203127113A247B40049A2ED /* iosdisplay.m */, + 2203127413A249F70049A2ED /* filter-template.c */, + 221F58E313AF44B300D603C9 /* scaler.h */, ); path = src; sourceTree = ""; @@ -689,6 +816,7 @@ 222CA6AE11F6CF9F00621220 /* rtpsession.h */, 222CA6AF11F6CF9F00621220 /* rtpsignaltable.h */, 222CA6B011F6CF9F00621220 /* sessionset.h */, + 222CA6B111F6CF9F00621220 /* srtp.h */, 222CA6B211F6CF9F00621220 /* str_utils.h */, 222CA6B311F6CF9F00621220 /* stun.h */, 222CA6B411F6CF9F00621220 /* stun_udp.h */, @@ -700,6 +828,8 @@ 222CA6B611F6CF9F00621220 /* src */ = { isa = PBXGroup; children = ( + F4D9F23D145710540035B0D0 /* netsim.c */, + F4D9F23E145710540035B0D0 /* ortp_srtp.c */, 7014533D13FA841E00A01D86 /* zrtp.c */, 222CA6B711F6CF9F00621220 /* .gitignore */, 222CA6B811F6CF9F00621220 /* avprofile.c */, @@ -741,7 +871,7 @@ 222CA72D11F6CFB100621220 /* coreapi */ = { isa = PBXGroup; children = ( - 225AA2FC1451A95400BA809B /* conference.c */, + 229ECDEC143AEBDA00D611B8 /* conference.c */, 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */, 225D3559124B1FF60008581C /* linphonecall.c */, 22A10EE711F8920F00373793 /* mswebcam.c */, @@ -890,6 +1020,7 @@ 222CA64C11F6CF7600621220 /* rfc3984.h in Headers */, 222CA64D11F6CF7600621220 /* waveheader.h in Headers */, 222CA64E11F6CF7600621220 /* _kiss_fft_guts.h in Headers */, + 222CA65E11F6CF7600621220 /* ffmpeg-priv.h in Headers */, 222CA65F11F6CF7600621220 /* g711common.h in Headers */, 222CA66511F6CF7600621220 /* kiss_fft.h in Headers */, 222CA66711F6CF7600621220 /* kiss_fftr.h in Headers */, @@ -905,6 +1036,7 @@ 222CA6FB11F6CF9F00621220 /* rtpsession.h in Headers */, 222CA6FC11F6CF9F00621220 /* rtpsignaltable.h in Headers */, 222CA6FD11F6CF9F00621220 /* sessionset.h in Headers */, + 222CA6FE11F6CF9F00621220 /* srtp.h in Headers */, 222CA6FF11F6CF9F00621220 /* str_utils.h in Headers */, 222CA70011F6CF9F00621220 /* stun.h in Headers */, 222CA70111F6CF9F00621220 /* stun_udp.h in Headers */, @@ -930,10 +1062,17 @@ 22A10B5A11F84E2D00373793 /* toast.h in Headers */, 22A10B5B11F84E2D00373793 /* unproto.h in Headers */, 229B9D5913043EAB00EFCD1C /* linphonecore_utils.h in Headers */, + 2203127213A247B50049A2ED /* iosdisplay.h in Headers */, + 220ED1AC13A9062600AC21E0 /* nowebcam.h in Headers */, + 2258C44113A9377B0087A596 /* swscale.h in Headers */, 221F58A413AB708C00D603C9 /* alldescs.h in Headers */, + 221F58E413AF44B300D603C9 /* scaler.h in Headers */, 229A614F13DDFE3500090183 /* g722.h in Headers */, + 70E542FA13E14816002BA2C0 /* shaders.h in Headers */, + 70E542FC13E14816002BA2C0 /* yuv2rgb.fs.h in Headers */, + 70E542FD13E14816002BA2C0 /* yuv2rgb.vs.h in Headers */, + 7014533913FA7AEA00A01D86 /* opengles_display.h in Headers */, 7014533C13FA7ECA00A01D86 /* zrtp.h in Headers */, - 225AA2E5144F2E0200BA809B /* msprivate.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1040,6 +1179,7 @@ 222CA65811F6CF7600621220 /* dtmfgen.c in Sources */, 222CA65B11F6CF7600621220 /* equalizer.c in Sources */, 222CA65C11F6CF7600621220 /* eventqueue.c in Sources */, + 222CA65D11F6CF7600621220 /* extdisplay.c in Sources */, 222CA66011F6CF7600621220 /* gsm.c in Sources */, 222CA66211F6CF7600621220 /* ice.c in Sources */, 222CA66311F6CF7600621220 /* itc.c in Sources */, @@ -1109,18 +1249,38 @@ 22A10EE811F8920F00373793 /* mswebcam.c in Sources */, 225D355A124B1FF60008581C /* linphonecall.c in Sources */, 2252935B12F6CA4700DD9BFB /* ec-calibrator.c in Sources */, + 2203126F139F61990049A2ED /* ioscapture.m in Sources */, + 2203127313A247B50049A2ED /* iosdisplay.m in Sources */, + 2203127613A249F70049A2ED /* filter-template.c in Sources */, + 220ED1AD13A9062600AC21E0 /* nowebcam.c in Sources */, + 2258C44B13A946890087A596 /* videostream.c in Sources */, + 2258C44C13A946890087A596 /* videoenc.c in Sources */, + 2258C44D13A946890087A596 /* videodec.c in Sources */, + 221F589C13AB4FC500D603C9 /* msvideo.c in Sources */, + 221F58A213AB6F8100D603C9 /* pixconv.c in Sources */, 221F58A813AB716400D603C9 /* tonedetector.c in Sources */, + 221F58A913AB716400D603C9 /* jpegwriter.c in Sources */, + 221F58AA13AB716400D603C9 /* h264dec.c in Sources */, + 221F58AC13AB71A400D603C9 /* sizeconv.c in Sources */, + 221F58AE13ABA42800D603C9 /* scaler.c in Sources */, 22FC56A813CB69FB002FD0F1 /* qualityindicator.c in Sources */, 22FC56AA13CB6A4F002FD0F1 /* bitratecontrol.c in Sources */, 229A614D13DDFE3500090183 /* g722_decode.c in Sources */, 229A614E13DDFE3500090183 /* g722_encode.c in Sources */, 229A615013DDFE3500090183 /* msg722.c in Sources */, + 7066FC0713E82A3600EFC6DC /* vp8.c in Sources */, + 7014533813FA7AEA00A01D86 /* opengles_display.c in Sources */, + 7014533A13FA7AEA00A01D86 /* shaders.c in Sources */, 7014533E13FA841E00A01D86 /* zrtp.c in Sources */, - 225AA2DC144F077700BA809B /* silk_dec.c in Sources */, - 225AA2DD144F077700BA809B /* silk_enc.c in Sources */, - 225AA2E1144F1C6600BA809B /* bitratedriver.c in Sources */, - 225AA2E3144F1E3400BA809B /* qosanalyzer.c in Sources */, - 225AA2FD1451A95400BA809B /* conference.c in Sources */, + 229ECDEB143AEA6300D611B8 /* msvideo_neon.c in Sources */, + 229ECDED143AEBDA00D611B8 /* conference.c in Sources */, + 229ECDEF143AEC2400D611B8 /* audioconference.c in Sources */, + F4D9F23F145710540035B0D0 /* netsim.c in Sources */, + F4D9F240145710540035B0D0 /* ortp_srtp.c in Sources */, + F4D9F26014583B580035B0D0 /* bitratedriver.c in Sources */, + F4D9F26114583B580035B0D0 /* qosanalyzer.c in Sources */, + 22512699145F13CE0041FBF2 /* aqsnd.c in Sources */, + 2211DB9C1476539600DEE054 /* l16.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1167,8 +1327,8 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", armv6, + "$(ARCHS_STANDARD_32_BIT)", ); COPY_PHASE_STRIP = NO; DSTROOT = /tmp/liblinphone.dst; @@ -1192,12 +1352,16 @@ "PACKAGE=\\\"ortp\\\"", "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - "PACKAGE_DATA_DIR=\\\"\\\"", + __MAC_AQ_ENABLED__, HAVE_EXOSIP_GET_SOCKET, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, TARGET_OS_IPHONE, ); GCC_UNROLL_LOOPS = NO; + GCC_VERSION = com.apple.compilers.llvmgcc42; HEADER_SEARCH_PATHS = ( linphone/mediastreamer2/build/iphone, linphone/mediastreamer2/include, @@ -1208,12 +1372,15 @@ externals/speex/include, externals/ffmpeg, external/ffmpeg/swscale, - "../liblinphone-sdk/apple-darwin/include/silk", + "../liblinphone-sdk/apple-darwin/include", ); INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../liblinphone-sdk/apple-darwin/lib\"", + ); PRODUCT_NAME = linphone; - USER_HEADER_SEARCH_PATHS = "linphone/mediastreamer2/build/iphone linphone/mediastreamer2/include linphone/oRTP/include externals/gsm/ externals/osip/include externals/exosip/include externals/speex/include externals/ffmpeg external/ffmpeg/swscale ../liblinphone-sdk/apple-darwin/include/"; + SKIP_INSTALL = YES; }; name = Debug; }; @@ -1222,8 +1389,8 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", armv6, + "$(ARCHS_STANDARD_32_BIT)", ); DSTROOT = /tmp/liblinphone.dst; GCC_MODEL_TUNING = G5; @@ -1243,12 +1410,16 @@ "PACKAGE=\\\"ortp\\\"", "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - "PACKAGE_DATA_DIR=\\\"\\\"", + __MAC_AQ_ENABLED__, HAVE_EXOSIP_GET_SOCKET, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, TARGET_OS_IPHONE, ); GCC_UNROLL_LOOPS = NO; + GCC_VERSION = com.apple.compilers.llvmgcc42; HEADER_SEARCH_PATHS = ( linphone/mediastreamer2/build/iphone, linphone/mediastreamer2/include, @@ -1259,12 +1430,15 @@ externals/speex/include, externals/ffmpeg, external/ffmpeg/swscale, - "../liblinphone-sdk/apple-darwin/include/silk", + "../liblinphone-sdk/apple-darwin/include", ); INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../liblinphone-sdk/apple-darwin/lib\"", + ); PRODUCT_NAME = linphone; - USER_HEADER_SEARCH_PATHS = "linphone/mediastreamer2/build/iphone linphone/mediastreamer2/include linphone/oRTP/include externals/gsm/ externals/osip/include externals/exosip/include externals/speex/include externals/ffmpeg external/ffmpeg/swscale ../liblinphone-sdk/apple-darwin/include/"; + SKIP_INSTALL = YES; }; name = Release; }; @@ -1399,8 +1573,8 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", armv6, + "$(ARCHS_STANDARD_32_BIT)", ); DSTROOT = /tmp/liblinphone.dst; GCC_MODEL_TUNING = G5; @@ -1420,12 +1594,16 @@ "PACKAGE=\\\"ortp\\\"", "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - "PACKAGE_DATA_DIR=\\\"\\\"", + __MAC_AQ_ENABLED__, HAVE_EXOSIP_GET_SOCKET, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, TARGET_OS_IPHONE, ); GCC_UNROLL_LOOPS = NO; + GCC_VERSION = com.apple.compilers.llvmgcc42; HEADER_SEARCH_PATHS = ( linphone/mediastreamer2/build/iphone, linphone/mediastreamer2/include, @@ -1436,12 +1614,15 @@ externals/speex/include, externals/ffmpeg, external/ffmpeg/swscale, - "../liblinphone-sdk/apple-darwin/include/silk", + "../liblinphone-sdk/apple-darwin/include", ); INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../liblinphone-sdk/apple-darwin/lib\"", + ); PRODUCT_NAME = linphone; - USER_HEADER_SEARCH_PATHS = "linphone/mediastreamer2/build/iphone linphone/mediastreamer2/include linphone/oRTP/include externals/gsm/ externals/osip/include externals/exosip/include externals/speex/include externals/ffmpeg external/ffmpeg/swscale ../liblinphone-sdk/apple-darwin/include/"; + SKIP_INSTALL = YES; }; name = DistributionAdhoc; }; @@ -1449,10 +1630,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1473,9 +1650,12 @@ "PACKAGE=\\\"ortp\\\"", "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - __IOSIOUNIT_ENABLED__, HAVE_EXOSIP_GET_SOCKET, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, + HAVE_X264, "TARGET_OS_IPHONE=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -1489,6 +1669,7 @@ ); OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; VALIDATE_PRODUCT = YES; WRAPPER_EXTENSION = app; }; @@ -1498,10 +1679,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1523,9 +1700,12 @@ "PACKAGE=\\\"ortp\\\"", "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - __IOSIOUNIT_ENABLED__, HAVE_EXOSIP_GET_SOCKET, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, + HAVE_X264, "TARGET_OS_IPHONE=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -1538,6 +1718,7 @@ "\"$(SRCROOT)/../liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", ); PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; WRAPPER_EXTENSION = app; }; name = Debug; @@ -1546,10 +1727,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1570,9 +1747,12 @@ "PACKAGE=\\\"ortp\\\"", "POSIXTIMER_INTERVAL=10000", IN_LINPHONE, - __IOSIOUNIT_ENABLED__, HAVE_EXOSIP_GET_SOCKET, MS2_INTERNAL, + VIDEO_ENABLED, + HAVE_LIBAVCODEC_AVCODEC_H, + HAVE_LIBSWSCALE_SWSCALE_H, + HAVE_X264, "TARGET_OS_IPHONE=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -1586,6 +1766,7 @@ ); OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; VALIDATE_PRODUCT = YES; WRAPPER_EXTENSION = app; }; diff --git a/submodules/linphone b/submodules/linphone index f13744a76..1615847ff 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit f13744a765200961c74617c12295d04640a74f05 +Subproject commit 1615847fff9cabdd1a3b26dd4e711db1e852fbdc diff --git a/submodules/msx264 b/submodules/msx264 new file mode 160000 index 000000000..6ba1b8699 --- /dev/null +++ b/submodules/msx264 @@ -0,0 +1 @@ +Subproject commit 6ba1b86990d60f1a29d11a4e0cdd71d7b6b1b5bf diff --git a/submodules/tunnel b/submodules/tunnel index 538836356..99a8d56cb 160000 --- a/submodules/tunnel +++ b/submodules/tunnel @@ -1 +1 @@ -Subproject commit 5388363564a035b0fe055775cafc6c1e5879ea62 +Subproject commit 99a8d56cb3423a5c4c9f7924fcf1811d2e57ce20