diff --git a/main/audiohook.c b/main/audiohook.c
index 986f11f846f7114212c260f8a31a7b9b83e7bdd3..2cba2de6e2851e00b15d4bb7db400cf969b042bc 100644
--- a/main/audiohook.c
+++ b/main/audiohook.c
@@ -945,6 +945,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 168a72a4bd59d835db99ec6e76e7289f3800df4b..f2aa5886b2d47f2bb14ca394f965e111e2eff784 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -442,8 +442,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;
 	}