Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8fd84e25 authored by Shunkai Yao's avatar Shunkai Yao Committed by Automerger Merge Worker
Browse files

Merge "Move EffectsConfig loading in AudioPolicyEffects to libAudioHal" am: 2b3f6453

parents 30127284 2b3f6453
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -74,6 +74,12 @@ cc_library_shared {
cc_library_headers {
    name: "libaudiohal_headers",

    header_libs: [
        "libeffectsconfig_headers",
    ],

    export_header_lib_headers: ["libeffectsconfig_headers"],

    export_include_dirs: ["include"],
}

+3 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ cc_defaults {
        "android.hidl.allocator@1.0",
        "android.hidl.memory@1.0",
        "libaudiohal_deathhandler",
        "libeffectsconfig",
        "libhidlbase",
        "libhidlmemory",
    ],
@@ -281,15 +282,16 @@ cc_library_shared {
        "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",
+14 −6
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
//#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>
@@ -35,11 +36,13 @@
#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::media::audio::common::AudioUuid;
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::hardware::audio::effect::Processing;
using ::aidl::android::media::audio::common::AudioUuid;
using ::android::base::unexpected;
using ::android::detail::AudioHalVersionInfo;

namespace android {
namespace effect {
@@ -92,7 +95,8 @@ EffectsFactoryHalAidl::EffectsFactoryHalAidl(std::shared_ptr<IFactory> effectsFa
                       [](const Descriptor& desc) { return !desc.common.id.proxy.has_value(); });
          return list;
      }()),
      mEffectCount(mNonProxyDescList.size() + mProxyDescList.size()) {
      mEffectCount(mNonProxyDescList.size() + mProxyDescList.size()),
      mEffectProcessings(INVALID_EFFECT_PROCESSING) {
    ALOG_ASSERT(mFactory != nullptr, "Provided IEffectsFactory service is NULL");
    ALOGI("%s with %zu nonProxyEffects and %zu proxyEffects", __func__, mNonProxyDescList.size(),
          mProxyDescList.size());
@@ -269,6 +273,10 @@ bool EffectsFactoryHalAidl::isProxyEffect(const AudioUuid& uuid) const {
    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
+4 −0
Original line number Diff line number Diff line
@@ -62,6 +62,8 @@ class EffectsFactoryHalAidl final : public EffectsFactoryHalInterface {

    detail::AudioHalVersionInfo getHalVersion() const override;

    const effectsConfig::EffectProcessings& getProcessings() const override;

  private:
    const std::shared_ptr<IFactory> mFactory;
    const detail::AudioHalVersionInfo mHalVersion;
@@ -77,6 +79,8 @@ class EffectsFactoryHalAidl final : public EffectsFactoryHalInterface {
    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)
+17 −2
Original line number Diff line number Diff line
@@ -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 @@ EffectDescriptorCache::QueryResult EffectDescriptorCache::queryAllDescriptors(
}

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 @@ AudioHalVersionInfo EffectsFactoryHalHidl::getHalVersion() const {
    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
Loading