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

Commit 11b65923 authored by Francois Gaffie's avatar Francois Gaffie Committed by Eric Laurent
Browse files

audiopolicy: allows to fallback or not on default strategy/group



When attributes does not match a group or strategy, it falls back on
respectively default group or strategy.

This CL allows to control whether fallback shall be done or not.
It allows for example to detect orphans attributes and prevent from
overwritting volume for example.

Bug: 179759299
Test: make

Signed-off-by: default avatarFrancois Gaffie <francois.gaffie@renault.com>
Change-Id: Ieeeab48ca3ec2b031b7a99e2e7ab26d2e4d70535
parent 25521834
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -1994,7 +1994,8 @@ audio_stream_type_t AudioSystem::attributesToStreamType(const audio_attributes_t
}

status_t AudioSystem::getProductStrategyFromAudioAttributes(const AudioAttributes& aa,
                                                            product_strategy_t& productStrategy) {
                                                            product_strategy_t& productStrategy,
                                                            bool fallbackOnDefault) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return PERMISSION_DENIED;

@@ -2003,7 +2004,8 @@ status_t AudioSystem::getProductStrategyFromAudioAttributes(const AudioAttribute
    int32_t productStrategyAidl;

    RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(
            aps->getProductStrategyFromAudioAttributes(aaAidl, &productStrategyAidl)));
            aps->getProductStrategyFromAudioAttributes(aaAidl, fallbackOnDefault,
            &productStrategyAidl)));
    productStrategy = VALUE_OR_RETURN_STATUS(
            aidl2legacy_int32_t_product_strategy_t(productStrategyAidl));
    return OK;
@@ -2022,7 +2024,8 @@ status_t AudioSystem::listAudioVolumeGroups(AudioVolumeGroupVector& groups) {
}

status_t AudioSystem::getVolumeGroupFromAudioAttributes(const AudioAttributes& aa,
                                                        volume_group_t& volumeGroup) {
                                                        volume_group_t& volumeGroup,
                                                        bool fallbackOnDefault) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return PERMISSION_DENIED;

@@ -2030,7 +2033,7 @@ status_t AudioSystem::getVolumeGroupFromAudioAttributes(const AudioAttributes& a
            legacy2aidl_AudioAttributes_AudioAttributesEx(aa));
    int32_t volumeGroupAidl;
    RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(
            aps->getVolumeGroupFromAudioAttributes(aaAidl, &volumeGroupAidl)));
            aps->getVolumeGroupFromAudioAttributes(aaAidl, fallbackOnDefault, &volumeGroupAidl)));
    volumeGroup = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_volume_group_t(volumeGroupAidl));
    return OK;
}
+4 −2
Original line number Diff line number Diff line
@@ -296,10 +296,12 @@ interface IAudioPolicyService {
    boolean isHapticPlaybackSupported();

    AudioProductStrategy[] listAudioProductStrategies();
    int /* product_strategy_t */ getProductStrategyFromAudioAttributes(in AudioAttributesEx aa);
    int /* product_strategy_t */ getProductStrategyFromAudioAttributes(in AudioAttributesEx aa,
                                                                       boolean fallbackOnDefault);

    AudioVolumeGroup[] listAudioVolumeGroups();
    int /* volume_group_t */ getVolumeGroupFromAudioAttributes(in AudioAttributesEx aa);
    int /* volume_group_t */ getVolumeGroupFromAudioAttributes(in AudioAttributesEx aa,
                                                               boolean fallbackOnDefault);

    void setRttEnabled(boolean enabled);

+5 −4
Original line number Diff line number Diff line
@@ -428,16 +428,17 @@ public:
    static bool     isHapticPlaybackSupported();

    static status_t listAudioProductStrategies(AudioProductStrategyVector &strategies);
    static status_t getProductStrategyFromAudioAttributes(const AudioAttributes &aa,
                                                        product_strategy_t &productStrategy);
    static status_t getProductStrategyFromAudioAttributes(
            const AudioAttributes &aa, product_strategy_t &productStrategy,
            bool fallbackOnDefault = true);

    static audio_attributes_t streamTypeToAttributes(audio_stream_type_t stream);
    static audio_stream_type_t attributesToStreamType(const audio_attributes_t &attr);

    static status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups);

    static status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa,
                                                      volume_group_t &volumeGroup);
    static status_t getVolumeGroupFromAudioAttributes(
            const AudioAttributes &aa, volume_group_t &volumeGroup, bool fallbackOnDefault = true);

    static status_t setRttEnabled(bool enabled);

+5 −4
Original line number Diff line number Diff line
@@ -285,13 +285,14 @@ public:

    virtual status_t listAudioProductStrategies(AudioProductStrategyVector &strategies) = 0;

    virtual status_t getProductStrategyFromAudioAttributes(const AudioAttributes &aa,
                                                           product_strategy_t &productStrategy) = 0;
    virtual status_t getProductStrategyFromAudioAttributes(
            const AudioAttributes &aa, product_strategy_t &productStrategy,
            bool fallbackOnDefault) = 0;

    virtual status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) = 0;

    virtual status_t getVolumeGroupFromAudioAttributes(const AudioAttributes &aa,
                                                       volume_group_t &volumeGroup) = 0;
    virtual status_t getVolumeGroupFromAudioAttributes(
            const AudioAttributes &aa, volume_group_t &volumeGroup, bool fallbackOnDefault) = 0;

    virtual bool     isCallScreenModeSupported() = 0;

+5 −3
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ public:
                                               audio_policy_dev_state_t /*state*/) override;

    product_strategy_t getProductStrategyForAttributes(
            const audio_attributes_t &attr) const override;
            const audio_attributes_t &attr, bool fallbackOnDefault = true) const override;

    audio_stream_type_t getStreamTypeForAttributes(const audio_attributes_t &attr) const override;

@@ -79,9 +79,11 @@ public:

    VolumeGroupVector getVolumeGroups() const override;

    volume_group_t getVolumeGroupForAttributes(const audio_attributes_t &attr) const override;
    volume_group_t getVolumeGroupForAttributes(
            const audio_attributes_t &attr, bool fallbackOnDefault = true) const override;

    volume_group_t getVolumeGroupForStreamType(audio_stream_type_t stream) const override;
    volume_group_t getVolumeGroupForStreamType(
            audio_stream_type_t stream, bool fallbackOnDefault = true) const override;

    status_t listAudioVolumeGroups(AudioVolumeGroupVector &groups) const override;

Loading