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
This commit is contained in:
parent
bb87796f67
commit
197f06bed1
|
@ -306,16 +306,21 @@ static struct ast_frame *lintospeex_frameout(struct ast_trans_pvt *pvt)
|
|||
if (tmp->silent_state) {
|
||||
return NULL;
|
||||
} else {
|
||||
tmp->silent_state = 1;
|
||||
speex_bits_reset(&tmp->bits);
|
||||
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;
|
||||
|
||||
/* 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue