audio: Add support for unprocessed audio source
Add support to capture unprocessed audio.
Change-Id: Iffafe1769577e42973562d8f72157a756ee2adf7
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 8ce4ccb..b39b668 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -444,6 +444,11 @@
[SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS] = "quad-mic",
[SND_DEVICE_IN_THREE_MIC] = "three-mic",
[SND_DEVICE_IN_HANDSET_TMIC] = "three-mic",
+ [SND_DEVICE_IN_UNPROCESSED_MIC] = "unprocessed-mic",
+ [SND_DEVICE_IN_UNPROCESSED_STEREO_MIC] = "voice-rec-dmic-ef",
+ [SND_DEVICE_IN_UNPROCESSED_THREE_MIC] = "three-mic",
+ [SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = "quad-mic",
+ [SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = "headset-mic",
};
// Platform specific backend bit width table
@@ -557,6 +562,11 @@
[SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS] = 129,
[SND_DEVICE_IN_THREE_MIC] = 46, /* for APSS Surround Sound Recording */
[SND_DEVICE_IN_HANDSET_TMIC] = 125, /* for 3mic recording with fluence */
+ [SND_DEVICE_IN_UNPROCESSED_MIC] = 143,
+ [SND_DEVICE_IN_UNPROCESSED_STEREO_MIC] = 144,
+ [SND_DEVICE_IN_UNPROCESSED_THREE_MIC] = 145,
+ [SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = 146,
+ [SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = 147,
};
struct name_to_index {
@@ -672,6 +682,11 @@
{TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS)},
{TO_NAME_INDEX(SND_DEVICE_IN_THREE_MIC)},
{TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_TMIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_STEREO_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_THREE_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_QUAD_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC)},
};
static char * backend_tag_table[SND_DEVICE_MAX] = {0};
@@ -3138,6 +3153,24 @@
snd_device = SND_DEVICE_IN_VOICE_REC_MIC;
}
}
+ } else if (source == AUDIO_SOURCE_UNPROCESSED) {
+ if (in_device & AUDIO_DEVICE_IN_BUILTIN_MIC) {
+ if (((channel_mask == AUDIO_CHANNEL_IN_FRONT_BACK) ||
+ (channel_mask == AUDIO_CHANNEL_IN_STEREO)) &&
+ (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_STEREO_MIC;
+ } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+ (my_data->source_mic_type & SOURCE_THREE_MIC)) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_THREE_MIC;
+ } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+ (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_QUAD_MIC;
+ } else {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_MIC;
+ }
+ } else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC;
+ }
} else if ((source == AUDIO_SOURCE_VOICE_COMMUNICATION) ||
(mode == AUDIO_MODE_IN_COMMUNICATION)) {
if (out_device & AUDIO_DEVICE_OUT_SPEAKER)
diff --git a/hal/msm8916/platform.h b/hal/msm8916/platform.h
index 8f9a517..aef905d 100644
--- a/hal/msm8916/platform.h
+++ b/hal/msm8916/platform.h
@@ -186,6 +186,11 @@
SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS,
SND_DEVICE_IN_THREE_MIC,
SND_DEVICE_IN_HANDSET_TMIC,
+ SND_DEVICE_IN_UNPROCESSED_MIC,
+ SND_DEVICE_IN_UNPROCESSED_STEREO_MIC,
+ SND_DEVICE_IN_UNPROCESSED_THREE_MIC,
+ SND_DEVICE_IN_UNPROCESSED_QUAD_MIC,
+ SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC,
SND_DEVICE_IN_END,
SND_DEVICE_MAX = SND_DEVICE_IN_END,
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index daeacf8..fe7e1c1 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -436,6 +436,11 @@
[SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS] = "quad-mic",
[SND_DEVICE_IN_THREE_MIC] = "three-mic",
[SND_DEVICE_IN_HANDSET_TMIC] = "three-mic",
+ [SND_DEVICE_IN_UNPROCESSED_MIC] = "unprocessed-mic",
+ [SND_DEVICE_IN_UNPROCESSED_STEREO_MIC] = "voice-rec-dmic-ef",
+ [SND_DEVICE_IN_UNPROCESSED_THREE_MIC] = "three-mic",
+ [SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = "quad-mic",
+ [SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = "headset-mic",
};
// Platform specific backend bit width table
@@ -543,6 +548,11 @@
[SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS] = 129,
[SND_DEVICE_IN_THREE_MIC] = 46, /* for APSS Surround Sound Recording */
[SND_DEVICE_IN_HANDSET_TMIC] = 125, /* for 3mic recording with fluence */
+ [SND_DEVICE_IN_UNPROCESSED_MIC] = 143,
+ [SND_DEVICE_IN_UNPROCESSED_STEREO_MIC] = 144,
+ [SND_DEVICE_IN_UNPROCESSED_THREE_MIC] = 145,
+ [SND_DEVICE_IN_UNPROCESSED_QUAD_MIC] = 146,
+ [SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC] = 147,
};
struct name_to_index {
@@ -649,6 +659,11 @@
{TO_NAME_INDEX(SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS)},
{TO_NAME_INDEX(SND_DEVICE_IN_THREE_MIC)},
{TO_NAME_INDEX(SND_DEVICE_IN_HANDSET_TMIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_STEREO_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_THREE_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_QUAD_MIC)},
+ {TO_NAME_INDEX(SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC)},
};
static char * backend_tag_table[SND_DEVICE_MAX] = {0};
@@ -2887,6 +2902,24 @@
snd_device = SND_DEVICE_IN_VOICE_REC_MIC;
}
}
+ } else if (source == AUDIO_SOURCE_UNPROCESSED) {
+ if (in_device & AUDIO_DEVICE_IN_BUILTIN_MIC) {
+ if (((channel_mask == AUDIO_CHANNEL_IN_FRONT_BACK) ||
+ (channel_mask == AUDIO_CHANNEL_IN_STEREO)) &&
+ (my_data->source_mic_type & SOURCE_DUAL_MIC)) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_STEREO_MIC;
+ } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_3) &&
+ (my_data->source_mic_type & SOURCE_THREE_MIC)) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_THREE_MIC;
+ } else if (((int)channel_mask == AUDIO_CHANNEL_INDEX_MASK_4) &&
+ (my_data->source_mic_type & SOURCE_QUAD_MIC)) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_QUAD_MIC;
+ } else {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_MIC;
+ }
+ } else if (in_device & AUDIO_DEVICE_IN_WIRED_HEADSET) {
+ snd_device = SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC;
+ }
} else if (source == AUDIO_SOURCE_VOICE_COMMUNICATION) {
if (out_device & AUDIO_DEVICE_OUT_SPEAKER)
in_device = AUDIO_DEVICE_IN_BACK_MIC;
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 3cd4361..52f0bac 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -179,6 +179,11 @@
SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS,
SND_DEVICE_IN_THREE_MIC,
SND_DEVICE_IN_HANDSET_TMIC,
+ SND_DEVICE_IN_UNPROCESSED_MIC,
+ SND_DEVICE_IN_UNPROCESSED_STEREO_MIC,
+ SND_DEVICE_IN_UNPROCESSED_THREE_MIC,
+ SND_DEVICE_IN_UNPROCESSED_QUAD_MIC,
+ SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC,
SND_DEVICE_IN_END,
SND_DEVICE_MAX = SND_DEVICE_IN_END,