hal: Use compress audio for incall recording with AMR WB
Currently, AMR WB recording uses tunnel mode instead of
software encoding. Update audio hal to use compress audio
path to do incall recording with AMR WB format.
Change-Id: I93deb3dbc7dcd6a8d2b178334f8b43117ee6841c
CRs-Fixed: 581298
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 cd73094..94b8734 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: