From de16db4d2ef9fef7225e4be9ca887a29dc1e5f80 Mon Sep 17 00:00:00 2001 From: Shunkai Yao Date: Wed, 18 Sep 2024 20:33:06 +0000 Subject: [PATCH] Align EffectContext workbuffer size to FMQ size Bug: 361370596 Test: atest --test-mapping hardware/interfaces/audio/aidl/vts:presubmit Change-Id: I0d424914566ff3b8c0e13d0c8f08d138761e2ea0 --- audio/aidl/default/EffectContext.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/audio/aidl/default/EffectContext.cpp b/audio/aidl/default/EffectContext.cpp index 553917718c..26c88b207f 100644 --- a/audio/aidl/default/EffectContext.cpp +++ b/audio/aidl/default/EffectContext.cpp @@ -63,13 +63,18 @@ void EffectContext::resetBuffer() { } void EffectContext::dupeFmqWithReopen(IEffect::OpenEffectReturn* effectRet) { + const size_t inBufferSizeInFloat = mCommon.input.frameCount * mInputFrameSize / sizeof(float); + const size_t outBufferSizeInFloat = + mCommon.output.frameCount * mOutputFrameSize / sizeof(float); + const size_t bufferSize = std::max(inBufferSizeInFloat, outBufferSizeInFloat); if (!mInputMQ) { - mInputMQ = std::make_shared(mCommon.input.frameCount * mInputFrameSize / - sizeof(float)); + mInputMQ = std::make_shared(inBufferSizeInFloat); } if (!mOutputMQ) { - mOutputMQ = std::make_shared(mCommon.output.frameCount * mOutputFrameSize / - sizeof(float)); + mOutputMQ = std::make_shared(outBufferSizeInFloat); + } + if (mWorkBuffer.size() != bufferSize) { + mWorkBuffer.resize(bufferSize); } dupeFmq(effectRet); } @@ -222,8 +227,6 @@ RetCode EffectContext::updateIOFrameSize(const Parameter::Common& common) { } if (needUpdateMq) { - mWorkBuffer.resize(std::max(common.input.frameCount * mInputFrameSize / sizeof(float), - common.output.frameCount * mOutputFrameSize / sizeof(float))); return notifyDataMqUpdate(); } return RetCode::SUCCESS;