From 197f06bed16cf1babf18a1c611b99ff98aa559e4 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Tue, 22 Jul 2014 17:10:36 +0000 Subject: codec_speex: Fix trashing normal static frame for AST_FRAME_CNG. Made use a local static frame to generate the AST_FRAME_CNG frame when silence starts. I don't think the handling of the AST_FRAME_CNG has ever really worked because there doesn't seem to be any consumers of it. Review: https://reviewboard.asterisk.org/r/3813/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419206 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- codecs/codec_speex.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c index 8c2c3f395..84ce07a5d 100644 --- a/codecs/codec_speex.c +++ b/codecs/codec_speex.c @@ -306,16 +306,21 @@ static struct ast_frame *lintospeex_frameout(struct ast_trans_pvt *pvt) if (tmp->silent_state) { return NULL; } else { + struct ast_frame frm = { + .frametype = AST_FRAME_CNG, + .src = pvt->t->name, + }; + + /* + * XXX I don't think the AST_FRAME_CNG code has ever + * really worked for speex. There doesn't seem to be + * any consumers of the frame type. Everyone that + * references the type seems to pass the frame on. + */ tmp->silent_state = 1; - speex_bits_reset(&tmp->bits); -/* BUGBUG need to setup a new static frame to prevent destroying the translators normal static frame. */ - ao2_cleanup(pvt->f.subclass.format); - memset(&pvt->f, 0, sizeof(pvt->f)); - pvt->f.frametype = AST_FRAME_CNG; - pvt->f.samples = samples; /* XXX what now ? format etc... */ -/* BUGBUG should return ast_frisolate(setup local static frame) here */ + return ast_frisolate(&frm); } } -- cgit v1.2.3