hal: Avoid derive playback snd device for capture usecase

In case of capture usecase, out stream would be invalid.
Avoid calling derive_playback_snd_device() if usecase type is
capture to avoid invalid out stream access.

CRs-Fixed: 2022593
Change-Id: Ibfcad0446ca2dd12f4167aa4ae91ea8e0cfc8e61
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index a42158e..35f7fe6 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1087,19 +1087,17 @@
               platform_get_snd_device_name(snd_device),
               platform_get_snd_device_name(usecase->out_snd_device),
               platform_check_backends_match(snd_device, usecase->out_snd_device));
-        uc_derive_snd_device = derive_playback_snd_device(adev->platform,
-                                           usecase, uc_info, snd_device);
-        if (usecase->type != PCM_CAPTURE &&
-            usecase != uc_info &&
-            ((uc_derive_snd_device != usecase->out_snd_device) || force_routing) &&
-            ((usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) ||
-             (usecase->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) ||
-             (usecase->devices & AUDIO_DEVICE_OUT_USB_DEVICE) ||
-             (usecase->devices & AUDIO_DEVICE_OUT_ALL_A2DP) ||
-             (usecase->devices & AUDIO_DEVICE_OUT_ALL_SCO)) &&
-             ((force_restart_session) ||
-             (platform_check_backends_match(snd_device, usecase->out_snd_device)))) {
-
+        if ((usecase->type != PCM_CAPTURE) && (usecase != uc_info)) {
+            uc_derive_snd_device = derive_playback_snd_device(adev->platform,
+                                               usecase, uc_info, snd_device);
+            if (((uc_derive_snd_device != usecase->out_snd_device) || force_routing) &&
+                ((usecase->devices & AUDIO_DEVICE_OUT_ALL_CODEC_BACKEND) ||
+                (usecase->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) ||
+                (usecase->devices & AUDIO_DEVICE_OUT_USB_DEVICE) ||
+                (usecase->devices & AUDIO_DEVICE_OUT_ALL_A2DP) ||
+                (usecase->devices & AUDIO_DEVICE_OUT_ALL_SCO)) &&
+                ((force_restart_session) ||
+                (platform_check_backends_match(snd_device, usecase->out_snd_device)))) {
                 ALOGD("%s:becf: check_usecases (%s) is active on (%s) - disabling ..",
                     __func__, use_case_table[usecase->id],
                       platform_get_snd_device_name(usecase->out_snd_device));
@@ -1108,6 +1106,7 @@
                 /* Enable existing usecase on derived playback device */
                 derive_snd_device[usecase->id] = uc_derive_snd_device;
                 num_uc_to_switch++;
+            }
         }
     }