Merge remote-tracking branch 'public/master' into dev_videoios

Conflicts:
	Classes/LinphoneUI/LinphoneManager.m
	Classes/LinphoneUI/LinphoneUIDelegates.h
	Classes/LinphoneUI/UILinphone.h
	Settings.bundle/Root.plist
	linphone.xcodeproj/project.pbxproj
	linphonerc
	submodules/build/builder-iphone-os.mk
	submodules/liblinphone.xcodeproj/project.pbxproj
This commit is contained in:
Simon Morlat 2011-11-01 22:20:12 +01:00
commit eecb65d1d4
14 changed files with 641 additions and 538 deletions

View file

@ -51,6 +51,8 @@
}
-(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
[self presentModalViewController:mIncallViewController animated:true];
[super displayIncallFromUI:viewCtrl
forUser:username
withDisplayName:displayName];
@ -65,6 +67,12 @@
[mIncallViewController displayStatus:message];
}
-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl {
[super updateUIFromLinphoneState:viewCtrl];
[mIncallViewController updateUIFromLinphoneState:viewCtrl];
}
- (void)dealloc {
[mIncallViewController release];
[super dealloc];

View file

@ -35,6 +35,7 @@
UIHangUpButton* endCtrl;
UIButton* dialer;
UIMuteButton* mute;
UIPauseResumeButton* pause;
UISpeakerButton* speaker;
UIButton* contacts;
@ -74,6 +75,7 @@
@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;

View file

@ -35,6 +35,7 @@
@synthesize endCtrl;
@synthesize close;
@synthesize mute;
@synthesize pause;
@synthesize dialer;
@synthesize speaker;
@synthesize contacts;
@ -70,6 +71,7 @@
[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"] ];
@ -127,6 +129,11 @@
[callDuration stop];
[self dismissModalViewControllerAnimated:true];
}
-(void) updateUIFromLinphoneState:(UIViewController *)viewCtrl {
[mute reset];
[pause reset];
}
- (IBAction)doAction:(id)sender {
if (sender == dialer) {

File diff suppressed because it is too large Load diff

View file

@ -18,6 +18,7 @@
*/
#import <Foundation/Foundation.h>
#import <AVFoundation/AVAudioSession.h>
#import <SystemConfiguration/SCNetworkReachability.h>
#include "linphonecore.h"
#import "LogView.h"
@ -28,7 +29,7 @@ typedef enum _Connectivity {
,none
} Connectivity;
@class FastAddressBook;
@interface LinphoneManager : NSObject {
@interface LinphoneManager : NSObject <AVAudioSessionDelegate> {
@private
SCNetworkReachabilityContext proxyReachabilityContext;
SCNetworkReachabilityRef proxyReachability;

View file

@ -35,12 +35,17 @@ extern 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;
@ -151,9 +156,11 @@ extern void libmsx264_init();
break;
case LinphoneCallConnected:
[callDelegate displayIncallFromUI:mCurrentViewController
if (linphone_call_get_dir(currentCall)==LinphoneCallIncoming){
[callDelegate displayIncallFromUI:mCurrentViewController
forUser:lUserName
withDisplayName:lDisplayName];
}
break;
case LinphoneCallError: {
@ -524,6 +531,8 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
{
ms_message("SPEEX codecs deactivated");
}
[self configurePayloadType:"SILK" fromPrefKey:@"silk_24k_preference" withRate:24000];
[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];
@ -709,7 +718,9 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
}
libmsilbc_init();
#if defined (HAVE_SILK)
libmssilk_init();
#endif
#ifdef HAVE_AMR
libmsamr_init(); //load amr plugin if present from the liblinphone sdk
#endif
@ -751,6 +762,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
//init audio session
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
BOOL bAudioInputAvailable= [audioSession inputIsAvailable];
[audioSession setDelegate:self];
if(!bAudioInputAvailable){
UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"No microphone",nil)
@ -823,5 +835,25 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
mLogView = view;
}
-(void) beginInterruption {
LinphoneCall* c = linphone_core_get_current_call(theLinphoneCore);
ms_message("Sound interruption detected!");
if (c) {
linphone_core_pause_call(theLinphoneCore, c);
}
}
-(void) endInterruption {
ms_message("Sound interruption ended!");
const MSList* c = linphone_core_get_calls(theLinphoneCore);
if (c) {
ms_message("Auto resuming call");
linphone_core_resume_call(theLinphoneCore, (LinphoneCall*) c->data);
}
[callDelegate updateUIFromLinphoneState:mCurrentViewController];
}
@end

View file

@ -26,6 +26,7 @@
-(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) displayVideoCallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl;
//status reporting
-(void) displayStatus:(NSString*) message;
@end

View file

@ -27,3 +27,4 @@
#import "UIEraseButton.h"
#import "LinphoneUIDelegates.h"
#import "UICamSwitch.h"
#import "UIPauseResumeButton.h"

View file

@ -0,0 +1,28 @@
/* UIMuteButton.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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <UIKit/UIKit.h>
#import "UIToggleButton.h"
@interface UIPauseResumeButton : UIToggleButton<UIToggleButtonDelegate> {
}
@end

View file

@ -0,0 +1,69 @@
/* UIMuteButton.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 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 "UIPauseResumeButton.h"
#include "LinphoneManager.h"
@implementation UIPauseResumeButton
-(void) onOn {
LinphoneCall* c = linphone_core_get_current_call([LinphoneManager getLc]);
if (c) {
linphone_core_pause_call([LinphoneManager getLc], c);
}
}
-(void) onOff {
const MSList* c = linphone_core_get_calls([LinphoneManager getLc]);
if (c) {
linphone_core_resume_call([LinphoneManager getLc], (LinphoneCall*) c->data);
}
}
-(bool) isInitialStateOn {
@try {
const MSList* c = linphone_core_get_calls([LinphoneManager getLc]);
if (c) {
return linphone_call_get_state((LinphoneCall*)c->data) == LinphoneCallPaused;
} else {
return false;
}
} @catch(NSException* e) {
//not ready yet
return false;
}
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code.
}
*/
- (void)dealloc {
[super dealloc];
}
@end

View file

@ -259,6 +259,10 @@
[status setText:message];
}
-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl {
[mute reset];
}
-(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {

View file

@ -31,6 +31,7 @@ echocancellation=0
[misc]
history_max_size=30
max_calls=1
[video]
display=1
@ -38,3 +39,5 @@ capture=1
show_local=0
enabled=1
size=ios-medium

View file

@ -47,6 +47,7 @@ linphone_configure_controls= \
SPEEX_LIBS="-L$(prefix)/lib -lspeexdsp -lspeex " \
OPENSSL_CFLAGS="-I$(prefix)/include" \
OPENSSL_LIBS="-L$(prefix)/lib -lssl -lcrypto"
MSSILK_CFLAGS="-I$(prefix)/include/silk"
ifeq ($(enable_zrtp),yes)
linphone_configure_controls+= --with-srtp=$(prefix) --enable-zrtp=yes --disable-tests
endif
@ -96,13 +97,14 @@ init:
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 build-ffmpeg build-libvpx $(LINPHONE_BUILD_DIR)/Makefile
.NOTPARALLEL build-linphone: init build-openssl build-srtp build-zrtpcpp build-osip2 build-eXosip2 build-speex build-libgsm buils-silk build-ffmpeg build-libvpx $(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-ffmpeg clean-libvpx clean-msx264
clean-linphone: clean-osip2 clean-eXosip2 clean-speex clean-libgsm clean-srtp clean-zrtpcpp clean-msilbc clean-libilbc clean-openssl clean-msamr clean-silk 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-msx264
veryclean-linphone: veryclean-osip2 veryclean-eXosip2 veryclean-speex veryclean-srtp veryclean-zrtpcpp veryclean-libgsm veryclean-msilbc veryclean-libilbc veryclean-openssl veryclean-msamr veryclean-silk veryclean-msx264
#-cd $(LINPHONE_BUILD_DIR) && make distclean
-cd $(LINPHONE_SRC_DIR) && rm -f configure
@ -295,7 +297,7 @@ multi-arch:
if test -f "$$i386_path"; then \
echo "Mixing $$archive and $$i386_path into $$destpath"; \
mkdir -p `dirname $$destpath` ; \
lipo -create $$archive $$armv7_path $$i386_path -output $$destpath; \
lipo -create -arch armv6 $$archive -arch armv7 $$armv7_path -arch i386 $$i386_path -output $$destpath; \
else \
echo "WARNING: archive `basename $$archive` exists in arm tree but does not exists in i386 tree."; \
fi \

View file

@ -23,13 +23,12 @@
SILK_BUILD_DIR?=$(BUILDER_BUILD_DIR)/externals/silk
ifneq (,$(findstring i386,$(host)))
make_options := TARGET_MTUNE=i386 TARGET_ARCH=i386
endif
ifneq (,$(findstring armv6,$(host)))
make_options := TARGET_ARCH="-arch armv6"
src := SILK_SDK_SRC_v1.0.8/SILK_SDK_SRC_FIX_v1.0.8
else
src := SILK_SDK_SRC_v1.0.8/SILK_SDK_SRC_ARM_v1.0.8
endif
ifneq (,$(findstring armv7,$(host)))
make_options := USE_NEON=yes TARGET_ARCH="armv7 -mno-thumb"
make_options := USE_NEON=yes
endif
$(SILK_BUILD_DIR)/Makefile:
@ -39,12 +38,12 @@ $(SILK_BUILD_DIR)/Makefile:
&& wget http://developer.skype.com/silk/SILK_SDK_SRC_v1.0.8.zip \
&& unzip SILK_SDK_SRC_v1.0.8.zip \
&& rm -f SILK_SDK_SRC_v1.0.8.zip \
&& mv SILK_SDK_SRC_v1.0.8/SILK_SDK_SRC_ARM_v1.0.8 silk \
&& mv ${src} silk \
&& rm -rf SILK_SDK_SRC_v1.0.8
build-silk: $(SILK_BUILD_DIR)/Makefile
cd $(SILK_BUILD_DIR) && host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \
&& make all TOOLCHAIN_PREFIX=$$SDK_BIN_PATH/ $(make_options) ADDED_DEFINES+=IPHONE \
&& make -j1 all TOOLCHAIN_PREFIX=$$SDK_BIN_PATH/ CXX="$$CXX" CC="$$CC -mno-thumb -g" LD="$$LD" $(make_options) ADDED_DEFINES+=IPHONE \
&& mkdir -p $(prefix)/include/silk \
&& cp -f $(SILK_BUILD_DIR)/interface/* $(prefix)/include/silk \
&& cp -f lib*.a $(prefix)/lib