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

Commit f6331f23 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move AudioMMapPolicy* from android.media to a.m.audio.common SAIDL"

parents 584fc6cd e99d0884
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -24,9 +24,9 @@
#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/audio/common/AudioMMapPolicy.h>
#include <android/media/audio/common/AudioMMapPolicyInfo.h>
#include <android/media/audio/common/AudioMMapPolicyType.h>
#include <android/media/IAudioFlingerService.h>
#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
@@ -44,6 +44,10 @@

using namespace android;

using android::media::audio::common::AudioMMapPolicy;
using android::media::audio::common::AudioMMapPolicyInfo;
using android::media::audio::common::AudioMMapPolicyType;

int main(int argc __unused, char **argv)
{
    // TODO: update with refined parameters
@@ -155,15 +159,15 @@ int main(int argc __unused, char **argv)
        // 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;
        std::vector<AudioMMapPolicyInfo> policyInfos;
        status_t status = af->getMmapPolicyInfos(
                media::AudioMMapPolicyType::DEFAULT, &policyInfos);
                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;
                    return info.mmapPolicy == AudioMMapPolicy::AUTO ||
                           info.mmapPolicy == AudioMMapPolicy::ALWAYS;
            })) {
            AAudioService::instantiate();
        } else {
+16 −12
Original line number Diff line number Diff line
@@ -24,9 +24,9 @@

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

#include "binding/AAudioBinderClient.h"
@@ -40,6 +40,10 @@

using namespace aaudio;

using android::media::audio::common::AudioMMapPolicy;
using android::media::audio::common::AudioMMapPolicyInfo;
using android::media::audio::common::AudioMMapPolicyType;

#define AAUDIO_MMAP_POLICY_DEFAULT             AAUDIO_POLICY_NEVER
#define AAUDIO_MMAP_EXCLUSIVE_POLICY_DEFAULT   AAUDIO_POLICY_NEVER

@@ -93,15 +97,15 @@ static aaudio_result_t builder_createStream(aaudio_direction_t direction,

namespace {

aaudio_policy_t aidl2legacy_aaudio_policy(android::media::AudioMMapPolicy aidl) {
aaudio_policy_t aidl2legacy_aaudio_policy(AudioMMapPolicy aidl) {
    switch (aidl) {
        case android::media::AudioMMapPolicy::NEVER:
        case AudioMMapPolicy::NEVER:
            return AAUDIO_POLICY_NEVER;
        case android::media::AudioMMapPolicy::AUTO:
        case AudioMMapPolicy::AUTO:
            return AAUDIO_POLICY_AUTO;
        case android::media::AudioMMapPolicy::ALWAYS:
        case AudioMMapPolicy::ALWAYS:
            return AAUDIO_POLICY_ALWAYS;
        case android::media::AudioMMapPolicy::UNSPECIFIED:
        case AudioMMapPolicy::UNSPECIFIED:
        default:
            return AAUDIO_UNSPECIFIED;
    }
@@ -110,7 +114,7 @@ aaudio_policy_t aidl2legacy_aaudio_policy(android::media::AudioMMapPolicy aidl)
// 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) {
        const std::vector<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) {
@@ -140,12 +144,12 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) {
        return result;
    }

    std::vector<android::media::AudioMMapPolicyInfo> policyInfos;
    std::vector<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) {
                AudioMMapPolicyType::DEFAULT, &policyInfos) == NO_ERROR) {
        mmapPolicy = getAAudioPolicy(policyInfos);
    }
    // If still not specified then use the default.
@@ -156,7 +160,7 @@ aaudio_result_t AudioStreamBuilder::build(AudioStream** streamPtr) {
    policyInfos.clear();
    aaudio_policy_t mmapExclusivePolicy = AAUDIO_UNSPECIFIED;
    if (android::AudioSystem::getMmapPolicyInfo(
            android::media::AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) {
            AudioMMapPolicyType::EXCLUSIVE, &policyInfos) == NO_ERROR) {
        mmapExclusivePolicy = getAAudioPolicy(policyInfos);
    }
    if (mmapExclusivePolicy == AAUDIO_UNSPECIFIED) {
+0 −3
Original line number Diff line number Diff line
@@ -321,9 +321,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/AudioOutputFlags.aidl",
        "aidl/android/media/AudioPatch.aidl",
+3 −2
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@ using media::audio::common::AudioDevice;
using media::audio::common::AudioDeviceAddress;
using media::audio::common::AudioDeviceDescription;
using media::audio::common::AudioFormatDescription;
using media::audio::common::AudioMMapPolicyInfo;
using media::audio::common::AudioMMapPolicyType;
using media::audio::common::AudioOffloadInfo;
using media::audio::common::AudioSource;
using media::audio::common::AudioStreamType;
@@ -2357,8 +2359,7 @@ status_t AudioSystem::setVibratorInfos(
}

status_t AudioSystem::getMmapPolicyInfo(
        media::AudioMMapPolicyType policyType,
        std::vector<media::AudioMMapPolicyInfo> *policyInfos) {
        AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *policyInfos) {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af == nullptr) {
        return PERMISSION_DENIED;
+4 −4
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ using aidl_utils::statusTFromBinderStatus;
using binder::Status;
using media::audio::common::AudioChannelLayout;
using media::audio::common::AudioFormatDescription;
using media::audio::common::AudioMMapPolicyInfo;
using media::audio::common::AudioMMapPolicyType;
using media::audio::common::AudioMode;
using media::audio::common::AudioStreamType;
using media::audio::common::AudioUuid;
@@ -782,8 +784,7 @@ status_t AudioFlingerClientAdapter::updateSecondaryOutputs(
}

status_t AudioFlingerClientAdapter::getMmapPolicyInfos(
        media::AudioMMapPolicyType policyType,
        std::vector<media::AudioMMapPolicyInfo> *policyInfos) {
        AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *policyInfos) {
    return statusTFromBinderStatus(mDelegate->getMmapPolicyInfos(policyType, policyInfos));
}

@@ -1260,8 +1261,7 @@ Status AudioFlingerServerAdapter::updateSecondaryOutputs(
}

Status AudioFlingerServerAdapter::getMmapPolicyInfos(
        media::AudioMMapPolicyType policyType,
        std::vector<media::AudioMMapPolicyInfo> *_aidl_return) {
        AudioMMapPolicyType policyType, std::vector<AudioMMapPolicyInfo> *_aidl_return) {
    return Status::fromStatusT(mDelegate->getMmapPolicyInfos(policyType, _aidl_return));
}

Loading