diff options
author | Joshua Colp <jcolp@digium.com> | 2013-10-02 16:23:34 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2013-10-02 16:23:34 +0000 |
commit | c1235f2639023a9e450cafcdf8bd35cc304d9e53 (patch) | |
tree | b48cb7bb27925ff48e4f807dda8ee9588fd36031 /channels/chan_alsa.c | |
parent | 424c0f2eb7ff45a06a21b2d81532ac49e24e8b60 (diff) |
Reduce channel snapshot creation and publishing by up to 50%.
This change introduces the ability to stage channel snapshot
creation and publishing by suppressing the implicit creation
and publishing that some functions have. Once all operations
are executed the staging is marked as done and a single snapshot
is created and published.
Review: https://reviewboard.asterisk.org/r/2889/
........
Merged revisions 400265 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400266 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_alsa.c')
-rw-r--r-- | channels/chan_alsa.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index 7f54d6cfa..f1720ba8c 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -62,6 +62,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/abstract_jb.h" #include "asterisk/musiconhold.h" #include "asterisk/poll-compat.h" +#include "asterisk/stasis_channels.h" /*! Global jitterbuffer configuration - by default, jb is disabled * \note Values shown here match the defaults shown in alsa.conf.sample */ @@ -580,6 +581,8 @@ static struct ast_channel *alsa_new(struct chan_alsa_pvt *p, int state, const ch if (!(tmp = ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, linkedid, 0, "ALSA/%s", indevname))) return NULL; + ast_channel_stage_snapshot(tmp); + ast_channel_tech_set(tmp, &alsa_tech); ast_channel_set_fd(tmp, 0, readdev); ast_format_set(ast_channel_readformat(tmp), AST_FORMAT_SLINEAR, 0); @@ -596,6 +599,9 @@ static struct ast_channel *alsa_new(struct chan_alsa_pvt *p, int state, const ch p->owner = tmp; ast_module_ref(ast_module_info->self); ast_jb_configure(tmp, &global_jbconf); + + ast_channel_stage_snapshot_done(tmp); + if (state != AST_STATE_DOWN) { if (ast_pbx_start(tmp)) { ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ast_channel_name(tmp)); |