Loading services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +2 −2 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ public: void clearOutput(); android::AudioMix &getMix(); android::AudioMix *getMix(); void setMix(AudioMix &mix); Loading Loading @@ -75,7 +75,7 @@ public: audio_devices_t availableDeviceTypes, AudioMix **policyMix); status_t getInputMixForAttr(audio_attributes_t attr, AudioMix *&policyMix); status_t getInputMixForAttr(audio_attributes_t attr, AudioMix **policyMix); }; }; // namespace android services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp +26 −26 Original line number Diff line number Diff line Loading @@ -46,9 +46,9 @@ void AudioPolicyMix::setMix(AudioMix &mix) mMix = mix; } android::AudioMix &AudioPolicyMix::getMix() android::AudioMix *AudioPolicyMix::getMix() { return mMix; return &mMix; } status_t AudioPolicyMixCollection::registerMix(String8 address, AudioMix mix) Loading Loading @@ -103,36 +103,36 @@ status_t AudioPolicyMixCollection::getOutputForAttr(audio_attributes_t attribute { for (size_t i = 0; i < size(); i++) { sp<AudioPolicyMix> policyMix = valueAt(i); AudioMix mix = policyMix->getMix(); if (mix.mMixType == MIX_TYPE_PLAYERS) { for (size_t j = 0; j < mix.mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_USAGE == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mUsage == attributes.usage) || (RULE_EXCLUDE_ATTRIBUTE_USAGE == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mUsage != attributes.usage)) { AudioMix *mix = policyMix->getMix(); if (mix->mMixType == MIX_TYPE_PLAYERS) { for (size_t j = 0; j < mix->mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_USAGE == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mUsage == attributes.usage) || (RULE_EXCLUDE_ATTRIBUTE_USAGE == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mUsage != attributes.usage)) { desc = policyMix->getOutput(); break; } if (strncmp(attributes.tags, "addr=", strlen("addr=")) == 0 && strncmp(attributes.tags + strlen("addr="), mix.mRegistrationId.string(), mix->mRegistrationId.string(), AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - strlen("addr=") - 1) == 0) { desc = policyMix->getOutput(); break; } } } else if (mix.mMixType == MIX_TYPE_RECORDERS) { } else if (mix->mMixType == MIX_TYPE_RECORDERS) { if (attributes.usage == AUDIO_USAGE_VIRTUAL_SOURCE && strncmp(attributes.tags, "addr=", strlen("addr=")) == 0 && strncmp(attributes.tags + strlen("addr="), mix.mRegistrationId.string(), mix->mRegistrationId.string(), AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - strlen("addr=") - 1) == 0) { desc = policyMix->getOutput(); } } if (desc != 0) { desc->mPolicyMix = &mix; desc->mPolicyMix = mix; return NO_ERROR; } } Loading @@ -144,19 +144,19 @@ audio_devices_t AudioPolicyMixCollection::getDeviceAndMixForInputSource(audio_so AudioMix **policyMix) { for (size_t i = 0; i < size(); i++) { AudioMix mix = valueAt(i)->getMix(); AudioMix *mix = valueAt(i)->getMix(); if (mix.mMixType != MIX_TYPE_RECORDERS) { if (mix->mMixType != MIX_TYPE_RECORDERS) { continue; } for (size_t j = 0; j < mix.mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mSource == inputSource) || (RULE_EXCLUDE_ATTRIBUTE_CAPTURE_PRESET == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mSource != inputSource)) { for (size_t j = 0; j < mix->mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mSource == inputSource) || (RULE_EXCLUDE_ATTRIBUTE_CAPTURE_PRESET == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mSource != inputSource)) { if (availDevices & AUDIO_DEVICE_IN_REMOTE_SUBMIX) { if (policyMix != NULL) { *policyMix = &mix; *policyMix = mix; } return AUDIO_DEVICE_IN_REMOTE_SUBMIX; } Loading @@ -167,7 +167,7 @@ audio_devices_t AudioPolicyMixCollection::getDeviceAndMixForInputSource(audio_so return AUDIO_DEVICE_NONE; } status_t AudioPolicyMixCollection::getInputMixForAttr(audio_attributes_t attr, AudioMix *&policyMix) status_t AudioPolicyMixCollection::getInputMixForAttr(audio_attributes_t attr, AudioMix **policyMix) { if (strncmp(attr.tags, "addr=", strlen("addr=")) != 0) { return BAD_VALUE; Loading @@ -180,13 +180,13 @@ status_t AudioPolicyMixCollection::getInputMixForAttr(audio_attributes_t attr, A return BAD_VALUE; } sp<AudioPolicyMix> audioPolicyMix = valueAt(index); AudioMix mix = audioPolicyMix->getMix(); AudioMix *mix = audioPolicyMix->getMix(); if (mix.mMixType != MIX_TYPE_PLAYERS) { if (mix->mMixType != MIX_TYPE_PLAYERS) { ALOGW("getInputForAttr() bad policy mix type for address %s", address.string()); return BAD_VALUE; } policyMix = &mix; *policyMix = mix; return NO_ERROR; } Loading services/audiopolicy/managerdefault/AudioPolicyManager.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1245,7 +1245,7 @@ status_t AudioPolicyManager::getInputForAttr(const audio_attributes_t *attr, if (inputSource == AUDIO_SOURCE_REMOTE_SUBMIX && strncmp(attr->tags, "addr=", strlen("addr=")) == 0) { status_t ret = mPolicyMixes.getInputMixForAttr(*attr, policyMix); status_t ret = mPolicyMixes.getInputMixForAttr(*attr, &policyMix); if (ret != NO_ERROR) { return ret; } Loading Loading @@ -1364,7 +1364,7 @@ status_t AudioPolicyManager::getInputForAttr(const audio_attributes_t *attr, inputDesc->mIsSoundTrigger = isSoundTrigger; inputDesc->mPolicyMix = policyMix; ALOGV("getInputForAttr() returns input type = %d", inputType); ALOGV("getInputForAttr() returns input type = %d", *inputType); addInput(*input, inputDesc); mpClientInterface->onAudioPortListUpdate(); Loading Loading @@ -3106,7 +3106,7 @@ status_t AudioPolicyManager::checkOutputsForDevice(const sp<DeviceDescriptor> de address.string()); } policyMix->setOutput(desc); desc->mPolicyMix = &(policyMix->getMix()); desc->mPolicyMix = policyMix->getMix(); } else if ((desc->mFlags & AUDIO_OUTPUT_FLAG_DIRECT) == 0) { // no duplicated output for direct outputs and Loading Loading
services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +2 −2 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ public: void clearOutput(); android::AudioMix &getMix(); android::AudioMix *getMix(); void setMix(AudioMix &mix); Loading Loading @@ -75,7 +75,7 @@ public: audio_devices_t availableDeviceTypes, AudioMix **policyMix); status_t getInputMixForAttr(audio_attributes_t attr, AudioMix *&policyMix); status_t getInputMixForAttr(audio_attributes_t attr, AudioMix **policyMix); }; }; // namespace android
services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp +26 −26 Original line number Diff line number Diff line Loading @@ -46,9 +46,9 @@ void AudioPolicyMix::setMix(AudioMix &mix) mMix = mix; } android::AudioMix &AudioPolicyMix::getMix() android::AudioMix *AudioPolicyMix::getMix() { return mMix; return &mMix; } status_t AudioPolicyMixCollection::registerMix(String8 address, AudioMix mix) Loading Loading @@ -103,36 +103,36 @@ status_t AudioPolicyMixCollection::getOutputForAttr(audio_attributes_t attribute { for (size_t i = 0; i < size(); i++) { sp<AudioPolicyMix> policyMix = valueAt(i); AudioMix mix = policyMix->getMix(); if (mix.mMixType == MIX_TYPE_PLAYERS) { for (size_t j = 0; j < mix.mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_USAGE == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mUsage == attributes.usage) || (RULE_EXCLUDE_ATTRIBUTE_USAGE == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mUsage != attributes.usage)) { AudioMix *mix = policyMix->getMix(); if (mix->mMixType == MIX_TYPE_PLAYERS) { for (size_t j = 0; j < mix->mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_USAGE == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mUsage == attributes.usage) || (RULE_EXCLUDE_ATTRIBUTE_USAGE == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mUsage != attributes.usage)) { desc = policyMix->getOutput(); break; } if (strncmp(attributes.tags, "addr=", strlen("addr=")) == 0 && strncmp(attributes.tags + strlen("addr="), mix.mRegistrationId.string(), mix->mRegistrationId.string(), AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - strlen("addr=") - 1) == 0) { desc = policyMix->getOutput(); break; } } } else if (mix.mMixType == MIX_TYPE_RECORDERS) { } else if (mix->mMixType == MIX_TYPE_RECORDERS) { if (attributes.usage == AUDIO_USAGE_VIRTUAL_SOURCE && strncmp(attributes.tags, "addr=", strlen("addr=")) == 0 && strncmp(attributes.tags + strlen("addr="), mix.mRegistrationId.string(), mix->mRegistrationId.string(), AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - strlen("addr=") - 1) == 0) { desc = policyMix->getOutput(); } } if (desc != 0) { desc->mPolicyMix = &mix; desc->mPolicyMix = mix; return NO_ERROR; } } Loading @@ -144,19 +144,19 @@ audio_devices_t AudioPolicyMixCollection::getDeviceAndMixForInputSource(audio_so AudioMix **policyMix) { for (size_t i = 0; i < size(); i++) { AudioMix mix = valueAt(i)->getMix(); AudioMix *mix = valueAt(i)->getMix(); if (mix.mMixType != MIX_TYPE_RECORDERS) { if (mix->mMixType != MIX_TYPE_RECORDERS) { continue; } for (size_t j = 0; j < mix.mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mSource == inputSource) || (RULE_EXCLUDE_ATTRIBUTE_CAPTURE_PRESET == mix.mCriteria[j].mRule && mix.mCriteria[j].mAttr.mSource != inputSource)) { for (size_t j = 0; j < mix->mCriteria.size(); j++) { if ((RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mSource == inputSource) || (RULE_EXCLUDE_ATTRIBUTE_CAPTURE_PRESET == mix->mCriteria[j].mRule && mix->mCriteria[j].mAttr.mSource != inputSource)) { if (availDevices & AUDIO_DEVICE_IN_REMOTE_SUBMIX) { if (policyMix != NULL) { *policyMix = &mix; *policyMix = mix; } return AUDIO_DEVICE_IN_REMOTE_SUBMIX; } Loading @@ -167,7 +167,7 @@ audio_devices_t AudioPolicyMixCollection::getDeviceAndMixForInputSource(audio_so return AUDIO_DEVICE_NONE; } status_t AudioPolicyMixCollection::getInputMixForAttr(audio_attributes_t attr, AudioMix *&policyMix) status_t AudioPolicyMixCollection::getInputMixForAttr(audio_attributes_t attr, AudioMix **policyMix) { if (strncmp(attr.tags, "addr=", strlen("addr=")) != 0) { return BAD_VALUE; Loading @@ -180,13 +180,13 @@ status_t AudioPolicyMixCollection::getInputMixForAttr(audio_attributes_t attr, A return BAD_VALUE; } sp<AudioPolicyMix> audioPolicyMix = valueAt(index); AudioMix mix = audioPolicyMix->getMix(); AudioMix *mix = audioPolicyMix->getMix(); if (mix.mMixType != MIX_TYPE_PLAYERS) { if (mix->mMixType != MIX_TYPE_PLAYERS) { ALOGW("getInputForAttr() bad policy mix type for address %s", address.string()); return BAD_VALUE; } policyMix = &mix; *policyMix = mix; return NO_ERROR; } Loading
services/audiopolicy/managerdefault/AudioPolicyManager.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1245,7 +1245,7 @@ status_t AudioPolicyManager::getInputForAttr(const audio_attributes_t *attr, if (inputSource == AUDIO_SOURCE_REMOTE_SUBMIX && strncmp(attr->tags, "addr=", strlen("addr=")) == 0) { status_t ret = mPolicyMixes.getInputMixForAttr(*attr, policyMix); status_t ret = mPolicyMixes.getInputMixForAttr(*attr, &policyMix); if (ret != NO_ERROR) { return ret; } Loading Loading @@ -1364,7 +1364,7 @@ status_t AudioPolicyManager::getInputForAttr(const audio_attributes_t *attr, inputDesc->mIsSoundTrigger = isSoundTrigger; inputDesc->mPolicyMix = policyMix; ALOGV("getInputForAttr() returns input type = %d", inputType); ALOGV("getInputForAttr() returns input type = %d", *inputType); addInput(*input, inputDesc); mpClientInterface->onAudioPortListUpdate(); Loading Loading @@ -3106,7 +3106,7 @@ status_t AudioPolicyManager::checkOutputsForDevice(const sp<DeviceDescriptor> de address.string()); } policyMix->setOutput(desc); desc->mPolicyMix = &(policyMix->getMix()); desc->mPolicyMix = policyMix->getMix(); } else if ((desc->mFlags & AUDIO_OUTPUT_FLAG_DIRECT) == 0) { // no duplicated output for direct outputs and Loading