aboutsummaryrefslogtreecommitdiffstats
path: root/codecs
diff options
context:
space:
mode:
Diffstat (limited to 'codecs')
-rw-r--r--codecs/codec_g722.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/codecs/codec_g722.c b/codecs/codec_g722.c
index 99c3856bc..7dd2744c3 100644
--- a/codecs/codec_g722.c
+++ b/codecs/codec_g722.c
@@ -102,9 +102,13 @@ static int g722tolin_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
{
struct g722_decoder_pvt *tmp = pvt->pvt;
int out_samples;
+ int in_samples;
+
+ /* g722_decode expects the samples to be in the invalid samples / 2 format */
+ in_samples = f->samples / 2;
out_samples = g722_decode(&tmp->g722, (int16_t *) &pvt->outbuf[pvt->samples * sizeof(int16_t)],
- (uint8_t *) f->data, f->samples);
+ (uint8_t *) f->data, in_samples);
pvt->samples += out_samples;
@@ -121,7 +125,7 @@ static int lintog722_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
outlen = g722_encode(&tmp->g722, (uint8_t *) (&pvt->outbuf[pvt->datalen]),
(int16_t *) f->data, f->samples);
- pvt->samples += outlen;
+ pvt->samples += outlen * 2;
pvt->datalen += outlen;