Revert "Move EffectsConfig loading in AudioPolicyEffects to libAudioHal"
This reverts commit e3e403d4598c5460baffeba766f469eceafd91e5.
Reason for revert: fixes b/279127394 validated by http://go/abtd-run/L71300000960106239 and b/279108570
Change-Id: I58054d98365a6bf10b4dab2f347d4ee78205440c
diff --git a/services/audiopolicy/service/AudioPolicyEffects.cpp b/services/audiopolicy/service/AudioPolicyEffects.cpp
index b0eb3b7..c7a60c2 100644
--- a/services/audiopolicy/service/AudioPolicyEffects.cpp
+++ b/services/audiopolicy/service/AudioPolicyEffects.cpp
@@ -41,25 +41,26 @@
// AudioPolicyEffects Implementation
// ----------------------------------------------------------------------------
-AudioPolicyEffects::AudioPolicyEffects(const sp<EffectsFactoryHalInterface>& effectsFactoryHal) {
- // load xml config with effectsFactoryHal
- status_t loadResult = loadAudioEffectConfig(effectsFactoryHal);
+AudioPolicyEffects::AudioPolicyEffects()
+{
+ status_t loadResult = loadAudioEffectXmlConfig();
if (loadResult == NO_ERROR) {
- mDefaultDeviceEffectFuture =
- std::async(std::launch::async, &AudioPolicyEffects::initDefaultDeviceEffects, this);
+ mDefaultDeviceEffectFuture = std::async(
+ std::launch::async, &AudioPolicyEffects::initDefaultDeviceEffects, this);
} else if (loadResult < 0) {
- ALOGW("Failed to query effect configuration, fallback to load .conf");
+ ALOGW("Failed to load XML effect configuration, fallback to .conf");
// load automatic audio effect modules
if (access(AUDIO_EFFECT_VENDOR_CONFIG_FILE, R_OK) == 0) {
- loadAudioEffectConfigLegacy(AUDIO_EFFECT_VENDOR_CONFIG_FILE);
+ loadAudioEffectConfig(AUDIO_EFFECT_VENDOR_CONFIG_FILE);
} else if (access(AUDIO_EFFECT_DEFAULT_CONFIG_FILE, R_OK) == 0) {
- loadAudioEffectConfigLegacy(AUDIO_EFFECT_DEFAULT_CONFIG_FILE);
+ loadAudioEffectConfig(AUDIO_EFFECT_DEFAULT_CONFIG_FILE);
}
} else if (loadResult > 0) {
ALOGE("Effect config is partially invalid, skipped %d elements", loadResult);
}
}
+
AudioPolicyEffects::~AudioPolicyEffects()
{
size_t i = 0;
@@ -906,16 +907,12 @@
return NO_ERROR;
}
-status_t AudioPolicyEffects::loadAudioEffectConfig(
- const sp<EffectsFactoryHalInterface>& effectsFactoryHal) {
- if (!effectsFactoryHal) {
- ALOGE("%s Null EffectsFactoryHalInterface", __func__);
- return UNEXPECTED_NULL;
+status_t AudioPolicyEffects::loadAudioEffectXmlConfig() {
+ auto result = effectsConfig::parse();
+ if (result.parsedConfig == nullptr) {
+ return -ENOENT;
}
- const auto& processings = effectsFactoryHal->getProcessings();
- const auto& skippedElements = VALUE_OR_RETURN_STATUS(processings.result);
-
auto loadProcessingChain = [](auto& processingChain, auto& streams) {
for (auto& stream : processingChain) {
auto effectDescs = std::make_unique<EffectDescVector>();
@@ -927,8 +924,9 @@
}
};
- auto loadDeviceProcessingChain = [](auto& processingChain, auto& devicesEffects) {
+ auto loadDeviceProcessingChain = [](auto &processingChain, auto& devicesEffects) {
for (auto& deviceProcess : processingChain) {
+
auto effectDescs = std::make_unique<EffectDescVector>();
for (auto& effect : deviceProcess.effects) {
effectDescs->mEffects.add(
@@ -940,18 +938,17 @@
}
};
- loadProcessingChain(processings.preprocess, mInputSources);
- loadProcessingChain(processings.postprocess, mOutputStreams);
-
+ loadProcessingChain(result.parsedConfig->preprocess, mInputSources);
+ loadProcessingChain(result.parsedConfig->postprocess, mOutputStreams);
{
Mutex::Autolock _l(mLock);
- loadDeviceProcessingChain(processings.deviceprocess, mDeviceEffects);
+ loadDeviceProcessingChain(result.parsedConfig->deviceprocess, mDeviceEffects);
}
-
- return skippedElements;
+ // Casting from ssize_t to status_t is probably safe, there should not be more than 2^31 errors
+ return result.nbSkippedElement;
}
-status_t AudioPolicyEffects::loadAudioEffectConfigLegacy(const char *path)
+status_t AudioPolicyEffects::loadAudioEffectConfig(const char *path)
{
cnode *root;
char *data;