Once an audiohook is attached to a channel, we continue to transcode all of the
authorSean Bright <sean@malleable.com>
Tue, 27 Dec 2011 17:17:58 +0000 (17:17 +0000)
committerSean Bright <sean@malleable.com>
Tue, 27 Dec 2011 17:17:58 +0000 (17:17 +0000)
frames, even after all of the hooks are detached.  This patch short-cicuits us
out before we transcode unnecessarily.
........

Merged revisions 349144 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 349145 from http://svn.asterisk.org/svn/asterisk/branches/10

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@349146 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/audiohook.c

index 83fec31..0220744 100644 (file)
@@ -783,6 +783,12 @@ static struct ast_frame *audio_audiohook_write_list(struct ast_channel *chan, st
        int middle_frame_manipulated = 0;
        int removed = 0;
 
+       /* Don't translate our frame if we aren't going to bother to use it */
+       if (AST_LIST_EMPTY(&audiohook_list->spy_list)
+               && AST_LIST_EMPTY(&audiohook_list->whisper_list)
+               && AST_LIST_EMPTY(&audiohook_list->manipulate_list))
+               return end_frame;
+
        /* ---Part_1. translate start_frame to SLINEAR if necessary. */
        if (!(middle_frame = audiohook_list_translate_to_slin(audiohook_list, direction, start_frame))) {
                return frame;