AudioFlinger: forward active tracks channel mask to spatializer effect

Partial implementation of track metadata forwarding to effects.
Currently limited to spatializer effect and track channel masks.

Bug: 303920722
Test: atest AudioEffectTest
Test: atest atest android.media.audio.cts.SpatializerTest
Change-Id: Iaaa947f12946d6f87dffb3993612d58f0400e6c5
diff --git a/services/audioflinger/Effects.h b/services/audioflinger/Effects.h
index 9208c88..8583d47 100644
--- a/services/audioflinger/Effects.h
+++ b/services/audioflinger/Effects.h
@@ -224,9 +224,11 @@
     sp<IAfEffectModule> asEffectModule() final { return this; }
 
     bool isHapticGenerator() const final;
+    bool isSpatializer() const final;
 
     status_t setHapticIntensity(int id, os::HapticScale intensity) final;
     status_t setVibratorInfo(const media::AudioVibratorInfo& vibratorInfo) final;
+    status_t sendMetadata(const std::vector<playback_track_metadata_v7_t>& metadata) final;
 
     status_t getConfigs(audio_config_base_t* inputCfg,
                                 audio_config_base_t* outputCfg,
@@ -513,6 +515,10 @@
         return mEffects[index];
     }
 
+    void sendMetadata_l(const std::vector<playback_track_metadata_v7_t>& allMetadata,
+        const std::optional<const std::vector<playback_track_metadata_v7_t>> spatializedMetadata)
+            final REQUIRES(audio_utils::ThreadBase_Mutex);
+
     void setThread(const sp<IAfThreadBase>& thread) final;
 
 private: