Loading services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -72,8 +72,8 @@ public: */ */ status_t getOutputForAttr(const audio_attributes_t& attributes, uid_t uid, status_t getOutputForAttr(const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, sp<AudioPolicyMix> &primaryMix, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs); std::vector<sp<AudioPolicyMix>> *secondaryMixes); sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, const DeviceVector &availableDeviceTypes, const DeviceVector &availableDeviceTypes, Loading services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp +8 −19 Original line number Original line Diff line number Diff line Loading @@ -150,11 +150,11 @@ void AudioPolicyMixCollection::closeOutput(sp<SwAudioOutputDescriptor> &desc) status_t AudioPolicyMixCollection::getOutputForAttr( status_t AudioPolicyMixCollection::getOutputForAttr( const audio_attributes_t& attributes, uid_t uid, const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, sp<AudioPolicyMix> &primaryMix, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs) std::vector<sp<AudioPolicyMix>> *secondaryMixes) { { ALOGV("getOutputForAttr() querying %zu mixes:", size()); ALOGV("getOutputForAttr() querying %zu mixes:", size()); primaryDesc = 0; primaryMix.clear(); for (size_t i = 0; i < size(); i++) { for (size_t i = 0; i < size(); i++) { sp<AudioPolicyMix> policyMix = itemAt(i); sp<AudioPolicyMix> policyMix = itemAt(i); const bool primaryOutputMix = !is_mix_loopback_render(policyMix->mRouteFlags); const bool primaryOutputMix = !is_mix_loopback_render(policyMix->mRouteFlags); Loading @@ -169,13 +169,7 @@ status_t AudioPolicyMixCollection::getOutputForAttr( return INVALID_OPERATION; return INVALID_OPERATION; } } sp<SwAudioOutputDescriptor> policyDesc = policyMix->getOutput(); if (primaryOutputMix && primaryMix != nullptr) { if (!policyDesc) { ALOGV("%s: Skiping %zu: Mix has no output", __func__, i); continue; } if (primaryOutputMix && primaryDesc != 0) { ALOGV("%s: Skiping %zu: Primary output already found", __func__, i); ALOGV("%s: Skiping %zu: Primary output already found", __func__, i); continue; // Primary output already found continue; // Primary output already found } } Loading @@ -191,18 +185,13 @@ status_t AudioPolicyMixCollection::getOutputForAttr( case MixMatchStatus::MATCH:; case MixMatchStatus::MATCH:; } } policyDesc->mPolicyMix = policyMix; if (primaryOutputMix) { if (primaryOutputMix) { primaryDesc = policyDesc; primaryMix = policyMix; ALOGV("%s: Mix %zu: set primary desc", __func__, i); ALOGV("%s: Mix %zu: set primary desc", __func__, i); } else { if (policyDesc->mIoHandle == AUDIO_IO_HANDLE_NONE) { ALOGV("%s: Mix %zu ignored as secondaryOutput because not opened yet", __func__, i); } else { } else { ALOGV("%s: Add a secondary desc %zu", __func__, i); ALOGV("%s: Add a secondary desc %zu", __func__, i); if (secondaryDescs != nullptr) { if (secondaryMixes != nullptr) { secondaryDescs->push_back(policyDesc); secondaryMixes->push_back(policyMix); } } } } } } } Loading Loading
services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -72,8 +72,8 @@ public: */ */ status_t getOutputForAttr(const audio_attributes_t& attributes, uid_t uid, status_t getOutputForAttr(const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, sp<AudioPolicyMix> &primaryMix, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs); std::vector<sp<AudioPolicyMix>> *secondaryMixes); sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, const DeviceVector &availableDeviceTypes, const DeviceVector &availableDeviceTypes, Loading
services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp +8 −19 Original line number Original line Diff line number Diff line Loading @@ -150,11 +150,11 @@ void AudioPolicyMixCollection::closeOutput(sp<SwAudioOutputDescriptor> &desc) status_t AudioPolicyMixCollection::getOutputForAttr( status_t AudioPolicyMixCollection::getOutputForAttr( const audio_attributes_t& attributes, uid_t uid, const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, sp<AudioPolicyMix> &primaryMix, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs) std::vector<sp<AudioPolicyMix>> *secondaryMixes) { { ALOGV("getOutputForAttr() querying %zu mixes:", size()); ALOGV("getOutputForAttr() querying %zu mixes:", size()); primaryDesc = 0; primaryMix.clear(); for (size_t i = 0; i < size(); i++) { for (size_t i = 0; i < size(); i++) { sp<AudioPolicyMix> policyMix = itemAt(i); sp<AudioPolicyMix> policyMix = itemAt(i); const bool primaryOutputMix = !is_mix_loopback_render(policyMix->mRouteFlags); const bool primaryOutputMix = !is_mix_loopback_render(policyMix->mRouteFlags); Loading @@ -169,13 +169,7 @@ status_t AudioPolicyMixCollection::getOutputForAttr( return INVALID_OPERATION; return INVALID_OPERATION; } } sp<SwAudioOutputDescriptor> policyDesc = policyMix->getOutput(); if (primaryOutputMix && primaryMix != nullptr) { if (!policyDesc) { ALOGV("%s: Skiping %zu: Mix has no output", __func__, i); continue; } if (primaryOutputMix && primaryDesc != 0) { ALOGV("%s: Skiping %zu: Primary output already found", __func__, i); ALOGV("%s: Skiping %zu: Primary output already found", __func__, i); continue; // Primary output already found continue; // Primary output already found } } Loading @@ -191,18 +185,13 @@ status_t AudioPolicyMixCollection::getOutputForAttr( case MixMatchStatus::MATCH:; case MixMatchStatus::MATCH:; } } policyDesc->mPolicyMix = policyMix; if (primaryOutputMix) { if (primaryOutputMix) { primaryDesc = policyDesc; primaryMix = policyMix; ALOGV("%s: Mix %zu: set primary desc", __func__, i); ALOGV("%s: Mix %zu: set primary desc", __func__, i); } else { if (policyDesc->mIoHandle == AUDIO_IO_HANDLE_NONE) { ALOGV("%s: Mix %zu ignored as secondaryOutput because not opened yet", __func__, i); } else { } else { ALOGV("%s: Add a secondary desc %zu", __func__, i); ALOGV("%s: Add a secondary desc %zu", __func__, i); if (secondaryDescs != nullptr) { if (secondaryMixes != nullptr) { secondaryDescs->push_back(policyDesc); secondaryMixes->push_back(policyMix); } } } } } } } Loading