diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c index a5c27bfc8b115d4e67ff2047fc49f0e26e6e61c1..9911bc4ecc8d6a719751b16b8a055fe062a33430 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.</para> </option> - <option name="S"> - <para>When combined with the <replaceable>r</replaceable> or <replaceable>t</replaceable> - option, inserts silence when necessary to maintain synchronization between the receive - and transmit audio streams.</para> + <option name="n"> + <para>When the <replaceable>r</replaceable> or <replaceable>t</replaceable> option is + used, MixMonitor will insert silence into the specified files to maintain + synchronization between them. Use this option to disable that behavior.</para> </option> <option name="i"> <argument name="chanvar" required="true" /> @@ -358,7 +358,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 { @@ -370,7 +371,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 */ }; @@ -387,7 +389,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 { @@ -975,7 +978,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); } @@ -1072,6 +1075,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 0000000000000000000000000000000000000000..33a55e167342ae45f36eeb49733b1d8dca742154 --- /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).