audioflinger: fix mmap stream volume

Fix bad casting from MmapPlaybackThread to VolumeInterface causing
volume commands to be lost by audio flinger for MMAP threads.

Bug: 37518243
Test: Verify volume is received by the audio HAL on MMAP streams
      Verify no regression for other stream types.

Change-Id: I584ae868245358b2edefecc46a5249092f8be229
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 42e9c6b..9f19dfd 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -2676,12 +2676,14 @@
 // checkPlaybackThread_l() must be called with AudioFlinger::mLock held
 AudioFlinger::VolumeInterface *AudioFlinger::getVolumeInterface_l(audio_io_handle_t output) const
 {
-    VolumeInterface *volumeInterface = (VolumeInterface *)mPlaybackThreads.valueFor(output).get();
+    VolumeInterface *volumeInterface = mPlaybackThreads.valueFor(output).get();
     if (volumeInterface == nullptr) {
         MmapThread *mmapThread = mMmapThreads.valueFor(output).get();
         if (mmapThread != nullptr) {
             if (mmapThread->isOutput()) {
-                volumeInterface = (VolumeInterface *)mmapThread;
+                MmapPlaybackThread *mmapPlaybackThread =
+                        static_cast<MmapPlaybackThread *>(mmapThread);
+                volumeInterface = mmapPlaybackThread;
             }
         }
     }
@@ -2692,11 +2694,13 @@
 {
     Vector <VolumeInterface *> volumeInterfaces;
     for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
-        volumeInterfaces.add((VolumeInterface *)mPlaybackThreads.valueAt(i).get());
+        volumeInterfaces.add(mPlaybackThreads.valueAt(i).get());
     }
     for (size_t i = 0; i < mMmapThreads.size(); i++) {
         if (mMmapThreads.valueAt(i)->isOutput()) {
-            volumeInterfaces.add((VolumeInterface *)mMmapThreads.valueAt(i).get());
+            MmapPlaybackThread *mmapPlaybackThread =
+                    static_cast<MmapPlaybackThread *>(mMmapThreads.valueAt(i).get());
+            volumeInterfaces.add(mmapPlaybackThread);
         }
     }
     return volumeInterfaces;