diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2011-09-23 04:00:27 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2011-09-23 04:00:27 +0000 |
commit | 434f964e7a8a9ea6b4556707d53207d39361d00e (patch) | |
tree | 612d5b914d2495531c310ec6c44c246093f1fe6d /pjsip/src/pjsua-lib/pjsua_vid.c | |
parent | 1a1575155bfcdce36776bb837242e571819c164c (diff) |
Closes #1377: fixed video stream cleanup to reset back cap_win_id & rdr_win_id value to PJSUA_INVALID_ID after capture/render device released from the call stream.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3772 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_vid.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_vid.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_vid.c b/pjsip/src/pjsua-lib/pjsua_vid.c index 1d0697ed..ddce5324 100644 --- a/pjsip/src/pjsua-lib/pjsua_vid.c +++ b/pjsip/src/pjsua-lib/pjsua_vid.c @@ -979,21 +979,26 @@ void stop_video_stream(pjsua_call_media *call_med) pjmedia_port *media_port; pjsua_vid_win *w = &pjsua_var.win[call_med->strm.v.cap_win_id]; + pj_status_t status; - pjmedia_vid_stream_get_port(call_med->strm.v.stream, - PJMEDIA_DIR_ENCODING, - &media_port); - pj_assert(media_port); - - pjmedia_vid_port_stop(w->vp_cap); - pjmedia_vid_tee_remove_dst_port(w->tee, media_port); - pjmedia_vid_port_start(w->vp_cap); + /* Disconnect video stream from capture device */ + status = pjmedia_vid_stream_get_port(call_med->strm.v.stream, + PJMEDIA_DIR_ENCODING, + &media_port); + if (status == PJ_SUCCESS) { + /* Video tee is not threadsafe, so stop the capture first */ + pjmedia_vid_port_stop(w->vp_cap); + pjmedia_vid_tee_remove_dst_port(w->tee, media_port); + pjmedia_vid_port_start(w->vp_cap); + } dec_vid_win(call_med->strm.v.cap_win_id); + call_med->strm.v.cap_win_id = PJSUA_INVALID_ID; } if (call_med->strm.v.rdr_win_id != PJSUA_INVALID_ID) { dec_vid_win(call_med->strm.v.rdr_win_id); + call_med->strm.v.rdr_win_id = PJSUA_INVALID_ID; } if ((call_med->dir & PJMEDIA_DIR_ENCODING) && |