diff --git a/frame.c b/frame.c index 97fe683d5c..06f714d0b1 100755 --- a/frame.c +++ b/frame.c @@ -80,7 +80,7 @@ int ast_smoother_feed(struct ast_smoother *s, struct ast_frame *f) ast_log(LOG_WARNING, "Out of smoother space\n"); return -1; } - if ((f->datalen == s->size) && !s->opt) { + if ((f->datalen == s->size) && !s->opt && (f->offset >= AST_MIN_OFFSET)) { if (!s->len) { /* Optimize by sending the frame we just got on the next read, thus eliminating the douple diff --git a/include/asterisk/frame.h b/include/asterisk/frame.h index 95b1f64051..2b645b52a4 100755 --- a/include/asterisk/frame.h +++ b/include/asterisk/frame.h @@ -90,10 +90,10 @@ struct ast_frame_chain { }; #define AST_FRIENDLY_OFFSET 64 /*! It's polite for a a new frame to - have at least this number of bytes - of offset before your real frame data - so that additional headers can be - added. */ + have this number of bytes for additional + headers. */ +#define AST_MIN_OFFSET 32 /*! Make sure we keep at least this much handy */ + /*! Need the header be free'd? */ #define AST_MALLOCD_HDR (1 << 0) /*! Need the data be free'd? */