diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2011-12-07 10:43:28 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2011-12-07 10:43:28 +0000 |
commit | 2ba3536e2d318130242c35ed053aaae7f771b261 (patch) | |
tree | 564da2c0e0a5b2b2fef7a50342286727eb825662 /pjsip/src/pjsua-lib/pjsua_vid.c | |
parent | 3a0786774a23558b8da85fd261b2858995c2c999 (diff) |
Re #1234: Initial version of keyframe request/response via SIP INFO.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3901 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 | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_vid.c b/pjsip/src/pjsua-lib/pjsua_vid.c index 4e9017fa..b8768c00 100644 --- a/pjsip/src/pjsua-lib/pjsua_vid.c +++ b/pjsip/src/pjsua-lib/pjsua_vid.c @@ -2000,6 +2000,32 @@ static pj_status_t call_set_tx_video(pjsua_call *call, } +static pj_status_t call_send_vid_keyframe(pjsua_call *call, + int med_idx) +{ + pjsua_call_media *call_med; + + /* Verify and normalize media index */ + if (med_idx == -1) { + int first_active; + + call_get_vid_strm_info(call, &first_active, NULL, NULL, NULL); + if (first_active == -1) + return PJ_ENOTFOUND; + + med_idx = first_active; + } + + call_med = &call->media[med_idx]; + + /* Verify media type and stream instance. */ + if (call_med->type != PJMEDIA_TYPE_VIDEO || !call_med->strm.v.stream) + return PJ_EINVAL; + + return pjmedia_vid_stream_send_keyframe(call_med->strm.v.stream); +} + + /* * Start, stop, and/or manipulate video transmission for the specified call. */ @@ -2069,6 +2095,9 @@ PJ_DEF(pj_status_t) pjsua_call_set_vid_strm ( case PJSUA_CALL_VID_STRM_STOP_TRANSMIT: status = call_set_tx_video(call, param_.med_idx, PJ_FALSE); break; + case PJSUA_CALL_VID_STRM_SEND_KEYFRAME: + status = call_send_vid_keyframe(call, param_.med_idx); + break; default: status = PJ_EINVALIDOP; break; |