diff options
author | Michael Webster <miketwebster@gmail.com> | 2010-10-29 05:10:04 -0400 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2010-11-03 19:25:36 -0400 |
commit | c5358c4b94c2953290988be654b284840551b5bd (patch) | |
tree | 2a1fbdcdabdcac247c292be69c42a92ab33815b9 /libs | |
parent | dc4b5a6e11d50898c06e650a99517e9406b56035 (diff) | |
download | frameworks_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.cpp | 2 | ||||
-rw-r--r-- | libs/audioflinger/A2dpAudioInterface.h | 4 | ||||
-rw-r--r-- | libs/audioflinger/Android.mk | 12 | ||||
-rw-r--r-- | libs/audioflinger/AudioDumpInterface.h | 7 | ||||
-rw-r--r-- | libs/audioflinger/AudioFlinger.cpp | 16 | ||||
-rw-r--r-- | libs/audioflinger/AudioFlinger.h | 14 | ||||
-rw-r--r-- | libs/audioflinger/AudioHardwareGeneric.cpp | 2 | ||||
-rw-r--r-- | libs/audioflinger/AudioHardwareGeneric.h | 2 | ||||
-rw-r--r-- | libs/audioflinger/AudioHardwareStub.cpp | 2 | ||||
-rw-r--r-- | libs/audioflinger/AudioHardwareStub.h | 2 | ||||
-rw-r--r-- | libs/audioflinger/AudioPolicyManagerBase.cpp | 24 | ||||
-rw-r--r-- | libs/audioflinger/AudioPolicyService.cpp | 9 | ||||
-rw-r--r-- | libs/audioflinger/AudioPolicyService.h | 13 |
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 |