AudioEffect: Convert aux buffer format from q4.27 to float

Test: Solo Tester aux reverb
Bug: 69853407
Change-Id: I72ca2377036e5ccfd5f4631ac6cc5e86d2e40433
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp
index bfb0fe2..eb4f34c 100644
--- a/services/audioflinger/Effects.cpp
+++ b/services/audioflinger/Effects.cpp
@@ -338,9 +338,9 @@
         if (isProcessImplemented()) {
             if (auxType) {
                 // We overwrite the aux input buffer here and clear after processing.
-                // Note that aux input buffers are format q4_27.
 #ifdef FLOAT_EFFECT_CHAIN
                 if (mSupportsFloat) {
+#ifndef FLOAT_AUX
                     // Do in-place float conversion for auxiliary effect input buffer.
                     static_assert(sizeof(float) <= sizeof(int32_t),
                             "in-place conversion requires sizeof(float) <= sizeof(int32_t)");
@@ -349,13 +349,21 @@
                             mConfig.inputCfg.buffer.f32,
                             mConfig.inputCfg.buffer.s32,
                             mConfig.inputCfg.buffer.frameCount);
+#endif // !FLOAT_AUX
                 } else
-#endif
+#endif // FLOAT_EFFECT_CHAIN
                 {
+#ifdef FLOAT_AUX
+                    memcpy_to_i16_from_float(
+                            mConfig.inputCfg.buffer.s16,
+                            mConfig.inputCfg.buffer.f32,
+                            mConfig.inputCfg.buffer.frameCount);
+#else
                     memcpy_to_i16_from_q4_27(
                             mConfig.inputCfg.buffer.s16,
                             mConfig.inputCfg.buffer.s32,
                             mConfig.inputCfg.buffer.frameCount);
+#endif
                 }
             }
 #ifdef FLOAT_EFFECT_CHAIN
@@ -415,9 +423,13 @@
 
         // clear auxiliary effect input buffer for next accumulation
         if (auxType) {
-            // input always q4_27 regardless of FLOAT_EFFECT_CHAIN.
+#ifdef FLOAT_AUX
+            const size_t size =
+                    mConfig.inputCfg.buffer.frameCount * inChannelCount * sizeof(float);
+#else
             const size_t size =
                     mConfig.inputCfg.buffer.frameCount * inChannelCount * sizeof(int32_t);
+#endif
             memset(mConfig.inputCfg.buffer.raw, 0, size);
         }
     } else if ((mDescriptor.flags & EFFECT_FLAG_TYPE_MASK) == EFFECT_FLAG_TYPE_INSERT &&