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

Commit 0ae7a49c authored by Shunkai Yao's avatar Shunkai Yao Committed by Automerger Merge Worker
Browse files

Merge "AIDL effect: Skip status FMQ verification for offload effects" into main am: 17aab021

parents e4a0ce53 17aab021
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -182,8 +182,9 @@ status_t EffectConversionHelperAidl::handleSetConfig(uint32_t cmdSize, const voi
    RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getState(&state)));
    // in case of buffer/ioHandle re-configure for an opened effect, close it and re-open
    if (state != State::INIT && mCommon != common) {
        ALOGI("%s at state %s, closing effect", __func__,
              android::internal::ToString(state).c_str());
        ALOGI("%s at state %s, common parameter change from %s to %s, closing effect", __func__,
              android::internal::ToString(state).c_str(), mCommon.toString().c_str(),
              common.toString().c_str());
        RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->close()));
        RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->getState(&state)));
        mStatusQ.reset();
@@ -476,8 +477,9 @@ status_t EffectConversionHelperAidl::updateEventFlags() {
                  efGroup);
            status = (status == OK) ? BAD_VALUE : status;
        }
    } else if (isBypassing()) {
        // for effect with bypass (no processing) flag, it's okay to not have statusQ
    } else if (isBypassingOrOffload()) {
        // for effect with bypass (no processing) or offloadIndication flag, it's okay to not have
        // statusQ
        return OK;
    }

@@ -485,12 +487,22 @@ status_t EffectConversionHelperAidl::updateEventFlags() {
    return status;
}

bool EffectConversionHelperAidl::isBypassingOrOffload() const {
    return isBypassing() || isOffload();
}

bool EffectConversionHelperAidl::isBypassing() const {
    return mEffect &&
           (mDesc.common.flags.bypass ||
            (mIsProxyEffect && std::static_pointer_cast<EffectProxy>(mEffect)->isBypassing()));
}

bool EffectConversionHelperAidl::isOffload() const {
    return mEffect &&
           (mDesc.common.flags.offloadIndication ||
            (mIsProxyEffect && std::static_pointer_cast<EffectProxy>(mEffect)->isOffload()));
}

Descriptor EffectConversionHelperAidl::getDescriptor() const {
    if (!mIsProxyEffect) {
        return mDesc;
+3 −0
Original line number Diff line number Diff line
@@ -41,7 +41,10 @@ class EffectConversionHelperAidl {
    std::shared_ptr<DataMQ> getInputMQ() { return mInputQ; }
    std::shared_ptr<DataMQ> getOutputMQ() { return mOutputQ; }
    std::shared_ptr<android::hardware::EventFlag> getEventFlagGroup() { return mEfGroup; }

    bool isBypassing() const;
    bool isOffload() const;
    bool isBypassingOrOffload() const;

    ::aidl::android::hardware::audio::effect::Descriptor getDescriptor() const;

+4 −0
Original line number Diff line number Diff line
@@ -278,6 +278,10 @@ bool EffectProxy::isBypassing() const {
    return mSubEffects[mActiveSubIdx].descriptor.common.flags.bypass;
}

bool EffectProxy::isOffload() const {
    return mSubEffects[mActiveSubIdx].descriptor.common.flags.offloadIndication;
}

binder_status_t EffectProxy::dump(int fd, const char** args, uint32_t numArgs) {
    const std::string dumpString = toString();
    write(fd, dumpString.c_str(), dumpString.size());
+1 −0
Original line number Diff line number Diff line
@@ -98,6 +98,7 @@ class EffectProxy final : public ::aidl::android::hardware::audio::effect::BnEff
    }

    bool isBypassing() const;
    bool isOffload() const;

    // call dump for all sub-effects
    binder_status_t dump(int fd, const char** args, uint32_t numArgs) override;