diff --git a/hal/Android.mk b/hal/Android.mk
index 91e4973..9d732b2 100644
--- a/hal/Android.mk
+++ b/hal/Android.mk
@@ -454,6 +454,12 @@
     LOCAL_SRC_FILES += audio_extn/ext_hw_plugin.c
 endif
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+    LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+    LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+    LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_MODULE := audio.primary.$(TARGET_BOARD_PLATFORM)
 
 LOCAL_MODULE_RELATIVE_PATH := hw
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 13dd4a0..1acc3b3 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -448,6 +448,18 @@
 static int out_set_mmap_volume(struct audio_stream_out *stream, float left, float right);
 static int out_set_voip_volume(struct audio_stream_out *stream, float left, float right);
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 static bool may_use_noirq_mode(struct audio_device *adev, audio_usecase_t uc_id,
                                int flags __unused)
 {
@@ -2440,7 +2452,7 @@
     free(uc_info);
 
     adev->active_input = get_next_active_input(adev);
-
+    enable_gcov();
     ALOGV("%s: exit: status(%d)", __func__, ret);
     return ret;
 }
@@ -2621,7 +2633,7 @@
 done_open:
     audio_extn_perf_lock_release(&adev->perf_lock_handle);
     ALOGD("%s: exit", __func__);
-
+    enable_gcov();
     return ret;
 
 error_open:
@@ -2635,7 +2647,7 @@
      */
     usleep(50000);
     ALOGD("%s: exit: status(%d)", __func__, ret);
-
+    enable_gcov();
     return ret;
 }
 
@@ -3342,6 +3354,7 @@
     platform_set_swap_channels(adev, true);
 
     ATRACE_END();
+    enable_gcov();
     return ret;
 error_open:
     audio_extn_perf_lock_release(&adev->perf_lock_handle);
@@ -3353,6 +3366,7 @@
      */
     usleep(50000);
     ATRACE_END();
+    enable_gcov();
     return ret;
 }
 
@@ -7621,7 +7635,7 @@
         adev = NULL;
     }
     pthread_mutex_unlock(&adev_init_lock);
-
+    enable_gcov();
     return 0;
 }
 
diff --git a/hal/msm8974/hw_info.c b/hal/msm8974/hw_info.c
index b5595ca..689becf 100644
--- a/hal/msm8974/hw_info.c
+++ b/hal/msm8974/hw_info.c
@@ -654,6 +654,10 @@
     } else if (!strncmp(snd_card_name, "sm6150-tavil-snd-card",
                  sizeof("sm6150-tavil-snd-card"))) {
         strlcpy(hw_info->name, "sm6150", sizeof(hw_info->name));
+    } else if (!strncmp(snd_card_name, "trinket-qrd-snd-card",
+                 sizeof("trinket-qrd-snd-card"))) {
+        hw_info->is_stereo_spkr = false;
+        strlcpy(hw_info->name, "trinket", sizeof(hw_info->name));
     } else if (!strncmp(snd_card_name, "trinket-idp-snd-card",
                  sizeof("trinket-idp-snd-card"))) {
         hw_info->is_stereo_spkr = false;
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index ae76923..a770b4c 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -1120,6 +1120,8 @@
                    sizeof("kona-mtp-snd-card")) ||
          !strncmp(snd_card_name, "kona-qrd-snd-card",
                    sizeof("kona-qrd-snd-card")) ||
