diff options
author | Russell Bryant <russell@russellbryant.com> | 2005-05-12 19:01:03 +0000 |
---|---|---|
committer | Russell Bryant <russell@russellbryant.com> | 2005-05-12 19:01:03 +0000 |
commit | 65a7d2ac76f7c70b918ab0d0fb4216f8534484c7 (patch) | |
tree | 984bf00ec82c3410df07892932ef4b4f2f227c44 /channels | |
parent | 1febd6c72df7075e36003f1dd1a6a2233199eed0 (diff) |
fixes for the new jitter buffer (bug #4249)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5639 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rwxr-xr-x | channels/chan_iax2.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 1cb3b589a..29cf3cd05 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -2147,12 +2147,16 @@ static int get_from_jb(void *p) { pvt->jbid = -1; gettimeofday(&tv,NULL); + /* round up a millisecond since ast_sched_runq does; */ + /* prevents us from spinning while waiting for our now */ + /* to catch up with runq's now */ + tv.tv_usec += 1000; now = (tv.tv_sec - pvt->rxcore.tv_sec) * 1000 + (tv.tv_usec - pvt->rxcore.tv_usec) / 1000; - if(now > (next = jb_next(pvt->jb))) { - ret = jb_get(pvt->jb,&frame,now); + if(now >= (next = jb_next(pvt->jb))) { + ret = jb_get(pvt->jb,&frame,now,ast_codec_interp_len(pvt->voiceformat)); switch(ret) { case JB_OK: /*if(frame.type == JB_TYPE_VOICE && next + 20 != jb_next(pvt->jb)) fprintf(stderr, "NEXT %ld is not %ld+20!\n", jb_next(pvt->jb), next); */ |