From 74cb39729bb9c3dd54000c3c9dfe6848d28fb81c Mon Sep 17 00:00:00 2001 From: Russell Bryant <russell@russellbryant.com> Date: Tue, 23 May 2006 22:57:03 +0000 Subject: [PATCH] further codec module optimization based on codec_alaw changes by rizzo (issue #7190, Mithraen) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@29880 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- codecs/codec_a_mu.c | 14 ++++++++------ codecs/codec_ulaw.c | 12 ++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/codecs/codec_a_mu.c b/codecs/codec_a_mu.c index f1b35299ab..05dbe5c732 100644 --- a/codecs/codec_a_mu.c +++ b/codecs/codec_a_mu.c @@ -56,14 +56,15 @@ static unsigned char a2mu[256]; static int alawtoulaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) { int x = f->samples; - int in_samples = f->samples; unsigned char *src = f->data; unsigned char *dst = (unsigned char *)pvt->outbuf + pvt->samples; + pvt->samples += x; + pvt->datalen += x; + while (x--) *dst++ = a2mu[*src++]; - pvt->samples += in_samples; - pvt->datalen += in_samples; + return 0; } @@ -71,14 +72,15 @@ static int alawtoulaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) static int ulawtoalaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) { int x = f->samples; - int in_samples = f->samples; unsigned char *src = f->data; unsigned char *dst = (unsigned char *)pvt->outbuf + pvt->samples; + pvt->samples += x; + pvt->datalen += x; + while (x--) *dst++ = mu2a[*src++]; - pvt->samples += in_samples; - pvt->datalen += in_samples; + return 0; } diff --git a/codecs/codec_ulaw.c b/codecs/codec_ulaw.c index 6d66b9b6f1..521b84237c 100644 --- a/codecs/codec_ulaw.c +++ b/codecs/codec_ulaw.c @@ -57,14 +57,14 @@ static int ulawtolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) int i = f->samples; unsigned char *src = f->data; int16_t *dst = (int16_t *)pvt->outbuf + pvt->samples; - int in_samples = f->samples; + + pvt->samples += i; + pvt->datalen += i * 2; /* 2 bytes/sample */ /* convert and copy in outbuf */ while (i--) *dst++ = AST_MULAW(*src++); - pvt->samples += in_samples; - pvt->datalen += in_samples * 2; /* 2 bytes/sample */ return 0; } @@ -74,13 +74,13 @@ static int lintoulaw_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) int i = f->samples; char *dst = pvt->outbuf + pvt->samples; int16_t *src = f->data; - int in_samples = f->samples; + + pvt->samples += i; + pvt->datalen += i; /* 1 byte/sample */ while (i--) *dst++ = AST_LIN2MU(*src++); - pvt->samples += in_samples; - pvt->datalen += in_samples; /* 1 byte/sample */ return 0; } -- GitLab