+         !strncmp(snd_card_name, "trinket-qrd-snd-card",
+                   sizeof("trinket-qrd-snd-card")) ||
          !strncmp(snd_card_name, "trinket-idp-snd-card",
                    sizeof("trinket-idp-snd-card"))) {
          ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
diff --git a/hdmi_in_test/Android.mk b/hdmi_in_test/Android.mk
index 0530372..d016cb3 100644
--- a/hdmi_in_test/Android.mk
+++ b/hdmi_in_test/Android.mk
@@ -12,4 +12,10 @@
     liblog \
     libcutils
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 include $(BUILD_EXECUTABLE)
diff --git a/mm-audio/aenc-aac/qdsp6/Android.mk b/mm-audio/aenc-aac/qdsp6/Android.mk
index bbfcc3c..cbc832d 100644
--- a/mm-audio/aenc-aac/qdsp6/Android.mk
+++ b/mm-audio/aenc-aac/qdsp6/Android.mk
@@ -37,6 +37,12 @@
 LOCAL_SRC_FILES         := src/aenc_svr.c
 LOCAL_SRC_FILES         += src/omx_aac_aenc.cpp
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include
 LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
diff --git a/mm-audio/aenc-amrnb/qdsp6/Android.mk b/mm-audio/aenc-amrnb/qdsp6/Android.mk
index 0968530..4a05742 100644
--- a/mm-audio/aenc-amrnb/qdsp6/Android.mk
+++ b/mm-audio/aenc-amrnb/qdsp6/Android.mk
@@ -39,6 +39,12 @@
 LOCAL_SRC_FILES         := src/aenc_svr.c
 LOCAL_SRC_FILES         += src/omx_amr_aenc.cpp
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include
 LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
diff --git a/mm-audio/aenc-evrc/qdsp6/Android.mk b/mm-audio/aenc-evrc/qdsp6/Android.mk
index 98b1fe9..76ed6be 100644
--- a/mm-audio/aenc-evrc/qdsp6/Android.mk
+++ b/mm-audio/aenc-evrc/qdsp6/Android.mk
@@ -39,6 +39,12 @@
 LOCAL_SRC_FILES         := src/aenc_svr.c
 LOCAL_SRC_FILES         += src/omx_evrc_aenc.cpp
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include
 LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
diff --git a/mm-audio/aenc-g711/qdsp6/Android.mk b/mm-audio/aenc-g711/qdsp6/Android.mk
index 95dd655..d71f121 100644
--- a/mm-audio/aenc-g711/qdsp6/Android.mk
+++ b/mm-audio/aenc-g711/qdsp6/Android.mk
@@ -40,6 +40,12 @@
 LOCAL_SRC_FILES         += src/omx_g711_aenc.cpp
 LOCAL_SRC_FILES         += src/omx_log.cpp
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include
 LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
diff --git a/mm-audio/aenc-qcelp13/qdsp6/Android.mk b/mm-audio/aenc-qcelp13/qdsp6/Android.mk
index 52e43bb..1178b2f 100644
--- a/mm-audio/aenc-qcelp13/qdsp6/Android.mk
+++ b/mm-audio/aenc-qcelp13/qdsp6/Android.mk
@@ -39,6 +39,12 @@
 LOCAL_SRC_FILES         := src/aenc_svr.c
 LOCAL_SRC_FILES         += src/omx_qcelp13_aenc.cpp
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
 LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include
 LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
diff --git a/post_proc/Android.mk b/post_proc/Android.mk
index 4d3ed87..497fe17 100644
--- a/post_proc/Android.mk
+++ b/post_proc/Android.mk
@@ -42,6 +42,12 @@
     LOCAL_CFLAGS += -DINSTANCE_ID_ENABLED
 endif
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+    LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+    LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+    LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_CFLAGS+= -O2 -fvisibility=hidden
 
 ifneq ($(strip $(AUDIO_FEATURE_DISABLED_DTS_EAGLE)),true)
diff --git a/post_proc/asphere.c b/post_proc/asphere.c
index 20ca694..82bb496 100644
--- a/post_proc/asphere.c
+++ b/post_proc/asphere.c
@@ -62,6 +62,18 @@
     ASPHERE_ERROR
 };
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 struct asphere_module {
     bool enabled;
     int status;
@@ -157,6 +169,7 @@
 
 static int asphere_init() {
     pthread_once(&asphere_once, asphere_init_once);
+    enable_gcov();
     return asphere.init_status;
 }
 
diff --git a/post_proc/bass_boost.c b/post_proc/bass_boost.c
index 68cd46f..8e91764 100644
--- a/post_proc/bass_boost.c
+++ b/post_proc/bass_boost.c
@@ -48,6 +48,18 @@
 #define LIB_ACDB_LOADER "libacdbloader.so"
 #define PBE_CONF_APP_ID 0x00011134
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 enum {
         AUDIO_DEVICE_CAL_TYPE = 0,
         AUDIO_STREAM_CAL_TYPE,
@@ -221,7 +233,7 @@
 
     bassboost_init((effect_context_t *)&(bass_ctxt->bassboost_ctxt));
     pbe_init((effect_context_t *)&(bass_ctxt->pbe_ctxt));
-
+    enable_gcov();
     return 0;
 }
 
@@ -396,6 +408,7 @@
     bass_ctxt->temp_disabled = false;
     memset(&(bass_ctxt->offload_bass), 0, sizeof(struct bass_boost_params));
 
+    enable_gcov();
     return 0;
 }
 
