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

Loading…
Cancel
Save