Loading media/libaudiohal/impl/EffectConversionHelperAidl.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,7 @@ status_t EffectConversionHelperAidl::handleSetConfig(uint32_t cmdSize, const voi Parameter aidlParam = UNION_MAKE(Parameter, common, common); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam))); } mOutputAccessMode = config->outputCfg.accessMode; mCommon = common; return *static_cast<int32_t*>(pReplyData) = OK; Loading media/libaudiohal/impl/EffectConversionHelperAidl.h +2 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,8 @@ class EffectConversionHelperAidl { ::aidl::android::hardware::audio::effect::Descriptor getDescriptor() const; status_t reopen(); uint8_t mOutputAccessMode = EFFECT_BUFFER_ACCESS_WRITE; protected: const int32_t mSessionId; const int32_t mIoId; Loading media/libaudiohal/impl/EffectHalAidl.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <memory> #include <audio_utils/primitives.h> #include <error/expected_utils.h> #include <media/AidlConversionCppNdk.h> #include <media/AidlConversionEffect.h> Loading Loading @@ -239,13 +240,22 @@ status_t EffectHalAidl::process() { mOutBuffer->getSize() / sizeof(float), available); return INVALID_OPERATION; } float *outputRawBuffer = mOutBuffer->audioBuffer()->f32; std::vector<float> tempBuffer; if (mConversion->mOutputAccessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) { tempBuffer.resize(floatsToRead); outputRawBuffer = tempBuffer.data(); } // always read floating point data for AIDL if (!mOutBuffer->audioBuffer() || !outputQ->read(mOutBuffer->audioBuffer()->f32, floatsToRead)) { if (!outputQ->read(outputRawBuffer, floatsToRead)) { ALOGE("%s failed to read %zu from outputQ to audioBuffer %p", __func__, floatsToRead, mOutBuffer->audioBuffer()); return INVALID_OPERATION; } if (mConversion->mOutputAccessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) { accumulate_float(mOutBuffer->audioBuffer()->f32, outputRawBuffer, floatsToRead); } ALOGD("%s %s consumed %zu produced %zu", __func__, effectName.c_str(), floatsToWrite, floatsToRead); Loading Loading
media/libaudiohal/impl/EffectConversionHelperAidl.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,7 @@ status_t EffectConversionHelperAidl::handleSetConfig(uint32_t cmdSize, const voi Parameter aidlParam = UNION_MAKE(Parameter, common, common); RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mEffect->setParameter(aidlParam))); } mOutputAccessMode = config->outputCfg.accessMode; mCommon = common; return *static_cast<int32_t*>(pReplyData) = OK; Loading
media/libaudiohal/impl/EffectConversionHelperAidl.h +2 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,8 @@ class EffectConversionHelperAidl { ::aidl::android::hardware::audio::effect::Descriptor getDescriptor() const; status_t reopen(); uint8_t mOutputAccessMode = EFFECT_BUFFER_ACCESS_WRITE; protected: const int32_t mSessionId; const int32_t mIoId; Loading
media/libaudiohal/impl/EffectHalAidl.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <memory> #include <audio_utils/primitives.h> #include <error/expected_utils.h> #include <media/AidlConversionCppNdk.h> #include <media/AidlConversionEffect.h> Loading Loading @@ -239,13 +240,22 @@ status_t EffectHalAidl::process() { mOutBuffer->getSize() / sizeof(float), available); return INVALID_OPERATION; } float *outputRawBuffer = mOutBuffer->audioBuffer()->f32; std::vector<float> tempBuffer; if (mConversion->mOutputAccessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) { tempBuffer.resize(floatsToRead); outputRawBuffer = tempBuffer.data(); } // always read floating point data for AIDL if (!mOutBuffer->audioBuffer() || !outputQ->read(mOutBuffer->audioBuffer()->f32, floatsToRead)) { if (!outputQ->read(outputRawBuffer, floatsToRead)) { ALOGE("%s failed to read %zu from outputQ to audioBuffer %p", __func__, floatsToRead, mOutBuffer->audioBuffer()); return INVALID_OPERATION; } if (mConversion->mOutputAccessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) { accumulate_float(mOutBuffer->audioBuffer()->f32, outputRawBuffer, floatsToRead); } ALOGD("%s %s consumed %zu produced %zu", __func__, effectName.c_str(), floatsToWrite, floatsToRead); Loading