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

Commit 524159db authored by Hayden Gomes's avatar Hayden Gomes
Browse files

Adding support for new System Usages

Adding system usages to native layer functions including 4 new usages
and setSupportedSystemUsage API

Bug: 141006627
Test: Built, ran, and verified types showed up in dumpsys
Change-Id: I282c6b40ed9256ced5efb59b42da95a8fb0a6398
parent ff172538
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1142,6 +1142,12 @@ void AudioSystem::clearAudioConfigCache()
    }
}

status_t AudioSystem::setSupportedSystemUsages(const std::vector<audio_usage_t>& systemUsages) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == nullptr) return PERMISSION_DENIED;
    return aps->setSupportedSystemUsages(systemUsages);
}

status_t AudioSystem::setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags) {
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == nullptr) return PERMISSION_DENIED;
+48 −1
Original line number Diff line number Diff line
@@ -102,6 +102,7 @@ enum {
    GET_STRATEGY_FOR_ATTRIBUTES,
    LIST_AUDIO_VOLUME_GROUPS,
    GET_VOLUME_GROUP_FOR_ATTRIBUTES,
    SET_SUPPORTED_SYSTEM_USAGES,
    SET_ALLOWED_CAPTURE_POLICY,
    MOVE_EFFECTS_TO_IO,
    SET_RTT_ENABLED,
@@ -332,6 +333,7 @@ public:
            ALOGE("getInputForAttr NULL portId - shouldn't happen");
            return BAD_VALUE;
        }

        data.write(attr, sizeof(audio_attributes_t));
        data.writeInt32(*input);
        data.writeInt32(riid);
@@ -622,6 +624,20 @@ public:
        return status;
    }

    status_t setSupportedSystemUsages(const std::vector<audio_usage_t>& systemUsages) {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
        data.writeInt32(systemUsages.size());
        for (auto systemUsage : systemUsages) {
            data.writeInt32(systemUsage);
        }
        status_t status = remote()->transact(SET_SUPPORTED_SYSTEM_USAGES, data, &reply);
        if (status != NO_ERROR) {
            return status;
        }
        return static_cast <status_t> (reply.readInt32());
    }

    status_t setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags) override {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
@@ -1449,6 +1465,7 @@ status_t BnAudioPolicyService::onTransact(
        case SET_RTT_ENABLED:
        case IS_CALL_SCREEN_MODE_SUPPORTED:
        case SET_PREFERRED_DEVICE_FOR_PRODUCT_STRATEGY:
        case SET_SUPPORTED_SYSTEM_USAGES:
        case REMOVE_PREFERRED_DEVICE_FOR_PRODUCT_STRATEGY:
        case GET_PREFERRED_DEVICE_FOR_PRODUCT_STRATEGY:
        case GET_DEVICES_FOR_ATTRIBUTES: {
@@ -2442,16 +2459,46 @@ status_t BnAudioPolicyService::onTransact(
            if (status != NO_ERROR) {
                return status;
            }

            volume_group_t group;
            status = getVolumeGroupFromAudioAttributes(attributes, group);
            reply->writeInt32(status);
            if (status != NO_ERROR) {
                return NO_ERROR;
            }

            reply->writeInt32(status);
            reply->writeUint32(static_cast<int>(group));
            return NO_ERROR;
        }

        case SET_SUPPORTED_SYSTEM_USAGES: {
             CHECK_INTERFACE(IAudioPolicyService, data, reply);
             std::vector<audio_usage_t> systemUsages;

             int32_t size;
             status_t status = data.readInt32(&size);
             if (status != NO_ERROR) {
                 return status;
             }
             if (size > MAX_ITEMS_PER_LIST) {
                 size = MAX_ITEMS_PER_LIST;
             }

             for (int32_t i = 0; i < size; i++) {
                 int32_t systemUsageInt;
                 status = data.readInt32(&systemUsageInt);
                 if (status != NO_ERROR) {
                     return status;
                 }

                 audio_usage_t systemUsage = static_cast<audio_usage_t>(systemUsageInt);
                 systemUsages.push_back(systemUsage);
             }
             status = setSupportedSystemUsages(systemUsages);
             reply->writeInt32(static_cast <int32_t>(status));
             return NO_ERROR;
        }

        case SET_ALLOWED_CAPTURE_POLICY: {
            CHECK_INTERFACE(IAudioPolicyService, data, reply);
            uid_t uid = data.readInt32();
+2 −0
Original line number Diff line number Diff line
@@ -314,6 +314,8 @@ public:

    static status_t setLowRamDevice(bool isLowRamDevice, int64_t totalMemory);

    static status_t setSupportedSystemUsages(const std::vector<audio_usage_t>& systemUsages);

    static status_t setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags);

    // Check if hw offload is possible for given format, stream type, sample rate,
+1 −0
Original line number Diff line number Diff line
@@ -140,6 +140,7 @@ public:
                                            audio_unique_id_t* id) = 0;
    virtual status_t removeSourceDefaultEffect(audio_unique_id_t id) = 0;
    virtual status_t removeStreamDefaultEffect(audio_unique_id_t id) = 0;
    virtual status_t setSupportedSystemUsages(const std::vector<audio_usage_t>& systemUsages) = 0;
    virtual status_t setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags) = 0;
   // Check if offload is possible for given format, stream type, sample rate,
    // bit rate, duration, video and streaming or offload property is enabled
+4 −0
Original line number Diff line number Diff line
@@ -360,6 +360,10 @@ const UsageTypeConverter::Table UsageTypeConverter::mTable[] = {
    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VIRTUAL_SOURCE),
    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ASSISTANT),
    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_CALL_ASSISTANT),
    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_EMERGENCY),
    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_SAFETY),
    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_VEHICLE_STATUS),
    MAKE_STRING_FROM_ENUM(AUDIO_USAGE_ANNOUNCEMENT),
    TERMINATOR
};

Loading