hal: remove feature manager

- use vendor property to check if feature is enabled or disabled
  and remove feature manager and helper

Change-Id: I6cd70ad364720f1c241ecabe5c4a795b33e0e4e5
diff --git a/hal/Android.mk b/hal/Android.mk
index a6bd9bc..1477e0a 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -105,7 +105,6 @@
 LOCAL_HEADER_LIBRARIES := libhardware_headers
 
 LOCAL_SRC_FILES := \
-    ahal_config_helper.cpp \
     audio_hw.c \
     acdb.c \
     platform_info.c \
@@ -113,7 +112,6 @@
     voice.c
 
 LOCAL_SRC_FILES += audio_extn/audio_extn.c \
-                   audio_extn/audio_feature_manager.c \
                    audio_extn/audio_hidl.cpp \
                    audio_extn/compress_in.c \
                    audio_extn/fm.c \
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 3d6cd4a..11b96e7 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -55,7 +55,6 @@
 #include "platform.h"
 #include "platform_api.h"
 #include "edid.h"
-#include "audio_feature_manager.h"
 #include "sound/compress_params.h"
 
 #ifdef DYNAMIC_LOG_ENABLED
@@ -69,7 +68,7 @@
 #define MAX_NUM_CHANNELS 8
 #define Q14_GAIN_UNITY 0x4000
 
