Apply volume setting for the volume controller effect in EffectChain

The last EFFECT_CMD_SET_VOLUME parameter received in lvm EffectBundle
takes effect. Always send volume to HAL for the volume controller
effect make sure the effect bundle volume won't be override by non
volume controller effect

Bug: 337114946
Test: atest CtsMediaAudioTestCases
Test: atest AudioEffectTest
Test: repo steps in b/337114946
Change-Id: If3ee3fc85d7268a6f5d4d75abfbb9c61cdc78bd8
Merged-In: If3ee3fc85d7268a6f5d4d75abfbb9c61cdc78bd8
diff --git a/services/audioflinger/Effects.h b/services/audioflinger/Effects.h
index 3492f3b..965ad43 100644
--- a/services/audioflinger/Effects.h
+++ b/services/audioflinger/Effects.h
@@ -217,7 +217,8 @@
     }
     status_t setDevices(const AudioDeviceTypeAddrVector& devices) final EXCLUDES_EffectBase_Mutex;
     status_t setInputDevice(const AudioDeviceTypeAddr& device) final EXCLUDES_EffectBase_Mutex;
-    status_t setVolume(uint32_t *left, uint32_t *right, bool controller, bool force) final;
+    status_t setVolume_l(uint32_t* left, uint32_t* right, bool controller, bool force) final
+            REQUIRES(audio_utils::EffectChain_Mutex);
     status_t setMode(audio_mode_t mode) final EXCLUDES_EffectBase_Mutex;
     status_t setAudioSource(audio_source_t source) final EXCLUDES_EffectBase_Mutex;
     status_t start_l() final REQUIRES(audio_utils::EffectChain_Mutex) EXCLUDES_EffectBase_Mutex;
@@ -265,8 +266,8 @@
                 ? EFFECT_BUFFER_ACCESS_WRITE : EFFECT_BUFFER_ACCESS_ACCUMULATE;
     }
 
-    status_t setVolumeInternal(uint32_t *left, uint32_t *right, bool controller);
-
+    status_t setVolumeInternal(uint32_t* left, uint32_t* right,
+                               bool controller /* the volume controller effect of the chain */);
 
     effect_config_t     mConfig;    // input and output audio configuration
     sp<EffectHalInterface> mEffectInterface; // Effect module HAL