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

Commit f45fb0e5 authored by Ember Rose's avatar Ember Rose
Browse files

Revert "Add interface to query the mmap support."

This reverts commit 57c44c00.

Bug: 198836727
Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?branch=git_master&target=adt3-userdebug&lkgb=7703400&lkbb=7703573&fkbb=7703552

Change-Id: I82b9b99f8ab31134873157819fdb341cfa65ac80
parent 57c44c00
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ cc_binary {

    shared_libs: [
        "libaaudioservice",
        "libaudioclient",
        "libaudioflinger",
        "libaudiopolicyservice",
        "libaudioprocessing",
@@ -42,6 +41,7 @@ cc_binary {
        "libpowermanager",
        "libutils",
        "libvibrator",

    ],

    // TODO check if we still need all of these include directories
+4 −24
Original line number Diff line number Diff line
@@ -17,26 +17,20 @@
#define LOG_TAG "audioserver"
//#define LOG_NDEBUG 0

#include <algorithm>

#include <fcntl.h>
#include <sys/prctl.h>
#include <sys/wait.h>
#include <cutils/properties.h>

#include <android/media/AudioMMapPolicy.h>
#include <android/media/AudioMMapPolicyInfo.h>
#include <android/media/AudioMMapPolicyType.h>
#include <android/media/IAudioFlingerService.h>
#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
#include <binder/IServiceManager.h>
#include <binder/IInterface.h>
#include <hidl/HidlTransportSupport.h>
#include <mediautils/LimitProcessMemory.h>
#include <utils/Log.h>

// from include_dirs
#include "aaudio/AAudioTesting.h" // aaudio_policy_t, AAUDIO_PROP_MMAP_POLICY, AAUDIO_POLICY_*
#include "AudioFlinger.h"
#include "AudioPolicyService.h"
#include "AAudioService.h"
@@ -152,24 +146,10 @@ int main(int argc __unused, char **argv)
        // AAudioService should only be used in OC-MR1 and later.
        // And only enable the AAudioService if the system MMAP policy explicitly allows it.
        // This prevents a client from misusing AAudioService when it is not supported.
        // If we cannot get audio flinger here, there must be some serious problems. In that case,
        // attempting to call audio flinger on a null pointer could make the process crash
        // and attract attentions.
        sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
        std::vector<media::AudioMMapPolicyInfo> policyInfos;
        status_t status = af->getMmapPolicyInfos(
                media::AudioMMapPolicyType::DEFAULT, &policyInfos);
        // Initialize aaudio service when querying mmap policy succeeds and
        // any of the policy supports MMAP.
        if (status == NO_ERROR ||
            std::any_of(policyInfos.begin(), policyInfos.end(), [](const auto& info) {
                    return info.mmapPolicy == media::AudioMMapPolicy::AUTO ||
                           info.mmapPolicy == media::AudioMMapPolicy::ALWAYS;
            })) {
        aaudio_policy_t mmapPolicy = property_get_int32(AAUDIO_PROP_MMAP_POLICY,
                                                        AAUDIO_POLICY_NEVER);
        if (mmapPolicy == AAUDIO_POLICY_AUTO || mmapPolicy == AAUDIO_POLICY_ALWAYS) {
            AAudioService::instantiate();
        } else {
            ALOGD("Do not init aaudio service, status %d, policy info size %zu",
                  status, policyInfos.size());
        }

        ProcessState::self()->startThreadPool();
+6 −49
Original line number Diff line number Diff line
@@ -20,14 +20,9 @@

#include <new>
#include <stdint.h>
#include <vector>

#include <aaudio/AAudio.h>
#include <aaudio/AAudioTesting.h>
#include <android/media/AudioMMapPolicy.h>
#include <android/media/AudioMMapPolicyInfo.h>
#include <android/media/AudioMMapPolicyType.h>
#include <media/AudioSystem.h>

#include "binding/AAudioBinderClient.h"
#include "client/AudioStreamInternalCapture.h"
@@ -91,37 +86,6 @@ static aaudio_result_t builder_createStream(aaudio_direction_t direction,
    return result;
}

namespace {

aaudio_policy_t aidl2legacy_aaudio_policy(android::media::AudioMMapPolicy aidl) {
    switch (aidl) {
        case android::media::AudioMMapPolicy::NEVER:
            return AAUDIO_POLICY_NEVER;
        case android::media::AudioMMapPolicy::AUTO:
            return AAUDIO_POLICY_AUTO;
        case android::media::AudioMMapPolicy::ALWAYS:
            return AAUDIO_POLICY_ALWAYS;
        case android::media::AudioMMapPolicy::UNSPECIFIED:
        default:
            return AAUDIO_UNSPECIFIED;
    }
}

// The aaudio policy will be ALWAYS, NEVER, UNSPECIFIED only when all policy info are
// ALWAYS, NEVER or UNSPECIFIED. Otherwise, the aaudio policy will be AUTO.
aaudio_policy_t getAAudioPolicy(
        const std::vector<android::media::AudioMMapPolicyInfo>& policyInfos) {
    if (policyInfos.empty()) return AAUDIO_POLICY_AUTO;
    for (size_t i = 1; i < policyInfos.size(); ++i) {
        if (policyInfos.at(i).mmapPolicy != policyInfos.at(0).mmapPolicy) {
            return AAUDIO_POLICY_AUTO;
        }
    }
    return aidl2legacy_aaudio_policy(policyInfos.at(0).mmapPolicy);
}

} // namespace

// Try to open using MMAP path if that is allowed.
// Fall back to Legacy path if MMAP not available.
// Exact behavior is controlled by MMapPolicy.
@@ -140,32 +104,25 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) {
        return result;
    }

    std::vector<android::media::AudioMMapPolicyInfo> policyInfos;
    // The API setting is the highest priority.
    aaudio_policy_t mmapPolicy = AudioGlobal_getMMapPolicy();
    // If not specified then get from a system property.
    if (mmapPolicy == AAUDIO_UNSPECIFIED && android::AudioSystem::getMmapPolicyInfo(
                android::media::AudioMMapPolicyType::DEFAULT, &policyInfos) == NO_ERROR) {
        mmapPolicy = getAAudioPolicy(policyInfos);
    if (mmapPolicy == AAUDIO_UNSPECIFIED) {
        mmapPolicy = AAudioProperty_getMMapPolicy();
    }
    // If still not specified then use the default.
    if (mmapPolicy == AAUDIO_UNSPECIFIED) {
        mmapPolicy = AAUDIO_MMAP_POLICY_DEFAULT;
    }

    policyInfos.clear();
    aaudio_policy_t mmapExclusivePolicy = AAUDIO_UNSPECIFIED;
    if (android::AudioSystem::getMmapPolicyInfo(
            android::media::AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) {
        mmapExclusivePolicy = getAAudioPolicy(policyInfos);
    }
    if (mmapExclusivePolicy == AAUDIO_UNSPECIFIED) {
        mmapExclusivePolicy = AAUDIO_MMAP_EXCLUSIVE_POLICY_DEFAULT;
    int32_t mapExclusivePolicy = AAudioProperty_getMMapExclusivePolicy();
    if (mapExclusivePolicy == AAUDIO_UNSPECIFIED) {
        mapExclusivePolicy = AAUDIO_MMAP_EXCLUSIVE_POLICY_DEFAULT;
    }

    aaudio_sharing_mode_t sharingMode = getSharingMode();
    if ((sharingMode == AAUDIO_SHARING_MODE_EXCLUSIVE)
        && (mmapExclusivePolicy == AAUDIO_POLICY_NEVER)) {
        && (mapExclusivePolicy == AAUDIO_POLICY_NEVER)) {
        ALOGD("%s() EXCLUSIVE sharing mode not supported. Use SHARED.", __func__);
        sharingMode = AAUDIO_SHARING_MODE_SHARED;
        setSharingMode(sharingMode);
+0 −3
Original line number Diff line number Diff line
@@ -331,9 +331,6 @@ aidl_interface {
        "aidl/android/media/AudioIoConfigEvent.aidl",
        "aidl/android/media/AudioIoDescriptor.aidl",
        "aidl/android/media/AudioIoFlags.aidl",
        "aidl/android/media/AudioMMapPolicy.aidl",
        "aidl/android/media/AudioMMapPolicyInfo.aidl",
        "aidl/android/media/AudioMMapPolicyType.aidl",
        "aidl/android/media/AudioMixLatencyClass.aidl",
        "aidl/android/media/AudioMode.aidl",
        "aidl/android/media/AudioOffloadInfo.aidl",
+0 −10
Original line number Diff line number Diff line
@@ -2353,16 +2353,6 @@ status_t AudioSystem::setVibratorInfos(
    return af->setVibratorInfos(vibratorInfos);
}

status_t AudioSystem::getMmapPolicyInfo(
        media::AudioMMapPolicyType policyType,
        std::vector<media::AudioMMapPolicyInfo> *policyInfos) {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af == nullptr) {
        return PERMISSION_DENIED;
    }
    return af->getMmapPolicyInfos(policyType, policyInfos);
}

// ---------------------------------------------------------------------------

int AudioSystem::AudioPolicyServiceClient::addAudioPortCallback(
Loading