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