From 358ac2f76a0313f1008627ab91e374e5bcaf4873 Mon Sep 17 00:00:00 2001 From: Joshua Colp <jcolp@digium.com> Date: Tue, 25 Mar 2008 14:39:45 +0000 Subject: [PATCH] Merged revisions 110628 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r110628 | file | 2008-03-25 11:37:35 -0300 (Tue, 25 Mar 2008) | 4 lines Add an option (transmit_silence) which transmits silence during both Record() and DTMF generation. The reason this is an option is that in order to transmit silence we have to setup a translation path. This may not be needed/wanted in all cases. (closes issue #10058) Reported by: tracinet ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@110629 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- Makefile | 1 + include/asterisk/options.h | 2 +- main/app.c | 9 +++++++++ main/asterisk.c | 4 ++-- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 3392fead03..f983e2db1e 100644 --- a/Makefile +++ b/Makefile @@ -674,6 +674,7 @@ samples: adsi echo ";cache_record_files = yes ; Cache recorded sound files to another directory during recording" ; \ echo ";record_cache_dir = /tmp ; Specify cache directory (used in cnjunction with cache_record_files)" ; \ echo ";transmit_silence_during_record = yes ; Transmit SLINEAR silence while a channel is being recorded" ; \ + echo ";transmit_silence = yes ; Transmit SLINEAR silence while a channel is being recorded or DTMF is being generated" ; \ echo ";transcode_via_sln = yes ; Build transcode paths via SLINEAR, instead of directly" ; \ echo ";runuser = asterisk ; The user to run as" ; \ echo ";rungroup = asterisk ; The group to run as" ; \ diff --git a/include/asterisk/options.h b/include/asterisk/options.h index f974ca2c9a..794a75759e 100644 --- a/include/asterisk/options.h +++ b/include/asterisk/options.h @@ -64,7 +64,7 @@ enum ast_option_flags { AST_OPT_FLAG_OVERRIDE_CONFIG = (1 << 15), /*! Reconnect */ AST_OPT_FLAG_RECONNECT = (1 << 16), - /*! Transmit Silence during Record() */ + /*! Transmit Silence during Record() and DTMF Generation */ AST_OPT_FLAG_TRANSMIT_SILENCE = (1 << 17), /*! Suppress some warnings */ AST_OPT_FLAG_DONT_WARN = (1 << 18), diff --git a/main/app.c b/main/app.c index 7a2227fb9d..ee72d1078b 100644 --- a/main/app.c +++ b/main/app.c @@ -244,6 +244,7 @@ int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const ch { const char *ptr; int res = 0; + struct ast_silence_generator *silgen = NULL; if (!between) between = 100; @@ -258,6 +259,10 @@ int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const ch if (res < 0) return res; + if (ast_opt_transmit_silence) { + silgen = ast_channel_start_silence_generator(chan); + } + for (ptr = digits; *ptr; ptr++) { if (*ptr == 'w') { /* 'w' -- wait half a second */ @@ -284,6 +289,10 @@ int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const ch res = -1; } + if (silgen) { + ast_channel_stop_silence_generator(chan, silgen); + } + return res; } diff --git a/main/asterisk.c b/main/asterisk.c index 9ad011b491..aac00c9b2c 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -2633,8 +2633,8 @@ static void ast_readconfig(void) /* Build transcode paths via SLINEAR, instead of directly */ } else if (!strcasecmp(v->name, "transcode_via_sln")) { ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_TRANSCODE_VIA_SLIN); - /* Transmit SLINEAR silence while a channel is being recorded */ - } else if (!strcasecmp(v->name, "transmit_silence_during_record")) { + /* Transmit SLINEAR silence while a channel is being recorded or DTMF is being generated on a channel */ + } else if (!strcasecmp(v->name, "transmit_silence_during_record") || !strcasecmp(v->name, "transmit_silence")) { ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_TRANSMIT_SILENCE); /* Enable internal timing */ } else if (!strcasecmp(v->name, "internal_timing")) { -- GitLab