summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2011-09-09 16:04:01 -0700
committerEric Laurent <elaurent@google.com>2011-09-12 12:40:35 -0700
commit55ac23bc116ad9ae38266a5e660fd22f5104348e (patch)
treea35e314e627c820268eb1cfb2e77abb21a13269e
parent67ba2276b9a5232685e14d416fea0b1250515594 (diff)
downloadlibhardware_legacy-55ac23bc116ad9ae38266a5e660fd22f5104348e.tar.gz
audio policy manager: invert SPDIF/HDMI priority
Route media audio in priority to S/PDIF output when available even if HDMI is connected. This allows users to chose to output audio to a different system than the display. Also force media volume to max when playing over S/PDIF. Change-Id: I03b82a7235cb60f2b5d6cf7923570554b07ac400
-rw-r--r--audio/AudioPolicyManagerBase.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/audio/AudioPolicyManagerBase.cpp b/audio/AudioPolicyManagerBase.cpp
index b7b4e27..f270d54 100644
--- a/audio/AudioPolicyManagerBase.cpp
+++ b/audio/AudioPolicyManagerBase.cpp
@@ -1663,10 +1663,10 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,
if (device) break;
}
#endif
- device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
- if (device) break;
device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET;
if (device) break;
+ device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
+ if (device) break;
device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET;
if (device) break;
device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_EARPIECE;
@@ -1684,10 +1684,10 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,
if (device) break;
}
#endif
- device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
- if (device) break;
device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET;
if (device) break;
+ device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
+ if (device) break;
device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET;
if (device) break;
device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER;
@@ -1733,10 +1733,10 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,
}
#endif
if (device2 == 0) {
- device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
+ device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET;
}
if (device2 == 0) {
- device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET;
+ device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL;
}
if (device2 == 0) {
device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET;
@@ -1945,7 +1945,8 @@ float AudioPolicyManagerBase::computeVolume(int stream, int index, audio_io_hand
// if volume is not 0 (not muted), force media volume to max on digital output
if (stream == AudioSystem::MUSIC &&
index != mStreams[stream].mIndexMin &&
- device == AudioSystem::DEVICE_OUT_AUX_DIGITAL) {
+ (device == AudioSystem::DEVICE_OUT_AUX_DIGITAL ||
+ device == AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET)) {
return 1.0;
}