diff options
author | Benny Prijono <bennylp@teluu.com> | 2011-08-25 11:59:39 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2011-08-25 11:59:39 +0000 |
commit | 3550a1860cb5812e76d132052c2c5a75bd84b03e (patch) | |
tree | 925bc609bda1552708d6cae62ac865da42effa70 /pjsip | |
parent | ddeb24066e2feafe9de7baef397d40b40c7fb537 (diff) |
Re #1351: option to initially hide video preview window to avoid floating window. Also added pjsua_vid_preview_param_default()
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3724 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua.h | 21 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_vid.c | 41 |
2 files changed, 42 insertions, 20 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h index e0f33514..2fdea68e 100644 --- a/pjsip/include/pjsua-lib/pjsua.h +++ b/pjsip/include/pjsua-lib/pjsua.h @@ -5437,23 +5437,40 @@ typedef struct pjsua_vid_preview_param /** * Device ID for the video renderer to be used for rendering the * capture stream for preview. + * + * Default: PJMEDIA_VID_DEFAULT_RENDER_DEV */ pjmedia_vid_dev_index rend_id; + + /** + * Show window initially. + * + * Default: PJ_TRUE. + */ + pj_bool_t show; + } pjsua_vid_preview_param; /** + * Initialize pjsua_vid_preview_param + * + * @param p The parameter to be initialized. + */ +PJ_DECL(void) pjsua_vid_preview_param_default(pjsua_vid_preview_param *p); + +/** * Start video preview window for the specified capture device. * * @param id The capture device ID where its preview will be * started. - * @param prm Optional video preview parameters. Specify NULL + * @param p Optional video preview parameters. Specify NULL * to use default values. * * @return PJ_SUCCESS on success, or the appropriate error code. */ PJ_DECL(pj_status_t) pjsua_vid_preview_start(pjmedia_vid_dev_index id, - pjsua_vid_preview_param *prm); + const pjsua_vid_preview_param *p); /** * Get the preview window handle associated with the capture device, if any. diff --git a/pjsip/src/pjsua-lib/pjsua_vid.c b/pjsip/src/pjsua-lib/pjsua_vid.c index 72580f9f..8083445a 100644 --- a/pjsip/src/pjsua-lib/pjsua_vid.c +++ b/pjsip/src/pjsua-lib/pjsua_vid.c @@ -116,6 +116,13 @@ pjsua_call_vid_strm_op_param_default(pjsua_call_vid_strm_op_param *param) param->cap_dev = PJMEDIA_VID_DEFAULT_CAPTURE_DEV; } +PJ_DEF(void) pjsua_vid_preview_param_default(pjsua_vid_preview_param *p) +{ + p->rend_id = PJMEDIA_VID_DEFAULT_RENDER_DEV; + p->show = PJ_TRUE; +} + + /***************************************************************************** * Devices. */ @@ -338,19 +345,15 @@ static pj_status_t create_vid_win(pjsua_vid_win_type type, wid = pjsua_vid_preview_get_win(cap_id); if (wid != PJSUA_INVALID_ID) { /* Yes, it exists */ + /* Show/hide window */ + pjmedia_vid_dev_stream *rdr; + pj_bool_t hide = !show; - /* Show window if requested */ - if (show) { - pjmedia_vid_dev_stream *rdr; - pj_bool_t hide = PJ_FALSE; - - rdr = pjmedia_vid_port_get_stream(pjsua_var.win[wid].vp_rend); - pj_assert(rdr); - status = pjmedia_vid_dev_stream_set_cap( - rdr, - PJMEDIA_VID_DEV_CAP_OUTPUT_HIDE, - &hide); - } + rdr = pjmedia_vid_port_get_stream(pjsua_var.win[wid].vp_rend); + pj_assert(rdr); + status = pjmedia_vid_dev_stream_set_cap( + rdr, PJMEDIA_VID_DEV_CAP_OUTPUT_HIDE, + &hide); /* Done */ *id = wid; @@ -832,23 +835,25 @@ void stop_video_stream(pjsua_call_media *call_med) * Start video preview window for the specified capture device. */ PJ_DEF(pj_status_t) pjsua_vid_preview_start(pjmedia_vid_dev_index id, - pjsua_vid_preview_param *prm) + const pjsua_vid_preview_param *prm) { pjsua_vid_win_id wid; pjsua_vid_win *w; pjmedia_vid_dev_index rend_id; + pjsua_vid_preview_param default_param; pj_status_t status; PJSUA_LOCK(); - if (prm) { - rend_id = prm->rend_id; - } else { - rend_id = PJMEDIA_VID_DEFAULT_RENDER_DEV; + if (!prm) { + pjsua_vid_preview_param_default(&default_param); + prm = &default_param; } + rend_id = prm->rend_id; + status = create_vid_win(PJSUA_WND_TYPE_PREVIEW, NULL, rend_id, id, - PJ_TRUE, &wid); + prm->show, &wid); if (status != PJ_SUCCESS) { PJSUA_UNLOCK(); return status; |