summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/managerdefault
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2015-06-25 11:48:20 -0700
committerEric Laurent <elaurent@google.com>2015-06-25 11:48:20 -0700
commitcc750d3604b33a92374253b12dd739dc06440aad (patch)
treed2fb46dbd9994624d5da2dcd6141add90d79d562 /services/audiopolicy/managerdefault
parented8505836c0b2fba0ab4be0c1eff31d4f241bc1d (diff)
downloadframeworks_av-cc750d3604b33a92374253b12dd739dc06440aad.zip
frameworks_av-cc750d3604b33a92374253b12dd739dc06440aad.tar.gz
frameworks_av-cc750d3604b33a92374253b12dd739dc06440aad.tar.bz2
audio policy: fix several device descriptor issues.
- checkOutputsForDevice() should only clear device descriptor attributes if the device is digital. - checkInputsForDevice() did not clear device descriptor attributes at all. - AudioPort::clearCapabilities() and importAudioPort() should not manage gains as these are device specific. - importAudioPort() should load a default port config. Bug: 21990937. Change-Id: Ida762ed8f9baaabae392cb4291eff1a8d3009751
Diffstat (limited to 'services/audiopolicy/managerdefault')
-rw-r--r--services/audiopolicy/managerdefault/AudioPolicyManager.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index a0de34d..ee25b71 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -3140,8 +3140,11 @@ status_t AudioPolicyManager::checkOutputsForDevice(const sp<DeviceDescriptor> de
{
audio_devices_t device = devDesc->type();
sp<SwAudioOutputDescriptor> desc;
- // erase all current sample rates, formats and channel masks
- devDesc->clearCapabilities();
+
+ if (audio_device_is_digital(device)) {
+ // erase all current sample rates, formats and channel masks
+ devDesc->clearCapabilities();
+ }
if (state == AUDIO_POLICY_DEVICE_STATE_AVAILABLE) {
// first list already open outputs that can be routed to this device
@@ -3433,8 +3436,13 @@ status_t AudioPolicyManager::checkInputsForDevice(const sp<DeviceDescriptor> dev
const String8 address)
{
audio_devices_t device = devDesc->type();
-
sp<AudioInputDescriptor> desc;
+
+ if (audio_device_is_digital(device)) {
+ // erase all current sample rates, formats and channel masks
+ devDesc->clearCapabilities();
+ }
+
if (state == AUDIO_POLICY_DEVICE_STATE_AVAILABLE) {
// first list already open inputs that can be routed to this device
for (size_t input_index = 0; input_index < mInputs.size(); input_index++) {