FS-9124 [avmd] Extend XML config

Add number of continuous streak samples.
This commit is contained in:
Piotr Gregor 2016-05-03 13:30:03 +01:00
parent 6fc6efa0fd
commit 9415487ae9
2 changed files with 23 additions and 6 deletions

View File

@ -32,6 +32,10 @@
in the SMA buffer without reset -->
<param name="require_continuous_streak" value="1"/>
<!-- required number of consecutive elements in the SMA buffer
without reset -->
<param name="sample_n_continuous_streak" value="15"/>
<!-- define number of samples to skip starting from the beginning
of the frame and after reset -->
<param name="sample_n_to_skeep" value="6"/>

View File

@ -99,12 +99,14 @@
#endif
/*! Syntax of the API call. */
#define AVMD_SYNTAX "<uuid> < start | stop | set [inbound|outbound|default] | load [inbound|outbound] | reload | show>"
#define AVMD_SYNTAX "<uuid> < start | stop | set [inbound|outbound|default] | load [inbound|outbound] | reload | show >"
/*! Number of expected parameters in api call. */
#define AVMD_PARAMS_MIN 1u
#define AVMD_PARAMS_MAX 2u
/* don't forget to update avmd_events_str table
* if you modify this */
enum avmd_event
{
AVMD_EVENT_BEEP = 0,
@ -136,6 +138,7 @@ struct avmd_settings {
uint8_t report_status;
uint8_t fast_math;
uint8_t require_continuous_streak;
uint16_t sample_n_continuous_streak;
uint16_t sample_n_to_skeep;
uint8_t simplified_estimation;
uint8_t inbound_channnel;
@ -211,7 +214,7 @@ static switch_status_t avmd_load_xml_inbound_configuration(switch_mutex_t *mutex
/* API [load outbound], reload + set outbound */
static switch_status_t avmd_load_xml_outbound_configuration(switch_mutex_t *mutex);
/* bind callback */
/* bind reloadxml callback */
static void
avmd_reloadxml_event_handler(switch_event_t *event);
@ -514,6 +517,7 @@ static void avmd_set_xml_default_configuration(switch_mutex_t *mutex)
avmd_globals.settings.report_status = 1;
avmd_globals.settings.fast_math = 0;
avmd_globals.settings.require_continuous_streak = 1;
avmd_globals.settings.sample_n_continuous_streak = 15;
avmd_globals.settings.sample_n_to_skeep = 6;
avmd_globals.settings.simplified_estimation = 1;
avmd_globals.settings.inbound_channnel = 0;
@ -592,8 +596,16 @@ avmd_load_xml_configuration(switch_mutex_t *mutex)
avmd_globals.settings.fast_math = switch_true(value) ? 1 : 0;
} else if (!strcmp(name, "require_continuous_streak")) {
avmd_globals.settings.require_continuous_streak = switch_true(value) ? 1 : 0;
} else if (!strcmp(name, "sample_n_continuous_streak")) {
if(avmd_parse_u16_user_input(value,
&avmd_globals.settings.sample_n_continuous_streak, 0, UINT16_MAX) == -1)
{
status = SWITCH_STATUS_TERM;
goto done;
}
} else if (!strcmp(name, "sample_n_to_skeep")) {
if(avmd_parse_u16_user_input(value, &avmd_globals.settings.sample_n_to_skeep, 0, UINT16_MAX) == -1)
if(avmd_parse_u16_user_input(value,
&avmd_globals.settings.sample_n_to_skeep, 0, UINT16_MAX) == -1)
{
status = SWITCH_STATUS_TERM;
goto done;
@ -675,7 +687,8 @@ avmd_show(switch_stream_handle_t *stream, switch_mutex_t *mutex)
stream->write_function(stream, "debug \t%u\n", avmd_globals.settings.debug);
stream->write_function(stream, "report status \t%u\n", avmd_globals.settings.report_status);
stream->write_function(stream, "fast_math \t%u\n", avmd_globals.settings.fast_math);
stream->write_function(stream, "require continuous treak\t%u\n", avmd_globals.settings.require_continuous_streak);
stream->write_function(stream, "require continuous streak\t%u\n", avmd_globals.settings.require_continuous_streak);
stream->write_function(stream, "sample n continuous streak\t%u\n", avmd_globals.settings.sample_n_continuous_streak);
stream->write_function(stream, "sample n to skeep \t%u\n", avmd_globals.settings.sample_n_to_skeep);
stream->write_function(stream, "simplified estimation \t%u\n", avmd_globals.settings.simplified_estimation);
stream->write_function(stream, "inbound channel \t%u\n", avmd_globals.settings.inbound_channnel);
@ -1528,8 +1541,8 @@ static void avmd_process(avmd_session_t *s, switch_frame_t *frame)
/* DECISION */
/* If variance is less than threshold
* and we have at least two estimates
* then we have detection */
* and we have at least two estimates and more than required by continuous
* streak option then we have detection */
#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK
if (v < VARIANCE_THRESHOLD && (s->sma_b.lpos > 1) && (s->samples_streak == 0)) {
#else