Merge "hal: Use compress audio for incall recording with AMR WB"
diff --git a/hal/audio_extn/compress_capture.c b/hal/audio_extn/compress_capture.c
index f3db419..0a2de36 100644
--- a/hal/audio_extn/compress_capture.c
+++ b/hal/audio_extn/compress_capture.c
@@ -93,7 +93,10 @@
 
 bool audio_extn_compr_cap_usecase_supported(audio_usecase_t usecase)
 {
-    if (usecase == USECASE_AUDIO_RECORD_COMPRESS)
+    if ((usecase == USECASE_AUDIO_RECORD_COMPRESS) ||
+        (usecase == USECASE_INCALL_REC_UPLINK_COMPRESS) ||
+        (usecase == USECASE_INCALL_REC_DOWNLINK_COMPRESS) ||
+        (usecase == USECASE_INCALL_REC_UPLINK_AND_DOWNLINK_COMPRESS))
         return true;
     else
         return false;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index bca6a26..0406627 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -119,6 +119,10 @@
     [USECASE_INCALL_REC_UPLINK] = "incall-rec-uplink",
     [USECASE_INCALL_REC_DOWNLINK] = "incall-rec-downlink",
     [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK] = "incall-rec-uplink-and-downlink",
+    [USECASE_INCALL_REC_UPLINK_COMPRESS] = "incall-rec-uplink-compress",
+    [USECASE_INCALL_REC_DOWNLINK_COMPRESS] = "incall-rec-downlink-compress",
+    [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK_COMPRESS] = "incall-rec-uplink-and-downlink-compress",
+
     [USECASE_INCALL_MUSIC_UPLINK] = "incall_music_uplink",
     [USECASE_INCALL_MUSIC_UPLINK2] = "incall_music_uplink2",
     [USECASE_AUDIO_SPKR_CALIB_RX] = "spkr-rx-calib",
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 0904137..ccb0298 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -84,6 +84,9 @@
     USECASE_INCALL_REC_UPLINK,
     USECASE_INCALL_REC_DOWNLINK,
     USECASE_INCALL_REC_UPLINK_AND_DOWNLINK,
+    USECASE_INCALL_REC_UPLINK_COMPRESS,
+    USECASE_INCALL_REC_DOWNLINK_COMPRESS,
+    USECASE_INCALL_REC_UPLINK_AND_DOWNLINK_COMPRESS,
 
     USECASE_INCALL_MUSIC_UPLINK,
     USECASE_INCALL_MUSIC_UPLINK2,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 25f52d6..dfc8ff7 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -121,6 +121,12 @@
                                      AUDIO_RECORD_PCM_DEVICE},
     [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK] = {AUDIO_RECORD_PCM_DEVICE,
                                                 AUDIO_RECORD_PCM_DEVICE},
+    [USECASE_INCALL_REC_UPLINK_COMPRESS] = {COMPRESS_CAPTURE_DEVICE,
+                                            COMPRESS_CAPTURE_DEVICE},
+    [USECASE_INCALL_REC_DOWNLINK_COMPRESS] = {COMPRESS_CAPTURE_DEVICE,
+                                              COMPRESS_CAPTURE_DEVICE},
+    [USECASE_INCALL_REC_UPLINK_AND_DOWNLINK_COMPRESS] = {COMPRESS_CAPTURE_DEVICE,
+                                                         COMPRESS_CAPTURE_DEVICE},
     [USECASE_INCALL_MUSIC_UPLINK] = {INCALL_MUSIC_UPLINK_PCM_DEVICE,
                                      INCALL_MUSIC_UPLINK_PCM_DEVICE},
     [USECASE_INCALL_MUSIC_UPLINK2] = {INCALL_MUSIC_UPLINK2_PCM_DEVICE,
diff --git a/hal/voice.c b/hal/voice.c
index 25b53d4..afbd0af 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -212,15 +212,27 @@
     if (voice_is_in_call(adev)) {
         switch (in->source) {
         case AUDIO_SOURCE_VOICE_UPLINK:
-            in->usecase = USECASE_INCALL_REC_UPLINK;
+            if (audio_extn_compr_cap_enabled() &&
+                audio_extn_compr_cap_format_supported(in->config.format)) {
+                in->usecase = USECASE_INCALL_REC_UPLINK_COMPRESS;
+            } else
+                in->usecase = USECASE_INCALL_REC_UPLINK;
             rec_mode = INCALL_REC_UPLINK;
             break;
         case AUDIO_SOURCE_VOICE_DOWNLINK:
-            in->usecase = USECASE_INCALL_REC_DOWNLINK;
+            if (audio_extn_compr_cap_enabled() &&
+                audio_extn_compr_cap_format_supported(in->config.format)) {
+                in->usecase = USECASE_INCALL_REC_DOWNLINK_COMPRESS;
+            } else
+                in->usecase = USECASE_INCALL_REC_DOWNLINK;
             rec_mode = INCALL_REC_DOWNLINK;
             break;
         case AUDIO_SOURCE_VOICE_CALL:
-            in->usecase = USECASE_INCALL_REC_UPLINK_AND_DOWNLINK;
+            if (audio_extn_compr_cap_enabled() &&
+                audio_extn_compr_cap_format_supported(in->config.format)) {
+                in->usecase = USECASE_INCALL_REC_UPLINK_AND_DOWNLINK_COMPRESS;
+            } else
+                in->usecase = USECASE_INCALL_REC_UPLINK_AND_DOWNLINK;
             rec_mode = INCALL_REC_UPLINK_AND_DOWNLINK;
             break;
         default: