Merge "AudioFlinger: mute mic on primary HAL only" into rvc-dev

gugelfrei
TreeHugger Robot 4 years ago committed by Android (Google) Code Review
commit a73e0d674d

@ -1185,15 +1185,21 @@ status_t AudioFlinger::setMicMute(bool state)
}
AutoMutex lock(mHardwareLock);
sp<DeviceHalInterface> primaryDev = mPrimaryHardwareDev->hwDevice();
if (primaryDev == nullptr) {
ALOGW("%s: no primary HAL device", __func__);
return INVALID_OPERATION;
}
mHardwareStatus = AUDIO_HW_SET_MIC_MUTE;
ret = primaryDev->setMicMute(state);
for (size_t i = 0; i < mAudioHwDevs.size(); i++) {
sp<DeviceHalInterface> dev = mAudioHwDevs.valueAt(i)->hwDevice();
status_t result = dev->setMicMute(state);
if (result != NO_ERROR) {
ret = result;
if (dev != primaryDev) {
(void)dev->setMicMute(state);
}
}
mHardwareStatus = AUDIO_HW_IDLE;
ALOGW_IF(ret != NO_ERROR, "%s: error %d setting state to HAL", __func__, ret);
return ret;
}
@ -1203,20 +1209,18 @@ bool AudioFlinger::getMicMute() const
if (ret != NO_ERROR) {
return false;
}
bool mute = true;
bool state = AUDIO_MODE_INVALID;
AutoMutex lock(mHardwareLock);
mHardwareStatus = AUDIO_HW_GET_MIC_MUTE;
for (size_t i = 0; i < mAudioHwDevs.size(); i++) {
sp<DeviceHalInterface> dev = mAudioHwDevs.valueAt(i)->hwDevice();
status_t result = dev->getMicMute(&state);
if (result == NO_ERROR) {
mute = mute && state;
}
sp<DeviceHalInterface> primaryDev = mPrimaryHardwareDev->hwDevice();
if (primaryDev == nullptr) {
ALOGW("%s: no primary HAL device", __func__);
return false;
}
bool state;
mHardwareStatus = AUDIO_HW_GET_MIC_MUTE;
ret = primaryDev->getMicMute(&state);
mHardwareStatus = AUDIO_HW_IDLE;
return mute;
ALOGE_IF(ret != NO_ERROR, "%s: error %d getting state from HAL", __func__, ret);
return (ret == NO_ERROR) && state;
}
void AudioFlinger::setRecordSilenced(audio_port_handle_t portId, bool silenced)

Loading…
Cancel
Save