diff options
author | Liong Sauw Ming <ming@teluu.com> | 2014-05-22 04:52:53 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2014-05-22 04:52:53 +0000 |
commit | f3f6fbf0fc75ae65993b8833ea62e36401fd065a (patch) | |
tree | 6843bba3d6f2d1af0ebc2e88e939ec9977175275 /pjsip-apps/src | |
parent | 77bd1408b3d0187460c2063c1432d31235b33763 (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
Diffstat (limited to 'pjsip-apps/src')
-rw-r--r-- | pjsip-apps/src/pjsua/ios/ipjsua/ipjsuaAppDelegate.m | 44 | ||||
-rw-r--r-- | pjsip-apps/src/pjsua/pjsua_app.c | 4 | ||||
-rw-r--r-- | pjsip-apps/src/pjsua/pjsua_app_common.c | 9 |
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 |