diff --git a/main/translate.c b/main/translate.c index 6648931b72..da01b5d8c7 100644 --- a/main/translate.c +++ b/main/translate.c @@ -413,7 +413,9 @@ static int framein(struct ast_trans_pvt *pvt, struct ast_frame *f) if (!pvt->t->native_plc) return 0; } - if (pvt->samples + f->samples > pvt->t->buffer_samples) { + int src_srate = pvt->t->src_codec.sample_rate; + int dst_srate = pvt->t->dst_codec.sample_rate; + if (pvt->samples + (f->samples * dst_srate/src_srate) > pvt->t->buffer_samples) { ast_log(LOG_WARNING, "Out of buffer space\n"); return -1; }