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

Commit bcfbe7aa authored by Shunkai Yao's avatar Shunkai Yao Committed by Gerrit Code Review
Browse files

Merge "Move EffectsConfig loading in AudioPolicyEffects to libAudioHal"

parents ad28198c 8f6ad0fc
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",
+23 −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(nullptr /* TODO: add AIDL implementation */) {
    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,19 @@ bool EffectsFactoryHalAidl::isProxyEffect(const AudioUuid& uuid) const {
    return 0 != mUuidProxyMap.count(uuid);
}

std::shared_ptr<const effectsConfig::Processings> EffectsFactoryHalAidl::getProcessings() const {
    return mEffectProcessings;
}

::android::error::Result<size_t> EffectsFactoryHalAidl::getSkippedElements() const {
    if (!mEffectProcessings) {
        return ::android::base::unexpected(BAD_VALUE);
    }

    // Only return 0 for AIDL, because the AIDL interface doesn't aware of configuration file
    return 0;
}

} // namespace effect

// When a shared library is built from a static library, even explicit
+6 −0
Original line number Diff line number Diff line
@@ -62,6 +62,10 @@ class EffectsFactoryHalAidl final : public EffectsFactoryHalInterface {

    detail::AudioHalVersionInfo getHalVersion() const override;

    std::shared_ptr<const effectsConfig::Processings> getProcessings() const override;

    ::android::error::Result<size_t> getSkippedElements() const override;

  private:
    const std::shared_ptr<IFactory> mFactory;
    const detail::AudioHalVersionInfo mHalVersion;
@@ -77,6 +81,8 @@ class EffectsFactoryHalAidl final : public EffectsFactoryHalInterface {
    const std::vector<Descriptor> mNonProxyDescList;
    // total number of effects including proxy effects
    const size_t mEffectCount;
    // Query result of pre and post processing from effect factory
    const std::shared_ptr<const effectsConfig::Processings> mEffectProcessings;

    std::mutex mLock;
    uint64_t mEffectIdCounter GUARDED_BY(mLock) = 0;  // Align with HIDL (0 is INVALID_ID)
+18 −4
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,9 +79,11 @@ EffectDescriptorCache::QueryResult EffectDescriptorCache::queryAllDescriptors(
}

EffectsFactoryHalHidl::EffectsFactoryHalHidl(sp<IEffectsFactory> effectsFactory)
        : EffectConversionHelperHidl("EffectsFactory"), mCache(new EffectDescriptorCache) {
    ALOG_ASSERT(effectsFactory != nullptr, "Provided IEffectsFactory service is NULL");
    mEffectsFactory = std::move(effectsFactory);
    : EffectConversionHelperHidl("EffectsFactory"),
      mEffectsFactory(std::move(effectsFactory)),
      mCache(new EffectDescriptorCache),
      mParsingResult(effectsConfig::parse()) {
    ALOG_ASSERT(mEffectsFactory != nullptr, "Provided IEffectsFactory service is NULL");
}

status_t EffectsFactoryHalHidl::queryNumberEffects(uint32_t *pNumEffects) {
@@ -228,6 +231,17 @@ AudioHalVersionInfo EffectsFactoryHalHidl::getHalVersion() const {
    return AudioHalVersionInfo(AudioHalVersionInfo::Type::HIDL, MAJOR_VERSION, MINOR_VERSION);
}

std::shared_ptr<const effectsConfig::Processings> EffectsFactoryHalHidl::getProcessings() const {
    return mParsingResult.parsedConfig;
}

::android::error::Result<size_t> EffectsFactoryHalHidl::getSkippedElements() const {
    if (!mParsingResult.parsedConfig) {
        return ::android::base::unexpected(BAD_VALUE);
    }
    return mParsingResult.nbSkippedElement;
}

} // namespace effect

// When a shared library is built from a static library, even explicit
Loading