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

Commit e504e7b7 authored by jiabin's avatar jiabin
Browse files

Add HAL interface to replace aaudio system property.

Using the HAL interface instead of reading system property is a better
option when moving to AIDL HAL. The replaced property includes:
  - aaudio.mixer_bursts
  - aaudio.hw_burst_min_usec

Test: atest AAudioTests
Bug: 193275465
Change-Id: I9c9a04296e56ff083babcfa089fcdddc6b89ed94
parent f6331f23
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <aaudio/AAudio.h>
#include <cutils/properties.h>

#include <media/AudioSystem.h>
#include <media/MediaMetricsItem.h>
#include <utils/Trace.h>

@@ -95,7 +96,7 @@ aaudio_result_t AudioStreamInternal::open(const AudioStreamBuilder &builder) {
        return result;
    }

    const int32_t burstMinMicros = AAudioProperty_getHardwareBurstMinMicros();
    const int32_t burstMinMicros = android::AudioSystem::getAAudioHardwareBurstMinUsec();
    int32_t burstMicros = 0;

    const audio_format_t requestedFormat = getFormat();
+16 −0
Original line number Diff line number Diff line
@@ -2367,6 +2367,22 @@ status_t AudioSystem::getMmapPolicyInfo(
    return af->getMmapPolicyInfos(policyType, policyInfos);
}

int32_t AudioSystem::getAAudioMixerBurstCount() {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af == nullptr) {
        return PERMISSION_DENIED;
    }
    return af->getAAudioMixerBurstCount();
}

int32_t AudioSystem::getAAudioHardwareBurstMinUsec() {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af == nullptr) {
        return PERMISSION_DENIED;
    }
    return af->getAAudioHardwareBurstMinUsec();
}

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

int AudioSystem::AudioPolicyServiceClient::addAudioPortCallback(
+33 −0
Original line number Diff line number Diff line
@@ -788,6 +788,27 @@ status_t AudioFlingerClientAdapter::getMmapPolicyInfos(
    return statusTFromBinderStatus(mDelegate->getMmapPolicyInfos(policyType, policyInfos));
}

int32_t AudioFlingerClientAdapter::getAAudioMixerBurstCount() {
    auto result = [&]() -> ConversionResult<int32_t> {
        int32_t aidlRet;
        RETURN_IF_ERROR(statusTFromBinderStatus(mDelegate->getAAudioMixerBurstCount(&aidlRet)));
        return convertIntegral<int32_t>(aidlRet);
    }();
    // Failure is ignored.
    return result.value_or(0);
}

int32_t AudioFlingerClientAdapter::getAAudioHardwareBurstMinUsec() {
    auto result = [&]() -> ConversionResult<int32_t> {
        int32_t aidlRet;
        RETURN_IF_ERROR(statusTFromBinderStatus(
                mDelegate->getAAudioHardwareBurstMinUsec(&aidlRet)));
        return convertIntegral<int32_t>(aidlRet);
    }();
    // Failure is ignored.
    return result.value_or(0);
}


////////////////////////////////////////////////////////////////////////////////////////////////////
// AudioFlingerServerAdapter
@@ -1265,4 +1286,16 @@ Status AudioFlingerServerAdapter::getMmapPolicyInfos(
    return Status::fromStatusT(mDelegate->getMmapPolicyInfos(policyType, _aidl_return));
}

Status AudioFlingerServerAdapter::getAAudioMixerBurstCount(int32_t* _aidl_return) {
    *_aidl_return = VALUE_OR_RETURN_BINDER(
            convertIntegral<int32_t>(mDelegate->getAAudioMixerBurstCount()));
    return Status::ok();
}

Status AudioFlingerServerAdapter::getAAudioHardwareBurstMinUsec(int32_t* _aidl_return) {
    *_aidl_return = VALUE_OR_RETURN_BINDER(
            convertIntegral<int32_t>(mDelegate->getAAudioHardwareBurstMinUsec()));
    return Status::ok();
}

} // namespace android
+4 −0
Original line number Diff line number Diff line
@@ -221,4 +221,8 @@ interface IAudioFlingerService {
            in TrackSecondaryOutputInfo[] trackSecondaryOutputInfos);

    AudioMMapPolicyInfo[] getMmapPolicyInfos(AudioMMapPolicyType policyType);

    int getAAudioMixerBurstCount();

    int getAAudioHardwareBurstMinUsec();
}
+4 −0
Original line number Diff line number Diff line
@@ -620,6 +620,10 @@ public:
            media::audio::common::AudioMMapPolicyType policyType,
            std::vector<media::audio::common::AudioMMapPolicyInfo> *policyInfos);

    static int32_t getAAudioMixerBurstCount();

    static int32_t getAAudioHardwareBurstMinUsec();

private:

    class AudioFlingerClient: public IBinder::DeathRecipient, public media::BnAudioFlingerClient
Loading