OSDN Git Service

Remote audio submix always has priority for media, only plays media
authorJean-Michel Trivi <jmtrivi@google.com>
Fri, 12 Oct 2012 01:06:33 +0000 (18:06 -0700)
committerJean-Michel Trivi <jmtrivi@google.com>
Fri, 12 Oct 2012 02:18:40 +0000 (19:18 -0700)
Don't use force use mechanism for remote audio submix routing.

Prevent streams of strategy sonification to be played over
 remote audio submix (e.g. WFD) and HDMI

Bug 7318180

Change-Id: Ic5c87d3c568873dffea9002cf87ecf42b403cde6

audio/AudioPolicyManagerBase.cpp
include/hardware_legacy/AudioSystemLegacy.h

index cacc37d..51b1501 100644 (file)
@@ -387,8 +387,7 @@ void AudioPolicyManagerBase::setForceUse(AudioSystem::force_use usage, AudioSyst
             config != AudioSystem::FORCE_WIRED_ACCESSORY &&
             config != AudioSystem::FORCE_ANALOG_DOCK &&
             config != AudioSystem::FORCE_DIGITAL_DOCK && config != AudioSystem::FORCE_NONE &&
-            config != AudioSystem::FORCE_NO_BT_A2DP &&
-            config != AudioSystem::FORCE_REMOTE_SUBMIX) {
+            config != AudioSystem::FORCE_NO_BT_A2DP) {
             ALOGW("setForceUse() invalid config %d for FOR_MEDIA", config);
             return;
         }
@@ -2187,8 +2186,8 @@ audio_devices_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy st
 
     case STRATEGY_MEDIA: {
         uint32_t device2 = AUDIO_DEVICE_NONE;
-        if (mHasRemoteSubmix
-                && mForceUse[AudioSystem::FOR_MEDIA] == AudioSystem::FORCE_REMOTE_SUBMIX) {
+        if (strategy != STRATEGY_SONIFICATION) {
+            // no sonification on remote submix (e.g. WFD)
             device2 = mAvailableOutputDevices & AUDIO_DEVICE_OUT_REMOTE_SUBMIX;
         }
         if ((device2 == AUDIO_DEVICE_NONE) &&
@@ -2217,7 +2216,8 @@ audio_devices_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy st
         if (device2 == AUDIO_DEVICE_NONE) {
             device2 = mAvailableOutputDevices & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET;
         }
-        if (device2 == AUDIO_DEVICE_NONE) {
+        if ((device2 == AUDIO_DEVICE_NONE) && (strategy != STRATEGY_SONIFICATION)) {
+            // no sonification on aux digital (e.g. HDMI)
             device2 = mAvailableOutputDevices & AUDIO_DEVICE_OUT_AUX_DIGITAL;
         }
         if (device2 == AUDIO_DEVICE_NONE) {
index 0b9b4d0..6296b8b 100644 (file)
@@ -288,7 +288,6 @@ public:
         FORCE_ANALOG_DOCK,
         FORCE_DIGITAL_DOCK,
         FORCE_NO_BT_A2DP,
-        FORCE_REMOTE_SUBMIX,
         FORCE_SYSTEM_ENFORCED,
         NUM_FORCE_CONFIG,
         FORCE_DEFAULT = FORCE_NONE