aboutsummaryrefslogtreecommitdiffstats
path: root/translate.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2000-08-11 15:40:57 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2000-08-11 15:40:57 +0000
commit0605979cbd2cbaee7362f8afcbacf55207cb6992 (patch)
treea9134109e74f265386d5547a27c732bc8f799b80 /translate.c
parent5d1d53514d5b47881e12b25db581f3c4a82a81ba (diff)
Version 0.1.4 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@216 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'translate.c')
-rwxr-xr-xtranslate.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/translate.c b/translate.c
index 7546b59a2..fc9c5f22b 100755
--- a/translate.c
+++ b/translate.c
@@ -304,7 +304,8 @@ struct ast_frame_chain *ast_translate(struct ast_trans_pvt *path, struct ast_fra
#define FUDGE 0
-static void translator_apply(struct translator_pvt *pvt, struct ast_trans_pvt *path, struct ast_frame *f, int fd, struct ast_channel *c, struct timeval *last)
+static void translator_apply(struct translator_pvt *pvt, struct ast_trans_pvt *path, struct ast_frame *f, int fd, struct ast_channel *c,
+ struct timeval *last)
{
struct ast_trans_pvt *p;
struct ast_frame *out;
@@ -328,7 +329,7 @@ static void translator_apply(struct translator_pvt *pvt, struct ast_trans_pvt *p
#ifdef EXPERIMENTAL_TRANSLATION
if (ms + FUDGE < out->timelen)
schedule_delivery(pvt->sched, pvt,
- c, fd, out, ms);
+ c, fd, out, out->timelen - ms);
else {
if (c)
ast_write(c, out);
@@ -340,13 +341,17 @@ static void translator_apply(struct translator_pvt *pvt, struct ast_trans_pvt *p
/* Schedule this packet to be delivered at the
right time */
} else
+ gettimeofday(last, NULL);
#else
+#if 0
/* XXX Not correct in the full duplex case XXX */
if (ms + FUDGE < out->timelen)
usleep((out->timelen - ms - FUDGE) * 1000);
+#endif
last->tv_sec = tv.tv_sec;
last->tv_usec = tv.tv_usec;
- }
+ } else
+ gettimeofday(last, NULL);
#endif
if (c)
ast_write(c, out);