AudioFlinger: Unify spatializer behavior with normal mixer thread
Test: Basic playback
Bug: 230799946
Change-Id: I6de2cb672b65f4d1223b3a11e7c4a38ee0e857b4
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index de5aead..49f6bfc 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -3008,6 +3008,7 @@
// Calculate size of normal sink buffer relative to the HAL output buffer size
double multiplier = 1.0;
+ // Note: mType == SPATIALIZER does not support FastMixer.
if (mType == MIXER && (kUseFastMixer == FastMixer_Static ||
kUseFastMixer == FastMixer_Dynamic)) {
size_t minNormalFrameCount = (kMinNormalSinkBufferSizeMs * mSampleRate) / 1000;
@@ -3469,7 +3470,7 @@
sp<EffectBufferHalInterface> halInBuffer, halOutBuffer;
effect_buffer_t *buffer = nullptr; // only used for non global sessions
- if (mType == SPATIALIZER ) {
+ if (mType == SPATIALIZER) {
if (!audio_is_global_session(session)) {
// player sessions on a spatializer output will use a dedicated input buffer and
// will either output multi channel to mEffectBuffer if the track is spatilaized
@@ -3695,7 +3696,7 @@
cacheParameters_l();
mSleepTimeUs = mIdleSleepTimeUs;
- if (mType == MIXER) {
+ if (mType == MIXER || mType == SPATIALIZER) {
sleepTimeShift = 0;
}
@@ -3873,7 +3874,7 @@
mStandbyTimeNs = systemTime() + mStandbyDelayNs;
mSleepTimeUs = mIdleSleepTimeUs;
- if (mType == MIXER) {
+ if (mType == MIXER || mType == SPATIALIZER) {
sleepTimeShift = 0;
}
@@ -4150,7 +4151,8 @@
// write blocked detection
const int64_t deltaWriteNs = lastIoEndNs - lastIoBeginNs;
- if (mType == MIXER && deltaWriteNs > maxPeriod) {
+ if ((mType == MIXER || mType == SPATIALIZER)
+ && deltaWriteNs > maxPeriod) {
mNumDelayedWrites++;
if ((lastIoEndNs - lastWarning) > kWarningThrottleNs) {
ATRACE_NAME("underrun");
@@ -4171,7 +4173,7 @@
(mMixerStatus == MIXER_DRAIN_ALL)) {
threadLoop_drain();
}
- if (mType == MIXER && !mStandby) {
+ if ((mType == MIXER || mType == SPATIALIZER) && !mStandby) {
if (mThreadThrottle
&& mMixerStatus == MIXER_TRACKS_READY // we are mixing (active tracks)