diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-15 23:00:47 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-15 23:00:47 +0000 |
commit | ff15e0fa53156b9994da3f726bfe91232de6195a (patch) | |
tree | 896015cada90b49858e1bf6503d9583704a56179 /frame.c | |
parent | c05cf07847cb384ba66aa29d5eda580eda413ffb (diff) |
add a library of timeval manipulation functions, and change a large number of usses to use the new functions (bug #4504)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6146 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'frame.c')
-rwxr-xr-x | frame.c | 14 |
1 files changed, 4 insertions, 10 deletions
@@ -144,8 +144,7 @@ int __ast_smoother_feed(struct ast_smoother *s, struct ast_frame *f, int swap) else memcpy(s->data + s->len, f->data, f->datalen); /* If either side is empty, reset the delivery time */ - if (!s->len || (!f->delivery.tv_sec && !f->delivery.tv_usec) || - (!s->delivery.tv_sec && !s->delivery.tv_usec)) + if (!s->len || ast_tvzero(f->delivery) || ast_tvzero(s->delivery)) /* XXX really ? */ s->delivery = f->delivery; s->len += f->datalen; return 0; @@ -181,7 +180,7 @@ struct ast_frame *ast_smoother_read(struct ast_smoother *s) s->f.offset = AST_FRIENDLY_OFFSET; s->f.datalen = len; /* Samples will be improper given VAD, but with VAD the concept really doesn't even exist */ - s->f.samples = len * s->samplesperbyte; + s->f.samples = len * s->samplesperbyte; /* XXX rounding */ s->f.delivery = s->delivery; /* Fill Data */ memcpy(s->f.data, s->data, len); @@ -191,14 +190,9 @@ struct ast_frame *ast_smoother_read(struct ast_smoother *s) /* In principle this should all be fine because if we are sending G.729 VAD, the next timestamp will take over anyawy */ memmove(s->data, s->data + len, s->len); - if (s->delivery.tv_sec || s->delivery.tv_usec) { + if (!ast_tvzero(s->delivery)) { /* If we have delivery time, increment it, otherwise, leave it at 0 */ - s->delivery.tv_sec += (len * s->samplesperbyte) / 8000.0; - s->delivery.tv_usec += (((int)(len * s->samplesperbyte)) % 8000) * 125; - if (s->delivery.tv_usec > 1000000) { - s->delivery.tv_usec -= 1000000; - s->delivery.tv_sec += 1; - } + s->delivery = ast_tvadd(s->delivery, ast_samp2tv(s->f.samples, 8000)); } } /* Return frame */ |