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/media/libaudiohal/Android.bp b/media/libaudiohal/Android.bp
index 3c05b0b..1dbcb86 100644
--- a/media/libaudiohal/Android.bp
+++ b/media/libaudiohal/Android.bp
@@ -74,12 +74,6 @@
cc_library_headers {
name: "libaudiohal_headers",
- header_libs: [
- "libeffectsconfig_headers",
- ],
-
- export_header_lib_headers: ["libeffectsconfig_headers"],
-
export_include_dirs: ["include"],
}
diff --git a/media/libaudiohal/impl/Android.bp b/media/libaudiohal/impl/Android.bp
index 49fb2a4..1e3d45f 100644
--- a/media/libaudiohal/impl/Android.bp
+++ b/media/libaudiohal/impl/Android.bp
@@ -35,7 +35,6 @@
"android.hidl.allocator@1.0",
"android.hidl.memory@1.0",
"libaudiohal_deathhandler",
- "libeffectsconfig",
"libhidlbase",
"libhidlmemory",
],
@@ -282,16 +281,15 @@
"android.hardware.common.fmq-V1-ndk",
],
shared_libs: [
+ "libbinder_ndk",
"libaudio_aidl_conversion_common_cpp",
"libaudio_aidl_conversion_common_ndk",
"libaudio_aidl_conversion_core_ndk",
"libaudio_aidl_conversion_effect_ndk",
"libaudioaidlcommon",
- "libbinder_ndk",
],
header_libs: [
"libaudio_system_headers",
- "libeffectsconfig_headers",
],
cflags: [
"-Wall",
diff --git a/media/libaudiohal/impl/EffectsFactoryHalAidl.cpp b/media/libaudiohal/impl/EffectsFactoryHalAidl.cpp
index 918d419..bc05aa0 100644
--- a/media/libaudiohal/impl/EffectsFactoryHalAidl.cpp
+++ b/media/libaudiohal/impl/EffectsFactoryHalAidl.cpp
@@ -23,7 +23,6 @@
//#define LOG_NDEBUG 0
#include <error/expected_utils.h>
-#include <aidl/android/media/audio/common/AudioStreamType.h>
#include <android/binder_manager.h>
#include <media/AidlConversionCppNdk.h>
#include <media/AidlConversionEffect.h>
@@ -36,13 +35,11 @@
#include "EffectsFactoryHalAidl.h"
using ::aidl::android::legacy2aidl_audio_uuid_t_AudioUuid;
-using ::aidl::android::aidl_utils::statusTFromBinderStatus;
-using ::aidl::android::hardware::audio::effect::Descriptor;
-using ::aidl::android::hardware::audio::effect::IFactory;
-using ::aidl::android::hardware::audio::effect::Processing;
-using ::aidl::android::media::audio::common::AudioUuid;
-using ::android::base::unexpected;
-using ::android::detail::AudioHalVersionInfo;
+using aidl::android::aidl_utils::statusTFromBinderStatus;
+using aidl::android::hardware::audio::effect::Descriptor;
+using aidl::android::hardware::audio::effect::IFactory;
+using aidl::android::media::audio::common::AudioUuid;
+using android::detail::AudioHalVersionInfo;
namespace android {
namespace effect {
@@ -95,8 +92,7 @@
[](const Descriptor& desc) { return !desc.common.id.proxy.has_value(); });
return list;
}()),
- mEffectCount(mNonProxyDescList.size() + mProxyDescList.size()),
- mEffectProcessings(INVALID_EFFECT_PROCESSING) {
+ mEffectCount(mNonProxyDescList.size() + mProxyDescList.size()) {
ALOG_ASSERT(mFactory != nullptr, "Provided IEffectsFactory service is NULL");
ALOGI("%s with %zu nonProxyEffects and %zu proxyEffects", __func__, mNonProxyDescList.size(),
mProxyDescList.size());
@@ -273,10 +269,6 @@
return 0 != mUuidProxyMap.count(uuid);
}
-const effectsConfig::EffectProcessings& EffectsFactoryHalAidl::getProcessings() const {
- return mEffectProcessings;
-}
-
} // namespace effect
// When a shared library is built from a static library, even explicit
diff --git a/media/libaudiohal/impl/EffectsFactoryHalAidl.h b/media/libaudiohal/impl/EffectsFactoryHalAidl.h
index 9116895..debfacf 100644
--- a/media/libaudiohal/impl/EffectsFactoryHalAidl.h
+++ b/media/libaudiohal/impl/EffectsFactoryHalAidl.h
@@ -62,8 +62,6 @@
detail::AudioHalVersionInfo getHalVersion() const override;
- const effectsConfig::EffectProcessings& getProcessings() const override;
-
private:
const std::shared_ptr<IFactory> mFactory;
const detail::AudioHalVersionInfo mHalVersion;
@@ -79,8 +77,6 @@
const std::vector<Descriptor> mNonProxyDescList;
// total number of effects including proxy effects
const size_t mEffectCount;
- // Query result and all processing from effect factory
- const effectsConfig::EffectProcessings mEffectProcessings;
std::mutex mLock;
uint64_t mEffectIdCounter GUARDED_BY(mLock) = 0; // Align with HIDL (0 is INVALID_ID)
diff --git a/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp b/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
index 483f643..172ebdf 100644
--- a/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
+++ b/media/libaudiohal/impl/EffectsFactoryHalHidl.cpp
@@ -33,11 +33,10 @@
#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 {
@@ -79,17 +78,7 @@
}
EffectsFactoryHalHidl::EffectsFactoryHalHidl(sp<IEffectsFactory> effectsFactory)
- : 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};
- }()) {
+ : EffectConversionHelperHidl("EffectsFactory"), mCache(new EffectDescriptorCache) {
ALOG_ASSERT(effectsFactory != nullptr, "Provided IEffectsFactory service is NULL");
mEffectsFactory = std::move(effectsFactory);
}
@@ -239,10 +228,6 @@
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
diff --git a/media/libaudiohal/impl/EffectsFactoryHalHidl.h b/media/libaudiohal/impl/EffectsFactoryHalHidl.h
index c64ca3a..9875154 100644
--- a/media/libaudiohal/impl/EffectsFactoryHalHidl.h
+++ b/media/libaudiohal/impl/EffectsFactoryHalHidl.h
@@ -17,7 +17,6 @@
#pragma once
#include <memory>
-#include <vector>
#include PATH(android/hardware/audio/effect/FILE_VERSION/IEffectsFactory.h)
#include <media/audiohal/EffectsFactoryHalInterface.h>
@@ -63,13 +62,9 @@
android::detail::AudioHalVersionInfo getHalVersion() const override;
- const effectsConfig::EffectProcessings& getProcessings() const override;
-
private:
sp<IEffectsFactory> mEffectsFactory;
std::unique_ptr<EffectDescriptorCache> mCache;
- // Configuration file parser result together with all processings from effect factory
- const effectsConfig::EffectProcessings mEffectProcessings;
};
} // namespace effect
diff --git a/media/libaudiohal/include/media/audiohal/EffectsFactoryHalInterface.h b/media/libaudiohal/include/media/audiohal/EffectsFactoryHalInterface.h
index e15fcb5..d740fe9 100644
--- a/media/libaudiohal/include/media/audiohal/EffectsFactoryHalInterface.h
+++ b/media/libaudiohal/include/media/audiohal/EffectsFactoryHalInterface.h
@@ -15,10 +15,8 @@
*/
#pragma once
-#include <vector>
#include <media/audiohal/EffectHalInterface.h>
-#include <media/EffectsConfig.h>
#include <system/audio_effect.h>
#include <utils/Errors.h>
#include <utils/RefBase.h>
@@ -35,21 +33,21 @@
virtual status_t queryNumberEffects(uint32_t *pNumEffects) = 0;
// Returns a descriptor of the next available effect.
- virtual status_t getDescriptor(uint32_t index, effect_descriptor_t* pDescriptor) = 0;
+ virtual status_t getDescriptor(uint32_t index,
+ effect_descriptor_t *pDescriptor) = 0;
- virtual status_t getDescriptor(const effect_uuid_t* pEffectUuid,
- effect_descriptor_t* pDescriptor) = 0;
+ virtual status_t getDescriptor(const effect_uuid_t *pEffectUuid,
+ effect_descriptor_t *pDescriptor) = 0;
virtual status_t getDescriptors(const effect_uuid_t *pEffectType,
std::vector<effect_descriptor_t> *descriptors) = 0;
- virtual const effectsConfig::EffectProcessings& getProcessings() const = 0;
-
// Creates an effect engine of the specified type.
// To release the effect engine, it is necessary to release references
// to the returned effect object.
- virtual status_t createEffect(const effect_uuid_t* pEffectUuid, int32_t sessionId, int32_t ioId,
- int32_t deviceId, sp<EffectHalInterface>* effect) = 0;
+ virtual status_t createEffect(const effect_uuid_t *pEffectUuid,
+ int32_t sessionId, int32_t ioId, int32_t deviceId,
+ sp<EffectHalInterface> *effect) = 0;
virtual status_t dumpEffects(int fd) = 0;
@@ -64,9 +62,6 @@
// Helper function to compare effect uuid to EFFECT_UUID_NULL.
static bool isNullUuid(const effect_uuid_t* pEffectUuid);
-#define INVALID_EFFECT_PROCESSING \
- effectsConfig::EffectProcessings({::android::base::unexpected(BAD_VALUE), {}, {}, {}})
-
protected:
// Subclasses can not be constructed directly by clients.
EffectsFactoryHalInterface() {}
diff --git a/media/libeffects/config/Android.bp b/media/libeffects/config/Android.bp
index 293a9c2..b02dcb6 100644
--- a/media/libeffects/config/Android.bp
+++ b/media/libeffects/config/Android.bp
@@ -27,21 +27,8 @@
"libcutils",
],
- header_libs: [
- "libaudio_system_headers",
- "liberror_headers",
- ],
-
- export_header_lib_headers: [
- "libaudio_system_headers",
- "liberror_headers",
- ],
-
- export_include_dirs: ["include"],
-}
-
-cc_library_headers {
- name: "libeffectsconfig_headers",
+ header_libs: ["libaudio_system_headers"],
+ export_header_lib_headers: ["libaudio_system_headers"],
export_include_dirs: ["include"],
}
diff --git a/media/libeffects/config/include/media/EffectsConfig.h b/media/libeffects/config/include/media/EffectsConfig.h
index f37e0ef..57d4dd7 100644
--- a/media/libeffects/config/include/media/EffectsConfig.h
+++ b/media/libeffects/config/include/media/EffectsConfig.h
@@ -22,10 +22,8 @@
* @see audio_effects_conf_V2_0.xsd for documentation on each structure
*/
-#include <error/Result.h>
#include <system/audio_effect.h>
-#include <cstddef>
#include <map>
#include <memory>
#include <string>
@@ -77,14 +75,6 @@
std::string address;
};
-struct EffectProcessings {
- // status_t if parser return error, skipped element if parsing result is OK
- ::android::error::Result<size_t /* skipped element, 0 by default */> result;
- std::vector<InputStream> preprocess;
- std::vector<OutputStream> postprocess;
- std::vector<DeviceEffects> deviceprocess;
-};
-
/** Parsed configuration.
* Intended to be a transient structure only used for deserialization.
* Note: Everything is copied in the configuration from the xml dom.
diff --git a/media/libeffects/factory/Android.bp b/media/libeffects/factory/Android.bp
index d94093e..22838a3 100644
--- a/media/libeffects/factory/Android.bp
+++ b/media/libeffects/factory/Android.bp
@@ -39,7 +39,6 @@
header_libs: [
"libaudioeffects",
"libeffects_headers",
- "liberror_headers",
],
export_header_lib_headers: ["libeffects_headers"],
}
@@ -57,6 +56,7 @@
"-Werror",
],
+
shared_libs: [
"libeffectsconfig",
"libeffects",
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;
diff --git a/services/audiopolicy/service/AudioPolicyEffects.h b/services/audiopolicy/service/AudioPolicyEffects.h
index 6ed11f1..13d5d0c 100644
--- a/services/audiopolicy/service/AudioPolicyEffects.h
+++ b/services/audiopolicy/service/AudioPolicyEffects.h
@@ -20,33 +20,22 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <future>
-
-#include <android-base/thread_annotations.h>
#include <cutils/misc.h>
#include <media/AudioEffect.h>
-#include <media/audiohal/EffectsFactoryHalInterface.h>
#include <system/audio.h>
#include <utils/Vector.h>
#include <utils/SortedVector.h>
+#include <android-base/thread_annotations.h>
+
+#include <future>
namespace android {
// ----------------------------------------------------------------------------
-/**
- * AudioPolicyEffects class.
- *
- * This class manages all effects attached to input and output streams in AudioPolicyService.
- * The effect configurations caa be queried in several ways:
- *
- * With HIDL HAL, the configuration file `audio_effects.xml` will be loaded by libAudioHal. If this
- * file does not exist, AudioPolicyEffects class will fallback to load configuration from
- * `/vendor/etc/audio_effects.conf` (AUDIO_EFFECT_VENDOR_CONFIG_FILE). If this file also does not
- * exist, the configuration will be loaded from the file `/system/etc/audio_effects.conf`.
- *
- * With AIDL HAL, the configuration will be queried with the method `IFactory::queryProcessing()`.
- */
+// AudioPolicyEffects class
+// This class will manage all effects attached to input and output streams in
+// AudioPolicyService as configured in audio_effects.conf.
class AudioPolicyEffects : public RefBase
{
@@ -55,7 +44,7 @@
// The constructor will parse audio_effects.conf
// First it will look whether vendor specific file exists,
// otherwise it will parse the system default file.
- AudioPolicyEffects(const sp<EffectsFactoryHalInterface>& effectsFactoryHal);
+ AudioPolicyEffects();
virtual ~AudioPolicyEffects();
// NOTE: methods on AudioPolicyEffects should never be called with the AudioPolicyService
@@ -229,6 +218,7 @@
};
+
static const char * const kInputSourceNames[AUDIO_SOURCE_CNT -1];
static audio_source_t inputSourceNameToEnum(const char *name);
@@ -236,8 +226,8 @@
audio_stream_type_t streamNameToEnum(const char *name);
// Parse audio_effects.conf
- status_t loadAudioEffectConfigLegacy(const char *path);
- status_t loadAudioEffectConfig(const sp<EffectsFactoryHalInterface>& effectsFactoryHal);
+ status_t loadAudioEffectConfig(const char *path); // TODO: add legacy in the name
+ status_t loadAudioEffectXmlConfig(); // TODO: remove "Xml" in the name
// Load all effects descriptors in configuration file
status_t loadEffects(cnode *root, Vector <EffectDesc *>& effects);
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 0df3962..f34427c 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -460,14 +460,14 @@
}
ALOGV("startOutput()");
sp<AudioPlaybackClient> client;
- sp<AudioPolicyEffects> audioPolicyEffects;
+ sp<AudioPolicyEffects>audioPolicyEffects;
getPlaybackClientAndEffects(portId, client, audioPolicyEffects, __func__);
if (audioPolicyEffects != 0) {
// create audio processors according to stream
- status_t status = audioPolicyEffects->addOutputSessionEffects(client->io, client->stream,
- client->session);
+ status_t status = audioPolicyEffects->addOutputSessionEffects(
+ client->io, client->stream, client->session);
if (status != NO_ERROR && status != ALREADY_EXISTS) {
ALOGW("Failed to add effects on session %d", client->session);
}
diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp
index 040f869..281785e 100644
--- a/services/audiopolicy/service/AudioPolicyService.cpp
+++ b/services/audiopolicy/service/AudioPolicyService.cpp
@@ -252,8 +252,7 @@
}
// load audio processing modules
- const sp<EffectsFactoryHalInterface> effectsFactoryHal = EffectsFactoryHalInterface::create();
- sp<AudioPolicyEffects> audioPolicyEffects = new AudioPolicyEffects(effectsFactoryHal);
+ sp<AudioPolicyEffects> audioPolicyEffects = new AudioPolicyEffects();
sp<UidPolicy> uidPolicy = new UidPolicy(this);
sp<SensorPrivacyPolicy> sensorPrivacyPolicy = new SensorPrivacyPolicy(this);
{
@@ -272,7 +271,7 @@
AudioDeviceTypeAddrVector devices;
bool hasSpatializer = mAudioPolicyManager->canBeSpatialized(&attr, nullptr, devices);
if (hasSpatializer) {
- mSpatializer = Spatializer::create(this, effectsFactoryHal);
+ mSpatializer = Spatializer::create(this);
}
if (mSpatializer == nullptr) {
// No spatializer created, signal the reason: NO_INIT a failure, OK means intended.
diff --git a/services/audiopolicy/service/Spatializer.cpp b/services/audiopolicy/service/Spatializer.cpp
index f0d5274..5db82f7 100644
--- a/services/audiopolicy/service/Spatializer.cpp
+++ b/services/audiopolicy/service/Spatializer.cpp
@@ -30,6 +30,7 @@
#include <audio_utils/fixedfft.h>
#include <cutils/bitops.h>
#include <hardware/sensors.h>
+#include <media/audiohal/EffectsFactoryHalInterface.h>
#include <media/stagefright/foundation/AHandler.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/MediaMetricsItem.h>
@@ -214,17 +215,18 @@
};
// ---------------------------------------------------------------------------
-sp<Spatializer> Spatializer::create(SpatializerPolicyCallback* callback,
- const sp<EffectsFactoryHalInterface>& effectsFactoryHal) {
+sp<Spatializer> Spatializer::create(SpatializerPolicyCallback *callback) {
sp<Spatializer> spatializer;
+ sp<EffectsFactoryHalInterface> effectsFactoryHal = EffectsFactoryHalInterface::create();
if (effectsFactoryHal == nullptr) {
ALOGW("%s failed to create effect factory interface", __func__);
return spatializer;
}
std::vector<effect_descriptor_t> descriptors;
- status_t status = effectsFactoryHal->getDescriptors(FX_IID_SPATIALIZER, &descriptors);
+ status_t status =
+ effectsFactoryHal->getDescriptors(FX_IID_SPATIALIZER, &descriptors);
if (status != NO_ERROR) {
ALOGW("%s failed to get spatializer descriptor, error %d", __func__, status);
return spatializer;
diff --git a/services/audiopolicy/service/Spatializer.h b/services/audiopolicy/service/Spatializer.h
index a657b7f..60030bd 100644
--- a/services/audiopolicy/service/Spatializer.h
+++ b/services/audiopolicy/service/Spatializer.h
@@ -27,7 +27,6 @@
#include <audio_utils/SimpleLog.h>
#include <math.h>
#include <media/AudioEffect.h>
-#include <media/audiohal/EffectsFactoryHalInterface.h>
#include <media/VectorRecorder.h>
#include <media/audiohal/EffectHalInterface.h>
#include <media/stagefright/foundation/ALooper.h>
@@ -95,8 +94,7 @@
private SpatializerPoseController::Listener,
public virtual AudioSystem::SupportedLatencyModesCallback {
public:
- static sp<Spatializer> create(SpatializerPolicyCallback* callback,
- const sp<EffectsFactoryHalInterface>& effectsFactoryHal);
+ static sp<Spatializer> create(SpatializerPolicyCallback *callback);
~Spatializer() override;