AIDL effect: Skip status FMQ verification for offload effects
Bug: 297295866
Test: Enable AIDL and test on Pixel YTM
Change-Id: I5a673386f0d9c07dd63303495df42548e2a18fea
diff --git a/media/libaudiohal/impl/EffectConversionHelperAidl.cpp b/media/libaudiohal/impl/EffectConversionHelperAidl.cpp
index 2834076..80cb80d 100644
--- a/media/libaudiohal/impl/EffectConversionHelperAidl.cpp
+++ b/media/libaudiohal/impl/EffectConversionHelperAidl.cpp
@@ -178,8 +178,9 @@
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();
@@ -455,8 +456,9 @@
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;
}
@@ -464,12 +466,22 @@
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;