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

Commit 9e25cf16 authored by Richard Folke Tullberg's avatar Richard Folke Tullberg Committed by Shunkai Yao
Browse files

Check if non offloadable effect is enabled with uuid

Flag: EXEMPT bugfix
Test: atest audiopolicy_tests
Test: atest audio_effects_utils_tests
Bug: 380470315
Change-Id: Ia2e5e21066b47eb42bd490af00d0b4abb9c2a78d
parent 9648c2db
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -75,7 +75,8 @@ public:
    bool     isEffectEnabled(int id) const;
    uint32_t getMaxEffectsCpuLoad() const;
    uint32_t getMaxEffectsMemory() const;
    bool isNonOffloadableEffectEnabled() const;
    bool isNonOffloadableEffectEnabled(
            const std::optional<const effect_uuid_t>& uuid = std::nullopt) const;

    void moveEffects(audio_session_t session,
                     audio_io_handle_t srcOutput,
+10 −5
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@

#include "AudioInputDescriptor.h"
#include "EffectDescriptor.h"
#include <system/audio_effects/audio_effects_utils.h>
#include <utils/String8.h>

#include <AudioPolicyInterface.h>
@@ -157,14 +158,18 @@ status_t EffectDescriptorCollection::setEffectEnabled(const sp<EffectDescriptor>
    return NO_ERROR;
}

bool EffectDescriptorCollection::isNonOffloadableEffectEnabled() const
bool EffectDescriptorCollection::isNonOffloadableEffectEnabled(
        const std::optional<const effect_uuid_t>& uuid) const
{
    using namespace android::effect::utils;
    for (size_t i = 0; i < size(); i++) {
        sp<EffectDescriptor> effectDesc = valueAt(i);
        if (effectDesc->mEnabled && (effectDesc->isMusicEffect()) &&
                ((effectDesc->mDesc.flags & EFFECT_FLAG_OFFLOAD_SUPPORTED) == 0)) {
            ALOGV("isNonOffloadableEffectEnabled() non offloadable effect %s enabled on session %d",
                  effectDesc->mDesc.name, effectDesc->mSession);
        if ((effectDesc->mEnabled && (effectDesc->isMusicEffect()) &&
             ((effectDesc->mDesc.flags & EFFECT_FLAG_OFFLOAD_SUPPORTED) == 0)) &&
            (uuid == std::nullopt || uuid.value() == effectDesc->mDesc.uuid)) {
            ALOGE("%s: non offloadable effect %s, uuid %s, enabled on session %d", __func__,
                  effectDesc->mDesc.name, ToString(effectDesc->mDesc.uuid).c_str(),
                  effectDesc->mSession);
            return true;
        }
    }