diff --git a/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp b/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
index 483f643..bc3b375 100644
--- a/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
+++ b/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
@@ -80,18 +80,20 @@
 
 EffectsFactoryHalHidl::EffectsFactoryHalHidl(sp<IEffectsFactory> effectsFactory)
     : EffectConversionHelperHidl("EffectsFactory"),
+      mEffectsFactory(std::move(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};
-      }()) {
+      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);
 }
 
 status_t EffectsFactoryHalHidl::queryNumberEffects(uint32_t *pNumEffects) {
diff --git a/media/libaudiohal/impl/EffectsFactoryHalHidl.h b/media/libaudiohal/impl/EffectsFactoryHalHidl.h
index c64ca3a..698c961 100644
--- a/media/libaudiohal/impl/EffectsFactoryHalHidl.h
+++ b/media/libaudiohal/impl/EffectsFactoryHalHidl.h
@@ -66,8 +66,8 @@
     const effectsConfig::EffectProcessings& getProcessings() const override;
 
   private:
-    sp<IEffectsFactory> mEffectsFactory;
-    std::unique_ptr<EffectDescriptorCache> mCache;
+    const sp<IEffectsFactory> mEffectsFactory;
+    const std::unique_ptr<EffectDescriptorCache> mCache;
     // Configuration file parser result together with all processings from effect factory
     const effectsConfig::EffectProcessings mEffectProcessings;
 };
