diff options
Diffstat (limited to 'codecs/codec_g722.c')
-rw-r--r-- | codecs/codec_g722.c | 8 |
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; |