diff options
author | Richard Mudgett <rmudgett@digium.com> | 2015-08-13 12:22:14 -0500 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2015-08-13 17:55:56 -0500 |
commit | b3a56bee83c01dbb538620a11947d420b17cf458 (patch) | |
tree | 6c748bc2e4613d57c9bff694d3b7b3c371ba89ca | |
parent | 8f3117ebafa3067dfe120bd8010541236c595ff8 (diff) |
audiohook.c: Fix MixMonitor crash when using the r() or t() options.
The built frame format in audiohook_read_frame_both() is now set to a
signed linear format before the rx and tx frames are duplicated instead of
only for the mixed audio frame duplication.
ASTERISK-25322 #close
Reported by Sean Pimental
Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538
-rw-r--r-- | main/audiohook.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/main/audiohook.c b/main/audiohook.c index 5595e88b7..09bd0b7fd 100644 --- a/main/audiohook.c +++ b/main/audiohook.c @@ -326,6 +326,8 @@ static struct ast_frame *audiohook_read_frame_both(struct ast_audiohook *audioho ast_debug(1, "Failed to get %d samples from write factory %p\n", (int)samples, &audiohook->write_factory); } + frame.subclass.format = ast_format_cache_get_slin_by_rate(audiohook->hook_internal_samp_rate); + /* Basically we figure out which buffer to use... and if mixing can be done here */ if (read_buf && read_reference) { frame.data.ptr = buf1; @@ -352,8 +354,6 @@ static struct ast_frame *audiohook_read_frame_both(struct ast_audiohook *audioho /* Make the final buffer part of the frame, so it gets duplicated fine */ frame.data.ptr = final_buf; - frame.subclass.format = ast_format_cache_get_slin_by_rate(audiohook->hook_internal_samp_rate); - /* Yahoo, a combined copy of the audio! */ return ast_frdup(&frame); } |