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 + + + 292 + {{366, 493}, {37, 37}} + + + _NS:1062 + NO + IBIPadFramework + NO + 0 + 292 {{598, 799}, {170, 225}} - + 3 MQA @@ -140,7 +153,7 @@ {768, 805} - + _NS:408 3 @@ -344,7 +357,7 @@ {{213, 70}, {107, 66}} - + NO NO @@ -366,6 +379,19 @@ + + + 292 + {{247.5, 84.5}, {37, 37}} + + + + _NS:1062 + NO + IBIPadFramework + NO + 0 + 292 @@ -782,7 +808,7 @@ {{0, 20}, {768, 1004}} - + _NS:212 IBIPadFramework @@ -1056,6 +1082,22 @@ 164 + + + videoUpdateIndicator + + + + 167 + + + + videoWaitingForFirstImage + + + + 168 + dataSource @@ -1171,6 +1213,7 @@ + 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