summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2011-10-04 04:04:49 +0000
committerBenny Prijono <bennylp@teluu.com>2011-10-04 04:04:49 +0000
commitcb646a2403e5e3bf84c2eb59c602f46fef11464e (patch)
tree7fcf9f90e2f27343841861e374757ca4193f618c /pjsip-apps
parent6670ddb28525bad10947bae293370142e4b3c46e (diff)
Misc (re #1370): auto arranging of video windows in pjsua
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3785 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c39
1 files changed, 37 insertions, 2 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index cc1cbde6..53e181a3 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -2761,12 +2761,46 @@ static void on_call_audio_state(pjsua_call_info *ci, unsigned mi,
}
}
+/* arrange windows. arg:
+ * -1: arrange all windows
+ * != -1: arrange only this window id
+ */
+static void arrange_window(pjsua_vid_win_id wid)
+{
+ pjmedia_coord pos;
+ int i, last;
+
+ pos.x = 0;
+ pos.y = 0;
+ last = (wid == PJSUA_INVALID_ID) ? PJSUA_MAX_VID_WINS : wid;
+
+ for (i=0; i<last; ++i) {
+ pjsua_vid_win_info wi;
+ pj_status_t status;
+
+ status = pjsua_vid_win_get_info(i, &wi);
+ if (status != PJ_SUCCESS)
+ continue;
+
+ if (wid == PJSUA_INVALID_ID)
+ pjsua_vid_win_set_pos(i, &pos);
+
+ pos.y += wi.size.h;
+ }
+
+ if (wid != PJSUA_INVALID_ID)
+ pjsua_vid_win_set_pos(wid, &pos);
+}
+
/* Process video media state. "mi" is the media index. */
static void on_call_video_state(pjsua_call_info *ci, unsigned mi,
pj_bool_t *has_error)
{
- PJ_UNUSED_ARG(ci);
- PJ_UNUSED_ARG(mi);
+ if (ci->media_status != PJSUA_CALL_MEDIA_ACTIVE)
+ return;
+
+ arrange_window(ci->media[mi].stream.vid.win_in);
+
PJ_UNUSED_ARG(has_error);
}
@@ -3839,6 +3873,7 @@ static void vid_handle_menu(char *menuin)
int dev_id = atoi(argv[4]);
if (on) {
pjsua_vid_preview_start(dev_id, NULL);
+ arrange_window(pjsua_vid_preview_get_win(dev_id));
} else {
pjsua_vid_preview_stop(dev_id);
}