diff --git a/post_proc/equalizer.c b/post_proc/equalizer.c
index c1c1303..eddaca1 100644
--- a/post_proc/equalizer.c
+++ b/post_proc/equalizer.c
@@ -41,6 +41,19 @@
         "The Android Open Source Project",
 };
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+void enable_gcov()
+{
+}
+#endif
+
+
 static const char *equalizer_preset_names[] = {
                                         "Normal",
                                         "Classical",
@@ -489,7 +502,7 @@
     eq_ctxt->hw_acc_fd = -1;
     memset(&(eq_ctxt->offload_eq), 0, sizeof(struct eq_params));
     offload_eq_set_preset(&(eq_ctxt->offload_eq), INVALID_PRESET);
-
+    enable_gcov();
     return 0;
 }
 
@@ -510,6 +523,7 @@
                                   OFFLOAD_SEND_EQ_ENABLE_FLAG |
                                   OFFLOAD_SEND_EQ_BANDS_LEVEL);
     }
+    enable_gcov();
     return 0;
 }
 
@@ -527,6 +541,7 @@
             hw_acc_eq_send_params(eq_ctxt->hw_acc_fd, &eq_ctxt->offload_eq,
                                   OFFLOAD_SEND_EQ_ENABLE_FLAG);
     }
+    enable_gcov();
     return 0;
 }
 
@@ -546,6 +561,7 @@
                                   OFFLOAD_SEND_EQ_ENABLE_FLAG |
                                   OFFLOAD_SEND_EQ_BANDS_LEVEL);
     }
+    enable_gcov();
     return 0;
 }
 
@@ -561,6 +577,7 @@
         offload_eq_send_params(eq_ctxt->ctl, &eq, OFFLOAD_SEND_EQ_ENABLE_FLAG);
     }
     eq_ctxt->ctl = NULL;
+    enable_gcov();
     return 0;
 }
 
diff --git a/post_proc/hw_accelerator.c b/post_proc/hw_accelerator.c
index fd95db0..fae5807 100644
--- a/post_proc/hw_accelerator.c
+++ b/post_proc/hw_accelerator.c
@@ -41,6 +41,17 @@
 #include "effect_api.h"
 #include "hw_accelerator.h"
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
 
 /* hw_accelerator UUID: 7d1580bd-297f-4683-9239-e475b6d1d69f */
 const effect_descriptor_t hw_accelerator_descriptor = {
@@ -163,7 +174,7 @@
 
     hw_acc_ctxt->fd = -1;
     memset(&(hw_acc_ctxt->cfg), 0, sizeof(struct msm_hwacc_effects_config));
-
+    enable_gcov();
     return 0;
 }
 
@@ -243,6 +254,7 @@
         hw_acc_ctxt->fd = -1;
         return -EFAULT;
     }
+    enable_gcov();
     return 0;
 }
 
@@ -255,6 +267,7 @@
         if (close(hw_acc_ctxt->fd) < 0)
             ALOGE("releasing hardware accelerated effects driver failed");
     hw_acc_ctxt->fd = -1;
+    enable_gcov();
     return 0;
 }
 
@@ -267,6 +280,7 @@
         if (close(hw_acc_ctxt->fd) < 0)
             ALOGE("releasing hardware accelerated effects driver failed");
     hw_acc_ctxt->fd = -1;
+    enable_gcov();
     return 0;
 }
 
