summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorSean Bright <sean.bright@gmail.com>2017-03-20 17:27:24 -0400
committerSean Bright <sean.bright@gmail.com>2017-03-20 17:27:24 -0400
commit7f34c11b6a33075749eff8c3f4197b56eeb55ec1 (patch)
treeb55799bd51b321bd779b5d62427bd0e897cae4fc /bridges
parentfdea3698527495c940e03a45df03621c7a9a876c (diff)
bridge_softmix: Ignore non-voice frames from translator
Some codecs - codec_speex specifically - take voice frames and return other types of frames, like CNG. If we subsequently treat those as voice frames, we'll run into trouble when destroying the frame because of the requirement that each voice frame have an associated format. ASTERISK-26880 #close Reported by: Kirsty Tyerman Change-Id: I43f8450c48fb276ad8b99db8512be82949c1ca7c
Diffstat (limited to 'bridges')
-rw-r--r--bridges/bridge_softmix.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c
index 436fab7af..486330af0 100644
--- a/bridges/bridge_softmix.c
+++ b/bridges/bridge_softmix.c
@@ -306,7 +306,8 @@ static void softmix_process_write_audio(struct softmix_translate_helper *trans_h
if (entry->trans_pvt && !entry->out_frame) {
entry->out_frame = ast_translate(entry->trans_pvt, &sc->write_frame, 0);
}
- if (entry->out_frame && (entry->out_frame->datalen < MAX_DATALEN)) {
+ if (entry->out_frame && entry->out_frame->frametype == AST_FRAME_VOICE
+ && entry->out_frame->datalen < MAX_DATALEN) {
ao2_replace(sc->write_frame.subclass.format, entry->out_frame->subclass.format);
memcpy(sc->final_buf, entry->out_frame->data.ptr, entry->out_frame->datalen);
sc->write_frame.datalen = entry->out_frame->datalen;