summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorMichael Webster <miketwebster@gmail.com>2010-10-29 05:10:04 -0400
committerSteve Kondik <shade@chemlab.org>2010-11-03 19:25:36 -0400
commitc5358c4b94c2953290988be654b284840551b5bd (patch)
tree2a1fbdcdabdcac247c292be69c42a92ab33815b9 /libs
parentdc4b5a6e11d50898c06e650a99517e9406b56035 (diff)
downloadframeworks_base-c5358c4b94c2953290988be654b284840551b5bd.zip
frameworks_base-c5358c4b94c2953290988be654b284840551b5bd.tar.gz
frameworks_base-c5358c4b94c2953290988be654b284840551b5bd.tar.bz2
audio: Omit FM code when HAVE_FM_RADIO is not set
Change-Id: If140f0cd1232f927f4870c5de3f25deac73c3778
Diffstat (limited to 'libs')
-rw-r--r--libs/audioflinger/A2dpAudioInterface.cpp2
-rw-r--r--libs/audioflinger/A2dpAudioInterface.h4
-rw-r--r--libs/audioflinger/Android.mk12
-rw-r--r--libs/audioflinger/AudioDumpInterface.h7
-rw-r--r--libs/audioflinger/AudioFlinger.cpp16
-rw-r--r--libs/audioflinger/AudioFlinger.h14
-rw-r--r--libs/audioflinger/AudioHardwareGeneric.cpp2
-rw-r--r--libs/audioflinger/AudioHardwareGeneric.h2
-rw-r--r--libs/audioflinger/AudioHardwareStub.cpp2
-rw-r--r--libs/audioflinger/AudioHardwareStub.h2
-rw-r--r--libs/audioflinger/AudioPolicyManagerBase.cpp24
-rw-r--r--libs/audioflinger/AudioPolicyService.cpp9
-rw-r--r--libs/audioflinger/AudioPolicyService.h13
13 files changed, 96 insertions, 13 deletions
diff --git a/libs/audioflinger/A2dpAudioInterface.cpp b/libs/audioflinger/A2dpAudioInterface.cpp
index e87927f..e55a94c 100644
--- a/libs/audioflinger/A2dpAudioInterface.cpp
+++ b/libs/audioflinger/A2dpAudioInterface.cpp
@@ -205,10 +205,12 @@ status_t A2dpAudioInterface::setVoiceVolume(float v)
return mHardwareInterface->setVoiceVolume(v);
}
+#ifdef HAVE_FM_RADIO
status_t A2dpAudioInterface::setFmVolume(float v)
{
return mHardwareInterface->setFmVolume(v);
}
+#endif
status_t A2dpAudioInterface::setMasterVolume(float v)
{
diff --git a/libs/audioflinger/A2dpAudioInterface.h b/libs/audioflinger/A2dpAudioInterface.h
index 7084ac9..65f4875 100644
--- a/libs/audioflinger/A2dpAudioInterface.h
+++ b/libs/audioflinger/A2dpAudioInterface.h
@@ -37,7 +37,6 @@ public:
virtual status_t initCheck();
virtual status_t setVoiceVolume(float volume);
- virtual status_t setFmVolume(float volume);
virtual status_t setMasterVolume(float volume);
virtual status_t setMode(int mode);
@@ -68,6 +67,9 @@ public:
status_t *status,
AudioSystem::audio_in_acoustics acoustics);
virtual void closeInputStream(AudioStreamIn* in);
+#ifdef HAVE_FM_RADIO
+ virtual status_t setFmVolume(float volume);
+#endif
// static AudioHardwareInterface* createA2dpInterface();
protected:
diff --git a/libs/audioflinger/Android.mk b/libs/audioflinger/Android.mk
index 653e3df..33384b7 100644
--- a/libs/audioflinger/Android.mk
+++ b/libs/audioflinger/Android.mk
@@ -32,6 +32,10 @@ ifeq ($(strip $(BOARD_USES_GENERIC_AUDIO)),true)
LOCAL_CFLAGS += -DGENERIC_AUDIO
endif
+ifeq ($(BOARD_HAVE_FM_RADIO),true)
+ LOCAL_CFLAGS += -DHAVE_FM_RADIO
+endif
+
LOCAL_MODULE:= libaudiointerface
ifeq ($(BOARD_HAVE_BLUETOOTH),true)
@@ -66,6 +70,10 @@ ifeq ($(BOARD_HAVE_BLUETOOTH),true)
LOCAL_CFLAGS += -DWITH_A2DP
endif
+ifeq ($(BOARD_HAVE_FM_RADIO),true)
+ LOCAL_CFLAGS += -DHAVE_FM_RADIO
+endif
+
ifeq ($(AUDIO_POLICY_TEST),true)
LOCAL_CFLAGS += -DAUDIO_POLICY_TEST
endif
@@ -118,6 +126,10 @@ ifeq ($(AUDIO_POLICY_TEST),true)
LOCAL_CFLAGS += -DAUDIO_POLICY_TEST
endif
+ifeq ($(BOARD_HAVE_FM_RADIO),true)
+ LOCAL_CFLAGS += -DHAVE_FM_RADIO
+endif
+
ifeq ($(TARGET_SIMULATOR),true)
ifeq ($(HOST_OS),linux)
LOCAL_LDLIBS += -lrt -lpthread
diff --git a/libs/audioflinger/AudioDumpInterface.h b/libs/audioflinger/AudioDumpInterface.h
index 3ed1503..8059177 100644
--- a/libs/audioflinger/AudioDumpInterface.h
+++ b/libs/audioflinger/AudioDumpInterface.h
@@ -131,8 +131,6 @@ public:
{return mFinalInterface->initCheck();}
virtual status_t setVoiceVolume(float volume)
{return mFinalInterface->setVoiceVolume(volume);}
- virtual status_t setFmVolume(float volume)
- {return mFinalInterface->setFmVolume(volume);}
virtual status_t setMasterVolume(float volume)
{return mFinalInterface->setMasterVolume(volume);}
@@ -150,7 +148,10 @@ public:
virtual void closeInputStream(AudioStreamIn* in);
virtual status_t dump(int fd, const Vector<String16>& args) { return mFinalInterface->dumpState(fd, args); }
-
+#ifdef HAVE_FM_RADIO
+ virtual status_t setFmVolume(float volume)
+ {return mFinalInterface->setFmVolume(volume);}
+#endif
String8 fileName() const { return mFileName; }
protected:
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 04197c1..68f92c0 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -120,10 +120,16 @@ static bool settingsAllowed() {
}
// ----------------------------------------------------------------------------
-
+#ifdef HAVE_FM_RADIO
AudioFlinger::AudioFlinger()
: BnAudioFlinger(),
mAudioHardware(0), mMasterVolume(1.0f), mMasterMute(false), mNextThreadId(0), mFmOn(false)
+#endif
+#ifndef HAVE_FM_RADIO
+AudioFlinger::AudioFlinger()
+ : BnAudioFlinger(),
+ mAudioHardware(0), mMasterVolume(1.0f), mMasterMute(false), mNextThreadId(0)
+#endif
{
mHardwareStatus = AUDIO_HW_IDLE;
@@ -568,9 +574,11 @@ bool AudioFlinger::isStreamActive(int stream) const
return true;
}
}
+#ifdef HAVE_FM_RADIO
if (mFmOn && stream == AudioSystem::MUSIC) {
return true;
}
+#endif
return false;
}
@@ -605,7 +613,7 @@ status_t AudioFlinger::setParameters(int ioHandle, const String8& keyValuePairs)
}
}
#endif
-
+#ifdef HAVE_FM_RADIO
AudioParameter param = AudioParameter(keyValuePairs);
String8 key = String8(AudioParameter::keyRouting);
int device;
@@ -628,7 +636,7 @@ status_t AudioFlinger::setParameters(int ioHandle, const String8& keyValuePairs)
// Call hardware to switch FM on/off
mAudioHardware->setParameters(keyValuePairs);
}
-
+#endif
// ioHandle == 0 means the parameters are global to the audio hardware interface
if (ioHandle == 0) {
/* Set global DSP parameters, if any. */
@@ -738,6 +746,7 @@ status_t AudioFlinger::getRenderPosition(uint32_t *halFrames, uint32_t *dspFrame
return BAD_VALUE;
}
+#ifdef HAVE_FM_RADIO
status_t AudioFlinger::setFmVolume(float value)
{
// check calling permissions
@@ -752,6 +761,7 @@ status_t AudioFlinger::setFmVolume(float value)
return ret;
}
+#endif
void AudioFlinger::registerClient(const sp<IAudioFlingerClient>& client)
{
diff --git a/libs/audioflinger/AudioFlinger.h b/libs/audioflinger/AudioFlinger.h
index 6fc465b..717d6f4 100644
--- a/libs/audioflinger/AudioFlinger.h
+++ b/libs/audioflinger/AudioFlinger.h
@@ -144,8 +144,10 @@ public:
virtual status_t setVoiceVolume(float volume);
virtual status_t getRenderPosition(uint32_t *halFrames, uint32_t *dspFrames, int output);
-
+
+#ifdef HAVE_FM_RADIO
virtual status_t setFmVolume(float volume);
+#endif
// IBinder::DeathRecipient
virtual void binderDied(const wp<IBinder>& who);
@@ -166,8 +168,13 @@ public:
AUDIO_HW_GET_MIC_MUTE,
AUDIO_HW_SET_MIC_MUTE,
AUDIO_SET_VOICE_VOLUME,
+#ifndef HAVE_FM_RADIO
+ AUDIO_SET_PARAMETER
+#endif
+#ifdef HAVE_FM_RADIO
AUDIO_SET_PARAMETER,
AUDIO_SET_FM_VOLUME
+#endif
};
// record interface
@@ -803,13 +810,14 @@ private:
PlaybackThread::stream_type_t mStreamTypes[AudioSystem::NUM_STREAM_TYPES];
float mMasterVolume;
bool mMasterMute;
- bool mFmOn;
DefaultKeyedVector< int, sp<RecordThread> > mRecordThreads;
SortedVector< sp<IBinder> > mNotificationClients;
int mNextThreadId;
-
+#ifdef HAVE_FM_RADIO
+ bool mFmOn;
+#endif
AudioDSP mDsp;
};
diff --git a/libs/audioflinger/AudioHardwareGeneric.cpp b/libs/audioflinger/AudioHardwareGeneric.cpp
index 446994d..64d2bc5 100644
--- a/libs/audioflinger/AudioHardwareGeneric.cpp
+++ b/libs/audioflinger/AudioHardwareGeneric.cpp
@@ -142,11 +142,13 @@ status_t AudioHardwareGeneric::setVoiceVolume(float v)
return NO_ERROR;
}
+#ifdef HAVE_FM_RADIO
status_t AudioHardwareGeneric::setFmVolume(float v)
{
// Implement: set fm volume
return NO_ERROR;
}
+#endif
status_t AudioHardwareGeneric::setMasterVolume(float v)
{
diff --git a/libs/audioflinger/AudioHardwareGeneric.h b/libs/audioflinger/AudioHardwareGeneric.h
index ef288b0..8b3e123 100644
--- a/libs/audioflinger/AudioHardwareGeneric.h
+++ b/libs/audioflinger/AudioHardwareGeneric.h
@@ -105,7 +105,9 @@ public:
virtual ~AudioHardwareGeneric();
virtual status_t initCheck();
virtual status_t setVoiceVolume(float volume);
+#ifdef HAVE_FM_RADIO
virtual status_t setFmVolume(float volume);
+#endif
virtual status_t setMasterVolume(float volume);
// mic mute
diff --git a/libs/audioflinger/AudioHardwareStub.cpp b/libs/audioflinger/AudioHardwareStub.cpp
index 0bcef00..9460259 100644
--- a/libs/audioflinger/AudioHardwareStub.cpp
+++ b/libs/audioflinger/AudioHardwareStub.cpp
@@ -91,10 +91,12 @@ status_t AudioHardwareStub::setVoiceVolume(float volume)
return NO_ERROR;
}
+#ifdef HAVE_FM_RADIO
status_t AudioHardwareStub::setFmVolume(float volume)
{
return NO_ERROR;
}
+#endif
status_t AudioHardwareStub::setMasterVolume(float volume)
{
diff --git a/libs/audioflinger/AudioHardwareStub.h b/libs/audioflinger/AudioHardwareStub.h
index 6b947d5..8b2503c 100644
--- a/libs/audioflinger/AudioHardwareStub.h
+++ b/libs/audioflinger/AudioHardwareStub.h
@@ -67,7 +67,9 @@ public:
virtual ~AudioHardwareStub();
virtual status_t initCheck();
virtual status_t setVoiceVolume(float volume);
+#ifdef HAVE_FM_RADIO
virtual status_t setFmVolume(float volume);
+#endif
virtual status_t setMasterVolume(float volume);
// mic mute
diff --git a/libs/audioflinger/AudioPolicyManagerBase.cpp b/libs/audioflinger/AudioPolicyManagerBase.cpp
index b943546..34f3fa3 100644
--- a/libs/audioflinger/AudioPolicyManagerBase.cpp
+++ b/libs/audioflinger/AudioPolicyManagerBase.cpp
@@ -91,6 +91,7 @@ status_t AudioPolicyManagerBase::setDeviceConnectionState(AudioSystem::audio_dev
#endif
}
}
+#ifdef HAVE_FM_RADIO
if (AudioSystem::isFmDevice(device)) {
AudioOutputDescriptor *hwOutputDesc = mOutputs.valueFor(mHardwareOutput);
hwOutputDesc->mRefCount[AudioSystem::FM] = 1;
@@ -99,6 +100,7 @@ status_t AudioPolicyManagerBase::setDeviceConnectionState(AudioSystem::audio_dev
mpClientInterface->setParameters(mHardwareOutput, param.toString());
}
break;
+#endif
// handle output device disconnection
case AudioSystem::DEVICE_STATE_UNAVAILABLE: {
if (!(mAvailableOutputDevices & device)) {
@@ -131,6 +133,7 @@ status_t AudioPolicyManagerBase::setDeviceConnectionState(AudioSystem::audio_dev
#endif
}
}
+#ifdef HAVE_FM_RADIO
if (AudioSystem::isFmDevice(device)) {
AudioOutputDescriptor *hwOutputDesc = mOutputs.valueFor(mHardwareOutput);
hwOutputDesc->mRefCount[AudioSystem::FM] = 0;
@@ -138,6 +141,7 @@ status_t AudioPolicyManagerBase::setDeviceConnectionState(AudioSystem::audio_dev
param.addInt(String8(AudioParameter::keyFmOff), mAvailableOutputDevices);
mpClientInterface->setParameters(mHardwareOutput, param.toString());
}
+#endif
} break;
default:
@@ -370,9 +374,15 @@ void AudioPolicyManagerBase::setForceUse(AudioSystem::force_use usage, AudioSyst
mForceUse[usage] = config;
break;
case AudioSystem::FOR_MEDIA:
+#ifdef HAVE_FM_RADIO
if (config != AudioSystem::FORCE_HEADPHONES && config != AudioSystem::FORCE_BT_A2DP &&
config != AudioSystem::FORCE_WIRED_ACCESSORY && config != AudioSystem::FORCE_SPEAKER &&
config != AudioSystem::FORCE_NONE) {
+#endif
+#ifndef HAVE_FM_RADIO
+ if (config != AudioSystem::FORCE_HEADPHONES && config != AudioSystem::FORCE_BT_A2DP &&
+ config != AudioSystem::FORCE_WIRED_ACCESSORY && config != AudioSystem::FORCE_NONE) {
+#endif
LOGW("setForceUse() invalid config %d for FOR_MEDIA", config);
return;
}
@@ -1434,7 +1444,9 @@ AudioPolicyManagerBase::routing_strategy AudioPolicyManagerBase::getStrategy(Aud
// while key clicks are played produces a poor result
case AudioSystem::TTS:
case AudioSystem::MUSIC:
+#ifdef HAVE_FM_RADIO
case AudioSystem::FM:
+#endif
return STRATEGY_MEDIA;
}
}
@@ -1534,6 +1546,7 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,
// FALL THROUGH
case STRATEGY_MEDIA: {
+#ifdef HAVE_FM_RADIO
uint32_t device2 = 0;
if (mForceUse[AudioSystem::FOR_MEDIA] == AudioSystem::FORCE_SPEAKER) {
device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER;
@@ -1541,6 +1554,10 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,
if (device2 == 0) {
device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
}
+#endif
+#ifndef HAVE_FM_RADIO
+ uint32_t device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
+#endif
if (device2 == 0) {
device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADPHONE;
}
@@ -1813,7 +1830,12 @@ status_t AudioPolicyManagerBase::checkAndSetVolume(int stream, int index, audio_
float volume = computeVolume(stream, index, output, device);
// do not set volume if the float value did not change
+#ifdef HAVE_FM_RADIO
if (volume != mOutputs.valueFor(output)->mCurVolume[stream] || (stream == AudioSystem::FM) || force) {
+#endif
+#ifndef HAVE_FM_RADIO
+ if (volume != mOutputs.valueFor(output)->mCurVolume[stream] || force) {
+#endif
mOutputs.valueFor(output)->mCurVolume[stream] = volume;
LOGV("setStreamVolume() for output %d stream %d, volume %f, delay %d", output, stream, volume, delayMs);
if (stream == AudioSystem::VOICE_CALL ||
@@ -1831,6 +1853,7 @@ status_t AudioPolicyManagerBase::checkAndSetVolume(int stream, int index, audio_
if (voiceVolume >= 0 && output == mHardwareOutput) {
mpClientInterface->setVoiceVolume(voiceVolume, delayMs);
}
+#ifdef HAVE_FM_RADIO
} else if (stream == AudioSystem::FM) {
float fmVolume = -1.0;
fmVolume = computeVolume(stream, index, output, device);
@@ -1838,6 +1861,7 @@ status_t AudioPolicyManagerBase::checkAndSetVolume(int stream, int index, audio_
mpClientInterface->setFmVolume(fmVolume, delayMs);
}
return NO_ERROR;
+#endif
}
mpClientInterface->setStreamVolume((AudioSystem::stream_type)stream, volume, output, delayMs);
diff --git a/libs/audioflinger/AudioPolicyService.cpp b/libs/audioflinger/AudioPolicyService.cpp
index ad50a6c..aa2aecf 100644
--- a/libs/audioflinger/AudioPolicyService.cpp
+++ b/libs/audioflinger/AudioPolicyService.cpp
@@ -556,10 +556,12 @@ status_t AudioPolicyService::setVoiceVolume(float volume, int delayMs)
return mAudioCommandThread->voiceVolumeCommand(volume, delayMs);
}
+#ifdef HAVE_FM_RADIO
status_t AudioPolicyService::setFmVolume(float volume, int delayMs)
{
return mAudioCommandThread->fmVolumeCommand(volume, delayMs);
}
+#endif
// ----------- AudioPolicyService::AudioCommandThread implementation ----------
@@ -656,6 +658,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
}
delete data;
}break;
+#ifdef HAVE_FM_RADIO
case SET_FM_VOLUME: {
FmVolumeData *data = (FmVolumeData *)command->mParam;
LOGV("AudioCommandThread() processing set fm volume volume %f", data->mVolume);
@@ -666,6 +669,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
}
delete data;
}break;
+#endif
default:
LOGW("AudioCommandThread() unknown command %d", command->mCommand);
}
@@ -830,6 +834,7 @@ status_t AudioPolicyService::AudioCommandThread::voiceVolumeCommand(float volume
return status;
}
+#ifdef HAVE_FM_RADIO
status_t AudioPolicyService::AudioCommandThread::fmVolumeCommand(float volume, int delayMs)
{
status_t status = NO_ERROR;
@@ -855,7 +860,7 @@ status_t AudioPolicyService::AudioCommandThread::fmVolumeCommand(float volume, i
}
return status;
}
-
+#endif
// insertCommand_l() must be called with mLock held
void AudioPolicyService::AudioCommandThread::insertCommand_l(AudioCommand *command, int delayMs)
@@ -917,9 +922,11 @@ void AudioPolicyService::AudioCommandThread::insertCommand_l(AudioCommand *comma
LOGV("Filtering out volume command on output %d for stream %d", data->mIO, data->mStream);
removedCommands.add(command2);
} break;
+#ifdef HAVE_FM_RADIO
case SET_FM_VOLUME: {
removedCommands.add(command2);
} break;
+#endif
case START_TONE:
case STOP_TONE:
default:
diff --git a/libs/audioflinger/AudioPolicyService.h b/libs/audioflinger/AudioPolicyService.h
index 26454be..53e4dba 100644
--- a/libs/audioflinger/AudioPolicyService.h
+++ b/libs/audioflinger/AudioPolicyService.h
@@ -106,7 +106,9 @@ public:
virtual status_t startTone(ToneGenerator::tone_type tone, AudioSystem::stream_type stream);
virtual status_t stopTone();
virtual status_t setVoiceVolume(float volume, int delayMs = 0);
+#ifdef HAVE_FM_RADIO
virtual status_t setFmVolume(float volume, int delayMs = 0);
+#endif
private:
AudioPolicyService();
@@ -130,8 +132,13 @@ private:
STOP_TONE,
SET_VOLUME,
SET_PARAMETERS,
+#ifndef HAVE_FM_RADIO
+ SET_VOICE_VOLUME
+#endif
+#ifdef HAVE_FM_RADIO
SET_VOICE_VOLUME,
SET_FM_VOLUME
+#endif
};
AudioCommandThread (String8 name);
@@ -149,7 +156,9 @@ private:
status_t volumeCommand(int stream, float volume, int output, int delayMs = 0);
status_t parametersCommand(int ioHandle, const String8& keyValuePairs, int delayMs = 0);
status_t voiceVolumeCommand(float volume, int delayMs = 0);
+#ifdef HAVE_FM_RADIO
status_t fmVolumeCommand(float volume, int delayMs = 0);
+#endif
void insertCommand_l(AudioCommand *command, int delayMs = 0);
private:
@@ -193,12 +202,12 @@ private:
public:
float mVolume;
};
-
+#ifdef HAVE_FM_RADIO
class FmVolumeData {
public:
float mVolume;
};
-
+#endif
Mutex mLock;
Condition mWaitWorkCV;
Vector <AudioCommand *> mAudioCommands; // list of pending commands