aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2005-05-12 19:01:03 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2005-05-12 19:01:03 +0000
commit0a934da882569311c32ab9b2d840f3e3147f6b46 (patch)
tree984bf00ec82c3410df07892932ef4b4f2f227c44 /channels/chan_iax2.c
parente5bd600fd7a8edcbfb1a38a115b7b9e9c3a7d097 (diff)
fixes for the new jitter buffer (bug #4249)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5639 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_iax2.c')
-rwxr-xr-xchannels/chan_iax2.c8
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); */