summaryrefslogtreecommitdiffstats
path: root/libaudio/AudioHardware.cpp
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2011-01-19 17:03:03 -0800
committerJean-Michel Trivi <jmtrivi@google.com>2011-01-21 10:13:36 -0800
commit68f70e749e9ea619a38096a938504b21d9e1fb9b (patch)
tree1000cbd1dc745d3a5b8d3a7306e0fe185b9b111b /libaudio/AudioHardware.cpp
parent27cc0c7879c062a7a27c2479f45e974b20c1522c (diff)
downloaddevice_samsung_crespo-68f70e749e9ea619a38096a938504b21d9e1fb9b.zip
device_samsung_crespo-68f70e749e9ea619a38096a938504b21d9e1fb9b.tar.gz
device_samsung_crespo-68f70e749e9ea619a38096a938504b21d9e1fb9b.tar.bz2
do not merge bug 3370834 Cherrypick from master CL 79417
Rely on the audio input source parameter for mixer configuration. The generic APM implementation now passes the audio recording source as a configuration parameter, and uses the enum defined in mediarecorder.h. But the driver uses a string to define the "input source state". This change maps the input source to the string used by the driver. Change-Id: I5fce44579a3cda01ed73f67fb8c3091ef05cce76
Diffstat (limited to 'libaudio/AudioHardware.cpp')
-rw-r--r--libaudio/AudioHardware.cpp49
1 files changed, 37 insertions, 12 deletions
diff --git a/libaudio/AudioHardware.cpp b/libaudio/AudioHardware.cpp
index 585bb71..b6ec8ab 100644
--- a/libaudio/AudioHardware.cpp
+++ b/libaudio/AudioHardware.cpp
@@ -73,6 +73,11 @@ enum {
// ----------------------------------------------------------------------------
+const char *AudioHardware::inputPathNameDefault = "Default";
+const char *AudioHardware::inputPathNameCamcorder = "Camcorder";
+const char *AudioHardware::inputPathNameVoiceRecognition = "Voice Recognition";
+const char *AudioHardware::inputPathNameVoiceCommunication = "Voice Communication";
+
AudioHardware::AudioHardware() :
mInit(false),
mMicMute(false),
@@ -81,7 +86,7 @@ AudioHardware::AudioHardware() :
mPcmOpenCnt(0),
mMixerOpenCnt(0),
mInCallAudioMode(false),
- mInputSource("Default"),
+ mInputSource(AUDIO_SOURCE_DEFAULT),
mBluetoothNrec(true),
mSecRilLibHandle(NULL),
mRilClient(0),
@@ -377,7 +382,7 @@ status_t AudioHardware::setMode(int mode)
LOGV("setMode() openPcmOut_l()");
openPcmOut_l();
openMixer_l();
- setInputSource_l(String8("Default"));
+ setInputSource_l(AUDIO_SOURCE_DEFAULT);
mInCallAudioMode = true;
}
if (mMode == AudioSystem::MODE_NORMAL && mInCallAudioMode) {
@@ -609,7 +614,7 @@ status_t AudioHardware::dump(int fd, const Vector<String16>& args)
snprintf(buffer, SIZE, "\tIn Call Audio Mode %s\n",
(mInCallAudioMode) ? "ON" : "OFF");
result.append(buffer);
- snprintf(buffer, SIZE, "\tInput source %s\n", mInputSource.string());
+ snprintf(buffer, SIZE, "\tInput source %d\n", mInputSource);
result.append(buffer);
snprintf(buffer, SIZE, "\tmSecRilLibHandle: %p\n", mSecRilLibHandle);
result.append(buffer);
@@ -885,11 +890,11 @@ sp <AudioHardware::AudioStreamInALSA> AudioHardware::getActiveInput_l()
return spIn;
}
-status_t AudioHardware::setInputSource_l(String8 source)
+status_t AudioHardware::setInputSource_l(audio_source source)
{
- LOGV("setInputSource_l(%s)", source.string());
+ LOGV("setInputSource_l(%d)", source);
if (source != mInputSource) {
- if ((source == "Default") || (mMode != AudioSystem::MODE_IN_CALL)) {
+ if ((source == AUDIO_SOURCE_DEFAULT) || (mMode != AudioSystem::MODE_IN_CALL)) {
if (mMixer) {
TRACE_DRIVER_IN(DRV_MIXER_GET)
struct mixer_ctl *ctl= mixer_get_control(mMixer, "Input Source", 0);
@@ -897,9 +902,30 @@ status_t AudioHardware::setInputSource_l(String8 source)
if (ctl == NULL) {
return NO_INIT;
}
- LOGV("mixer_ctl_select, Input Source, (%s)", source.string());
+ const char* sourceName;
+ switch (source) {
+ case AUDIO_SOURCE_DEFAULT: // intended fall-through
+ case AUDIO_SOURCE_MIC:
+ sourceName = inputPathNameDefault;
+ break;
+ case AUDIO_SOURCE_VOICE_COMMUNICATION:
+ sourceName = inputPathNameVoiceCommunication;
+ break;
+ case AUDIO_SOURCE_CAMCORDER:
+ sourceName = inputPathNameCamcorder;
+ break;
+ case AUDIO_SOURCE_VOICE_RECOGNITION:
+ sourceName = inputPathNameVoiceRecognition;
+ break;
+ case AUDIO_SOURCE_VOICE_UPLINK: // intended fall-through
+ case AUDIO_SOURCE_VOICE_DOWNLINK: // intended fall-through
+ case AUDIO_SOURCE_VOICE_CALL: // intended fall-through
+ default:
+ return NO_INIT;
+ }
+ LOGV("mixer_ctl_select, Input Source, (%s)", sourceName);
TRACE_DRIVER_IN(DRV_MIXER_SEL)
- mixer_ctl_select(ctl, source.string());
+ mixer_ctl_select(ctl, sourceName);
TRACE_DRIVER_OUT
}
}
@@ -1547,7 +1573,6 @@ status_t AudioHardware::AudioStreamInALSA::setParameters(const String8& keyValue
AudioParameter param = AudioParameter(keyValuePairs);
status_t status = NO_ERROR;
int value;
- String8 source;
LOGD("AudioStreamInALSA::setParameters() %s", keyValuePairs.string());
@@ -1556,14 +1581,14 @@ status_t AudioHardware::AudioStreamInALSA::setParameters(const String8& keyValue
{
AutoMutex lock(mLock);
- if (param.get(String8(INPUT_SOURCE_KEY), source) == NO_ERROR) {
+ if (param.getInt(String8(AudioParameter::keyInputSource), value) == NO_ERROR) {
AutoMutex hwLock(mHardware->lock());
mHardware->openMixer_l();
- mHardware->setInputSource_l(source);
+ mHardware->setInputSource_l((audio_source)value);
mHardware->closeMixer_l();
- param.remove(String8(INPUT_SOURCE_KEY));
+ param.remove(String8(AudioParameter::keyInputSource));
}
if (param.getInt(String8(AudioParameter::keyRouting), value) == NO_ERROR)