Loading services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h +8 −1 Original line number Diff line number Diff line Loading @@ -135,10 +135,17 @@ public: /** * @brief filter the devices supported by this collection against another collection * @param devices to filter against * @return * @return a filtered DeviceVector */ DeviceVector filter(const DeviceVector &devices) const; /** * @brief filter the devices supported by this collection before sending * then to the Engine via AudioPolicyManagerObserver interface * @return a filtered DeviceVector */ DeviceVector filterForEngine() const; /** * @brief merge two vectors. As SortedVector Implementation is buggy (it does not check the size * of the destination vector, only of the source, it provides a safe implementation Loading services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -399,6 +399,18 @@ bool DeviceVector::containsAllDevices(const DeviceVector &devices) const return filter(devices).size() == devices.size(); } DeviceVector DeviceVector::filterForEngine() const { DeviceVector filteredDevices; for (const auto &device : *this) { if (audio_is_remote_submix_device(device->type()) && device->address() != "0") { continue; } filteredDevices.add(device); } return filteredDevices; } void DeviceDescriptor::log() const { ALOGI("Device id:%d type:0x%08X:%s, addr:%s", mId, mDeviceType, Loading services/audiopolicy/engine/interface/AudioPolicyManagerObserver.h +2 −2 Original line number Diff line number Diff line Loading @@ -46,9 +46,9 @@ public: virtual const AudioInputCollection &getInputs() const = 0; virtual const DeviceVector &getAvailableOutputDevices() const = 0; virtual const DeviceVector getAvailableOutputDevices() const = 0; virtual const DeviceVector &getAvailableInputDevices() const = 0; virtual const DeviceVector getAvailableInputDevices() const = 0; virtual const sp<DeviceDescriptor> &getDefaultOutputDevice() const = 0; Loading services/audiopolicy/engineconfigurable/src/Engine.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -207,7 +207,7 @@ DeviceVector Engine::getDevicesForProductStrategy(product_strategy_t ps) const ALOGE("%s: Trying to get device on invalid strategy %d", __FUNCTION__, ps); return {}; } const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); uint32_t availableOutputDevicesType = availableOutputDevices.types(); Loading Loading @@ -272,7 +272,7 @@ DeviceVector Engine::getOutputDevicesForAttributes(const audio_attributes_t &att return DeviceVector(preferredDevice); } product_strategy_t strategy = getProductStrategyForAttributes(attributes); const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); // // @TODO: what is the priority of explicit routing? Shall it be considered first as it used to Loading @@ -298,7 +298,7 @@ sp<DeviceDescriptor> Engine::getInputDeviceForAttributes(const audio_attributes_ sp<AudioPolicyMix> *mix) const { const auto &policyMixes = getApmObserver()->getAudioPolicyMixCollection(); const auto &availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto &inputs = getApmObserver()->getInputs(); std::string address; // Loading services/audiopolicy/enginedefault/src/Engine.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -502,8 +502,8 @@ audio_devices_t Engine::getDeviceForStrategyInt(legacy_strategy strategy, audio_devices_t Engine::getDeviceForInputSource(audio_source_t inputSource) const { const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector &availableInputDevices = getApmObserver()->getAvailableInputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableInputDevices = getApmObserver()->getAvailableInputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); audio_devices_t availableDeviceTypes = availableInputDevices.types() & ~AUDIO_DEVICE_BIT_IN; Loading Loading @@ -704,7 +704,7 @@ DeviceVector Engine::getOutputDevicesForAttributes(const audio_attributes_t &att return DeviceVector(preferredDevice); } product_strategy_t strategy = getProductStrategyForAttributes(attributes); const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); // // @TODO: what is the priority of explicit routing? Shall it be considered first as it used to Loading @@ -730,7 +730,7 @@ sp<DeviceDescriptor> Engine::getInputDeviceForAttributes(const audio_attributes_ sp<AudioPolicyMix> *mix) const { const auto &policyMixes = getApmObserver()->getAudioPolicyMixCollection(); const auto &availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto &inputs = getApmObserver()->getInputs(); std::string address; Loading Loading
services/audiopolicy/common/managerdefinitions/include/DeviceDescriptor.h +8 −1 Original line number Diff line number Diff line Loading @@ -135,10 +135,17 @@ public: /** * @brief filter the devices supported by this collection against another collection * @param devices to filter against * @return * @return a filtered DeviceVector */ DeviceVector filter(const DeviceVector &devices) const; /** * @brief filter the devices supported by this collection before sending * then to the Engine via AudioPolicyManagerObserver interface * @return a filtered DeviceVector */ DeviceVector filterForEngine() const; /** * @brief merge two vectors. As SortedVector Implementation is buggy (it does not check the size * of the destination vector, only of the source, it provides a safe implementation Loading
services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -399,6 +399,18 @@ bool DeviceVector::containsAllDevices(const DeviceVector &devices) const return filter(devices).size() == devices.size(); } DeviceVector DeviceVector::filterForEngine() const { DeviceVector filteredDevices; for (const auto &device : *this) { if (audio_is_remote_submix_device(device->type()) && device->address() != "0") { continue; } filteredDevices.add(device); } return filteredDevices; } void DeviceDescriptor::log() const { ALOGI("Device id:%d type:0x%08X:%s, addr:%s", mId, mDeviceType, Loading
services/audiopolicy/engine/interface/AudioPolicyManagerObserver.h +2 −2 Original line number Diff line number Diff line Loading @@ -46,9 +46,9 @@ public: virtual const AudioInputCollection &getInputs() const = 0; virtual const DeviceVector &getAvailableOutputDevices() const = 0; virtual const DeviceVector getAvailableOutputDevices() const = 0; virtual const DeviceVector &getAvailableInputDevices() const = 0; virtual const DeviceVector getAvailableInputDevices() const = 0; virtual const sp<DeviceDescriptor> &getDefaultOutputDevice() const = 0; Loading
services/audiopolicy/engineconfigurable/src/Engine.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -207,7 +207,7 @@ DeviceVector Engine::getDevicesForProductStrategy(product_strategy_t ps) const ALOGE("%s: Trying to get device on invalid strategy %d", __FUNCTION__, ps); return {}; } const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); uint32_t availableOutputDevicesType = availableOutputDevices.types(); Loading Loading @@ -272,7 +272,7 @@ DeviceVector Engine::getOutputDevicesForAttributes(const audio_attributes_t &att return DeviceVector(preferredDevice); } product_strategy_t strategy = getProductStrategyForAttributes(attributes); const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); // // @TODO: what is the priority of explicit routing? Shall it be considered first as it used to Loading @@ -298,7 +298,7 @@ sp<DeviceDescriptor> Engine::getInputDeviceForAttributes(const audio_attributes_ sp<AudioPolicyMix> *mix) const { const auto &policyMixes = getApmObserver()->getAudioPolicyMixCollection(); const auto &availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto &inputs = getApmObserver()->getInputs(); std::string address; // Loading
services/audiopolicy/enginedefault/src/Engine.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -502,8 +502,8 @@ audio_devices_t Engine::getDeviceForStrategyInt(legacy_strategy strategy, audio_devices_t Engine::getDeviceForInputSource(audio_source_t inputSource) const { const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector &availableInputDevices = getApmObserver()->getAvailableInputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableInputDevices = getApmObserver()->getAvailableInputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); audio_devices_t availableDeviceTypes = availableInputDevices.types() & ~AUDIO_DEVICE_BIT_IN; Loading Loading @@ -704,7 +704,7 @@ DeviceVector Engine::getOutputDevicesForAttributes(const audio_attributes_t &att return DeviceVector(preferredDevice); } product_strategy_t strategy = getProductStrategyForAttributes(attributes); const DeviceVector &availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const DeviceVector availableOutputDevices = getApmObserver()->getAvailableOutputDevices(); const SwAudioOutputCollection &outputs = getApmObserver()->getOutputs(); // // @TODO: what is the priority of explicit routing? Shall it be considered first as it used to Loading @@ -730,7 +730,7 @@ sp<DeviceDescriptor> Engine::getInputDeviceForAttributes(const audio_attributes_ sp<AudioPolicyMix> *mix) const { const auto &policyMixes = getApmObserver()->getAudioPolicyMixCollection(); const auto &availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto availableInputDevices = getApmObserver()->getAvailableInputDevices(); const auto &inputs = getApmObserver()->getInputs(); std::string address; Loading