From fd06ab7299278576be5ee742b8fb8884054cbb0f Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Tue, 2 Sep 2008 11:25:07 +0000 Subject: Ticket #608: Added API to retrieve media transport and session from pjsua call git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2259 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/include/pjsua-lib/pjsua.h | 26 ++++++++++++++++++++++++++ pjsip/src/pjsua-lib/pjsua_call.c | 22 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h index 4989ef07..f8801776 100644 --- a/pjsip/include/pjsua-lib/pjsua.h +++ b/pjsip/include/pjsua-lib/pjsua.h @@ -2934,6 +2934,32 @@ PJ_DECL(pj_bool_t) pjsua_call_is_active(pjsua_call_id call_id); PJ_DECL(pj_bool_t) pjsua_call_has_media(pjsua_call_id call_id); +/** + * Retrieve the media session associated with this call. Note that the media + * session may not be available depending on the current call's media status + * (the pjsua_call_media_status information in pjsua_call_info). Application + * may use the media session to retrieve more detailed information about the + * call's media. + * + * @param call_id Call identification. + * + * @return Call media session. + */ +PJ_DECL(pjmedia_session*) pjsua_call_get_media_session(pjsua_call_id call_id); + + +/** + * Retrieve the media transport instance that is used for this call. + * Application may use the media transport to query more detailed information + * about the media transport. + * + * @param cid Call identification (the call_id). + * + * @return Call media transport. + */ +PJ_DECL(pjmedia_transport*) pjsua_call_get_media_transport(pjsua_call_id cid); + + /** * Get the conference port identification associated with the call. * diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index 737cc017..71fc8a24 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -1024,6 +1024,28 @@ PJ_DEF(pj_bool_t) pjsua_call_has_media(pjsua_call_id call_id) } +/* + * Retrieve the media session associated with this call. + */ +PJ_DEF(pjmedia_session*) pjsua_call_get_media_session(pjsua_call_id call_id) +{ + PJ_ASSERT_RETURN(call_id>=0 && call_id<(int)pjsua_var.ua_cfg.max_calls, + NULL); + return pjsua_var.calls[call_id].session; +} + + +/* + * Retrieve the media transport instance that is used for this call. + */ +PJ_DEF(pjmedia_transport*) pjsua_call_get_media_transport(pjsua_call_id cid) +{ + PJ_ASSERT_RETURN(cid>=0 && cid<(int)pjsua_var.ua_cfg.max_calls, + NULL); + return pjsua_var.calls[cid].med_tp; +} + + /* Acquire lock to the specified call_id */ pj_status_t acquire_call(const char *title, pjsua_call_id call_id, -- cgit v1.2.3