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

Commit 0cf3ba11 authored by Marvin Ramin's avatar Marvin Ramin Committed by Android (Google) Code Review
Browse files

Merge "Add support to get registered policy mixes" into main

parents d2ea2c04 bdefaf0a
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -122,6 +122,12 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.media.audiopolicy-aconfig-cc",
    aconfig_declarations: "android.media.audiopolicy-aconfig",
    defaults: ["audio-aconfig-cc-defaults"],
}

filegroup {
    name: "audio-framework-aconfig",
    srcs: [
+8 −0
Original line number Diff line number Diff line
@@ -5,6 +5,14 @@

package: "android.media.audiopolicy"

flag {
    name: "audio_mix_test_api"
    namespace: "media_audio"
    description: "Enable new Test APIs that provide access to registered AudioMixes on system server and native side."
    bug: "309080867"
    is_fixed_read_only: true
}

flag {
    name: "audio_policy_update_mixing_rules_api"
    namespace: "media_audio"
+2 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ cc_library {
        "libaudioclient_aidl_conversion",
        "libaudioutils",
        "libbinder",
        "libbinder_ndk",
        "libcutils",
        "liblog",
        "libutils",
@@ -121,6 +122,7 @@ cc_library {
        "latest_android_media_audio_common_types_cpp_shared",
    ],
    shared_libs: [
        "android.media.audiopolicy-aconfig-cc",
        "audioclient-types-aidl-cpp",
        "audioflinger-aidl-cpp",
        "audiopolicy-aidl-cpp",
+22 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <android/media/IAudioPolicyService.h>
#include <android/media/AudioMixUpdate.h>
#include <android/media/BnCaptureStateListener.h>
#include <android_media_audiopolicy.h>
#include <binder/IServiceManager.h>
#include <binder/ProcessState.h>
#include <binder/IPCThreadState.h>
@@ -44,6 +45,8 @@

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

namespace audio_flags = android::media::audiopolicy;

namespace android {
using aidl_utils::statusTFromBinderStatus;
using binder::Status;
@@ -1843,6 +1846,25 @@ status_t AudioSystem::registerPolicyMixes(const Vector<AudioMix>& mixes, bool re
    return statusTFromBinderStatus(aps->registerPolicyMixes(mixesAidl, registration));
}

status_t AudioSystem::getRegisteredPolicyMixes(std::vector<AudioMix>& mixes) {
    if (!audio_flags::audio_mix_test_api()) {
        return INVALID_OPERATION;
    }

    const sp<IAudioPolicyService> aps = AudioSystem::get_audio_policy_service();
    if (aps == nullptr) return PERMISSION_DENIED;

    std::vector<::android::media::AudioMix> aidlMixes;
    Status status = aps->getRegisteredPolicyMixes(&aidlMixes);

    for (const auto& aidlMix : aidlMixes) {
        AudioMix mix = VALUE_OR_RETURN_STATUS(aidl2legacy_AudioMix(aidlMix));
        mixes.push_back(mix);
    }

    return statusTFromBinderStatus(status);
}

status_t AudioSystem::updatePolicyMixes(
        const std::vector<std::pair<AudioMix, std::vector<AudioMixMatchCriterion>>>&
                mixesWithUpdates) {
+2 −0
Original line number Diff line number Diff line
@@ -263,6 +263,8 @@ interface IAudioPolicyService {

    void registerPolicyMixes(in AudioMix[] mixes, boolean registration);

    List<AudioMix> getRegisteredPolicyMixes();

    void updatePolicyMixes(in AudioMixUpdate[] updates);

    void setUidDeviceAffinities(int /* uid_t */ uid, in AudioDevice[] devices);
Loading