diff --git a/hal/audio_extn/audio_defs.h b/hal/audio_extn/audio_defs.h
index ee4f7d4..1baa3a7 100644
--- a/hal/audio_extn/audio_defs.h
+++ b/hal/audio_extn/audio_defs.h
@@ -106,10 +106,11 @@
 /* Set or Query stream profile type */
 #define AUDIO_PARAMETER_STREAM_PROFILE "audio_stream_profile"
 
-/* audio inout flag for timestamp mode.
+/* audio input flags for compress and timestamp mode.
  * check other input flags defined in audio.h for conflicts
  */
 #define AUDIO_INPUT_FLAG_TIMESTAMP 0x80000000
+#define AUDIO_INPUT_FLAG_COMPRESS  0x40000000
 
 /* MAX SECTORS for sourcetracking feature */
 #define MAX_SECTORS 8
diff --git a/hal/audio_extn/compress_in.c b/hal/audio_extn/compress_in.c
index 403ee8b..1a6c789 100644
--- a/hal/audio_extn/compress_in.c
+++ b/hal/audio_extn/compress_in.c
@@ -84,8 +84,7 @@
 
 bool audio_extn_cin_applicable_stream(struct stream_in *in)
 {
-    if ((in->flags & AUDIO_INPUT_FLAG_TIMESTAMP) ||
-        in->usecase == USECASE_AUDIO_RECORD_COMPRESS2)
+    if (in->flags & (AUDIO_INPUT_FLAG_COMPRESS | AUDIO_INPUT_FLAG_TIMESTAMP))
         return true;
 
     return false;
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index a0eb5cd..367e9a8 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -380,9 +380,9 @@
             if (app_type_cfg[i+1] == 0)
                 break;
             else if (app_type_cfg[i+1] == (size_t)s_info->app_type_cfg.app_type) {
-                if (app_type_cfg[i+2] < s_info->app_type_cfg.sample_rate)
+                if (app_type_cfg[i+2] < (size_t)s_info->app_type_cfg.sample_rate)
                     app_type_cfg[i+2] = s_info->app_type_cfg.sample_rate;
-                if (app_type_cfg[i+3] < s_info->app_type_cfg.bit_width)
+                if (app_type_cfg[i+3] < (size_t)s_info->app_type_cfg.bit_width)
                     app_type_cfg[i+3] = s_info->app_type_cfg.bit_width;
                 update = false;
                 break;
@@ -402,9 +402,9 @@
             if (app_type_cfg[i+1] == 0)
                 break;
             else if (app_type_cfg[i+1] == (size_t)s_info->app_type_cfg.app_type) {
-                if (app_type_cfg[i+2] < s_info->app_type_cfg.sample_rate)
+                if (app_type_cfg[i+2] < (size_t)s_info->app_type_cfg.sample_rate)
                     app_type_cfg[i+2] = s_info->app_type_cfg.sample_rate;
-                if (app_type_cfg[i+3] < s_info->app_type_cfg.bit_width)
+                if (app_type_cfg[i+3] < (size_t)s_info->app_type_cfg.bit_width)
                     app_type_cfg[i+3] = s_info->app_type_cfg.bit_width;
                 update = false;
                 break;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index b3a985c..659b013 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4742,23 +4742,6 @@
         in->realtime = may_use_noirq_mode(adev, in->usecase, in->flags);
     }
 
-    pthread_mutex_lock(&adev->lock);
-    if (in->usecase == USECASE_AUDIO_RECORD) {
-        if (!(adev->pcm_record_uc_state) &&
-            ((flags & AUDIO_INPUT_FLAG_TIMESTAMP) == 0)) {
-            ALOGV("%s: pcm record usecase", __func__);
-            adev->pcm_record_uc_state = 1;
-        } else {
-            /*
-             * Assign default compress record use case, actual use case
-             * assignment will happen later.
-             */
-             in->usecase = USECASE_AUDIO_RECORD_COMPRESS2;
-             ALOGV("%s: compress record usecase", __func__);
-        }
-    }
-    pthread_mutex_unlock(&adev->lock);
-
     /* Update config params with the requested sample rate and channels */
     if ((in->device == AUDIO_DEVICE_IN_TELEPHONY_RX) &&
           (adev->mode != AUDIO_MODE_IN_CALL)) {
@@ -4877,12 +4860,6 @@
             audio_extn_compr_cap_format_supported(in->config.format))
         audio_extn_compr_cap_deinit();
 
-    if (in->usecase == USECASE_AUDIO_RECORD) {
-        pthread_mutex_lock(&adev->lock);
-        adev->pcm_record_uc_state = 0;
-        pthread_mutex_unlock(&adev->lock);
-    }
-
     if (audio_extn_cin_attached_usecase(in->usecase))
         audio_extn_cin_close_input_stream(in);
 
@@ -5014,7 +4991,6 @@
     list_init(&adev->usecase_list);
     adev->cur_wfd_channels = 2;
     adev->offload_usecases_state = 0;
-    adev->pcm_record_uc_state = 0;
     adev->is_channel_status_set = false;
     adev->perf_lock_opts[0] = 0x101;
     adev->perf_lock_opts[1] = 0x20E;
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index f837952..38ac547 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -385,7 +385,6 @@
     bool is_channel_status_set;
     void *platform;
     unsigned int offload_usecases_state;
-    unsigned int pcm_record_uc_state;
     void *visualizer_lib;
     int (*visualizer_start_output)(audio_io_handle_t, int);
     int (*visualizer_stop_output)(audio_io_handle_t, int);
diff --git a/qahw_api/inc/qahw_defs.h b/qahw_api/inc/qahw_defs.h
index c3def18..8b890b9 100644
--- a/qahw_api/inc/qahw_defs.h
+++ b/qahw_api/inc/qahw_defs.h
@@ -165,10 +165,11 @@
 /* Set or Query stream profile type */
 #define QAHW_PARAMETER_STREAM_PROFILE "audio_stream_profile"
 
-/* audio inout flag for timestamp mode.
+/* audio input flags for compress and timestamp mode.
  * check other input flags defined in audio.h for conflicts
  */
 #define QAHW_INPUT_FLAG_TIMESTAMP 0x80000000
+#define QAHW_INPUT_FLAG_COMPRESS  0x40000000
 
 /* Query fm volume */
 #define QAHW_PARAMETER_KEY_FM_VOLUME "fm_volume"
