summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2014-05-22 04:52:53 +0000
committerLiong Sauw Ming <ming@teluu.com>2014-05-22 04:52:53 +0000
commitf3f6fbf0fc75ae65993b8833ea62e36401fd065a (patch)
tree6843bba3d6f2d1af0ebc2e88e939ec9977175275
parent77bd1408b3d0187460c2063c1432d31235b33763 (diff)
Re #1757: Modify display video function in r4813 so it can display video preview as well
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4848 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m44
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c4
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app_common.c9
3 files changed, 39 insertions, 18 deletions
diff --git a/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m b/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m
index d415d94c..34be6262 100644
--- a/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m
+++ b/pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m
@@ -225,23 +225,39 @@ pj_bool_t showNotification(pjsua_call_id call_id)
void displayWindow(pjsua_vid_win_id wid)
{
#if PJSUA_HAS_VIDEO
- pjsua_vid_win_info wi;
+ int i, last;
- if (wid != PJSUA_INVALID_ID &&
- pjsua_vid_win_get_info(wid, &wi) == PJ_SUCCESS)
- {
- UIView *view = (__bridge UIView *)wi.hwnd.info.ios.window;
- if (view) {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIView *parent = app.viewController.view;
- /* Add the video window as subview */
- [parent addSubview:view];
- /* Center it */
- view.center = CGPointMake(parent.bounds.size.width/2.0,
- parent.bounds.size.height/2.0);
- });
+ i = (wid == PJSUA_INVALID_ID) ? 0 : wid;
+ last = (wid == PJSUA_INVALID_ID) ? PJSUA_MAX_VID_WINS : wid+1;
+
+ for (;i < last; ++i) {
+ pjsua_vid_win_info wi;
+
+ if (pjsua_vid_win_get_info(i, &wi) == PJ_SUCCESS) {
+ UIView *parent = app.viewController.view;
+ UIView *view = (__bridge UIView *)wi.hwnd.info.ios.window;
+
+ if (view && ![view isDescendantOfView:parent]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ /* Add the video window as subview */
+ [parent addSubview:view];
+
+ if (!wi.is_native) {
+ /* Center it horizontally */
+ view.center = CGPointMake(parent.bounds.size.width/2.0,
+ view.bounds.size.height/2.0);
+ } else {
+ /* Preview window, move it to the bottom */
+ view.center = CGPointMake(parent.bounds.size.width/2.0,
+ parent.bounds.size.height-
+ view.bounds.size.height/2.0);
+ }
+ });
+ }
}
}
+
+
#endif
}
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index 8ccd2ee7..fae0cb13 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -48,7 +48,6 @@ static void stereo_demo();
#ifdef USE_GUI
pj_bool_t showNotification(pjsua_call_id call_id);
-void displayWindow(pjsua_vid_win_id wid);
#endif
static void ringback_start(pjsua_call_id call_id);
@@ -556,9 +555,6 @@ static void on_call_video_state(pjsua_call_info *ci, unsigned mi,
return;
arrange_window(ci->media[mi].stream.vid.win_in);
-#ifdef USE_GUI
- displayWindow(ci->media[mi].stream.vid.win_in);
-#endif
PJ_UNUSED_ARG(has_error);
}
diff --git a/pjsip-apps/src/pjsua/pjsua_app_common.c b/pjsip-apps/src/pjsua/pjsua_app_common.c
index 2f79cae5..d2ca0b64 100644
--- a/pjsip-apps/src/pjsua/pjsua_app_common.c
+++ b/pjsip-apps/src/pjsua/pjsua_app_common.c
@@ -28,6 +28,10 @@
# define SOME_BUF_SIZE (1024 * 3)
#endif
+#ifdef USE_GUI
+void displayWindow(pjsua_vid_win_id wid);
+#endif
+
static char some_buf[SOME_BUF_SIZE];
/** Variable definition **/
@@ -251,6 +255,11 @@ void arrange_window(pjsua_vid_win_id wid)
if (wid != PJSUA_INVALID_ID)
pjsua_vid_win_set_pos(wid, &pos);
+
+#ifdef USE_GUI
+ displayWindow(wid);
+#endif
+
#else
PJ_UNUSED_ARG(wid);
#endif