mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 11:08:06 +00:00
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:
commit
eecb65d1d4
14 changed files with 641 additions and 538 deletions
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -27,3 +27,4 @@
|
|||
#import "UIEraseButton.h"
|
||||
#import "LinphoneUIDelegates.h"
|
||||
#import "UICamSwitch.h"
|
||||
#import "UIPauseResumeButton.h"
|
||||
|
|
|
|||
28
Classes/LinphoneUI/UIPauseResumeButton.h
Normal file
28
Classes/LinphoneUI/UIPauseResumeButton.h
Normal 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
|
||||
69
Classes/LinphoneUI/UIPauseResumeButton.m
Normal file
69
Classes/LinphoneUI/UIPauseResumeButton.m
Normal 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
|
||||
|
|
@ -259,6 +259,10 @@
|
|||
[status setText:message];
|
||||
}
|
||||
|
||||
-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl {
|
||||
[mute reset];
|
||||
}
|
||||
|
||||
|
||||
-(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue