[asterisk-commits] tilghman: trunk r39332 - in /trunk: apps/
configs/
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue Aug 8 08:37:54 MST 2006
Author: tilghman
Date: Tue Aug 8 10:37:53 2006
New Revision: 39332
URL: http://svn.digium.com/view/asterisk?rev=39332&view=rev
Log:
Bug 6237 - add volgain parameter, such that voicemail messages may be amplified after recording
Modified:
trunk/apps/app_voicemail.c
trunk/configs/voicemail.conf.sample
Modified: trunk/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/trunk/apps/app_voicemail.c?rev=39332&r1=39331&r2=39332&view=diff
==============================================================================
--- trunk/apps/app_voicemail.c (original)
+++ trunk/apps/app_voicemail.c Tue Aug 8 10:37:53 2006
@@ -272,6 +272,7 @@
unsigned int flags; /*!< VM_ flags */
int saydurationm;
int maxmsg; /*!< Maximum number of msgs per folder for this mailbox */
+ double volgain; /*!< Volume gain for voicemails sent via email */
AST_LIST_ENTRY(ast_vm_user) list;
};
@@ -427,6 +428,7 @@
static char externnotify[160];
static struct ast_smdi_interface *smdi_iface = NULL;
static char vmfmts[80];
+static double volgain;
static int vmminmessage;
static int vmmaxmessage;
static int maxgreet;
@@ -473,6 +475,7 @@
ast_copy_string(vmu->exit, exitcontext, sizeof(vmu->exit));
if (maxmsg)
vmu->maxmsg = maxmsg;
+ vmu->volgain = volgain;
}
static void apply_option(struct ast_vm_user *vmu, const char *var, const char *value)
@@ -529,6 +532,8 @@
ast_log(LOG_WARNING, "Maximum number of messages per folder is %i. Cannot accept value maxmsg=%s\n", MAXMSGLIMIT, value);
vmu->maxmsg = MAXMSGLIMIT;
}
+ } else if (!strcasecmp(var, "volgain")) {
+ sscanf(value, "%lf", &vmu->volgain);
} else if (!strcasecmp(var, "options")) {
apply_options(vmu, value);
}
@@ -1761,6 +1766,7 @@
char dur[256];
char tmp[80] = "/tmp/astmail-XXXXXX";
char tmp2[256];
+ char tmpcmd[256];
struct tm tm;
if (vmu && ast_strlen_zero(vmu->email)) {
@@ -1871,7 +1877,19 @@
if (attach_user_voicemail) {
/* Eww. We want formats to tell us their own MIME type */
char *ctype = (!strcasecmp(format, "ogg")) ? "application/" : "audio/x-";
+ char tmpdir[256], newtmp[256];
+ int tmpfd;
+ create_dirpath(tmpdir, sizeof(tmpdir), vmu->context, vmu->mailbox, "tmp");
+ snprintf(newtmp, sizeof(newtmp), "%s/XXXXXX", tmpdir);
+ tmpfd = mkstemp(newtmp);
+ ast_log(LOG_DEBUG, "newtmp: %s\n", newtmp);
+ if (vmu->volgain < -.001 || vmu->volgain > .001) {
+ snprintf(tmpcmd, sizeof(tmpcmd), "sox -v %.4f %s.%s %s.%s", vmu->volgain, attach, format, newtmp, format);
+ ast_safe_system(tmpcmd);
+ attach = newtmp;
+ ast_log(LOG_DEBUG, "VOLGAIN: Stored at: %s.%s - Level: %.4f - Mailbox: %s\n", attach, format, vmu->volgain, mailbox);
+ }
fprintf(p, "--%s\n", bound);
fprintf(p, "Content-Type: %s%s; name=\"msg%04d.%s\"\n", ctype, format, msgnum, format);
fprintf(p, "Content-Transfer-Encoding: base64\n");
@@ -1881,6 +1899,9 @@
snprintf(fname, sizeof(fname), "%s.%s", attach, format);
base_encode(fname, p);
fprintf(p, "\n\n--%s--\n.\n", bound);
+ if (tmpfd > -1)
+ close(tmpfd);
+ unlink(newtmp);
}
fclose(p);
snprintf(tmp2, sizeof(tmp2), "( %s < %s ; rm -f %s ) &", mailcmd, tmp, tmp);
@@ -6183,6 +6204,7 @@
char *exitcxt = NULL;
char *extpc;
char *emaildateformatstr;
+ char *volgainstr;
int x;
int tmpadsi[4];
@@ -6212,6 +6234,10 @@
if (!(astsearch = ast_variable_retrieve(cfg, "general", "searchcontexts")))
astsearch = "no";
ast_set2_flag((&globalflags), ast_true(astsearch), VM_SEARCH);
+
+ volgain = 0.0;
+ if ((volgainstr = ast_variable_retrieve(cfg, "general", "volgain")))
+ sscanf(volgainstr, "%lf", &volgain);
#ifdef ODBC_STORAGE
strcpy(odbc_database, "asterisk");
Modified: trunk/configs/voicemail.conf.sample
URL: http://svn.digium.com/view/asterisk/trunk/configs/voicemail.conf.sample?rev=39332&r1=39331&r2=39332&view=diff
==============================================================================
--- trunk/configs/voicemail.conf.sample (original)
+++ trunk/configs/voicemail.conf.sample Tue Aug 8 10:37:53 2006
@@ -185,6 +185,9 @@
; This is intended for use with users who wish to receive their
; voicemail ONLY by email. Note: "deletevoicemail" is provided as an
; equivalent option for Realtime configuration.
+; volgain=0.0 ; Emails bearing the voicemail may arrive in a volume too
+ ; quiet to be heard. This parameter allows you to specify how
+ ; much gain to add to the message when sending a voicemail.
; nextaftercmd=yes ; Skips to the next message after hitting 7 or 9 to delete/save current message.
; [global option only at this time]
; forcename=yes ; Forces a new user to record their name. A new user is
More information about the asterisk-commits
mailing list