--- codecs/codec_a_mu.c (svn) +++ codecs/codec_a_mu.c (working copy) @@ -56,14 +56,15 @@ 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 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; } --- codecs/codec_ulaw.c (svn) +++ codecs/codec_ulaw.c (working copy) @@ -57,14 +57,14 @@ 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 @@ 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; }