diff options
| author | Arun Raghavan <arun.raghavan@collabora.co.uk> | 2010-09-06 21:24:55 +0530 | 
|---|---|---|
| committer | Arun Raghavan <arun.raghavan@collabora.co.uk> | 2010-09-07 15:12:12 +0530 | 
| commit | 21001f49a4bd9dd3adbba4cb4edf41bcda656706 (patch) | |
| tree | ad0138fe7167e52cb0f8b2956904cbb49e241e07 /src/modules/echo-cancel/module-echo-cancel.c | |
| parent | e7177680d19ac5f25362bc74bdf10b19d4bea275 (diff) | |
echo-cancel: Pass arguments to the specific canceller module
This allows us to tweak module parameters for whichever AEC module is
chosen.
Diffstat (limited to 'src/modules/echo-cancel/module-echo-cancel.c')
| -rw-r--r-- | src/modules/echo-cancel/module-echo-cancel.c | 28 | 
1 files changed, 3 insertions, 25 deletions
diff --git a/src/modules/echo-cancel/module-echo-cancel.c b/src/modules/echo-cancel/module-echo-cancel.c index 2e724344..d6968cd0 100644 --- a/src/modules/echo-cancel/module-echo-cancel.c +++ b/src/modules/echo-cancel/module-echo-cancel.c @@ -70,13 +70,12 @@ PA_MODULE_USAGE(            "sink_name=<name for the sink> "            "sink_properties=<properties for the sink> "            "sink_master=<name of sink to filter> " -          "frame_size_ms=<amount of data to process at one time> " -          "filter_size_ms=<amount of echo to cancel> "            "adjust_time=<how often to readjust rates in s> "            "format=<sample format> "            "rate=<sample rate> "            "channels=<number of channels> "            "channel_map=<channel map> " +          "aec_args=<parameters for the AEC engine> "            "save_aec=<save AEC data in /tmp> "          )); @@ -97,11 +96,6 @@ static const pa_echo_canceller ec_table[] = {      },  }; -/* should be between 10-20 ms */ -#define DEFAULT_FRAME_SIZE_MS 20 -/* should be between 100-500 ms */ -#define DEFAULT_FILTER_SIZE_MS 200 -  #define DEFAULT_ADJUST_TIME_USEC (1*PA_USEC_PER_SEC)  #define DEFAULT_SAVE_AEC 0 @@ -154,7 +148,6 @@ struct userdata {      pa_core *core;      pa_module *module; -    uint32_t frame_size_ms;      uint32_t save_aec;      pa_echo_canceller *ec; @@ -199,13 +192,12 @@ static const char* const valid_modargs[] = {      "sink_name",      "sink_properties",      "sink_master", -    "frame_size_ms", -    "filter_size_ms",      "adjust_time",      "format",      "rate",      "channels",      "channel_map", +    "aec_args",      "save_aec",      NULL  }; @@ -1287,7 +1279,6 @@ int pa__init(pa_module*m) {      pa_source_new_data source_data;      pa_sink_new_data sink_data;      pa_memchunk silence; -    uint32_t frame_size_ms, filter_size_ms;      uint32_t adjust_time_sec;      pa_assert(m); @@ -1309,18 +1300,6 @@ int pa__init(pa_module*m) {      }      pa_assert(sink_master); -    frame_size_ms = DEFAULT_FRAME_SIZE_MS; -    if (pa_modargs_get_value_u32(ma, "frame_size_ms", &frame_size_ms) < 0 || frame_size_ms < 1 || frame_size_ms > 200) { -        pa_log("Invalid frame_size_ms specification"); -        goto fail; -    } - -    filter_size_ms = DEFAULT_FILTER_SIZE_MS; -    if (pa_modargs_get_value_u32(ma, "filter_size_ms", &filter_size_ms) < 0 || filter_size_ms < 1 || filter_size_ms > 2000) { -        pa_log("Invalid filter_size_ms specification"); -        goto fail; -    } -      ss = source_master->sample_spec;      ss.format = PA_SAMPLE_S16LE;      map = source_master->channel_map; @@ -1337,7 +1316,6 @@ int pa__init(pa_module*m) {      u->core = m->core;      u->module = m;      m->userdata = u; -    u->frame_size_ms = frame_size_ms;      u->ec = pa_xnew0(pa_echo_canceller, 1);      if (!u->ec) { @@ -1369,7 +1347,7 @@ int pa__init(pa_module*m) {      u->asyncmsgq = pa_asyncmsgq_new(0);      u->need_realign = TRUE;      if (u->ec->init) { -        if (!u->ec->init(u->ec, ss, map, filter_size_ms, frame_size_ms)) { +        if (!u->ec->init(u->ec, ss, map, pa_modargs_get_value(ma, "aec_args", NULL))) {              pa_log("Failed to init AEC engine");              goto fail;          }  | 
