hal : Support for another instance of fm recording
-Added support for one more instance of fm recording
to play fm over a2dp.
Change-Id: I0c796c5acdc045327a8d43754e7530aab10097d9
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index c00b067..b53892f 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -105,6 +105,7 @@
[USECASE_AUDIO_PLAYBACK_OFFLOAD] = "compress-offload-playback",
[USECASE_AUDIO_RECORD] = "audio-record",
[USECASE_AUDIO_RECORD_LOW_LATENCY] = "low-latency-record",
+ [USECASE_AUDIO_RECORD_FM_VIRTUAL] = "fm-virtual-record",
[USECASE_AUDIO_PLAYBACK_FM] = "play-fm",
[USECASE_VOICE_CALL] = "voice-call",
@@ -707,6 +708,7 @@
struct audio_usecase *uc_info;
struct audio_device *adev = in->dev;
+ in->usecase = platform_get_usecase_from_source(in->source);
ALOGV("%s: enter: usecase(%d)", __func__, in->usecase);
/* Check if source matches incall recording usecase criteria */
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 965ac62..07fd027 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -65,6 +65,7 @@
/* Capture usecases */
USECASE_AUDIO_RECORD,
USECASE_AUDIO_RECORD_LOW_LATENCY,
+ USECASE_AUDIO_RECORD_FM_VIRTUAL,
/* Voice usecase */
USECASE_VOICE_CALL,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 44842b5..691a833 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -98,14 +98,16 @@
[USECASE_AUDIO_PLAYBACK_DEEP_BUFFER] = {DEEP_BUFFER_PCM_DEVICE,
DEEP_BUFFER_PCM_DEVICE},
[USECASE_AUDIO_PLAYBACK_LOW_LATENCY] = {LOWLATENCY_PCM_DEVICE,
- LOWLATENCY_PCM_DEVICE},
- [USECASE_AUDIO_PLAYBACK_MULTI_CH] = {MULTI_CHANNEL_PCM_DEVICE,
- MULTI_CHANNEL_PCM_DEVICE},
+ LOWLATENCY_PCM_DEVICE},
+ [USECASE_AUDIO_PLAYBACK_MULTI_CH] = {MULTIMEDIA2_PCM_DEVICE,
+ MULTIMEDIA2_PCM_DEVICE},
[USECASE_AUDIO_PLAYBACK_OFFLOAD] =
{PLAYBACK_OFFLOAD_DEVICE, PLAYBACK_OFFLOAD_DEVICE},
[USECASE_AUDIO_RECORD] = {AUDIO_RECORD_PCM_DEVICE, AUDIO_RECORD_PCM_DEVICE},
[USECASE_AUDIO_RECORD_LOW_LATENCY] = {LOWLATENCY_PCM_DEVICE,
LOWLATENCY_PCM_DEVICE},
+ [USECASE_AUDIO_RECORD_FM_VIRTUAL] = {MULTIMEDIA2_PCM_DEVICE,
+ MULTIMEDIA2_PCM_DEVICE},
[USECASE_AUDIO_PLAYBACK_FM] = {FM_PLAYBACK_PCM_DEVICE, FM_CAPTURE_PCM_DEVICE},
[USECASE_VOICE_CALL] = {VOICE_CALL_PCM_DEVICE, VOICE_CALL_PCM_DEVICE},
[USECASE_VOICE2_CALL] = {VOICE2_CALL_PCM_DEVICE, VOICE2_CALL_PCM_DEVICE},
@@ -834,10 +836,8 @@
} else
set_echo_reference(adev->mixer, "NONE");
}
- } else if (source == AUDIO_SOURCE_FM_RX) {
- if (in_device & AUDIO_DEVICE_IN_FM_RX) {
- snd_device = SND_DEVICE_IN_CAPTURE_FM;
- }
+ } else if (source == AUDIO_SOURCE_FM_RX || AUDIO_SOURCE_FM_RX_A2DP) {
+ snd_device = SND_DEVICE_IN_CAPTURE_FM;
} else if (source == AUDIO_SOURCE_DEFAULT) {
goto exit;
}
@@ -1127,3 +1127,12 @@
return 0;
}
}
+
+int platform_get_usecase_from_source(int source)
+{
+ ALOGV("%s: input source ", __func__, source);
+ if(AUDIO_SOURCE_FM_RX_A2DP)
+ return USECASE_AUDIO_RECORD_FM_VIRTUAL;
+ else
+ return USECASE_AUDIO_RECORD;
+}
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 444832f..6ad392b 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -146,7 +146,7 @@
#define DEEP_BUFFER_PCM_DEVICE 0
#define AUDIO_RECORD_PCM_DEVICE 0
-#define MULTI_CHANNEL_PCM_DEVICE 1
+#define MULTIMEDIA2_PCM_DEVICE 1
#define VOICE_CALL_PCM_DEVICE 2
#define FM_PLAYBACK_PCM_DEVICE 5
#define FM_CAPTURE_PCM_DEVICE 6
diff --git a/hal/platform_api.h b/hal/platform_api.h
index 256bb76..856444d 100644
--- a/hal/platform_api.h
+++ b/hal/platform_api.h
@@ -47,5 +47,6 @@
/* returns the latency for a usecase in Us */
int64_t platform_render_latency(audio_usecase_t usecase);
+int platform_get_usecase_from_source(int source);
#endif // QCOM_AUDIO_PLATFORM_API_H