diff options
author | Joshua Colp <jcolp@digium.com> | 2014-09-16 21:06:22 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2014-09-16 21:06:22 +0000 |
commit | 618b46d8f0cdb27a65ca46160cc1d37cc4cfc4ea (patch) | |
tree | dcc8418567fbfddee2ed06d913d8dd52b56018f0 /res/res_rtp_asterisk.c | |
parent | 662b687dbe86ad62d1c6bea5a21560857a8a0a63 (diff) |
Multiple revisions 423209,423212
........
r423209 | file | 2014-09-16 17:35:34 -0300 (Tue, 16 Sep 2014) | 8 lines
res_rtp_asterisk: Fix building when pjproject is not used.
........
Merged revisions 423207 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 423208 from http://svn.asterisk.org/svn/asterisk/branches/12
........
r423212 | file | 2014-09-16 18:03:59 -0300 (Tue, 16 Sep 2014) | 10 lines
res_rtp_asterisk: Fix 100% CPU usage due to timer heap thread spinning.
Side note: I need a vacation.
........
Merged revisions 423210 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 423211 from http://svn.asterisk.org/svn/asterisk/branches/12
........
Merged revisions 423209,423212 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423213 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_rtp_asterisk.c')
-rw-r--r-- | res/res_rtp_asterisk.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 739ae17d4..dc5a2a71e 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -1031,7 +1031,7 @@ static struct ast_rtp_ioqueue_thread *rtp_ioqueue_thread_get_or_create(void) pj_timer_heap_set_lock(ioqueue->timerheap, lock, PJ_TRUE); - if (pj_ioqueue_create(ioqueue->pool, 16, &ioqueue->ioqueue) != PJ_SUCCESS) { + if (pj_ioqueue_create(ioqueue->pool, PJ_IOQUEUE_MAX_HANDLES, &ioqueue->ioqueue) != PJ_SUCCESS) { goto fatal; } @@ -1700,8 +1700,17 @@ static pj_ice_sess_cb ast_rtp_ice_sess_cb = { /*! \brief Worker thread for timerheap */ static int timer_worker_thread(void *data) { + pj_ioqueue_t *ioqueue; + + if (pj_ioqueue_create(pool, 1, &ioqueue) != PJ_SUCCESS) { + return -1; + } + while (!timer_terminate) { + const pj_time_val delay = {0, 10}; + pj_timer_heap_poll(timer_heap, NULL); + pj_ioqueue_poll(ioqueue, &delay); } return 0; @@ -2476,8 +2485,10 @@ static int ast_rtp_new(struct ast_rtp_instance *instance, static int ast_rtp_destroy(struct ast_rtp_instance *instance) { struct ast_rtp *rtp = ast_rtp_instance_get_data(instance); +#ifdef HAVE_PJPROJECT struct timeval wait = ast_tvadd(ast_tvnow(), ast_samp2tv(TURN_STATE_WAIT_TIME, 1000)); struct timespec ts = { .tv_sec = wait.tv_sec, .tv_nsec = wait.tv_usec * 1000, }; +#endif /* Destroy the smoother that was smoothing out audio if present */ if (rtp->smoother) { |