Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd1028a6 authored by Yuanjia Hsu's avatar Yuanjia Hsu Committed by Android (Google) Code Review
Browse files

Merge "Dynamic audio policies input on UID" into sc-dev

parents 6f14345a 0735bf35
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ public:

    sp<DeviceDescriptor> getDeviceAndMixForInputSource(audio_source_t inputSource,
                                                       const DeviceVector &availableDeviceTypes,
                                                       uid_t uid,
                                                       sp<AudioPolicyMix> *policyMix) const;

    /**
+6 −1
Original line number Diff line number Diff line
@@ -391,6 +391,7 @@ sp<DeviceDescriptor> AudioPolicyMixCollection::getDeviceAndMixForOutput(
sp<DeviceDescriptor> AudioPolicyMixCollection::getDeviceAndMixForInputSource(
        audio_source_t inputSource,
        const DeviceVector &availDevices,
        uid_t uid,
        sp<AudioPolicyMix> *policyMix) const
{
    for (size_t i = 0; i < size(); i++) {
@@ -402,7 +403,11 @@ sp<DeviceDescriptor> AudioPolicyMixCollection::getDeviceAndMixForInputSource(
            if ((RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET == mix->mCriteria[j].mRule &&
                    mix->mCriteria[j].mValue.mSource == inputSource) ||
               (RULE_EXCLUDE_ATTRIBUTE_CAPTURE_PRESET == mix->mCriteria[j].mRule &&
                    mix->mCriteria[j].mValue.mSource != inputSource)) {
                    mix->mCriteria[j].mValue.mSource != inputSource) ||
               (RULE_MATCH_UID == mix->mCriteria[j].mRule &&
                    mix->mCriteria[j].mValue.mUid == uid) ||
               (RULE_EXCLUDE_UID == mix->mCriteria[j].mRule &&
                    mix->mCriteria[j].mValue.mUid != uid)) {
                // assuming PolicyMix only for remote submix for input
                // so mix->mDeviceType can only be AUDIO_DEVICE_OUT_REMOTE_SUBMIX
                audio_devices_t device = AUDIO_DEVICE_IN_REMOTE_SUBMIX;
+4 −2
Original line number Diff line number Diff line
@@ -173,8 +173,10 @@ public:
     * @param[out] mix to be used if a mix has been installed for the given audio attributes.
     * @return selected input device for the audio attributes, may be null if error.
     */
    virtual sp<DeviceDescriptor> getInputDeviceForAttributes(
            const audio_attributes_t &attr, sp<AudioPolicyMix> *mix = nullptr) const = 0;
    virtual sp<DeviceDescriptor> getInputDeviceForAttributes(const audio_attributes_t &attr,
                                                             uid_t uid = 0,
                                                             sp<AudioPolicyMix> *mix = nullptr)
                                                             const = 0;

    /**
     * Get the legacy stream type for a given audio attributes.
+5 −1
Original line number Diff line number Diff line
@@ -310,6 +310,7 @@ DeviceVector Engine::getOutputDevicesForStream(audio_stream_type_t stream, bool
}

sp<DeviceDescriptor> Engine::getInputDeviceForAttributes(const audio_attributes_t &attr,
                                                         uid_t uid,
                                                         sp<AudioPolicyMix> *mix) const
{
    const auto &policyMixes = getApmObserver()->getAudioPolicyMixCollection();
@@ -328,7 +329,10 @@ sp<DeviceDescriptor> Engine::getInputDeviceForAttributes(const audio_attributes_
        return device;
    }

    device = policyMixes.getDeviceAndMixForInputSource(attr.source, availableInputDevices, mix);
    device = policyMixes.getDeviceAndMixForInputSource(attr.source,
                                                       availableInputDevices,
                                                       uid,
                                                       mix);
    if (device != nullptr) {
        return device;
    }
+4 −2
Original line number Diff line number Diff line
@@ -61,8 +61,10 @@ public:
    DeviceVector getOutputDevicesForStream(audio_stream_type_t stream,
                                           bool fromCache = false) const override;

    sp<DeviceDescriptor> getInputDeviceForAttributes(
            const audio_attributes_t &attr, sp<AudioPolicyMix> *mix = nullptr) const override;
    sp<DeviceDescriptor> getInputDeviceForAttributes(const audio_attributes_t &attr,
                                                     uid_t uid = 0,
                                                     sp<AudioPolicyMix> *mix = nullptr)
                                                     const override;

    void updateDeviceSelectionCache() override;

Loading