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 15:31:35 -0600
commitfc794de75658a26383dd93278f2b04b13bc3f65b (patch)
tree94e7fd67ebb094c1ddf42eca8c2444866290c100 /bridges
parentf5603cb1ece5001d1288004c9bc6ed51448deb81 (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 7bac4fcb2..94dfc5714 100644
--- a/bridges/bridge_softmix.c
+++ b/bridges/bridge_softmix.c
@@ -222,7 +222,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;