diff --git a/post_proc/reverb.c b/post_proc/reverb.c
index e97b651..eafa07e 100644
--- a/post_proc/reverb.c
+++ b/post_proc/reverb.c
@@ -30,6 +30,20 @@
 #include "effect_api.h"
 #include "reverb.h"
 
+#define REVERB_MAX_LATENCY 100
+
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 /* Offload auxiliary environmental reverb UUID: 79a18026-18fd-4185-8233-0002a5d5c51b */
 const effect_descriptor_t aux_env_reverb_descriptor = {
         { 0xc2e5d5f0, 0x94bd, 0x4763, 0x9cac, { 0x4e, 0x23, 0x4d, 0x06, 0x83, 0x9e } },
@@ -718,7 +732,7 @@
     if (reverb_ctxt->preset &&
         reverb_ctxt->next_preset != reverb_ctxt->cur_preset)
         reverb_load_preset(reverb_ctxt);
-
+    enable_gcov();
     return 0;
 }
 
@@ -740,6 +754,7 @@
 
     if (!offload_reverb_get_enable_flag(&(reverb_ctxt->offload_reverb)))
         offload_reverb_set_enable_flag(&(reverb_ctxt->offload_reverb), true);
+    enable_gcov();
     return 0;
 }
 
@@ -760,6 +775,7 @@
                                       &reverb_ctxt->offload_reverb,
                                       OFFLOAD_SEND_REVERB_ENABLE_FLAG);
     }
+    enable_gcov();
     return 0;
 }
 
@@ -782,7 +798,7 @@
                                       OFFLOAD_SEND_REVERB_PRESET);
         }
     }
-
+    enable_gcov();
     return 0;
 }
 
@@ -799,6 +815,7 @@
                                    OFFLOAD_SEND_REVERB_ENABLE_FLAG);
     }
     reverb_ctxt->ctl = NULL;
+    enable_gcov();
     return 0;
 }
 
diff --git a/post_proc/virtualizer.c b/post_proc/virtualizer.c
index dfa7691..f47630b 100644
--- a/post_proc/virtualizer.c
+++ b/post_proc/virtualizer.c
@@ -29,6 +29,20 @@
 #include "effect_api.h"
 #include "virtualizer.h"
 
+#define VIRUALIZER_MAX_LATENCY 30
+
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 /* Offload Virtualizer UUID: 509a4498-561a-4bea-b3b1-0002a5d5c51b */
 const effect_descriptor_t virtualizer_descriptor = {
         {0x37cc2c00, 0xdddd, 0x11db, 0x8577, {0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b}},
@@ -475,7 +489,7 @@
     virt_ctxt->forced_device = AUDIO_DEVICE_NONE;
     virt_ctxt->device = AUDIO_DEVICE_NONE;
     memset(&(virt_ctxt->offload_virt), 0, sizeof(struct virtualizer_params));
-
+    enable_gcov();
     return 0;
 }
 
@@ -500,6 +514,7 @@
                                            OFFLOAD_SEND_VIRTUALIZER_ENABLE_FLAG |
                                            OFFLOAD_SEND_VIRTUALIZER_STRENGTH);
     }
+    enable_gcov();
     return 0;
 }
 
@@ -521,6 +536,7 @@
                                            &virt_ctxt->offload_virt,
                                            OFFLOAD_SEND_VIRTUALIZER_ENABLE_FLAG);
     }
+    enable_gcov();
     return 0;
 }
 
@@ -541,6 +557,7 @@
                                            OFFLOAD_SEND_VIRTUALIZER_ENABLE_FLAG |
                                            OFFLOAD_SEND_VIRTUALIZER_STRENGTH);
     }
+    enable_gcov();
     return 0;
 }
 
@@ -557,6 +574,7 @@
                                         OFFLOAD_SEND_VIRTUALIZER_ENABLE_FLAG);
     }
     virt_ctxt->ctl = NULL;
+    enable_gcov();
     return 0;
 }
 
