Loading audio/aidl/default/EffectContext.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ EffectContext::EffectContext(size_t statusDepth, const Parameter::Common& common ::android::status_t status = EventFlag::createEventFlag(mStatusMQ->getEventFlagWord(), &mEfGroup); LOG_ALWAYS_FATAL_IF(status != ::android::OK || !mEfGroup, " create EventFlagGroup failed "); mWorkBuffer.reserve(std::max(inBufferSizeInFloat, outBufferSizeInFloat)); mWorkBuffer.resize(std::max(inBufferSizeInFloat, outBufferSizeInFloat)); } // reset buffer status by abandon input data in FMQ Loading Loading @@ -82,6 +82,10 @@ float* EffectContext::getWorkBuffer() { return static_cast<float*>(mWorkBuffer.data()); } size_t EffectContext::getWorkBufferSize() const { return mWorkBuffer.size(); } std::shared_ptr<EffectContext::StatusMQ> EffectContext::getStatusFmq() const { return mStatusMQ; } Loading Loading @@ -206,6 +210,8 @@ RetCode EffectContext::updateIOFrameSize(const Parameter::Common& common) { mInputFrameSize = iFrameSize; mOutputFrameSize = oFrameSize; if (needUpdateMq) { mWorkBuffer.resize(std::max(common.input.frameCount * mInputFrameSize / sizeof(float), common.output.frameCount * mOutputFrameSize / sizeof(float))); return notifyDataMqUpdate(); } return RetCode::SUCCESS; Loading audio/aidl/default/EffectImpl.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -327,7 +327,9 @@ void EffectImpl::process() { return; } auto processSamples = inputMQ->availableToRead(); assert(mImplContext->getWorkBufferSize() >= std::max(inputMQ->availableToRead(), outputMQ->availableToWrite())); auto processSamples = std::min(inputMQ->availableToRead(), outputMQ->availableToWrite()); if (processSamples) { inputMQ->read(buffer, processSamples); IEffect::Status status = effectProcessImpl(buffer, buffer, processSamples); Loading audio/aidl/default/include/effect-impl/EffectContext.h +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ class EffectContext { std::shared_ptr<DataMQ> getOutputDataFmq() const; float* getWorkBuffer(); size_t getWorkBufferSize() const; // reset buffer status by abandon input data in FMQ void resetBuffer(); Loading Loading
audio/aidl/default/EffectContext.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ EffectContext::EffectContext(size_t statusDepth, const Parameter::Common& common ::android::status_t status = EventFlag::createEventFlag(mStatusMQ->getEventFlagWord(), &mEfGroup); LOG_ALWAYS_FATAL_IF(status != ::android::OK || !mEfGroup, " create EventFlagGroup failed "); mWorkBuffer.reserve(std::max(inBufferSizeInFloat, outBufferSizeInFloat)); mWorkBuffer.resize(std::max(inBufferSizeInFloat, outBufferSizeInFloat)); } // reset buffer status by abandon input data in FMQ Loading Loading @@ -82,6 +82,10 @@ float* EffectContext::getWorkBuffer() { return static_cast<float*>(mWorkBuffer.data()); } size_t EffectContext::getWorkBufferSize() const { return mWorkBuffer.size(); } std::shared_ptr<EffectContext::StatusMQ> EffectContext::getStatusFmq() const { return mStatusMQ; } Loading Loading @@ -206,6 +210,8 @@ RetCode EffectContext::updateIOFrameSize(const Parameter::Common& common) { mInputFrameSize = iFrameSize; mOutputFrameSize = oFrameSize; if (needUpdateMq) { mWorkBuffer.resize(std::max(common.input.frameCount * mInputFrameSize / sizeof(float), common.output.frameCount * mOutputFrameSize / sizeof(float))); return notifyDataMqUpdate(); } return RetCode::SUCCESS; Loading
audio/aidl/default/EffectImpl.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -327,7 +327,9 @@ void EffectImpl::process() { return; } auto processSamples = inputMQ->availableToRead(); assert(mImplContext->getWorkBufferSize() >= std::max(inputMQ->availableToRead(), outputMQ->availableToWrite())); auto processSamples = std::min(inputMQ->availableToRead(), outputMQ->availableToWrite()); if (processSamples) { inputMQ->read(buffer, processSamples); IEffect::Status status = effectProcessImpl(buffer, buffer, processSamples); Loading
audio/aidl/default/include/effect-impl/EffectContext.h +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ class EffectContext { std::shared_ptr<DataMQ> getOutputDataFmq() const; float* getWorkBuffer(); size_t getWorkBufferSize() const; // reset buffer status by abandon input data in FMQ void resetBuffer(); Loading