diff --git a/codecs/codec_a_mu.c b/codecs/codec_a_mu.c index f1b35299abcef1c809fc105626a8a559e164d1a6..05dbe5c7320ea7f6683bd509ae67974d60d39b1c 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 6d66b9b6f1495534774beac38471031ef7f7eba9..521b84237cc3048540998d059cf29031dc5d48db 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; }