summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2014-12-10 22:20:24 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-10 22:20:24 +0000
commitbd9df749bf5875fb2a1d909b0da920b8f261a419 (patch)
tree7bea3188b635383b7122f07cb57f0392dd6c8455 /services
parent66b17e9dfe114ae968bfb2f8ad8325527e373c65 (diff)
parent1546028a2d02837f88f7ea1a4109e7649b665d2f (diff)
downloadframeworks_av-bd9df749bf5875fb2a1d909b0da920b8f261a419.zip
frameworks_av-bd9df749bf5875fb2a1d909b0da920b8f261a419.tar.gz
frameworks_av-bd9df749bf5875fb2a1d909b0da920b8f261a419.tar.bz2
am 1546028a: am 1767df77: AudioPolicyManager: distinguish between mirroring and rerouting
* commit '1546028a2d02837f88f7ea1a4109e7649b665d2f': AudioPolicyManager: distinguish between mirroring and rerouting
Diffstat (limited to 'services')
-rw-r--r--services/audiopolicy/AudioPolicyManager.cpp8
-rw-r--r--services/audiopolicy/AudioPolicyManager.h2
2 files changed, 8 insertions, 2 deletions
diff --git a/services/audiopolicy/AudioPolicyManager.cpp b/services/audiopolicy/AudioPolicyManager.cpp
index 68f3802..9918b6f 100644
--- a/services/audiopolicy/AudioPolicyManager.cpp
+++ b/services/audiopolicy/AudioPolicyManager.cpp
@@ -921,7 +921,6 @@ status_t AudioPolicyManager::getOutputForAttr(const audio_attributes_t *attr,
ALOGV("getOutputForAttr() usage=%d, content=%d, tag=%s flags=%08x",
attributes.usage, attributes.content_type, attributes.tags, attributes.flags);
- // TODO this is where filtering for custom policies (rerouting, dynamic sources) will go
routing_strategy strategy = (routing_strategy) getStrategyForAttr(&attributes);
audio_devices_t device = getDeviceForStrategy(strategy, false /*fromCache*/);
@@ -1962,7 +1961,12 @@ bool AudioPolicyManager::isStreamActiveRemotely(audio_stream_type_t stream,
const sp<AudioOutputDescriptor> outputDesc = mOutputs.valueAt(i);
if (((outputDesc->device() & APM_AUDIO_OUT_DEVICE_REMOTE_ALL) != 0) &&
outputDesc->isStreamActive(stream, inPastMs, sysTime)) {
- return true;
+ // only consider empty or "0" address to only qualify the screen mirroring case
+ // as "remote playback" (vs rerouting when the output is going to a dynamic policy)
+ if (outputDesc->mPolicyMixAddress == String8("")
+ || outputDesc->mPolicyMixAddress == String8("0")) {
+ return true;
+ }
}
}
return false;
diff --git a/services/audiopolicy/AudioPolicyManager.h b/services/audiopolicy/AudioPolicyManager.h
index 4214131..3eef8fe 100644
--- a/services/audiopolicy/AudioPolicyManager.h
+++ b/services/audiopolicy/AudioPolicyManager.h
@@ -155,6 +155,8 @@ public:
// return whether a stream is playing remotely, override to change the definition of
// local/remote playback, used for instance by notification manager to not make
// media players lose audio focus when not playing locally
+ // For the base implementation, "remotely" means playing during screen mirroring which
+ // uses an output for playback with a non-empty, non "0" address.
virtual bool isStreamActiveRemotely(audio_stream_type_t stream, uint32_t inPastMs = 0) const;
virtual bool isSourceActive(audio_source_t source) const;