diff --git a/post_proc/volume_listener.c b/post_proc/volume_listener.c
index 2305bf7..d4c3753 100644
--- a/post_proc/volume_listener.c
+++ b/post_proc/volume_listener.c
@@ -63,6 +63,18 @@
 #define AHAL_GAIN_DEPENDENT_INTERFACE_FUNCTION "audio_hw_send_gain_dep_calibration"
 #define AHAL_GAIN_GET_MAPPING_TABLE "audio_hw_get_gain_level_mapping"
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 enum {
     VOL_LISTENER_STATE_UNINITIALIZED,
     VOL_LISTENER_STATE_INITIALIZED,
@@ -755,6 +767,7 @@
     pthread_mutex_unlock(&vol_listner_init_lock);
 
     *p_handle = (effect_handle_t)context;
+    enable_gcov();
     return 0;
 }
 
@@ -821,6 +834,7 @@
         dump_list_l();
     }
     pthread_mutex_unlock(&vol_listner_init_lock);
+    enable_gcov();
     return status;
 }
 
diff --git a/qahw_api/Android.mk b/qahw_api/Android.mk
index fa4e6cb..1cad75d 100644
--- a/qahw_api/Android.mk
+++ b/qahw_api/Android.mk
@@ -14,6 +14,12 @@
 LOCAL_SRC_FILES := \
     src/qahw_api.cpp
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_SHARED_LIBRARIES := \
     liblog \
     libcutils \
diff --git a/qahw_api/test/Android.mk b/qahw_api/test/Android.mk
index 06e8a5a..cca72f8 100644
--- a/qahw_api/test/Android.mk
+++ b/qahw_api/test/Android.mk
@@ -20,6 +20,12 @@
     libutils \
     libcutils
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_32_BIT_ONLY := true
 
 LOCAL_C_INCLUDES += $(hal-play-inc)
diff --git a/visualizer/Android.mk b/visualizer/Android.mk
index e90f57d..42cd62e 100644
--- a/visualizer/Android.mk
+++ b/visualizer/Android.mk
@@ -27,6 +27,12 @@
     LOCAL_CFLAGS += -DCAPTURE_DEVICE=7
 endif
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_HEADER_LIBRARIES := libsystem_headers \
                           libhardware_headers
 LOCAL_SHARED_LIBRARIES := \
diff --git a/visualizer/offload_visualizer.c b/visualizer/offload_visualizer.c
index a9664b6..9ad8fea 100644
--- a/visualizer/offload_visualizer.c
+++ b/visualizer/offload_visualizer.c
@@ -40,6 +40,18 @@
 
 typedef void (*acdb_send_audio_cal_t)(int, int);
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 acdb_send_audio_cal_t acdb_send_audio_cal;
 
 enum {
@@ -223,6 +235,7 @@
 
 int lib_init() {
     pthread_once(&once, init_once);
+    enable_gcov();
     return init_status;
 }
 
diff --git a/voice_processing/Android.mk b/voice_processing/Android.mk
index a39df33..5b865b7 100644
--- a/voice_processing/Android.mk
+++ b/voice_processing/Android.mk
@@ -20,6 +20,12 @@
     liblog \
     libcutils
 
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_GCOV)),true)
+LOCAL_CFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_CPPFLAGS += --coverage -fprofile-arcs -ftest-coverage
+LOCAL_STATIC_LIBRARIES += libprofile_rt
+endif
+
 LOCAL_SHARED_LIBRARIES += libdl
 
 LOCAL_HEADER_LIBRARIES := libhardware_headers
diff --git a/voice_processing/voice_processing.c b/voice_processing/voice_processing.c
index caf1cf7..32b76a5 100644
--- a/voice_processing/voice_processing.c
+++ b/voice_processing/voice_processing.c
@@ -43,6 +43,18 @@
     NUM_ID
 };
 
+#ifdef AUDIO_FEATURE_ENABLED_GCOV
+extern void  __gcov_flush();
+static void enable_gcov()
+{
+    __gcov_flush();
+}
+#else
+static void enable_gcov()
+{
+}
+#endif
+
 // Session state
 enum session_state {
     SESSION_STATE_INIT,        // initialized
@@ -711,6 +723,7 @@
         list_remove(&session->node);
         free(session);
     }
+    enable_gcov();
     return status;
 }
 
@@ -732,7 +745,7 @@
             return 0;
         }
     }
-
+    enable_gcov();
     return -EINVAL;
 }
 
