Move EffectsConfig loading in AudioPolicyEffects to libAudioHal
For HIDL, the EffectsConfig result based on config xml parsing.
For AIDL, the EffectsConfig result based on IFactory interface.
Bug: 261129656
Test: m on aosp_cf_x86_64_phone-userdebug and Pixel 6a
Test: atest audiopolicy_tests
Test: flash to Pixel 6a and test with audio effect enabled
Change-Id: I7ffecbf3e2557a74563f000b514f42c37ef9c4d4
diff --git a/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp b/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
index 172ebdf..483f643 100644
--- a/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
+++ b/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
@@ -33,10 +33,11 @@
#include "android/media/AudioHalVersion.h"
+using ::android::base::unexpected;
using ::android::detail::AudioHalVersionInfo;
+using ::android::hardware::Return;
using ::android::hardware::audio::common::CPP_VERSION::implementation::UuidUtils;
using ::android::hardware::audio::effect::CPP_VERSION::implementation::EffectUtils;
-using ::android::hardware::Return;
namespace android {
namespace effect {
@@ -78,7 +79,17 @@
}
EffectsFactoryHalHidl::EffectsFactoryHalHidl(sp<IEffectsFactory> effectsFactory)
- : EffectConversionHelperHidl("EffectsFactory"), mCache(new EffectDescriptorCache) {
+ : EffectConversionHelperHidl("EffectsFactory"),
+ mCache(new EffectDescriptorCache),
+ mEffectProcessings([&]() -> effectsConfig::EffectProcessings {
+ effectsConfig::EffectProcessings processings;
+ const auto& parseResult = effectsConfig::parse();
+ if (!parseResult.parsedConfig) {
+ return INVALID_EFFECT_PROCESSING;
+ }
+ return {parseResult.nbSkippedElement, parseResult.parsedConfig->preprocess,
+ parseResult.parsedConfig->postprocess, parseResult.parsedConfig->deviceprocess};
+ }()) {
ALOG_ASSERT(effectsFactory != nullptr, "Provided IEffectsFactory service is NULL");
mEffectsFactory = std::move(effectsFactory);
}
@@ -228,6 +239,10 @@
return AudioHalVersionInfo(AudioHalVersionInfo::Type::HIDL, MAJOR_VERSION, MINOR_VERSION);
}
+const effectsConfig::EffectProcessings& EffectsFactoryHalHidl::getProcessings() const {
+ return mEffectProcessings;
+}
+
} // namespace effect
// When a shared library is built from a static library, even explicit