Loading services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +2 −2 Original line number Diff line number Diff line Loading @@ -72,8 +72,8 @@ public: */ status_t getOutputForAttr(const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs); sp<AudioPolicyMix> &primaryMix, std::vector<sp<AudioPolicyMix>> *secondaryMixes); sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, const DeviceVector &availableDeviceTypes, Loading services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp +8 −19 Original line number Diff line number Diff line Loading @@ -150,11 +150,11 @@ void AudioPolicyMixCollection::closeOutput(sp<SwAudioOutputDescriptor> &desc) status_t AudioPolicyMixCollection::getOutputForAttr( const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs) sp<AudioPolicyMix> &primaryMix, std::vector<sp<AudioPolicyMix>> *secondaryMixes) { ALOGV("getOutputForAttr() querying %zu mixes:", size()); primaryDesc = 0; primaryMix.clear(); for (size_t i = 0; i < size(); i++) { sp<AudioPolicyMix> policyMix = itemAt(i); const bool primaryOutputMix = !is_mix_loopback_render(policyMix->mRouteFlags); Loading @@ -169,13 +169,7 @@ status_t AudioPolicyMixCollection::getOutputForAttr( return INVALID_OPERATION; } sp<SwAudioOutputDescriptor> policyDesc = policyMix->getOutput(); if (!policyDesc) { ALOGV("%s: Skiping %zu: Mix has no output", __func__, i); continue; } if (primaryOutputMix && primaryDesc != 0) { if (primaryOutputMix && primaryMix != nullptr) { ALOGV("%s: Skiping %zu: Primary output already found", __func__, i); continue; // Primary output already found } Loading @@ -191,18 +185,13 @@ status_t AudioPolicyMixCollection::getOutputForAttr( case MixMatchStatus::MATCH:; } policyDesc->mPolicyMix = policyMix; if (primaryOutputMix) { primaryDesc = policyDesc; primaryMix = policyMix; 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 { ALOGV("%s: Add a secondary desc %zu", __func__, i); if (secondaryDescs != nullptr) { secondaryDescs->push_back(policyDesc); } if (secondaryMixes != nullptr) { secondaryMixes->push_back(policyMix); } } } Loading services/audiopolicy/managerdefault/AudioPolicyManager.cpp +247 −190 File changed.Preview size limit exceeded, changes collapsed. Show changes services/audiopolicy/managerdefault/AudioPolicyManager.h +17 −1 Original line number Diff line number Diff line Loading @@ -837,7 +837,7 @@ private: audio_output_flags_t *flags, audio_port_handle_t *selectedDeviceId, bool *isRequestedDeviceForExclusiveUse, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs, std::vector<sp<AudioPolicyMix>> *secondaryMixes, output_type_t *outputType); // internal method to return the output handle for the given device and format audio_io_handle_t getOutputForDevices( Loading @@ -848,6 +848,16 @@ private: audio_output_flags_t *flags, bool forceMutingHaptic = false); // Internal method checking if a direct output can be opened matching the requested // attributes, flags, config and devices. // If NAME_NOT_FOUND is returned, an attempt can be made to open a mixed output. status_t openDirectOutput( audio_stream_type_t stream, audio_session_t session, const audio_config_t *config, audio_output_flags_t flags, const DeviceVector &devices, audio_io_handle_t *output); /** * @brief getInputForDevice selects an input handle for a given input device and * requester context Loading Loading @@ -926,6 +936,12 @@ private: int delayMs, uid_t uid, sp<AudioPatch> *patchDescPtr); bool areAllDevicesSupported( const Vector<AudioDeviceTypeAddr>& devices, std::function<bool(audio_devices_t)> predicate, const char* context); }; }; Loading
services/audiopolicy/common/managerdefinitions/include/AudioPolicyMix.h +2 −2 Original line number Diff line number Diff line Loading @@ -72,8 +72,8 @@ public: */ status_t getOutputForAttr(const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs); sp<AudioPolicyMix> &primaryMix, std::vector<sp<AudioPolicyMix>> *secondaryMixes); sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource, const DeviceVector &availableDeviceTypes, Loading
services/audiopolicy/common/managerdefinitions/src/AudioPolicyMix.cpp +8 −19 Original line number Diff line number Diff line Loading @@ -150,11 +150,11 @@ void AudioPolicyMixCollection::closeOutput(sp<SwAudioOutputDescriptor> &desc) status_t AudioPolicyMixCollection::getOutputForAttr( const audio_attributes_t& attributes, uid_t uid, audio_output_flags_t flags, sp<SwAudioOutputDescriptor> &primaryDesc, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs) sp<AudioPolicyMix> &primaryMix, std::vector<sp<AudioPolicyMix>> *secondaryMixes) { ALOGV("getOutputForAttr() querying %zu mixes:", size()); primaryDesc = 0; primaryMix.clear(); for (size_t i = 0; i < size(); i++) { sp<AudioPolicyMix> policyMix = itemAt(i); const bool primaryOutputMix = !is_mix_loopback_render(policyMix->mRouteFlags); Loading @@ -169,13 +169,7 @@ status_t AudioPolicyMixCollection::getOutputForAttr( return INVALID_OPERATION; } sp<SwAudioOutputDescriptor> policyDesc = policyMix->getOutput(); if (!policyDesc) { ALOGV("%s: Skiping %zu: Mix has no output", __func__, i); continue; } if (primaryOutputMix && primaryDesc != 0) { if (primaryOutputMix && primaryMix != nullptr) { ALOGV("%s: Skiping %zu: Primary output already found", __func__, i); continue; // Primary output already found } Loading @@ -191,18 +185,13 @@ status_t AudioPolicyMixCollection::getOutputForAttr( case MixMatchStatus::MATCH:; } policyDesc->mPolicyMix = policyMix; if (primaryOutputMix) { primaryDesc = policyDesc; primaryMix = policyMix; 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 { ALOGV("%s: Add a secondary desc %zu", __func__, i); if (secondaryDescs != nullptr) { secondaryDescs->push_back(policyDesc); } if (secondaryMixes != nullptr) { secondaryMixes->push_back(policyMix); } } } Loading
services/audiopolicy/managerdefault/AudioPolicyManager.cpp +247 −190 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/audiopolicy/managerdefault/AudioPolicyManager.h +17 −1 Original line number Diff line number Diff line Loading @@ -837,7 +837,7 @@ private: audio_output_flags_t *flags, audio_port_handle_t *selectedDeviceId, bool *isRequestedDeviceForExclusiveUse, std::vector<sp<SwAudioOutputDescriptor>> *secondaryDescs, std::vector<sp<AudioPolicyMix>> *secondaryMixes, output_type_t *outputType); // internal method to return the output handle for the given device and format audio_io_handle_t getOutputForDevices( Loading @@ -848,6 +848,16 @@ private: audio_output_flags_t *flags, bool forceMutingHaptic = false); // Internal method checking if a direct output can be opened matching the requested // attributes, flags, config and devices. // If NAME_NOT_FOUND is returned, an attempt can be made to open a mixed output. status_t openDirectOutput( audio_stream_type_t stream, audio_session_t session, const audio_config_t *config, audio_output_flags_t flags, const DeviceVector &devices, audio_io_handle_t *output); /** * @brief getInputForDevice selects an input handle for a given input device and * requester context Loading Loading @@ -926,6 +936,12 @@ private: int delayMs, uid_t uid, sp<AudioPatch> *patchDescPtr); bool areAllDevicesSupported( const Vector<AudioDeviceTypeAddr>& devices, std::function<bool(audio_devices_t)> predicate, const char* context); }; };