summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorJenkins2 <jenkins2@gerrit.asterisk.org>2017-04-27 17:35:48 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2017-04-27 17:35:48 -0500
commitbf7cf10d1522092bc099a1f9a2e28ba23685e8f6 (patch)
treedfc1486b2d13678801c609a0feab1fcb868112a2 /main
parent9bb683242cf5a9b4264cc83ac0465c4f7fd6d11c (diff)
parentae696132a27238b432cfd532e14e5b7aa2c0f247 (diff)
Merge "frame: Better handle interpolated frames." into 13
Diffstat (limited to 'main')
-rw-r--r--main/audiohook.c9
-rw-r--r--main/translate.c6
2 files changed, 15 insertions, 0 deletions
diff --git a/main/audiohook.c b/main/audiohook.c
index 0a2f6c2f7..869cb750e 100644
--- a/main/audiohook.c
+++ b/main/audiohook.c
@@ -942,6 +942,15 @@ static struct ast_frame *audio_audiohook_write_list(struct ast_channel *chan, st
if (!(middle_frame = audiohook_list_translate_to_slin(audiohook_list, direction, start_frame))) {
return frame;
}
+
+ /* If the translation resulted in an interpolated frame then immediately return as audiohooks
+ * rely on actual media being present to do things.
+ */
+ if (!middle_frame->data.ptr) {
+ ast_frfree(middle_frame);
+ return start_frame;
+ }
+
samples = middle_frame->samples;
/*
diff --git a/main/translate.c b/main/translate.c
index 73e03a82e..e1a7d9f41 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -444,8 +444,14 @@ struct ast_frame *ast_trans_frameout(struct ast_trans_pvt *pvt,
}
if (datalen) {
f->datalen = datalen;
+ f->data.ptr = pvt->outbuf.c;
} else {
f->datalen = pvt->datalen;
+ if (!f->datalen) {
+ f->data.ptr = NULL;
+ } else {
+ f->data.ptr = pvt->outbuf.c;
+ }
pvt->datalen = 0;
}