codec_speex: Fix trashing normal static frame for AST_FRAME_CNG.
authorRichard Mudgett <rmudgett@digium.com>
Tue, 22 Jul 2014 17:10:36 +0000 (17:10 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 22 Jul 2014 17:10:36 +0000 (17:10 +0000)
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

index 8c2c3f3..84ce07a 100644 (file)
@@ -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);
                }
        }