diff --git a/Classes/InCallViewController-ipad.xib b/Classes/InCallViewController-ipad.xib
index 517f2cf6f..3a00313b4 100644
--- a/Classes/InCallViewController-ipad.xib
+++ b/Classes/InCallViewController-ipad.xib
@@ -11,12 +11,13 @@
933
+ IBUIButton
IBUIImageView
IBUIViewController
+ IBProxyObject
+ IBUIActivityIndicatorView
IBUITableView
IBUIView
- IBUIButton
- IBProxyObject
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -65,13 +66,25 @@
NO
IBIPadFramework
+
controls
@@ -1329,6 +1372,7 @@
+
video
@@ -1336,6 +1380,7 @@
158
+
video_preview
@@ -1356,6 +1401,17 @@
+
+ 165
+
+
+ toggleVideoIndicator
+
+
+ 166
+
+
+
@@ -1393,6 +1449,8 @@
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -1424,7 +1482,7 @@
- 164
+ 168
@@ -1444,7 +1502,7 @@
UIButton
- UIButton
+ UIToggleVideoButton
UITableView
UIButton
UIViewController
@@ -1473,8 +1531,10 @@
UICamSwitch
UIView
UIView
+ UIActivityIndicatorView
UIView
VideoViewController
+ UIActivityIndicatorView
UIButton
@@ -1484,7 +1544,7 @@
addVideo
- UIButton
+ UIToggleVideoButton
callTableView
@@ -1598,6 +1658,10 @@
videoPreview
UIView
+
+ videoUpdateIndicator
+ UIActivityIndicatorView
+
videoView
UIView
@@ -1606,6 +1670,10 @@
videoViewController
VideoViewController
+
+ videoWaitingForFirstImage
+ UIActivityIndicatorView
+
zero
UIButton
@@ -1678,6 +1746,17 @@
UIToggleVideoButton
UIButton
+
+ videoUpdateIndicator
+ UIActivityIndicatorView
+
+
+ videoUpdateIndicator
+
+ videoUpdateIndicator
+ UIActivityIndicatorView
+
+
IBProjectSource
./Classes/UIToggleVideoButton.h
diff --git a/Classes/IncallViewController.h b/Classes/IncallViewController.h
index a7336bb22..81f6e588c 100644
--- a/Classes/IncallViewController.h
+++ b/Classes/IncallViewController.h
@@ -65,6 +65,7 @@
UIImageView* videoCallQuality;
UICamSwitch* videoCameraSwitch;
UIActivityIndicatorView* videoUpdateIndicator;
+ UIActivityIndicatorView* videoWaitingForFirstImage;
bool dismissed;
@@ -136,4 +137,6 @@
@property (nonatomic, retain) IBOutlet UIImageView* videoCallQuality;
@property (nonatomic, retain) IBOutlet UICamSwitch* videoCameraSwitch;
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoUpdateIndicator;
+@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoWaitingForFirstImage;
+
@end
diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m
index 1b44b2247..926d84d5b 100644
--- a/Classes/IncallViewController.m
+++ b/Classes/IncallViewController.m
@@ -73,6 +73,7 @@ const NSInteger SECURE_BUTTON_TAG=5;
@synthesize videoCallQuality;
@synthesize videoCameraSwitch;
@synthesize videoUpdateIndicator;
+@synthesize videoWaitingForFirstImage;
@synthesize addVideo;
@@ -583,6 +584,7 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[self enableVideoDisplay];
[self updateUIFromLinphoneState: YES];
+ videoWaitingForFirstImage.hidden = NO;
return;
if (mIncallViewIsReady) {
@@ -633,6 +635,11 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[visibleActionSheet release];
}
+-(void) firstVideoFrameDecoded: (LinphoneCall*) call {
+ // hide video in progress view indicator
+ videoWaitingForFirstImage.hidden = TRUE;
+}
+
- (IBAction)doAction:(id)sender {
if (sender == dialer) {
@@ -1038,5 +1045,4 @@ void addAnimationFadeTransition(UIView* view, float duration) {
[self updateUIFromLinphoneState: YES];
}
-
@end
diff --git a/Classes/IncallViewController.xib b/Classes/IncallViewController.xib
index ee5e4d9cc..0d5a16bd6 100644
--- a/Classes/IncallViewController.xib
+++ b/Classes/IncallViewController.xib
@@ -84,6 +84,19 @@
NO
IBCocoaTouchFramework
+
+
+ 292
+ {{141, 212}, {37, 37}}
+
+
+ _NS:1030
+ NO
+ IBCocoaTouchFramework
+ NO
+ YES
+ 0
+
{320, 460}
@@ -346,7 +359,7 @@
{{213, 70}, {107, 66}}
-
+
NO
NO
@@ -373,7 +386,7 @@
-
+
-2147483356
{{247.5, 84.5}, {37, 37}}
@@ -1080,10 +1093,18 @@
videoUpdateIndicator
-
+
143
+
+
+ videoWaitingForFirstImage
+
+
+
+ 145
+
doAction:
@@ -1181,6 +1202,7 @@
+
video
@@ -1216,7 +1238,7 @@
-
+
controls
@@ -1398,10 +1420,15 @@
142
-
+
video_update_indicator
+
+ 144
+
+
+
@@ -1433,6 +1460,7 @@
140.CustomClassName
140.IBPluginDependency
142.IBPluginDependency
+ 144.IBPluginDependency
15.IBPluginDependency
16.CustomClassName
16.IBPluginDependency
@@ -1499,6 +1527,7 @@
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
UIMuteButton
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -1549,7 +1578,7 @@
- 143
+ 145
@@ -1605,6 +1634,7 @@
videoUpdateIndicator
videoView
videoViewController
+ videoWaitingForFirstImage
zero
@@ -1642,6 +1672,7 @@
UIActivityIndicatorView
UIView
VideoViewController
+ UIActivityIndicatorView
UIButton
@@ -1682,6 +1713,7 @@
videoUpdateIndicator
videoView
videoViewController
+ videoWaitingForFirstImage
zero
@@ -1818,6 +1850,10 @@
videoViewController
VideoViewController
+
+ videoWaitingForFirstImage
+ UIActivityIndicatorView
+
zero
UIButton
diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m
index 28a8e3eba..3221ca359 100644
--- a/Classes/LinphoneUI/LinphoneManager.m
+++ b/Classes/LinphoneUI/LinphoneManager.m
@@ -400,6 +400,15 @@ static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, Lin
static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyConfig* cfg, LinphoneRegistrationState state,const char* message) {
[(LinphoneManager*)linphone_core_get_user_data(lc) onRegister:lc cfg:cfg state:state message:message];
}
+
+-(void) call_video_first_image_decoded:(LinphoneCall*) call {
+ [callDelegate firstVideoFrameDecoded: call];
+}
+
+static void linphone_call_first_video_frame(LinphoneCore* lc, LinphoneCall* call) {
+ [[LinphoneManager instance] call_video_first_image_decoded: call];
+}
+
static LinphoneCoreVTable linphonec_vtable = {
.show =NULL,
.call_state_changed =(LinphoneCallStateCb)linphone_iphone_call_state,
@@ -412,7 +421,8 @@ static LinphoneCoreVTable linphonec_vtable = {
.display_warning=linphone_iphone_log,
.display_url=NULL,
.text_received=NULL,
- .dtmf_received=NULL
+ .dtmf_received=NULL,
+ .call_first_video_frame=linphone_call_first_video_frame
};
diff --git a/Classes/LinphoneUI/LinphoneUIDelegates.h b/Classes/LinphoneUI/LinphoneUIDelegates.h
index 0023ede04..4d6b0477d 100644
--- a/Classes/LinphoneUI/LinphoneUIDelegates.h
+++ b/Classes/LinphoneUI/LinphoneUIDelegates.h
@@ -29,6 +29,7 @@
//status reporting
-(void) displayStatus:(NSString*) message;
-(void) displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName;
+-(void) firstVideoFrameDecoded:(LinphoneCall*) call;
@end
diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m
index 42c5e5352..65de89c11 100644
--- a/Classes/PhoneViewController.m
+++ b/Classes/PhoneViewController.m
@@ -396,5 +396,9 @@
[self updateStatusSubView];
}
+-(void) firstVideoFrameDecoded: (LinphoneCall*) call {
+ [mIncallViewController firstVideoFrameDecoded:call];
+}
+
@end
diff --git a/submodules/linphone b/submodules/linphone
index a43d75d8a..c474ef27b 160000
--- a/submodules/linphone
+++ b/submodules/linphone
@@ -1 +1 @@
-Subproject commit a43d75d8a36099f14638eaf14606535fe559df7b
+Subproject commit c474ef27bc1b6d2951bb3a4c8ad7343f7171bbea