Support AUDIO_SOURCE_REMOTE_SUBMIX use case

In audio policy manager, accept recording for
  AUDIO_SOURCE_REMOTE_SUBMIX source, use always available
  AUDIO_DEVICE_IN_REMOTE_SUBMIX device.

Bug 33273024

Change-Id: Id7572fb94d1078f601b0a4ceeaffedb6c7f434f8
(cherry picked from commit 5606e36adba9e9a6a384caea364f1cc57b64a600)
diff --git a/libaudio/ATVAudioPolicyManager.cpp b/libaudio/ATVAudioPolicyManager.cpp
index 2c959a9..deb1bf4 100644
--- a/libaudio/ATVAudioPolicyManager.cpp
+++ b/libaudio/ATVAudioPolicyManager.cpp
@@ -126,6 +126,8 @@
 {
     uint32_t device = AUDIO_DEVICE_NONE;
     bool usePhysRemote = true;
+    const audio_devices_t availableDeviceTypes = mAvailableInputDevices.types() &
+            ~AUDIO_DEVICE_BIT_IN;
 
     if (inputSource == AUDIO_SOURCE_VOICE_RECOGNITION) {
 #ifdef REMOTE_CONTROL_INTERFACE
@@ -147,8 +149,6 @@
 #endif
       ALOGV("getDeviceForInputSource %s %s", usePhysRemote ? "use physical" : "",
           mForceSubmixInputSelection ? "use virtual" : "");
-      audio_devices_t availableDeviceTypes = mAvailableInputDevices.types() &
-                                                ~AUDIO_DEVICE_BIT_IN;
       if (availableDeviceTypes & AUDIO_DEVICE_IN_WIRED_HEADSET &&
             usePhysRemote) {
           // User a wired headset (physical remote) if available, connected and active
@@ -163,6 +163,9 @@
           ALOGV("Use USB audio input");
           device = AUDIO_DEVICE_IN_USB_DEVICE;
       }
+    } else if ((availableDeviceTypes & AUDIO_DEVICE_IN_REMOTE_SUBMIX) &&
+            (inputSource == AUDIO_SOURCE_REMOTE_SUBMIX)) {
+        device = AUDIO_DEVICE_IN_REMOTE_SUBMIX;
     }
 
     ALOGV("getDeviceForInputSource() input source %d, device %08x", inputSource, device);