audio flinger: fix initial mmap stream volume

The initial stream volume values received by a MMAP thread
while the mmap stream is being open by audio policy manager
were ignored because the stream type was not yet initialized (the stream
type is received from audio policy manager when getOutputForAttr
returns).

The fix consists in using the same volume/mute data structure array for
MmapPlaybackThread as for PlaybackThread in order to store all stream
volume and mute values but only use the one corresponding to the
configured mStreamType.

Landing again due to missing If4654c1d9ea7fd109a8ab2b9b2431db71b966243

Bug: 284836454
Test: repro steps in bug
Merged-In: Ib3613f3294f8247882ba31564cdcc0c735f948b6
Change-Id: I99f9f10a1546b2fcc88ccbc0557b307aed5e2bd4
diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h
index 3105ad7..0ca79f9 100644
--- a/services/audioflinger/Threads.h
+++ b/services/audioflinger/Threads.h
@@ -2233,12 +2233,17 @@
 
 protected:
     void dumpInternals_l(int fd, const Vector<String16>& args) final;
+                float       streamVolume_l() const {
+                    return mStreamTypes[mStreamType].volume;
+                }
+                bool     streamMuted_l() const {
+                    return mStreamTypes[mStreamType].mute;
+                }
 
+                stream_type_t               mStreamTypes[AUDIO_STREAM_CNT];
                 audio_stream_type_t         mStreamType;
                 float                       mMasterVolume;
-                float                       mStreamVolume;
                 bool                        mMasterMute;
-                bool                        mStreamMute;
                 AudioStreamOut*             mOutput;
 
                 mediautils::atomic_sp<audio_utils::MelProcessor> mMelProcessor;