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);