aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2008-03-25 14:42:35 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2008-03-25 14:42:35 +0000
commit781febb687aaf05d7c2c75755b44ed22c4db5b9d (patch)
tree266c5f56391bd6428c97ff3b94c67b7b917c702b
parent8b046deb31946080398bd8a4a6e845e93708860f (diff)
Merged revisions 110629 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r110629 | file | 2008-03-25 11:39:45 -0300 (Tue, 25 Mar 2008) | 12 lines 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: http://svn.digium.com/svn/asterisk/branches/1.6.0@110630 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--Makefile1
-rw-r--r--include/asterisk/options.h2
-rw-r--r--main/app.c9
-rw-r--r--main/asterisk.c4
4 files changed, 13 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 437fab471..57e1865d5 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 f974ca2c9..794a75759 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 5c3f8a444..725bd1446 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 04b5ccb38..0f194f266 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -2632,8 +2632,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")) {