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

Commit 1fba38c9 authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

Plumb APM configuration retrieval from HAL

Add 'AudioHwModule' and 'AudioPolicyConfig' AIDL types
to represent the APM configuration. Add 'getAudioPolicyConfig'
method to 'IAudioFlinger' interface. Implement it for
the AIDL HAL case. Add missing method to 'DeviceHalInterface'.

Remove 'isSpeakerDrcEnabled' from 'AudioPolicyConfig'
as it is not used anywhere in the framework.

Bug: 205884982
Test: atest audiopolicy_tests
Test: atest audiosystem_tests
Test: atest audio_health_tests
Test: m audiopolicy_fuzzer
Change-Id: Icaf043085373ec661be37d4a7a5ed4356aeb4bbe
Merged-In: Icaf043085373ec661be37d4a7a5ed4356aeb4bbe
parent 8ca78748
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ GENERATE_CONVERTERS(android::media::audio::common, AudioFormatDescription);
GENERATE_CONVERTERS(android::media::audio::common, AudioHalEngineConfig);
GENERATE_CONVERTERS(android::media::audio::common, AudioMMapPolicyInfo);
GENERATE_ENUM_CONVERTERS(android::media::audio::common, AudioMMapPolicyType);
GENERATE_ENUM_CONVERTERS(android::media::audio::common, AudioMode);
GENERATE_CONVERTERS(android::media::audio::common, AudioPort);

}  // namespace android
+3 −0
Original line number Diff line number Diff line
@@ -23,11 +23,13 @@
#include <aidl/android/media/audio/common/AudioHalEngineConfig.h>
#include <aidl/android/media/audio/common/AudioMMapPolicyInfo.h>
#include <aidl/android/media/audio/common/AudioMMapPolicyType.h>
#include <aidl/android/media/audio/common/AudioMode.h>
#include <aidl/android/media/audio/common/AudioPort.h>
#include <android/media/audio/common/AudioFormatDescription.h>
#include <android/media/audio/common/AudioHalEngineConfig.h>
#include <android/media/audio/common/AudioMMapPolicyInfo.h>
#include <android/media/audio/common/AudioMMapPolicyType.h>
#include <android/media/audio/common/AudioMode.h>
#include <android/media/audio/common/AudioPort.h>
#include <media/AidlConversionUtil.h>

@@ -43,6 +45,7 @@ DECLARE_CONVERTERS(android::media::audio::common, AudioFormatDescription);
DECLARE_CONVERTERS(android::media::audio::common, AudioHalEngineConfig);
DECLARE_CONVERTERS(android::media::audio::common, AudioMMapPolicyInfo);
DECLARE_CONVERTERS(android::media::audio::common, AudioMMapPolicyType);
DECLARE_CONVERTERS(android::media::audio::common, AudioMode);
DECLARE_CONVERTERS(android::media::audio::common, AudioPort);

#undef DECLARE_CONVERTERS
+2 −0
Original line number Diff line number Diff line
@@ -287,9 +287,11 @@ aidl_interface {
        "aidl/android/media/AudioFlag.aidl",
        "aidl/android/media/AudioGainSys.aidl",
        "aidl/android/media/AudioHalVersion.aidl",
        "aidl/android/media/AudioHwModule.aidl",
        "aidl/android/media/AudioIoConfigEvent.aidl",
        "aidl/android/media/AudioIoDescriptor.aidl",
        "aidl/android/media/AudioPatchFw.aidl",
        "aidl/android/media/AudioPolicyConfig.aidl",
        "aidl/android/media/AudioPortFw.aidl",
        "aidl/android/media/AudioPortSys.aidl",
        "aidl/android/media/AudioPortConfigFw.aidl",
+8 −0
Original line number Diff line number Diff line
@@ -2467,6 +2467,14 @@ status_t AudioSystem::supportsBluetoothVariableLatency(
    return af->supportsBluetoothVariableLatency(support);
}

status_t AudioSystem::getAudioPolicyConfig(media::AudioPolicyConfig *config) {
    const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
    if (af == nullptr) {
        return PERMISSION_DENIED;
    }
    return af->getAudioPolicyConfig(config);
}

class CaptureStateListenerImpl : public media::BnCaptureStateListener,
                                 public IBinder::DeathRecipient {
public:
+14 −0
Original line number Diff line number Diff line
@@ -866,6 +866,16 @@ status_t AudioFlingerClientAdapter::supportsBluetoothVariableLatency(bool* suppo
    return NO_ERROR;
}

status_t AudioFlingerClientAdapter::getAudioPolicyConfig(media::AudioPolicyConfig *config) {
    if (config == nullptr) {
        return BAD_VALUE;
    }

    RETURN_STATUS_IF_ERROR(statusTFromBinderStatus(mDelegate->getAudioPolicyConfig(config)));

    return NO_ERROR;
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// AudioFlingerServerAdapter
AudioFlingerServerAdapter::AudioFlingerServerAdapter(
@@ -1399,4 +1409,8 @@ Status AudioFlingerServerAdapter::supportsBluetoothVariableLatency(bool *support
    return Status::fromStatusT(mDelegate->supportsBluetoothVariableLatency(support));
}

Status AudioFlingerServerAdapter::getAudioPolicyConfig(media::AudioPolicyConfig* _aidl_return) {
    return Status::fromStatusT(mDelegate->getAudioPolicyConfig(_aidl_return));
}

} // namespace android
Loading