-static int is_running_vendor_enhanced_fwk = 1;
+static int is_running_vendor_enhanced_fwk = 0;
 static bool is_compress_meta_data_enabled = false;
 
 struct snd_card_split cur_snd_card_split = {
@@ -932,7 +931,7 @@
     struct mixer_ctl *ctl = NULL;
     const char *mixer_ctl_name = "PROXY_RX Channels";
 
-    if (!audio_feature_manager_is_feature_enabled(AFE_PROXY)) {
+    if (!property_get_bool("vendor.audio.feature.afe_proxy.enable", false)) {
         ALOGW("%s: AFE_PROXY is disabled", __func__);
         return -ENOSYS;
     }
@@ -1013,7 +1012,8 @@
     int ret = 0;
     int channels = aextnmod.proxy_channel_num;
 
-    if (!audio_feature_manager_is_feature_enabled(AFE_PROXY)) {
+    if (!property_get_bool("vendor.audio.feature.afe_proxy.enable",
+                            false)) {
         ALOGW("%s: AFE_PROXY is disabled", __func__);
         return -ENOSYS;
     }
@@ -1043,7 +1043,8 @@
 int32_t audio_extn_get_afe_proxy_channel_count()
 {
 
-    if (!audio_feature_manager_is_feature_enabled(AFE_PROXY)) {
+    if (!property_get_bool("vendor.audio.feature.afe_proxy.enable",
+                            false)) {
         ALOGW("%s: AFE_PROXY is disabled", __func__);
         return -ENOSYS;
     }
@@ -4989,123 +4990,121 @@
 }
 // END: MAXX_AUDIO =====================================================================
 
-void audio_extn_feature_init(int is_running_with_enhanced_fwk)
+void audio_extn_feature_init()
 {
-    is_running_vendor_enhanced_fwk = is_running_with_enhanced_fwk;
-    for(int index = 0; index < VOICE_START; index++)
-    {
-        bool enable = audio_feature_manager_is_feature_enabled(index);
-        switch (index) {
-            case SND_MONITOR:
-                snd_mon_feature_init(enable);
-                break;
-            case COMPRESS_CAPTURE:
-                compr_cap_feature_init(enable);
-                break;
-            case DSM_FEEDBACK:
-                dsm_feedback_feature_init(enable);
-                break;
-            case SSREC:
-                ssrec_feature_init(enable);
-                break;
-            case SOURCE_TRACK:
-                src_trkn_feature_init(enable);
-            case HDMI_EDID:
-                hdmi_edid_feature_init(enable);
-                break;
-            case KEEP_ALIVE:
-                keep_alive_feature_init(enable);
-                break;
-            case HIFI_AUDIO:
-                hifi_audio_feature_init(enable);
-                break;
-            case RECEIVER_AIDED_STEREO:
-                ras_feature_init(enable);
-                break;
-            case KPI_OPTIMIZE:
-                kpi_optimize_feature_init(enable);
-                break;
-            case USB_OFFLOAD:
-                usb_offload_feature_init(enable);
-                break;
-            case USB_OFFLOAD_BURST_MODE:
-                usb_offload_burst_mode_feature_init(enable);
-                break;
-            case USB_OFFLOAD_SIDETONE_VOLM:
-                usb_offload_sidetone_volume_feature_init(enable);
-                break;
-            case A2DP_OFFLOAD:
-                a2dp_offload_feature_init(enable);
-                break;
-            case WSA:
-                 wsa_feature_init(enable);
-                 break;
-            case COMPRESS_METADATA_NEEDED:
-                compress_meta_data_feature_init(enable);
-                break;
-            case VBAT:
-                vbat_feature_init(enable);
-                break;
-            case DISPLAY_PORT:
-                display_port_feature_init(enable);
-                break;
-            case FLUENCE:
-                fluence_feature_init(enable);
-                break;
-             case CUSTOM_STEREO:
-                custom_stereo_feature_init(enable);
-                break;
-            case ANC_HEADSET:
-                anc_headset_feature_init(enable);
-                break;
-            case SPKR_PROT:
-                spkr_prot_feature_init(enable);
-                break;
-            case FM_POWER_OPT_FEATURE:
-                fm_feature_init(enable);
-                break;
-            case EXTERNAL_QDSP:
-                external_qdsp_feature_init(enable);
-                break;
-            case EXTERNAL_SPEAKER:
-                external_speaker_feature_init(enable);
-                break;
-            case EXTERNAL_SPEAKER_TFA:
-                external_speaker_tfa_feature_init(enable);
-                break;
-            case HWDEP_CAL:
-                hwdep_cal_feature_init(enable);
-                break;
-            case HFP:
-                hfp_feature_init(enable);
-                break;
-            case EXT_HW_PLUGIN:
-                ext_hw_plugin_feature_init(enable);
-                break;
-            case RECORD_PLAY_CONCURRENCY:
-                record_play_concurency_feature_init(enable);
-                break;
-            case HDMI_PASSTHROUGH:
-                hdmi_passthrough_feature_init(enable);
-                break;
-            case CONCURRENT_CAPTURE:
-                concurrent_capture_feature_init(enable);
-                break;
-            case COMPRESS_IN_CAPTURE:
-                compress_in_feature_init(enable);
-                break;
-            case BATTERY_LISTENER:
-                battery_listener_feature_init(enable);
-                break;
-            case MAXX_AUDIO:
-                maxx_audio_feature_init(enable);
-                break;
-            case AUDIO_ZOOM:
-                audiozoom_feature_init(enable);
-            default:
-                break;
-        }
-    }
+    is_running_vendor_enhanced_fwk = audio_extn_utils_is_vendor_enhanced_fwk();
+
+    // register feature init functions here
+    // each feature needs a vendor property
+    // default value added is for GSI (non vendor modified images)
+    snd_mon_feature_init(
+        property_get_bool("vendor.audio.feature.snd_mon.enable",
+                           true));
+    compr_cap_feature_init(
+        property_get_bool("vendor.audio.feature.compr_cap.enable",
+                           false));
+    dsm_feedback_feature_init(
+        property_get_bool("vendor.audio.feature.dsm_feedback.enable",
+                           false));
+    ssrec_feature_init(
+        property_get_bool("vendor.audio.feature.ssrec.enable",
+                           false));
+    src_trkn_feature_init(
+        property_get_bool("vendor.audio.feature.src_trkn.enable",
+                           false));
+    hdmi_edid_feature_init(
+        property_get_bool("vendor.audio.feature.hdmi_edid.enable",
+                           false));
+    keep_alive_feature_init(
+        property_get_bool("vendor.audio.feature.keep_alive.enable",
+                           false));
+    hifi_audio_feature_init(
+        property_get_bool("vendor.audio.feature.hifi_audio.enable",
+                           false));
+    ras_feature_init(
+        property_get_bool("vendor.audio.feature.ras.enable",
+                           false));
+    kpi_optimize_feature_init(
+        property_get_bool("vendor.audio.feature.kpi_optimize.enable",
+                           false));
+    usb_offload_feature_init(
+        property_get_bool("vendor.audio.feature.usb_offload.enable",
+                           true));
+    usb_offload_burst_mode_feature_init(
+        property_get_bool("vendor.audio.feature.usb_offload_burst_mode.enable",
+                           false));
+    usb_offload_sidetone_volume_feature_init(
+        property_get_bool("vendor.audio.feature.usb_offload_sidetone_volume.enable",
+                           false));
+    a2dp_offload_feature_init(
+        property_get_bool("vendor.audio.feature.a2dp_offload.enable",
+                           false));
+    wsa_feature_init(
+        property_get_bool("vendor.audio.feature.wsa.enable",
+                           false));
+    compress_meta_data_feature_init(
+        property_get_bool("vendor.audio.feature.compress_meta_data.enable",
+                           false));
+    vbat_feature_init(
+        property_get_bool("vendor.audio.feature.vbat.enable",
+                           false));
+    display_port_feature_init(
+        property_get_bool("vendor.audio.feature.display_port.enable",
+                           false));
+    fluence_feature_init(
+        property_get_bool("vendor.audio.feature.fluence.enable",
+                           false));
+    custom_stereo_feature_init(
+        property_get_bool("vendor.audio.feature.custom_stereo.enable",
+                           false));
+    anc_headset_feature_init(
+        property_get_bool("vendor.audio.feature.anc_headset.enable",
+                           false));
+    spkr_prot_feature_init(
+        property_get_bool("vendor.audio.feature.spkr_prot.enable",
+                           true));
+    fm_feature_init(
+        property_get_bool("vendor.audio.feature.fm.enable",
+                           false));
+    external_qdsp_feature_init(
+        property_get_bool("vendor.audio.feature.external_dsp.enable",
+                           true));
+    external_speaker_feature_init(
+        property_get_bool("vendor.audio.feature.external_speaker.enable",
+                           true));
+    external_speaker_tfa_feature_init(
+        property_get_bool("vendor.audio.feature.external_speaker_tfa.enable",
+                           false));
+    hwdep_cal_feature_init(
+        property_get_bool("vendor.audio.feature.hwdep_cal.enable",
+                           true));
+    hfp_feature_init(
+        property_get_bool("vendor.audio.feature.hfp.enable",
+                           true));
+    ext_hw_plugin_feature_init(
+        property_get_bool("vendor.audio.feature.ext_hw_plugin.enable",
+                           false));
+    record_play_concurency_feature_init(
+        property_get_bool("vendor.audio.feature.record_play_concurency.enable",
+                           false));
+    hdmi_passthrough_feature_init(
+        property_get_bool("vendor.audio.feature.hdmi_passthrough.enable",
+                           false));
+    concurrent_capture_feature_init(
+        property_get_bool("vendor.audio.feature.concurrent_capture.enable",
+                           true));
+    compress_in_feature_init(
+        property_get_bool("vendor.audio.feature.compress_in.enable",
+                           false));
+    battery_listener_feature_init(
+        property_get_bool("vendor.audio.feature.battery_listener.enable",
+                           false));
+    maxx_audio_feature_init(
+        property_get_bool("vendor.audio.feature.maxx_audio.enable",
+                           true));
+    audiozoom_feature_init(
+        property_get_bool("vendor.audio.feature.audiozoom.enable",
+                           true));
 }
 
 void audio_extn_set_parameters(struct audio_device *adev,
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 043ce48..6101062 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -192,7 +192,7 @@
 
 // call at adev init
 void audio_extn_init(struct audio_device *adev);
-void audio_extn_feature_init(int is_running_with_enhanced_fwk);
+void audio_extn_feature_init();
 //START: SND_MONITOR_FEATURE ===========================================
 void snd_mon_feature_init (bool is_feature_enabled);
 typedef void (* snd_mon_cb)(void * stream, struct str_parms * parms);
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index edc4382..c897473 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -74,7 +74,6 @@
 #include "audio_extn.h"
 #include "voice_extn.h"
 #include "ip_hdlr_intf.h"
-#include "audio_feature_manager.h"
 
 #include "sound/compress_params.h"
 #include "sound/asound.h"
@@ -6782,7 +6781,8 @@
                       (devices != AUDIO_DEVICE_OUT_USB_ACCESSORY);
     bool direct_dev = is_hdmi || is_usb_dev;
     bool use_db_as_primary =
-           audio_feature_manager_is_feature_enabled(USE_DEEP_BUFFER_AS_PRIMARY_OUTPUT);
+         property_get_bool("vendor.audio.feature.deepbuffer_as_primary.enable",
+                            false);
     bool force_haptic_path =
             property_get_bool("vendor.audio.test_haptic", false);
     bool is_voip_rx = flags & AUDIO_OUTPUT_FLAG_VOIP_RX;
@@ -9094,8 +9094,9 @@
     adev->bt_sco_on = false;
     /* adev->cur_hdmi_channels = 0;  by calloc() */
     adev->snd_dev_ref_cnt = calloc(SND_DEVICE_MAX, sizeof(int));
-    /* Init audio feature manager */
-    audio_feature_manager_init();
+    /* Init audio and voice feature */
+    audio_extn_feature_init();
+    voice_extn_feature_init();
     voice_init(adev);
     list_init(&adev->usecase_list);
     list_init(&adev->active_inputs_list);
diff --git a/hal/voice_extn/voice_extn.c b/hal/voice_extn/voice_extn.c
index f08c73c..473edc2 100644
--- a/hal/voice_extn/voice_extn.c
+++ b/hal/voice_extn/voice_extn.c
@@ -26,6 +26,7 @@
 #include <math.h>
 #include <log/log.h>
 #include <cutils/str_parms.h>
+#include <cutils/properties.h>
 #include <sys/ioctl.h>
 #include <time.h>
 #include <sound/voice_params.h>
@@ -35,7 +36,6 @@
 #include "platform.h"
 #include "platform_api.h"
 #include "voice_extn.h"
-#include "audio_feature_manager.h"
 
 #ifdef DYNAMIC_LOG_ENABLED
 #include <log_xml_parser.h>
@@ -86,7 +86,6 @@
 
 static bool voice_extn_compress_voip_enabled = false;
 static bool voice_extn_dynamic_ecns_feature_enabled = false;
-static int voice_extn_is_running_vendor_enhanced_fwk = 1;
 static bool voice_extn_incall_music_enabled = false;
 
 int voice_extn_is_call_state_active(struct audio_device *adev, bool *is_call_active);
@@ -396,43 +395,48 @@
 {
     voice_extn_dynamic_ecns_feature_enabled = is_feature_enabled;
     ALOGD(":: %s: ---- Feature DYNAMIC_ECNS is %s ----", __func__,
-                            is_feature_enabled? "ENABLED": " NOT ENABLED");
+                            is_feature_enabled ? "ENABLED" : "NOT ENABLED");
 }
 
-// START: INCALL_MUSIC ===================================================================
-void incall_music_feature_init(bool is_feature_enabled)
-{
-   voice_extn_incall_music_enabled = is_feature_enabled;
-    ALOGD("%s: ---- Feature INCALL_MUSIC is %s----", __func__,
-                                is_feature_enabled? "ENABLED": "NOT ENABLED");
-}
-// END: INCALL_MUSIC ===================================================================
-
 bool voice_extn_is_dynamic_ecns_enabled()
 {
     return voice_extn_dynamic_ecns_feature_enabled;
 }
 
-void voice_extn_feature_init(int is_running_with_enhanced_fwk)
+// START: INCALL_MUSIC ===================================================================
+void incall_music_feature_init(bool is_feature_enabled)
 {
-    voice_extn_is_running_vendor_enhanced_fwk = is_running_with_enhanced_fwk;
-    for(int index = VOICE_START; index < MAX_SUPPORTED_FEATURE; index++)
-    {
-        bool enable = audio_feature_manager_is_feature_enabled(index);
-        switch (index) {
-            case COMPRESS_VOIP:
-                compr_voip_feature_init(enable);
-                break;
-            case DYNAMIC_ECNS:
-                dynamic_ecns_feature_init(enable);
-                break;
-            case INCALL_MUSIC:
-                incall_music_feature_init(enable);
-                break;
-            default:
-                break;
-        }
-    }
+    voice_extn_incall_music_enabled = is_feature_enabled;
+    ALOGV("%s: ---- Feature INCALL_MUSIC is %s----", __func__,
+                                is_feature_enabled ? "ENABLED" : "NOT ENABLED");
+}
+// END: INCALL_MUSIC ===================================================================
+
+void compr_voip_feature_init(bool is_feature_enabled)
+{
+    voice_extn_compress_voip_enabled = is_feature_enabled;
+    ALOGV("%s:: ---- Feature COMPRESS_VOIP is %s ----", __func__,
+                                is_feature_enabled ? "ENABLED" : "NOT ENABLED");
+}
+
+bool voice_extn_is_compress_voip_supported()
+{
+    return voice_extn_compress_voip_enabled;
+}
+
+void voice_extn_feature_init()
+{
+    // Register feature function here
+    // every feature should have a feature flag
+    compr_voip_feature_init(
+       property_get_bool("vendor.audio.feature.compr_voip.enable",
+                          false));
+    dynamic_ecns_feature_init(
+       property_get_bool("vendor.audio.feature.dynamic_ecns.enable",
+                          false));
+    incall_music_feature_init(
+       property_get_bool("vendor.audio.feature.incall_music.enable",
+                          true));
 }
 
 void voice_extn_init(struct audio_device *adev)
@@ -446,17 +450,6 @@
     adev->voice.session[MMODE2_SESS_IDX].vsid = VOICEMMODE2_VSID;
 }
 
-void compr_voip_feature_init(bool is_feature_enabled)
-{
-    voice_extn_compress_voip_enabled = is_feature_enabled;
-    ALOGD("%s:: ---- Feature COMPRESS_VOIP is %s ----", __func__, is_feature_enabled?"ENABLED":"NOT ENABLED");
-}
-
-bool voice_extn_is_compress_voip_supported()
-{
-    return voice_extn_compress_voip_enabled;
-}
-
 int voice_extn_get_session_from_use_case(struct audio_device *adev,
                                          const audio_usecase_t usecase_id,
                                          struct voice_session **session)
diff --git a/hal/voice_extn/voice_extn.h b/hal/voice_extn/voice_extn.h
index 7a3b8cd..c4f0d49 100644
--- a/hal/voice_extn/voice_extn.h
+++ b/hal/voice_extn/voice_extn.h
@@ -77,7 +77,7 @@
 bool voice_extn_compress_voip_is_format_supported(audio_format_t format);
 bool voice_extn_compress_voip_is_config_supported(struct audio_config *config);
 bool voice_extn_compress_voip_is_started(struct audio_device *adev);
-void voice_extn_feature_init(int is_running_with_enhanced_fwk);
+void voice_extn_feature_init();
 void compr_voip_feature_init(bool is_feature_enabled);
 bool voice_extn_is_compress_voip_supported();
 void dynamic_ecns_feature_init(bool is_feature_enabled);
diff --git a/post_proc/asphere.c b/post_proc/asphere.c
index 7b35a77..efe07c6 100644
--- a/post_proc/asphere.c
+++ b/post_proc/asphere.c
@@ -33,7 +33,6 @@
 #include <fcntl.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <dlfcn.h>
 #include <stdbool.h>
 #include <sys/stat.h>
 #include <log/log.h>
@@ -42,7 +41,6 @@
 #include <cutils/properties.h>
 #include <hardware/audio_effect.h>
 #include <pthread.h>
-#include <audio_feature_manager.h>
 #include "bundle.h"
 #include "equalizer.h"
 #include "bass_boost.h"
@@ -58,10 +56,6 @@
 
 #define AUDIO_ASPHERE_EVENT_NODE "/data/misc/audio_pp/event_node"
 
-#define PRIMARY_HAL_PATH XSTR(LIB_AUDIO_HAL)
-#define XSTR(x) STR(x)
-#define STR(x) #x
-
 enum {
     ASPHERE_ACTIVE = 0,
     ASPHERE_SUSPENDED,
@@ -90,7 +84,6 @@
 
 static struct asphere_module asphere;
 pthread_once_t asphere_once = PTHREAD_ONCE_INIT;
-static bool (*is_feature_enabled)(audio_ext_feature);
 
 static int asphere_create_app_notification_node(void)
 {
@@ -170,23 +163,14 @@
     ALOGD("%s", __func__);
     pthread_mutex_init(&asphere.lock, NULL);
 
-    if (access(PRIMARY_HAL_PATH, R_OK) == 0) {
-        void *hal_lib_pointer = dlopen(PRIMARY_HAL_PATH, RTLD_NOW);
-        if (hal_lib_pointer == NULL)
-            ALOGE("%s: DLOPEN failed for %s", __func__, PRIMARY_HAL_PATH);
-        else if ((is_feature_enabled = (bool (*)(audio_ext_feature))dlsym(hal_lib_pointer,
-                                     "audio_feature_manager_is_feature_enabled")) != NULL) {
-            if (is_feature_enabled(AUDIOSPHERE)) {
-                asphere.init_status = 1;
-                asphere_get_values_from_mixer();
-                asphere_create_app_notification_node();
-                return;
-            } else
-                ALOGW("%s: asphere feature not enabled", __func__);
-        } else
-            ALOGE("%s: dlsym failed", __func__);
-    } else
-        ALOGE("%s: not able to acces lib %s ", __func__, PRIMARY_HAL_PATH);
+    if (property_get_bool("vendor.audio.feature.audio_sphere.enable", false)) {
+        asphere.init_status = 1;
+        asphere_get_values_from_mixer();
+        asphere_create_app_notification_node();
+        return;
+    } else {
+        ALOGW("%s: asphere feature not enabled", __func__);
+    }
 
     asphere.init_status = 0;
 }
diff --git a/post_proc/virtualizer.c b/post_proc/virtualizer.c
index 0199a51..6c08bd7 100644
--- a/post_proc/virtualizer.c
+++ b/post_proc/virtualizer.c
@@ -21,25 +21,17 @@
 //#define LOG_NDEBUG 0
 
 #include <cutils/list.h>
+#include <cutils/properties.h>
 #include <log/log.h>
 #include <tinyalsa/asoundlib.h>
 #include <sound/audio_effects.h>
 #include <audio_effects/effect_virtualizer.h>
-#include <audio_feature_manager.h>
-#include <dlfcn.h>
-#include <unistd.h>
 
 #include "effect_api.h"
 #include "virtualizer.h"
 
 #define VIRUALIZER_MAX_LATENCY 30
 
-#define PRIMARY_HAL_PATH XSTR(LIB_AUDIO_HAL)
-#define XSTR(x) STR(x)
-#define STR(x) #x
-
-static bool (*is_feature_enabled)(audio_ext_feature);
-
 #ifdef AUDIO_FEATURE_ENABLED_GCOV
 extern void  __gcov_flush();
 static void enable_gcov()
@@ -113,11 +105,9 @@
  *  true      device is applicable for effect
  */
 bool virtualizer_is_device_supported(audio_devices_t device) {
-    if (is_feature_enabled != NULL &&
-        is_feature_enabled(AFE_PROXY)) {
-        if (device == AUDIO_DEVICE_OUT_PROXY)
-            return false;
-    }
+    if ((property_get_bool("vendor.audio.feature.afe_proxy.enable", false)) &&
+        (device == AUDIO_DEVICE_OUT_PROXY))
+           return false;
 
     switch (device) {
     case AUDIO_DEVICE_OUT_SPEAKER:
@@ -482,20 +472,6 @@
     ALOGV("%s: ctxt %p", __func__, context);
     virtualizer_context_t *virt_ctxt = (virtualizer_context_t *)context;
 
-    if (access(PRIMARY_HAL_PATH, R_OK) == 0) {
-        void *hal_lib_pointer = dlopen(PRIMARY_HAL_PATH, RTLD_NOW);
-        if (hal_lib_pointer == NULL)
-            ALOGE("%s: DLOPEN failed for %s", __func__, PRIMARY_HAL_PATH);
-        else {
-            is_feature_enabled =
-                     (bool (*)(audio_ext_feature))dlsym(hal_lib_pointer,
-                               "audio_feature_manager_is_feature_enabled");
-            if (is_feature_enabled == NULL)
-                ALOGE("%s: dlsym failed", __func__);
-        }
-    } else
-        ALOGE("%s: not able to acces lib %s ", __func__, PRIMARY_HAL_PATH);
-
     context->config.inputCfg.accessMode = EFFECT_BUFFER_ACCESS_READ;
     context->config.inputCfg.channels = AUDIO_CHANNEL_OUT_STEREO;
     context->config.inputCfg.format = AUDIO_FORMAT_PCM_16_BIT;