diff --git a/audio/aidl/default/EffectFactory.cpp b/audio/aidl/default/EffectFactory.cpp index 820b447dd1..74ed7802ee 100644 --- a/audio/aidl/default/EffectFactory.cpp +++ b/audio/aidl/default/EffectFactory.cpp @@ -15,10 +15,13 @@ */ #define LOG_TAG "AHAL_EffectFactory" -#include #include #include +#include +#include +#include + #include "effect-impl/EffectTypes.h" #include "effect-impl/EffectUUID.h" #include "effectFactory-impl/EffectFactory.h" @@ -109,6 +112,8 @@ ndk::ScopedAStatus Factory::createEffect(const AudioUuid& in_impl_uuid, return ndk::ScopedAStatus::fromExceptionCode(EX_TRANSACTION_FAILED); } *_aidl_return = effectSp; + AIBinder_setMinSchedulerPolicy(effectSp->asBinder().get(), SCHED_NORMAL, + ANDROID_PRIORITY_AUDIO); mEffectUuidMap[std::weak_ptr(effectSp)] = in_impl_uuid; LOG(DEBUG) << __func__ << ": instance " << effectSp.get() << " created successfully"; return ndk::ScopedAStatus::ok(); diff --git a/audio/aidl/default/Module.cpp b/audio/aidl/default/Module.cpp index 1e561d4ec7..971d94612a 100644 --- a/audio/aidl/default/Module.cpp +++ b/audio/aidl/default/Module.cpp @@ -19,6 +19,7 @@ #define LOG_TAG "AHAL_Module" #include +#include #include #include @@ -307,6 +308,8 @@ ndk::ScopedAStatus Module::setModuleDebug( ndk::ScopedAStatus Module::getTelephony(std::shared_ptr* _aidl_return) { if (mTelephony == nullptr) { mTelephony = ndk::SharedRefBase::make(); + AIBinder_setMinSchedulerPolicy(mTelephony->asBinder().get(), SCHED_NORMAL, + ANDROID_PRIORITY_AUDIO); } *_aidl_return = mTelephony; LOG(DEBUG) << __func__ << ": returning instance of ITelephony: " << _aidl_return->get(); @@ -525,6 +528,7 @@ ndk::ScopedAStatus Module::openInputStream(const OpenInputStreamArguments& in_ar if (auto status = stream->init(); !status.isOk()) { return status; } + AIBinder_setMinSchedulerPolicy(stream->asBinder().get(), SCHED_NORMAL, ANDROID_PRIORITY_AUDIO); StreamWrapper streamWrapper(stream); auto patchIt = mPatches.find(in_args.portConfigId); if (patchIt != mPatches.end()) { @@ -575,6 +579,7 @@ ndk::ScopedAStatus Module::openOutputStream(const OpenOutputStreamArguments& in_ if (auto status = stream->init(); !status.isOk()) { return status; } + AIBinder_setMinSchedulerPolicy(stream->asBinder().get(), SCHED_NORMAL, ANDROID_PRIORITY_AUDIO); StreamWrapper streamWrapper(stream); auto patchIt = mPatches.find(in_args.portConfigId); if (patchIt != mPatches.end()) { diff --git a/audio/aidl/default/android.hardware.audio.effect.service-aidl.example.rc b/audio/aidl/default/android.hardware.audio.effect.service-aidl.example.rc index 68bbf5b076..5f859a1994 100644 --- a/audio/aidl/default/android.hardware.audio.effect.service-aidl.example.rc +++ b/audio/aidl/default/android.hardware.audio.effect.service-aidl.example.rc @@ -4,6 +4,8 @@ service vendor.audio-effect-hal-aidl /vendor/bin/hw/android.hardware.audio.effec # media gid needed for /dev/fm (radio) and for /data/misc/media (tee) group audio media capabilities BLOCK_SUSPEND + # setting RLIMIT_RTPRIO allows binder RT priority inheritance + rlimit rtprio 10 10 ioprio rt 4 task_profiles ProcessCapacityHigh HighPerformance onrestart restart audioserver diff --git a/audio/aidl/default/android.hardware.audio.service-aidl.example.rc b/audio/aidl/default/android.hardware.audio.service-aidl.example.rc index 02a9c37d42..2068735794 100644 --- a/audio/aidl/default/android.hardware.audio.service-aidl.example.rc +++ b/audio/aidl/default/android.hardware.audio.service-aidl.example.rc @@ -4,6 +4,8 @@ service vendor.audio-hal-aidl /vendor/bin/hw/android.hardware.audio.service-aidl # media gid needed for /dev/fm (radio) and for /data/misc/media (tee) group audio camera drmrpc inet media mediadrm net_bt net_bt_admin net_bw_acct wakelock context_hub capabilities BLOCK_SUSPEND + # setting RLIMIT_RTPRIO allows binder RT priority inheritance + rlimit rtprio 10 10 ioprio rt 4 task_profiles ProcessCapacityHigh HighPerformance onrestart restart audioserver diff --git a/audio/aidl/default/main.cpp b/audio/aidl/default/main.cpp index 15874a0489..7786cc63f2 100644 --- a/audio/aidl/default/main.cpp +++ b/audio/aidl/default/main.cpp @@ -21,6 +21,7 @@ #include "core-impl/Module.h" #include +#include #include #include @@ -44,6 +45,8 @@ int main() { // Make the default module auto moduleDefault = ndk::SharedRefBase::make(); + AIBinder_setMinSchedulerPolicy(moduleDefault->asBinder().get(), SCHED_NORMAL, + ANDROID_PRIORITY_AUDIO); const std::string moduleDefaultName = std::string() + Module::descriptor + "/default"; status = AServiceManager_addService(moduleDefault->asBinder().get(), moduleDefaultName.c_str()); CHECK_EQ(STATUS_OK, status);