Loading services/audioflinger/AudioFlinger.cpp +37 −1 Original line number Diff line number Diff line Loading @@ -1141,7 +1141,7 @@ AudioFlinger::ThreadBase::ThreadBase(const sp<AudioFlinger>& audioFlinger, audio mChannelCount(0), mFrameSize(1), mFormat(AUDIO_FORMAT_INVALID), mParamStatus(NO_ERROR), mStandby(false), mDevice(device), mId(id), mStandby(false), mDevice(device), mAudioSource(AUDIO_SOURCE_DEFAULT), mId(id), // mName will be set by concrete (non-virtual) subclass mDeathRecipient(new PMDeathRecipient(this)) { Loading Loading @@ -6591,6 +6591,15 @@ bool AudioFlinger::RecordThread::checkForNewParameters_l() newDevice |= value; mDevice = newDevice; // since mDevice is read by other threads, only write to it once } if (param.getInt(String8(AudioParameter::keyInputSource), value) == NO_ERROR && mAudioSource != (audio_source_t)value) { // forward device change to effects that have requested to be // aware of attached audio device. for (size_t i = 0; i < mEffectChains.size(); i++) { mEffectChains[i]->setAudioSource_l((audio_source_t)value); } mAudioSource = (audio_source_t)value; } if (status == NO_ERROR) { status = mInput->stream->common.set_parameters(&mInput->stream->common, keyValuePair.string()); if (status == INVALID_OPERATION) { Loading Loading @@ -7737,6 +7746,7 @@ sp<AudioFlinger::EffectHandle> AudioFlinger::ThreadBase::createEffect_l( effect->setDevice(mDevice); effect->setMode(mAudioFlinger->getMode()); effect->setAudioSource(mAudioSource); } // create effect handle and connect it to effect module handle = new EffectHandle(effect, client, effectClient, priority); Loading Loading @@ -7814,6 +7824,7 @@ status_t AudioFlinger::ThreadBase::addEffect_l(const sp<EffectModule>& effect) effect->setDevice(mDevice); effect->setMode(mAudioFlinger->getMode()); effect->setAudioSource(mAudioSource); return NO_ERROR; } Loading Loading @@ -8712,6 +8723,22 @@ status_t AudioFlinger::EffectModule::setMode(audio_mode_t mode) return status; } status_t AudioFlinger::EffectModule::setAudioSource(audio_source_t source) { Mutex::Autolock _l(mLock); status_t status = NO_ERROR; if ((mDescriptor.flags & EFFECT_FLAG_AUDIO_SOURCE_MASK) == EFFECT_FLAG_AUDIO_SOURCE_IND) { uint32_t size = 0; status = (*mEffectInterface)->command(mEffectInterface, EFFECT_CMD_SET_AUDIO_SOURCE, sizeof(audio_source_t), &source, &size, NULL); } return status; } void AudioFlinger::EffectModule::setSuspended(bool suspended) { Mutex::Autolock _l(mLock); Loading Loading @@ -9387,6 +9414,15 @@ void AudioFlinger::EffectChain::setMode_l(audio_mode_t mode) } } // setAudioSource_l() must be called with PlaybackThread::mLock held void AudioFlinger::EffectChain::setAudioSource_l(audio_source_t source) { size_t size = mEffects.size(); for (size_t i = 0; i < size; i++) { mEffects[i]->setAudioSource(source); } } // setVolume_l() must be called with PlaybackThread::mLock held bool AudioFlinger::EffectChain::setVolume_l(uint32_t *left, uint32_t *right) { Loading services/audioflinger/AudioFlinger.h +3 −0 Original line number Diff line number Diff line Loading @@ -674,6 +674,7 @@ private: bool mStandby; // Whether thread is currently in standby. audio_devices_t mDevice; // output device for PlaybackThread // input + output devices for RecordThread audio_source_t mAudioSource; // (see audio.h, audio_source_t) const audio_io_handle_t mId; Vector< sp<EffectChain> > mEffectChains; Loading Loading @@ -1606,6 +1607,7 @@ private: status_t setDevice(audio_devices_t device); status_t setVolume(uint32_t *left, uint32_t *right, bool controller); status_t setMode(audio_mode_t mode); status_t setAudioSource(audio_source_t source); status_t start(); status_t stop(); void setSuspended(bool suspended); Loading Loading @@ -1768,6 +1770,7 @@ mutable Mutex mLock; // mutex for process, commands and handl bool setVolume_l(uint32_t *left, uint32_t *right); void setDevice_l(audio_devices_t device); void setMode_l(audio_mode_t mode); void setAudioSource_l(audio_source_t source); void setInBuffer(int16_t *buffer, bool ownsBuffer = false) { mInBuffer = buffer; Loading Loading
services/audioflinger/AudioFlinger.cpp +37 −1 Original line number Diff line number Diff line Loading @@ -1141,7 +1141,7 @@ AudioFlinger::ThreadBase::ThreadBase(const sp<AudioFlinger>& audioFlinger, audio mChannelCount(0), mFrameSize(1), mFormat(AUDIO_FORMAT_INVALID), mParamStatus(NO_ERROR), mStandby(false), mDevice(device), mId(id), mStandby(false), mDevice(device), mAudioSource(AUDIO_SOURCE_DEFAULT), mId(id), // mName will be set by concrete (non-virtual) subclass mDeathRecipient(new PMDeathRecipient(this)) { Loading Loading @@ -6591,6 +6591,15 @@ bool AudioFlinger::RecordThread::checkForNewParameters_l() newDevice |= value; mDevice = newDevice; // since mDevice is read by other threads, only write to it once } if (param.getInt(String8(AudioParameter::keyInputSource), value) == NO_ERROR && mAudioSource != (audio_source_t)value) { // forward device change to effects that have requested to be // aware of attached audio device. for (size_t i = 0; i < mEffectChains.size(); i++) { mEffectChains[i]->setAudioSource_l((audio_source_t)value); } mAudioSource = (audio_source_t)value; } if (status == NO_ERROR) { status = mInput->stream->common.set_parameters(&mInput->stream->common, keyValuePair.string()); if (status == INVALID_OPERATION) { Loading Loading @@ -7737,6 +7746,7 @@ sp<AudioFlinger::EffectHandle> AudioFlinger::ThreadBase::createEffect_l( effect->setDevice(mDevice); effect->setMode(mAudioFlinger->getMode()); effect->setAudioSource(mAudioSource); } // create effect handle and connect it to effect module handle = new EffectHandle(effect, client, effectClient, priority); Loading Loading @@ -7814,6 +7824,7 @@ status_t AudioFlinger::ThreadBase::addEffect_l(const sp<EffectModule>& effect) effect->setDevice(mDevice); effect->setMode(mAudioFlinger->getMode()); effect->setAudioSource(mAudioSource); return NO_ERROR; } Loading Loading @@ -8712,6 +8723,22 @@ status_t AudioFlinger::EffectModule::setMode(audio_mode_t mode) return status; } status_t AudioFlinger::EffectModule::setAudioSource(audio_source_t source) { Mutex::Autolock _l(mLock); status_t status = NO_ERROR; if ((mDescriptor.flags & EFFECT_FLAG_AUDIO_SOURCE_MASK) == EFFECT_FLAG_AUDIO_SOURCE_IND) { uint32_t size = 0; status = (*mEffectInterface)->command(mEffectInterface, EFFECT_CMD_SET_AUDIO_SOURCE, sizeof(audio_source_t), &source, &size, NULL); } return status; } void AudioFlinger::EffectModule::setSuspended(bool suspended) { Mutex::Autolock _l(mLock); Loading Loading @@ -9387,6 +9414,15 @@ void AudioFlinger::EffectChain::setMode_l(audio_mode_t mode) } } // setAudioSource_l() must be called with PlaybackThread::mLock held void AudioFlinger::EffectChain::setAudioSource_l(audio_source_t source) { size_t size = mEffects.size(); for (size_t i = 0; i < size; i++) { mEffects[i]->setAudioSource(source); } } // setVolume_l() must be called with PlaybackThread::mLock held bool AudioFlinger::EffectChain::setVolume_l(uint32_t *left, uint32_t *right) { Loading
services/audioflinger/AudioFlinger.h +3 −0 Original line number Diff line number Diff line Loading @@ -674,6 +674,7 @@ private: bool mStandby; // Whether thread is currently in standby. audio_devices_t mDevice; // output device for PlaybackThread // input + output devices for RecordThread audio_source_t mAudioSource; // (see audio.h, audio_source_t) const audio_io_handle_t mId; Vector< sp<EffectChain> > mEffectChains; Loading Loading @@ -1606,6 +1607,7 @@ private: status_t setDevice(audio_devices_t device); status_t setVolume(uint32_t *left, uint32_t *right, bool controller); status_t setMode(audio_mode_t mode); status_t setAudioSource(audio_source_t source); status_t start(); status_t stop(); void setSuspended(bool suspended); Loading Loading @@ -1768,6 +1770,7 @@ mutable Mutex mLock; // mutex for process, commands and handl bool setVolume_l(uint32_t *left, uint32_t *right); void setDevice_l(audio_devices_t device); void setMode_l(audio_mode_t mode); void setAudioSource_l(audio_source_t source); void setInBuffer(int16_t *buffer, bool ownsBuffer = false) { mInBuffer = buffer; Loading