diff options
author | Benny Prijono <bennylp@teluu.com> | 2010-11-03 06:46:27 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2010-11-03 06:46:27 +0000 |
commit | cfc7f58a54dabf0f0f29086c403c393c02d34f81 (patch) | |
tree | d8f87a9e85e1c07bf79a9822172f8b060eaaa3ab /pjmedia/src | |
parent | 23acf0bf297edf14814e5e83d7ed6b3ec57ddec5 (diff) |
Fixed #1154 (Run-time option to disable telephone-event in outgoing SDP offer (thanks Marcus Froeschl for the suggestion))
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3360 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia/endpoint.c | 70 |
1 files changed, 54 insertions, 16 deletions
diff --git a/pjmedia/src/pjmedia/endpoint.c b/pjmedia/src/pjmedia/endpoint.c index 616fef6a..8f781796 100644 --- a/pjmedia/src/pjmedia/endpoint.c +++ b/pjmedia/src/pjmedia/endpoint.c @@ -87,6 +87,9 @@ struct pjmedia_endpt /** To signal polling thread to quit. */ pj_bool_t quit_flag; + + /** Is telephone-event enable */ + pj_bool_t has_telephone_event; }; /** @@ -120,6 +123,7 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create(pj_pool_factory *pf, endpt->pf = pf; endpt->ioqueue = ioqueue; endpt->thread_cnt = worker_cnt; + endpt->has_telephone_event = PJ_TRUE; /* Sound */ status = pjmedia_aud_subsys_init(pf); @@ -221,6 +225,39 @@ PJ_DEF(pj_status_t) pjmedia_endpt_destroy (pjmedia_endpt *endpt) return PJ_SUCCESS; } +PJ_DEF(pj_status_t) pjmedia_endpt_set_flag( pjmedia_endpt *endpt, + pjmedia_endpt_flag flag, + const void *value) +{ + PJ_ASSERT_RETURN(endpt, PJ_EINVAL); + + switch (flag) { + case PJMEDIA_ENDPT_HAS_TELEPHONE_EVENT_FLAG: + endpt->has_telephone_event = *(pj_bool_t*)value; + break; + default: + return PJ_EINVAL; + } + + return PJ_SUCCESS; +} + +PJ_DEF(pj_status_t) pjmedia_endpt_get_flag( pjmedia_endpt *endpt, + pjmedia_endpt_flag flag, + void *value) +{ + PJ_ASSERT_RETURN(endpt, PJ_EINVAL); + + switch (flag) { + case PJMEDIA_ENDPT_HAS_TELEPHONE_EVENT_FLAG: + *(pj_bool_t*)value = endpt->has_telephone_event; + break; + default: + return PJ_EINVAL; + } + + return PJ_SUCCESS; +} /** * Get the ioqueue instance of the media endpoint. @@ -489,25 +526,26 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_sdp( pjmedia_endpt *endpt, #if defined(PJMEDIA_RTP_PT_TELEPHONE_EVENTS) && \ PJMEDIA_RTP_PT_TELEPHONE_EVENTS != 0 - /* * Add support telephony event */ - m->desc.fmt[m->desc.fmt_count++] = - pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR); - - /* Add rtpmap. */ - attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr); - attr->name = pj_str("rtpmap"); - attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR - " telephone-event/8000"); - m->attr[m->attr_count++] = attr; - - /* Add fmtp */ - attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr); - attr->name = pj_str("fmtp"); - attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR " 0-15"); - m->attr[m->attr_count++] = attr; + if (endpt->has_telephone_event) { + m->desc.fmt[m->desc.fmt_count++] = + pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR); + + /* Add rtpmap. */ + attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr); + attr->name = pj_str("rtpmap"); + attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR + " telephone-event/8000"); + m->attr[m->attr_count++] = attr; + + /* Add fmtp */ + attr = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_attr); + attr->name = pj_str("fmtp"); + attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR " 0-15"); + m->attr[m->attr_count++] = attr; + } #endif /* Done */ |