mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	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:
		@@ -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);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user