Ignore config error if non-offloadable effect is on offload thread
Return NO_ERROR if a non-offloadable effect is created on an offload thread
(since the sampling rate of offload output can be different from
the one supported by a software effect). Enabling the non-offloadable
effect will cause the track to move to a non-offload thread.
Bug: 70912361
Test: Create AudioEffect during 24kHz mp3 playback
Change-Id: Ie5bf264a9790d936c24476ea127bc6da9eefde73
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp
index 979290f..0ce5350 100644
--- a/services/audioflinger/Effects.cpp
+++ b/services/audioflinger/Effects.cpp
@@ -589,6 +589,13 @@
status = cmdStatus;
}
+ // Ignore error if non-offloadable effect is created on an offload thread.
+ // Will be switched to non-offload thread when the effect is enabled.
+ if (status != NO_ERROR && thread->type() == ThreadBase::OFFLOAD && !isOffloaded()) {
+ ALOGV("Ignore error %d on non-offloadable effect on offload thread", status);
+ status = NO_ERROR;
+ }
+
#ifdef MULTICHANNEL_EFFECT_CHAIN
if (status != NO_ERROR &&
(mConfig.inputCfg.channels != AUDIO_CHANNEL_OUT_STEREO