Effect: Configure effect after the buffer is set.

This properly sets ACCUMULATE vs WRITE mode.
Fixes regression due to
commit f1f22e7720456d52dc3cc844a51a21216c7be4e6

Test: YouTube Music, ensure that volume doesn't increase.
Bug: 200228253
Bug: 204489508
Change-Id: Ieb309b4103cf29c8a51818135f9f83c292d7aaed
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp
index b80943e..d09c9f4 100644
--- a/services/audioflinger/Effects.cpp
+++ b/services/audioflinger/Effects.cpp
@@ -953,11 +953,7 @@
     // Auxiliary effect:
     //      accumulates in output buffer: input buffer != output buffer
     // Therefore: accumulate <=> input buffer != output buffer
-    if (mConfig.inputCfg.buffer.raw != mConfig.outputCfg.buffer.raw) {
-        mConfig.outputCfg.accessMode = EFFECT_BUFFER_ACCESS_ACCUMULATE;
-    } else {
-        mConfig.outputCfg.accessMode = EFFECT_BUFFER_ACCESS_WRITE;
-    }
+    mConfig.outputCfg.accessMode = requiredEffectBufferAccessMode();
     mConfig.inputCfg.mask = EFFECT_CONFIG_ALL;
     mConfig.outputCfg.mask = EFFECT_CONFIG_ALL;
     mConfig.inputCfg.buffer.frameCount = callback->frameCount();
@@ -2340,8 +2336,10 @@
         // output buffer, otherwise to chain input buffer
         if (idx_insert == size) {
             if (idx_insert != 0) {
-                mEffects[idx_insert-1]->configure();
-                mEffects[idx_insert-1]->setOutBuffer(mInBuffer);
+                // update channel mask before setting output buffer.
+                mEffects[idx_insert - 1]->configure();
+                mEffects[idx_insert - 1]->setOutBuffer(mInBuffer); // set output buffer
+                mEffects[idx_insert - 1]->updateAccessMode();      // reconfig if neeeded.
             }
             effect->setOutBuffer(mOutBuffer);
         } else {