summaryrefslogtreecommitdiffstats
path: root/post_proc/reverb.c
diff options
context:
space:
mode:
Diffstat (limited to 'post_proc/reverb.c')
-rw-r--r--post_proc/reverb.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/post_proc/reverb.c b/post_proc/reverb.c
index e5fc9509..07086005 100644
--- a/post_proc/reverb.c
+++ b/post_proc/reverb.c
@@ -246,13 +246,15 @@ void reverb_set_preset(reverb_context_t *context, int16_t preset)
context->next_preset = preset;
offload_reverb_set_preset(&(context->offload_reverb), preset);
- enable = (preset == REVERB_PRESET_NONE) ? false: true;
- offload_reverb_set_enable_flag(&(context->offload_reverb), enable);
+ if (context->enabled_by_client) {
+ enable = (preset == REVERB_PRESET_NONE) ? false: true;
+ offload_reverb_set_enable_flag(&(context->offload_reverb), enable);
- if (context->ctl)
- offload_reverb_send_params(context->ctl, &context->offload_reverb,
+ if (context->ctl)
+ offload_reverb_send_params(context->ctl, &context->offload_reverb,
OFFLOAD_SEND_REVERB_ENABLE_FLAG |
OFFLOAD_SEND_REVERB_PRESET);
+ }
}
void reverb_set_all_properties(reverb_context_t *context,
@@ -568,6 +570,7 @@ int reverb_init(effect_context_t *context)
set_config(context, &context->config);
+ reverb_ctxt->enabled_by_client = false;
memset(&(reverb_ctxt->reverb_settings), 0, sizeof(reverb_settings_t));
memset(&(reverb_ctxt->offload_reverb), 0, sizeof(struct reverb_params));
@@ -583,6 +586,16 @@ int reverb_enable(effect_context_t *context)
reverb_context_t *reverb_ctxt = (reverb_context_t *)context;
ALOGV("%s", __func__);
+ reverb_ctxt->enabled_by_client = true;
+
+ /* REVERB_PRESET_NONE is equivalent to disabled state,
+ * But support for this state is not provided in DSP.
+ * Hence, do not set enable flag, if in peset mode with preset "NONE".
+ * Effect would be enabled when valid preset is set.
+ */
+ if ((reverb_ctxt->preset == true) &&
+ (reverb_ctxt->next_preset == REVERB_PRESET_NONE))
+ return 0;
if (!offload_reverb_get_enable_flag(&(reverb_ctxt->offload_reverb)))
offload_reverb_set_enable_flag(&(reverb_ctxt->offload_reverb), true);
@@ -594,6 +607,7 @@ int reverb_disable(effect_context_t *context)
reverb_context_t *reverb_ctxt = (reverb_context_t *)context;
ALOGV("%s", __func__);
+ reverb_ctxt->enabled_by_client = false;
if (offload_reverb_get_enable_flag(&(reverb_ctxt->offload_reverb))) {
offload_reverb_set_enable_flag(&(reverb_ctxt->offload_reverb), false);
if (reverb_ctxt->ctl)