Exclude input devices when finding sinks from audio policy.
AUDIO_DEVICE_IN_LOOPBACK device was included as a sink for
output device, causing audio to output from both HDMI ARC
and TV speaker.
Bug: 26175894
Change-Id: I2922a8c5a47e3e480a5a2501fda5ab856e959ff4
(cherry picked from commit c289c4eb366f24714d5c85b55c04f0e4cb9b0df4)
diff --git a/services/core/java/com/android/server/tv/TvInputHardwareManager.java b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
index 7f4c42b..0f77242 100644
--- a/services/core/java/com/android/server/tv/TvInputHardwareManager.java
+++ b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
@@ -38,6 +38,7 @@
import android.media.AudioPatch;
import android.media.AudioPort;
import android.media.AudioPortConfig;
+import android.media.AudioSystem;
import android.media.tv.ITvInputHardware;
import android.media.tv.ITvInputHardwareCallback;
import android.media.tv.TvInputHardwareInfo;
@@ -697,7 +698,8 @@
}
int sinkDevice = mAudioManager.getDevicesForStream(AudioManager.STREAM_MUSIC);
for (AudioDevicePort port : devicePorts) {
- if ((port.type() & sinkDevice) != 0) {
+ if ((port.type() & sinkDevice) != 0 &&
+ (port.type() & AudioSystem.DEVICE_BIT_IN) == 0) {
sinks.add(port);
}
}