summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--libaudio/AudioHardware.cpp49
-rw-r--r--libaudio/AudioHardware.h12
-rw-r--r--libaudio/AudioPolicyManager.cpp28
-rw-r--r--libaudio/AudioPolicyManager.h1
4 files changed, 46 insertions, 44 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)
diff --git a/libaudio/AudioHardware.h b/libaudio/AudioHardware.h
index a2c47bd..37a9a6e 100644
--- a/libaudio/AudioHardware.h
+++ b/libaudio/AudioHardware.h
@@ -24,6 +24,7 @@
#include <utils/SortedVector.h>
#include <hardware_legacy/AudioHardwareBase.h>
+#include <media/mediarecorder.h>
#include "secril-client.h"
@@ -66,7 +67,6 @@ namespace android {
// Default audio input buffer size in bytes (8kHz mono)
#define AUDIO_HW_IN_PERIOD_BYTES ((AUDIO_HW_IN_PERIOD_SZ*sizeof(int16_t))/8)
-#define INPUT_SOURCE_KEY "Input Source"
class AudioHardware : public AudioHardwareBase
{
@@ -74,6 +74,12 @@ class AudioHardware : public AudioHardwareBase
class AudioStreamInALSA;
public:
+ // input path names used to translate from input sources to driver paths
+ static const char *inputPathNameDefault;
+ static const char *inputPathNameCamcorder;
+ static const char *inputPathNameVoiceRecognition;
+ static const char *inputPathNameVoiceCommunication;
+
AudioHardware();
virtual ~AudioHardware();
virtual status_t initCheck();
@@ -111,7 +117,7 @@ public:
status_t setIncallPath_l(uint32_t device);
- status_t setInputSource_l(String8 source);
+ status_t setInputSource_l(audio_source source);
static uint32_t getInputSampleRate(uint32_t sampleRate);
sp <AudioStreamInALSA> getActiveInput_l();
@@ -142,7 +148,7 @@ private:
uint32_t mMixerOpenCnt;
bool mInCallAudioMode;
- String8 mInputSource;
+ audio_source mInputSource;
bool mBluetoothNrec;
void* mSecRilLibHandle;
HRilClient mRilClient;
diff --git a/libaudio/AudioPolicyManager.cpp b/libaudio/AudioPolicyManager.cpp
index 93d70d8..c53d1e9 100644
--- a/libaudio/AudioPolicyManager.cpp
+++ b/libaudio/AudioPolicyManager.cpp
@@ -43,32 +43,4 @@ extern "C" void destroyAudioPolicyManager(AudioPolicyInterface *interface)
}
-status_t AudioPolicyManager::startInput(audio_io_handle_t input)
-{
- status_t status = AudioPolicyManagerBase::startInput(input);
-
- if (status == NO_ERROR) {
- AudioInputDescriptor *inputDesc = mInputs.valueFor(input);
- String8 key = String8("Input Source");
- String8 value;
- switch(inputDesc->mInputSource) {
- case AUDIO_SOURCE_VOICE_RECOGNITION:
- value = String8("Voice Recognition");
- break;
- case AUDIO_SOURCE_CAMCORDER:
- value = String8("Camcorder");
- break;
- case AUDIO_SOURCE_DEFAULT:
- case AUDIO_SOURCE_MIC:
- value = String8("Default");
- default:
- break;
- }
- AudioParameter param = AudioParameter();
- param.add(key, value);
- mpClientInterface->setParameters(input, param.toString());
- }
- return status;
-}
-
}; // namespace android
diff --git a/libaudio/AudioPolicyManager.h b/libaudio/AudioPolicyManager.h
index ae283db..03141e5 100644
--- a/libaudio/AudioPolicyManager.h
+++ b/libaudio/AudioPolicyManager.h
@@ -34,7 +34,6 @@ public:
virtual ~AudioPolicyManager() {}
- virtual status_t startInput(audio_io_handle_t input);
protected:
// true is current platform implements a back microphone
virtual bool hasBackMicrophone() const { return false; }