From: Kevin P. Fleming Date: Fri, 7 Dec 2007 22:30:59 +0000 (+0000) Subject: even though Asterisk explicitly requests that endpoints using G.729 do *not* use... X-Git-Tag: 1.4.16~40 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bcedcf5f8adefa39913891d2df7c37e45a35bce0;p=thirdparty%2Fasterisk.git even though Asterisk explicitly requests that endpoints using G.729 do *not* use Annex B (silence detection and comfort noise generation) some do anyway; the transcoder card interface does not currently work properly with CNG frames, so trim off the CNG before sending the data git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91870 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/codecs/codec_zap.c b/codecs/codec_zap.c index 79ac8b3132..aa08667e29 100644 --- a/codecs/codec_zap.c +++ b/codecs/codec_zap.c @@ -146,6 +146,15 @@ static int zap_framein(struct ast_trans_pvt *pvt, struct ast_frame *f) /* Copy at front of buffer */ hdr->srcoffset = 0; + /* if we get handed a G.729 frame that is not a multiple of + 10 bytes (10 milliseconds), then it has a CNG frame and + we need to avoid sending that to the transcoder + */ + if ((f->subclass == AST_FORMAT_G729A) && ((f->datalen % 10) != 0)) { + f->datalen -= f->datalen % 10; + f->samples = f->datalen * 8; + } + if (hdr->srclen + f->datalen > sizeof(hdr->srcdata)) { ast_log(LOG_WARNING, "Out of space for codec translation!\n"); return -1;