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

Commit ef49519f authored by Haofan Wang's avatar Haofan Wang Committed by Android (Google) Code Review
Browse files

Merge "Send the Audio Usage down from AudioPolicyManager" into main

parents 7059fddb f6e304f9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.media;
import android.media.AudioPortFw;
import android.media.audio.common.AudioConfig;
import android.media.audio.common.AudioConfigBase;
import android.media.audio.common.AudioAttributes;

/**
 * {@hide}
@@ -32,4 +33,5 @@ parcelable OpenOutputRequest {
    AudioPortFw device;
    /** Bitmask, indexed by AudioOutputFlag. */
    int flags;
    AudioAttributes attributes;
}
+11 −3
Original line number Diff line number Diff line
@@ -2990,7 +2990,8 @@ sp<IAfThreadBase> AudioFlinger::openOutput_l(audio_module_handle_t module,
                                                        audio_config_base_t *mixerConfig,
                                                        audio_devices_t deviceType,
                                                        const String8& address,
                                                        audio_output_flags_t flags)
                                                        audio_output_flags_t flags,
                                                        const audio_attributes_t attributes)
{
    AudioHwDevice *outHwDev = findSuitableHwDev_l(module, deviceType);
    if (outHwDev == NULL) {
@@ -3008,13 +3009,18 @@ sp<IAfThreadBase> AudioFlinger::openOutput_l(audio_module_handle_t module,

    mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
    AudioStreamOut *outputStream = NULL;

    playback_track_metadata_v7_t trackMetadata;
    trackMetadata.base.usage = attributes.usage;

    status_t status = outHwDev->openOutputStream(
            &outputStream,
            *output,
            deviceType,
            flags,
            halConfig,
            address.c_str());
            address.c_str(),
            {trackMetadata});

    mHardwareStatus = AUDIO_HW_IDLE;

@@ -3083,6 +3089,8 @@ status_t AudioFlinger::openOutput(const media::OpenOutputRequest& request,
            aidl2legacy_DeviceDescriptorBase(request.device));
    audio_output_flags_t flags = VALUE_OR_RETURN_STATUS(
            aidl2legacy_int32_t_audio_output_flags_t_mask(request.flags));
    audio_attributes_t attributes = VALUE_OR_RETURN_STATUS(
            aidl2legacy_AudioAttributes_audio_attributes_t(request.attributes));

    audio_io_handle_t output;

@@ -3105,7 +3113,7 @@ status_t AudioFlinger::openOutput(const media::OpenOutputRequest& request,
    audio_utils::lock_guard _l(mutex());

    const sp<IAfThreadBase> thread = openOutput_l(module, &output, &halConfig,
            &mixerConfig, deviceType, address, flags);
            &mixerConfig, deviceType, address, flags, attributes);
    if (thread != 0) {
        uint32_t latencyMs = 0;
        if ((flags & AUDIO_OUTPUT_FLAG_MMAP_NOIRQ) == 0) {
+2 −1
Original line number Diff line number Diff line
@@ -333,7 +333,8 @@ private:
            audio_config_base_t* mixerConfig,
            audio_devices_t deviceType,
            const String8& address,
            audio_output_flags_t flags) final REQUIRES(mutex());
            audio_output_flags_t flags,
            audio_attributes_t attributes) final REQUIRES(mutex());
    const DefaultKeyedVector<audio_module_handle_t, AudioHwDevice*>&
            getAudioHwDevs_l() const final REQUIRES(mutex(), hardwareMutex()) {
              return mAudioHwDevs;
+2 −1
Original line number Diff line number Diff line
@@ -82,7 +82,8 @@ public:
            audio_config_base_t* mixerConfig,
            audio_devices_t deviceType,
            const String8& address,
            audio_output_flags_t flags) REQUIRES(mutex()) = 0;
            audio_output_flags_t flags,
            audio_attributes_t attributes) REQUIRES(mutex()) = 0;
    virtual audio_utils::mutex& mutex() const
            RETURN_CAPABILITY(audio_utils::AudioFlinger_Mutex) = 0;
    virtual const DefaultKeyedVector<audio_module_handle_t, AudioHwDevice*>&
+3 −1
Original line number Diff line number Diff line
@@ -260,6 +260,7 @@ status_t PatchPanel::createAudioPatch_l(const struct audio_patch* patch,
                    if (patch->sinks[0].config_mask & AUDIO_PORT_CONFIG_FLAGS) {
                        flags = patch->sinks[0].flags.output;
                    }
                    audio_attributes_t attributes = AUDIO_ATTRIBUTES_INITIALIZER;
                    const sp<IAfThreadBase> thread = mAfPatchPanelCallback->openOutput_l(
                                                            patch->sinks[0].ext.device.hw_module,
                                                            &output,
@@ -267,7 +268,8 @@ status_t PatchPanel::createAudioPatch_l(const struct audio_patch* patch,
                                                            &mixerConfig,
                                                            outputDevice,
                                                            outputDeviceAddress,
                                                            flags);
                                                            flags,
                                                            attributes);
                    ALOGV("mAfPatchPanelCallback->openOutput_l() returned %p", thread.get());
                    if (thread == 0) {
                        status = NO_MEMORY;
Loading