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

Commit 12cf6d32 authored by Shunkai Yao's avatar Shunkai Yao Committed by Android (Google) Code Review
Browse files

Merge "Add audio eraser effect filter in libaudiohal" into main

parents fbcf1e99 cfc29a3f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ cc_defaults {
    shared_libs: [
        "android.hardware.common-V2-ndk",
        "android.hardware.common.fmq-V1-ndk",
        "com.android.media.audio-aconfig-cc",
        "libaudio_aidl_conversion_common_cpp",
        "libaudio_aidl_conversion_common_ndk",
        "libaudio_aidl_conversion_common_ndk_cpp",
+25 −0
Original line number Diff line number Diff line
@@ -25,10 +25,12 @@
#include <error/expected_utils.h>
#include <aidl/android/media/audio/common/AudioStreamType.h>
#include <android/binder_manager.h>
#include <com_android_media_audio.h>
#include <media/AidlConversionCppNdk.h>
#include <media/AidlConversionEffect.h>
#include <system/audio.h>
#include <system/audio_aidl_utils.h>
#include <system/audio_effects/effect_uuid.h>
#include <utils/Log.h>

#include "AidlUtils.h"
@@ -68,6 +70,7 @@ EffectsFactoryHalAidl::EffectsFactoryHalAidl(std::shared_ptr<IFactory> effectsFa
          std::vector<Descriptor> list;
          if (mFactory) {
              mFactory->queryEffects(std::nullopt, std::nullopt, std::nullopt, &list).isOk();
              filterHalDescriptors(list);
          }
          return list;
      }()),
@@ -180,6 +183,11 @@ status_t EffectsFactoryHalAidl::createEffect(const effect_uuid_t* uuid, int32_t

    AudioUuid aidlUuid =
            VALUE_OR_RETURN_STATUS(::aidl::android::legacy2aidl_audio_uuid_t_AudioUuid(*uuid));
    if (!com_android_media_audio_audio_eraser_effect() && isAudioEraser(aidlUuid)) {
        ALOGE("%s Audio eraser effect not supported yet", __func__);
        return BAD_VALUE;
    }

    std::shared_ptr<IEffect> aidlEffect;
    // Use EffectProxy interface instead of IFactory to create
    const bool isProxy = isProxyEffect(aidlUuid);
@@ -367,6 +375,23 @@ std::shared_ptr<const effectsConfig::Processings> EffectsFactoryHalAidl::getProc
    return 0;
}


bool EffectsFactoryHalAidl::isAudioEraser(const AudioUuid& uuid) {
    return uuid == getEffectTypeUuidEraser();
}

void EffectsFactoryHalAidl::filterHalDescriptors(std::vector<Descriptor>& descs) {
    if (!com_android_media_audio_audio_eraser_effect()) {
        descs.erase(std::remove_if(descs.begin(), descs.end(),
                                   [](const Descriptor& desc) {
                                       return isAudioEraser(desc.common.id.type);
                                   }),
                    descs.end());
    }

    return;
}

} // namespace effect

// When a shared library is built from a static library, even explicit
+5 −0
Original line number Diff line number Diff line
@@ -94,6 +94,11 @@ class EffectsFactoryHalAidl final : public EffectsFactoryHalInterface {
            std::vector<effect_descriptor_t>* descriptors);

    bool isProxyEffect(const aidl::android::media::audio::common::AudioUuid& uuid) const;

    static bool isAudioEraser(const aidl::android::media::audio::common::AudioUuid& uuid);

    // filter out descriptors which can not supported by the framework
    static void filterHalDescriptors(std::vector<Descriptor>& descs);
};

} // namespace effect