diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c
index 6746c473cf..16c2cd2c84 100644
--- a/apps/app_mixmonitor.c
+++ b/apps/app_mixmonitor.c
@@ -115,10 +115,10 @@
Like with the basic filename argument, if an absolute path isn't given, it will create
the file in the configured monitoring directory.
-
- When combined with the r or t
- option, inserts silence when necessary to maintain synchronization between the receive
- and transmit audio streams.
+
+ When the r or t option is
+ used, MixMonitor will insert silence into the specified files to maintain
+ synchronization between them. Use this option to disable that behavior.
@@ -353,7 +353,8 @@ enum mixmonitor_flags {
MUXFLAG_BEEP = (1 << 11),
MUXFLAG_BEEP_START = (1 << 12),
MUXFLAG_BEEP_STOP = (1 << 13),
- MUXFLAG_RWSYNC = (1 << 14),
+ MUXFLAG_DEPRECATED_RWSYNC = (1 << 14),
+ MUXFLAG_NO_RWSYNC = (1 << 15),
};
enum mixmonitor_args {
@@ -365,7 +366,8 @@ enum mixmonitor_args {
OPT_ARG_UID,
OPT_ARG_VMRECIPIENTS,
OPT_ARG_BEEP_INTERVAL,
- OPT_ARG_RWSYNC,
+ OPT_ARG_DEPRECATED_RWSYNC,
+ OPT_ARG_NO_RWSYNC,
OPT_ARG_ARRAY_SIZE, /* Always last element of the enum */
};
@@ -382,7 +384,8 @@ AST_APP_OPTIONS(mixmonitor_opts, {
AST_APP_OPTION_ARG('t', MUXFLAG_WRITE, OPT_ARG_WRITENAME),
AST_APP_OPTION_ARG('i', MUXFLAG_UID, OPT_ARG_UID),
AST_APP_OPTION_ARG('m', MUXFLAG_VMRECIPIENTS, OPT_ARG_VMRECIPIENTS),
- AST_APP_OPTION_ARG('S', MUXFLAG_RWSYNC, OPT_ARG_RWSYNC),
+ AST_APP_OPTION_ARG('S', MUXFLAG_DEPRECATED_RWSYNC, OPT_ARG_DEPRECATED_RWSYNC),
+ AST_APP_OPTION_ARG('n', MUXFLAG_NO_RWSYNC, OPT_ARG_NO_RWSYNC),
});
struct mixmonitor_ds {
@@ -970,7 +973,7 @@ static int launch_monitor_thread(struct ast_channel *chan, const char *filename,
}
ast_set_flag(&mixmonitor->audiohook, AST_AUDIOHOOK_TRIGGER_SYNC);
- if ((ast_test_flag(mixmonitor, MUXFLAG_RWSYNC))) {
+ if (!ast_test_flag(mixmonitor, MUXFLAG_NO_RWSYNC)) {
ast_set_flag(&mixmonitor->audiohook, AST_AUDIOHOOK_SUBSTITUTE_SILENCE);
}
@@ -1049,6 +1052,11 @@ static int mixmonitor_exec(struct ast_channel *chan, const char *data)
ast_app_parse_options(mixmonitor_opts, &flags, opts, args.options);
+ if (ast_test_flag(&flags, MUXFLAG_DEPRECATED_RWSYNC)) {
+ ast_log(LOG_NOTICE, "The synchronization behavior enabled by the 'S' option is now the default"
+ " and does not need to be specified.\n");
+ }
+
if (ast_test_flag(&flags, MUXFLAG_READVOLUME)) {
if (ast_strlen_zero(opts[OPT_ARG_READVOLUME])) {
ast_log(LOG_WARNING, "No volume level was provided for the heard volume ('v') option.\n");
diff --git a/doc/UPGRADE-staging/app_mixmonitor_sync_default.txt b/doc/UPGRADE-staging/app_mixmonitor_sync_default.txt
new file mode 100644
index 0000000000..33a55e1673
--- /dev/null
+++ b/doc/UPGRADE-staging/app_mixmonitor_sync_default.txt
@@ -0,0 +1,10 @@
+Subject: app_mixmonitor
+Master-Only: true
+
+In Asterisk 13.29, a new option flag was added to MixMonitor (the 'S'
+option) that when combined with the r() or t() options would inject
+silence into these files if audio was going to be written to one and
+not that other. This allowed the files specified by r() and t() to
+subsequently be mixed outside of Asterisk and be appropriately
+synchronized. This behavior is now the default, and a new option has
+been added to disable this behavior if desired (the 'n' option).