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

Commit 3e8bbb91 authored by Hayden Gomes's avatar Hayden Gomes
Browse files

Adding system usages to AAudio

Bug: 141006627
Test: atest CtsNativeMediaAAudioTestCases:AAudioTests
Change-Id: I64247a3f64f4f7cc32f6c85c2ff790f96831f707
parent 524159db
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -227,6 +227,8 @@ enum {
};
typedef int32_t aaudio_performance_mode_t;

#define AAUDIO_SYSTEM_USAGE_OFFSET 1000

/**
 * The USAGE attribute expresses "why" you are playing a sound, what is this sound used for.
 * This information is used by certain platforms or routing policies
@@ -297,7 +299,31 @@ enum {
    /**
     * Use this for audio responses to user queries, audio instructions or help utterances.
     */
    AAUDIO_USAGE_ASSISTANT = 16
    AAUDIO_USAGE_ASSISTANT = 16,

    /**
     * Use this in case of playing sounds in an emergency.
     * Privileged MODIFY_AUDIO_ROUTING permission required.
     */
    AAUDIO_SYSTEM_USAGE_EMERGENCY = AAUDIO_SYSTEM_USAGE_OFFSET,

    /**
     * Use this for safety sounds and alerts, for example backup camera obstacle detection.
     * Privileged MODIFY_AUDIO_ROUTING permission required.
     */
    AAUDIO_SYSTEM_USAGE_SAFETY = AAUDIO_SYSTEM_USAGE_OFFSET + 1,

    /**
     * Use this for vehicle status alerts and information, for example the check engine light.
     * Privileged MODIFY_AUDIO_ROUTING permission required.
     */
    AAUDIO_SYSTEM_USAGE_VEHICLE_STATUS = AAUDIO_SYSTEM_USAGE_OFFSET + 2,

    /**
     * Use this for traffic announcements, etc.
     * Privileged MODIFY_AUDIO_ROUTING permission required.
     */
    AAUDIO_SYSTEM_USAGE_ANNOUNCEMENT = AAUDIO_SYSTEM_USAGE_OFFSET + 3,
};
typedef int32_t aaudio_usage_t;

+4 −0
Original line number Diff line number Diff line
@@ -133,6 +133,10 @@ aaudio_result_t AAudioStreamParameters::validate() const {
        case AAUDIO_USAGE_ASSISTANCE_SONIFICATION:
        case AAUDIO_USAGE_GAME:
        case AAUDIO_USAGE_ASSISTANT:
        case AAUDIO_SYSTEM_USAGE_EMERGENCY:
        case AAUDIO_SYSTEM_USAGE_SAFETY:
        case AAUDIO_SYSTEM_USAGE_VEHICLE_STATUS:
        case AAUDIO_SYSTEM_USAGE_ANNOUNCEMENT:
            break; // valid
        default:
            ALOGD("usage not valid = %d", mUsage);
+4 −0
Original line number Diff line number Diff line
@@ -183,6 +183,10 @@ audio_usage_t AAudioConvert_usageToInternal(aaudio_usage_t usage) {
    STATIC_ASSERT(AAUDIO_USAGE_ASSISTANCE_SONIFICATION == AUDIO_USAGE_ASSISTANCE_SONIFICATION);
    STATIC_ASSERT(AAUDIO_USAGE_GAME == AUDIO_USAGE_GAME);
    STATIC_ASSERT(AAUDIO_USAGE_ASSISTANT == AUDIO_USAGE_ASSISTANT);
    STATIC_ASSERT(AAUDIO_SYSTEM_USAGE_EMERGENCY == AUDIO_USAGE_EMERGENCY);
    STATIC_ASSERT(AAUDIO_SYSTEM_USAGE_SAFETY == AUDIO_USAGE_SAFETY);
    STATIC_ASSERT(AAUDIO_SYSTEM_USAGE_VEHICLE_STATUS == AUDIO_USAGE_VEHICLE_STATUS);
    STATIC_ASSERT(AAUDIO_SYSTEM_USAGE_ANNOUNCEMENT == AUDIO_USAGE_ANNOUNCEMENT);
    if (usage == AAUDIO_UNSPECIFIED) {
        usage = AAUDIO_USAGE_MEDIA;
    }
+5 −1
Original line number Diff line number Diff line
@@ -120,7 +120,11 @@ static const aaudio_usage_t sUsages[] = {
    AAUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,
    AAUDIO_USAGE_ASSISTANCE_SONIFICATION,
    AAUDIO_USAGE_GAME,
    AAUDIO_USAGE_ASSISTANT
    AAUDIO_USAGE_ASSISTANT,
    AAUDIO_SYSTEM_USAGE_EMERGENCY,
    AAUDIO_SYSTEM_USAGE_SAFETY,
    AAUDIO_SYSTEM_USAGE_VEHICLE_STATUS,
    AAUDIO_SYSTEM_USAGE_ANNOUNCEMENT
};

static const aaudio_content_type_t sContentypes[] = {
+1 −1
Original line number Diff line number Diff line
@@ -243,7 +243,7 @@ status_t AudioPolicyService::getOutputForAttr(audio_attributes_t *attr,
    }
    AutoCallerClear acc;
    AudioPolicyInterface::output_type_t outputType;
    status_t result = mAudioPolicyManager->getOutputForAttr(attr, output, session, stream, uid,
    result = mAudioPolicyManager->getOutputForAttr(attr, output, session, stream, uid,
                                                 config,
                                                 &flags, selectedDeviceId, portId,
                                                 secondaryOutputs,