EffectModule: robust computation of mMaxDisableWaitCnt

To compensate for overflow / underflow.

Test: Solo Tester and CTS effects
Bug: 70684279
Change-Id: I7ac3d74c43320a2c6427ba2b424c8edb5a0250b1
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp
index cd3c588..979908a 100644
--- a/services/audioflinger/Effects.cpp
+++ b/services/audioflinger/Effects.cpp
@@ -578,8 +578,11 @@
         }
     }
 
-    mMaxDisableWaitCnt = (MAX_DISABLE_TIME_MS * mConfig.outputCfg.samplingRate) /
-            (1000 * mConfig.outputCfg.buffer.frameCount);
+    // mConfig.outputCfg.buffer.frameCount cannot be zero.
+    mMaxDisableWaitCnt = (uint32_t)std::max(
+            (uint64_t)1, // mMaxDisableWaitCnt must be greater than zero.
+            (uint64_t)MAX_DISABLE_TIME_MS * mConfig.outputCfg.samplingRate
+                / ((uint64_t)1000 * mConfig.outputCfg.buffer.frameCount));
 
 exit:
     // TODO: consider clearing mConfig on error.